1、#include#include #include#includeusing namespace std;struct Clientchar name20; /姓名char ID_num20; /身份证号码char account20; /账号char password20; /密码double money; /金额bool IsLost; /是否挂失bool IsLock; /银行卡是否被锁定Client * link;Client(Client * ptr=NULL)link=ptr;Client(char n,char i,char a,char p,double m,bool Is,b
2、ool IL,Client * ptr=NULL) /构造函数strcpy_s(name,n);strcpy_s(ID_num,i);strcpy_s(account,a);strcpy_s(password,p);money=m;IsLost=Is;IsLock=IL;link=ptr;void Deposit() /存款 double m;coutnntt请输入存款金额:bbbbbbbbbbb;cinm;money=money+m;coutnntt*存 款 成 功 !*;coutendl;void Withdrawals() /取款double m;while(1)coutnntt请输入取
3、款金额:bbbbbbbbbbb;cinm;if(m0)if(moneym)coutnntt*对不起,您的余额不足*endl; elsemoney=money-m;coutnntt*交 易 成 功*;coutendl;break;else coutnntt*你输入的金额有误,请输入数值大于0的金额数!*endl;void ChangPassword() /修改密码char newPassword120,newPassword220;for(int i=0;i20;i+)newPassword1i=0;newPassword2i=0;while(1)coutnntt请输入新密码:bbbbbbbbb
4、bbbbbbbbbbb;cinnewPassword1;coutendl;coutnntt请再次输入密码:bbbbbbbbbbbbbbbbbbbb;cinnewPassword2;if(strcmp(newPassword1,newPassword2)=0)strcpy_s(password,newPassword1);coutnntt*密码修改成功!*endl;break;coutendl;coutnntt*两次输入的密码不一致,请重新输入!*;/* *打印分割行 */void printSeperatorLine(int FIELD_NUM,int FIELD_WIDTH)coutn;co
5、ut|;/FIELD_NUM定义为全局只读变量,表示用户信息域的数量,这里只有姓名,ID,账号,余额所以是4/FIELD_WIDTH定义为只读全局变量,用来控制输出显示表格中提供给每个域的宽度,这个可以根据自己显示器的宽度进行适当调整for(int k = 0; k FIELD_NUM; +k)for(int i = 0; i FIELD_WIDTH; +i)cout-;cout|;coutendl;void printHeadLine(int FIELD_WIDTH)cout|;/设置输出“姓名”长度为18,不够18个字符则用空格字符填补,设置为靠左对齐(没有居中对齐),如果超过18个字符,
6、那么会被截断为18个字符coutsetw(FIELD_WIDTH)setfill( )setiosflags(ios:left)姓名|;coutsetw(FIELD_WIDTH)setfill( )setiosflags(ios:left)ID|;coutsetw(FIELD_WIDTH)setfill( )setiosflags(ios:left)账号|;coutsetw(FIELD_WIDTH)setfill( )setiosflags(ios:left)余额|;/* *查询个人卡中信息 */void InquiryIndividual() int y=4,FIELD_WIDTH=18,x
7、=18;printSeperatorLine(y,x);printHeadLine(x);printSeperatorLine(y,x);cout|setw(FIELD_WIDTH)setfill( )setiosflags(ios:left)name|;coutsetw(FIELD_WIDTH)setfill( )setiosflags(ios:left)ID_num|;coutsetw(FIELD_WIDTH)setfill( )setiosflags(ios:left)account|;coutsetw(FIELD_WIDTH)setfill( )setiosflags(ios:left
8、)moneylink=NULL? true:false; /判断链表是否为空void CreatAccount(); /创建一个账号void UsersLogIn(); /用户登录void ReportTheLost(); /挂失银行卡void ResetPassword(); /重置密码void CancelUsers(); /注销用户void InquiryUsers(); /查询用户信息void Unlost(); /解除银行卡的挂失状态void UnLock(); /解除银行卡的锁定状态void Transfer(Client * &c1); /转账:从c1节点的客户转账到其他客户vo
9、id Menu(); /主菜单s;void system:makeEmpty() Client * q;while(first-link!=NULL)q=first-link;first-link=q-link;delete q;int system:Length()constClient * p=first-link;int count=0;while(p!=NULL)p=p-link;count+;return count;Client * system:Search(char h) /搜索与给定字符串相等的节点,返回节点地址,若没有搜索到,返回NULLClient * current=f
10、irst-link;while(current!=NULL)if(strcmp(h,current-account)=0)break;else current=current-link;return current;Client * system:Locate(int i)if(i0) return NULL;Client * current=first;int k=0;while(current!=NULL&klink;k+;return current;bool system:Append(char n,char i,char a,char p,double m,bool Is,bool
11、IL) /添加一个节点到链表尾端Client * newNode=new Client(n,i,a,p,m,Is,IL);last-link=newNode;newNode-link=NULL;last=last-link;return true;void system:CreatAccount() /创建一个客户账号信息,若账号重复,则需重新输入账号;若两次密码输入不一致,则需重新输入密码char n20;char r20;char a20;for(int i=0;i20;i+)ni=0;ri=0;ai=0;coutnntt请输入姓名:bbbbbbbbbbbbbbbbbbbb;cinn; /
12、输入姓名coutendl;coutnntt请输入ID号:bbbbbbbbbbbbbbbbbbbb;cinr; /输入ID号coutendl;while(1)coutnntt请输入账户号:bbbbbbbbbbbbbbbbbbbb;cina; /输入账户号Client * current1=Search(a); /在银行卡系统链表中搜索此账户,并判断链表中是否存在此账户if(current1!=NULL) coutnntt*该账号已存在,请重新输入账号!*bbbbbbb;else break;char Password120,Password220;for(int i=0;i20;i+)Passw
13、ord1i=0;Password2i=0;while(1)coutnntt请输入新密码:bbbbbbbbbbbbbbbbbbbb;cinPassword1;coutendl;coutnntt请再次输入密码:bbbbbbbbbbbbbbbbbbbb;cinPassword2;if(strcmp(Password1,Password2)=0)break;coutendl;coutnntt*两次输入的密码不一致,请重新输入*;double m=0.0;bool Is=false;bool IL=false;Append(n,r,a,Password1,m,Is,IL); /将用户信息收集之后,加入到
14、银行卡系统链表尾端保存coutnntt*创建账户成功!*bbbbbbb;coutendl;void system:UsersLogIn() /用户登录char LogInAccount20,LogInPassword20; for(int i=0;i20;i+)LogInAccounti=0;LogInPasswordi=0;coutnnt请输入账号:bbbbbbb;cinLogInAccount;coutIsLost=false) /账号未挂失if(current-IsLock=false) /账号未被锁定int LockCount=0; /客户每输入密码错误一次LockCount加一,当L
15、ockCount=3时,银行卡被锁定,不能登录,需解除锁定才能使用while(LockCount3)coutnnt请输入密码:bbbbbbb;cinLogInPassword;if(strcmp(LogInPassword,current-password)=0)break;else LockCount+; coutIsLock=true;coutnnt输入密码错误三次,您的账号已被封锁!bbbbbbb;elseint w;couttn; /客户菜单coutt| (1)存款 |n;coutt| (2)转账 |n;coutt| (3)取款 |n;coutt| (4)修改密码 |n;coutt|
16、(5)查询个人信息 |n;coutnntt 请选择操作(1-5):bb;cinw;switch(w)case 1:current-Deposit();break;case 2:Transfer(current);break;case 3:current-Withdrawals();break;case 4:current-ChangPassword();break;case 5:current-InquiryIndividual();break;else coutnnt您的账号密码输入错误已三次,禁止输入!bbbbbbbendl;else coutnnt您的账号已被挂失!bbbbbbbendl
17、;else coutnnt不存在此用户bbbbbbbendl;return;void system:ReportTheLost() /挂失银行卡,挂失后银行不能使用char LogInAccount20;for(int i=0;i20;i+)LogInAccounti=0;coutnnt请输入账号:bbbbbbb;cinLogInAccount;coutIsLost=true;coutnnt账号挂失成功!bbbbbbbendl;elsecoutnnt不存在此用户!bbbbbbbendl;return;void system:ResetPassword() /重置密码char LogInAcco
18、unt20;for(int i=0;i20;i+)LogInAccounti=0;coutnnt请输入账号:bbbbbbb;cinLogInAccount;coutendl;Client * current=Search(LogInAccount);if(current!=NULL)char newPassword120,newPassword220;for(int j=0;j20;j+)newPassword1j=0;newPassword2j=0;while(1)coutnnt请输入新密码:bbbbbbb;cinnewPassword1;coutendl;coutnnt请再次输入密码:bb
19、bbbbb;cinnewPassword2;if(strcmp(newPassword1,newPassword2)=0)strcpy_s(current-password,newPassword1);coutnnt密码重置成功!bbbbbbbendl;break;coutendl;coutnnt两次密码输入不一致,请重新输入!bbbbbbb;elsecoutnnt不存在此用户!bbbbbbbendl;return;void system:CancelUsers() /注销用户char LogInAccount20;for(int i=0;i20;i+)LogInAccounti=0;cout
20、nnt请输入账号:bbbbbbb;cinLogInAccount;coutlink;while(current!=NULL)if(strcmp(LogInAccount,current-account)=0)break;else current=current-link;p=p-link;if(current!=NULL)p-link=current-link;delete current;coutnnt注销用户成功!bbbbbbbendl;elsecoutnnt不存在此用户!bbbbbbbendl;return;void system:InquiryUsers() /查询用户信息char L
21、ogInAccount20;for(int i=0;i20;i+)LogInAccounti=0;coutnnt请输入账号:bbbbbbb;cinLogInAccount;coutprintSeperatorLine(y,x);cout|;/设置输出“姓名”长度为18,不够18个字符则用空格字符填补,设置为靠左对齐(没有居中对齐),如果超过18个字符,那么会被截断为18个字符coutsetw(FIELDWIDTH)setfill( )setiosflags(ios:left)姓名|;coutsetw(FIELDWIDTH)setfill( )setiosflags(ios:left)ID|;c
22、outsetw(FIELDWIDTH)setfill( )setiosflags(ios:left)账号|;coutsetw(FIELDWIDTH)setfill( )setiosflags(ios:left)余额|;coutsetw(FIELDWIDTH)setfill( )setiosflags(ios:left)IsLost|;coutsetw(FIELDWIDTH)setfill( )setiosflags(ios:left)IsLockprintSeperatorLine(y,x);cout|setw(FIELDWIDTH)setfill( )setiosflags(ios:left
23、)name|;coutsetw(FIELDWIDTH)setfill( )setiosflags(ios:left)ID_num|;coutsetw(FIELDWIDTH)setfill( )setiosflags(ios:left)account|;coutsetw(FIELDWIDTH)setfill( )setiosflags(ios:left)money|;coutsetw(FIELDWIDTH)setfill( )setiosflags(ios:left)IsLost|;coutsetw(FIELDWIDTH)setfill( )setiosflags(ios:left)IsLock
24、printSeperatorLine(y,x);elsecoutnnt不存在此用户!bbbbbbbendl;return;void system:Unlost() /解除银行卡的挂失状态char LogInAccount20;for(int i=0;i20;i+)LogInAccounti=0;coutnnt请输入账号:bbbbbbb;cinLogInAccount;coutIsLost=true)current-IsLost=false;coutnnt账号解除挂失成功!bbbbbbbendl;else coutnnt账号尚未挂失!bbbbbbbendl;elsecoutnnt不存在此用户!b
25、bbbbbbendl;return;void system:UnLock() /解除银行卡的锁定状态char LogInAccount20;for(int i=0;i20;i+)LogInAccounti=0;coutnnt请输入账号:bbbbbbb;cinLogInAccount;coutIsLock=true)current-IsLock=false;coutnnt账号解除锁定成功!bbbbbbbendl;else coutnnt账号尚未锁定!bbbbbbbendl;elsecoutnnt不存在此用户!bbbbbbbendl;return;void system:Transfer(Clie
26、nt * &c1) /转账char LogInAccount120,LogInAccount220;for(int i=0;i20;i+)LogInAccount1i=0;LogInAccount2i=0;while(1)coutnnt请输入需要转入的账号:bbbbbbb;cinLogInAccount1;coutnnt请再次输入需要转入的账号:bbbbbbb;cinLogInAccount2;if(strcmp(LogInAccount1,LogInAccount2)=0)break;else coutnnt两次账号输入不一致,请重新输入!bbbbbbbendl;coutendl;Clien
27、t * c2=Search(LogInAccount1);if(c2!=NULL)double output;while(1)coutnnt请输入需要转出的金额:bbbbbbb;cinoutput;if(output=0)coutnnt请输入金额大于0的数!bbbbbbbc1-money) cout您卡中当前余额为:money 余额不足!请重新输入!money=c1-money-output;c2-money=c2-money+output;coutnnt转账成功!bbbbbbbendl;elsecoutnnt不存在此用户!bbbbbbbendl;return;void system:Menu() /主菜单int v;coutnnnn;coutttn;coutendl;coutttn;couttt| (1)创建新用户 |n;couttt| (2)用户
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922