银行系统
来源:互联网 发布:java交换两个字符变量 编辑:程序博客网 时间:2024/04/27 21:24
#include<iostream>#include<string.h>#include<stdio.h>#include<iomanip> //后面使用staw()需要用的定义using namespace std;//银行中最大的账户数量#define MAXACCOUNTNUMBER 20000 //自定义变量不需要“=”和“;”//银行卡的开号初始值#define INITNUMBER 10001 //一般自定义变量规范使用大写英文字母struct account //定义结构体变量{ long accnumber; //卡号 char accname[20]; //户主 char accpwd[10]; //密码 double balance; //余额 char flag[6]; //卡的状态};//银行中所有的卡account array[MAXACCOUNTNUMBER];//银行中卡的数量int size=0;const char name[20]="admin";//字符串数组定义管理员姓名和密码const char pwd[20]="admin";void welcome();//欢迎界面void printaccount(account acc);//账号的表示long autocreament();//账号的累加void openaccount();//开户bool isPassLegal(char pass[]);int searchAccount(long accNumber);//校验密码必须是6-8位,而且是纯数字void login();//登陆界面int searchaccount(long accnum);//寻找卡号为accnum的卡是否存在void deposit();//存款void withdraw();//取款void showbalance();//查询余额void closeAnAcount(); //销户void mainmenu();//主菜单int main(){ char loginName[20]; char loginPwd[20]; int i; //欢迎界面 welcome(); //.. for(i=0;i<3;i++) { cout<<"请输入用户名:"; cin>>loginName; cout<<"请输入密码:"; cin>>loginPwd; if(strcmp(loginName,"admin")==0&&strcmp(loginPwd,"admin")==0) { mainmenu(); break; }else{ cout<<"用户名或密码输入错误"<<endl; } } return 0;}void welcome(){cout<<"+-------------------------------------+"<<endl;cout<<"* *"<<endl;cout<<"* *"<<endl;cout<<"* & 欢迎使用胡氏银行系统 & *"<<endl;cout<<"* v1.0 *"<<endl;cout<<"* *"<<endl;cout<<"* *"<<endl;cout<<"*-------------------------------------*"<<endl;}void mainmenu()//主菜单{int chooser;cout<<"****************"<<endl;cout<<"* 1.开户 2.销户*"<<endl; cout<<"* 3.存款 4.取款*"<<endl;cout<<"* 5.查询 6.退出*"<<endl;cout<<"****************"<<endl;cout<<"请输入操作类型:";cin>>chooser;switch(chooser){case 1:openaccount();break; //开户case 2:closeAnAcount(); break;//销户case 3:deposit();break;//存款case 4: withdraw();break;//取款case 5: showbalance();break; //查询case 6:exit(0); //退出default:cout<<"您的选择有误!\n";cout<<"按任意键继续……";break;}}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;}void openaccount()//开户{char accpwd1[10],accpwd2[10]; cout<<"请输入户主姓名:"; cin>>array[size].accname; cout<<"请输入密码:"; cin>>accpwd1;cout<<"请再次输入密码:"; cin>>accpwd2; if(strcmp(accpwd1,accpwd2)==0){//二次密码一致if(isPassLegal(accpwd1)){//密码是合法strcpy(array[size].accpwd,accpwd1);cout<<"请输入金额:";cin>>array[size].balance;strcpy(array[size].flag,"正常");array[size].accnumber=autocreament();printaccount(array[size]);size++;cout<<"开户成功按任意键返回"<<endl;fflush(stdin);getchar();mainmenu();}else{cout<<"密码必须是纯数字,并且是6-8位。"<<endl;openaccount();}}else{//两次密码输入不一致cout<<"两次输入的密码不一致"<<endl;openaccount();}}long autocreament(){if(size==0){return INITNUMBER;}else{return array[size-1].accnumber+1;}}//表示出卡的信息void printaccount(account acc){cout<<"|---------------------------------------------------|"<<endl;cout<<setiosflags(ios::left)<<"|"<<setw(9)<<"卡号"<<setw(9)<<"户主"<<setw(9)<<"密码"<<setw(9)<<"金额"<<setw(9)<<"状态"<<"|"<<endl;cout<<setiosflags(ios::left)<<"|*-------------------------------------------------*|"<<endl;cout<<setiosflags(ios::left)<<"|"<<setw(9)<<acc.accnumber<<setw(9)<<acc.accname<<setw(9)<<acc.accpwd<<setw(9)<<acc.balance<<setw(9)<<acc.flag<<"|"<<endl;cout<<"|---------------------------------------------------|"<<endl;}/*根据卡号查找卡的下标* 若返回值>=0,卡号是正确* 若返回值=-1,卡号有误*/int searchaccount(long accnum)//寻找卡号为accnum的卡是否存在{int i,pos=-1;for(i=0;i<size;i++){if(array[i].accnumber==accnum&&strcmp(array[i].flag,"销户")!=0){pos=i;break;}} return pos; }void deposit()//存款{long accnum;//存款的账号double money=0;//存款的金额,初始化int pos;cout<<"*****欢迎来到存款界面*****"<<endl;cout<<"请输入账号:"<<endl;cin>>accnum; cout<<"请输入存款金额:"<<endl; cin>>money; pos=searchaccount(accnum);if(pos==-1){//卡号有误cout<<"卡号有误,请重新输入:"<<endl;deposit();}else if(strcmp(array[pos].flag,"正常")==0){ //展示下存款前卡的信息 cout<<"存款前卡的信息:"<<endl; printaccount(array[pos]); //找到了该卡号所对应的卡 array[pos].balance+=money;//展示存款后卡的信息 cout<<"存款后卡的信息:"<<endl; printaccount(array[pos]); cout<<"存款成功,按任意键返回"<<endl; fflush(stdin); getchar(); mainmenu(); }else{ //说明此卡片已经冻结 cout<<"卡号已冻结,请联系管理人员"<<endl; fflush(stdin); getchar(); mainmenu(); }}void withdraw()//取款{ long accnum;//取款的账号char accpwd[20];//账号的密码double money=0;//取款的金额,初始化int pos,i;cout<<"*****欢迎来到取款界面*****"<<endl;for(i=0;i<3;i++){cout<<"请输入账号:"<<endl;cin>>accnum;cout<<"请输入密码:"<<endl;cin>>accpwd;pos=searchaccount(accnum);if(pos>=0 && strcmp(array[pos].accpwd,accpwd)==0){cout<<"请输入取款金额:"<<endl;cin>>money;if(money<=array[pos].balance){cout<<"取款前卡的信息为:"<<endl;printaccount(array[pos]);//展示取款前卡的信息array[pos].balance-=money;cout<<"取款后卡的状态为:"<<endl;printaccount(array[pos]);//展示取款前后的信息cout<<"取款成功,按任意键返回:"<<endl;}else{cout<<"对不起,您的余额不足,无法进行操作!"<<endl;cout<<"按任意键返回"<<endl;}fflush(stdin);getchar();mainmenu();}else{cout<<"用户名或密码输入错误,系统自动退出!"<<endl;}}}void showbalance()//查询{ int pos; long accNum;cout<<"请输入你要查询的卡号:"<<endl;cin>>accNum;pos=searchaccount(accNum);if(pos==-1){ //卡号有误 cout<<"卡号不存在,请重新输入卡号:"<<endl; showbalance();}else{cout<<"你当前卡的信息为:"<<endl;printaccount(array[pos]);}cout<<"查询成功,按任意键返回:"<<endl;fflush(stdin);getchar();mainmenu();}//销户void closeAnAcount() { char pwd[10]; long accNum; int pos; cout<<"请输入销户的账号:"<<endl; cin>>accNum; pos=searchaccount(accNum); if(pos==-1) { //卡号有误 cout<<"卡号不存在,请重新输入卡号"<<endl; //... closeAnAcount(); } else { cout<<"请输入密码:"<<endl; cin>>pwd; if(strcmp(array[pos].accpwd,pwd)==0) { cout<<"密码正确!"<<endl; cout<<"销户信息如下:"<<endl; array[pos].balance=0; strcpy(array[pos].flag,"销户"); cout<<"销户已成功,按任意键返回!"<<endl; printaccount(array[pos]); fflush(stdin);//清除缓存区 getchar();//任意键返回 mainmenu();} else { cout<<"对不起,密码错误!请重新输入!"<<endl; closeAnAcount(); } } }
运行结果: