基于C++实现银行业务系统

article/2025/4/21 10:37:42

1. 分析

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 读入顾客功能流程图

在这里插入图片描述

3.1.2 读入顾客功能核心代码

void Bank::Init(int sum)
{int buf;for (int i = 0; i < sum; ++i){cin >> buf;if (buf % 2)	//如果是奇数则加入A窗口{QueueA.push(buf);}else { QueueB.push(buf); }	//否则加入B窗口}
}

3.1.3 读入顾客功能截屏示例

在这里插入图片描述

3.2 处理业务功能的实现

3.2.1 处理业务功能流程图

在这里插入图片描述

3.2.2 处理业务功能核心代码

void Bank::dealBusiness()
{while (!QueueA.empty() && !QueueB.empty())//两个窗口对应的队列都不为空时//按照A窗口处理速度是B窗口的两倍 把结果计入结果队列中{Qresult.push(QueueA.front());QueueA.pop();Qresult.push(QueueA.front());QueueA.pop();Qresult.push(QueueB.front());QueueB.pop();}while (!QueueA.empty())//如果A有剩余,把A的其余部分直接加入结果中//此时B一定为空{Qresult.push(QueueA.front());QueueA.pop();}while (!QueueB.empty())//同理,如果B有剩余,则把B的起源于部分直接加入结果中{Qresult.push(QueueB.front());QueueB.pop();}
}
}

3.2.3 处理业务功能截屏示例

在这里插入图片描述

3.3 输出功能的实现

3.3.1 输出功能流程图

在这里插入图片描述

3.3.2 输出功能核心代码

void Bank::showOrder()
{while (Qresult.size() > 1)//输出结果{cout << Qresult.front() << ' ';Qresult.pop();}if (Qresult.size())//如果结果队列中有最后一个元素, 则输出它并且结尾无空格{cout << Qresult.front();}
}

3.3.3 输出功能截图示例

在这里插入图片描述

3.4 总体系统的实现

3.4.1 总体系统核心代码

int sum;cout << "请输入为一行正整数,其中第一数字N(N<=1000)为顾客总数,后面跟着N位顾客的编号: ";
cin >> sum;		//由于输入数据为一整行,因此没办法对总人数做检查Bank bank(sum);bank.dealBusiness();
bank.showOrder();

3.4.2 总体系统截屏示例

在这里插入图片描述

4. 测试

4.1 功能测试

4.1.1 读入顾客功能测试

测试用例:8 2 1 3 9 4 11 13 15

预期结果:

  • 正确储存在 QueueA 和 QueueB 中
  • QueueA 中储存 1 3 9 11 13 15
  • QueueB 中储存 2 4

实验结果

在这里插入图片描述

测试用例:8 2 1 3 9 4 11 12 16

预期结果:

  • 正确储存在 QueueA 和 QueueB 中
  • QueueA 中储存 1 3 9 11
  • QueueB 中储存 2 4 12 16

实验结果:

在这里插入图片描述

测试用例:1 6

预期结果:

  • 正确储存在 QueueA 和 QueueB 中
  • QueueA 为空
  • QueueB 中储存 6

实验结果:

在这里插入图片描述

4.1.2 业务处理功能测试

测试用例:8 2 1 3 9 4 11 13 15

预期结果:

  • Qresult 正确储存带处理序列

  • Qresult 中存储 1 3 2 9 11 4 13 15

实验结果:

在这里插入图片描述

测试用例:8 2 1 3 9 4 11 12 16

预期结果:

  • Qresult 正确储存带处理序列

  • Qresult 中存储 1 3 2 9 11 4 12 16

实验结果:

在这里插入图片描述

测试用例:1 6

预期结果:

  • Qresult 正确储存带处理序列

  • Qresult 中存储 6

实验结果:

在这里插入图片描述

4.1.3 输出功能测试

测试用例:8 2 1 3 9 4 11 13 15

预期结果:

输出 1 3 2 9 11 4 13 15 (结尾没有多余的空格)

实验结果:
在这里插入图片描述

测试用例:8 2 1 3 9 4 11 12 16

预期结果:

输出 1 3 2 9 11 4 12 16 (结尾没有多余的空格)

实验结果:

在这里插入图片描述

测试用例:1 6

预期结果:

输出 6 (结尾没有多余的空格)

实验结果:

在这里插入图片描述

4.2 边界测试

4.2.1 最小顾客人数

