C++课程设计面向对象课程设计报告__经典银行管理系统完整报告

合集下载

C银行管理系统课程设计报告

C银行管理系统课程设计报告

C++面向对象程序设计课程设计报告课程设计题目:银行管理系统姓名:李炜学号:1031040126专业:统计学指导教师:丁木华2013年1月8日银行管理系统摘要随着经济的加速发展,银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。

我所做的银行管理系统主要用途是利用C++编程实现储蓄卡开户管理、存取款管理、用户查询信息、注销等功能。

其中,储蓄卡开户管理模块包括开户号、开户姓名、存入金额、密码。

(存入金额必须是数字)登入账号后进入用户模块,模块内包括查看信息、存款、取款、转账、更改密码。

注销模块中,一旦注销该卡号就不存在。

系统主要有银行类和客户类,客户类是银行类的公有继承类。

银行类中有实现开户、转账等功能函数,客户类中有实现存钱、取钱等功能函数。

一个用户只需创建一个客户类对象,当用户进行开户、销户等操作时,可以直接调用银行类的成员函数。

该银行管理信息系统,运用了一些特色算法,如YH中的PassWord算法,且设计过程思路清晰、模块划分简洁。

经过实践证明,模块划分是合理的,极大得提高了本系统的实现。

关键词:C++ 银行系统一、需求与功能分析随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。

现今,人们在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台去排队缴各种各样的费用了;各种经营单位如电信、供电、煤气、自来水、证券等等为了提高服务质量、方便客户,同时为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务;同时,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行账户信息管理,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。

我做的系统主要用于银行的账户管理系统,系统实现的主要有储蓄卡开户管理、存取款管理、用户查询信息等功能,它可以帮助客户有效、准确、并且高效的完成存取事件。

C语言课程设计银行管理系统

C语言课程设计银行管理系统

系统测试与调试
单元测试
目的:验证单个模块或函数的正确性 测试方法:白盒测试和黑盒测试 测试内容:功能测试、性能测试、安全性测试等 测试工具:JUnit、NUnit、PyUnit等
集成测试
测试方法:黑盒测试、白盒 测试、灰盒测试
目的:验证系统各模块之间 的接口是否正确
测试内容:功能测试、性能 测试、安全性测试、兼容性
确认密码,点击注册按钮
款人账号,点击转账按钮
添加标题
添加标题
添加标题
添加标题
添加标题
登录界面:输入用户名、密码,
添加标题
查询界面:输入查询条件,点
点击登录按钮
击查询按钮,显示查询结果 账户管理界面:显示账户列表,
可以进行账户查询、修改、删
除等操作
模块设计
账户模块:账户创建、修改、 删除等
交易模块:存款、取款、转 账等
主界面:菜单栏、工具栏、状态栏,显示 账户信息、交易记录等
交易界面:选择交易类型(存款、取款、 转账等),输入金额,确认交易
查询界面:选择查询类型(账户余额、交 易记录等),显示查询结果
设置界面:修改密码、查看帮助等
退出界面:确认退出,关闭系统
模块实现
用户模块:用户登录、注册、修改密码等操作 账户模块:账户创建、修改、删除等操作 交易模块:转账、存款、取款等操作 查询模块:查询账户余额、交易记录等操作 系统管理模块:系统设置、用户管理、日志管理等操作
系统管理:用户管理、权限管理、系 统设置等
系统需求分析
用户需求分析
用户角色:银行员 工、客户
功能需求:存款、 取款、转账、查询、 修改密码等
性能需求:系统响 应时间、数据准确 性、安全性等

C语言课程设计报告(银行账户信息管理系统)

C语言课程设计报告(银行账户信息管理系统)

银行账户管理系统C语言程序设计摘要银行账户管理系统是针对银行账户的日常管理而设计,操作方便而且界面简洁,使用较为简单的C语言作为编程语言,采用软件工程的开发原理,按照需求分析、概要设计、详细设计、程序编码、软件测试等过程进行规范设计。

本银行账户管理系统具有良好的容错性,在出现误操作时能及时的给出相关错误提示,以便于用户及时地更正。

此方案运用C语言设计的简易的银行账户管理系统,具体实现的功能有显示用户在银行留下的账户信息,以及选择账户查询的功能对用户存取款记录进行查询,可以比较清晰的反映出所要查询的内容。

