银行系统(技术支持课)(做了好久啊!请大家看看还有什么不足之处)
/* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作者:樊露露 * 完成日期:2012 年12月26日 * 版本号:v1.0 * * 输入描述:无 * 问题描述:银行系统 * 程序输出:银行各种业务* 问题分析: * 算法设计:略 */ #include <iostream>#include <string.h>#include <stdio.h>#include <iomanip>using namespace std;//银行中最大的账户数量#define MAXACCOUNTNUMBER 20000//银行卡的开号初始值#define INITNUMBER 10001struct Account{ long accNumber; //卡号 char accName[20]; //户主 char accPwd[10]; //密码 double balance; //余额 char flag[6]; //卡的状态};//银行中所有卡Account array[MAXACCOUNTNUMBER];//银行中银行卡数量int size=0;//欢迎界面void welcome();//主界面void mainFrame();//生成银行中自增卡号long autoCreament();//开户void openAccount();//存款(活期)void deposit();//存款(死期)void Deposit();//存款类型void depositmodle();//取款void withdraw();//查询void search();//修改密码void updatePassword();//转账void transferAccounts();//销户void close();//输出指定卡的信息void printAccount(Account acc);//根据卡号查找卡在数组中的下标int searchAccount(long accNumber);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) { mainFrame(); break; }else{ cout<<"用户名或密码输入错误"<<endl; } } return 0;}void welcome(){ cout<<"+----------------------------------+"<<endl; cout<<"+**********************************+"<<endl; cout<<"|-------欢迎登陆银行系统-----------|"<<endl; cout<<"+**********************************+"<<endl; cout<<"+----------------------------------+"<<endl;}void mainFrame(){ int order; cout<<"|----------------------------|"<<endl; cout<<"|-------1.开户---------------|"<<endl; cout<<"|-------2.存款(活期)-------|"<<endl; cout<<"|-------3.存款(死期)-------|"<<endl; cout<<"|-------4.取款---------------|"<<endl; cout<<"|-------5.销户---------------|"<<endl; cout<<"|-------6.查询---------------|"<<endl; cout<<"|-------7.转账---------------|"<<endl; cout<<"|-------8.修改密码-----------|"<<endl; cout<<"|-------9.退出---------------|"<<endl; cout<<"|----------------------------|"<<endl; cout<<"请输入操作指令"<<endl; cin>>order; switch(order){ case 1: openAccount(); break; case 2: deposit(); break; case 3: Deposit(); break; case 4: withdraw(); break; case 5: close(); break; case 6: search(); break; case 7: transferAccounts(); break; case 8: updatePassword(); break; case 9: break; default: break; }}//开户void openAccount(){ char arr[10]; cout<<"请输入户主:"; cin>>array[size].accName; cout<<"请输入密码:"; cin>>array[size].accPwd; cout<<"请再次输入密码:"; cin>>arr; if(strcmp(arr,array[size].accPwd)==0){ cout<<"两次密码输入一致,请继续。"<<endl; cout<<"请输入金额:"; cin>>array[size].balance; //.. strcpy(array[size].flag,"正常"); //写卡号 array[size].accNumber=autoCreament(); printAccount(array[size]); size++; cout<<"开户成功,按任意键返回"<<endl; }else{ cout<<"两次密码输入不一致,请再次输入:"<<endl; openAccount(); } fflush(stdin); getchar(); mainFrame(); cout<<"请输入操作指令:";}//账号自加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;}/*根据卡号查找卡的下标* 若返回值>=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,i=0,num; cout<<"请输入存款的账号:"; cin>>accNum; pos=searchAccount(accNum); if(pos==-1){ //卡号有误 cout<<"卡号不存在,请重新输入卡号"<<endl; //... deposit(); }else{ //展示下存款前卡的信息 cout<<"请确认存款前的银行卡信息,若正确请按1,错误请按2:"<<endl; printAccount(array[pos]); cin>>num; if(num==1&&strcmp(array[pos].flag,"正常")==0){ cout<<"请输入存款金额:"; cin>>money; //找到了该卡号所对应的卡 array[pos].balance+=money; //展示存款后卡的信息 cout<<"存款后卡的信息:"<<endl; printAccount(array[pos]); cout<<"存款成功,按任意键返回"<<endl; fflush(stdin); getchar(); mainFrame(); }else{ cout<<"此账户处于异常状态,禁止存款!"; cout<<"按任意键退出:"; fflush(stdin); getchar(); mainFrame(); cout<<"请输入操作指令:"; } }}//存款(死期)void Deposit(){ char arr[10]; int t; cout<<"请输入户主:"; cin>>array[size].accName; cout<<"请输入密码:"; cin>>array[size].accPwd; cout<<"请再次输入密码:"; cin>>arr; if(strcmp(array[size].accPwd,arr)==0){ cout<<"两次密码输入一致,请继续。"<<endl; depositmodle(); cout<<"请您输入存款代号(1-6):"; cin>>t; if(t>=7){ cout<<"选择存款类型错误!请重新选择."; depositmodle(); }else{ cout<<"请存款输入金额:"; cin>>array[size].balance; switch(t){ case 1: strcpy(array[size].flag,"3个月"); array[size].accNumber=autoCreament(); printAccount(array[size]); break; case 2: strcpy(array[size].flag,"6个月"); array[size].accNumber=autoCreament(); printAccount(array[size]); break; case 3: strcpy(array[size].flag,"一年"); array[size].accNumber=autoCreament(); printAccount(array[size]); break; case 4: strcpy(array[size].flag,"二年"); array[size].accNumber=autoCreament(); printAccount(array[size]); break; case 5: strcpy(array[size].flag,"三年"); array[size].accNumber=autoCreament(); printAccount(array[size]); break; case 6: strcpy(array[size].flag,"五年"); array[size].accNumber=autoCreament(); printAccount(array[size]); break; default: break; } } //写卡号 size++; cout<<"存款成功,按任意键返回"<<endl; }else{ cout<<"两次密码输入不一致!请重新输入!"<<endl; openAccount(); } fflush(stdin); getchar(); mainFrame(); cout<<"请输入操作指令:";}//取款void withdraw(){ long account; char password[10]; int pos,i; double money; cout<<"-----欢迎来到取款页面-----"<<endl; for(i=0;i<3;i++) { cout<<"请输入账号:"; cin>>account; cout<<"请输入密码:"; cin>>password; pos=searchAccount(account); if(strcmp(array[pos].flag,"正常")==0) { if(pos>=0&&strcmp(password,array[pos].accPwd)==0) { cout<<"请输入取款金额:"; cin>>money; if(money<=array[pos].balance) { cout<<"取款前卡的信息:"<<endl; printAccount(array[pos]); array[pos].balance-=money; cout<<"取款后卡的信息:"<<endl; printAccount(array[pos]); } else { cout<<"卡内余额不足!按任意键返回!"; } fflush(stdin); getchar(); mainFrame(); cout<<"请输入操作指令:"; }else{ cout<<"用户名或密码输入错误"<<endl; } } else { cout<<"此账号处于异常状态,不能进行此操作!"; cout<<"按任意键退出!"; fflush(stdin); getchar(); mainFrame(); cout<<"请输入操作指令:"; } }}//查询void search(){ long account; char password[10]; int i,pos; cout<<"-----欢迎来到查询页面-----"<<endl; for(i=0;i<3;i++) { cout<<"请输入账号:"; cin>>account; cout<<"请输入密码:"; cin>>password; pos=searchAccount(account); if(strcmp(array[pos].flag,"正常")==0) { if(pos>=0&&strcmp(password,array[pos].accPwd)==0) { cout<<"您的银行卡信息为:"<<endl; printAccount(array[pos]); fflush(stdin); getchar(); mainFrame(); cout<<"请输入操作指令:"; } else{ cout<<"用户名或密码输入错误"<<endl; } } else { cout<<"此账号处于异常状态,不能进行此操作!"; cout<<"按任意键退出!"; fflush(stdin); getchar(); mainFrame(); cout<<"请输入操作指令:"; cout<<""; } }}//存款类型void depositmodle(){ cout<<"=====存款期限====="<<endl; cout<<"1. 3个月"<<endl; cout<<"2. 6个月"<<endl; cout<<"3. 一年"<<endl; cout<<"4. 二年"<<endl; cout<<"5. 三年"<<endl; cout<<"6. 五年"<<endl;}//修改密码void updatePassword(){ long account; char password[10],pwd1[10],pwd2[10]; int i,pos; cout<<"-----欢迎来到修改密码页面-----"<<endl; for(i=0;i<3;i++) { cout<<"请输入账号:"; cin>>account; cout<<"请输入密码:"; cin>>password; pos=searchAccount(account); if(strcmp(array[pos].flag,"正常")==0) { if(pos>=0&&strcmp(password,array[pos].accPwd)==0) { cout<<"请输入新密码:"; cin>>pwd1; cout<<"请确认新密码:"; cin>>pwd2; if(strcmp(pwd1,pwd2)==0){ strcpy(array[pos].accPwd,pwd1); cout<<"密码修改成功!按任意键退出!"<<endl; printAccount(array[pos]); break; } else{ cout<<"两次密码输入不一致,请重新输入。"; } } else{ cout<<"用户名或密码输入错误"<<endl; } } else { cout<<"此账号处于异常状态,不能进行此操作!"; cout<<"按任意键退出!"; } } fflush(stdin); getchar(); mainFrame(); cout<<"请输入操作指令:";}//转账void transferAccounts(){ long Account1,Account2; char password[10]; int pos1,pos2,i,num; double money; cout<<"请输入账号:"; cin>>Account1; for(i=0;i<3;i++) { cout<<"请输入密码:"; cin>>password; pos1=searchAccount(Account1); if(strcmp(array[pos1].flag,"正常")==0) { if(pos1>=0&&strcmp(password,array[pos1].accPwd)==0) { cout<<"请输入对方账号:"; cin>>Account2; pos2=searchAccount(Account2); if(pos2==-1) { cout<<"对方账户不存在!请重新输入!"; } else { cout<<"请确认对方账户是否正确,若正确请按1,否则按2:"<<endl; cout<<"|------------------------|"<<endl; cout<<setiosflags(ios::left)<<"|"<<setw(8)<<"卡号"<<setw(8)<<"户主"<<setw(8)<<"状态"<<"|"<<endl; cout<<setiosflags(ios::left)<<"+------------------------+"<<endl; cout<<setiosflags(ios::left)<<"|"<<setw(8)<<array[pos2].accNumber<<setw(8)<<array[pos2].accName<<setw(8)<<array[pos2].flag<<"|"<<endl; cout<<"|------------------------|"<<endl; cin>>num; if(num==2) { cout<<"按任意键退出!"; break; } else { cout<<"请输入转账金额:"; cin>>money; if(money<=array[pos1].balance) { array[pos1].balance-=money; array[pos2].balance+=money; cout<<"转账成功,按任意键退出!"; printAccount(array[pos1]); break; } else { cout<<"您的余额不足,转账失败!按任意键退出!"; break; } } } } else { cout<<"您输入密码或账号有误,请重新输入:"; } } else { cout<<"此账号处于异常状态,不能进行此操作!"; cout<<"按任意键退出!"; } } fflush(stdin); getchar(); mainFrame(); cout<<"请输入操作指令:";}//销户void close(){ long Account; char password[10]; int pos,i; cout<<"请输入要销户的账号:"; cin>>Account; pos=searchAccount(Account); for(i=0;i<3;i++) { cout<<"请输入密码:"; cin>>password; if(pos>=0&&strcmp(password,array[pos].accPwd)==0) { array[pos].balance=0; strcpy(array[pos].flag,"销户"); printAccount(array[pos]); break; } else { cout<<"密码或账号错误,请重新输入!"; } } fflush(stdin); getchar(); mainFrame(); cout<<"请输入操作指令:";}