总结一下为何编出来如此简陋的原因:1:我刚开始就按照现在学的来函数定义公有,私有定义。。。。但是一系列的麻烦把我逼迫成全部公有。。。。:我刚开始是打算把所有函数都在Bank类中声明的,但是转账功能实在是想不透用类怎么进行了,毕竟需要引用一个只有用户知道的对象,需要在主函数进行好多操作,引入文件等等,牵连太多了。这弄的我把所有函数排除在类之外了。。。3:想用动态对象数组创建吧,结果老是不成,后来成了还溢出,就又改成普通的了。最后就是哪里有麻烦把哪里简化转化,无所不用,为了函数能够运行,我也是费劲了心思啊。然后就成了现在这种毫无特点,毫无条理的一个可以运行服务的程序了,而且我只测试了前三四个输入操作,实在是编的恶心了,从昨天十点开始,编了改,然后在编,编了删,在编,昨晚到了十一点,今天又到了现在。请各位帮忙完善服务以及找出BUG 谢谢了。
#include <iostream>
#include "stdio.h"
#include "stdlib.h"
#include "Cstring"
#include "fstream"
using namespace std;
void insalefile();
void outsalefile();
void infile();
void outfile();
bool IDstate();
bool Password(int numb,int key);
void Point_out();
void Choose();
void Open();
void Cancel();
void Save();
void Draw();
void Display();
void Transfer();
void Report_loss();
bool Hanging_solution();
void Micronesia();
void Stop();
class Sale
{
public:
bool Pass(int);
int Go;
int person;
};
class Bank
{
public:
int Numb;
int Key;
string Name;
string IDcard;
double Dollar;
int state;//0:正常;1:挂失;已销户:2;
};
Bank bank[1000];
Sale sale;
int numb;
void insalefile()
{
ifstream infile("Banksaleman.txt",ios::in);
if(!infile)
{
cout<<"open error"<<endl;
exit(1);
}
infile>>sale.Go>>sale.person;
infile.close();
}
bool Sale::Pass(int go)
{
if(Go==go)
return true;
else
return false;
}
void outsalefile()
{
ofstream outfile("Banksaleman.txt",ios::out);
if(!outfile)
{
cout<<"open error"<<endl;
exit(1);
}
outfile<<sale.Go<<" "<<sale.person;
outfile.close();
}
void in_file()
{
ifstream infile("man.txt",ios::in);
if(!infile)
{
cout<<"open error"<<endl;
exit(1);
}
for(int i=0; i<sale.person; i++)
{
infile>>bank[i].Numb>>bank[i].Key>>bank[i].Name>>bank[i].IDcard>>bank[i].Dollar>>bank[i].state;
}
infile.close();
}
void out_file()
{
ofstream outfile("Bankman.txt",ios::out);
if(!outfile)
{
cout<<"open error"<<endl;
exit(1);
}
for(int i=0; i<sale.person; i++)
{
outfile<<bank[i].Numb<<" "<<bank[i].Key<<" "<<bank[i].Name<<" "<<bank[i].IDcard<<" "<<bank[i].Dollar<<" "<<bank[i].state;
}
outfile.close();
}
bool Password(int numb,int key)
{
if(numb<622000)
return false;
else
{
if (bank[numb-622000].Key==key && bank[numb-622000].Numb==numb)
return true;
else
return false;
}
}
bool IDstate()
{
if(bank[numb-622000].state==0)
return true;
else
return false;
}
void Point_out()
{
cout << "请选择您需要的功能: " << endl;
cout << "+ 再开一个账户: 1 +" << endl;
cout << "+ 销户:2 存款:3 取款:4 +" << endl;
cout << "+ 信息:5 转账:6 挂失:7 +" << endl;
cout << "+ 解挂:8 改密:9 退出:0 +" << endl;
}
void Choose()
{
int number;
cin >> number;
switch (number)
{
case 1:
Open();
break;
case 2:
Cancel();
break;
case 3:
Save();
break;
case 4:
Draw();
break;
case 5:
Display();
break;
case 6:
Transfer();
break;
case 7:
Report_loss();
break;
case 8:
Hanging_solution();
break;
case 9:
Micronesia();
break;
case 0:
Stop();
break;
}
}
void Open()
{
int i;
cout<<"请输入你的姓名"<<endl;
cin>>bank[sale.person].Name;
cout<<"请输入你的身份证后六位"<<endl;
cin>>bank[sale.person].IDcard;
int key;
for(i=0; i<3; i++)
{
cout<<"请输入您的密码"<<endl;
cin>>bank[sale.person].Key;
cout<<"请再次输入密码"<<endl;
cin>>key;
if(bank[(sale.person)].Key==key)
{
cout<<"输入正确"<<endl;
break;
}
else
cout<<"请重新输入"<<endl;
}
if(i<10)
{
cout<<"请输入您要存入的钱数"<<endl;
cin>>bank[(sale.person)].Dollar;
bank[sale.person].Numb=sale.person+622000;
bank[sale.person].state=0;
sale.person++;
numb++;
cout<<"*****开户成功******"<<endl;
cout<<endl;
Display();
}
else
{
cout<<"对不起,开户失败"<<endl;
Stop();
}
}
void Cancel()
{
int i;
cout<<"您确定要注销账户吗?"<<endl;
cout<<"0:确定 ,其他键取消"<<endl;
cin>>i;
if(i==0)
{
bank[numb-622000].state=2;
cout<<"用户已注销,退出服务,如需其他服务,请重新登录系统"<<endl;
Stop();
}
else
{
cout<<"服务已取消"<<endl;
Display();
}
}
void Save()
{
int dollar;
cout << "请输入存款金额: " << endl;
cin >> dollar;
bank[numb-622000].Dollar += dollar;
Display();
}
void Draw()
{
int dollar;
cout << "请输入取款金额: "<< endl;
cin >> dollar;
bank[numb-622000].Dollar -= dollar;
Display();
}
void Display()
{
cout << "尊敬的 " << bank[numb-622000].Name << " 先生您好,您是第" << sale.person<< "位用户" << endl;
cout<<"您的账号为"<<bank[numb-622000].Numb<<endl;
cout<<"您的身份证号码为:"<<bank[numb-622000].IDcard<<endl;
cout << "您的当前账户余额为: " << bank[numb-622000].Dollar << endl;
if(bank[numb-622000].state==0)
cout<<"您的账户当前状态为:正常"<<endl;
else if(bank[numb-622000].state==1)
cout<<"您的账户当前状态为:挂失"<<endl;
else if(bank[numb-622000].state==2)
cout<<"您的账户当前状态为:已注销"<<endl;
Point_out();
Choose();
}
void Transfer()
{
int dollar,num,i;
cout << "请输入转账金额" << endl;
cin >> dollar;
cout<<"请输入转账账号"<<endl;
cin>>num;
if(num>sale.person)
cout<<"账号不存在,转账取消"<<endl;
else
{
cout<<"您要转入账户的姓名是:"<<bank[num-622000].Name<<endl;
cout<<"输入 0确定,1取消"<<endl;
cin>>i;
if(i==0)
{
if(bank[num].state==0)
{
bank[numb-622000].Dollar -= dollar;
bank[num-622000].Dollar += dollar;
cout<<"转账成功"<<endl;
}
else if(bank[num].state==1)
cout<<"对不起,您所转账账户已经挂失,转账取消"<<endl;
else if(bank[num].state==3)
cout<<"对不起,您所转账账户已注销.转账取消"<<endl;
}
else cout<<"转账已取消"<<endl;
}
Display();
}
void Report_loss()
{
int i;
cout<<"您是否要挂失 0 确定,1取消"<<endl;
cin>>i;
if(i==0)
{
bank[numb-622000].state=1;
}
else cout<<"功能取消"<<endl;
Display();
}
bool Hanging_solution()
{
cout<<"请输入您的用户名和密码"<<endl;
string name;
int key;
cin>>name>>key;
if(Password(numb,key))
{
bank[numb-622000].state=0;
return true;
}
else
{
cout<<"对不起。您的输入有误,无法解挂"<<endl;
return false;
}
}
void Micronesia()
{
int key,key1,key2,i;
cout<<"请输入原密码:"<<endl;
for(i=0; i<3; i++) //由于已经用密码登陆,故再次输入密码次数不受限制
{
cin>>key;
if(bank[numb-622000].Key==key)
{
while(1)
{
cout<<"请输入您的修改密码"<<endl;
cin>>key1;
cout<<"请再次输入"<<endl;
cin>>key2;
if(key1==key2)
{
bank[numb-622000].Key=key1;
cout<<"输入正确"<<endl;
break;
}
else
{
cout<<"两次输入密码不符,请重新输入"<<endl;
cout<<"请输入您的修改密码"<<endl;
cin>>key1;
cout<<"请再次输入"<<endl;
cin>>key2;
}
}
break;
}
else
cout<<"原密码输入不正确,请重新输入"<<endl;
}
if(i==3)
{
cout<<"对不起,您的密码输入三次错误,服务退出"<<endl;
Stop();
}
else
Display();
}
void Stop()
{
cout<<"程序退出,欢迎下次光临"<<endl;
exit(1);
}
int main()
{
int i;
int go;
int key;
insalefile();
for(i=0; i<3; i++)
{
cout<<"请输入业务员密码"<<endl;
cin>>go;
if(sale.Pass(go))
{
cout<<"欢迎登陆银行系统,请输入您的账号和密码:"<<endl;
in_file();
for(i=0; i<3; i++)
{
cin>>numb; //号码从622000开始 都以622为开头
cin>>key;
if(Password(numb,key))
{
cout<<"登陆成功,正在判断您的用户状态..."<<endl;
if(IDstate())
{
Display();
}
else
{
if(bank[numb-622000].state==1)
{
cout<<"您的银行卡已经挂失"<<endl;
cout<<"请选择:0:退出 , 8解挂"<<endl;
int i;
cin>>i;
if(i==0)
Stop();
else if(i==8)
{
cout<<"开始解挂..."<<endl;
if(Hanging_solution())
{
cout<<"解挂成功"<<endl;
Display();
}
else cout<<"解挂失败"<<endl;
}
}
else if(bank[numb-622000].state==2)
{
cout<<"对不起,您的用户名已经注销"<<endl;
cout<<"请选择 0:退出,1 :重新开户"<<endl;
cin>>i;
if(i==0)
Stop();
else if(i==1)
cout<<"正在开户..."<<endl;
Open();
}
}
}
else cout<<"账号或密码错误,请重新输入"<<endl;
}
}
else
cout<<"服务员密码错误,请重新输入"<<endl;
}
outsalefile();
out_file();
if(i==3)
cout<<"三次错误,登出"<<endl;
return 0;
}