1、综合程序 课程设计说明书课程设计名称: 12 级综合程序课程设计报告 课程设计题目: 银行账户管理系统 学 院 名 称: 信息工程学院 专业:电子信息工程 班级: 学号: 姓名: 评分: 教师: 20 15 年 03 月 20 日综合程序 课 程 设 计 任 务 书20 14 20 15 学年 第 2 学期 第 1 周 2 周 注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。题目 银行账户管理系统内容及要求设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码、电话号码,允许用
2、户进行如下操作:开户、销户、存款、取款、转账、查询,一个用户可以有多个户头,账户的数值没有上限。基本要求:程序运行时,可以由用户选择进行何种操作,开户操作要求输入用户信息后自动获取账号,用户销户后账号被回收,并且该账号可以继续分配给其它账户,不允许用户透支,根据姓名或账号可以进行用户的信息查询,所有的账户信息应存放到一个文件中,可以随时的访问和更新。选作内容:在上述程序的基础上,添加联名账户(一个联名账户有两个拥有者)的管理 。进度安排3 月 23 日:查找资料3 月 4 日:系统框架搭建3 月 510 日:对系统的各模块进行详细的设计。3 月 1112 日:对系统进行测试、完善学生姓名:指导
3、时间 第 12 周 指导地点: 任务下达 2015 年 3 月 1 日 任务完成 2015 年 3 月 13 日考核方式 1.评阅 2.答辩 3.实际操作 4.其它指导教师 系(部)主任摘 要随着社会经济的发展,信息化程度的不断深入,计算机的广泛运用,为了满足新形势下银行客户的需求,使用计算机来进行银行账户的管理是社会发展的新常态。本文主要介绍一种以 C+为系统描述语言,采用自顶向下的的设计方法,通过类来实现相应操作的一种银行账户系统。该系统具有开户、用户信息存储、查询、转账、取款等功能。较之其他系统,具有快速、易操作、安全性好等特点。关键词: 银行账户管理系统 C+ 类目 录第一章 设计要求
4、 1第二章 系统的组成及设计的原理 22.1 系统的组成 22.2 表的信息结构 3第三章 概要设计 53.1 基本功能设计思路 53.2 程序框图 5第四章 详细设计 64.1 类的定义 64.2 银行账户系统其他功能的实现 84.3 读取和保存 194.4 联名账户的实现 21第五章 调试及测试分析 215.1 调试程序的方法和技巧 215.2 系统运行结果 225.3 调试中出现的故障 26第六章 结 论 28第七章 参考文献 29附 录 30附录一:详细程序及注释 30附录二:联名账户管理程序(节选) 440第一章 设计要求设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额
5、、身份证号码、电话号码,允许用户进行如下操作:开户、销户、存款、取款、转账、查询,一个用户可以有多个户头,账户的数值没有上限。基本要求:程序运行时,可以由用户选择进行何种操作,开户操作要求输入用户信息后自动获取账号,用户销户后账号被回收,并且该账号可以继续分配给其它账户,不允许用户透支,根据姓名或账号可以进行用户的信息查询,所有的账户信息应存放到一个文件中,可以随时的访问和更新。选作内容:在上述程序的基础上,添加联名账户(一个联名账户有两个拥有者)的管理 。1第 2 章 系统的组成及设计的原理2.1 系统的组成通过对该银行账户管理系统的需求进行分析,从增强系统的可维护性以及保密性的角度入手,整
6、体上计划采用两个类,即 zhgl 类和 consumer 类来实现。定义 zhgl 为基类,定义 consumer 类为 zhgl 的派生类、使其的访问属性为 public。zhgl 类用来完成功能显示、开户、销户和用户登录功能;consumer 类用来存放账户基本信息,进行查询、存款、取款、密码修改和转账操作。除此之外还有如下子函数组成。void kaihu(); /普通账户开户void shanchu(); /删除账号void zhuanzhang(int ); /转账void denglu(); /登陆账号void addmoney(int,float);void exitzhgl();
7、 / 退出系统void functionshow();void save(); /保存void qishi(); / 功能界面void load(); /载入void display(); void qumoney(); /取钱void change_passwd(); /改密码void b_money(float); /被转账者void a_money(float); /转账者void c_money(float); /联合被转账者void d_money(float); /联合转账者float get_money(); /卡卡转帐void search();/查询void cunmoney
8、();/ 存钱22.2 表的信息结构1.普通账户信息表2.联名账户信息表3.用户进行存取的操作表字段名 字段类型 允许空 说 明ID int no 卡 号name string no 用户姓名password string no 密 码identification string no 身份证phonenumber string no 电 话money float no 账户余额( 不能为空)字段名 字段类型 允许空 说 明ID int no 卡 1name string no 卡 1 用户姓名password string no 卡 1 密码ID2 int no 卡 2Name2 string
9、 no 卡 2 用户姓名Password2 string no 卡 2 密码money float no 账户余额( 不能为空)34.用户进行转账的操作表5.用户进行密码修改的操作表字段名 字段类型 允许空 说 明ID int no 卡 号c float no 存/ 取金额ch char no 判断是否继续该操作字段名 字段类型 允许空 说 明ID int no 转账的卡号id int no 被转账的卡号b float no 转账金额money float no 账户余额字段名 字段类型 允许空 说 明ID int no 卡 号pwd string no 新密码repwd string no
10、再次输入的新密码passwd string no 账号密码4第三章 概要设计3.1 基本功能设计思路通过对该银行账户管理系统的需求进行分析,从增强系统的可维护性以及保密性的角度入手,整体上计划采用两个类,即 zhgl 类和 consumer 类来实现。定义 zhgl 为基类,定义 consumer 类为 zhgl 的派生类、使其的访问属性为 public。zhgl 类用来完成功能显示、开户、销户和用户登录功能;consumer 类用来存放账户基本信息,进行查询、存款、取款、密码修改和转账操作。定义一个 account 指针,用来指向已开户的账户,并获得该账户的信息,用来执行存、取、转账等操作。
11、并用 fstream 指令进行文件的读写操作,实现将账户所有者的信息存放到一个文件中,并可以随时的访问和更新。程序运行后用户可根据界面提示自行操作。由于要实现界面的回复,在控制用户的循环操作时可以采用 do while 匹配的循环结构。53.2 程序框图第四章 详细设计4.1 类的定义4.1.1 zhgl 类的定义class zhglpublic:void kaihu(); /普通账户开户void shanchu(); /删除账号void zhuanzhang(int ); /转账void denglu(); /登陆账号void addmoney(int,float);void exitzhg
12、l(); / 退出系统银 行 账 户 管 理 系 统管 理 员 用 户开 户 销 户查 询 查 看信 息 取 款 存 款 修 改密 码 转 账普通账户联名账户6void functionshow();void save(); /保存void qishi(); / 功能界面void load(); /载入protected:static int num; /账户数 ;consumer *account20;4.1.2consumer 类的定义class consumer:public zhglpublic:friend class zhgl;consumer(int id,string Name
13、,string PassWord,float m,string Identification,string PhoneNumber)ID=id;name=Name;money=m;passwd=PassWord;identification=Identification;phonenumber= PhoneNumber;string get_passwd() / 取得密码return passwd;string get_name()return name;7int get_id() /返回账号return ID;void display(); void qumoney(); /取钱void c
14、hange_passwd(); /改密码void b_money(float); /被转账者void a_money(float); /转账者void c_money(float); /联合被转账者void d_money(float); /联合转账者float get_money(); /卡卡转帐void search();/查询void cunmoney();/ 存钱private:int ID; /开户帐号string passwd; / 用户密码string name; / 用户姓名 string identification;/身份证string phonenumber;/电话号码f
15、loat money; /初始资金;4.2 银行账户系统其他功能的实现4.2.1 账户开户账户开户使用 cin 接收键盘中输入的数据,并使用指向类对象的指针,将接收的值传回。void zhgl:kaihu() /开户的实现int id;string nam;string passw;8string identif;string phonen;float m;coutid;coutnam;coutidentif;coutphonen;coutpassw;coutm;while(mm;consumer * acc = new consumer(id,nam,passw,m,identif,phon
16、en); accountnum = acc; system(“cls“);coutid;int flag = 1; int i = 0; while(iget_id() flag = 0; else i+; if(flag) coutid; Flag=1 i=0(iget_id()Flag=0i=i+1Flag=1?Jget_id() flag = 0; else i+; if(flag) coutpassw;if(passw!=accounti-get_passwd()return;int n;docoutn;switch(n)case 0: accounti-search();break;
17、case 1: accounti-display();break;case 2: accounti-qumoney();save();break;case 3:accounti-cunmoney();save();break;case 4:accounti-change_passwd();save();break;case 5:zhuanzhang(i);save();break;12case 6:return;while(1);4.2.4 退出系统void zhgl:exitzhgl()coutID;while(Qget_id() flag = 0; else Q+; if(flag) co
18、utget_name();cout“m;while(m“;cinm;if(money“;cinch;while(ch!=ncinch;while(ch=y|ch=Y);4.2.8 存款存款功能和取款功能类似,用户选择存款功能后,先提示用户输入存款金额,存款金额应大于 0 元,当存款金额大于 0 后执行存款操作,并相应的账户余额应为之前的金额加上存款金额。执行完操作后询问用户是否继续当前操作。void consumer:cunmoney() /存钱的实现float c;15char ch;docout“c;while(c“;cinc;money=money+c;cout“;cinch;while
19、(ch!=ncinch;while(ch=y|ch=Y); 选存钱输入金额将余额表中的最终余额加上你输入的金额,得到新的余额将输入的金额添加到文件夹中。将新的最终余额显出来示出来164.2.9 密码修改密码修改时,新密码需要输两次,且两次输入的密码都相等才能完成密码修改。因此在密码修改程序中需要定义两个变量,分别存放这两次输入的密码。在这个程序中 pwd表示第一次输入的密码,repwd 表示第二次输入的密码,完成新密码输入后,当 pwd 和repwd 时将新密码赋给 passwd,否则提醒用户重新输入新密码。void consumer:change_passwd() /变更密码的实现strin
20、g pwd,repwd;coutpwd;coutrepwd;if(pwd!=repwd)coutid; while(iget_id() flag = 0;else i+; if(flag) coutb;while(b“;18cinb;if(accountx-get_money()a_money(b); /转出accounti-b_money(b); /转入coutAC;num=AC;19for(n=0;nid;infilem;infilenam;infilepassw;infileidentifi;infilephonen;consumer * acc = new consumer(id,nam,passw,m,identifi,phonen); accountn = acc; infile.close();coutIDnamemoneypasswdidentificationphonenumber属性-配置属性-清单工具-输入和输出-嵌入清单,将嵌入清单后的是改成否就可以正常完成编译了。故障 2:现象:程序发生中断,单步调试之后,指向 get_id()函数,显示系统无法读取 id原因:*account指针是 zhgl 类中定义的私有成员,而 get_id 是在派生类