1课程设计报告设计题目:银行账户管理学生姓名:专业:计算机科学与技术班级:2006级01班学号:指导老师:完成日期:2007年5月20日2一、主要内容:银行账户管理程序问题描述设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码、单位、电话号码、地址等,允许用户进行如下操作:开户、销户、存款、取款、转账、查询,一个用户可以有多个户头,账户的数值没有上限。基本要求程序运行时,可以由用户选择进行何种操作,开户操作要求输入用户信息后自动获取账号,用户销户后账号被回收,并且该账号可以继续分配给其它账户,不允许用户透支,根据姓名或账号可以进行用户的信息查询,所有的账户信息应存放到一个文件中,可以随时的访问和更新。二、设计思想:定义一个用户类customer,数据成员主要有姓名、身份证号码、住址、余额等内容,可供用户操作的功能有开户,销户、存款、取款、转账、余额查询等。用户可根据界面提示自行操作。由于要实现界面的回复,所以用了大量的函数调用。在控制用户的循环操作时采用了for循环与break匹配的结构。在整体的设计上将程序分为三个部分,第一个部分“customer.h”在这个文件中对所要用到的类customer进行了声明,第二个文件“customer.cpp”是对在“customer.h”中所声明的类customer定义了一个实体,也可以说是完成了了帐户的操作函数,第三个文件“Accounter.cpp“是主函数main(),所在文件,在其中不仅定义了主函数,而且完成了菜单操作函数。三个文件各有各的内容,实现了不同的功能,同时也在查错和对程序的维护方面带来很多便利。三、程序流程图3四、用户手册程序运行时,首先开户,开户后在选择其他服务。开户后才能选择其他的服务,程序本身包含很多除错功能,当用户有不当操作时程序会自动提示,并提示用户重新选择服务。五、操作流程1、首先给出用户操作界面2、用户根据提示选择相应功能(比如1)选择dis_menu()dis_menu()slect_menu()开户open_account()存款save_money()取款get_money()查询find_infor()转账change_money()退出系统cout感谢您的使用,再见!endl注销del_account()终止开始43、用户操作完一个相应的功能后可根据提示返回主界面4、当用户结束自己的操作时可推出系统六、片断代码在开户与销户操作时,引进了一个类似开关功能的数据成员test,其主要功能是通过test的1与0的赋值来判断用户的存在与否。1表示开启此帐号,而0表示关闭此帐号:(1)、类中定义classcustomer{private:doublecustomer_Num;inttest;//定义一个开关功能的数据成员(2)、开启帐户5p[Z]-test=1;//在对象初始化的时候将其赋值为1,即表示开启此帐户(3)、关闭帐户p[z]-test=0;//在用户进行销户的时候将其赋值为0,表示关闭此帐户(4)、测试帐户是否关闭if(cn10001||cncustomer_Num||p[cn-10000]-test==0)//通过判断test是否为0来判断此用户帐户是否存在{cout对不起,您的帐户错误或并不存在!endl;六、进一步改进1、虽然题目要求并未涉及用户密码,但是作为银行的模拟系统应当设置用户密码。2、由于采用开关机制来进行销户,所以销户后的帐户并不能直接通过类中定义的函数分配给其他的用户,如要实现此功能则需添加其它函数。3、程序在进行多次调用函数后在最后退出时会出错,但并不影响用户的实际操作及用户的数据。4、对于用户来说存款数目应是无限制的,但在此程序中每个帐户最大可存储100000000元,不过对于一般用户足够了。附录(源程序)6“customer.h”#includeiostream.h#includestdlib.h#includestdio.h#includestring.h#ifndefCUSTOMER_H#defineCUSTOMER_Hclasscustomer{private:doublecustomer_Num;inttest;charName[8];charID[30];charWork_Group[80];charTel_Num[20];charAddress[60];charpassword[10];floatMoney;public:voidsave_money();voidget_money();voidchange_money();voidfind_infor();friendvoidopen_account();friendvoidsave_money();friendvoidget_money();friendvoidchange_money();friendvoidfind_infor();friendvoiddel_account();};#endif;7“customer.cpp”#includecustomer.h#includeiostream.h#includestdlib.h#includestdio.h#includestring.hvoiddis_menu();voidslect_menu();voidhandle_menu();doublecustomer_Num=10000;//用户帐号变量intZ=0;//指针变量customer*p[10000];//本程序支持10000个用户voidopen_account()//开户函数{charName[8];charID[30];charWork_Group[80];charTel_Num[20];charAddress[60];floatMoney(0);if(customer_Num==20000){cout对不起,系统存储空间已满,无法开户,对此带来的不便我们深表歉意!endl;dis_menu();slect_menu();return;8}Z++;customer_Num++;p[Z]=newcustomer;cout请输入您的姓名:endl;cinName;cout请输入您的身份证件号码:endl;cinID;cout请输入您的单位地址:endl;cinWork_Group;cout请输入您的电话号码:endl;cinTel_Num;cout请输入您的住址:endl;cinAddress;cout请输入您的金额(开户¥50.00元起):endl;//cinMoney;//银行开户50元起chara1[80];for(;;){gets(a1);Money=atoi(a1);if(Money50||Money100000000){cout对不起,您输入的金额不正确。endl;cout(提示消息:金额小于50或过于巨大。)endl;cout请重新输入您的金额:endl;}elsebreak;}p[Z]-customer_Num=customer_Num;for(inta=0;a8;a++){9p[Z]-Name[a]=Name[a];}for(intb=0;b30;b++){p[Z]-ID[b]=ID[b];}for(intc=0;c80;c++){p[Z]-Work_Group[c]=Work_Group[c];}for(intd=0;d20;d++){p[Z]-Tel_Num[d]=Tel_Num[d];}for(inte=0;e60;e++){p[Z]-Address[e]=Address[e];}p[Z]-Money=Money;p[Z]-test=1;cout恭喜您,开户成功!您的帐户为:customer_Num请牢记endl;cout您需要继续服务吗(Y/N)?endl;charcn;cincn;for(;cn!='n'&&cn!='N'&&cn!='y'&&cn!='Y';){cout您刚才输入的既不是“Y”也不是“N”!endl;cout您需要继续服务吗(Y/N)?endl;cincn;}if(cn=='y'||cn=='Y'){dis_menu();slect_menu();10return;}if(cn=='n'||cn=='N'){cout感谢您的使用,再见!endl;return;}}voidsave_money()//存款函数{cout请输入您的帐号:endl;intz=0;intcn;chara[80];for(;;){gets(a);cn=atoi(a);if(cn10001||cncustomer_Num||p[cn-10000]-test==0){cout对不起,您输入的帐户错误或并不存在!endl;cout您需要继续存款吗?(Y/N)endl;charcn;cincn;for(;cn!='n'&&cn!='N'&&cn!='y'&&cn!='Y';){cout您刚才输入的既不是“Y”也不是“N”!endl;cout您需要继续存款吗?(Y/N)endl;cincn;}if(cn=='y'||cn=='Y')11{save_money();return;}if(cn=='n'||cn=='N'){dis_menu();slect_menu();return;}}elsez=cn-10000;break;}cout请输入您存入的金额:endl;intsave;for(;;){cinsave;if(save0){cout对不起,您输入的金额错误!endl;cout请输入您存入的金额:endl;}elsebreak;}p[z]-Money=p[z]-Money+save;cout存款成功!endl;cout您需要继续存款吗(Y/N)?endl;charcn1;cincn1;for(;cn1!='n'&&cn1!='N'&&cn1!='y'&&cn1!='Y';){12cout您刚才输入的既不是“Y”也不是“N”!endl;cout您需要继续存款吗(Y/N)?endl;cincn1;}if(cn1=='y'||cn1=='Y'){save_money();return;}if(cn1=='n'||cn1=='N'){dis_menu();slect_menu();return;}}voidget_money()//取款函数{cout请输入您的帐号:endl;intz=0;intcn;chara[80];for(;;){gets(a);cn=atoi(a);if(cn10001||cncustomer_Num||p[cn-10000]-test==0){cout对不起,您输入的帐户错误或并不存在!endl;cout您需要继续取款吗?(Y/N)endl;charcn;cincn;13for(;cn!='n'&&cn!='N'&&cn!='y'&&cn!='Y';){cout您刚才输入的既不是“Y”也不是“N”!endl;cout您需要继续取款吗?(Y/N)endl;cincn;}if(cn=='y'||cn=='Y'){get_money();return;}if(cn=='n'||cn=='N'){dis_menu();slect_menu();return;}}elsez=cn-10000;break;}cout请输入您要取出的金额:endl;intget;for(;;){cinget;if(getp[z]-Money){cout对不