您的位置:首页 > 其它

储蓄综合平台——(取款,查询,存款,销户,开户)

2012-12-27 10:06 274 查看
/*
* Copyright (c) 2012, 烟台大学计算机学院
* All rights reserved.
* 作    者:  袁静
* 完成日期:2012 年 12 月26日
* 版 本 号:v1.0
*
* 输入描述:无
* 问题描述:
* 算法设计:略
* 问题分析:
* 程序输出:
*/
#include <iostream>
#include <string.h>
#include <stdio.h>
#include <iomanip>
using namespace std;

//银行中最大的账户数量
#define MAXACCOUNTNUMBER 20000
//银行卡的开号初始值
#define INITNUMBER 10001

struct Account
{
long accNumber;   //卡号
char accName[20]; //户主
char accPwd[10];  //密码
double balance;   //余额
char flag[6];     //卡的状态
};
//银行中所有卡
Account array[MAXACCOUNTNUMBER];
//银行中银行卡数量
int size=0;

//欢迎界面
void welcome();
//主界面
void mainFrame();
//生成银行中自增卡号
long autoCreament();
//开户
void openAccount();
//存款
void deposit();
void drawmoney();
void closeAccount();
void showbalance();
void printAccount(Account acc);
//根据卡号查找卡在数组中的下标
int searchAccount(long accNumber);
void tuichu();

int main()
{
char loginName[20];
char loginPwd[20];
int i;
//欢迎界面
welcome();

for(i=0;i<3;i++)
{
cout<<"请输入用户名:";
cin>>loginName;
cout<<"请输入密码:";
cin>>loginPwd;
if(strcmp(loginName,"yuanjing")==0&&strcmp(loginPwd,"sunhonglei")==0)
{
mainFrame();
break;
}else{
cout<<"用户名或密码输入错误"<<endl;
}
}
return 0;
}

void welcome()
{
cout<<"+------------------------------------+"<<endl;
cout<<"                                      "<<endl;
cout<<"------欢迎登录袁氏银行综合储蓄平台---|"<<endl;
cout<<"                                      "<<endl;
cout<<"+------------------------------------+"<<endl;
}

void mainFrame()
{
int order;
cout<<"|----------------------------|"<<endl;
cout<<"|-------1.开户---------------|"<<endl;
cout<<"|-------2.存款---------------|"<<endl;
cout<<"|-------3.取款---------------|"<<endl;
cout<<"|-------4.销户---------------|"<<endl;
cout<<"|-------5.查询---------------|"<<endl;
cout<<"|-------6.退出---------------|"<<endl;
cout<<"|----------------------------|"<<endl;
cout<<"请输入操作指令"<<endl;
cin>>order;
switch(order){
case 1:
openAccount();
break;
case 2:
deposit();
break;
case 3:
drawmoney();
break;
case 4:
closeAccount();
break;
case 5:
showbalance();
break;
case 6:
exit(0);
break ;
default:
break;
}
}

void openAccount()
{
int i;
Account Pwd1;
cout<<"请输入户主:";
cin>>array[size].accName;
for(i=0;i<3;i++)
{
cout<<"请输入密码:";
cin>>array[size].accPwd;
cout<<"请再次输入密码:";
cin>>Pwd1.accPwd;
if(strcmp(Pwd1.accPwd,array[size].accPwd)==0)
{
cout<<"请输入金额:";
cin>>array[size].balance;
strcpy(array[size].flag,"正常");  //确定卡的状态
array[size].accNumber=autoCreament();    //写卡号
printAccount(array[size]);
size++;
cout<<"开户成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
mainFrame();
}else{
if(i==2){
cout<<"密码重复太多次不同!!请重新选择所需业务:\n";
mainFrame();
}else{
cout<<"两次输入的密码不同!请重新确定密码\n";
}
}
}
}

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;
}

