2022年银行账户管理程 .pdf
/*(三)银行账户管理程序(win32 应用程序)(两人题)1问题描述设计一个银行账户管理程序,账户的信息有账号(唯一)、姓名、余额、身份证号码、单位、电话号码、地址等,允许用户进行如下操作:开户、销户、存款、取款、转账、查询,一个用户可以有多个户头,账户的数值没有上限。2基本要求程序运行时,可以由用户选择进行何种操作,开户操作要求输入用户信息后自动获取账号,用户销户后账号被回收,并且该账号可以继续分配给其它账户,不允许用户透支,根据姓名或账号可以进行用户的信息查询,所有的账户信息应存放到一个文件中,可以随时的访问和更新。3测试数据程序应输入不少于人的账户信息,应考虑到人员同名的情况。4实现提示可定义一个账户类存放账户信息以及执行相应的操作,可以用一个链表类来管理账户。在上述程序的基础上,添加联名账户(一个联名账户有两个拥有者)的管理。*/#include#include#include#include usingnamespace std;class consumer;class YH public:YH();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*account20;staticint acnum;/账户数;int YH:acnum=0;YH:YH()class consumer:public YH public:friendclass YH;consumer(int id,string Name,string PassWord,float m)ID=id;name=Name;money=m;passwd=PassWord;consumer()ID=0;name=0;money=0;passwd=0;名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 7 页 -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;void YH:save()ofstream ofile(bankdat.dat,ios:out);ofstream outfile(bankdat.dat,ios:out);int n=0;outfileacnum ;for(;nacnum;n+)outfileID ;outfilemoney ;outfilename ;outfilepasswd ;outfile.close();/_page_break_ void YH:load()ifstream infile(bankdat.dat,ios:in);if(!infile)cerr 读取错误,无资料中!acnum;for(;nid;infilem;infilenam;infilepassw;accountn-passwd;consumer*acc=new consumer(id,nam,passw,m);accountn=acc;infile.close();cout 读取资料正常!endl;void YH:transfer(int x)int id;名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 7 页 -coutid;int flag=1;int i=0;while(iget_id()flag=0;else i+;if(flag)cout 帐号不存在!endlendl;return ;float b;coutendlb;while(b=0)cout 请输入正确的数字!endl;cout;cinb;if(accountx-get_money()b)cout对不起,金额不够!dec_money(b);accounti-add_money(b);coutmoney=accountx-money-y;float consumer:get_money()return money;void main()YH yh;yh.functionshow();void YH:functionshow()int n;do system(cls);load();coutendl 请你输入相应的操作序号进行操作:endl;cout 1)用户开户 endl 2)账户登陆 endl 3)帐户注销 endl 4)退出系统 endl;cout;cinn;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 7 页 -while(n4)cout 请输入正确的操作序号!endl;cout;cinn;switch(n)case 1:set_account();break;case 2:enter_account();break;case 3:del_account();break;case 4:exitYH();break;cin.get();while(true);void YH:enter_account()int id;coutid;int flag=1;int i=0;/_page_break_ while(iget_id()flag=0;else i+;if(flag)cout 帐号不存在!endlendl;return;coutpassw;if(passw!=accounti-get_passwd()return;accounti-display();cin.get();cin.get();int n;dosystem(cls);cout 请选择你要进行的操作:endl 1)查看信息 endl 2)取款 endl 3)存款 endl 4)修改密码 endl 5)转账 endl 6)返回 n;switch(n)case 1:accounti-display();break;case 2:accounti-fetchmoney();save();break;case 3:accounti-savemoney();save();break;case 4:accounti-change_passwd();save();break;case 5:transfer(i);save();break;case 6:return;名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 7 页 -cin.get();cin.get();while(1);void YH:set_account()int id;string nam;string passw;float m;coutendlid;coutendlnam;coutendlpassw;coutendlm;while(m=0)cout 请输入正确的数字!m;consumer*acc=new consumer(id,nam,passw,m);accountacnum=acc;cout 开户成功!endlendl;acnum+;save();cin.get();return;void YH:del_account()int id;coutendlid;int flag=1;int i=0;while(iget_id()flag=0;else i+;if(flag)名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 7 页 -cout 帐号不存在!endlendl;return;for(int j=i;jacnum;j+)accountj=accountj+1;accountacnum-1=NULL;acnum-;cout 注销成功!endlendl;save();cin.get();return;void consumer:change_passwd()string pwd,repwd;coutpwd;coutrepwd;if(pwd!=repwd)cout 你输入的两次密码不一样,请重新输入!endl;passwd=pwd;cout 密码修改成功,请牢记!endl;cin.get();void consumer:fetchmoney()float m;char ch;do coutendl 你要取多少钱:m;while(m=0)cout 请输入正确的数字!endl;cout;cinm;if(moneym)cout 对不起,你的余额不足!endl;else money=money-m;coutendl 操作成功,请收好钱!endl;cout 是否要继续该项操作:(Y/N)名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 7 页 -endl;cout;cinch;while(ch!=n&ch!=N&ch!=Y&ch!=y)cout;cinch;while(ch=y|ch=Y);void consumer:savemoney()float c;char ch;do coutendl 你要存多少钱:c;while(c=0)cout 请输入正确的数字!endl;cout;cinc;money=money+c;cout 操作已成功!endl;cout 是否要继续该项操作:(Y/N)endl;cout;cinch;while(ch!=n&ch!=N&ch!=Y&ch!=y)cout;cinch;while(ch=y|ch=Y);void consumer:display()system(cls);cout*endl;cout*endl;cout*用户姓名:nameendl;cout*帐号:IDendl;cout*余额:moneyendl;cout*endl;void YH:exitYH()coutendl 感谢你对本银行储蓄管理系统的支持,欢迎下次光临!endl;exit(0);名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 7 页 -