改进银行项目2(Code::Blocks能进行的在C++6.0中不能进行的 进行修改)
2013-01-05 17:21
393 查看
#include <iostream> #include <string.h> #include <iomanip> #include <stdio.h> using namespace std; //银行中最大的账户数量 #define MAXACCOUNTNUMBER 20000 //银行卡的卡号初始值 #define INITNUMBER 10001 struct Account { long accNumber;//卡号 char accName[20];//户主 char accPwd[10];//密码 double balance;//余额 char flag[6];//卡的状态 } array[MAXACCOUNTNUMBER]; //银行中所有卡 int size=0; //生成银行中自增卡号 long autoCreament(); //开户 void openAnAccount(); //存款 void deposit(); //取款 void withdraw(); //查询 void query(); //销户 void closeAnAcount(); //菜单 void mainFrame(); //输出指定卡的信息 void printAccount(Account acc); //根据卡号查找卡在数组中的下标 int searchAccount(long accNumber); //检查密码输入是否满足长度 bool isPassLegal(char pass[]); int main() { cout<<"+------------------------+"<<endl; cout<<": :"<<endl; cout<<":欢迎使用储蓄综合业务平台:"<<endl; cout<<": :"<<endl; cout<<"+------------------------+"<<endl; cout<<endl; char loginName[20];//户名 char loginPwd[20];//密码 int i=0; while (i<3) { cout<<"请输入您的用户名:"; cin>>loginName; cout<<endl; cout<<"请输入密码:"; cin>>loginPwd; if (strcmp(loginName,"admin")!=0||strcmp(loginPwd,"admin")!=0) { i++; cout<<"用户名或密码错误!"<<endl; cout<<endl; } else break; } if(i>=3) { cout<<"您输入的次数已达限制,请退出程序!"; } if(i<3) mainFrame(); return 0; } void mainFrame() { cout<<"+------------------------+"<<endl; cout<<"|存款 请按1 开户 请按4|"<<endl; cout<<"|取款 请按2 销户 请按5|"<<endl; cout<<"|查询 请按3 退出 请按0|"<<endl; cout<<"+------------------------+"<<endl; cout<<"请输入您的选择:"; int choose; cin>>choose; switch (choose) { case 0: cout<<"-----您选择了退出-----"<<endl; break; case 1: cout<<"-----您选择了存款-----"<<endl; deposit(); break; case 2: cout<<"-----您选择了取款-----"<<endl; withdraw(); break; case 3: cout<<"-----您选择了查询-----"<<endl; query(); break; case 4: cout<<"-----您选择了开户-----"<<endl; openAnAccount(); break; case 5: cout<<"-----您选择了销户-----"<<endl; closeAnAcount(); break; default: { cout<<"请重新选择!"<<endl; mainFrame(); break; } } } //检查密码输入是否满足长度 bool isPassLegal(char pass[]) { bool flag=true; int len=strlen(pass),i; if(len==6) { //满足6位 for(i=0;i<len;i++) { if(pass[i]<48||pass[i]>57) { flag=false; break; } } } else { //不满足6位 flag=false; } return flag; } //开户 void openAnAccount() { int i; char pwd1[10],pwd2[10]; cout<<"请输入户主:"; cin>>array[size].accName; cout<<"请输入密码:"; cin>>pwd1; cout<<"请再次输入密码:"; cin>>pwd2; //验证2次输入的密码是否一致 if(strcmp(pwd1,pwd2)==0) //2次密码一致 { if(isPassLegal(pwd1)) //密码是合法 { strcpy(array[size].accPwd,pwd1); cout<<"请输入金额:"; cin>>array[size].balance; //.. strcpy(array[size].flag,"正常"); //写卡号 array[size].accNumber=autoCreament(); printAccount(array[size]); size++; cout<<"*******************开户成功*******************"<<endl; mainFrame(); } else { cout<<"密码必须是纯数字,并且是6位"<<endl; cout<<"按任意数字键继续"<<endl; cout<<"按1键返回主菜单"<<endl; cin>>i; if (i==1) mainFrame(); else openAnAccount(); } } else { //2次输入的密码不一致 cout<<"两次输入的密码不一致"<<endl; openAnAccount(); } } 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&&strcmp(array[i].flag,"已销户")!=0) { //找到了这张卡 pos=i; break; } } return pos; } void deposit()//存款 { long accNum;//存款的账号 double money;//存款的金额 int pos,i; cout<<"请输入存款的账号:"; cin>>accNum; cout<<"请输入存款金额:"; cin>>money; pos=searchAccount(accNum); if(pos==-1) { //卡号有误 cout<<"卡号不存在!!"<<endl; cout<<"按任意数字键继续"<<endl; cout<<"按1键返回主菜单"<<endl; cin>>i; if (i==1) mainFrame(); else deposit(); } else { //展示下存款前卡的信息 cout<<"存款前卡的信息:"<<endl; printAccount(array[pos]); //找到了该卡号所对应的卡 array[pos].balance+=money; //展示存款后卡的信息 cout<<"存款后卡的信息:"<<endl; printAccount(array[pos]); cout<<"**********存款成功,按任意键返回**********"<<endl; fflush(stdin); getchar(); mainFrame(); } } void withdraw()//取款 { long accNum;//取款的账号 char accPwd[10];// double money;//取款的金额 double money1;//用于比较的金额 int pos,i; cout<<"请输入取款的账号:"; cin>>accNum; pos=searchAccount(accNum); if(pos==-1) { //卡号有误 cout<<"卡号不存在,请重新输入!"<<endl; cout<<"按任意数字键继续"<<endl; cout<<"按1键返回主菜单"<<endl; cin>>i; if (i==1) mainFrame(); else withdraw(); } else { cout<<"请输入密码:"; cin>>accPwd; } if (strcmp(array[pos].accPwd,accPwd)==0) { cout<<"请输入取款金额:"; cin>>money; //展示下取款前卡的信息 cout<<"取款前卡的信息:"<<endl; printAccount(array[pos]); //找到了该卡号所对应的卡 money1=array[pos].balance-money; if(money1<=0) { cout<<"您账户内的余额不足,请查询后再取款!"; cout<<endl; mainFrame(); } else { array[pos].balance-=money; //展示取款后卡的信息 cout<<"取款后卡的信息:"<<endl; printAccount(array[pos]); cout<<"**********取款成功,按任意键返回**********"<<endl; fflush(stdin); getchar(); mainFrame(); } } else { cout<<"您输入的密码不正确!"<<endl; cout<<"按任意数字键继续"<<endl; cout<<"按1键返回主菜单"<<endl; cin>>i; if (i==1) mainFrame(); else withdraw(); } } void query()//查询 { long accNum;//查询的账号 char accPwd[10];//密码 int pos,i; cout<<"请输入查询的账号:"; cin>>accNum; pos=searchAccount(accNum); if(pos==-1) { //卡号有误 cout<<"卡号不存在,请重新输入!"<<endl; cout<<"按任意数字键继续"<<endl; cout<<"按1键返回主菜单"<<endl; cin>>i; if (i==1) mainFrame(); else query(); } else { cout<<"请输入密码:"; cin>>accPwd; } if (strcmp(array[pos].accPwd,accPwd)==0) { cout<<"您的账户信息为:"<<endl; printAccount(array[pos]); cout<<"****************按任意键返回**************"<<endl; fflush(stdin); getchar(); mainFrame(); } else { cout<<"您输入的密码不正确!"<<endl; cout<<"按任意数字键继续"<<endl; cout<<"按1键返回主菜单"<<endl; cin>>i; if (i==1) mainFrame(); else query(); } mainFrame(); } void closeAnAcount()//销户 { long accNum;//销户的账号 char accPwd[10];// int pos,i; cout<<"请输入销户的账号:"; cin>>accNum; pos=searchAccount(accNum); if(pos==-1) { //卡号有误 cout<<"卡号不存在!!"<<endl; cout<<"按任意数字键继续"<<endl; cout<<"按1键返回主菜单"<<endl; cin>>i; if (i==1) mainFrame(); else closeAnAcount(); } else { cout<<"请输入密码:"<<endl; cin>>accPwd; } if (strcmp(array[pos].accPwd,accPwd)==0) { cout<<"您的账户信息为:"<<endl; printAccount(array[pos]); cout<<"************按回车键进行销户**************"<<endl; fflush(stdin); getchar(); array[pos].balance=0; strcpy(array[pos].flag,"已销户"); printAccount(array[pos]); cout<<"***************您已成功销户***************"<<endl; cout<<"****************按回车返回****************"<<endl; fflush(stdin); getchar(); mainFrame(); } else { cout<<"您输入的密码不正确!"<<endl; cout<<"按任意数字键继续"<<endl; cout<<"按1键返回主菜单"<<endl; cin>>i; if (i==1) mainFrame(); else closeAnAcount(); } mainFrame(); }
相关文章推荐
- ubuntu codeblocks通过配置文件修改主题
- 四人小组项目(对项目进行的修改与重写)
- 项目 XXX 受源代码管理。向源代码管理注册此项目时出错。建议不要对此项目进行任何修改
- codeblocks下如何修改新建文件的默认代码
- It seems that this file has not been built yet.Do you want to build it now? Codeblocks能构建build不能运ru
- //7.4 对例 7.5 进行修改,将其中的友元函数 total 改为 max,即显示三个银行中存款最 //多的银行及其存款数
- 关于SubSonic3.0插件使用Json反序列化获得的实体进行更新操作时,只能执行添加而不能执行修改(编辑)操作的处理
- 2周修改了1000多个Bug后软件项目扭转了局面,未交付银行的现金管理系统健壮起来了
- eclipse和tomcat有问题,每当修改一下java类或jsp文件,保存文件之后,项目就不能访问了!
- 装完sql后修改计算机名后不能进行发布的订阅的解决办法
- SVN-项目 XXX 受源代码管理。向源代码管理注册此项目时出错。建议不要对此项目进行任何修改
- Jquery中$.get()不能进行变量修改的问题------异步问题
- 解决开发项目中acvitity获取ViewPager中Fragment对象为null不能进行传值的问题
- 创建触发器后不能进行修改操作,Can't update table 'psxt_user' in stored function/trigger because
- 项目过程中MyEclipse出问题----MyEclipse中修改java code,不起作用
- 软件项目经理新手上路(6) - 不要进行小改进
- [课堂实践与项目]手机QQ客户端--4期(SQLite的加入,注册,找回,登录界面的修改):建立关于QQ注册类,使用SQLite进行存储,
- 无人机项目获取用户信息并进行用户信息修改的angularjs部分
- 2周修改了1000多个Bug后软件项目扭转了局面,未交付银行的现金管理系统健壮起来了
- Code::Blocks项目配置基础