C++程序设计实践:银行前台服务系统(一)

本文详细介绍了使用C/C++语言进行银行前台业务办理系统的设计与实现,包括开户、登录、修改密码、查询余额、存款、取款、数据统计和注销账户等功能。系统将账户信息存储于文本文件中,支持多种功能模块,如主控模块、录入模块、查询模块、修改模块、删除模块、统计模块和输出模块,旨在提升应用能力、理解软件开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、课程设计目的

1. 通过课程设计加强应用C/C++语言进行程序设计的能力;

2. 学会如何分解问题并绘制程序流程图;

3. 掌握用C/C++语言进行简单的菜单设计及编程;

4. 掌握用C/C++语言进行简单的文件操作;

5. 掌握用C/C++语言进行简单的面向对象编程;

6. 了解软件开发的基本流程。

二、课程设计选题

银行前台业务办理系统

(1) 开户:增加账户信息,包括账户编号、账户密码、客户姓名、账户类型(定期或活期)、开户时间、账户余额等信息;

(2) 登录:在进行以下操作之前需登录,用户需要输入正确的账户编号和密码才可以看到操作菜单,如果账户编号和密码输入错误超过三次,系统自动退出;

(3) 修改密码:根据账户编号和原始密码修改账户密码;

(4) 查询余额:根据账户编号查询账户余额;

(5) 存款:用户输入存款金额,根据账户编号增加账户余额;

(6) 取款:用户输入取款金额,根据账户编号减少账户余额;

(7) 数据统计:对所有账户信息进行统计,显示所有的账户信息并可以按照账户编号、账户余额等进行排序;

(8) 注销账户:删除该账户所有信息并验证删除是否成功。

三、课程设计任务及要求

1. 能够认真完成老师所布置的课程设计任务;

2. 在设计中充分运用所学知识;

3. 课程设计期间按时出勤,并在课后安排适量时间来进行课程设计;

4. 针对每个选题要求实现所有基本功能(可以扩展新功能),按照规范编写高质量的C/C++程序代码并认真完成《课程设计报告》。

四、功能模块结构图及功能说明

银行前台自助服务系统从总体设计方面来看,基本的功能包括主控模块、录入模块、修改模块、删除模块、查询模块、统计模块和输出模块等,如图1所示。

主控模块

录入模块

查询模块

修改模块

删除模块

统计模块

输出模块

 

 

 

 

 

 

 

 


整个系统的账户信息全部存储在account.txt文件中,在该文件中,每个用户的信息占一行,分为六个部分,分别为账户编号,用户姓名,密码,余额,账户类型,创建时间。各项信息之间用空格隔开,在读取时,分别用六个变量接受一个用户的六项数据,按照用户要求处理后继续读取下一个用户的数据,示例:

  1

上图数据表示,账户编号1,用户姓名是chenxu,密码是123,余额为100,类型为1(代表是活期账户),创建时间是2011年12月13日。

 

主控模块:主要完成初始化工作,包括屏幕的初始化,显示欢迎界面,在用户确认后输出主菜单,根据用户输入的数字选择不同的函数完成下一步的功能,此部分模块的代码主要在mainBody.cpp文件中。

 

录入模块:注册新账户,主要功能由createNewAccount.h中的 createNewAccount 函数和createAccount函数实现,用户决定创建新账户后,程序开始读取文件,计算出文件中所有已有账户的编号的最大值(以防出现两个账户编号相同的情况),然后将该最大值加一后作为新账户的编号number,随后提示用户输入姓名,将其保存在字符串name中,之后让用户输入两次密码,比对两次输入的密码,若相同则存入字符串password中,若不同则提醒用户两次的密码不同并请重新输入。若以上数据均无误,则将余额money设定为0,并获取当前日期存入字符串time,将以上六个数据以ios:out | ios:app打开方式输出到account.txt文件末尾。操作完毕后,让用户选择继续创建或返回主菜单或退出系统。

 

