银行项目

来源:互联网 发布:网络经营诽谤 编辑:程序博客网 时间:2024/04/28 05:15
#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]="xuewei";//字符串数组定义管理员姓名和密码const char pwd[20]="qiu421";void welcome();//欢迎界面void printaccount(account acc);//账号的表示long autocreament();//账号的累加void openaccount();//开户bool isPassLegal(char pass[]);//判断密码是否为6-8位纯数字void login();//登陆界面int searchaccount(long accnum);//寻找卡号为accnum的卡是否存在void deposit();//存款void withdraw();//取款void search();//查询void closeaccount();//销户void mainmenu();//主菜单int main(){welcome();//调用函数-欢迎界面login();//登陆mainmenu();//主菜单return 0;}void welcome(){cout<<"+-------------------------------------+"<<endl;cout<<"*                                     *"<<endl;cout<<"*                                     *"<<endl;cout<<"*     &  欢迎使用邱氏银行系统  &      *"<<endl;cout<<"*              v 1.0                  *"<<endl;cout<<"*                                     *"<<endl;cout<<"*                                     *"<<endl;cout<<"*-------------------------------------*"<<endl;}void login()//登录{char managername[20];char managerpwd[20];int errorcount=0;//密码输入错误的次数,三次之后自动退出。int i;for(i=0;i<3;i++){cout<<"请输入管理员账号:";cin>>managername;cout<<"请输入密码:";    cin>>managerpwd;if(strcmp(managername,name)==0 && strcmp(managerpwd,pwd)==0) //字符串数组运算法则{    mainmenu();            break;}else{errorcount++;//输错次数的累加if(errorcount!=3){cout<<"用户名或密码输入错误!请再输入一次:"<<endl;}else{cout<<"密码输入三次错误,退出系统!"<<endl;exit(0);//退出系统?}}}}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:closeaccount();        break;//销户case 3:deposit();    break;//存款case 4:  withdraw();break;//取款case 5:  search();break;//查询case 6:    exit(0);  //退出default:cout<<"您的选择有误!\n";   cout<<"按任意键继续……";   break;}}void openaccount()//开户{char pwd1[10],pwd2[10];//定义两个字符变量    cout<<"请输入户主姓名:";    cin>>array[size].accname;    cout<<"请输入密码:";cin>>pwd1;cout<<"请再次输入密码:";//输入两次密码cin>>pwd2;if(strcmp(pwd1,pwd2)==0){//只有两次输入一致才能进行就接下来的操作if(isPassLegal(pwd1)){    strcpy(array[size].accpwd,pwd1);        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();}}//判断密码是否为6-8位数码数字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;  }} //表示出卡的信息 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) { pos=i; break; } }    return pos;   }void deposit()//存款{long accnum;//存款的账号double money=0;//存款的金额,初始化int pos;cout<<"*****欢迎来到存款界面*****"<<endl;cout<<"请输入账号:";cin>>accnum;pos=searchaccount(accnum);if(pos==-1){//卡号有误cout<<"卡号有误,请重新输入:"<<endl;deposit();}else{//展示存款前卡的状态cout<<"存款前的信息为:"<<endl;    printaccount(array[pos]);cout<<"请输入存款金额:";    cin>>money;//已经找到了卡号所对应的卡array[pos].balance+=money;    //展示存款后卡的信息    printaccount(array[pos]);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<<"请输入账号:";cin>>accnum;cout<<"请输入密码:";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;break;}else{cout<<"对不起,您的余额不足,无法进行操作!"<<endl;}cout<<"请按任意键返回"<<endl;fflush(stdin);                getchar();                mainmenu();}else{cout<<"用户名或密码输入错误、请重新输入"<<endl;}}}//查询void search(){double accnum;char accpwd[20];int pos,i;cout<<"*****欢迎来到查询界面*****"<<endl;cout<<"请输入账号:";cin>>accnum;pos=searchaccount(accnum);if(pos>=0){for(i=0;i<3;i++){    cout<<"请输入密码:";    cin>>accpwd;if(strcmp(array[pos].accpwd,accpwd)==0)                //开户密码输两次、存款金额要是非负数{cout<<"卡的信息为:"<<endl;printaccount(array[pos]);break;}else{cout<<"密码输入错误,请重新输入"<<endl;}}fflush(stdin);                getchar();                mainmenu();}else{cout<<"您输入的卡不存在!请确认后重新输入"<<endl;}}void closeaccount()//销户{double accnum;char accpwd[20];int pos,i,j;cout<<"请输入账号:"<<endl;cin>>accnum;pos=searchaccount(accnum);if(pos==-1){//账号不存在cout<<"您输入的账号不存在!"<<endl;closeaccount();}else//账号存在,进入操作{        for(j=0;j<3;j++){cout<<"请输入密码:"<<endl;    cin>>accpwd;    if(strcmp(array[pos].accpwd,accpwd)==0){//展示卡的信息printaccount(array[pos]);cout<<"确认销户请按1,返回主菜单请按2。"<<endl;cin>>i;if(i==1){array[pos].balance=0;//余额记为0                strcpy(array[pos].flag,"销户");//状态记为“销户”printaccount(array[pos]);//展示销户后的状态cout<<"销户成功,按任意键返回"<<endl;fflush(stdin);                getchar();                mainmenu();}else{mainmenu();}}else{cout<<"密码输入错误、请重新输入"<<endl;}}}}

原创粉丝点击