关键词账户管理C语言查询目录银行账户管理系统C语言程序设计 (I)摘要 (I)1需求分析 (3)1.1需求概述 (3)1.2需求环境 (3)1.3功能描述 (3)2 概要设计 (4)2.1程序功能模块 (4)2.2程序流程图 (5)2.3数据的设计 (5)3 详细设计 (6)3.1代码功能 (6)3.2功能实现代码 (6)3.3流程图 (9)4 实际C语言代码 (13)5.运行结果 (24)5.1登陆界面 (24)5.2..主菜单 (24)5.3.插入新账户 (25)5.4.列出所有账户 (25)5.5.查找账户存款信息 (26)5.6.删除账户 (26)5.7.取款 (26)5.8.存款 (27)6.问题与不足 (27)7.结语 (27)参考文献 (28)1需求分析1.1需求概述进入21世纪之后,随着科技的飞速发展和社会进步,尤其是计算机在大范围的普及,人工智能化的计算机应用也逐步的由大规模科学计算的海量数据处理转向大规模的事务处理和对工作流的管理,这就产生了以计算机为核心,以数据库管理系统为开发环境的管理信息系统在大规模的事务处理和对工作流的管理等方面的应用,特别是在银行账户管理之中的应用日益受到人们的关注。

自中国加入WTO之后,我国信息产业发展迅速,手工管理方式在银行账户管理等需要大量事务处理的应用中已显得越来越不适用,采用IT技术提高服务质量和管理水平势在必行,银行必须提高自己的工作效率,所以迫切需要合适的信息化的银行账户管理系统。

c语言课程设计银行系统

c语言课程设计银行系统

c语言课程设计银行系统一、教学目标本课程的目标是让学生掌握C语言编程基础,能够运用C语言实现简单的银行系统。

通过本课程的学习,学生应达到以下知识目标:1.掌握C语言的基本语法和数据结构。

2.理解函数的定义和调用,能够编写简单的函数。

3.掌握文件操作的基本方法,能够实现文件的读写。

4.能够使用C语言编写程序,解决实际问题。

5.具备良好的编程习惯,代码结构清晰,易于阅读和维护。

6.能够运用C语言实现简单的银行系统,包括账户管理、存款、取款、查询等功能。

情感态度价值观目标:1.培养学生对计算机编程的兴趣,提高学生动手实践的能力。

2.培养学生团队协作的精神,学会与他人交流和分享。

3.培养学生解决问题的能力,培养学生的创新意识。

二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言的基本语法和数据结构:变量、数据类型、运算符、表达式、控制语句、数组、字符串、函数等。

2.函数的定义和调用:函数的定义、参数传递、返回值、递归等。

3.文件操作:文件的打开、关闭、读写、定位等。

4.银行系统的实现:账户管理、存款、取款、查询等功能的设计和实现。

三、教学方法本课程的教学方法主要包括以下几种:1.讲授法:通过讲解C语言的基本语法和数据结构,让学生掌握C语言的基础知识。

2.案例分析法:通过分析实际的银行系统案例,让学生学会如何运用C语言解决实际问题。

3.实验法:通过上机实验,让学生动手实践,加深对C语言编程的理解。

4.讨论法:通过小组讨论,让学生学会与他人交流和分享,培养团队协作的精神。

四、教学资源本课程的教学资源主要包括以下几种:1.教材:《C语言程序设计》等相关教材。

2.参考书:提供一些相关的参考书籍,供学生自主学习。

3.多媒体资料:制作一些教学视频和PPT,帮助学生更好地理解教学内容。

4.实验设备:提供计算机实验室,让学生能够进行上机实验。

五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。

c 银行管理系统实验报告

c 银行管理系统实验报告

c 银行管理系统实验报告C 银行管理系统实验报告摘要:本实验报告介绍了使用C语言开发的银行管理系统。

该系统包括客户信息管理、账户管理、存取款操作、转账操作等功能。

通过本次实验,我们深入了解了C语言的应用,掌握了银行管理系统的开发流程和技术要点。

1. 系统设计银行管理系统主要包括客户信息管理、账户管理、存取款操作、转账操作等功能模块。

在系统设计阶段,我们首先确定了系统的功能需求和流程,然后进行了数据结构的设计和数据库的建立。

在C语言中,我们使用结构体来定义客户信息和账户信息,使用文件来存储数据。

2. 系统实现在系统实现阶段,我们使用C语言编写了客户信息管理、账户管理、存取款操作、转账操作等功能的代码。