/*根据卡号查找卡的下标
* 若返回值>=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;
}

void deposit()
{
long accNum;//存款的账号
double money;//存款的金额
int pos;
cout<<"请输入存款的账号:"<<endl;
cin>>accNum;
if(accNum<0)
{
cout<<"卡号不能为负!!请认真核实!!!\n";
deposit();
}else{
pos=searchAccount(accNum);

if(pos==-1){
//卡号有误
cout<<"卡号不存在,请重新输入卡号"<<endl;
//...
deposit();
}else{
cout<<"请输入存款金额:"<<endl;
cin>>money;
//展示下存款前卡的信息
cout<<"存款前卡的信息:"<<endl;
printAccount(array[pos]);
//找到了该卡号所对应的卡
array[pos].balance+=money;
//展示存款后卡的信息
cout<<"存款后卡的信息:"<<endl;
printAccount(array[pos]);
cout<<"存款成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
mainFrame();
}
}
}
void drawmoney()
{
long accNum;
double  money;
int pos,i;
Account Pwd;
cout<<"请输入卡号:";
cin>>accNum  ;
if(accNum<0)
{
cout<<"卡号不能为负!!请认真核实!!!\n";
drawmoney();
}else{
pos=searchAccount(accNum);
if(pos==-1){
cout<<"卡号不存在!请核!!!\n";
drawmoney();
}else{
for(i=0;i<3;i++)
{
cout<<"请输入密码:";
cin>>Pwd.accPwd;
if(strcmp(array[pos].accPwd,Pwd.accPwd)==0)
{
cout<<"请输入取款金额:";
cin>>money;
if(money<=array[pos].balance)
{
array[pos].balance-=money;
cout<<"取款后的卡的信息:\n";
printAccount(array[pos]);
}else{
cout<<"您的余额不足!请查询您的余额后再取款!!!\n";
mainFrame();
}
fflush(stdin);
getchar();
mainFrame();
}else{
if(i==2){
cout<<"您输入已超过三次!请退出系统......\n";
exit(0);
}else{
cout<<"密码错误!请核!!!\n";
}

}
}

}
}
}
//销户
//销户
void closeAccount()
{
long accNum;
double  money;
int pos,i;
Account Pwd;
cout<<"请输入卡号:";
cin>>accNum  ;
pos=searchAccount(accNum);
if(pos==-1){
cout<<"卡号不存在!请核!!!\n";
closeAccount();
}else{
for(i=0;i<3;i++)
{
cout<<"请输入密码:";
cin>>Pwd.accPwd;
if(strcmp(Pwd.accPwd,array[pos].accPwd)==0)
{
cout<<endl<<"销户前卡的信息:"<<endl;
printAccount(array[pos]);
cout<<"您将进行销户!!!!!!"<<endl;
getchar();
array[pos].balance=0;
array[pos].accNumber=-1;
strcpy(array[pos].flag,"不存在");
strcpy(array[pos].accName,"不存在");
strcpy(array[pos].accPwd,"不存在");
cout<<endl<<"销户后卡的信息:"<<endl;
printAccount(array[pos]);
cout<<endl<<"销户成功,按任意键返回"<<endl;
fflush(stdin);
getchar();
mainFrame();

}
else
{
cout<<endl<<"密码错误!!!不要妄想销别人的户!!!!!"<<endl;
cout<<endl<<"按任意键返回"<<endl;
fflush(stdin);
getchar();
mainFrame();

}
}
}
}
void showbalance()
{
long accNum;
int pos,i;
Account Pwd;
cout<<"请输入卡号:";
cin>>accNum ;
if(accNum<0)
{
cout<<"卡号不能为负!!请认真核实!!!\n";
showbalance();
}else{
pos=searchAccount(accNum);
if(pos==-1)
{
cout<<"卡号不存在!请核!!!\n";
showbalance();
}
else
{
for(i=0;i<3;i++)
{
cout<<"请输入密码:";
cin>>Pwd.accPwd;
if(strcmp(array[pos].accPwd,Pwd.accPwd)==0)
{
cout<<"您的卡的信息为:\n";
printAccount(array[pos]);
cout<<"请按任意键返回!\n";
fflush(stdin);
getchar();
mainFrame();
}
else
{
if(i==2)
{
cout<<"您输入已超过三次!请退出系统......\n";
exit(0);
}
else
{
cout<<"密码错误!请核!!!\n";
}

}
}

}
}
}
void tuichu()
{
cout<<'\n';
cout<<"谢谢您对本银行的支持,再见!";
cout<<'\n';
exit(0);
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