版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
综合程序课程设计说明书课程设计名称:12级综合程序课程设计报告课程设计题目:银行账户管理系统学院名称:信息工程学院专业:电子信息工程班级:学号:姓名:评分:教师:2015年03月20日综合程序课程设计任务书题目银行账户管理系统内容与要求设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码、电话号码,允许用户进行如下操作:开户、销户、存款、取款、转账、查询,一个用户可以有多个户头,账户的数值没有上限。基本要求:程序运行时,可以由用户选择进行何种操作,开户操作要求输入用户信息后自动获取账号,用户销户后账号被回收,并且该账号可以继续分配给其它账户,不允许用户透支,根据姓名或账号可以进行用户的信息查询,所有的账户信息应存放到一个文件中,可以随时的访问和更新。选作内容:在上述程序的基础上,添加联名账户(一个联名账户有两个拥有者)的管理。进度安排3月2~3日:查找资料3月4日:系统框架搭建3月5~10日:对系统的各模块进行详细的设计。3月11~12日:对系统进行测试、完善学生姓名:指导时间第1~2周指导地点:任务下达2015年3月1日任务完成2015年3月13日考核方式1.评阅□2.答辩□3.实际操作□4.其它□指导教师系(部)主任2014-2015学年第2学期第1周-2周注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档。摘要随着社会经济的发展,信息化程度的不断深入,计算机的广泛运用,为了满足新形势下银行客户的需求,使用计算机来进行银行账户的管理是社会发展的新常态。本文主要介绍一种以C++为系统描述语言,采用自顶向下的的设计方法,通过类来实现相应操作的一种银行账户系统。该系统具有开户、用户信息存储、查询、转账、取款等功能。较之其他系统,具有快速、易操作、安全性好等特点。关键词:银行账户管理系统C++类目录TOC\o"1-3"\h\u第一章设计要求 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附录二:联名账户管理程序(节选) 44第一章设计要求设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码、电话号码,允许用户进行如下操作:开户、销户、存款、取款、转账、查询,一个用户可以有多个户头,账户的数值没有上限。基本要求:程序运行时,可以由用户选择进行何种操作,开户操作要求输入用户信息后自动获取账号,用户销户后账号被回收,并且该账号可以继续分配给其它账户,不允许用户透支,根据姓名或账号可以进行用户的信息查询,所有的账户信息应存放到一个文件中,可以随时的访问和更新。选作内容:在上述程序的基础上,添加联名账户(一个联名账户有两个拥有者)的管理。系统的组成与设计的原理2.1系统的组成通过对该银行账户管理系统的需求进行分析,从增强系统的可维护性以与保密性的角度入手,整体上计划采用两个类,即zhgl类和consumer类来实现。定义zhgl为基类,定义consumer类为zhgl的派生类、使其的访问属性为public。zhgl类用来完成功能显示、开户、销户和用户登录功能;consumer类用来存放账户基本信息,进行查询、存款、取款、密码修改和转账操作。除此之外还有如下子函数组成。voidkaihu();//普通账户开户voidshanchu();//删除账号voidzhuanzhang(int);//转账voiddenglu();//登陆账号voidaddmoney(int,float);voidexitzhgl();//退出系统voidfunctionshow();voidsave();//保存voidqishi(); //功能界面voidload();//载入voiddisplay();voidqumoney();//取钱voidchange_passwd();//改密码voidb_money(float);//被转账者voida_money(float);//转账者voidc_money(float);//联合被转账者voidd_money(float);//联合转账者floatget_money();//卡卡转帐voidsearch();//查询voidcunmoney();//存钱2.2表的信息结构1.普通账户信息表字段名字段类型允许空说明IDintno卡号namestringno用户姓名passwordstringno密码identificationstringno身份证phonenumberstringno电话moneyfloatno账户余额(不能为空)联名账户信息表字段名字段类型允许空说明IDintno卡1namestringno卡1用户姓名passwordstringno卡1密码ID2intno卡2Name2stringno卡2用户姓名Password2stringno卡2密码moneyfloatno账户余额(不能为空)3.用户进行存取的操作表字段名字段类型允许空说明IDintno卡号cfloatno存/取金额chcharno判断是否继续该操作4.用户进行转账的操作表字段名字段类型允许空说明IDintno转账的卡号idintno被转账的卡号bfloatno转账金额moneyfloatno账户余额5.用户进行密码修改的操作表字段名字段类型允许空说明IDintno卡号pwdstringno新密码repwdstringno再次输入的新密码passwdstringno账号密码第三章概要设计3.1基本功能设计思路通过对该银行账户管理系统的需求进行分析,从增强系统的可维护性以与保密性的角度入手,整体上计划采用两个类,即zhgl类和consumer类来实现。定义zhgl为基类,定义consumer类为zhgl的派生类、使其的访问属性为public。zhgl类用来完成功能显示、开户、销户和用户登录功能;consumer类用来存放账户基本信息,进行查询、存款、取款、密码修改和转账操作。定义一个account指针,用来指向已开户的账户,并获得该账户的信息,用来执行存、取、转账等操作。并用fstream指令进行文件的读写操作,实现将账户所有者的信息存放到一个文件中,并可以随时的访问和更新。程序运行后用户可根据界面提示自行操作。由于要实现界面的回复,在控制用户的循环操作时可以采用dowhile匹配的循环结构。3.2程序框图第四章详细设计4.1类的定义zhgl类的定义classzhglpublic:voidkaihu();//普通账户开户voidshanchu();//删除账号voidzhuanzhang(int);//转账voiddenglu();//登陆账号voidaddmoney(int,float);voidexitzhgl();//退出系统voidfunctionshow();voidsave();//保存voidqishi(); //功能界面 voidload();//载入protected:staticintnum;//账户数consumer*account[20];4.1.2consumer类的定义classconsumer:publiczhglpublic:friendclasszhgl;consumer(intid,stringName,stringPassWord,floatm,stringIdentification,stringPhoneNumber)ID=id; name=Name; money=m; passwd=PassWord; identification=Identification; phonenumber=PhoneNumber;stringget_passwd()//取得密码 returnpasswd; stringget_name() returnname; intget_id()//返回账号 returnID;voiddisplay();voidqumoney();//取钱voidchange_passwd();//改密码voidb_money(float);//被转账者voida_money(float);//转账者 voidc_money(float);//联合被转账者 voidd_money(float);//联合转账者floatget_money();//卡卡转帐 voidsearch();//查询voidcunmoney();//存钱private:intID;//开户帐号stringpasswd;//用户密码stringname;//用户姓名 stringidentification;//身份证 stringphonenumber;//电话号码floatmoney;//初始资金4.2银行账户系统其他功能的实现4.2.1账户开户账户开户使用cin接收键盘中输入的数据,并使用指向类对象的指针,将接收的值传回。voidzhgl::kaihu()//开户的实现intid;stringnam;stringpassw; stringidentif;stringphonen;floatm;cout<<endl<<"请输入开户号:";cin>>id;cout<<endl<<"请输入开户人姓名:";cin>>nam; cout<<endl<<"请输入开户人身份证:"; cin>>identif; cout<<endl<<"请输入开户人的电话号码:"; cin>>phonen;cout<<endl<<"请输入开户密码:";cin>>passw;cout<<endl<<"请输入存入金额:";cin>>m;while(m<=0)cout<<"请输入正确的数字!"<<endl;cin>>m;consumer*acc=newconsumer(id,nam,passw,m,identif,phonen);account[num]=acc; system("cls");cout<<"开户成功!!"<<endl<<endl;num++;save();return;4.2.2账户注销注销账户时先要将输入的账户号与已开户的账户进行比对,匹配上后,将账户号按位依次赋空,实现账户注销。voidzhgl::shanchu()//注销账号的实现intid;cout<<endl<<"请输入你要注销的帐户号:";cin>>id;intflag=1;inti=0;while((i<num)&&(flag))if(id==account[i]->get_id()) {flag=0;}else {i++;}if(flag)cout<<"帐号不存在!"<<endl;return;for(intj=i;j<num;j++)account[j]=account[j+1];account[num-1]=NULL;//按位依次赋空实现销户num--;cout<<"注销成功!!"<<endl;return;程序框图如下:账户登录首先读取bankdata.TXT保留的账户信息,首先对银行账号进行匹配,匹配上后再对密码进行匹配,在登陆后,会有2级菜单供用户选择自己想要的操作,能够查询,取款,存款,转账,修改密码和返回主菜单。voidzhgl::denglu()//登陆账号的实现 intid;cout<<"请输入帐号:";cin>>id;intflag=1;inti=0;while((i<num)&&(flag))if(id==account[i]->get_id()) flag=0; else i++;if(flag)cout<<"帐号不存在!"<<endl;return;}cout<<"请输入密码:";stringpassw;cin>>passw;if(passw!=account[i]->get_passwd()) return;intn;do{cout<<"请选择你要进行的操作:"<<endl<<"0)查询其他用户信息"<<endl<<"1)查看信息"<<endl<<"2)取款"<<endl<<"3)存款"<<endl<<"4)修改密码"<<endl<<"5)转账"<<endl<<"6)返回"<<endl;cin>>n;switch(n) {case0:account[i]->search();break; case1:account[i]->display();break;case2:account[i]->qumoney();save();break;case3:account[i]->cunmoney();save();break;case4:account[i]->change_passwd();save();break;case5:zhuanzhang(i);save();break;case6:return;while(1);4.2.4退出系统voidzhgl::exitzhgl()cout<<endl<<"感谢你对本银行储蓄管理系统的支持,欢迎下次光临!"<<endl;exit(0);}4.2.5查询其他用户信息voidconsumer::search()stringch; intID; intflag=1; intQ=0;cout<<endl<<"请输入你要查询的帐户号:";cin>>ID;while((Q<num)&&(flag))if(ID==account[Q]->get_id()) {flag=0;}else {Q++;}if(flag)cout<<"帐号不存在!"<<endl;return; ch=account[Q]->get_name(); cout<<"对应的用户名为:"<<ch<<endl;4.2.6查看本用户信息用cout输出本用户的基本信息voidconsumer::display(){system("cls");cout<<"**********************************"<<endl;cout<<"*"<<endl;cout<<"*用户姓名:"<<name<<endl;cout<<"*身份证号码:"<<identification<<endl;cout<<"*电话号码:"<<phonenumber<<endl;cout<<"*帐号:"<<ID<<endl;cout<<"*余额:"<<money<<endl;cout<<"**********************************"<<endl;4.2.7取款用户选择取款功能后,先提示用户输入取款金额,取款金额应大于0元,所以要先对输入的金额进行判断,当其大于0后再账户余额进行比较。若输入金额大于账户余额,提示用户账户余额不足;若输入金额小于等于账户余额,执行取款操作,并相应的减去取款金额。执行完操作后询问用户是否继续当前操作。voidconsumer::qumoney()//取钱的实现 floatm; charch;docout<<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');4.2.8存款存款功能和取款功能类似,用户选择存款功能后,先提示用户输入存款金额,存款金额应大于0元,当存款金额大于0后执行存款操作,并相应的账户余额应为之前的金额加上存款金额。执行完操作后询问用户是否继续当前操作。voidconsumer::cunmoney()//存钱的实现floatc;charch;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');}选选存钱输入金额将余额表中的最终余额加上你输入的金额,得到新的余额将输入的金额添加到文件夹中。将新的最终余额显出来示出来4.2.9密码修改密码修改时,新密码需要输两次,且两次输入的密码都相等才能完成密码修改。因此在密码修改程序中需要定义两个变量,分别存放这两次输入的密码。在这个程序中pwd表示第一次输入的密码,repwd表示第二次输入的密码,完成新密码输入后,当pwd和repwd时将新密码赋给passwd,否则提醒用户重新输入新密码。voidconsumer::change_passwd()//变更密码的实现stringpwd,repwd;cout<<"请输入新密码:";cin>>pwd;cout<<"请再输入一次新密码:";cin>>repwd;if(pwd!=repwd)cout<<"你输入的两次密码不一样,请重新输入!"<<endl;passwd=pwd;cout<<"密码修改成功,请牢记!"<<endl;4.2.10转账转账时,应先获得被转账者的账户,确认该账户存在后,还需对转账金额进行判断,规定转账金额必须大于0元。完成转账功能还需借用两个子函数来对转账者和被转账者的账户金额进行操作。这里用a_money、b_money分别对转账者和被转账者的账户余额进行操作。voidconsumer::b_money(floatx) money=x+money;voidconsumer::a_money(floatx) money=money-x;voidzhgl::zhuanzhang(intx)//转账的实现{intid;intflag=1;inti=0;cout<<"请输入帐号:";cin>>id;while((i<num)&&(flag))if(id==account[i]->get_id()) flag=0;else i++;if(flag)cout<<"帐号不存在!"<<endl;return;floatb;cout<<"请输入你要转帐的金额:"<<endl;cin>>b;while(b<=0)cout<<"请输入正确的数字!"<<endl;cout<<"$>";cin>>b;if(account[x]->get_money()<b) cout<<"对不起,金额不够!!"<<endl;else account[x]->a_money(b);//转出 account[i]->b_money(b);//转入cout<<"转帐成功!"; return;}4.3读取和保存 根据系统的功能中有一个要求:可以随时的访问和更新。考虑到这一点,在程序中计划用fstream指令来完成,因此在系统运行前,应先进行文件的读取,读取之前已开户的账户信息,并在执行操作之后保存更改,实现随时的访问和更新。4.3.1读取voidzhgl::load()ifstreaminfile("bankdate.txt",ios::in);//打开bankdate,txt文件if(!infile)cerr<<"读取错误,无资料中!"<<endl;return;intn=0;intid;floatm;intAC;stringnam,passw,identifi,phonen;infile>>AC;num=AC;for(n=0;n<AC;n++)//读取文件中的账户信息infile>>id;infile>>m;infile>>nam;infile>>passw;infile>>identifi;infile>>phonen;consumer*acc=newconsumer(id,nam,passw,m,identifi,phonen);account[n]=acc;infile.close();cout<<"读取资料正常!"<<endl;4.3.2保存voidzhgl::save()//账号的保存intn=0; intac=num; fstreamftxt("bankdate.txt",ios::out);//打开文件 ftxt<<ac<<endl; for(;n<ac;n++)//写入账户信息 ftxt<<account[n]->ID<<endl; ftxt<<account[n]->name<<endl; ftxt<<account[n]->money<<endl; ftxt<<account[n]->passwd<<endl; ftxt<<account[n]->identification<<endl; ftxt<<account[n]->phonenumber<<endl;infile.close();4.4联名账户的实现由于时间有限,联合账户最终并没有完全实现在这里主要讲下我们实现联名账户的思路。在这里对consumer类的进行处理,增加3个对象id2,name2和passwd2,使得comsumer类默认即为联名账户。在类的初始化时就先给那三个对象赋空,这样即使不接收三个对象的值,在输出过程中也不会报错,最终经过处理的类总共有7个对象:2个id,2个name,2个passwd还有1个money。在开户时如果是普通账户开户只需给id2赋0,就不会再提示进行name2和passwd2的信息输入;如果是联名账户只需按照提示输入信息即可。联名账户登录时,输入账号密码后会与已开户的账户进行比对,识别出是哪个账户进行的操作,由于联名账户资产共有,所以不管是账户1还是账户2进行存取款操作时,改变的都是共同的资产金额。虽然并没有完全调试出来,但是除了对金额的操作还没完成,其他的操作都已实现,在此节选部分体现与之前程序差异的联名账户的代码(见附录二),其余部分由于操作原理相同,且受篇幅所限就不一一罗列了。第五章调试与测试分析5.1调试程序的方法和技巧在编写过程中我们采用的调试方法有逐语句调试法、分模块调试法、设断点调试法以与整体调试法。其中逐语句调试法以与设断点调试法主要在程序报错时用于排错,而分模块调试和整体调试则贯穿程序设计始终。在进行程序设计时会先对需求进行分析,搭出系统的框架,然后再根据系统不同的功能划分成若干模块,编写子函数来完成相应的功能。采用分模块调试的好处在于,当设计完一个子函数后可以先进行模块调试,可以看程序有无错误、是否完成预想的功能,减小后期排错工作量。5.2系统运行结果5.2.1开始界面图5.1开始菜单5.2.2用户开户图5.2用户开户图5.3如图5.2所示完成账户开户后,在blankdate.txt文件中信息在写入正常,见图5.3。5.2.3账户登录图5.4账户登录正常,登录后进入操作菜单。5.2.4账户注销图5.5查询其他用户信息图5.6查看信息图5.7取款图5.10存款图5.11修改密码图5.12转账图5.13图5.14转账后转账者和被转账者的账户余额都发生了改变,且blankdate.txt文件中的内容得到了更新,证明可以实现随时访问更新。从以上的调试结果可以看出,设计的银行账户管理系统已经达到用户的要求。5.3调试中出现的故障故障1:现象:程序无误时,生成失败并提示LINK:fatalerrorLNK1123:转换到COFF期间失败:文件无效或损坏。原因:上网搜索了一下这个错误代码,后发现这个错误是由低版本的WTL到高版本的WTL转变后产生的。解决方法:只需依次点击项目->属性->配置属性->清单工具->输入和输出->嵌入清单,将嵌入清单后的是改成否就可以正常完成编译了。故障2:现象:程序发生中断,单步调试之后,指向get_id()函数,显示系统无法读取id原因:*account[]指针是zhgl类中定义的私有成员,而get_id是在派生类consumer中定义的,由于其访问属性是public,无法访问基类的私有成员函数故无法获取到*account[]指向的账户的id值。解决方法:解决方法有很多种,第一将*account从zhgl类中调出来,作为一个普通变量;第二将*account定义为zhgl类的保护成员,consumer即可进行访问;第三可以将派生类consumer定义为基类的友元,使其能访问私有对象。在此程序中采用的是解决方法一。故障3:现象:在清空bankdata.txt中的内容后程序报错原因:在程序运行后,一开始就会调用一个Load函数,读取bankdata.txt中已开户的账户情况。打开文件后检测到文件为空又没有对文件为空的情况进行处理,导致程序无法进行。解决方法:在打开文件检测到文件为空时,输出提示语,并返回之前操作。并且不要人为的清空记录的信息,如不慎清空应在其中输入相应的字符,使其处于非空状态。故障4:现象:编写load时,发现infile无法读取到保存在bankdata.txt上的数据。原因:在之前的save函数中输出内容有中文,导致infile读取不到数字,且因为不知道文件中到底保存了多少个账户,无法返回到主函数中。解决方法:把save函数中的中文给注释掉,并在编写save函数时,添加一个num变量,用来记录已完成开户的账户个数,并在load中增加一个变量AC,用来存储bankdata.txt中的保存的num,并在循环中作为循环变量,控制读取次数。结论经过验证,本银行账户管理系统可以实现账户信息记录、开户、销户、存款、取款、转账、查询等基本功能,联名账户的管理大体上也已完成。从设计思路上来说,系统模块的划分,组成部分的设计是正确的。从方案选用来说,并不算完美,因为对链表的相关知识并不太了解,因此在存储账户信息时并未选用链表来实现,这也为之后的提高要求设计带来了一定困难;且受开发时间影响,只能在doss系统下进行调试操作,虽然运行速度快,但人机交互界面不友好。通过这次综合课程设计,我切身的体会到了面向对象程序和面向过程程序语言的区别。区别不仅仅存在于两种程序语言中,也存在与编程思想中。面向对象的程序编程思想主要是把需求模块化,根据每个模块特定的属性,需要实现的功能来编写模块,创建对象。通过这次课设,我对类的定义、数据类型,派生类等有了更深刻的认识;对之前没了解到的细节有了更深的了解;对文件操作有了更深了理解。最重要的是,在这次课程设计中,掌握了自顶向下的设计方法,学会了从系统的角度去分析问题,还积累了一定的工程经验。虽然系统设计的并不完美,但这次课程设计成为我们的人生旅途上一个美好的历练!!参考文献[1]申时凯.数据库应用技术(SQLServer2005).中国铁路出版社[2].C程序设计语言.北京:清华大学出版社,第2版[3]黄维通.VisualC++面向对象与可视化程序设计.北京:清华大学出版社,第3版附录附录一:详细程序与注释#include"stdafx.h"#include<iostream>#include<string>#include<fstream>usingnamespacestd;inti=0;intj=0;classconsumer;classzhglpublic:voidkaihu();//普通账户开户voidshanchu();//删除账号voidzhuanzhang(int);//转账voiddenglu();//登陆账号voidaddmoney(int,float);voidexitzhgl();//退出系统voidfunctionshow();voidsave();//保存voidqishi();//功能界面 voidload();//载入 protected:staticintnum;//账户数consumer*account[20];intzhgl::num=0;classconsumer:publiczhglpublic:friendclasszhgl;consumer(intid,stringName,stringPassWord,floatm,stringIdentification,stringPhoneNumber)ID=id; name=Name; money=m; passwd=PassWord; identification=Identification; phonenumber=PhoneNumber;consumer()//类的初始 ID=0; name='0'; money=0; passwd='0'; identification='0'; phonenumber='0';stringget_passwd()//取得密码 returnpasswd; stringget_name() returnname; intget_id()//返回账号 returnID;voiddisplay();voidqumoney();//取钱voidchange_passwd();//改密码voidb_money(float);//被转账者voida_money(float);//转账者 voidc_money(float);//联合被转账者 voidd_money(float);//联合转账者floatget_money();//卡卡转帐 voidsearch();//查询voidcunmoney();//存钱private:intID;//开户帐号stringpasswd;//用户密码stringname;//用户姓名 stringidentification;//身份证 stringphonenumber;//电话号码floatmoney;//初始资金voidzhgl::save()//账号的保存intn=0; intac=num; fstreamftxt("bankdate.txt",ios::out); ftxt<<ac<<endl; for(;n<ac;n++) ftxt<<account[n]->ID<<endl; ftxt<<account[n]->name<<endl; ftxt<<account[n]->money<<endl; ftxt<<account[n]->passwd<<endl; ftxt<<account[n]->identification<<endl; ftxt<<account[n]->phonenumber<<endl;ftxt.close();voidzhgl::load()ifstreaminfile("bankdate.txt",ios::in);if(!infile)cerr<<"读取错误,无资料中!"<<endl;return;intn=0;intid;floatm;intAC;stringnam,passw,identifi,phonen;infile>>AC;num=AC;for(n=0;n<AC;n++)infile>>id;infile>>m;infile>>nam;infile>>passw;infile>>identifi;infile>>phonen;consumer*acc=newconsumer(id,nam,passw,m,identifi,phonen);account[n]=acc;infile.close();cout<<"读取资料正常!"<<endl;voidzhgl::zhuanzhang(intx)//转账的实现{intid;intflag=1;inti=0;cout<<"请输入帐号:";cin>>id;while((i<num)&&(flag))if(id==account[i]->get_id()) flag=0;else i++;if(flag)cout<<"帐号不存在!"<<endl;return;floatb;cout<<"请输入你要转帐的金额:"<<endl;cin>>b;while(b<=0)cout<<"请输入正确的数字!"<<endl;cout<<"$>";cin>>b;if(account[x]->get_money()<b) cout<<"对不起,金额不够!!"<<endl;else account[x]->a_money(b);//转出 account[i]->b_money(b);//转入cout<<"转帐成功!"; return;}voidconsumer::b_money(floatx) money=x+money;voidconsumer::a_money(floatx) money=money-x;voidzhgl::addmoney(intx,floaty) account[x]->money=account[x]->money-y;floatconsumer::get_money()//查询money returnmoney;voidmain() zhglyh;yh.functionshow();voidzhgl::functionshow() load();intn;docout<<endl<<"请你输入相应的操作序号进行操作:"<<endl;cout<<"1)普通用户开户"<<endl<<"2)账户登陆"<<endl<<"3)帐户注销"<<endl<<"4)退出系统"<<endl;cout<<"$>";cin>>n;while(n<1||n>4)cout<<"请输入正确的操作序号!"<<endl;cout<<"$>";cin>>n;switch(n)case1:kaihu();break;case2:denglu();break;case3:shanchu();break;case4:exitzhgl();break;while(true);voidconsumer::search(){stringch; intID; intflag=1; intQ=0;cout<<endl<<"请输入你要查询的帐户号:";cin>>ID;while((Q<num)&&(flag))if(ID==account[Q]->get_id())flag=0;elseQ++;if(flag)cout<<"帐号不存在!"<<endl;return; ch=account[Q]->get_name(); cout<<"对应的用户名为:"<<ch<<endl;voidzhgl::denglu()//登陆账号的实现 intid;cout<<"请输入帐号:";cin>>id;intflag=1;inti=0;while((i<num)&&(flag))if(id==account[i]->get_id()) flag=0; else i++;if(flag)cout<<"帐号不存在!"<<endl;return;cout<<"请输入密码:";stringpassw;cin>>passw;if(passw!=account[i]->get_passwd()) return;intn;do{cout<<"请选择你要进行的操作:"<<endl<<"0)查询其他用户信息"<<endl<<"1)查看信息"<<endl<<"2)取款"<<endl<<"3)存款"<<endl<<"4)修改密码"<<endl<<"5)转账"<<endl<<"6)返回"<<endl;cin>>n;switch(n) {case0:account[i]->search();break; case1:account[i]->display();break;case2:account[i]->qumoney();save();break;case3:account[i]->cunmoney();save();break;case4:account[i]->change_passwd();save();break;case5:zhuanzhang(i);save();break;case6:return;while(1);voidzhgl::kaihu()//开户的实现intid;stringnam;stringpassw; stringidentif;stringphonen;floatm;cout<<endl<<"请输入开户号:";cin>>id;cout<<endl<<"请输入开户人姓名:";cin>>nam; cout<<endl<<"请输入开户人身份证:"; cin>>identif; cout<<endl<<"请输入开户人的电话号码:"; cin>>phonen;cout<<endl<<"请输入开户密码:";cin>>passw;cout<<endl<<"请输入存入金额:";cin>>m;while(m<=0)cout<<"请输入正确的数字!"<<endl;cin>>m;consumer*acc=newconsumer(id,nam,passw,m,identif,phonen);account[num]=acc; system("cls");cout<<"开户成功!!"<<endl<<endl;num++;save();return;voidzhgl::shanchu()//注销账号的实现intid;cout<<endl<<"请输入你要注销的帐户号:";cin>>id;intflag=1;inti=0;while((i<num)&&(flag))if(id==account[i]->get_id())flag=0;elsei++;if(flag)cout<<"帐号不存在!"<<endl;return;for(intj=i;j<num;j++)account[j]=account[j+1];account[num-1]=NULL;num--;cout<<"注销成功!!"<<endl;return;voidconsumer::change_passwd()//变更密码的实现stringpwd,repwd;cout<<"请输入新密码:";cin>>pwd;cout<<"请再输入一次新密码:";cin>>repwd;if(pwd!=repwd)cout<<"你输入的两次密码不一样,请重新输入!"<<endl;passwd=pwd;cout<<"密码修改成功,请牢记!"<<endl;voidconsumer::qumoney()//取钱的实现floatm;charch;docout<<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');voidconsumer::cunmoney()//存钱的实现floatc;charch;docout<<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');voidconsumer::display(){system("cls");cout<<"**********************************"<<endl;cout<<"*"<<endl;cout<<"*用户姓名:"<<name<<endl;cout<<"*身份证号码:"<<identification<<endl;cout<<"*电话号码:"<<phonenumber<<endl;cout<<"*帐号:"<<ID<<endl;cout<<"*余额:"<<money<<endl;cout<<"**********************************"<<endl;voidzhgl::exitzhgl()cout<<endl<<"感谢你对本银行储蓄管理系统的支持,欢迎下次光临!"<<endl;exit(0);附录二:联名账户管理程序(节选)1.类定义classconsumer:publickaishipublic: friendclasskaishi;consumer(intid,stringName,stringPassword,floatm,intid2=0,stringName2=0,stringPassword2=0)ID=id; ID2=id2; name=Name; name2=Name2; money=m; passwd=Password; passwd2=Passw
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年毫州货运上岗证考试多少道题
- 儿童健康成长类产品推广策略汇报
- 以家庭为单位的教育创新与实践探索
- 初四物理教学计划
- 沪教版七年级第二学期数学期末试题已编
- 企业员工与孩子健康习惯培养的异同
- 以信息化提升学校食品安全的监管能力及信息公开透明度
- 全面提高学生综合素质的实践探索
- 创新教育策略在学生心理健康教育中的应用
- 创新教育模式下的创意产业发展路径
- 医疗大数据与人工智能技术融合发展
- SJ 21448-2018 集成电路陶瓷封装 键合前检验要求
- 《实验活动8 粗盐中难溶性杂质的去除》教学设计(附导学案)
- 学校2024-2025年度工作计划
- 公共经济学智慧树知到期末考试答案2024年
- 移动互联网时代下的营销策略创新研究
- 玻璃幕墙工程质量控制
- 生涯发展展示
- 项目经理管理办法
- 心理健康测试题目及答案小学生版
- 神经系统练习题附有答案
评论
0/150
提交评论