测试用例:1 6

预期结果:

输出 6 (结尾没有多余的空格)

实验结果:

在这里插入图片描述

4.3 出错测试

由于本题目要求输入为一行正整数,所以没办法对输入人数做检测,以达到如果输入人数不满足题设要求可以让用户自定义重新输入。


http://chatgpt.dhexx.cn/article/AkynlP4H.shtml

相关文章

创意人像海报故障艺术海报教程故障艺术海报怎么做

制作之前我们可以参考一下真实的电视故障效果&#xff0c;然后通过PS功能来实现。首先要分析一下图片合适不合适&#xff0c;图片太小会不会看不出来效果等各种问题。类似这种效果最好上半身人像为好&#xff0c;这样做出来的效果会更加的明显。文章来源&#xff1a;http://www…

海报设计PSD模板——抖音Glitch故障艺术风格

作为新的艺术形式&#xff0c;它其实来源于我们生活中一个十分恼人的情景——数据和数字设备的故障。 矢量ai几何抽象故障风banner 矢量ai几何抽象故障风banner 画面出现异常、失真、变形、破碎等混乱情况&#xff0c;导致我们观看的欲望也没有了……但艺术家们却从这些偶然产…

Spring Cloud 极简入门

专栏亮点 优势 内容通俗易懂&#xff0c;更适合初学者。重实操性&#xff0c;专栏包含一个完整的项目实战&#xff0c;通过开发项目掌握技术的实际应用。案例理论结合&#xff0c;专栏以实际案例为主&#xff0c;更有利于上手应用。 专栏特色 从零讲起&#xff0c;轻松入门…

汪昭然:构建“元宇宙”和理论基础,让深度强化学习从虚拟走进现实

作者 | 陈彩娴 深度强化学习的故事&#xff0c;可以追溯到2015年&#xff1a; 当时&#xff0c;位于英国伦敦的一家小公司 DeepMind 在《Nature》上发表了一篇文章“Human-level control through deep reinforcement learning”&#xff0c;提出了一种新算法叫 Deep Q-Networ…

Hey AI,请写一首披头士风格的歌给我

编译 | 张震; Nurhachu Null; 王宇欣 作者 | Ben Dickson 来源 | pcmag 五月末&#xff0c;在东伦敦 Stepney 区的 St. Dunstan 教堂聚集了一小群人&#xff0c;他们一起欣赏了两个小时的爱尔兰传统音乐。不过&#xff0c;与以往的音乐会不同的是&#xff0c;部分音乐的作曲…

Oracle 18c体系架构图创作之路 - 设计者说(精品海报大放送)

编辑说明&#xff1a;在刚刚落幕的第八届数据技术嘉年华大会现场&#xff0c;我们正式发布了『Oracle 18c体系架构图』&#xff0c;应广大网友的呼吁&#xff0c;特别向不能到场的朋友放送。 &#xff08;回顾嘉年华&#xff1a;云数据库时代&#xff1a;企业数据架构的云化智能…

自学 Photoshop 2022 Mac版-笔记1

最近开始系统学习 photoshop。 非设计专业&#xff0c;工作跟设计部门接触过&#xff0c;最近想自己也能上手操作一些修图做图的操作&#xff0c;想看看学习多久能达到熟练的水平。 我用的是 PS 2022 Mac 版。 用输出倒逼自己输入&#xff0c;写笔记是个好方法啊&#xff01…

PS动作一键设计数字科技未来海报效果

动作支持CS4以版本软件,动作还是到陌鱼社区下载“人工智能故障风科技海报效果PS动作合集”有3个效果&#xff0c;下面我们来演示一个&#xff0c;其它使用方法相同。 01、打开软件&#xff0c;载入画笔、图案、动作,关闭软件。 02、把软件切换成英文,回顾一下之前教程“怎么把P…

我竟然在CSDN玩游戏??,教你利用github page在CSDN主页放置小游戏

好耶&#xff01;又多了一种摸鱼新方式 大家在网页端看我的主页或者博客时&#xff0c;会发现左侧多了一个小游戏hiahiahia&#xff1a; 这主要是通过github page创建了小游戏页面&#xff0c;并且通过iframe嵌入到html里实现的&#xff0c;大佬看到这应该已经会了&#xff0c;…

磨金石教育设计干货分享|20个海报设计小技巧,果断打包带走