查询模块(登录):查询功能实际上是登录功能的一部分,主要功能由login.h 中的函数login()完成,在用户输入账号和密码后,函数开始读取文件,每次读入六个,将name与用户输入的enterName比较,将password与用户输入的enterPassword比较,若都相同,则登录成功。若没有发现任何数据与用户输入的一致,则输出“登录失败”。登录成功后,用户可选择输出该账户的余额等信息。

 

修改模块:修改包括修改密码和修改余额(即存款或取款),主要函数为changePassword,deposit和withdrawals,分别在头文件changePassword.h,deposit.h,withdrawal.h

中,三个函数的基本原理相同,首先需要用户登录。若登录成功,否则提示该用户不存在或密码错误。登录成功后,定义一个ifstream对象和一个ofstream对象,前者从account.txt中读取数据,读取方式还是以六个变量读入一个用户的数据。然后通过账号检查是否是该用户的数据,若不是,则不加改动地(即按照图1的结构)输出到空白新文件account1.txt中。若读取到该用户的数据,若用户想修改密码,则改动password,若用户想取款或存款,则将

money增加或减少一定的数量,随后将修改后的数据写入account.txt中。以上操作完成后,

account1.txt成为了完整的修改后的数据库,所以将account.txt删除,将account1.txt重命名为 account.txt,则完成了修改。

 

删除模块:删除模块与修改模块的原理相同,唯一的区别是在找到指定账户后,不将该账户的信息输出到新文件中,则在新文件该账户的信息就不再出现。

统计模块:统计模块的功能主要由头文件statistic.h 中的函数statistic()完成。首先让用户选择是按照账户顺序排列还是按金额数量排列。若按账号顺序排列,根据在录入模块中产生账号的方式可知,文件里的数据已经按账号顺序排好了,所以只需按顺序输出,即每读入一个用户的数据就输出一次即可。若按照余额的多少进行排列,首先定义变量i,每读入一个用户的数据就将i加一,则可得出共有多少个数据,以确定数组的大小。随后建立两个数组

numberList[i] 用于存放所有账户的账号,moneyList[i]用于存放所有账户的余额,随后对moneyList进行排序,当对moneyList的元素顺序进行操作时,对numberList进行相同操作以确保两个数组内相同下标的元素属于同一个账户。排序完成后,对numberList中的元素对应的账户信息依次输出即可。最后让用户选择下一步操作。

五、菜单设计原型

主菜单样例如下:

1. Create new account

2. Login to Your account

3. Change your password

4. Check account balance

5. Deposit

6.Withdrawals

7.Statistic account information

8.Cancellation

0.Exit the system

Please choose

       菜单项说明:

       “1. Create new account”说明:创建一个新账户

       “2. Login to Your account”说明:登录你的账户

       “3. Change your password”说明:修改账户密码

“4. Check account balance”说明:查询账户余额

“5. Deposit”说明:取款

“6. Withdrawals”说明:存款

“7. Statistic account information”说明:统计账户数据

“8. Cancellation”说明:注销账户

“0. Exit the system说明:退出系统

      

Createnew account中的子菜单

1. Create current account

2. Create regular account

3. Return to main menu

4. Exit the system

Please Choose

 

“1. Createcurrent account”说明:创建一个活期账户

“2 Createregular account”说明:创建一个定期账户

“3.Return to main menu”说明:返回主菜单

“4. Exit the system”说明:退出系统

 

Statistic中的子菜单

1.View the order by account number

2.View the order by account balances

Please choose

 

“1. View theorder by account number”说明:按照账号顺序输出所有账户信息

“2. View theorder by account balances”.说明:按照余额多少输出账户信息

 

 

 

 七、测试用例及测试报告

      

录入模块测试用例及测试报告:

测试用例

预期结果

实际结果

测试结论

姓名:Jack

密码:1234

账户类型:活期