在代码编写过程中,我们充分考虑了系统的健壮性和安全性,对用户输入进行了合法性检查,对数据进行了有效性验证。

3. 系统测试在系统测试阶段,我们对银行管理系统进行了功能测试、性能测试和安全测试。

通过测试,我们发现系统在客户信息管理、账户管理、存取款操作、转账操作等方面表现良好,能够满足实际应用需求。

4. 实验总结通过本次实验,我们深入了解了C语言的应用,掌握了银行管理系统的开发流程和技术要点。

在实验中,我们遇到了一些问题,如数据结构的设计和文件操作的实现,但通过不懈努力和团队合作,最终成功完成了银行管理系统的开发和测试。

总之,本次实验为我们提供了宝贵的实践经验,增强了我们的编程能力和团队合作能力。

希望通过今后的学习和实践,能够进一步提升自己的技术水平,为银行管理系统的实际应用做出更大的贡献。

原创c语言银行管理系统课程设计

原创c语言银行管理系统课程设计

原创C语言银行管理系统课程设计简介本文档为一份原创的C语言银行管理系统课程设计。

该系统旨在模拟银行的账户管理和业务处理功能,能够实现账户的开户、存款、取款、转账等基本操作,并提供查询账户余额和交易明细的功能。

1. 系统需求分析银行管理系统是一个涉及多个功能模块的复杂系统,我们需要先对需求进行分析,以确保系统功能的完整和实用。

1.1 功能模块系统应具备以下功能模块:1.账户管理:包括开户、销户、查询账号信息等功能。

2.存款业务:用户可以向自己的账户存款。

3.取款业务:用户可以从自己的账户中取款。

4.转账业务:用户可以将自己的资金转到其他账户。

5.余额查询:用户可以查询自己账户的余额。

6.交易明细查询:用户可以查询自己账户的交易明细。

1.2 数据结构设计为了实现上述功能,我们需要设计合适的数据结构来存储账户信息和交易明细。

1.账户信息:我们可以使用结构体来表示一个账户的信息,结构体包括账号、姓名、密码、余额等字段。

2.交易明细:交易明细可以使用链表来存储,每个节点包含交易时间、交易类型、金额等信息。

2. 系统设计在完成需求分析之后,我们可以开始进行系统设计。

根据需求和数据结构设计,我们可以将系统设计分为如下模块:2.1 用户接口模块用户接口模块负责与用户进行交互,接收用户输入的指令,并调用相应的功能模块来处理。

用户接口模块的功能包括以下几点:1.显示菜单:根据用户的身份和操作权限,显示相应的菜单选项。

2.解析指令:解析用户输入的指令,提取关键信息,如账号、金额等。

3.调用功能模块:根据用户的指令,调用相应的功能模块来处理。

2.2 账户管理模块账户管理模块负责对账户信息进行管理,包括开户、销户、查询账户信息等功能。

具体功能如下:1.开户:根据用户提供的姓名和密码,生成一个唯一的账号并分配初始余额。

2.销户:根据账号和密码验证用户的身份,将该账户从系统中删除。

3.查询账户信息:根据账号,返回该账户的详细信息。

c 面向对象程序设计课程设计报告--银行卡管理系统

c  面向对象程序设计课程设计报告--银行卡管理系统

C++面向对象程序设计课程设计报告班级:信管1551学号:姓名:完成日期:2016年10月题目描述:设计一个文字界面的银行卡管理系统,功能主要包括创建新卡、卡号登录,每个卡片信息包括有卡号及用户名信息,输入卡号后可以对银行卡进行管理,包括存款、取款以及每次操作日志的浏览。

要求使用结构体和类定义、操作对象,功能应包括:新卡录入功能:为新用户创建合法的账号登录功能:合法用户可通过卡号登录银行卡管理系统存取款功能:操作存取款并显示余额用户操作日志:登记合法用户全部操作记录,包含时间、用户名、动作等日志浏览:可调阅所有用户操作记录提供菜单来调用各个功能,界面应尽可能清晰美观。

例如:*************************************银行卡管理系统(1)增加记录(2)卡号登录(3)退出**************************************类的设计:测试用例及结果:1.卡号登录2.取款功能3.日志读取功能源程序参见:银行卡注释版.cpp※题目描述:设计一个文字界面的银行卡管理系统,功能主要包括创建新卡、卡号登录,每个卡片信息包括有卡号及用户名信息,输入卡号后可以对银行卡进行管理,包括存款、取款以及每次操作日志的浏览。