我们做海报设计的时候&#xff0c;经常会在图文排版上花上很长的时间来构思&#xff0c;要让主题突出、要画面有活力、视觉冲击力要强、要给观者留下深刻的印象......那么今天小编就来分享20种海报设计的思路&#xff0c;让你在设计中思路清晰&#xff0c;努力不白费。 文字分…

用代码生成Glitch Art风格的抖音字体

最近看到不少文章教大家用 photoshop 实现抖音的 logo 跟字体&#xff0c;我也非常喜欢这种风格的字体&#xff0c;于是趁着晚上的时间&#xff0c;动手用代码实现了下此类风格的字体特效&#xff0c;顺便开发了个小工具&#xff0c;地址见文末。本文主要是从 艺术手法 和 JS …

mfc对话框ok没效果_利用PS制作逼真双重曝光效果案例演示,合成紫色城市建筑风格海报图片...

PS合成得好&#xff0c;那场景海报图制作就轻松了&#xff0c;我们通常在欣赏案例作品是发现不少大气的城市建筑风格的海报图片&#xff0c;是怎么样制作合成的呢&#xff0c;今天我们来分享PS制作逼真双重曝光效果的海报教程。摄影时&#xff0c;利用多重曝光&#xff0c;可以…

设计干货模板|孟菲斯风格促销海报让作品艺术加分!

对于孟菲斯&#xff0c;或许你不知道这专业词是什么意思。当你看到下面的图&#xff0c;是不是感觉有点似曾相识。 复古又新潮的设计&#xff01; 为什么叫“孟菲斯”&#xff1f;据说&#xff0c;设计师Ettore Sottsass与一群年轻设计师在家里的公寓聚会&#xff0c;当时播放…

怎么做抖音故障艺术风格人物照片效果

今天我们就用陌鱼社区“80年代复古故障抖音海报效果PS动作”,简单快速制作出复古故障艺术风格人物照片海报效果,只要按这个步骤来就可以制作出如图效果,下面是这个动作制作的一些效果&#xff1a; 01、载入笔刷、图案、动作具体方法可参考下图,全部载入之后关闭软件。 02、把软…

如何用ps做故障艺术风格效果

今天这个教程主要是用PS动作来做的&#xff0c;能给我们在工作上面带来很大的方便&#xff0c;特别是突然做故障艺术风格海报的人来说&#xff0c;这个还是非常有用滴&#xff0c;至于动作怎么找&#xff0c;可以搜“赛博故障风格海报艺术效果PS动作”。 01、还是老样子&#x…

AE教程丨1分钟学会制作信号故障风特效

信号故障风近几年还是很流行的&#xff0c;如何让自己的设计里也能有一些信号故障风的风格呢&#xff1f;今天的教程就来帮助大家学习AE制作故障风视频。 AE制作信号故障风视频效果教程 1.在绘图工具内制作相应的文字海报并导入到AE&#xff1b; 2.新建纯色图层做抖动效果&…

JAVA线上故障排查全套路

线上故障主要会包括cpu、磁盘、内存以及网络问题&#xff0c;而大多数故障可能会包含不止一个层面的问题&#xff0c;所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的&#xff0c;基本上出问题就是df、free、top 三连&#x…

Ps|故障风格效果

欢迎点击「算法与编程之美」↑关注我们&#xff01; 本文首发于微信公众号&#xff1a;"算法与编程之美"&#xff0c;欢迎关注&#xff0c;及时了解更多此系列文章。 欢迎加入团队圈子&#xff01;与作者面对面&#xff01;直接点击&#xff01; 抖音作为当代人消遣时…

故障效果,制作抖音效果的幻影海报

故障效果&#xff0c;制作抖音效果的幻影海报 感兴趣的小伙伴可以关注我哦&#xff0c;有什么不懂可以加群问&#xff1a;741090028 本篇教程通过PS制作抖音效果风格的海报&#xff0c;抖音风格又叫故障效果和幻影效果&#xff0c;前者叫的多&#xff0c;此类风格之前就很流行…

如何用PS制作故障风格的海报

前言 近几年&#xff0c;故障艺术又在设计圈中掀起了一把火&#xff0c;无论是先前《攻壳机动队》的海报&#xff0c;还是现在抖音的logo&#xff0c;一些我们看着是缺陷的东西在设计师的眼里也大有文章&#xff0c;今天就主要来讲讲如何通过PS来制作一张故障风格的海报。 《…