银行系统
来源:互联网 发布:眼窝怎么变深知乎 编辑:程序博客网 时间:2024/04/27 15:18
opyright(c)2013,烟台大学计算机学院学生 *All rights reserved. *文件名称:银行系统 *作者:杨飞 *完成日期:2013年12月27日 *版本号:v1.0 *对任务及求解方法的描述部分:银行系统 我的程序: #include<iostream> #include <iostream>#include <cstdio>#include <string.h>#include <conio.h>#include <fstream>#include <cstdlib>#include <iomanip>using namespace std;//.声明一个银行卡的类型struct Account{ long accNumber; //.卡号 char accName[20];//户主 char password[7]; double balance; //余额 char identity[19];//身份证号 int state;//.状态 0:正常 -1:挂失 -2:冻结 -3:销户};Account array[20000];//.银行可以开的卡的数量long Number=100001;//.表示卡号的初始值int size=0,sum,m; //.n为要转账的卡的下标double balance;//.账户余额char accName;//.户名char identity;//.账户身份证号void welcome();//界面void openAccount();//.开户bool chazhao();//.查找void xianshu();//.显示数据void status();//.卡的状态void write();//.写入数据void read();//.读入数据void getpass(char pass[7]);//密码控制double cuankuan();//.存款double qukuan();//.取款void gaimi();//.修改密码void zhuanzhang();//.转账bool xiaohu();//.销户bool jiandentity(char a[]);//验证身份证void mainFrame();//.主界面int money;int money1;int money2;int main(){ welcome(); read(); mainFrame(); return 0;}void getpass(char pass[7]);void welcome(){ int m,n,i,p,h=0,z=0; int a[]= {0,1,2,3,5,6,7,8}; //代表学工号 int b[]= {0,1,2,3,5,6,7,8}; //代表密码 cout<<"+-------------------------------+"<<endl; cout<<"| |"<<endl; cout<<"| | "<<endl; cout<<"| 欢迎试用储蓄综合业务平台 |"<<endl; cout<<"| |"<<endl; cout<<"| |"<<endl; cout<<"+-------------------------------+"<<endl; cout<<"请输入您的学工号"<<endl; cin>>m; while(z<3) { for(i=0; i<8; i++) { if(a[i]==m) { cout<<"你已经进入银行系统"<<endl; p=i; h=1; break; } } if(h!=1) { cout<<"您有三次输入学工号机会,谢谢合作!"<<endl; cout<<"你还有"<<2-z<<"次机会输入的学工号"<<endl; cin>>m; } else break; z++; } cout<<"请输入您的密码"<<endl; cin>>n; for(i=0; i<3; i++) { if(b[p]!=n) { cout<<"你输入的密码错误,请重新输入:"<<endl; cin>>n; } if(b[p]==n) { cout<<"你已经进入银行系统"<<endl; break; } } char zhang[7]= {'1','2','3','4','5','6'}; char password[7]= {'1','2','3','4','5','6'}; char pass10[7]=" "; char name[7]; cout<<"请输入登录账户:"<<endl; cin>>name; while(true) { if (strcmp(zhang,name)!=0) { cout<<"登录账户不对!请从新输入:"<<endl; cin>>name; } else { break; } } cout<<"请输入登录密码:"<<endl; getpass(pass10); while(true) { if (strcmp(password,pass10)!=0) { cout<<"密码不对!请重新输入:"<<endl; getpass(pass10); } else { break; } }}void mainFrame()//.主菜单{ int order; cout<<"+----------------------------+"<<endl; cout<<"| 开户 请按 1 存款 请按 2 |"<<endl; cout<<"| 取款 请按 3 查询 请按 4 |"<<endl; cout<<"| 转账 请按 5 改密 请按 6 |"<<endl; cout<<"| 销户 请按 7 退出 请按 8 |"<<endl; cout<<"+----------------------------+"<<endl; cout<<"请输入操作指令"<<endl; cin>>order; switch(order) { case 1: openAccount(); break; case 2: cuankuan(); break; case 3: qukuan(); break; case 4: if(chazhao()==0) { chazhao(); } break; case 5: zhuanzhang(); break; case 6: gaimi(); break; case 7: xiaohu(); break; case 8: cout<<"+--------------------------+"<<endl; cout<<"| 欢迎光临!!! |"<<endl; cout<<"|--------------------------|"<<endl; exit(0); break; default: break; }}void getpass(char pass[7]);bool jianidentity(char a[]);//验证身份证void openAccount()//.开户{ char pass1[7]=" "; char pass2[7]=" "; cout<<"请输入户主姓名:"<<endl; cin>>array[size].accName; array[size].accNumber=Number++; while(true) { cout<<"请输入密码:"<<endl; getpass(pass1); cout<<"请再次输入密码:"<<endl; getpass(pass2); if (strcmp(pass1,pass2)!=0) { cout<<"两次密码不同!请从新输入!"<<endl; } else { strcpy(array[size].password,pass1); break; } } cout<<"请输入身份证号码:"<<endl; cin>>array[size].identity; while(!jianidentity(array[size].identity))//检验身份证 { cout<<"输入不规范,请重新输入用户身份证号:"<<endl; cin>>array[size].identity; } cout<<"请输入金额:"<<endl; cin>>array[size].balance; array[size].state=0; cout<<"+------------------------------------------------------+"<<endl; cout<<setiosflags(ios::left)<<"|"<<setw(8)<<"卡号"<<setw(8)<<"户主"<<setw(22)<<"身份证号码"<<setw(8)<<"金额"<<setw(8)<<"状态"<<"|"<<endl; cout<<"|------------------------------------------------------|"<<endl; cout<<setiosflags(ios::left)<<"+"<<setw(8)<<array[size].accNumber<<setw(8)<<array[size].accName<<setw(22)<<setiosflags(ios::fixed)<<setprecision(2)<<array[size].identity<<setw(8)<<array[size].balance<<""; 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++; write(); cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); getchar(); mainFrame();}bool chazhao()//.找卡利用二分法查找{ int mid,max=Number,min=100001,num; char password1[7]; cout<<"请输入要您查询的卡号:"<<endl; cin>>num; sum=num-100001; if(num>max||num<min) { cout<<"该卡并不存在!"<<endl; return false; } else { while(1) { mid=(max+min)/2; if(num==mid) { sum=num-100001; while(true) { cout<<"请输入密码:"<<endl; cin>>password1; if(strcmp(password1,array[sum].password)!=0) { cout<<"密码错误,请重新输入!"<<endl; } else break; } xianshu(); return true; break; } else { if(num<mid) { max=mid-1; } else { min=mid+1; } } } }}void xianshu(){ cout<<"+--------------------------------------------------------+"<<endl; cout<<setiosflags(ios::left)<<"|"<<setw(10)<<"卡号"<<setw(10)<<"户主"<<setw(24)<<"身份证号码"<<setw(10)<<"金额"<<setw(10)<<"状态"<<"|"<<endl; cout<<"|--------------------------------------------------------|"<<endl; cout<<setiosflags(ios::left)<<"+"<<setw(10)<<array[sum].accNumber<<setw(10)<<array[sum].accName<<setw(24)<<setiosflags(ios::fixed)<<setprecision(2)<<array[sum].identity<<setw(10)<<array[sum].balance<<""; status(); cout<<"+--------------------------------------------------------+"<<endl; cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); getchar(); mainFrame();}void status()//.卡的状态{ switch(array[sum].state) { case 0: cout<<"正常"<<endl; break; case -1: cout<<"挂失"<<endl; break; case -2: cout<<"冻结"<<endl; break; case -3: cout<<"销户"<<endl; break; default: break; }}double cuankuan()//.存款{ int accNumber,max=Number,min=100001; cout<<"请输入银行卡号:"<<endl; cin>>accNumber; while(accNumber<min||accNumber>max) { cout<<"卡号错误!请重新输入:"<<endl; cin>>accNumber; } sum=accNumber-100001; if(array[sum].state==0) { cout<<"********************************************************"<<endl; cout<<"+------------------------------------------------------+"<<endl; cout<<setiosflags(ios::left)<<"|"<<setw(10)<<"卡号"<<setw(10)<<"户主"<<setw(24)<<"身份证号码"<<setw(10)<<"金额"<<setw(10)<<"状态"<<"|"<<endl; cout<<"|------------------------------------------------------|"<<endl; cout<<setiosflags(ios::left)<<"|"<<setw(10)<<array[sum].accNumber<<setw(10)<<array[sum].accName<<setw(24)<<setiosflags(ios::fixed)<<setprecision(2)<<array[sum].identity<<setw(10)<<array[sum].balance<<""; status(); cout<<"+------------------------------------------------------+"<<endl; cout<<"请输入要存的金额:"<<endl; cin>>money1; if(money1<0) { cout<<"请正确输入要存的金额:"<<endl; cin>>money1; } if(money1>=0) { array[sum].balance=array[sum].balance+money1; } } else { cout<<"该卡处于"; status();//卡的状态 mainFrame(); } cout<<"+----------------------------------+"<<endl; cout<<"+ 账户余额为 +"<<endl; cout<<"+----------------------------------+"<<endl; cout<<"+ *"<<array[sum].balance<<"* +"<<endl; cout<<"+----------------------------------+"<<endl; write(); cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); getchar(); mainFrame();}void getpass(char pass[7]);double qukuan()//.取款{ int accnumber,max=Number,min=100001; char mima[7]=" "; cout<<"输入银行账号:"<<endl; cin>>accnumber; while(accnumber<min||accnumber>max) { cout<<"卡号错误!请重新输入:"<<endl; cin>>accnumber; } sum=accnumber-100001; if(array[sum].state==0) { while(true) { cout<<"请输入密码:"<<endl; getpass(mima); if(strcmp(mima,array[sum].password)!=0) { cout<<"密码错误,请重新输入!"<<endl; } else break; } } else { cout<<"该卡处于"; status();//.卡的状态 mainFrame(); } cout<<"请输入要取的金额:"<<endl; cin>>money2; while(true) { if(array[sum].balance<money2||money2<0) { cout<<"请正确输入的金额:"<<endl; cin>>money2; } else break; } cout<<"+----------------------------------+"<<endl; cout<<"+ "<<"您共取"<<money2<<"元"<<" +"<<endl; cout<<"+----------------------------------+"<<endl; array[sum].balance=array[sum].balance-money2; write(); cout<<"+----------------------------------+"<<endl; cout<<"+ 账户余额为 +"<<endl; cout<<"+----------------------------------+"<<endl; cout<<"+ "<<array[sum].balance<<" +"<<endl; cout<<"+----------------------------------+"<<endl; cout<<"请输入任意键返回主菜单"<<endl; fflush(stdin); getchar(); mainFrame();}void getpass(char pass[7]);bool xiaohu()//.注销{ int mid,max=Number,min=100001,num; char password1[7]=" "; char password2[7]=" "; cout<<"请输入卡号:"<<endl; cin>>num; sum=num-100001; if(num>max||num<min) { cout<<"该卡没有使用!"<<endl; return false; } else { while(1) { mid=(max+min)/2; if(num==mid) { sum=num-100001; while(true) { cout<<"请输入密码:"<<endl; getpass(password1); if(strcmp(password1,array[sum].password)!=0) { cout<<"密码错误,请重新输入!"<<endl; } else break; } cout<<"+------------------------------------------------------+"<<endl; cout<<setiosflags(ios::left)<<"|"<<setw(8)<<"卡号"<<setw(8)<<"户主"<<setw(22)<<"身份证号码"<<setw(8)<<"金额"<<setw(8)<<"状态"<<"|"<<endl; cout<<"+------------------------------------------------------+"<<endl; cout<<setiosflags(ios::left)<<"+"<<setw(8)<<array[sum].accNumber<<setw(8)<<array[sum].accName<<setw(22)<<setiosflags(ios::fixed)<<setprecision(2)<<array[sum].identity<<setw(8)<<array[sum].balance<<""; status(); cout<<"+------------------------------------------------------+"<<endl; while(true) { cout<<"请再次输入密码:"<<endl; getpass(password2); if(strcmp(password2,array[sum].password)!=0) { cout<<"密码错误,请重新输入!"<<endl; } else break; } cout<<"挂失请按 0 ,冻结请按 1 ,销户请按 2 正常请按 3 !"<<endl; cin>>array[sum].state; switch(array[sum].state) { case 0: array[sum].state=-1; break; case 1: array[sum].state=-2; break; case 2: array[sum].balance=0; array[sum].state=-3; break; case 3: array[sum].state=0; break; default : break; } write(); cout<<"操作成功!"<<endl; cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); getchar(); mainFrame(); return true; break; } else { if(num<mid) { max=mid-1; } else { min=mid+1; } } } }}void write(){ int i; ofstream outfile("D:\\yangfei.txt",ios::out); if(!outfile) { cout<<"文件无法打开!"; exit(1); } else { for(i=0; i<size; i++) { outfile<<array[i].accNumber<<'\t'<<array[i].accName<<'\t'<<array[i].identity<<'\t'<<array[i].password<<'\t'<<array[i].balance<<'\t'<<array[i].state<<'\t'<<endl; } outfile.close(); }}void read()//.把储户信息从文件中读到结构体数组中{ ifstream infile("D:\\yangfei.txt",ios::in); if(!infile) { cout<<"文件无法打开!"; exit(1); } else { while(infile>>array[size].accNumber>>array[size].accName>>array[size].identity>>array[size].password>>array[size].balance>>array[size].state) { size++; } Number=array[size-1].accNumber+1; infile.close(); }}void getpass(char pass[7]);void gaimi()//.修改密码{ int accnumber,max=Number,min=100001; char mima1[7]=" "; char mima2[7]=" "; char mima3[7]=" "; cout<<"输入银行账号:"<<endl; cin>>accnumber; while(accnumber<min||accnumber>max) { cout<<"卡号错误!请重新输入:"<<endl; cin>>accnumber; } sum=accnumber-100001; if(array[sum].state==0) { while(true) { cout<<"请输入密码:"<<endl; getpass(mima1); if(strcmp(mima1,array[sum].password)!=0) { cout<<"密码错误,请重新输入!"<<endl; } else break; } } else { cout<<"该卡处于"; status();//.卡的状态 mainFrame(); } while(true) { cout<<"请输入新密码:"<<endl; getpass(mima2); cout<<"请再次输入新密码:"<<endl; getpass(mima3); if (strcmp(mima2,mima3)!=0) { cout<<"两次密码不同,请重新输入:"<<endl; } else { strcpy(array[sum].password,mima2); cout<<"改密成功!"<<endl; write(); break; } } cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); getchar(); mainFrame();}void zhuanzhang()//.转账{ int accNumber_1,accNumber_2; int min=100001,max=Number; char pass_1[7],pass_2[7]; cout<<"请输入您的卡号:"<<endl; cin>>accNumber_1; while(accNumber_1<min||accNumber_1>max) { cout<<"该账户不存在,请重新输入:"<<endl; cin>>accNumber_1; } sum=accNumber_1-100001; if(array[sum].state==0) { while(true) { cout<<"请输入密码:"<<endl; cin>>pass_1; if(strcmp(array[sum].password,pass_1)!=0) { cout<<"密码错误,请重新输入:"<<endl; } else break; } } cout<<"请输入您要转账的卡号:"<<endl; cin>>accNumber_2; while(accNumber_2<min||accNumber_2>max) { cout<<"该账户不存在,请重新输入:"<<endl; cin>>accNumber_2; } m=accNumber_2-100001; if(array[m].state==0) { while(true) { cout<<"请输入密码:"<<endl; cin>>pass_2; if(strcmp(array[m].password,pass_2)!=0) { cout<<"密码错误,请重新输入:"<<endl; } else break; } } cout<<"输入要转账的金额:"<<endl; cin>>money; while(true) { if(array[sum].balance<money||money<0) { cout<<"请正确输入要转账的金额:"<<endl; cin>>money; } else break; } cout<<"+----------------------------------+"<<endl; cout<<"+ "<<"您本次共转账"<<money<<"元"<<" +"<<endl; cout<<"+----------------------------------+"<<endl; array[sum].balance=array[sum].balance-money; array[m].balance=array[m].balance+money; write(); cout<<"+----------------------------------+"<<endl; cout<<"+ 账户余额为 +"<<endl; cout<<"+----------------------------------+"<<endl; cout<<"+ "<<array[sum].balance<<" +"<<endl; cout<<"+----------------------------------+"<<endl; cout<<"请输入任意键返回主菜单..."<<endl; fflush(stdin); getchar(); mainFrame();}void getpass(char pass[7]){ char ch; int i=0; while(i<6) { ch=getch(); if(ch>='0'&&ch<='9') { putch('*'); pass[i]=ch; } i++; }}bool jianidentity(char a[])//验证身份证{ bool flag=true; int i,q; q=strlen(a); if(q!=18) flag=false; else { for(i=0; i<17; i++) { if(!((a[i]>='0')&&(a[i]<='9'))) { flag=false; break; } } if((a[17]>='0'&&a[17]<='9')||(a[17]!='x')) { flag=true; } } return flag;}
0 0
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 银行系统
- 一个简单的Windows驱动例程
- unity3d学习笔记(九)--NGUI制作英雄和怪物的头像和血条
- ArcgisserverFlex开发随记1
- activeMQ学习教程--连接配置
- Fedora 16安装后配置总结
- 银行系统
- unity3d学习笔记(十)--NGUI制作中文字体
- Android视图绘制流程完全解析,带你一步步深入了解View(二)
- 搭建struts2环境及struts2的一般请求响应流程的理解
- ssh 无密码登录
- jquery 中 注册鼠标右键单击事件
- Cisco统一计算系统和Cisco统一数据中心架构。
- framework上传下载文件(form表单和服务器端接口)
- xifire webservice 接口 带头信息安全验证的实例