※系统设计:※详细设计:1.创建新卡2.存款操作3.取款操作4.读取日志操作※测试用例及结果:1.创建新卡功能2.卡号登陆功能3.存款功能4.取款功能5.日志读取功能6.退出功能※总结:我的C++基础十分薄弱,敲完代码以后就出现很多实际性问题,例如有些没有提过的需要加分号的地方或者由于输入时的马虎大意而造成的拼写问题等等琐碎的问题,我一次次翻看课本,重新了解基础知识,在网上和相关资料书的查找资料。

而进行不断的调试以后,让程序运行,却又出现程序运行结果不符的问题,经过多次的改正和调试,最终程序能够正确的运行。

我的编程能力得到了的提高,对程序有了更深的了解,也更加认识到C++的学习离不开自己平时的练习,我以后要自己多练习,自己动手操作,才能提高自己的编程能力。

银行管理系统-C++课程设计

银行管理系统-C++课程设计

C++课程设计一、课程设计要求二、源程序代码:#include<iostream>#include<fstream>#include<string>#include<vector>#include<algorithm>#include<strstream>#include<conio.h>using namespace std;class Function;class User{public:void get(User& );friend class Function;ostream &print(ostream &os);//friend ostream & operator<<(ostream & o, const User & u);friend istream & operator>>(istream & i, User & u);void PassWord();bool Login(User &);void SaveFile(User &);vector<string> StrFunction;User(){}User(int A,string N,int F,string I,string Ad,int T):Accout(A),Name(N),Fmoney(F),ID(I),Address(Ad),Telephone(T){}int Accout;string Name;int Fmoney;string ID;string Address;int Telephone;char Pword1[9];char Pword2[9];};class Function{public:void Saving(User &);void Drawing(User &);void Balance(User &);void Record(User &);private:int SaveAndDrawMoney;};void Function::Saving(User &u){system("cls");cout<<"\n\n\n\t\t*********************************************\n"<<en dl;cout<<"\t\t请输入存款金额:";string str1("\n\t\t现存RMB 钞+ ");cin>>SaveAndDrawMoney;u.Fmoney+=SaveAndDrawMoney;strstream ss;string str2;ss<<u.Accout;ss>>str2;string frist="Record"+str2 +".txt";const char *RecordFile=frist.c_str();ofstream outfile(RecordFile,ios::out|ios::app);outfile<<str1<<SaveAndDrawMoney<<endl;outfile.close();outfile.clear();cout<<"\n\n\t\t操作成功,单击任何键返回主菜单!";getch();}void Function::Drawing(User &u){system("cls");cout<<"\n\n\n\t\t*********************************************\n"<<en dl;cout<<"\t\t请输入取款金额:";string str1("\n\t\t现取RMB 钞- ");string str2;int k=0;while(k<=3){cin>>SaveAndDrawMoney;u.Fmoney -=SaveAndDrawMoney;if(u.Fmoney>=0){system("cls");cout<<"\n\n\n\t\t正在出炒,请稍等!"<<endl;strstream ss;ss<<u.Accout;ss>>str2;string frist="Record"+str2 +".txt";const char *RecordFile=frist.c_str();ofstream outfile(RecordFile,ios::out|ios::app);outfile<<str1<<SaveAndDrawMoney<<endl;outfile.close();outfile.clear();break;}else{k++;if(k>=3){system("cls");cerr<<"\n\n\n\t\t很抱歉,你重复输入错误多次"<<endl<<"\n\t\t正在退卡中……"<<endl;exit(0);}system("cls");u.Fmoney +=SaveAndDrawMoney;cerr<<"\n\n\n\t\t对不起,你输入的金额超出有效金额。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++课程设计****************************课程面向对象课程设计姓名陈会会院(系)计算机科学与工程学院专业年级计算机科学与技术100602班学号100602126指导教师姜虹日期 2009年8月31日-2009年9月13日目录1、课设目的 (2)2、需求与功能分析 2 2、系统总体框架 34、模块设计与分析 35、类的设计与分析 56、功能测试 77、程序源代码 148、心得体会 (25)一、课设目的:课程设计的目的是总结及运用一学期来所学的知识,训练我们灵活应用所学C++知识,独立完成问题分析、总结设计、详细设计和编程实现等软件开发全过程的综合实践能力。

巩固、深化理论知识,提高编程水平,并在此过程中培养我们严谨的科学态度和良好的工作作风及团结协作的精神。

