银行系统(完结)
来源:互联网 发布:什么是内存整型数据 编辑:程序博客网 时间:2024/05/01 06:51
#include <iostream>#include<iomanip>#include<string.h>#include<stdlib.h>#include <stdio.h>using namespace std;//银行中最大的账户数量#define MAXACCOUNTNUMBER 20000//银行卡的开号初始值#define INITNUMBER 10001void welcome();//欢迎界面void login();//登陆void mainmenu();//主菜单void deposit();//存款void drawmoney();// 取款void showbalance();//查询void openAccount();//开户void closeAccount(); //销户struct Account{ long accNumber; //卡号 char accName[20]; //户主 char accPwd[10]; //密码 double balance; //余额 char flag[6]; //卡的状态};Account array[MAXACCOUNTNUMBER];//银行中所有卡int size=0;//银行中银行卡数量long autoCreament();//生成银行中自增卡号void printAccount(Account acc);//输出指定卡的信息int searchAccount(long accNumber);//根据卡号查找卡在数组中的下标int main(){ welcome();//欢迎界面 login();//登陆 return 0;}void welcome(){ cout<<" "<<"+---------------------------------------------+"<<endl; cout<<" "<<"| |"<<endl; cout<<" "<<"| 欢迎使用储蓄综合业务平台 |"<<endl; cout<<" "<<"| |"<<endl; cout<<" "<<"+---------------------------------------------+"<<endl;} void login(){ char name[20];//账户 char password[20];//密码 int i; for(i=0;i<3;i++) { cout<<"请输入账号:"; cin>>name; cout<<"请输入密码:"; cin>>password; if(strcmp(name,"liqiaoli")==0&&strcmp(password,"1103")==0)//判断账户名与密码是否一致 { mainmenu();//载入菜单 break; }else{ if(i==2) { cout<<"输入错误已达到三次,自动退出"<<endl; break; } cout<<"账号或密码错误"<<endl; } }}void mainmenu(){ char chooser;bool bExit = false;do{ cout<<" "<<"+-----------------------------------------------+"<<endl; cout<<" "<<"| 存款 请按1 开户 请按4 |"<<endl; cout<<" "<<"| 取款 请按2 销户 请按5 |"<<endl; cout<<" "<<"| 查询 请按3 退出 请按0 |"<<endl; cout<<" "<<"+--------------------------—-------------------+"<<endl; cout<<"请选择服务类型代码:"; cin>>chooser; switch(chooser){ case '1': deposit();break; case '2':drawmoney(); break; case '3':showbalance(); break; case '4':openAccount();break; case '5':closeAccount();break; case '0': cout<<"谢谢使用,欢迎您下次光临!"<<endl; exit(0); } }while(!bExit); return;}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 pwd1[10],pwd2[10]; cout<<"请输入户主:"; cin>>array[size].accName; cout<<"请输入密码:"; cin>>pwd1; cout<<"请再次输入密码:"; cin>>pwd2; //验证2次输入的密码是否一致 if(strcmp(pwd1,pwd2)==0){ //2次密码一致 if(isPassLegal(pwd1)){ //密码是合法 strcpy(array[size].accPwd,pwd1); cout<<"请输入金额:"; cin>>array[size].balance; cout<< strcpy(array[size].flag,"正常")<<endl; //写卡号 array[size].accNumber=autoCreament(); printAccount(array[size]); size++; bool isPassLegal(char pass[]); cout<<"开户成功,按任意键返回"<<endl; fflush(stdin); getchar(); mainmenu();}else{ cout<<"密码必须是纯数字,并且是6-8位"<<endl; openAccount(); } }else{ //2次输入的密码不一致 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(8)<<"卡号"<<setw(8)<<"|户主"<<setw(8)<<"|密码"<<setw(8)<<"|金额"<<setw(8)<<"|状态"<<"|"<<endl; cout<<" "<<setiosflags(ios::left)<<"+----------------------------------------+"<<endl; cout<<" "<<setiosflags(ios::left)<<"|"<<setw(8)<<acc.accNumber<<"|"<<setw(7)<<acc.accName<<"|"<<setw(7)<<acc.accPwd<<"|"<<setw(7)<<acc.balance<<"|"<<setw(7)<<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){ //找到了这张卡 pos=i; break; } } return pos;}//存款void deposit(){ long accNum;//存款的账号 double money;//存款的金额 int pos; cout<<"请输入存款的账号:"; cin>>accNum; cout<<"请输入存款金额:"; cin>>money; pos=searchAccount(accNum); if(pos==-1){ //卡号有误 cout<<"卡号不存在,请重新输入卡号"<<endl; //重新存款 deposit(); }else{ //展示下存款前卡的信息 cout<<"存款前卡的信息:"<<endl; printAccount(array[pos]); //找到了该卡号所对应的卡 array[pos].balance+=money; //展示存款后卡的信息 cout<<"存款后卡的信息:"<<endl; printAccount(array[pos]); cout<<"存款成功,按任意键返回"<<endl; fflush(stdin); getchar(); mainmenu(); } cout<<endl;}//取款void drawmoney(){ long accNum;//取款的账号 double money;//取款的金额 int pos; cout<<"请输入取款的账号:"; cin>>accNum; cout<<"请输入取款金额:"; cin>>money; pos=searchAccount(accNum); if(pos==-1){ //卡号有误 cout<<"卡号不存在,请重新输入卡号"<<endl; //重新取款 drawmoney(); }else{ //展示下取款前卡的信息 cout<<"取款前卡的信息:"<<endl; printAccount(array[pos]); //找到了该卡号所对应的卡 array[pos].balance-=money; //展示取款后卡的信息 cout<<"取款后卡的信息:"<<endl; printAccount(array[pos]); cout<<"取款成功,按任意键返回"<<endl; fflush(stdin); getchar(); mainmenu(); } cout<<endl;}//查询void showbalance(){long accNum;//查询的账号int pos; cout<<"请输入查询的账号:"; cin>>accNum;pos=searchAccount(accNum);if(pos==-1){ //卡号有误 cout<<"卡号不存在,请重新输入卡号"<<endl; //重新取款showbalance(); }else{ //找到了该卡号所对应的卡 //展示查询卡的信息 cout<<"查询卡的信息:"<<endl; printAccount(array[pos]); cout<<"查询成功,按任意键返回"<<endl; fflush(stdin); getchar(); mainmenu(); } cout<<endl;}//销户void closeAccount(){ long accNum;//销户的账号int pos;char password[20]; cout<<"请输入销户的账号:"; cin>>accNum;pos=searchAccount(accNum);if(pos==-1){ //卡号有误 cout<<"卡号不存在,请重新输入卡号"<<endl; //重新销户 closeAccount(); }else{ //找到了该卡号所对应的卡 cout<<"请输入密码:"; cin>>password; if(strcmp(array[pos].accPwd,password)==0){ array[pos].balance=0;//余额为零 strcpy(array[pos].flag,"销户");//状态为销户 printAccount(array[pos]);//打印 cout<<"销户成功,按任意键返回"; fflush(stdin); getchar(); mainmenu();//返回主菜单 } else { cout<<"输入密码有误,销户失败!"<<endl; } } }