/*
*程序的版权和版本声明部分:
*Copyright(c)2013,烟台大学计算机学院学生
*All rights reserved.
*文件名称:
*作者:田成琳
*完成日期:2013年 12月 23 日
*版本号:v1.0
*对任务及求解方法的描述部分:
*输入描述: - -
*问题描述:银行来了
*程序输出:- -
*问题分析:
*算法设计:
*/
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cstring>
#include<cstdlib>
#include <conio.h>
using namespace std;
const string guanli="tcl";
const string guanlipassword="12345";
struct accout
{
int accoutnum; //用户名
char name[10]; //试用者姓名
char indentity[18]; //身份证号
char password[7]; //密码
int state; //卡号状态
double banlance; //余额
string fstate;
};
void menu();
void zhuchose();
bool password(char[]);
void openaccout();
bool indentity(char[]);
void zhuangtai(int);
void find();
int search(int);
int kahao=10000,state=1;
accout array[20000];
int size=0;
void cunkuan();
void qukuan();
void xiaohu();
bool ykahao(int);
bool zhangmiyizhi(int,char[]);
void zhuanzhang();
void gaimi();
int main()
{
menu();
return 0;
}
void menu()
{
//菜单界面
char guanliname[10];
string password;
int n=0,l=0;
cout<<" +---------------------------------+"<<endl;
cout<<" | |"<<endl;
cout<<" | |"<<endl;
cout<<" | 欢迎使用TCL储蓄综合业务平台 |"<<endl;
cout<<" | |"<<endl;
cout<<" | |"<<endl;
cout<<" +---------------------------------+"<<endl;
cout<<"请输入您的用户名:";
while(cin>>guanliname&&guanliname!=guanli)
{
if(n<3)
{
cout<<"管理员账号错误!请重新输入:";
n++;
}
if(n==3&&guanliname!=guanli)
{
exit(0);
}
}
if(guanliname==guanli)
{
cout<<"请输入您的密码:";
}
while(cin>>password&&password!=guanlipassword)
{
if(l<3)
{
cout<<endl<<"管理员密码错误!请重新输入:";
//getpass(password);
l++;
}
if(l==3&&password!=guanlipassword)
{
exit(0);
}
}
if(password==guanlipassword)
{
//管理身份正确,进入主选择界面
zhuchose();
}
}
void zhuchose()
{
int chose;
cout<<" +---------------------------------+"<<endl;
cout<<" | 1.开户 2.查询 |"<<endl;
cout<<" | 3.存款 4.取款 |"<<endl;
cout<<" | 5.销户 6.改密 |"<<endl;
cout<<" | 7.转账 0.退出 |"<<endl;
cout<<" +---------------------------------+"<<endl;
cout<<"请输入您的选择:";
cin>>chose;
switch(chose)
{
case 1:
openaccout();
break;
case 2:
find();
break;
case 3:
cunkuan();
break;
case 4:
qukuan();
break;
case 5:
xiaohu();
break;
case 6:
gaimi();
break;
case 7:
zhuanzhang();
break;
case 0:
exit(0);
default:
cout<<"输入有误,请重新输入:"<<endl;
}
}
void openaccout()
{
//开户界面
char mima1[7],mima2[7],ident[19];
bool flag=false;
cout<<"请输入用户名密码:";
while(cin>>mima1&&!password(mima1))
{
//控制密码规范
cout<<"输入的密码不规范!请重新输入:";
}
cout<<"请再次输入用户名密码:";
while(cin>>mima2&&!password(mima2))
{
cout<<"输入的密码不规范!请重新输入:";
}
if(strcmp(mima1,mima2)==0)
{
flag=true;
}
while(!flag)
{
//两次密码不一致,要求重新输入
cout<<"两次密码输入不一致,请重新输入:";
while(cin>>mima2&&!password(mima2))
{
cout<<"输入的密码不规范!请重新输入:";
}
if(strcmp(mima1,mima2)==0)
{
flag=true;
}
}
if(flag)
{
strcpy(array[size].password,mima1);
cout<<"密码设置成功!";
array[size].accoutnum=kahao++;
cout<<"请输入使用者姓名:";
cin>>array[size].name;
cout<<"请输入使用者身份证号:";
while(cin>>ident&&!indentity(ident))
{
//控制身份证号规范
cout<<"输入不规范,请重新输入用户身份证号:";
}
strcpy(array[size].indentity,ident);
cout<<"请输入存入金额:";
cin>>array[size].banlance;
array[size].state=state;
cout<<"开户成功!"<<endl;
size++;
zhuangtai(size-1);
zhuchose();
}
}
bool password(char a[])
{
//验证密码是否规范
bool flag=true;
int i,l;
l=strlen(a);
if(l!=6)
{
flag=false;
}
for(i=0; i<6; ++i)
{
if(!(a[i]>='0'&&a[i]<='9'))
{
flag=false;
break;
}
}
return flag;
}
bool indentity(char a[])
{
//验证身份证号是否正确
bool flag=true;
int i,l;
l=strlen(a);
if(l!=18)
{
flag=false;
}
if(!(a[17]>='0'&&a[17]<='9')&&a[17]!='x'&&a[17]!='X')
{
flag=false;
}
else
{
for(i=0; i<17; i++)
{
if(!(a[i]>='0'&&a[i]<='9'))
{
flag=false;
break;
}
}
}
return flag;
}
void zhuangtai(int position)
{
string fstate;
switch(array[position].state)
{
case 1:
fstate="正常";
break;
case 2:
fstate="挂失";
break;
case 3:
fstate="冻结";
break;
case 4:
fstate="销户";
break;
default:
break;
}
cout<<"+------------------------------------------------------------+"<<endl;
cout<<"| 账 号 "<<" 姓 名 "<<" 证 件 号 码 "<<" 余 额 "<<" 状 态 |"<<endl;
cout<<"| "<<array[position].accoutnum<<setw(9)<<array[position].name<<" "<<array[position].indentity<<" "<<array[position].banlance<<" "<<fstate<<" |"<<endl;
cout<<"+------------------------------------------------------------+"<<endl;
}
void find()
{
//查询
int fkahao;
char fmima[7];
int zhanghao=0,mim=0,position;
cout<<"请输入卡号:";
while(cin>>fkahao&&!ykahao(fkahao))
{
cout<<"无此卡号!请重新输入:";
zhanghao++;
if(zhanghao==3)
{
exit(0);
}
}
cout<<"请输入密码:";
while(cin>>fmima&&!zhangmiyizhi(fkahao,fmima))
{
cout<<"密码错误!请重新输入:";
mim++;
if(mim==3)
{
exit(0);
}
}
position=search(fkahao);
zhuangtai(position);
zhuchose();
}
void cunkuan()
{
//存款
int money,z,fkahao;
cout<<"请输入卡号:";
while(cin>>fkahao&&!ykahao(fkahao))
{
cout<<"无此卡号!请重新输入:";
}
z=search(fkahao);
cout<<"请输入存款金额:";
while(cin>>money&&money<0)
{
cout<<"输入金额有误,请重新输入:";
}
array[z].banlance+=money;
cout<<"存款成功!"<<endl;
zhuangtai(z);
zhuchose();
}
void qukuan()
{
//取款
int i,money,fkahao,zhanghao=0,mim=0;
char fmima[7];
cout<<"请输入卡号:";
while(cin>>fkahao&&!ykahao(fkahao))
{
cout<<"无此卡号!请重新输入:";
zhanghao++;
if(zhanghao==3)
{
exit(0);
}
}
cout<<"请输入密码:";
while(cin>>fmima&&!zhangmiyizhi(fkahao,fmima))
{
cout<<"密码错误!请重新输入:";
mim++;
if(mim==3)
{
exit(0);
}
}
i=search(fkahao);
cout<<"请输入取款金额:";
while(cin>>money&&money>array[i].banlance)
{
cout<<"金额输入有误!请重新输入:";
}
array[i].banlance-=money;
cout<<"取款成功!";
zhuangtai(i);
zhuchose();
}
void xiaohu()
{
//销户,挂失等操作
int i,j,fkahao,zhanghao=0,mim=0;
char fmima[7],yes;
cout<<"请输入卡号:";
while(cin>>fkahao&&!ykahao(fkahao))
{
cout<<"无此卡号!请重新输入:";
cin>>fkahao;
zhanghao++;
if(zhanghao==3)
{
exit(0);
}
}
cout<<"请输入密码:";
while(cin>>fmima&&!zhangmiyizhi(fkahao,fmima))
{
cout<<"密码错误!请重新输入:";
mim++;
if(mim==3)
{
exit(0);
}
}
if(ykahao(fkahao))
{
i=search(fkahao);
cout<<"请选择操作;"<<endl;
cout<<"1.冻结"<<endl;
cout<<"2.解冻"<<endl;
cout<<"3.挂失"<<endl;
cout<<"4.销户"<<endl;
cin>>j;
switch(j)
{
case 1:
cout<<"确认冻结吗?y/Y确定,其他键取消:";
cin>>yes;
if(yes=='y'||yes=='Y')
{
array[i].state=3;
cout<<"冻结成功!"<<endl;
}
break;
case 2:
cout<<"确认解冻吗?y/Y确定,其他键取消:";
cin>>yes;
if(yes=='y'||yes=='Y')
{
array[i].state=1;
cout<<"解冻成功!"<<endl;
}
break;
case 3:
cout<<"确认挂失吗?y/Y确定,其他键取消:";
cin>>yes;
if(yes=='y'||yes=='Y')
{
array[i].state=2;
cout<<"挂失成功!"<<endl;
}
break;
case 4:
cout<<"确认销户吗?y/Y确定,其他键取消:";
cin>>yes;
if(yes=='y'||yes=='Y')
{
array[i].state=4;
cout<<"销户成功!"<<endl;
}
break;
default:
cout<<"输入有误!请重新输入:";
cin>>j;
}
}
zhuangtai(i);
zhuchose();
}
void zhuanzhang()
{
//转账
int i=0,j=0,zhang,money,l,fkahao,zhanghao=0,mim=0;
char fmima[7];
cout<<"请输入卡号:";
while(cin>>fkahao&&!ykahao(fkahao))
{
cout<<"无此卡号!请重新输入:";
cin>>fkahao;
zhanghao++;
if(zhanghao==3)
{
exit(0);
}
}
cout<<"请输入密码:";
while(cin>>fmima&&!zhangmiyizhi(fkahao,fmima))
{
cout<<"密码错误!请重新输入:";
mim++;
if(mim==3)
{
exit(0);
}
}
l=search(fkahao);
cout<<"请输入要转入的账号:";
while(cin>>zhang&&!ykahao(zhang))
{
cout<<"无此账号!请重新输入账号:";
cin>>zhang;
j++;
if(j==3);
{
exit(0);
}
}
cout<<"请输入转账金额:";
while(cin>>money&&array[l].banlance<money)
{
cout<<"金额输入有误!请重新输入:";
cin>>money;
i++;
if(i==3)
{
exit(0);
}
}
}
bool ykahao(int fkahao)
{
//看是否有用户输入的卡号
bool flag=false;
int i;
for(i=fkahao; i>=10000; i--)
{
if(fkahao==i)
{
flag=true;
break;
}
}
return flag;
}
bool zhangmiyizhi(int fkahao,char fmima[])
{
//检查账号密码是否对应
int i;
bool flag=false;
i=search(fkahao);
if(strcmp(array[i].password,fmima)==0)
{
flag=true;
}
return flag;
}
void gaimi()
{
bool flag=false;
int fkahao,zhanghao=0,mim=0,i;
char fmima[7],mima1[7],mima2[7];
cout<<"请输入卡号:";
while(cin>>fkahao&&!ykahao(fkahao))
{
cout<<"无此卡号!请重新输入:";
zhanghao++;
if(zhanghao==3)
{
exit(0);
}
}
cout<<"请输入密码:";
while(cin>>fmima&&!zhangmiyizhi(fkahao,fmima))
{
cout<<"密码错误!请重新输入:";
mim++;
if(mim==3)
{
exit(0);
}
}
i=search(fkahao);
if(strcmp(array[i].password,fmima)==0)
{
cout<<"请输入新密码:";
while(cin>>mima1&&!password(mima1))
{
//控制密码规范
cout<<"输入的密码不规范!请重新输入:";
}
cout<<"请再次输入用户名密码:";
while(cin>>mima2&&!password(mima2))
{
cout<<"输入的密码不规范!请重新输入:";
}
if(strcmp(mima1,mima2)==0)
{
flag=true;
}
while(!flag)
{
//两次密码不一致,要求重新输入
cout<<"两次密码输入不一致,请重新输入:";
while(cin>>mima2&&!password(mima2))
{
cout<<"输入的密码不规范!请重新输入:";
}
if(strcmp(mima1,mima2)==0)
{
flag=true;
}
}
if(flag)
{
strcpy(array[size].password,mima1);
cout<<"密码设置成功!";
}
}
}
int search(int fkahao)
{
//查找卡号对应下标
int position=-1,i;
for(i=0; i<size; i++)
{
if(array[i].accoutnum==fkahao)
{
position=i;
break;
}
}
return position;
}
运行结果:
心得体会:写的较长,其中有bug没来得及修改,先凑合着看哈!