银行储蓄系统
来源:互联网 发布:淘宝电子发票在哪里 编辑:程序博客网 时间:2024/06/02 14:12
bank.cpp
/************************************************************** 版权所有:(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
运行结果:
业务员登录:
开户:
存款:
取款:
查询:
转账:
挂失:
解挂:
改密:
业务查询:
总结心得:
0 0
- 银行储蓄系统
- 银行储蓄系统
- 银行储蓄系统指导
- 银行储蓄系统...
- 银行储蓄系统
- 银行储蓄系统
- Odi银行储蓄系统
- 课程设计-银行储蓄系统
- 第一版 银行储蓄系统
- 银行储蓄系统
- 课程设计-银行储蓄系统
- 银行储蓄系统
- 银行储蓄系统
- 课程设计-银行储蓄系统。
- 课程设计--银行储蓄系统
- 模拟银行储蓄系统
- 银行储蓄系统
- 银行储蓄系统
- A==B?(java大数做高精度)
- 网站开发基本常识
- Java Web Service
- 第K回文数
- web.xml中servlet-mapping的url-pattern的配置
- 银行储蓄系统
- 银行储蓄系统
- Hello world!
- jsp日期格式化
- 浙大 zoj 1654 Place the Robots (二分匹配 + 关于x,y轴的构造边)
- ulimit -c unlimited
- Java进阶(极客)——单例模式(一)基本原理
- 图的深度优先遍历序列
- 工程实训 银行储蓄系统