/*
* 程序的版权和版本声明部分
* Copyright (c)2012, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: zhizhen.cpp
* 作 者:纪子龙
* 完成日期:2012年12月26日
* 版本号: v1.0
* 输入描述:无
* 问题描述:无
*/
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <iomanip>
using namespace std;
#define MAXACCOUNTNUMBER 20000//银行中最大的账户数量
#define INITNUMBER 10001;//银行卡的开号初始值
int size=0;//银行中银行卡数量
void work(); //工作菜单
void openac();//开户
long autoCreament();//账号自加
void closeac();//销户
int searchAccount(long accNumber);//查找账号
void withdraw(); //取款
void despoit(); //存款
void inq();//查询
int wdpass(int n);//输账号的同时验证密码是否正确
void transfer();//转账
void welcome();//欢迎界面
void changepassword();//修改密码
void withdrawclac(int n);
struct Account
{
long accNumber; //卡号
char accName[20]; //户主
char accPwd[10]; //密码
double balance; //余额
char flag[6]; //卡的状态
};
Account array[MAXACCOUNTNUMBER];//银行中所有卡
void printAccount(Account acc);//显示卡的信息
int main()
{
welcome();
int i;
char loginName[20];
char loginPwd[20];
for(i=0;i<3;i++)
{
cout<<"请输入用户名:";
cin>>loginName;
cout<<"请输入密码:";
cin>>loginPwd;
if(strcmp(loginName,"admin")==0&&strcmp(loginPwd,"admin")==0)
{
work();
break;
}else{
cout<<"用户名或密码输入错误"<<endl;
cout<<"这是您第"<<i+1<<"次输入错误,输错三次账号冻结"<<endl;
}
}
return 0;
}
void welcome()
{ int i;
cout<<"+";
for(i=0;i<30;i++)
cout<<"-";
cout<<"+"<<endl;
for(i=0;i<3;i++)
{
cout<<"|";
for(i=0;i<30;i++)
{
cout<<" ";
}
cout<<"|"<<endl;
}
cout<<"| 储 蓄 平 台 欢 迎 您 |"<<endl;
for(i=0;i<3;i++)
{
cout<<"|";
for(i=0;i<30;i++)
{
cout<<" ";
}
cout<<"|"<<endl;
}
cout<<"+";
for(i=0;i<30;i++)
cout<<"-";
cout<<"+"<<endl;
}
void work()
{
int n;
cout<<"|------------------------------|"<<endl;
cout<<"| 1. 开 户 2. 销 户 |"<<endl;
cout<<"| 3. 存 款 4. 取 款 |"<<endl;
cout<<"| 5. 查 询 6. 转 账 |"<<endl;
cout<<"| 7. 修改密码 8. 退 出 |"<<endl;
cout<<"|------------------------------|"<<endl;
cout<<"请输入要选择的功能代号"<<endl;
cin>>n;
if(n<0||n>9)
{
cout<<"输错不要着急"<<endl;
fflush(stdin);
getchar();
work();
}
switch(n){
case 8:
cout<<"谢谢您,欢迎下次再来"<<endl;
break;
case 1:
openac(); //开户
break;
case 2:
closeac();
break;
case 3:
despoit();
break;
case 4:
withdraw();
break;
case 5:
inq();
break;
case 6:
transfer();
break;
case 7:
changepassword();
break;
}
return ;
}
void openac()//开户
{
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();
work();
}
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;
}
void closeac()//销户
{
long accNum;//销户的账号
int pos,q;
int n;
cout<<"请输入要销户的账号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1){
//卡号有误
cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;
//...
closeac();
}
else{
q=wdpass(pos);
if(q==-1)
{
cout<<"连续输错三次,账号已冻结"<<endl;
}
else
{
cout<<"是否将账号内的余额取出,是请输入1,否请输入2"<<endl;
cin>>n;
if(n==1)
{
withdrawclac(pos);//取款
strcpy(array[pos].flag,"销户");
cout<<"销户成功,按任意键返回"<<endl;
printAccount(array[pos]);
fflush(stdin);
getchar();
work();
}
if(n==2)
{
strcpy(array[pos].flag,"销户");
cout<<"销户成功,按任意键返回"<<endl;
printAccount(array[pos]);
fflush(stdin);
getchar();
work();
}
}
}
return ;
}
void withdraw()//取款
{
long accNum;//取款的账号
int money,pos;
int q;
cout<<"请输入取款的账号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1){
//卡号有误
cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;
//...
withdraw();
}else{
q=wdpass(pos);
if(q==-1)
{
cout<<"连续输错三次,账号已冻结"<<endl;
}
else
{
cout<<"请输入取款金额:";
cin>>money;
if(money>0)
{
if(money>array[pos].balance)
{
cout<<"余额不足"<<endl;
cout<<"按任意键返回"<<endl;
fflush(stdin);
getchar();
work();
}
else
{
cout<<"取款前卡的信息:"<<endl;
printAccount(array[pos]);
//找到了该卡号所对应的卡
array[pos].balance-=money;
//展示存款后卡的信息
cout<<"取款后卡的信息:"<<endl;
printAccount(array[pos]);
cout<<"取款成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
work();
}
}else{
cout<<"不要着急再输一次"<<endl;
withdraw();
}
}
}
return ;
}
int wdpass(int n)
{
char password[10];
int i,m=-1;
for(i=1;i<4;i++)
{
cout<<"请输入密码:";
cin>>password;
if(strcmp(array[n].accPwd,password)==0)
{
return n;
break;
}
else
{
cout<<"这是您第"<<i<<"次密码输入错误"<<endl;
}
}
return m;
}
void inq()//查询
{
long accNum;//查询的账号
int pos,q;
cout<<"请输入要查询的账号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1){
//卡号有误
cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;
//...
inq();
}else{
q=wdpass(pos);
if(q==-1)
{
cout<<"您已连续输错3次密码无法查看该账号信息"<<endl;
cout<<"按任意键返回"<<endl;
fflush(stdin);
getchar();
work();
}
else
printAccount(array[pos]);
fflush(stdin);
getchar();
work();
}
return ;
}
int searchAccount(long accNumber)//查找账号
{
int i,pos=-1;
for(i=0;i<size;i++)
{
if(array[i].accNumber==accNumber)
{
if(strcmp(array[i].flag,"正常")==0)
{
//找到了这张卡
pos=i;
break;
}else{
cout<<"该账户已销户"<<endl;
}
}
}
return pos;
}
void despoit()
{
long accNum;//存款的账号
int pos,type,days;
double money,rate,period,interest; //存款的金额,利率,
cout<<"请输入存款的账号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1){
//卡号有误
cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;
//...
despoit();
}else{
cout<<"请输入存款金额:";
cin>>money;
if(money>=0)
{
cout<<"1.活期存款:";
cout<<"2.3个月:";
cout<<"3.6个月:";
cout<<"4.一年:";
cout<<"5.两年:";
cout<<"6.三年:";
cout<<"7.五年:";
cout<<"请选择存款类型:";
cin>>type;
switch(type)
{
case 1:cout<<"请输入存款天数:";
cin >> days;
period = days/360.0;
rate = 0.005;
break;
case 2:
period = 0.25;
rate = 0.031;
break;
case 3: period = 0.5;
rate = 0.033;
break;
case 4: period = 1;
rate = 0.035;
break;
case 5: period = 2;
rate = 0.044;
break;
case 6: period = 3;
rate = 0.05;
break;
case 7: period = 5;
rate = 0.055;
break;
}
interest=money*rate*period;
cout << "到期利息为:" << interest << "元,本息合计共"<< interest + money <<"元。"<<endl;
//展示下存款前卡的信息
cout<<"存款前卡的信息:"<<endl;
printAccount(array[pos]);
//找到了该卡号所对应的卡
array[pos].balance+=money;
//展示存款后卡的信息
cout<<"存款后卡的信息:"<<endl;
printAccount(array[pos]);
cout<<"存款成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
work();
}
else
{
cout<<"别着急再输一次"<<endl;
despoit();
}
}
return ;
}
void transfer()
{
long accNum1,accNum2;//取款的账号
int money,pos1,pos2;
int q;
cout<<"请输入转款的账号:";
cin>>accNum1;
pos1=searchAccount(accNum1);
if(pos1==-1){
//卡号有误
cout<<"卡号不存在或该卡已销户,请重新输入卡号"<<endl;
//...
transfer();
}else{
q=wdpass(pos1);
if(q==-1)
{
cout<<"连续输错三次,账号已冻结"<<endl;
}
else
{
cout<<"请输入转款金额:";
cin>>money;
if(money>array[pos1].balance)
{
cout<<"余额不足"<<endl;
cout<<"按任意键返回"<<endl;
fflush(stdin);
getchar();
work();
}
else
{
cout<<"转款前卡的信息:"<<endl;
printAccount(array[pos1]);
cout<<"请输入要转入的账号"<<endl;
cin>>accNum2;
pos2=searchAccount(accNum2);
if(pos2==-1)
{
//卡号有误
cout<<"卡号不存在,请重新输入卡号"<<endl;
//...
transfer();
}else{
array[pos1].balance-=money;
array[pos2].balance+=money;
cout<<"转出卡转款后的信息"<<endl;
printAccount(array[pos1]);
}
}
}
}
return ;
}
void changepassword()
{
long accNum;//修改密码的账号
int pos;
int q;
char newpass1[10];
char newpass2[10];
cout<<"请输入修改密码的账号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1){
//卡号有误
cout<<"卡号不存在,请重新输入卡号"<<endl;
//...
changepassword();
}else{
q=wdpass(pos);
if(q==-1)
{
cout<<"连续输错三次,账号已冻结"<<endl;
}else{
cout<<"请输入新密码:";
cin>>newpass1;
cout<<"请再次输入刚刚输入的新密码:";
cin>>newpass2;
if(strcmp(newpass1,newpass2)==0)
{
strcpy(array[pos].accPwd,newpass1);
cout<<"修改后账号信息为"<<endl;
printAccount(array[pos]);
cout<<"修改密码成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
work();
}else{
cout<<"前后两次密码输入不一致"<<endl;
changepassword();
}
}
}
return ;
}
void withdrawclac(int n)
{
int money;
cout<<"请输入取款金额:";
cin>>money;
if(money>0)
{
if(money>array[n].balance)
{
cout<<"余额不足"<<endl;
cout<<"按任意键返回"<<endl;
fflush(stdin);
getchar();
work();
}
else
{
cout<<"取款前卡的信息:"<<endl;
printAccount(array[n]);
//找到了该卡号所对应的卡
array[n].balance-=money;
//展示存款后卡的信息
cout<<"取款后卡的信息:"<<endl;
printAccount(array[n]);
}
}else{
cout<<"不要着急再输一次"<<endl;
withdrawclac(n);
}
return ;
}
年终任务_银行系统
最新推荐文章于 2021-07-22 17:33:30 发布