/*
* Copyright (c) 2012, 烟台大学计算机学院
* All rights reserved.
* 作 者:张浩
* 完成日期:2012 年12月23日
* 版 本 号: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 login(); //登陆
long autoCreament(); //生成银行中自增卡号
void printAccount(Account acc);//输出指定卡的信息
void work(); //操作
void kaihu(); //开户
void xiaohu(); //销户
void cunkuan(); //存款
void qukuan(); //取款
void chaxun(); //查询
void tuichu(); //退出
void cuowu(); //选择错误项的提示
double money=0.0;
int searchAccount(long accNumber);//根据卡号查找卡在数组中的下标
int main()
{
cout<<" ********************************"<<'\n';
cout<<" * *"<<'\n';
cout<<" * 欢迎使用储蓄只综合业务平台 *"<<'\n';
cout<<" * *"<<'\n';
cout<<" ********************************"<<'\n';
login ();
return 0;
}
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 login()
{
char name[20];//定义管理员账号
char mima[20];//定义管理员密码
int i;
for(i=0;i<3;i++)
{
cout<<"请输入管理员账号:";
cin>>name;
cout<<"请输入管理员密码:";
cin>>mima;
if(strcmp(name,"zhanghao")==0&&strcmp(mima,"zhang")==0)
{
work();
}
else{
if(i==2)
{
cout<<"您输入已超过三次,退出系统.....\n";
}
else
{
cout<<"您的用户名或密码错误!请从新输入:\n";
}
}
}
}
void work()
{
char chioce;
cout<<'\n';
cout<<" ********************************"<<'\n';
cout<<" * *"<<'\n';
cout<<" * 1 开户 2 销户 *"<<'\n';
cout<<" * 3 存款 4 取款 *"<<'\n';
cout<<" * 5 查询 6 退出 *"<<'\n';
cout<<" * *"<<'\n';
cout<<" ********************************"<<'\n';
cout<<'\n';
cout<<"请选择业务:";
cin>>chioce;
switch(chioce)
{
case'1':
kaihu();break;
case'2':
//xiaohu();break;
case'3':
cunkuan();break;
case'4':
qukuan();break;
case'5':
chaxun();break;
case'6':
tuichu();break;
default:
cuowu();break;
}
}
void kaihu()
{
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();
work();
}else{
if(i==2){
cout<<"密码重复太多次不同!!请重新选择所需业务:\n";
work();
}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)<<" *"<<setw(8)<<acc.accNumber<<setw(8)<<acc.accName<<setw(8)<<acc.accPwd<<setw(8)<<acc.balance<<setw(8)<<acc.flag<<"*"<<endl;
cout<<" *"<<"*****************************************"<<endl;
}
void cunkuan ()
{
long accNum;
double money;
int pos;
cout<<"请输入存款的卡号:";
cin>>accNum;
pos=searchAccount(accNum);
if(pos==-1)
{
cout<<"卡号不存在!请核对卡号重新输入:\n";
cunkuan ();
}else{
cout<<"存款前的卡的信息:\n";
printAccount(array[pos]);
cout<<"请输入存款金额:";
cin>>money;
array[pos].balance+=money;
cout<<"存款后的卡的信息:\n";
printAccount(array[pos]);
fflush(stdin);
getchar();
work();
}
}
void qukuan() //取款
{
long accNum;
double money;
int pos,i;
Account Pwd;
cout<<"请输入卡号:";
cin>>accNum ;
pos=searchAccount(accNum);
if(pos==-1){
cout<<"卡号不存在!请核!!!\n";
qukuan();
}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";
work();
}
fflush(stdin);
getchar();
work();
}else{
if(i==2){
cout<<"您输入已超过三次!请退出系统......\n";
tuichu();
}else{
cout<<"密码错误!请核!!!\n";
}
}
}
}
}
void chaxun()
{
long accNum;
int pos,i;
Account Pwd;
cout<<"请输入卡号:";
cin>>accNum ;
pos=searchAccount(accNum);
if(pos==-1)
{
cout<<"卡号不存在!请核!!!\n";
chaxun();
}
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();
work();
}
else
{
if(i==2)
{
cout<<"您输入已超过三次!请退出系统......\n";
tuichu();
}
else
{
cout<<"密码错误!请核!!!\n";
}
}
}
}
}
void tuichu()
{
cout<<'\n';
cout<<"谢谢您对本银行的支持,再见!";
cout<<'\n';
exit(0);
}
void cuowu(){
cout<<"请按主页名提示,选择业务!!!!\n";
work();
}
运行结果:
心得体会:来指点指点吧!!!!