年终任务_银行系统

来源:互联网 发布:乒乓球赛事直播软件 编辑:程序博客网 时间:2024/05/22 18:29
/** 程序的版权和版本声明部分* Copyright (c)2012, 烟台大学计算机学院学生* All rightsreserved.* 文件名称: zhizhen.cpp* 作    者:纪子龙* 完成日期:2012年12月26日* 版本号: v1.0* 输入描述:无* 问题描述:无*/#include <iostream>#include <string.h>#include <stdio.h>#include <iomanip>using namespace std;#define MAXACCOUNTNUMBER 20000//银行中最大的账户数量#define INITNUMBER 10001;//银行卡的开号初始值int size=0;//银行中银行卡数量void work(); //工作菜单void openac();//开户long autoCreament();//账号自加void closeac();//销户int  searchAccount(long accNumber);//查找账号void withdraw();  //取款void despoit(); //存款void inq();//查询int wdpass(int n);//输账号的同时验证密码是否正确void transfer();//转账void welcome();//欢迎界面void changepassword();//修改密码void withdrawclac(int n);struct Account{    long accNumber;   //卡号    char accName[20]; //户主    char accPwd[10];  //密码    double balance;   //余额    char flag[6];     //卡的状态};Account array[MAXACCOUNTNUMBER];//银行中所有卡void printAccount(Account acc);//显示卡的信息int main(){welcome();    int i;char loginName[20];    char loginPwd[20];for(i=0;i<3;i++)    {        cout<<"请输入用户名:";        cin>>loginName;        cout<<"请输入密码:";        cin>>loginPwd;        if(strcmp(loginName,"admin")==0&&strcmp(loginPwd,"admin")==0)        {            work();            break;        }else{            cout<<"用户名或密码输入错误"<<endl;cout<<"这是您第"<<i+1<<"次输入错误,输错三次账号冻结"<<endl;        }    }    return 0;}void welcome(){int i;cout<<"+";for(i=0;i<30;i++)cout<<"-";cout<<"+"<<endl;for(i=0;i<3;i++){cout<<"|";for(i=0;i<30;i++){cout<<" ";}cout<<"|"<<endl;}cout<<"|  储  蓄  平  台  欢  迎  您  |"<<endl;for(i=0;i<3;i++){cout<<"|";for(i=0;i<30;i++){cout<<" ";}cout<<"|"<<endl;}cout<<"+";for(i=0;i<30;i++)cout<<"-";cout<<"+"<<endl;}void work(){    int n;cout<<"|------------------------------|"<<endl;cout<<"| 1. 开    户      2. 销    户 |"<<endl;cout<<"| 3. 存    款      4. 取    款 |"<<endl;cout<<"| 5. 查    询      6. 转    账 |"<<endl;cout<<"| 7. 修改密码      8. 退    出 |"<<endl;cout<<"|------------------------------|"<<endl;    cout<<"请输入要选择的功能代号"<<endl;    cin>>n;    if(n<0||n>9)    {        cout<<"输错不要着急"<<endl;fflush(stdin);getchar();work();}    switch(n){    case 8:        cout<<"谢谢您,欢迎下次再来"<<endl;        break;    case 1:        openac();  //开户        break;    case 2:        closeac();        break;    case 3:        despoit();        break;case 4:withdraw();        break;case 5:inq();break;    case 6:        transfer();        break;    case 7:         changepassword();         break;}    return ;}void openac()//开户{    cout<<"请输入户主:";    cin>>array[size].accName;    cout<<"请输入密码:";    cin>>array[size].accPwd;    cout<<"请输入金额:";    cin>>array[size].balance;    //    strcpy(array[size].flag,"正常");    array[size].accNumber=autoCreament();printAccount(array[size]);//展示卡的信息    size++;cout<<"开户成功,按任意键返回"<<endl;    fflush(stdin);    getchar();work();}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(8)<<acc.accName<<setw(8)<<acc.accPwd<<setw(8)<<acc.balance<<setw(8)<<acc.flag<<"|"<<endl;    cout<<"|----------------------------------------|"<<endl;}void closeac()//销户{long accNum;//销户的账号int pos,q;int n;cout<<"请输入要销户的账号:";    cin>>accNum;    pos=searchAccount(accNum);    if(pos==-1){        //卡号有误        cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;        //...closeac();}else{q=wdpass(pos);if(q==-1){cout<<"连续输错三次,账号已冻结"<<endl;}else{cout<<"是否将账号内的余额取出,是请输入1,否请输入2"<<endl;cin>>n;if(n==1){withdrawclac(pos);//取款strcpy(array[pos].flag,"销户");cout<<"销户成功,按任意键返回"<<endl;printAccount(array[pos]);fflush(stdin);getchar();work();}if(n==2)            {strcpy(array[pos].flag,"销户");cout<<"销户成功,按任意键返回"<<endl;printAccount(array[pos]);fflush(stdin);getchar();work();}}}return ;}void withdraw()//取款{long accNum;//取款的账号int money,pos;int q;cout<<"请输入取款的账号:";    cin>>accNum;    pos=searchAccount(accNum);    if(pos==-1){        //卡号有误        cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;        //...withdraw();}else{q=wdpass(pos);if(q==-1){cout<<"连续输错三次,账号已冻结"<<endl;}else{cout<<"请输入取款金额:";cin>>money;if(money>0){if(money>array[pos].balance){cout<<"余额不足"<<endl;cout<<"按任意键返回"<<endl;fflush(stdin);getchar();work();}else{cout<<"取款前卡的信息:"<<endl;printAccount(array[pos]);//找到了该卡号所对应的卡array[pos].balance-=money;//展示存款后卡的信息cout<<"取款后卡的信息:"<<endl;printAccount(array[pos]);cout<<"取款成功,按任意键返回"<<endl;fflush(stdin);getchar();work();}}else{cout<<"不要着急再输一次"<<endl;withdraw();}}}return ;}int  wdpass(int n){char password[10];int i,m=-1;for(i=1;i<4;i++){cout<<"请输入密码:";cin>>password;if(strcmp(array[n].accPwd,password)==0){return n;break;}else{cout<<"这是您第"<<i<<"次密码输入错误"<<endl;}}return m;}void inq()//查询{long accNum;//查询的账号int pos,q;cout<<"请输入要查询的账号:";    cin>>accNum;    pos=searchAccount(accNum);    if(pos==-1){        //卡号有误        cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;        //...inq();}else{q=wdpass(pos);if(q==-1){cout<<"您已连续输错3次密码无法查看该账号信息"<<endl;cout<<"按任意键返回"<<endl;fflush(stdin);getchar();work();}elseprintAccount(array[pos]);fflush(stdin);getchar();work();}return ;}int  searchAccount(long accNumber)//查找账号{int i,pos=-1;    for(i=0;i<size;i++){        if(array[i].accNumber==accNumber){if(strcmp(array[i].flag,"正常")==0){            //找到了这张卡            pos=i;            break;}else{            cout<<"该账户已销户"<<endl;}        }    }    return pos;}void despoit(){    long accNum;//存款的账号    int pos,type,days;    double money,rate,period,interest;  //存款的金额,利率,    cout<<"请输入存款的账号:";    cin>>accNum;    pos=searchAccount(accNum);    if(pos==-1){        //卡号有误        cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;        //...        despoit();    }else{cout<<"请输入存款金额:";cin>>money;if(money>=0){cout<<"1.活期存款:";cout<<"2.3个月:";cout<<"3.6个月:";cout<<"4.一年:";cout<<"5.两年:";cout<<"6.三年:";cout<<"7.五年:";cout<<"请选择存款类型:";cin>>type;switch(type){case 1:cout<<"请输入存款天数:";cin >> days;period = days/360.0;rate = 0.005;break;case 2:period = 0.25;rate = 0.031;break;case 3: period = 0.5;rate = 0.033;break;case 4: period = 1;rate = 0.035;break;case 5:  period = 2;rate = 0.044;break;case 6: period = 3;rate = 0.05;break;case 7: period = 5;rate = 0.055;break;}interest=money*rate*period;    cout << "到期利息为:" << interest << "元,本息合计共"<< interest + money <<"元。"<<endl;//展示下存款前卡的信息cout<<"存款前卡的信息:"<<endl;printAccount(array[pos]);//找到了该卡号所对应的卡array[pos].balance+=money;//展示存款后卡的信息cout<<"存款后卡的信息:"<<endl;printAccount(array[pos]);cout<<"存款成功,按任意键返回"<<endl;fflush(stdin);getchar();work();}else{cout<<"别着急再输一次"<<endl;despoit();}}return ;}void transfer(){long accNum1,accNum2;//取款的账号int money,pos1,pos2;int q;cout<<"请输入转款的账号:";    cin>>accNum1;    pos1=searchAccount(accNum1);    if(pos1==-1){        //卡号有误        cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;        //...transfer();}else{q=wdpass(pos1);if(q==-1){cout<<"连续输错三次,账号已冻结"<<endl;}else{cout<<"请输入转款金额:";cin>>money;if(money>array[pos1].balance){cout<<"余额不足"<<endl;cout<<"按任意键返回"<<endl;fflush(stdin);getchar();work();}else{cout<<"转款前卡的信息:"<<endl;printAccount(array[pos1]);cout<<"请输入要转入的账号"<<endl;cin>>accNum2;pos2=searchAccount(accNum2);if(pos2==-1){//卡号有误cout<<"卡号不存在,请重新输入卡号"<<endl;//...transfer();}else{array[pos1].balance-=money;array[pos2].balance+=money;cout<<"转出卡转款后的信息"<<endl;printAccount(array[pos1]);}}}}return ;}void changepassword(){long accNum;//修改密码的账号int pos;int q;char newpass1[10];char newpass2[10];cout<<"请输入修改密码的账号:";    cin>>accNum;    pos=searchAccount(accNum);    if(pos==-1){        //卡号有误        cout<<"卡号不存在,请重新输入卡号"<<endl;        //...changepassword();}else{q=wdpass(pos);if(q==-1){cout<<"连续输错三次,账号已冻结"<<endl;}else{cout<<"请输入新密码:";cin>>newpass1;cout<<"请再次输入刚刚输入的新密码:";cin>>newpass2;if(strcmp(newpass1,newpass2)==0){strcpy(array[pos].accPwd,newpass1);cout<<"修改后账号信息为"<<endl;printAccount(array[pos]);cout<<"修改密码成功,按任意键返回"<<endl;fflush(stdin);getchar();work();}else{cout<<"前后两次密码输入不一致"<<endl;    changepassword();}}}return ;}void   withdrawclac(int n){int money;cout<<"请输入取款金额:";cin>>money;if(money>0){if(money>array[n].balance){cout<<"余额不足"<<endl;cout<<"按任意键返回"<<endl;fflush(stdin);getchar();work();}else{cout<<"取款前卡的信息:"<<endl;printAccount(array[n]);//找到了该卡号所对应的卡array[n].balance-=money;//展示存款后卡的信息cout<<"取款后卡的信息:"<<endl;printAccount(array[n]);}}else{cout<<"不要着急再输一次"<<endl;withdrawclac(n);}return ;}

原创粉丝点击