银行储蓄系统
2015-07-18 10:22
351 查看
bank.cpp
bank.h
user.cpp
user.h
staff.cpp
staff.h
运行结果:
业务员登录:
开户:
存款:
取款:
查询:
转账:
挂失:
解挂:
改密:
业务查询:
总结心得:
在调试过程中,对这些五花八门的错误又有了新的认识,好多错误是之前没有见过的,这么大的程序只能一点一点的自己去调试,去找大神帮忙。其实还有很多功能没有实现,对用户界面的实现其实我是很有兴趣的,但是实在没时间去研究了。
/************************************************************* * 版权所有:(C)2015,烟台大学计算机与控制工程学院 * * 文件名称:bank.cpp * 文件标识:无 * 内容摘要:用户登录时的功能选择 * 其它说明:无 * 当前版本:v1.0 * 作者:曾晓 * 完成日期:2015 7 17 * * 修改记录: / * 修改日期:/ * 版本号:v1.0 * 修改人:曾晓 * 修改内容:创建 /***************************************************************/ #include <iostream> #include <cstdlib> #include <cmath> #include <stdio.h> #include <fstream> #include <string> #include <time.h> #include "staff.h" #include "bank.h" using namespace std; static long ywnum=10000000; /*********************************************** * 功能描述:输入符合条件的密码(密码为6位数字并且不能为0) * 输入参数:int iPass * 输出参数:char ch * 返回值:iPass * 其它说明:/ /***********************************************/ int inputPassword() { char ch; //接收字符形式密码 int iPass=0; //要转换为数字 int i; while(1) { for(i=0; i<6; i++) { ch=getch(); //输入但不显示 putchar('*'); //输出* if(isdigit(ch)) iPass=iPass*10+(ch-'0'); else { iPass=0; break; //退出for循环后,再次接受 } } fflush(stdin); //清除键盘缓存区中已经有的输入 cout<<endl;; if(iPass==0) //此条件成立可能由两种情况引起:输入了非数字字符被直接重置为0,或6位全0后正常退出for循环 { cout<<"密码要求全为数字,且不能全0!"<<endl;; cout<<"请重新输入密码: "; } else break; } return iPass; } /********************************************************************************************* * 功能描述:业务员账号登录 * 输入参数:业务员账户acc,密码ch * 输出参数:业务员登录成功或失败 * 其它说明:读取staff.txt,按照预先存储的账户和密码,若三次用户名或密码错误,系统强制退出 /*********************************************************************************************/ bool Bank::passtaff() { Staff s1; string acc; char ch; cout<<"请输入业务员账户:"; cin>>acc; for(int j=0; j<3; ++j) { int pw=0; cout<<"请输入密码:"; for(int i=0; i<6; i++) { ch=getch(); //输入但不显示 putchar('*'); //输出* pw=pw*10+(ch-'0'); } if(s1.pass(acc,pw)) { return true; } else { cout<<"\n用户名或密码错误。"<<endl; } } cout<<"\n错误三次,系统自动退出。"<<endl; return false; } /************************************************** * 功能描述:显示功能选择界面 * 输入参数:/ * 输出参数:/ * 其它说明:/ /**************************************************/ void Bank::showMenu()//显示菜单 { cout<<"+----------------------------+"<<endl; cout<<"+ 1.开户 2.销户 3.存款 +"<<endl; cout<<"+ 4.取款 5.查询 6.转账 +"<<endl; cout<<"+ 7.挂失 8.解挂 9.改密 +"<<endl; cout<<"+ 10.业务查询 +"<<endl; cout<<"+ 0.退出 +"<<endl; cout<<"+----------------------------+"<<endl; cout<<endl; } /****************************************************** * 功能描述:输入操作指令,开始工作 * 输入参数:操作指令 * 输出参数:/ * 其它说明:/ /******************************************************/ void Bank::Choice() //开始工作 { int order=1; do { if(order==0) exit(1); openfile(); reading(); cout<<"请输入操作指令:"; cin>>order; switch(order) { case 1: openAccount();//开户 break; case 2: cancelAccount();//销户 break; case 3: save();//存款 break; case 4: withdraw();//取款 break; case 5: showAccount();//查询余额 break; case 6: transferAccount();//转账 break; case 7: reportLoss();//挂失 break; case 8: cancelLoss();//解挂 break; case 9: updatePassword();//改密 break; case 10: refer();//业务查询 break; case 0: cout<<"感谢您的光临,欢迎您再来!"<<endl; } savefile(); } while(1); } /*************************************************************************************************** * 功能描述:开户 * 输入参数:账户 acc,姓名 nam,身份证号码 id,家庭住址 add,电话号码 pho,密码 pass,存入金额 mon. * 输出参数:开户成功的提示语句以及流水账号 * 其它说明:/ /****************************************************************************************************/ void Bank::openAccount() //开户 { /*if(nownum==upnum) { cout<<"银行用户数已经达到上限,不能再开户"; return; }*/ int acc; //账号 string nam; //姓名 int pw; //密码 double mon; //金额 int sta; //状态 string add; char id[19]; char pho[13]; cout<<"正在开户..."<<endl; acc=10001+nownum; cout<<"账号:"<<acc<<endl; cout<<"户主姓名:"; cin>>nam; cout<<"身份证号码:"<<endl;; cin>>id; cout<<"家庭住址:"<<endl; cin>>add; cout<<"电话号码:"<<endl; cin>>pho; int Pass1, Pass2; cout<<"密码:"; Pass1=inputPassword(); //输入密码1 cout<<"确认密码:"; Pass2=inputPassword(); //输入密码2 if(Pass1==Pass2) { pw=Pass1; sta=0; //账户状态为“正常” cout<<"存入金额:"; cin>>mon; users[nownum].setUser(acc,nam,id,add,pho,pw,mon,sta); ++nownum; //正式用户数增加1,确认了新用户已经加入 cout<<"开户成功!"<<endl; fflush(stdin); //清除键盘缓存区中已经有的输入 written(acc,"开户操作,开户成功!"); } else { cout<<"两次密码不一致,未成功开户!"<<endl; //没有N++,则读入的值无效 } } /************************************************** * 功能描述:销户 * 输入参数:/ * 输出参数:提示销户成功或失败的界面 * 其它说明:销户后款项全部取出,余额变为0 /**************************************************/ void Bank::cancelAccount() { int who; //查找到该账号在数组中对应的下标 who=getUser(); //根据账号查询用户,返回用户的下标 if(who>=0) //说明id账户存在 { users[who].showName(); if(users[who].passwordIsRight()) { users[who].showBalance("余额:"); //提示"余额"二字,显示金额 cout<<"确认销户(y/n)?"; if(getchar()=='y'||getchar()=='Y') { users[who].showBalance("销户成功!本次取款金额为:"); users[who].money=0; //取款后余额变0 users[who].status=2; //状态变为注销 written(who+10001,"销户操作,销户成功!"); } else { cout<<"你取消了操作,销户失败!"<<endl; written(who+10001,"销户操作,销户失败!错误原因:取消操作。"); } fflush(stdin); //清除了getchar()时在键盘缓存中的遗留,以免影响后续操作 } } } /************************************************************ * 功能描述:存款 * 输入参数:/ * 输出参数:存款成功或失败的提示以及错误原因,存款后的余额 * 其它说明:/ /************************************************************/ void Bank::save() //存款 { int who; double money; who=getUser(); //根据账号查询用户,返回用户的下标 if(who>=0) //说明id账户存在 { if(users[who].status==0) { users[who].showName(); cout<<"输入存款额:"; cin>>money; users[who].money+=money; users[who].showBalance("存款后,金额为:"); written(who+10001,"存款操作,存款成功!");//业务查询 } else if(users[who].status==1) { cout<<"该用户处于挂失状态,存款失败!"<<endl; written(who+10001,"存款操作,存款失败!错误原因:该账户处于挂失状态。"); } else { cout<<"该用户已经销户,存款失败!"<<endl; written(who+10001,"存款操作,存款失败!错误原因:该账户已销户。"); } } return; } /************************************************** * 功能说明:取款 * 输入描述:/ * 输出描述:取款失败的提示以及失败原因,余额 * 其它说明:/ /**************************************************/ void Bank::withdraw()//取款 { int who; double money; who=getUser(); //根据账号查询用户,返回用户的下标 if(who>=0) //说明id账户存在 { if(users[who].isNormalUser()) { users[who].showName(); if(users[who].passwordIsRight()) { cout<<"输入取款额:"; cin>>money; if(money>users[who].money) { cout<<"余额不足,取款失败!"<<endl; written(who+10001,"取款操作,操作失败!错误原因:余额不足。"); } else { users[who].money-=money; users[who].showBalance("取款后,余额为:"); written(who+10001,"取款操作,取款成功!"); } } } } return; } /********************************************************** * 功能说明:查询用户状态 * 输入描述:/ * 输出描述:查询成功的提示,用户所处状态以及余额 * 其它说明:/ /**********************************************************/ void Bank::showAccount() { int who; string sta[3]= {"正常","挂失","已经销户"}; who=getUser(); //根据账号查询用户,返回用户的下标 if(who>=0) //说明id账户存在 { users[who].showName(); if(users[who].passwordIsRight()) { users[who].showBalance("余额:"); cout<<"状态:"<<sta[users[who].status]<<endl; written(who+10001,"查询操作,查询成功!"); } } return; } /******************************************* * 功能说明:转账 * 输入描述:/ * 输出描述:转账成功或失败的提示以及错误原因 * 其它说明:/ /********************************************/ void Bank::transferAccount() { int whoout, whoin; double money; cout<<"转出自"; whoout=getUser(); //根据账号查询用户,返回用户的下标 if(whoout>=0) //说明id账户存在 { if(users[whoout].isNormalUser()) { users[whoout].showName(); if(users[whoout].passwordIsRight()) { cout<<"输入转账金额:"; cin>>money; if(money>users[whoout].money) { cout<<"余额不足,转账失败!"<<endl; written(whoout+10001,"转账操作,转账失败!错误原因:余额不足。"); } else { cout<<"转出到"; whoin = getUser(); //根据账号查询用户,返回用户的下标 if(whoin>=0) //说明id账户存在 { if(users[whoin].isNormalUser()) { users[whoout].money-=money; users[whoin].money+=money; users[whoout].showBalance("转账后,余额为:"); written(whoout+10001,"转账操作,转账成功!"); } } } } } } return; } /*************************************************** * 功能描述:挂失 * 输入参数:/ * 输出参数:用户挂失成功或者失败的提示以及错误原因 * 其它说明:/ /****************************************************/ void Bank::reportLoss() { int who; who = getUser(); //根据账号查询用户,返回用户的下标 if(who>=0) //说明id账户存在 { users[who].showName(); if(users[who].passwordIsRight()) { if(users[who].status==0) { users[who].status=1; cout<<"挂失成功"<<endl; written(who+10001,"挂失操作,挂失成功!"); } else if(users[who].status==1) { cout<<"该账户已经处于挂失状态"<<endl; written(who+10001,"挂失操作,挂失失败!错误原因:该账户已经处于挂失状态。"); } else { cout<<"该账户已销户,不能挂失"<<endl; written(who+10001,"挂失操作,挂失失败!错误原因:该账户已销户。"); } } } return; } /*************************************************** * 功能描述:解挂 * 输入参数:/ * 输出参数:用户所处的状态,解挂成功或者失败的提示以及错误原因 * 其它说明:/ /****************************************************/ void Bank::cancelLoss() //解挂 { int who; who = getUser(); //根据账号查询用户,返回用户的下标 if(who>=0) //说明id账户存在 { users[who].showName(); if(users[who].passwordIsRight()) { if(users[who].status==0) { cout<<"该账户处于正常状态,不需要解除挂失"<<endl; written(who+10001,"解挂操作,解挂失败!错误原因:该账户处于正常状态。"); } else if(users[who].status==1) { users[who].status=0; cout<<"解除挂失成功"<<endl; written(who+10001,"解挂操作,解挂成功!"); } else { cout<<"该账户已销户,操作无效"<<endl; written(who+10001,"解挂操作,解挂失败!错误原因:该账户已销户。"); } } } return; } /*************************************************** * 功能描述:修改密码 * 输入参数:旧密码,以及新密码 * 输出参数:修改密码成功或者失败的提示,以及错误原因 * 其它说明:/ /****************************************************/ void Bank::updatePassword() //改密 { int who; int iPass1, iPass2; who = getUser(); //根据账号查询用户,返回用户的下标 if(who>=0) //说明id账户存在 { users[who].showName(); if(users[who].passwordIsRight()) { cout<<"新密码:"; iPass1=inputPassword(); //输入密码1 cout<<"确认密码:"; iPass2=inputPassword(); //输入密码2 if(iPass1==iPass2) { users[who].password=iPass1; cout<<"修改成功!"<<endl; written(who+10001,"修改密码操作,修改密码成功!"); } else { cout<<"两次输入不同,修改失败!"<<endl; written(who+10001,"修改密码操作,修改密码失败!错误原因:两次密码输入不同。"); } } } return; } /*************************************************** * 功能描述:查找用户 * 输入参数:用户账号 * 输出参数:用户信息 * 其它说明:/ /****************************************************/ int Bank::getUser()//二分法查找用户 { int id; cout<<"账号:"; cin>>id; int index=-1; int low=0, high=nownum-1, mid; while(low<=high) { mid = (low+high)/2; if(users[mid].account==id) { index=mid; break; //找到了,立即退出循环 } else if (users[mid].account>id) high=mid-1; else low=mid+1; } if (index<0) cout<<"该用户不存在,本次操作失败!"<<endl; return index; //若找到,其值在0~N-1间,否则,保持-1 } /*************************************************** * 功能描述:导入文件 * 输入参数:users.txt * 输出参数:/ * 其它说明:/ /****************************************************/ void Bank::openfile()//导入文件 { ifstream infile("users.txt",ios::in); int i=0; if(!infile) { cerr<<"open error!"<<endl; exit(1); } nownum=usersdata(); users=new User[nownum+1]; while(infile>>users[i].account>>users[i].name>>users[i].password>>users[i].money>>users[i].status) { ++i; } infile.close(); } /*************************************************** * 功能描述:保存文件 * 输入参数:users.txt * 输出参数:/ * 其它说明:/ /****************************************************/ void Bank::savefile() //保存文件 { ofstream qingkfile("users.txt",ios::trunc); qingkfile.close(); ofstream outfile("users.txt",ios::out); if(!outfile) { cerr<<"open error!"<<endl; exit(1); } for(int i=0; i<nownum; ++i) { outfile<<users[i].account<<'\t'<<users[i].name<<'\t'<<users[i].password<<'\t'<<users[i].money<<'\t'<<users[i].status<<endl; } outfile.close(); delete []users; //释放空间,等下一次打开文件时重新开辟 return; } /*************************************************** * 功能描述:计算用户个数 * 输入参数:users.txt * 输出参数:/ * 其它说明:/ /****************************************************/ int Bank::usersdata()//计算users.txt中用户个数 { int acc; //账号 string nam; //姓名 int pw; //密码 double mon; //金额 int sta; //状态 int i=0; //int nownum; ifstream infile("users.txt"); while(infile>>acc>>nam>>pw>>mon>>sta) { ++i; } infile.close(); return i; } /*************************************************** * 功能描述:用户进行的操作写入文件中 * 输入参数:business_information.txt * 输出参数:/ * 其它说明:/ /****************************************************/ void Bank::written(int usernum,string infor)//将用户所进行的操作写入文件中,业务查询时输入流水账号,显示用户信息 { time_t t; tm *lt; t = time(NULL); lt = localtime(&t); //cout<<lt->tm_year+1900<<"/"<<lt->tm_mon+1<<"/"<<lt->tm_mday<<"\t"<<lt->tm_hour<<":"<<lt->tm_min<<":"<<lt->tm_sec<<endl; ofstream ywfile("business_information.txt",ios::app); if(!ywfile) { cerr<<"open error!"<<endl; exit(1); } //++ywnum; ywfile<<lt->tm_year+1900<<"/"<<lt->tm_mon+1<<"/"<<lt->tm_mday<<" "<<lt->tm_hour<<":"<<lt->tm_min<<":"<<lt->tm_sec<<'\t'; ywfile<<"用户"<<usernum<<"进行"<<infor<<" "<<"流水账号为:"<<++ywnum<<endl; ywfile.close(); cout<<"流水账号:"<<ywnum<<endl; } /*************************************************** * 功能描述:读入业务 * 输入参数:business_information.txt * 输出参数:文件打开失败的提示 * 其它说明:/ /****************************************************/ void Bank::reading()//读入业务 { long i=0; ifstream infile("business_information.txt",ios::in); if(!infile) { cerr<<"open error!"<<endl; exit(1); } //while(infile>>yw[i].year>>yw[i].ch1>>yw[i].month>>yw[i].ch1>>yw[i].day>>yw[i].hour>>yw[i].ch2>>yw[i].minu>>yw[i].ch2>>yw[i].sec>>yw[i].ywinfor) while(infile>>yw[i].ymd>>yw[i].hms>>yw[i].ywinfor>>yw[i].liushui) { //cout<<yw[i].ymd<<" "<<yw[i].hms<<" "<<yw[i].ywinfor<<endl; ++i; //cout<<yw[i].year;//<<yw[i].ch1<<yw[i].month<<yw[i].ch1<<yw[i].day<<yw[i].hour<<yw[i].ch2<<yw[i].minu<<yw[i].ch2<<yw[i].sec<<yw[i].ywinfor; //cout<<yw[i].ymd<<yw[i].hms<<yw[i].ywinfor } infile.close(); ywnum=i+10000000; } /*************************************************** * 功能描述:查询用户所进行的业务操作 * 输入参数:流水账号 * 输出参数:/ * 其它说明:/ /****************************************************/ void Bank::refer() { long i; cout<<"请输入流水账号:"; cin>>i; if(i<=ywnum&&i>10000000) cout<<i<<":\t"<<yw[i-10000001].ymd<<" "<<yw[i-10000001].hms<<" "<<yw[i-10000001].ywinfor<<endl; else cout<<"输入错误!"; } /*Bank::Bank() { time_t t; tm *lt; t = time(NULL); lt = localtime(&t); ofstream ywfile("business_information.txt",ios::app); if(!ywfile) { cerr<<"open error!"<<endl; exit(1); } ywfile<<lt->tm_year+1900<<"年"<<lt->tm_mon+1<<"月"<<lt->tm_mday<<"日 "; ywfile<<"进行业务操作:"<<endl; } Bank::~Bank() { ofstream ywfile("business_information.txt",ios::app); if(!ywfile) { cerr<<"open error!"<<endl<<endl; exit(1); } }*/
bank.h
/************************************************************* * 版权所有:(C)2015,烟台大学计算机与控制工程学院 * * 文件名称:bank.h * 文件标识:无 * 内容摘要:bank类中的函数声明 * 其它说明:无 * 当前版本:v1.0 * 作者:曾晓 * 完成日期:2015 7 17 * * 修改记录:/ * 修改日期:/ * 版本号:v1.0 * 修改人:曾晓 * 修改内容:创建 /***************************************************************/ #ifndef BANK_H_INCLUDED #define BANK_H_INCLUDED #include <iostream> #include <cmath> #include <iomanip> #include <ctype.h> #include <cstdlib> #include <cstdio> #include <conio.h> #include "user.h" using namespace std; struct business { string ymd; string hms; string ywinfor; string liushui; }; class Bank { public: //Bank(); //~Bank(); bool passtaff();//业务员信息 void openfile();//导入文件 void savefile2(int acc, string nam,int pw, double mon, int sta);//保存一行数据 void caculfile();//计算 void savefile(); //保存文件 void Choice(); //开始工作,选择指令 void showMenu();//显示菜单 void openAccount(); //开户 void cancelAccount(); //销户 void save(); //存款 void withdraw(); //取款 void showAccount(); //查询 void transferAccount(); //转账 void reportLoss(); //挂失 void cancelLoss(); //解挂 void updatePassword(); //改密 int getUser(); int usersdata();//计算users.txt中的用户个数 void written(int usernum,string infor);//将用户进行的操作写入文件business_information.txt中 void reading();//读取文件business_information.txt中的用户信息 void refer();//输入流水账号查询用户信息,病输出用户操作时的时间 private: business yw[10000]; int nownum; //long ywnum;//流水账号 User *users; }; #endif // BANK_H_INCLUDED
user.cpp
/************************************************************* * 版权所有:(C)2015,烟台大学计算机与控制工程学院 * * 文件名称:user.cpp * 文件标识:无 * 内容摘要:用户函数的定义 * 其它说明:无 * 当前版本:v1.0 * 作者:曾晓 * 完成日期:2015 7 17 * * 修改记录:/ * 修改日期:/ * 版本号:v1.0 * 修改人:曾晓 * 修改内容:创建 /***************************************************************/ #include <iostream> #include <cstdlib> #include <cmath> #include <fstream> #include <conio.h> #include <cstring> #include "user.h" using namespace std; int inputpassw() { char ch; //接收字符形式密码 int iPass=0; //要转换为数字 int i; while(1) { for(i=0; i<6; i++) { ch=getch(); //输入但不显示 putchar('*'); //输出* if(isdigit(ch)) iPass=iPass*10+(ch-'0'); else { iPass=0; break; //退出for循环后,再次接受 } } fflush(stdin); //清除键盘缓存区中已经有的输入 cout<<endl;; if(iPass==0) //此条件成立可能由两种情况引起:输入了非数字字符被直接重置为0,或6位全0后正常退出for循环 { cout<<"密码要求全为数字,且不能全0!"<<endl;; cout<<"请重新输入密码: "; } else break; } return iPass; } /*********************************************** * 功能描述:数据成员的赋值 * 输入参数:/ * 输出参数:/ * 返回值:/ * 其它说明:/ /***********************************************/ void User::setUser(int acc, string nam,char id[19],string add,char pho[13], int pw, double mon, int sta) { account=acc; name=nam; strcpy(id_card,id); address=add; strcpy(phone,pho); password=pw; money=mon; status=sta; } /*********************************************** * 功能描述:判断密码是否正确 * 输入参数:int iPass * 输出参数:密码错误的提示 * 返回值:right * 其它说明:/ /***********************************************/ bool User::passwordIsRight() { int iPass; bool right=true; cout<<"输入密码:"; iPass=inputpassw(); if(iPass!=password) { right = false; cout<<"输入密码错误,不能继续操作!"<<endl; } return right; } /*********************************************** * 功能描述:显示用户名字 * 输入参数: * 输出参数:name * 返回值:/ * 其它说明:/ /***********************************************/ void User::showName() { cout<<"用户名:"<<name<<endl; } /*********************************************** * 功能描述:显示余额 * 输入参数:/ * 输出参数:money * 返回值:/ * 其它说明:/ /***********************************************/ void User::showBalance(string prompt) { cout<<prompt<<money<<endl; } /*********************************************** * 功能描述:判断用户状态是否正常 * 输入参数:/ * 输出参数:用户所处的状态 * 返回值:/ * 其它说明:/ /***********************************************/ bool User::isNormalUser() { bool normal = true; if(status!=0) { normal = false; cout<<"该账户处于"<<(status==1?"挂失":"销户")<<"状态,不能继续操作..."<<endl; } return normal; }
user.h
/************************************************************* * 版权所有:(C)2015,烟台大学计算机与控制工程学院 * * 文件名称:uesr.h * 文件标识:无 * 内容摘要:User类中的函数声明 * 其它说明:无 * 当前版本:v1.0 * 作者:曾晓 * 完成日期:2015 7 17 * * 修改记录: * 修改日期: * 版本号:v1.0 * 修改人:曾晓 * 修改内容:创建 /***************************************************************/ #ifndef USER_H_INCLUDED #define USER_H_INCLUDED #include <iostream> #include <cmath> using namespace std; class User { public: User(){} void setUser(int acc, string nam,char id[19],string add,char pho[13], int pw, double mon, int sta); bool isNormalUser(); bool passwordIsRight(); void showName(); void showBalance(string prompt); friend class Bank; private: int account; string name; int password; double money; int status; string address; char phone[13]; char id_card[19]; }; #endif // USER_H_INCLUDED
staff.cpp
/************************************************************* * 版权所有:(C)2015,烟台大学计算机与控制工程学院 * * 文件名称:staff.cpp * 文件标识:无 * 内容摘要:业务员的登录 * 其它说明:无 * 当前版本:v1.0 * 作者:曾晓 * 完成日期:2015 7 17 * * 修改记录:/ * 修改日期:/ * 版本号:v1.0 * 修改人:曾晓 * 修改内容:创建 /***************************************************************/ #include <iostream> #include <cstdlib> #include <cmath> #include <fstream> #include "staff.h" using namespace std; /*********************************************** * 功能描述:业务员登录 * 输入参数:staff.txt * 输出参数:业务员登录成功的提示 * 返回值:judge * 其它说明:/ /***********************************************/ bool Staff::pass(string sacc,int ps) { bool judge=false; fstream infile("staff.txt",ios::in);//´ò¿ªstaff.txt if(!infile) { cerr<<"open error!"<<endl; exit(1); } while(!infile.eof()) { infile>>stafft.account>>stafft.password; if(stafft.account==sacc&&ps==stafft.password) { judge=true; break; } } infile.close(); return judge; }
staff.h
/************************************************************* * 版权所有:(C)2015,烟台大学计算机与控制工程学院 * * 文件名称:staff.h * 文件标识:无 * 内容摘要:业务员登录 * 其它说明:无 * 当前版本:v1.0 * 作者:曾晓 * 完成日期:2015 7 17 * * 修改记录:/ * 修改日期:/ * 版本号:v1.0 * 修改人:曾晓 * 修改内容:创建 /***************************************************************/ #ifndef STAFF_H_INCLUDED #define STAFF_H_INCLUDED #include <iostream> #include <cmath> using namespace std; struct staffTatus { string account; int password; }; class Staff { public: bool pass(string sacc,int ps); private: staffTatus stafft; }; #endif // STAFF_H_INCLUDED
运行结果:
业务员登录:
开户:
存款:
取款:
查询:
转账:
挂失:
解挂:
改密:
业务查询:
总结心得:
在调试过程中,对这些五花八门的错误又有了新的认识,好多错误是之前没有见过的,这么大的程序只能一点一点的自己去调试,去找大神帮忙。其实还有很多功能没有实现,对用户界面的实现其实我是很有兴趣的,但是实在没时间去研究了。
相关文章推荐
- 银行储蓄系统
- Linux环境下使用perl编写CGI(httpd)
- 第K回文数
- 2015.07.18[播放音频、视频_1]
- Java Web Service
- 3 分钟的高速体验 Apache Spark SQL
- handsontable-developer guide-cell function
- 检测到在集成的托管管道模式下不适用的ASP.NET设置的解决方法(转)
- android 来电自动接听和自动挂断
- 工程实训-银行储蓄系统
- A==B?(java大数做高精度)
- JavaScript的特殊函数
- 多线程程序设计学习(3)immutable pattern模式
- javadoc 使用中解决不能编码问题
- MySql优化--索引优化
- IE7浏览器z-index问题的解决方法
- OAF_开发系列22_实现OAF条形码BarCode
- uva 473(dp)
- 杭电 hdu 1507 Uncle Tom's Inherited Land* (二分匹配 + 两种方法构造边)
- 开源软件安装三部曲