#include <iostream> #include <string.h> #include <iomanip> #include <stdio.h> using namespace std; #define MAXACCOUNTNUMBER 20000 //银行中初始卡号 #define INITNUMBER 10001 //定义开户系统结构体 struct Account { long accNumber; //卡号 char accName[20]; //户名 char accPwd[10]; //密码 double balance; //余额 char flag[6]; //卡的状态 };//结构体结束符(切记,别漏掉!!!) //欢迎函数 void Welcome(); //登陆函数 void Denglu(); //主界面 void Mainmenu(); //选择函数 void Chose(); //退出函数 void Exit(); //开户函数 void OpenAnAccount(); //进入开户 void GoOpenAnAccount(); //存款函数 void Deposit(); //进入存款 void GoDeposit(); //改密函数 void ChangeCipher(); //进入改密 void GoChangeCipher(); //查询函数 void Query(); //进入查询 void GoQuery(); //取款函数 void Withdraw(); //进入取款 void GoWithdraw(); //销户函数 void CloseAnAccount(); //进入销户 void GoCloseAnAccount(); //校验密码必须是6-8位,而且是纯数字 bool isPassLegal(char pass[]); //输出指定卡的信息 void printAccount(Account acc); //根据卡号查找卡在数组中的下标 int searchAccount(long accNumber); //银行中所有卡 Account array[MAXACCOUNTNUMBER]; //银行中卡的数量(全局变量) int size=0; //生成银行中自增卡号 long autoCreament(); //定义全局变量用作密码、用户名 const char Mima[10]="admin"; const char Yonghuming[10]="admin"; int main() { Welcome(); Denglu(); return 0; } //欢迎界面 void Welcome() { cout<<"*********************************************"<<endl; cout<<"** **"<<endl; cout<<"** 欢迎使用储蓄综合业务平台 **"<<endl; cout<<"** V1.0版 **"<<endl; cout<<"*********************************************"<<endl; } //登陆系统 void Denglu() { int i; char str1[10],str2[10];//用于输入用户名和密码 cout<<"请输入用户名:"; cin>>str1;//输入用户名 if(strcmp(str1,Yonghuming)==0) { cout<<endl; cout<<"请输入登陆密码:"; cin>>str2; if(strcmp(str2,Mima)==0)//判断密码是否正确 { cout<<"*********************************************"<<endl; cout<<"** 欢迎登陆储蓄综合业务平台 **"<<endl; cout<<"*********************************************"<<endl; Mainmenu(); //正确,进入系统 } else { for(i=2;i>0;--i) { cout<<"密码错误,请重新输入:(您还有"<<i<<"次机会)";//密码不正确,三次输入机会,三次不正确,退出 cin>>str2; cout<<endl; if(strcmp(str2,Mima)==0) { cout<<"*********************************************"<<endl; cout<<"** 欢迎登陆储蓄综合业务平台 **"<<endl; cout<<"*********************************************"<<endl; Mainmenu(); break; } if(i==1)//三次没输正确 { cout<<"您连续三次输错密码,请到前台找回密码,谢谢合作!"; break; } } } } else { cout<<"该用户名不存在."<<endl; //用户名错误 Denglu();//重新返回登陆界面 } } //主菜单 void Mainmenu() { cout<<"*********************************************"<<endl; cout<<"** *1.开户 *4.改密 *0.退出 **"<<endl; cout<<"** *2.存款 *5.查询 **"<<endl; cout<<"** *3.取款 *6.销户 **"<<endl; cout<<"*********************************************"<<endl; Chose(); } //选择进入其他业务 void Chose() { int choice; cout<<"请输入您要进行的业务代号:";//输入选择 cin>>choice; if(choice>=0&&choice<=6) { switch(choice)//分别进入不同业务 { case 0: Exit(); break; case 1: OpenAnAccount(); break; case 2: Deposit(); break; case 3: Withdraw(); break; case 4: ChangeCipher(); break; case 5: Query(); break; case 6: CloseAnAccount(); break; } } else { cout<<"输入有误,请核实后重新输入!"<<endl;//输入有误 Mainmenu(); } } //开户界面 void OpenAnAccount() { cout<<"*********************************************"<<endl; cout<<"** 欢迎进入开户系统 **"<<endl; cout<<"*********************************************"<<endl; GoOpenAnAccount(); } //存款界面 void Deposit() { cout<<"*********************************************"<<endl; cout<<"** 欢迎进入存款系统 **"<<endl; cout<<"*********************************************"<<endl; GoDeposit(); } //取款界面 void Withdraw() { cout<<"*********************************************"<<endl; cout<<"** 欢迎进入取款系统 **"<<endl; cout<<"*********************************************"<<endl; GoWithdraw(); } //改密界面 void ChangeCipher() { cout<<"*********************************************"<<endl; cout<<"** 欢迎进入改密系统 **"<<endl; cout<<"*********************************************"<<endl; GoChangeCipher(); } //销户界面 void CloseAnAccount() { cout<<"*********************************************"<<endl; cout<<"** 欢迎进入销户系统 **"<<endl; cout<<"*********************************************"<<endl; GoCloseAnAccount(); } //查询界面 void Query() { cout<<"*********************************************"<<endl; cout<<"** 欢迎进入查询系统 **"<<endl; cout<<"*********************************************"<<endl; GoQuery(); } //退出界面 void Exit() { cout<<"*********************************************"<<endl; cout<<"**谢谢您使用储蓄综合业务平台,欢迎下次光临 **"<<endl; cout<<"*********************************************"<<endl; } //进入开户 void GoOpenAnAccount() { char pwd1[10]; char pwd2[10]; int j; cout<<"请输入户名:"; cin>>array[size].accName; cout<<"请输入密码:"; //输入并保存数据 cin>>pwd1; cout<<"请再次输入密码:"; cin>>pwd2; if(strcmp(pwd1,pwd2)==0)//strcmp的使用 { if(isPassLegal(pwd1))//密码合法 { strcpy(array[size].accPwd,pwd1);//strcpyd的使用 cout<<"请输入金额:"; cin>>array[size].balance; strcpy(array[size].flag,"正常");//*******记住 array[size].accNumber=autoCreament(); printAccount(array[size]); size++; cout<<"开户成功,按任意键返回..."; fflush(stdin); getchar(); Mainmenu();//返回主菜单 } else { cout<<"密码必须是纯数字,并且是6-8位"<<endl; GoOpenAnAccount(); } } else { cout<<"两次密码不一致!"; cout<<"是否继续进行开户?"<<endl; cout<<"继续请按1...返回主菜单请按其他数字键"; cin>>j; if(j==1) GoOpenAnAccount();//继续开户 else Mainmenu();//返回主菜单 } } //进入存款 void GoDeposit() { int j; long accNum;//存款的卡号 double money;//存款的金额 int pos; cout<<"请输入存款的卡号:"; cin>>accNum; pos=searchAccount(accNum); if(pos==-1) { //卡号有误 cout<<"卡号不存在!"<<endl; Mainmenu();//返回主菜单 }else { cout<<"请输入存款金额:"; cin>>money; //展示下存款前卡的信息 cout<<"存款前卡的信息:"<<endl; printAccount(array[pos]); //存款后的余额 array[pos].balance+=money; //展示存款后卡的信息 cout<<"存款后卡的信息:"<<endl; printAccount(array[pos]); cout<<"存款成功,按任意键返回..."; fflush(stdin); getchar(); Mainmenu();//返回主菜单 } } //进入取款 void GoWithdraw() { int j; long accNum;//取款的卡号 char accnum[10];//密码一定要定义成char数组,注意!!! double money;//取款的金额 int pos; cout<<"请输入取款的卡号:"; cin>>accNum; pos=searchAccount(accNum); if(pos==-1) { //卡号有误 cout<<"卡号不存在!"<<endl; Mainmenu();//返回主菜单 } else//卡号正确,进入 { cout<<"请输入密码:"; cin>>accnum;//输入密码 if(strcmp(array[pos].accPwd,accnum)==0) { cout<<"请输入取款金额:"; cin>>money; if(array[pos].balance<money) { cout<<"您的余额不足,无法取出!!!"<<endl; GoWithdraw(); } else { //展示下取款前卡的信息 cout<<"取款前卡的信息:"<<endl; printAccount(array[pos]); //取款后的余额 array[pos].balance-=money; //展示取款后卡的信息 cout<<"取款后卡的信息:"<<endl; printAccount(array[pos]); cout<<"取款成功,按任意键返回..."; fflush(stdin); getchar(); Mainmenu();//返回主菜单 } } else { cout<<"输入密码有误!"<<endl; cout<<"是否继续要进行取款?"<<endl; cout<<"继续请按1...返回主菜单请按其他数字键"; cin>>j; if(j==1) GoWithdraw();//继续取款 else Mainmenu();//返回主菜单 } } } //进入改密 void GoChangeCipher() { char pwd1[10]; char pwd2[10]; int j; long accNum;//要修改的账号 char accnum[10];//密码一定要定义成char数组,注意!!! int pos; cout<<"请输入您要修改密码的卡号:"; cin>>accNum; pos=searchAccount(accNum); if(pos==-1) { //卡号有误 cout<<"该卡号不存在!"<<endl; Mainmenu();//返回主菜单 } else//卡号正确,进入 { cout<<"请输入密码:"; cin>>accnum; //输入密码 if(strcmp(array[pos].accPwd,accnum)==0) { cout<<"请输入新密码:"; //输入并保存数据 cin>>pwd1; cout<<"请再次输入新密码:"; cin>>pwd2; if(strcmp(pwd1,pwd2)==0)//strcmp的使用 { if(isPassLegal(pwd1))//密码合法 { strcpy(array[pos].accPwd,pwd1);//strcpyd的使用 printAccount(array[pos]); cout<<"修改密码成功,按任意键返回..."; fflush(stdin); getchar(); Mainmenu();//返回主菜单 } else { cout<<"密码必须是纯数字,并且是6-8位"<<endl; GoChangeCipher(); } } else { cout<<"两次密码不一致!";//两次密码不一致 cout<<"是否继续进行改密?"<<endl; cout<<"继续请按1...返回主菜单请按其他数字键"; cin>>j; if(j==1) GoChangeCipher();//继续改密 else Mainmenu();//返回主菜单 } } else { cout<<"输入密码有误!"<<endl; cout<<"是否继续要进行改密?"<<endl; cout<<"继续请按1...返回主菜单请按其他数字键"; cin>>j; if(j==1) GoChangeCipher();//继续改密 else Mainmenu();//返回主菜单 } } } //进入销户 void GoCloseAnAccount() { int j,i; int pos; long CloseAccount;//销户的卡号 char accnum[10];//密码一定要定义成char数组,注意!!! cout<<"请输入您要销户的卡号:"; cin>>CloseAccount; pos=searchAccount(CloseAccount);//查找卡号 if(pos==-1) { //卡号有误 cout<<"该卡号不存在!"<<endl; Mainmenu();//返回主菜单 } else//卡号正确,进入 { cout<<"请输入密码:"; cin>>accnum;//输入密码 if(strcmp(array[pos].accPwd,accnum)==0) { cout<<"是否确认要进行销户?"<<endl; cout<<"继续请按1...返回主菜单请按其他数字键"; cin>>j; if(j==1)//确认销户 { array[pos].balance=0;//余额为零 strcpy(array[pos].flag,"销户");//状态为销户 printAccount(array[pos]);//打印 cout<<"销户成功,按任意键返回..."; fflush(stdin); getchar(); Mainmenu();//返回主菜单 } else { Mainmenu();//返回主菜单 } } else { cout<<"密码输入错误!"; cout<<"是否继续要进行销户?"<<endl; cout<<"继续请按1...返回主菜单请按其他数字键"; cin>>j; if(j==1) GoCloseAnAccount();//继续销户 else Mainmenu();//返回主菜单 } } } //进入查询 void GoQuery() { int j; long accNum;//查询的账号 char accnum[10];//密码一定要定义成char数组,注意!!! int pos; cout<<"请输入您要查询的卡号:"; cin>>accNum; pos=searchAccount(accNum); if(pos==-1) { //卡号有误 cout<<"该卡号不存在!"<<endl; Mainmenu();//返回主菜单 } else//卡号正确,进入 { cout<<"请输入密码:"; cin>>accnum;//输入密码 if(strcmp(array[pos].accPwd,accnum)==0) { cout<<"您的卡的信息为:"<<endl; printAccount(array[pos]); cout<<"查询成功,按任意键返回..."; fflush(stdin); getchar(); Mainmenu();//返回主菜单 } else { cout<<"输入密码有误!"<<endl; cout<<"是否继续要进行查询?"<<endl; cout<<"继续请按1...返回主菜单请按其他数字键"; cin>>j; if(j==1) GoQuery();//继续查询 else Mainmenu();//返回主菜单 } } } //判断密码是否规范 bool isPassLegal(char pass[]) { bool flag=true; int len=strlen(pass),i; if(len<9&&len>=6){ //满足6-8位 for(i=0;i<len;i++){ if(pass[i]<48||pass[i]>57){ flag=false; break; } } }else{ //不满足6-8位 flag=false; } return flag; } //生成银行中自增卡号 long autoCreament() { if(size==0) { return INITNUMBER; } else { return array[size-1].accNumber+1;//以前前一位户主的卡号加1作为新户主的卡号 } } //输出指定卡的信息 void printAccount(Account acc) { cout<<"+--------------------------------------------+"<<endl; cout<<"|"<<setiosflags(ios::left)<<setw(8)<<"卡号"<<"|"<<setw(8)<<"户名"<<"|"<<setw(8)<<"密码"<<"|"<<setw(8)<<"金额"<<"|"<<setw(8)<<"状态"<<"|"<<endl; cout<<"+--------------------------------------------+"<<endl; cout<<"|"<<setiosflags(ios::left)<<setw(8)<<acc.accNumber<<"|"<<setw(8)<<acc.accName<<"|"<<setw(8)<<acc.accPwd<<"|"<<setw(8)<<acc.balance<<"|"<<setw(8)<<acc.flag<<"|"<<endl; cout<<"+--------------------------------------------+"<<endl; } /*根据卡号查找卡的下标 * 若返回值>=0,卡号是正确 * 若返回值=-1,卡号有误 */ int searchAccount(long accNumber) { int i,pos=-1; for(i=0;i<size;i++) { if(array[i].accNumber==accNumber&&strcmp(array[i].flag,"销户")!=0) { //找到了这张卡 pos=i; break; } } return pos; }