实训:银行系统(销户还未作,等待更新)
来源:互联网 发布:java。 大数据 编辑:程序博客网 时间:2024/05/21 17:16
#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]; //卡的状态};//结构体结束符(切记,别漏掉!!!)void Welcome();//欢迎函数void Denglu();//登陆函数void Mainmenu();//主界面void Chose();//选择函数void Exit();//退出函数void OpenAnAccount();//开户函数void Deposit();//存款函数void GoDeposit();//进入存款void Query();//查询函数void GoQuery();//进入查询void Withdraw();//取款函数void GoWithdraw();//进入取款void CloseAnAccount();//销户函数//输出指定卡的信息void printAccount(Account acc);//根据卡号查找卡在数组中的下标int searchAccount(long accNumber);//银行中所有卡Account array[MAXACCOUNTNUMBER];//银行中卡的数量(全局变量)int size=0;//生成银行中自增卡号long autoCreament();//定义全局变量用作密码、用户名const char Mima[10]="admin";const char Yonghuming[10]="admin";int main(){ Welcome(); Denglu(); return 0;}//欢迎界面void Welcome(){ cout<<"*********************************************"<<endl; cout<<"** **"<<endl; cout<<"** 欢迎使用储蓄综合业务平台 **"<<endl; cout<<"** **"<<endl; cout<<"*********************************************"<<endl;}//登陆系统void Denglu(){ int i; char str1[10],str2[10];//用于输入用户名和密码 cout<<"请输入用户名:"; cin>>str1;//输入用户名 if(strcmp(str1,Yonghuming)==0) { cout<<endl; cout<<"请输入登陆密码:"; cin>>str2; if(strcmp(str2,Mima)==0)//判断密码是否正确 { cout<<"*********************************************"<<endl; cout<<"** 欢迎登陆储蓄综合业务平台 **"<<endl; cout<<"*********************************************"<<endl; Mainmenu(); //正确,进入系统 } else { for(i=2;i>0;--i) { cout<<"密码错误,请重新输入:(您还有"<<i<<"次机会)";//密码不正确,三次输入机会,三次不正确,退出 cin>>str2; cout<<endl; if(strcmp(str2,Mima)==0) { cout<<"*********************************************"<<endl; cout<<"** 欢迎登陆储蓄综合业务平台 **"<<endl; cout<<"*********************************************"<<endl; Mainmenu(); break; } if(i==1)//三次没输正确 { cout<<"您连续三次输错密码,请到前台找回密码,谢谢合作!"; break; } } } } else { cout<<"该用户名不存在."<<endl; //用户名错误 Denglu();//重新返回登陆界面 }}//主菜单void Mainmenu(){ cout<<"*********************************************"<<endl; cout<<"** 1.开户 4.取款 **"<<endl; cout<<"** 2.销户 5.查询 **"<<endl; cout<<"** 3.存款 0.退出 **"<<endl; cout<<"*********************************************"<<endl; Chose();}//选择进入其他业务void Chose(){ int choice; cout<<"请输入您的选择:";//输入选择 cin>>choice; if(choice>=0&&choice<=5) { switch(choice)//分别进入不同业务 { case 0: Exit(); break; case 1: OpenAnAccount(); break; case 2: CloseAnAccount(); break; case 3: Deposit(); break; case 4: Withdraw(); break; case 5: Query(); break; } } else { cout<<"输入有误,请核实后重新输入!";//输入有误 Mainmenu(); Chose(); }}void OpenAnAccount(){ cout<<"*********************************************"<<endl; cout<<"** 欢迎进入开户系统 **"<<endl; cout<<"*********************************************"<<endl; cout<<"请输入户名:"; cin>>array[size].accName; cout<<"请输入密码:"; //输入并保存数据 cin>>array[size].accPwd; cout<<"请输入金额:"; cin>>array[size].balance; strcpy(array[size].flag,"正常");//*******记住 array[size].accNumber=autoCreament(); printAccount(array[size]); size++; cout<<"开户成功,按任意键返回..."<<endl; fflush(stdin); getchar(); Mainmenu();//返回主菜单}//生成银行中自增卡号long autoCreament(){ if(size==0) { return INITNUMBER; } else { return array[size-1].accNumber+1;//以前最后一位户主的卡号加一作为新户主的卡号 }}//销户界面void CloseAnAccount(){ cout<<"*********************************************"<<endl; cout<<"** 欢迎进入销户系统 **"<<endl; cout<<"*********************************************"<<endl;}//存款界面void Deposit(){ cout<<"*********************************************"<<endl; cout<<"** 欢迎进入存款系统 **"<<endl; cout<<"*********************************************"<<endl; GoDeposit();}//取款界面void Withdraw(){ cout<<"*********************************************"<<endl; cout<<"** 欢迎进入取款系统 **"<<endl; cout<<"*********************************************"<<endl; GoWithdraw();}//查询界面void Query(){ cout<<"*********************************************"<<endl; cout<<"** 欢迎进入查询系统 **"<<endl; cout<<"*********************************************"<<endl; GoQuery();}//退出界面void Exit(){ cout<<"*********************************************"<<endl; cout<<"**谢谢您使用储蓄综合业务平台,欢迎下次光临 **"<<endl; cout<<"*********************************************"<<endl;}void GoDeposit(){ long accNum;//存款的账号 double money;//存款的金额 int pos; cout<<"请输入存款的账号:"; cin>>accNum; pos=searchAccount(accNum); if(pos==-1) { //卡号有误 cout<<"卡号不存在,请重新输入卡号"<<endl; GoDeposit(); }else { cout<<"请输入存款金额:"; cin>>money; //展示下存款前卡的信息 cout<<"存款前卡的信息:"<<endl; printAccount(array[pos]); //存款后的余额 array[pos].balance+=money; //展示存款后卡的信息 cout<<"存款后卡的信息:"<<endl; printAccount(array[pos]); cout<<"存款成功,按任意键返回"<<endl; fflush(stdin); getchar(); Mainmenu();//返回主菜单 }}void GoWithdraw(){ long accNum;//取款的账号 char accnum[10];//密码一定要定义成char数组,注意!!! double money;//取款的金额 int pos; cout<<"请输入取款的账号:"; cin>>accNum; pos=searchAccount(accNum); if(pos==-1) { //卡号有误 cout<<"卡号不存在,请重新输入卡号"<<endl; GoWithdraw(); } else//卡号正确,进入 { cout<<"请输入密码:"; cin>>accnum;//输入密码 if(strcmp(array[pos].accPwd,accnum)==0) { cout<<"请输入取款金额:"; cin>>money; if(array[pos].balance<money) { cout<<"您的余额不足,无法取出!!!"<<endl; GoWithdraw(); } else { //展示下取款前卡的信息 cout<<"取款前卡的信息:"<<endl; printAccount(array[pos]); //取款后的余额 array[pos].balance-=money; //展示取款后卡的信息 cout<<"取款后卡的信息:"<<endl; printAccount(array[pos]); cout<<"取款成功,按任意键返回"<<endl; fflush(stdin); getchar(); Mainmenu();//返回主菜单 } } else { cout<<"输入密码有误!"<<endl; GoWithdraw();//返回 } }}void GoQuery(){ long accNum;//查询的账号 char accnum[10];//密码一定要定义成char数组,注意!!! int pos; cout<<"请输入您要查询的账号:"; cin>>accNum; pos=searchAccount(accNum); if(pos==-1) { //卡号有误 cout<<"卡号不存在,请重新输入卡号"<<endl; GoWithdraw(); } else//卡号正确,进入 { cout<<"请输入密码:"; cin>>accnum;//输入密码 if(strcmp(array[pos].accPwd,accnum)==0) { cout<<"您的卡的信息为:"<<endl; printAccount(array[pos]); cout<<"查询成功,按任意键返回"<<endl; fflush(stdin); getchar(); Mainmenu();//返回主菜单 } else { cout<<"输入密码有误!"<<endl; GoQuery();//返回 } }}//输出指定卡的信息void printAccount(Account acc){ cout<<"+--------------------------------------------+"<<endl; cout<<"|"<<setiosflags(ios::left)<<setw(8)<<"卡号"<<"|"<<setw(8)<<"户名"<<"|"<<setw(8)<<"密码"<<"|"<<setw(8)<<"金额"<<"|"<<setw(8)<<"状态"<<"|"<<endl; cout<<"+--------------------------------------------+"<<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){ //找到了这张卡 pos=i; break; } } return pos;}