二、需求与功能分析随着社会经济的发展,信息化程度的不断深入,银行的传统业务己愈来愈不能满足银行客户的需要。

现今,人们的金融意识、科技意识己经有了很大的提高,在紧张忙碌的生活中,己越来越来不习惯每月奔忙于各银行营业柜台之问去排队缴各种各样的费用了;同时,各种经营单位如电信、移动、供电、煤气、自来水、证券等等一是为了提高服务质量、方便客户,二是为了减轻自己日趋繁重的工作量,纷纷委托银行为其开展代收代付业务:同时,随着我国加入世贸组织的日益临近,我国的银行业将面临更加激烈的同业竞争,如何提供更多的金融产品和更优质的服务,如何吸引更多的客户,如何利用计算机技术加强银行帐户信息管理、进行银行业务再造,提高银行的工作效率和业务竟争能力是摆在各家银行面前的一个迫切需要解诀的问题。

近几年来,各商业银行加快了与社会各业的合作,利用自身的网点优势和业务特点,为其提供各种高效、快捷的代收代付业务,也就是中间代理业务,目前以与广大人民群众生活密切相关的各项缴费业务如水电费、电话费、手机费等代收业务为主,这些业务开展方式多种多样,但一般都离不开计算机的高效管理支持。

随着代理业务不断发展,业务品种越来越多,各项业务做法互有差异,这就对银行的电子化水平和相应的管理水平提出了更高的要求。

如何利用电子化的手段构建一个高效统一的、通用灵活的系统来管理各种各样的业务,是每个商业银行所要研究的课题。

支持决策系统的,需要在数据库的基础上,进行联机分析处理,每次处理的数据量大,响应时间长。

特别是银行每天要处理大量的存取款事件,做好存取款是银行工作重要的环节,然而要有效处理必须要有良好的程序和数据管理系统来建立一个良好的软件系统来实现快速、有效、准确、安全的处理银行事物。

主要用于银行的储蓄卡管理系统,它可以帮助我们有效、准确、并且高效实现的完成存取事件。

此系统操作方便效率、安全性高,只要客户开户并设定好密码就可以轻松的实现存取款。

系统实现的主要有储蓄卡开户管理、存取款管理、用户查询历史数据显示、注销等功能。

储蓄卡开户管理模块:卡号、姓名、开户金额、身份证号、地址、电话、密码、确认密码和保存组成。

(开户金额必须是数字,密码和确认密码必须一样是六位数字)*注销模块:一旦注销该卡号就不存在且余额提醒你取出。

通过该银行账户管理系统地运行,使办公人员可以轻松快捷的完成对账户管理的任务,提高账目管理效率,使银行的账目管理工作系统化、规范化、自动化。

该银行帐目管理信息系统,优点是设计过程思路清晰、模块划分简洁,设计各阶段分工明确。

经过实践证明,该划分是合理的,极大得提高了本系统的实现。

三、系统总体框架图1 -1四、模块设计与分析储蓄卡开户管理模块:3.1 登录页面输入卡号和密码,根据用户输入的卡号和密码,到后台文件查询,若正确则登录成功,并保存卡好信息已备后用。

若卡号存在和密码不匹配或无该卡号已经注销,提示该卡号已存在或已注销,保持界面三次不变等待用户的重新输入。

3.2 主界面页面主要导航栏有:欢迎使用储蓄卡管理(存款、取款、修改密码、转账功能、注销退出)3.3 储蓄卡开户页面提供开户界面,由用户输入新储蓄卡的所有信息,将该信息保存到文件中,并将开户金额作为该卡的第一次存款记录存人文件。

3.4 存钱页面从登录界面得到卡号,并提供数据输入界面,等待用户的输入存款金额。

从后台数据库中找到该用户余额记录,修改余额,并将该存款事件的相应信息写人数据库,同时将存钱的金额显示在页面上。

3.5 取款页面从登录界面得到卡号,并提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则不能取款,或者将新的余额写人文件,并将本次取款事件写入文件同时将取钱的金额显示在页面上,。

3.6 注销页面从关闭文件,状态为注销,最后关闭整个系统。