输出“add sucess!”

输出“add success!”

测试通过

姓名:Michael

密码:123

账户类型:定期

输出“add sucess!”

输出“add success!”

测试通过

姓名:David

密码:12345

账户类型:活期

输出“add sucess!”

输出“add success!”

测试通过

 

 

修改模块测试用例及测试报告:

测试用例

预期结果

实际结果

测试结论

存款:¥100

账号:2

密码:123

输出“Withdrawals success!

!”

输出“Withdrawals success!

 

测试通过

存款:¥50

账号:1

密码:1234

输出“Withdrawals success!

 

输出“Withdrawals success!

 

测试通过

存款:¥200

账号:3

密码:12345

输出“Withdrawals success!

 

输出“Withdrawals success!

 

测试通过

 

 

 

删除模块测试用例及测试报告:

 

测试用例

预期结果

实际结果

测试结论

账号:2

密码:123

输出“Cancellation success!

!”

输出“Cancellation success!

 

测试通过

账号:1

密码:1234

输出“Cancellation success!

 

输出“Cancellation success!

 

测试通过

账号:3

密码:12345

输出“Cancellation success!

 

输出“Cancellation success!

 

测试通过

 

 

查询模块测试用例及测试报告:

 

测试用例

预期结果

实际结果

测试结论

账号:2

密码:123

输出“money:23”

输出“money:23”

测试通过

账号:1

密码:1234

输出“money:50”

输出“money:50”

测试通过

账号:3

密码:12345

输出“money:100”

输出“money:100”

测试通过

 

统计模块测试用例及测试报告:

 

测试用例

预期结果

实际结果

测试结论

选择1

 

按账号顺序输出所有账户信息

按账号顺序输出所有账户信息

测试通过

选择2

 

按金额大小输出所有账户信息

按金额大小输出所有账户信息

测试通过

 

八、总结及心得体会

       从开始做课程设计到结束全部工作差不多有1个月的时间,在刚开始做的时候,曾经有过不知如何下手的迷茫,到了后来思路逐渐清晰起来,。整个做项目的过程中遇到很多困难,但通过去图书馆查资料,在百度和优快云上提问和在课堂上接触到的新知识解决了这些困难。其实整个做课程设计的过程就是发现和解决问题的过程,整个程序的核心在于文件的操作。在还未接触面向对象时,我通过对12章知识的学习和自己的思考,想出了打开两个文件同时操作的方法,一个文件读,一个文件写。这样达到了修改和删除数据的目的。通过一个完整程序的开发,我逐渐了解了软件开发的基本流程。在整个开发时期里,各种各样的错误困扰了我很长时间,例如两个头文件互相包含怎样防止多次编译,在还没学到书上的#ifndef指令时,在网上查找到了#pragma once的防止多次编译方法。如何对两个有关联的元素排序。还有其它的各种各样的细节,例如如何改变控制台的颜色,如何让程序变得更加人性化都是在编写过程中必须考虑的问题。我准备寒假在家完全用面向对象的方法再做一次,希望能够加深对面向对象的理解。

       总之,这次的C++课程设计对我进一步学习C++有着很大的帮助,而且克服困难的过程给了我全面了解C++知识与软件开发的机会,我希望能够在以后的学习中拓展自己的视野,进一步提高自己的编程水平。

 

九、参考文献

1.删除与重命名文件

http://zhidao.baidu.com/question/268602388.html

2. C++中头文件相互包含的几点问题

http://blog.163.com/zdfl_001/blog/static/22135136200852764157310/

3.C++中如何清屏?

http://topic.youkuaiyun.com/t/20040329/22/2901226.html

4.C++控制输出颜色

http://wenwen.soso.com/z/q102282430.htm?ri=1001&rq=188058199&uid=0&pid=w.xg.yjj&ch=w.xg.llyjj

5. C++修改txt文件里数据

http://zhidao.baidu.com/question/94275372.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值