/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者: 霍雨佳 * 完成日期:2013 年12月20日 * 版 本 号:v1.0 * 问题描述:银行系统。 * 样例输入: * 样例输出: * 问题分析:设计程序完成银行的各种基本功能。 */ #include <iostream> #include <cstdio> #include <conio.h> //getch头文件 #include <string.h> #include <iomanip> //setw头文件 #include <fstream>//操作文件必写 #include <cstdlib>//调用 exit(1)需要包含cstdlib using namespace std; #define MAXACCOUNTNUMBER 20000//银行中可开卡数量 struct Account //声明一个银行卡的类型(结构体) { long accNumber; //卡号 char accName[20]; //户主 char password[7]; //密码 double balance; //余额 char identity[19]; //身份证号 int state; //状态 0:正常 -1:挂失 -2:冻结 -3:销户 }; //银行中所有卡 Account array[MAXACCOUNTNUMBER]; //表示银行中已开卡的数量 int size=0; //银行卡的开号初始值 long initCardNum=100001; void openAccount(); //开户 void save(); //存款 void mainFrame(); //主界面 void getpass(char password[7]); //初始密码 void dlmima(); //客户登录密码 void take(); //取款 void search(); //查询 void cancel(); //销户 void denglu(); //工作人员登录密码 void gongzuoxm(); //工作人员登录姓名 void shenfen(char shenfen[19]); //身份证确认 void khshenfen(); //开户身份证号 void lose(); //挂失 void jiegua(); //解挂 void dongjie(); //冻结 void jiedong(); //解冻 int searchAccount(long accNumber);//找卡 void duchu(); //读文件 void shuru(); //读入文件 int main() { int name; cout<<"=================================="<<endl; cout<<"++ ++"<<endl; cout<<"++ 欢迎使用储蓄业务综合使用平台 ++"<<endl; cout<<"++ ++"<<endl; cout<<"=================================="<<endl; cout<<"请输入您的用户名"; //工作人员 cin>>name; denglu() ; //工作人员登录密码 duchu();//读文件 mainFrame(); //主界面 return 0; } void mainFrame()//主界面 { int order;//order 操作指令 cout<<"+----------------------------+"<<endl; cout<<"+ 开户 请按1 ++ 存款 请按2 +"<<endl; cout<<"+ 取款 请按3 ++ 查询 请按4 +"<<endl; cout<<"+ 销户 请按5 ++ 挂失 请按6 +"<<endl; cout<<"+ 冻结 请按7 ++ 解挂 请按8 +"<<endl; cout<<"+ 解冻 请按9 ++ 退出 请按10 +"<<endl; cout<<"+----------------------------+"<<endl; cout<<"请输入操作指令"<<endl; cin>>order; switch(order) { case 1: openAccount(); break; case 2: save(); break; case 3: take(); break; case 4: search(); break; case 5: cancel(); break; case 6: lose(); break; case 7: dongjie(); break; case 8: jiegua(); break; case 9: jiedong(); break; case 10: cout<<"欢迎下次使用"<<endl; break; default: break; } } void openAccount() { char password[7]="",password1[7]=""; cout<<"请输入户主姓名:"<<endl; cin>>array[size].accName; array[size].accNumber=initCardNum++; getpass(password); //密码*输入 cout<<"请确认密码"<<endl; getpass(password1); if (strcmp(password,password1)==0 ) { strcpy(array[size].password,password); } else { cout<<"两次输入密码不相同重新输入"<<endl; getpass(password); //密码*输入 cout<<"请确认密码"<<endl; getpass(password1); } khshenfen(); //身份证号*输入 cout<<"请输入金额:"<<endl; cin>>array[size].balance; array[size].state=0; cout<<setiosflags(ios::right); cout<<"+---------------------------------------------------+"<<endl; cout<<"+"<<setw(10)<<"卡号"<<"||"<<setw(10)<<"户主"<<"||"<<setw(10)<<"金额"<<"||"<<endl; cout<<"+---------------------------------------------------+"<<endl; cout<<"+"<<setw(10)<<array[size].accNumber<<"||"<<setw(10)<<array[size].accName<<"||"<<setw(10)<<array[size].balance<<"||"<<endl; cout<<"+---------------------------------------------------+"<<endl; cout<<"状态:"; switch(array[size].state) { case 0: cout<<"正常"<<endl; break; case -1: cout<<"挂失"<<endl; break; case -2: cout<<"冻结"<<endl; break; case -3: cout<<"销户"<<endl; break; default: break; } cout<<"+-------------------------------------------+"<<endl; cout<<"开户成功"<<endl; size++; shuru(); cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); //清空缓存区 getchar(); //使其在未输入前在该处暂时停留 mainFrame(); //主界面 } void getpass(char password[7]) //初始密码 { cout<<"请输入您的六位数密码"<<endl;//密码只能为数字 char ch; int i=0; while(i<6) { ch=getch(); if(ch>='0'&&ch<='9') { putch('*'); password[i]=ch; i++; } }shuru(); cout<<endl; return; } void khshenfen() //开户身份证号 { cout<<"请输入您的18位身份证号"<<endl;//密码只能为数字 cin>>array[size].identity; shuru(); } void dlmima(char pass[7]) //客户登陆密码 { int i=0;//num密码输入次数 char ch; while(i<6) { ch=getch(); if(ch>='0'&&ch<='9') { putch('*'); pass[i]=ch; i++; } } } void save() //存款 { int money,pos; //存款金额 long accNum; cout<<"请输入卡号"<<endl; cin>>accNum; pos=searchAccount(accNum); if(pos==-1)//确定卡的状态 { cout<<"卡号不存在,请重新选择您要办理的业务!"<<endl; mainFrame(); } else if(array[pos].state==0) { cout<<"请输入存款金额"<<endl; cin>>money; if(money>0) { array[pos].balance=array[pos].balance+money; shuru(); } else { cout<<"存款金额不能为负数"<<endl; array[pos].balance=array[pos].balance; } } else { cout<<"请确认该卡状态是否正常"<<endl; } cout<<"你的账户余额为:"<<array[pos].balance<<endl; cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); //清空缓存区 getchar(); //使其在未输入前在该处暂时停留 mainFrame();//主界面 } void take() //取款 { int money,pos,n; //取款金额 n为选择序号 long accNum; char pass[7]=""; //密码 cout<<"请输入卡号"<<endl; cin>>accNum; cout<<"请输入密码"<<endl; dlmima(pass); pos=searchAccount(accNum); if(pos==-1)//确定卡的状态 { cout<<"卡号不存在,请重新选择您要办理的业务!"<<endl; mainFrame(); } else if(array[pos].state==0) { if(strcmp(array[pos].password,pass)!=0) { cout<<"您输入的密码有误!"<<endl; cout<<"按3继续办理该业务,按其他数字键返回主界面!"; cin>>n; if(n==3) { take(); } else { mainFrame(); } } else { cout<<"请输入取款金额"<<endl; cin>>money; if(money> array[size].balance) { cout<<"取款金额大于原有金额"<<endl; } else { cout<<"请取走您的金额"<<endl; array[size].balance=array[size].balance-money; shuru(); } } } else { cout<<"请确认该卡状态是否正常"<<endl; } cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); //清空缓存区 getchar(); //使其在未输入前在该处暂时停留 mainFrame();//主界面 } void search() //查询 { int pos,n; // n为选择序号 long accNum; char pass[7]=""; //密码 cout<<"请输入卡号"<<endl; cin>>accNum; cout<<"请输入密码"<<endl; dlmima(pass); pos=searchAccount(accNum); if(pos==-1)//确定卡的状态 { cout<<"卡号不存在,请重新选择您要办理的业务!"<<endl; mainFrame(); } else if(array[pos].state==0) { if(strcmp(array[pos].password,pass)!=0) { cout<<"您输入的密码有误!"<<endl; cout<<"按4继续办理该业务,按其他数字键返回主界面!"; cin>>n; if(n==4) { search(); } else { mainFrame(); } } else { cout<<"您的账号余额为:"; cout<<array[pos].balance; cout<<endl; } } else { cout<<"请确认该卡状态是否正常"<<endl; } cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); //清空缓存区 getchar(); //使其在未输入前在该处暂时停留 mainFrame();//主界面 } void cancel() //销户 { int pos,n; // n为选择序号 long accNum; char pass[7]=""; //密码 cout<<"请输入卡号"<<endl; cin>>accNum; cout<<"请输入密码"<<endl; dlmima(pass); pos=searchAccount(accNum); if(pos==-1)//确定卡的状态 { cout<<"卡号不存在,请重新选择您要办理的业务!"<<endl; mainFrame(); } else if(array[pos].state==0) { if(strcmp(array[pos].password,pass)!=0) { cout<<"您输入的密码有误!"<<endl; cout<<"按5继续办理该业务,按其他数字键返回主界面!"; cin>>n; if(n==5) { cancel(); } else { mainFrame(); } } else { array[pos].balance=0; array[pos].state=-3; shuru(); } } else { cout<<"请确认该卡状态是否正常"<<endl; } cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); //清空缓存区 getchar(); //使其在未输入前在该处暂时停留 mainFrame();//主界面 } void gongzuoxm() //工作人员登录姓名 { string name1,name2="123"; cout<<"请输入您的用户名"; cin>>name1;//用string型时,直接输入即可 if(name1!=name2) { cout<<"用户名输入有误"<<endl; gongzuoxm() ; } } void denglu() //工作人员登录密码 { string pass1,pass="123456"; cout<<"请输入您的六位数密码"; cin>>pass1;//用string型时,直接输入即可 if(pass!=pass1) { cout<<"密码输入有误"<<endl; denglu() ; } } void lose() //挂失 { int pos,n; // n为选择序号 long accNum; char pass[7]=""; //密码 cout<<"请输入卡号"<<endl; cin>>accNum; cout<<"请输入密码"<<endl; dlmima(pass); pos=searchAccount(accNum); if(pos==-1)//确定卡的状态 { cout<<"卡号不存在,请重新选择您要办理的业务!"<<endl; mainFrame(); } else if(array[pos].state==0) { if(strcmp(array[pos].password,pass)!=0) { cout<<"您输入的密码有误!"<<endl; cout<<"按6继续办理该业务,按其他数字键返回主界面!"; cin>>n; if(n==6) { lose(); } else { mainFrame(); } } else { array[pos].state=-1;//挂失 shuru(); cout<<"挂失成功"<<endl; } } else { cout<<"请确认该卡状态是否正常"<<endl; } cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); //清空缓存区 getchar(); //使其在未输入前在该处暂时停留 mainFrame();//主界面 } void dongjie() //冻结 { int pos,n; // n为选择序号 long accNum; char pass[7]=""; //密码 cout<<"请输入卡号"<<endl; cin>>accNum; cout<<"请输入密码"<<endl; dlmima(pass); pos=searchAccount(accNum); if(pos==-1)//确定卡的状态 { cout<<"卡号不存在,请重新选择您要办理的业务!"<<endl; mainFrame(); } else if(array[pos].state==0) { if(strcmp(array[pos].password,pass)!=0) { cout<<"您输入的密码有误!"<<endl; cout<<"按6继续办理该业务,按其他数字键返回主界面!"; cin>>n; if(n==6) { dongjie(); } else { mainFrame(); } } else { array[pos].state=-2;//冻结 shuru(); cout<<"冻结成功"<<endl; } } else { cout<<"请确认该卡状态是否正常"<<endl; } cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); //清空缓存区 getchar(); //使其在未输入前在该处暂时停留 mainFrame();//主界面 } void jiedong() //解冻 { int pos,n; // n为选择序号 long accNum; char pass[7]=""; //密码 cout<<"请输入卡号"<<endl; cin>>accNum; cout<<"请输入密码"<<endl; dlmima(pass); pos=searchAccount(accNum); if(pos==-1)//确定卡的状态 { cout<<"卡号不存在,请重新选择您要办理的业务!"<<endl; mainFrame(); } else if(array[pos].state==0) { if(strcmp(array[pos].password,pass)!=0) { cout<<"您输入的密码有误!"<<endl; cout<<"按9继续办理该业务,按其他数字键返回主界面!"; cin>>n; if(n==9) { jiedong(); } else { mainFrame(); } } else { array[pos].state=0; shuru(); cout<<"解冻成功"<<endl; } } else { cout<<"请确认该卡状态是否正常"<<endl; } cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); //清空缓存区 getchar(); //使其在未输入前在该处暂时停留 mainFrame();//主界面 } void jiegua() //解挂 { int pos,n; // n为选择序号 long accNum; char pass[7]=""; //密码 cout<<"请输入卡号"<<endl; cin>>accNum; cout<<"请输入密码"<<endl; dlmima(pass); pos=searchAccount(accNum); if(pos==-1)//确定卡的状态 { cout<<"卡号不存在,请重新选择您要办理的业务!"<<endl; mainFrame(); } else if(array[pos].state==0) { if(strcmp(array[pos].password,pass)!=0) { cout<<"您输入的密码有误!"<<endl; cout<<"按8继续办理该业务,按其他数字键返回主界面!"; cin>>n; if(n==8) { jiegua(); } else { mainFrame(); } } else { array[pos].state=0; shuru(); cout<<"解挂成功"<<endl; } } else { cout<<"请确认该卡状态是否正常"<<endl; } cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); //清空缓存区 getchar(); //使其在未输入前在该处暂时停留 mainFrame();//主界面 } int searchAccount(long accNumber)//找卡 { int i,pos=-1; for(i=0; i<size; i++) { if(array[i].accNumber==accNumber&&array[i].state!=-2) { pos=i;//找到了这张卡 break; } } return pos; //返回下标 } void duchu() //读文件 { ifstream infile("f1.txt",ios::in); if(!infile) { cerr<<"open error!"<<endl; exit(1); } while(infile>>array[size].accNumber>>array[size].accName>>array[size].password>>array[size].balance>>array[size].identity>>array[size].state) { size++; } if(size==0) { initCardNum=100001; }else{ initCardNum=array[size-1].accNumber+1; } infile.close(); } void shuru() //读入文件 { int i; ofstream outfile("f1.txt",ios::out); if(!outfile) { cerr<<"open error!"<<endl; exit(1); } else { for(i=0;i<size;i++) outfile<<array[i].accNumber<<" "<<array[i]. accName<<" "<<array[i].password<<" "<<array[i].balance<<" "<<array[i].identity<<" "<<array[i].state<<endl; } outfile.close(); }
运行结果:
(*^__^*) 嘻嘻……
这是本学期做的最大的一个项目了,现在能发成博文,内心无比的激动以及兴奋~~~
这个项目可真是历经波折才完成的啊!这是这学期心血的结晶了吧,好像学的知识都用上了,O(∩_∩)O哈哈~
加油加油↖(^ω^)↗