列举取款模块进行分析:void consumer::fetchmoney(){float m;char ch;do{cout<<endl<<"输入取款金额:"<<"¥>"<<endl ;cin>>m;while(m<=0){cout<<"请输入正确的数字!"<<endl;cout<<"→";cin>>m;}if(money<m){cout<<"对不起,你的余额不足!"<<endl;}else{money=money-m;cout<<endl<<"操作成功,请收好钱!"<<endl;}cout<<"是否要继续该项操作:(Y/N) "<<endl;cout<<"→";cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')//选择错误时判定{cout<<"→";cin>>ch;}}while(ch=='y'||ch=='Y');}在取款页面中,输入取款金额并对取款金额与存款余额进行比较,如果取款金额小于零,请输入正确的数字;如果取款金额大于存款金额,对不起,您的余额不足;如果取款金额小于存款余额的话就执行,并保存记录。

五、类的设计与分析1.comsumer 类class comsumer 主要制定用户的成员数据,并进行登录与保存功能:相关代码:class consumer:public YH//用户类,继承银行类的属性{public:friend class YH;consumer(int id,string Name,int Number,double IN,string Company,string Address,string PassWord,float m){ID=id;name=Name;number=Number;in=IN;company=Company;address=Addres s;money=m;passwd=PassWord;}consumer(){ID=0;name='0';number=0;in=0;company='0';address='0';money=0;p asswd='0';}int get_id(){return ID;}void savemoney();// 取钱string get_passwd(){return passwd;}// 取得密码void display();void fetchmoney(); //取钱void change_passwd();void add_money(float);//计算余额void dec_money(float);//计算余额float get_money();//卡卡转帐private:int ID; //开户帐号string passwd; // 用户密码string name; // 用户姓名float money; //开户金额int number;string company;string address;double in;};表1 comsumer 类说明表2.YH 类YH 类主要实现用户的各种功能:相关代码:class YH //银行类{public:void set_account();//银行开户功能void del_account(); //注销账户功能void transfer(int); //转账功能void enter_account(); //进入用户个人信息功能void addmoney(int,float);//存款功能void exitYH();// 退出系统void functionshow();void save();void load();// 功能界面protected:consumer *account[20];static int acnum;//账户数};六、功能测试6.1 首页:图6-1:6.2储蓄卡开户页面图6-2:6.3 主界面页面主要导航栏有:欢迎使用储蓄卡管理(查看帐户信息、存款、取款、修改密码、转账、返回上一菜单)图6-3:6.4 存钱页面图6-4:6.5 取款页面从登录界面得到卡号,并提供数据输入界面,等待用户输入取款金额,如果取款金额大于该用户卡上的余额则不能取款,或者将新的余额写人文件,并将本次取款事件写入文件同时将取钱的金额显示在页面上。

输入取款金额:图6-5:当取款金额大于现有金额:图6-6:当取款金额小于或等于现有金额:图6-7:6.6修改密码页面当两次输入的密码相同时:图6-8:当两次输入的密码不相同时:图6-9:6.7卡卡转帐图6-10:6.8 用户信息图6-11:6.9 销户页面图6-12:6.10 退出系统页面图6-13七、程序源代码#include<iostream>#include <string>#include<fstream>using namespace std;class consumer;class YH //银行类{public:void set_account();//银行开户功能void del_account(); //注销账户功能void transfer(int); //转账功能void enter_account(); //进入用户个人信息功能void addmoney(int,float);//存款功能void exitYH();// 退出系统void functionshow();void save();void load();// 功能界面protected:consumer *account[20];static int acnum;//账户数};class consumer:public YH//用户类,继承银行类的属性{public:friend class YH;consumer(int id,string Name,int Number,double IN,string Company,string Address,string PassWord,float m){ID=id;name=Name;number=Number;in=IN;company=Company;address=Address;m oney=m;passwd=PassWord;}consumer(){ID=0;name='0';number=0;in=0;company='0';address='0';money= 0;passwd='0';}int get_id(){return ID;}void savemoney();// 取钱string get_passwd(){return passwd;}// 取得密码void display();void fetchmoney(); //取钱void change_passwd();void add_money(float);//计算余额void dec_money(float);//计算余额float get_money();//卡卡转帐private:int ID; //开户帐号string passwd; // 用户密码string name; // 用户姓名float money; //开户金额int number;string company;string address;double in;};void YH::save(){ofstream ofile("bankdat.dat",ios::out);//以输出方式打开文件ofstream outfile("bankdat.dat",ios::out);//以输出方式打开文件bankdat.dat接收从内存输出的数据int n=0;outfile<<acnum<<" ";for(n=0;n<acnum;n++){outfile<<account[n]->ID<<" ";//把信息写入磁盘文件bankdat.dat outfile<<account[n]->money<<" ";outfile<<account[n]->name<<" ";outfile<<account[n]->passwd<<" ";outfile<<account[n]->number<<" ";outfile<<account[n]->company<<" ";outfile<<account[n]->address<<" ";outfile<<account[n]->in<<" ";}outfile.close();}/*读入用户信息功能实现*/void YH::load(){ifstream infile("bankdat.dat",ios::in);//以输入方式打开文件if(!infile){cerr<<"读取错误,无资料中!"<<endl;return;}int n=0;int id,m;string nam,passw;int number;string company;string address;double in; infile>>acnum;for(n=0;n<acnum;n++)//全部读入{infile>>id;//从磁盘文件bankdat.dat读入信息infile>>m;infile>>nam;infile>>passw;infile>>company;infile>>number;infile>>address;infile>>in;account[n]->passwd;consumer * acc = new consumer(id,nam,number,in,company,address,passw,m); //每读入一个n开辟一段内存account[n] = acc; //赋值首地址}infile.close();cout<<"读取资料正常!"<<endl;}/*转账功能实现*/void YH::transfer(int x){int id;cout<<"请输入帐号:";cin>>id;int flag = 1;int i = 0;while((i<acnum)&&(flag)) //查找要转入的账号{if(id==account[i]->get_id()) flag = 0; else i++;}if(flag){cout<<"帐号不存在!"<<endl<<endl;return ;}float b;cout<<endl<<"请输入你要转帐的金额:";cin>>b;while(b<=0){cout<<"请输入正确的数字!"<<endl;cout<<"→";cin>>b;}if(account[x]->get_money()<b) //调用友元类consumer的公有成员函数cout<<"对不起,金额不够!!"<<endl;else {account[x]->dec_money(b);account[i]->add_money(b);}cout<<"转账成功!!"<<endl;return;}/*账户金额计算*/void consumer::add_money(float x){money=x+money;}void consumer::dec_money(float x){money=money-x;}void YH::addmoney(int x,float y){account[x]->money=account[x]->money-y;}float consumer::get_money(){return money;}void main(){YH yh;yh.functionshow();}/*主界面显示*/void YH::functionshow(){int n;do{system("cls");load();cout<<endl<<"请输入相应的操作序号进行操作:"<<endl;cout<<"㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣"<<endl;cout<<"㊣㊣"<<endl;cout<<"㊣ 1. 开户㊣"<<endl;cout<<"㊣㊣"<<endl;cout<<"㊣ 2.账户登录㊣"<<endl;cout<<"㊣㊣"<<endl;cout<<"㊣ 3.账户注销㊣"<<endl;cout<<"㊣㊣"<<endl;cout<<"㊣ 4.退出系统㊣"<<endl;cout<<"㊣㊣"<<endl;cout<<"㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣"<<endl;cout<<"→";cin>>n;while(n<1||n>4){cout<<"操作错误,请输入正确的操作序号!"<<endl;cout<<"→";cin>>n;}switch(n){case 1: set_account();//开户break;case 2:enter_account();//登录break;case 3: del_account();//注销break;case 4: exitYH();//退出break;}cin.get();//输入流类istream的成员函数}while(true);}void YH::enter_account(){int id;cout<<"请输入帐号:";cin>>id;int flag = 1;int i = 0; //__page_break__while((i<acnum)&&(flag)) //循环查找{if(id==account[i]->get_id()) flag = 0; else i++;}if(flag){cout<<"帐号不存在!"<<endl;return;}cout<<"请输入密码:";string passw;cin>>passw;if(passw!=account[i]->get_passwd()) return;//返回到登录界面account[i]->display();cin.get();cin.get();int n;do{system("cls");cout<<"请选择下列操作:"<<endl;cout<<"◎☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆◎"<<endl; cout<<"◎◎"<<endl; cout<<"◎ 1.查看账户信息◎"<<endl; cout<<"◎◎"<<endl; cout<<"◎ 2.取款◎"<<endl; cout<<"◎◎"<<endl; cout<<"◎ 3.存款◎"<<endl; cout<<"◎◎"<<endl; cout<<"◎ 4.修改密码◎"<<endl; cout<<"◎◎"<<endl; cout<<"◎ 5.转账◎"<<endl; cout<<"◎◎"<<endl; cout<<"◎ 6.返回上一菜单◎"<<endl; cout<<"◎◎"<<endl; cout<<"◎☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆◎"<<endl; cout<<"→";cin>>n;switch(n){case 1: account[i]->display();break;case 2: account[i]->fetchmoney();save();break;//从2-5功能,每执行一次调用一次save函数,重新写入数据case 3:account[i]->savemoney();save();break;case 4:account[i]->change_passwd();save();break;case 5:transfer(i);save();break;case 6:return;}cin.get();cin.get();}while(1);}void YH::set_account(){int id;string nam;string passw;float m;string company;string address;int number;double in;cout<<"请输入开户号:"<<endl;cin>>id;cout<<"请输入开户人姓名:"<<endl;cin>>nam;cout<<"请输入开户密码:"<<endl;cin>>passw;cout<<"请输入存入金额:"<<endl;cin>>m;cout<<"请输入开户人电话:"<<endl;cin>>number;cout<<"请输入开户人公司:"<<endl;cin>>company;cout<<"请输入开户人地址:"<<endl;cin>>address;cout<<"请输入开户人身份证号码:"<<endl;cin>>in;while(m<=0){cout<<"请输入正确的数字!"<<endl;cin>>m;}consumer * acc = new consumer(id,nam,number,in,company,address,passw,m);account[acnum] = acc;cout<<"开户成功!!"<<endl<<endl;acnum++;save();cin.get();return;}void YH::del_account(){int id;cout<<endl<<"请输入你要注销的帐户号:";cin>>id;int flag = 1;int i = 0;while((i<acnum)&&(flag)) //循环查找{if(id == account[i]->get_id()){flag = 0;}else{i++;}}if(flag){cout<<"该帐号不存在,请重新输入!"<<endl;return; //返回到登陆界面}for(int j=i;j<acnum;j++) //所有被删号后的数据重新存储{account[j] = account[j+1];}account[acnum-1]=NULL;acnum--; //账号总数自减一次cout<<"你的账号已注销!!"<<endl<<endl;save();cin.get();return;}void consumer::change_passwd(){string pwd,repwd;cout<<"请输入新密码:";cin>>pwd;cout<<"请再输入一次新密码:";cin>>repwd;if(pwd!=repwd)cout<<"你输入的两次密码不一样,按输入键返回上一层菜单!"<<endl; elsecout<<"密码修改成功,请牢记!"<<endl;cin.get();}void consumer::fetchmoney(){float m;char ch;do{cout<<endl<<"输入取款金额:"<<"¥>"<<endl ;cin>>m;while(m<=0){cout<<"请输入正确的数字!"<<endl;cout<<"→";cin>>m;}if(money<m){cout<<"对不起,你的余额不足!"<<endl;}else{money=money-m;cout<<endl<<"操作成功,请收好钱!"<<endl;}cout<<"是否要继续该项操作:(Y/N) "<<endl;cout<<"→";cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')//选择错误时判定{cout<<"→";cin>>ch;}}while(ch=='y'||ch=='Y');}void consumer::savemoney()//存钱函数功能实现{float c;char ch;do{cout<<endl<<"请输入要存入的金额:"<<"¥>"<<endl ;cin>>c;while(c<=0){cout<<"输入错误,请重新输入!"<<endl;cout<<"→";cin>>c;}money=money+c;cout<<"操作已成功!"<<endl;cout<<"是否要继续该项操作:(Y/N) "<<endl;cout<<"→";cin>>ch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y'){cout<<"→";cin>>ch;}}while(ch=='y'||ch=='Y');}int YH::acnum=0;void consumer::display()//用户信息界面{system("cls");cout<<"#####################################"<<endl;cout<<"#"<<endl;cout<<"# 用户姓名:"<<name<<endl;cout<<"#"<<endl;cout<<"# 帐号:"<<ID<<endl;cout<<"#"<<endl;cout<<"# 余额: "<<money<<endl;cout<<"#"<<endl;cout<<"# 按输入键回到上一菜单"<<endl;cout<<"#"<<endl;cout<<"#####################################"<<endl;cout<<"→";}void YH::exitYH()//退出系统{cout<<endl<<"感谢您对本银行的支持,欢迎下次光临!"<<endl;exit(0);}八、心得体会这次课程设计收获了好多,通过这次课设,又进一步巩固了课本上的知识,达到了学以致用的目的,还有,老师让三个人一组编程,在此过程中,增强了我们团结协作的精神和认真思考问题的好习惯。

相关文档
最新文档