65,186
社区成员




#include<iostream>
#include<fstream>
#include<string>
#include<stdlib.h>
#define N 10000 //最大账户数目
using namespace std;
int sign[N];//全局变量,账号是否使用中的标记
class Account
{
public:
Account()
{
arrNum=0;
}
void show();
~Account(){}
friend class AccountList;
void sav();//存款
void tak();//取款
private:
string name,id,company,tel,address,date[10];//姓名,身份证,单位,电话,地址,存取日期,暂设定存储十次交易记录
int num,pwd;//账号,密码
float money,m[10];//余额,存取金额
char type[10];// 存/取
int arrNum;// 记录数组已存储的记录数
};
class AccountList
{
private:
Account a[N];
int NUM; //计算账户数目
int count; //暂时记录当前操作的账号编号
public:
void add();//开户
void del();//销户
void tra(int x);//转账
void ent();//进入账户管理
void que(int y);//查询
void save();//以文件形式保存
void load();//从文件中读取
int getNum();//生成账号
void menu();//输出目录
void exi();//退出系统
AccountList(){
NUM=0;
count=0;
}
};
//主菜单
void AccountList::menu()
{
int n;
cout<<"欢迎来到银行账户管理系统!"<<endl<<endl;
cout<<"请选择相应的序号进行操作:"<<endl;
cout<<"1> 开户操作"<<endl<<"2> 销户操作"<<endl<<"3> 账户管理"<<endl<<"4> 退出系统"<<endl;
cout<<"->";
cin>>n;
while (n<1||n>4) {
cout<<"请输入正确的数字(1~4)!"<<endl;
cout<<"->";
cin>>n;
}
switch (n) {
case 1:add();break;
case 2:del();break;
case 3:ent();break;
case 4:exi();break;
}
}
//退出页面
void AccountList::exi()
{
save();
cout<<"谢谢使用,再见!"<<endl;
system("pause");
exit(0);
}
//账号生成
int AccountList::getNum()
{
for (int i=0;i<N;i++) {
if (sign[i]==0) {
return 10000+i;
}
}
return 0;
}
//开户
void AccountList::add()
{
cout<<"请输入个人信息:"<<endl;
cout<<"姓名\t身份证号\t单位\t电话\t地址"<<endl;
cin>>a[NUM].name>>a[NUM].id>>a[NUM].company>>a[NUM].tel>>a[NUM].address;
cout<<"请输入密码:"<<endl;
cin>>a[NUM].pwd;
a[NUM].num=getNum();
cout<<"您的帐号是:"<<a[NUM].num<<endl;
sign[NUM]=1;
NUM++;
count=NUM;
system("pause");
menu();
}
//销户
void AccountList::del()
{
if(NUM<=0)
{
cout<<"没有账户信息,系统将返回主菜单!"<<endl;
menu();
}
else
cout<<"请输入需要注销的账号:"<<endl;
int num1;
int num2;
cin>>num1;
int j=0,k=0;
int flag=1;
while(flag)
{
for(;j<count;j++)
{
if(num1==a[j].num)
{
flag=0;
k=j;
break;
}
}
if(flag)
{
cout<<"不存在此账户,请重新输入:"<<endl;
j=0;
cin>>num1;
}
}
cout<<"请输入密码:"<<endl;
while(!flag)
{
cin>>num2;
if(num2==a[k].pwd)
flag=1;
else
cout<<"密码错误!请重新输入:";
}
cout<<"所选账户信息为:";
cout<<"账号\t姓名\t余额\t身份证号\t工作单位\t电话号码\t地址"<<endl;
cout<<a[k].num<<'\t'<<a[k].name<<'\t'<<a[k].money<<'\t'<<a[k].id<<'\t'<<a[k].company<<'\t'<<a[k].tel<<'\t'<<a[k].address<<endl;
a[k].num=0;
a[k].name="";
a[k].id="";
sign[k]=0;
count--;
cout<<"账户信息已删除!"<<endl;
system("pause");
menu();
}
//进入个人账户
void AccountList::ent()
{
int num1;
int num2;
cout<<"请输入账号:";
cin>>num1;
int flag=1;
int i=0;
while((i<count)&&(flag))
{
if(num1==a[i].num) flag=0;
else i++;
}
if(flag)
{
cout<<"账号不存在!"<<endl;
system("pause");
menu();
}
cout<<"请输入密码:";
while(!flag)
{
cin>>num2;
if(num2==a[i].pwd)
flag=1;
else
cout<<"密码错误!请重新输入:";
}
int n;
do
{
system("cls");
cout<<"登陆成功!请选择所需操作:"<<endl<<endl;
cout<<"1>存款"<<endl<<"2>取款"<<endl<<"3>转账"<<endl<<"4>查询"<<endl<<"5>返回主菜单"<<endl<<endl;
cin>>n;
switch(n)
{
case 1:a[i].sav();break;
case 2:a[i].tak();break;
case 3:tra(i);break;
case 4:que(i);break;
case 5:menu();break;
}
}while(1);
}
//存款
void Account::sav()
{
float c;
char ch;
do
{
cout<<endl<<"请输入存款数目:"<<endl<<"->";
cin>>c;
while(c<=0)
{
cout<<"请输入正确的数字!"<<endl;
cout<<"->";
cin>>c;
}
money+=c;
if (arrNum==10) {
for (int i=0; i<9; i++) {
date[i]=date[i+1];
m[i]=m[i+1];
type[i]=type[i+1];
}
// date[arrNum]=get
m[arrNum]=c;
type[arrNum]='s';
}
cout<<endl<<"操作成功!"<<endl;
cout<<"是否要继续存款?(Y/N)"<<endl;
cout<<"->";
cin>>ch;
while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y')
{
cout<<"->";
cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
//取款
void Account::tak()
{
float m;
char ch;
do
{
cout<<endl<<"请输入取款数目:"<<"->"<<endl;
cin>>m;
while(m<=0)
{
cout<<"请输入正确的数字!"<<endl;
cout<<"->";
cin>>m;
}
if(money<m)
{
cout<<"余额不足!"<<endl;
system("pause");
tak();
}
else
{
money-=m;
cout<<endl<<"操作成功"<<endl;
}
cout<<"是否要继续取款?(Y/N)"<<endl;
cout<<"->";
cin>>ch;
while(ch!='n'&&ch!='N'&&ch!='y'&&ch!='Y')
{
cout<<"->";
cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
//转账
void AccountList::tra(int x)
{
int num1;
int flag=1;
int i=0;
float t;
cout<<"请输入对方账号:";
cin>>num1;
while((i<count)&&(flag))
{
if(num1==a[i].num) flag=0;
else i++;
}
if(flag)
{
cout<<"账号不存在!"<<endl;
system("pause");
menu();
}
cout<<endl<<"请输入金额:";
cin>>t;
while(t<=0)
{
cout<<"请输入正确的数字!"<<endl;
cout<<"->";
cin>>t;
}
if (a[x].money<t)
{
cout<<"余额不足!"<<endl;
tra(x);
}
else
{
a[x].money-=t;
a[i].money+=t;
cout<<"转账成功!"<<endl;
system("pause");
menu();
}
}
//查询
void AccountList::que(int y)
{
int q;
cout<<"请选择查询内容:"<<endl<<endl;
cout<<"1>查询当前帐户信息"<<endl;
cout<<"2>查询用户所有账户"<<endl;
cout<<"0>返回主菜单"<<endl;
cout<<"->";
cin>>q;
while (q<0||q>2)
{
cout<<"输入有误,请重新输入:";
cin>>q;
}
if (q==1)
{
cout<<"账号\t姓名\t余额\t身份证号\t工作单位\t电话号码\t地址"<<endl;
cout<<a[y].num<<'\t'<<a[y].name<<'\t'<<a[y].money<<'\t'<<a[y].id<<'\t'<<a[y].company<<'\t'<<a[y].tel<<'\t'<<a[y].address<<'\t'<<endl;
cout<<"账户存取记录"<<endl;
cout<<"操作时间\t存取金额\t操作类型";
for(int i=0;i<a[y].arrNum;i++)
{
cout<<a[y].date[i]<<'\t'<<a[y].m[i]<<'\t'<<a[y].type[i]<<endl;
}
}
else if (q==2)
{
cout<<"姓名:"<<a[y].name<<"\t身份证号:"<<a[y].id<<endl<<"所有账户:"<<endl;
for (int i=0; i<NUM; i++)
if (a[i].id==a[y].id)
cout<<"->"<<a[i].num;
}
else if (q==0) menu();
}
//账户信息存入文件
void AccountList::save()
{
if(NUM<=0)
{
cout<<"没有账户信息,系统将返回主菜单。"<<endl;
menu();
}
else
{
ofstream fout;
fout.open("D:\\Account.txt",ios::out);
cout<<"文件正在保存……请稍后!"<<endl;
fout<<count<<endl;
for(int i=0;i<count;i++)
{
fout<<a[i].num<<'\t'<<a[i].name<<'\t'<<a[i].money<<'\t'<<a[i].id<<'\t'<<a[i].company<<'\t'<<a[i].tel<<'\t'<<a[i].address<<'\t'<<a[i].pwd<<'\t'<<a[i].arrNum<<'\t';
for (int j=0; j<a[i].arrNum;j++)
{
fout<<a[i].date[j]<<'\t'<<a[i].m[j]<<'\t'<<a[i].type[j];
}
}
cout<<"账户信息保存成功!!"<<endl;
cout<<"系统返回主菜单"<<endl;
system("pause");
fout.close();
}
}
void AccountList::load()
{
ifstream fin;
fin.open("D:\\Account.txt",ios::in);
if(!fin)
{
cerr<<"尚无资料!"<<endl;
return;
}
fin>>count;
for(int i=0;i<count;i++)
{
fin>>a[i].num>>a[i].name>>a[i].money>>a[i].id>>a[i].company>>a[i].tel>>a[i].address>>a[i].pwd>>a[i].arrNum;
for (int j=0;j<a[i].arrNum;j++) {
fin>>a[i].date[j]>>a[i].m[j]>>a[i].type[j];
}
}
}
int main()
{
AccountList al;
al.load();
al.menu();
return 0;
}