问题及代码
/*
* Copyright (c) 2015, 烟台大学计算机学院
* All rights reserved.
* 文件名称:test.cpp
* 作 者:辛彬
* 完成日期:2015 年 2 月 24 日
* 版 本 号:v1.0
*
* 问题描述:制作一个银行储蓄系统。
* 输入描述:各种指令。
* 程序输出:各种信息。
*/
#include<iostream>
#include<conio.h>
#include<cstdio>
#include<cstring>
using namespace std;
char username[100]="xinbin";
char password[10]="123456";
int i=0;
struct Account
{
long accNumber;//卡号
char accName[100];//户主
char password[10];//密码
double balance;//余额
string identity;//身份证号
int state=2;//状态 0:正常 -1:挂失 2:销户
};
Account array[2000];
long Number=10001;
bool cinpassword();
int choice();
char* writepassword();
void kaihu();
void xiaohu();
void cunkuan();
void qukuan();
void chaxun();
void zhuanzhang();
void guashi();
void jiegua();
void gaimi();
int main()
{
int n;
cout<<"+------------------------+"<<endl;
cout<<"+ 欢迎光临辛氏银行 +"<<endl;
cout<<"+------------------------+"<<endl;
if(cinpassword())
{
while(n=choice())
{
switch(n)
{
case 1:
kaihu();
break;
case 2:
xiaohu();
break;
case 3:
cunkuan();
break;
case 4:
qukuan();
break;
case 5:
chaxun();
break;
case 6:
zhuanzhang();
break;
case 7:
guashi();
break;
case 8:
jiegua();
break;
case 9:
gaimi();
break;
case 0:
return 0;
}
}
}
}
char* writepassword()
{
char passwordn[10];
int index=0;
while(1)
{
char ch;
ch=getch();
if(ch=='\r')
{
passwordn[index]='\0';
cout<<endl;
break;
}
else
{
cout<<"*";
passwordn[index++]=ch;
}
}
return passwordn;
}
bool cinpassword()
{
char username1[100];
char password1[10];
int m=3;
while(m)
{
if(m!=3)
cout<<"用户名或密码输入错误。"<<endl;
cout<<"请输入业务员用户名:";
cin>>username1;
cout<<"请输入密码:";
strcpy(password1,writepassword());
if((strcmp(username1,username)!=0)||strcmp(password1,password)!=0)
m--;
else
{
cout<<endl;
return true;
}
}
return false;
}
int choice()
{
int n;
cout<<"+------------------------+"<<endl;
cout<<"+ 1 开户 2 销户 3 存款 +"<<endl;
cout<<"+ 4 取款 5 查询 6 转账 +"<<endl;
cout<<"+ 7 挂失 8 解挂 9 改密 +"<<endl;
cout<<"+ 0 退出 +"<<endl;
cout<<"+------------------------+"<<endl;
cout<<"请输入查询指令:";
cin>>n;
return n;
}
void kaihu()
{
char password1[10];
char password2[10];
cout<<"正在开户"<<endl;
cout<<"账号"<<Number<<endl;
array[++i].accNumber=Number++;
cout<<"户主姓名:";
cin>>array[i].accName;
while(1)
{
cout<<"密码:";
strcpy(password1,writepassword());
cout<<"确认密码:";
strcpy(password2,writepassword());
if(strcmp(password1,password2)==0)
{
strcpy(array[i].password,password1);
cout<<"存入金额:";
cin>>array[i].balance;
array[i].state=0;
cout<<"开户成功!"<<endl;
cout<<endl;
return;
}
else
{
cout<<"两次密码错误,请核对后输入"<<endl;
continue;
}
}
}
void xiaohu()
{
char name[100];
char password1[10];
char ch;
int n,m;
while(1)
{
cout<<"待销户账号:";
cin>>n;
m=n-10000;
if(array[m].state==0)
{
while(1)
{
cout<<"姓名:";
cin>>name;
cout<<"密码:";
strcpy(password1,writepassword());
if(strcmp(name,array[m].accName)!=0||strcmp(password1,array[m].password)!=0)
{
cout<<"用户名或密码错误!"<<endl;
continue;
}
else
{
cout<<"余额:"<<array[m].balance<<endl;
while(1)
{
cout<<"确认销户?(y/n)";
cin>>ch;
if(ch=='y')
{
array[m].state=2;
cout<<"取款"<<array[m].balance<<"元,销户成功!"<<endl;
return;
}
else if(ch=='n')
{
cout<<"销户失败!"<<endl;
return;
}
else
{
cout<<"输入错误!"<<endl;
continue;
}
}
}
}
}
else
{
cout<<"无法销户!该账户未开通或已挂失。"<<endl;
continue;
}
}
}
void cunkuan()
{
char name[100];
int m,n;
double money;
while(1)
{
cout<<"账号:";
cin>>n;
m=n-10000;
if(array[m].state==0)
{
while(1)
{
cout<<"姓名:";
cin>>name;
if(strcmp(name,array[m].accName)==0)
{
cout<<"存款额:";
cin>>money;
array[m].balance+=money;
cout<<"现余额共计"<<array[m].balance<<"元,存款成功!"<<endl;
return;
}
else
{
cout<<"姓名错误!"<<endl;
continue;
}
}
}
else
{
cout<<"该账户不存在或已注销!"<<endl;
continue;
}
}
}
void qukuan()
{
char name[100];
char password1[10];
int m,n;
double money;
while(1)
{
cout<<"账号:";
cin>>n;
m=n-10000;
if(array[m].state==0)
{
while(1)
{
cout<<"姓名:";
cin>>name;
cout<<"密码:";
strcpy(password1,writepassword());
if(strcmp(name,array[m].accName)==0&&strcmp(password1,array[m].password)==0)
{
while(1)
{
cout<<"取款额:";
cin>>money;
if(money<=array[m].balance)
{
array[m].balance-=money;
cout<<"现余额共计"<<array[m].balance<<"元,取款成功!"<<endl;
return;
}
else
{
cout<<"余额不足,取款失败!"<<endl;
continue;
}
}
}
else
{
cout<<"姓名或密码错误!"<<endl;
continue;
}
}
}
else
{
cout<<"该账户不存在或已注销!"<<endl;
continue;
}
}
}
void chaxun()
{
char name[100];
char password1[10];
int m,n;
while(1)
{
cout<<"账号:";
cin>>n;
m=n-10000;
if(array[m].state==2)
{
cout<<"该账户未开通!"<<endl;
return;
}
else if(array[m].state==-1)
{
cout<<"该账户已挂失!"<<endl;
return;
}
else
while(1)
{
cout<<"姓名:";
cin>>name;
cout<<"密码:";
strcpy(password1,writepassword());
if(strcmp(name,array[m].accName)==0&&strcmp(password1,array[m].password)==0)
{
cout<<"余额:"<<array[m].balance<<endl;
cout<<"当前状态:正常"<<endl;
cout<<"查询完毕!"<<endl;
return;
}
else
{
cout<<"姓名或密码错误!"<<endl;
continue;
}
}
}
}
void zhuanzhang()
{
char name[100];
char password1[10];
int m,n,i,j;
double money;
while(1)
{
cout<<"转出账号:";
cin>>n;
m=n-10000;
if(array[m].state==0)
{
while(1)
{
cout<<"姓名:";
cin>>name;
cout<<"密码:";
strcpy(password1,writepassword());
if(strcmp(name,array[m].accName)==0&&strcmp(password1,array[m].password)==0)
{
while(1)
{
cout<<"转账金额:";
cin>>money;
if(money<=array[m].balance)
{
cout<<"转入账号:";
cin>>i;
j=i-10000;
if(array[j].state==0)
{
array[j].balance+=money;
cout<<"转账成功!余额"<<array[m].balance-money<<"元。"<<endl;
return;
}
else
{
cout<<"转账失败!转入账号不存在或已挂失!"<<endl;
return;
}
}
else
{
cout<<"余额不足,请重新输入转账金额!"<<endl;
continue;
}
}
}
else
{
cout<<"用户名或密码输入错误,请重新输入!"<<endl;
continue;
}
}
}
else
{
cout<<"转账失败!该账户不存在。"<<endl;
continue;
}
}
}
void guashi()
{
char name[100];
char password1[10];
int m,n;
while(1)
{
cout<<"账号:";
cin>>n;
m=n-10000;
if(array[m].state==0)
{
while(1)
{
cout<<"姓名:";
cin>>name;
cout<<"密码:";
strcpy(password1,writepassword());
if(strcmp(name,array[m].accName)==0&&strcmp(password1,array[m].password)==0)
{
array[m].state=-1;
cout<<"挂失成功!"<<endl;
return;
}
else
{
cout<<"姓名或密码错误!"<<endl;
continue;
}
}
}
else
{
cout<<"该账户不存在或已挂失!"<<endl;
continue;
}
}
}
void jiegua()
{
char name[100];
char password1[10];
int m,n;
while(1)
{
cout<<"账号:";
cin>>n;
m=n-10000;
if(array[m].state==-1)
{
while(1)
{
cout<<"姓名:";
cin>>name;
cout<<"密码:";
strcpy(password1,writepassword());
if(strcmp(name,array[m].accName)==0&&strcmp(password1,array[m].password)==0)
{
array[m].state=0;
cout<<"解挂成功!"<<endl;
return;
}
else
{
cout<<"姓名或密码错误!"<<endl;
continue;
}
}
}
else
{
cout<<"该账户未挂失!"<<endl;
continue;
}
}
}
void gaimi()
{
char name[100];
char passwordo[10];
char password1[10];
char password2[10];
int m,n;
while(1)
{
cout<<"账号:";
cin>>n;
m=n-10000;
if(array[m].state==0)
{
while(1)
{
cout<<"姓名:";
cin>>name;
cout<<"密码:";
strcpy(passwordo,writepassword());
if(strcmp(name,array[m].accName)==0&&strcmp(password1,array[m].password)==0)
{
while(1)
{
cout<<"新密码:";
strcpy(password1,writepassword());
cout<<"确认密码:";
strcpy(password2,writepassword());
if(strcmp(password1,password2)==0)
{
strcpy(passwordo,password1);
cout<<"修改成功!"<<endl;
return;
}
else
{
cout<<"密码不一致,请确认后重新输入!"<<endl;
continue;
}
}
}
else
{
cout<<"姓名或密码错误!"<<endl;
continue;
}
}
}
else
{
cout<<"该账户不存在或已挂失!"<<endl;
continue;
}
}
}