分析
1.1 背景分析
银行业务系统的设计师银行不可缺少的部分之一。既是银行为顾客提供优良服务的承载着,又是银行能高效处理业务的秘诀,所以一个良好的银行业务系统应能按照每个窗口的业务员的处理能力相应调整业务处理的顺序。
随着银行业主数量和业务员工作量的日益庞大,如何管理如此庞大的数据显得极为复杂,传统的手工管理量大而容易出错。
随着计算机科学技术的不断成熟,使用计算机对银行业务系统进行管理,具有手工管理无法比拟的优势。这些优点能够极大地提高银行和顾客的效率,也是银行走向信息化、科学化、国际化的重要条件。因此,开发一套银行业务系统具有十分重要的意义。
1.2 功能分析
作为一个最简易的银行业务系统,首先应该有的功能就是输入待处理的顾客信息。
其次满足,编号为奇数的顾客需要到 A 窗口办理业务,为偶数的顾客则去 B 窗口的条件;并且 A 窗口处理速度是 B 窗口的 2 倍----即当 A 窗口每处理完 2 个顾客是,B 窗口处理完 1 个顾客。
最后按照业务处理完成的顺序输出顾客的编号。
(同时需要注意,数字间以空格分隔,但是最后一个编号不能有多余的空格。)
2. 设计
2.1 数据结构设计
如上功能分析所述,该系统规定 A 窗口的处理速度是 B 窗口的两倍,而且我们日常去银行办理业务也是遵循排队的原则,因此考虑使用队列作为数据结构。定义 QueueA 和 QueueB 分别储存 A、B 两个窗口的业务情况,再定义 Qresult 作为结果队列,最后只需要按照 A 窗口的处理速度是 B 窗口的两倍的设定处理 Qresult 作为输出即可。
2.2 类结构设计
定义银行类 Bank 来进行银行业务的处理,在 Bank 类中定义用于表示 A、B 两个窗口的队列 QueueA 和 QueueB,又定义了储存结果的队列 Qresult。
同时把对银行业务的处理全部封装在 Bank 类中,简洁直观。
2.3 成员与操作设计
银行类(Bank)
私有成员:
queue<int> QueueA, QueueB; //AB窗口
queue<int> Qresult; //结果队列, 用于保存处理顺序
考生信息的构造函数:
Bank() = default;
Bank(int sum);
Bank::Bank(int sum)
{
Init(sum);
}
公有操作:
void Init(int sum); //输入顾客序列
void dealBusiness(); //处理业务
void showOrder(); //输出顾客的处理顺序
2.4 系统设计
系统首先接收由用户指定的顾客人数 sum,调用构造函数定义 Bank 类型的对象,之后调用 Bank 类的方法 dealBusiness()处理银行业务最后调用 showOrder()输出处理顺序。
3. 实现
3.1 读入顾客功能的实现
3.1.1 读入顾客功能流程图
完整的源码和详细的文档,上传到了 【WRITE-BUG数字空间】,需要的请自取
https://www.writebug.com/code/0c7cf2da-c792-11ed-9771-6479f0e5e323/#