这次敲大作业感受良多,尽管是一个相对简单地题目(也许是我写的功能太少了...)
其中出现了很多很多的bug让我一度崩溃,各种逻辑错误层出不穷,通过反复请教度娘解决了产生bug的人后终于完成了。。
这次的C++代码使用单链表来存储,通过设置密码来限制访问。用结构体作为链表的结点,没有使用类的多态性主要是觉得没有必要。。。下面附上代码吧,把bug解决了之后还是很自豪的,希望毕业了能做个程序猿,工作个三五年之后回头看现在这个代码能好好地批评一顿现在的我,这么垃圾的代码写出来还自豪什么o(▼皿▼メ;)o
#include<iostream>
#include<string>
using namespace std;
struct account
{
int count; //编号
double data; //余额
account *next;
char name[20]; //帐号人姓名
char password[20]; //密码
};
#include<string>
using namespace std;
struct account
{
int count; //编号
double data; //余额
account *next;
char name[20]; //帐号人姓名
char password[20]; //密码
};
class ConsumerList
{
public:
ConsumerList();
~ConsumerList();
int Locate(); //按编号查找
char Get(); //按名字查找
void Add(); //入户
void Delete();
int PrintList(); //遍历所有人的信息
void Print(account *p);
int Deposit(account *p); //存款
int Withdrawal(account *p); //取款
private:
account *first;
int count;
};
{
public:
ConsumerList();
~ConsumerList();
int Locate(); //按编号查找
char Get(); //按名字查找
void Add(); //入户
void Delete();
int PrintList(); //遍历所有人的信息
void Print(account *p);
int Deposit(account *p); //存款
int Withdrawal(account *p); //取款
private:
account *first;
int count;
};
ConsumerList::ConsumerList()
{
first=new account;
first->next=NULL;
first->count=0;
first->data=0;
strcpy(first->name,"NULL");
strcpy(first->password,"0");
}
{
first=new account;
first->next=NULL;
first->count=0;
first->data=0;
strcpy(first->name,"NULL");
strcpy(first->password,"0");
}
ConsumerList::~ConsumerList()
{
account *q=NULL;
while(first!=NULL)
{
q=first;
first=first->next;
delete q;
}
}
{
account *q=NULL;
while(first!=NULL)
{
q=first;
first=first->next;
delete q;
}
}
void ConsumerList::Add()
{
double data;
char *p=new char[20];
char *c=new char[20];
cout<<" 开户人姓名: ";
cin>>p;
cout<<endl<<" 存款数额: ";
cin>>data;
cout<<endl<<" 请设置密码: ";
cin>>c;
account *node=new account;
node->count=0;
node->data=data;
strcpy(node->name,p);
strcpy(node->password,c);
account *a=new account;
account *b=new account;
a=first;
b=first;
int count=0;
while(a!=NULL)
{
b=a;
a=a->next;
node->count=++count;
}
node->next=b->next;
b->next=node;
cout<<" 您账户的编号是: "<<node->count<<endl;
}
{
double data;
char *p=new char[20];
char *c=new char[20];
cout<<" 开户人姓名: ";
cin>>p;
cout<<endl<<" 存款数额: ";
cin>>data;
cout<<endl<<" 请设置密码: ";
cin>>c;
account *node=new account;
node->count=0;
node->data=data;
strcpy(node->name,p);
strcpy(node->password,c);
account *a=new account;
account *b=new account;
a=first;
b=first;
int count=0;
while(a!=NULL)
{
b=a;
a=a->next;
node->count=++count;
}
node->next=b->next;
b->next=node;
cout<<" 您账户的编号是: "<<node->count<<endl;
}
int ConsumerList::Locate()
{
int x,i;
char *a=new char [20];
cout<<" 输入你要查找的用户的编号:";
cin>>x;
account *p=first;
while(p!=NULL)
{
if(p->count==x)
{
cout<<" 请输入密码: ";
cin>>a;
if(strcmp(p->password,a)==0)
{
Print(p);
break;
}
else
{
cout<<" 密码错误";
return 0;
}
}
else p=p->next;
}
if(p==NULL)
{
cout<<" 查找不到,请重试:";
return 0;
}
else do
{
cout<<" 1---存款"<<endl;
cout<<" 2---取款"<<endl;
cout<<" 3---取消"<<endl;
cout<<" ";
cin>>i;
switch(i)
{
case 1:Deposit(p);break;
case 2:Withdrawal(p);break;
case 3:break;
default:cout<<" 错误选择!请重选"<<endl;break;
}
}
while(i!=3);
return 0;
}
{
int x,i;
char *a=new char [20];
cout<<" 输入你要查找的用户的编号:";
cin>>x;
account *p=first;
while(p!=NULL)
{
if(p->count==x)
{
cout<<" 请输入密码: ";
cin>>a;
if(strcmp(p->password,a)==0)
{
Print(p);
break;
}
else
{
cout<<" 密码错误";
return 0;
}
}
else p=p->next;
}
if(p==NULL)
{
cout<<" 查找不到,请重试:";
return 0;
}
else do
{
cout<<" 1---存款"<<endl;
cout<<" 2---取款"<<endl;
cout<<" 3---取消"<<endl;
cout<<" ";
cin>>i;
switch(i)
{
case 1:Deposit(p);break;
case 2:Withdrawal(p);break;
case 3:break;
default:cout<<" 错误选择!请重选"<<endl;break;
}
}
while(i!=3);
return 0;
}
char ConsumerList::Get()
{
int i;
char *d=new char[20];
char *e=new char[20];
cout<<" 输入你要查找的用户的名字:";
cin>>d;
account *p=first;
while(p!=NULL)
{
if(strcmp(p->name,d)==0)
{
cout<<" 请输入账户密码: ";
cin>>e;
if(strcmp(p->password,e)==0)
{
Print(p);
break;
}
else
{
cout<<" 密码错误";
return 0;
}
}
else p=p->next;
}
if(p==NULL)
{
cout<<" 查找不到,请重试:"<<endl;;
return 0;
}
else do
{
cout<<" 1---存款"<<endl;
cout<<" 2---取款"<<endl;
cout<<" 3---取消"<<endl;
cout<<" ";
cin>>i;
switch(i)
{
case 1:Deposit(p);break;
case 2:Withdrawal(p);break;
case 3:break;
default:cout<<" 错误选择!请重选"<<endl;break;
}
}
while(i!=3);
return 0;
}
{
int i;
char *d=new char[20];
char *e=new char[20];
cout<<" 输入你要查找的用户的名字:";
cin>>d;
account *p=first;
while(p!=NULL)
{
if(strcmp(p->name,d)==0)
{
cout<<" 请输入账户密码: ";
cin>>e;
if(strcmp(p->password,e)==0)
{
Print(p);
break;
}
else
{
cout<<" 密码错误";
return 0;
}
}
else p=p->next;
}
if(p==NULL)
{
cout<<" 查找不到,请重试:"<<endl;;
return 0;
}
else do
{
cout<<" 1---存款"<<endl;
cout<<" 2---取款"<<endl;
cout<<" 3---取消"<<endl;
cout<<" ";
cin>>i;
switch(i)
{
case 1:Deposit(p);break;
case 2:Withdrawal(p);break;
case 3:break;
default:cout<<" 错误选择!请重选"<<endl;break;
}
}
while(i!=3);
return 0;
}
void ConsumerList::Delete()
{
cout<<" 输入你要销户的账户编号: ";
int x;
char *a=new char [20];
cin>>x;
account *p,*q;
q=new account;
p=first;
while(p->count!=x&&p!=NULL)
{
q=p;
p=p->next;
}
cout<<" 请输入账户密码: ";
cin>>a;
if(strcmp(p->password,a)==0)
if(p->next==NULL)
{
q->next=NULL;
delete p;
}
else
{
q=p->next;
cout<<" 您所删除的账户信息为:";
Print(p);
p->data=q->data;
p->count=q->count;
strcpy(p->name,q->name);
p->next=q->next;
delete q;
}
else
{
cout<<" 密码错误,取消销户操作";
}
}
{
cout<<" 输入你要销户的账户编号: ";
int x;
char *a=new char [20];
cin>>x;
account *p,*q;
q=new account;
p=first;
while(p->count!=x&&p!=NULL)
{
q=p;
p=p->next;
}
cout<<" 请输入账户密码: ";
cin>>a;
if(strcmp(p->password,a)==0)
if(p->next==NULL)
{
q->next=NULL;
delete p;
}
else
{
q=p->next;
cout<<" 您所删除的账户信息为:";
Print(p);
p->data=q->data;
p->count=q->count;
strcpy(p->name,q->name);
p->next=q->next;
delete q;
}
else
{
cout<<" 密码错误,取消销户操作";
}
}
void ConsumerList::Print(account *p)
{
cout<<" 编号:"<<p->count<<" 余额:"<<p->data<<" 姓名:"<<p->name<<endl;
}
{
cout<<" 编号:"<<p->count<<" 余额:"<<p->data<<" 姓名:"<<p->name<<endl;
}
int ConsumerList::PrintList()
{
char *p=new char[20];
cout<<" 请输入密码:";
cin>>p;
cout<<endl;
if(strcmp(p,"123456789")==0);
else
{
cout<<" 密码错误"<<endl;
return 0;
}
account *q=new account;
q=first;
while(q!=NULL)
{
q=q->next;
if(q==NULL)
{
cout<<" 本系统先阶段暂无客户开户信息,请等有客户开户后再使用本功能";
return 0;
}
else
Print(q);
}
return 0;
}
{
char *p=new char[20];
cout<<" 请输入密码:";
cin>>p;
cout<<endl;
if(strcmp(p,"123456789")==0);
else
{
cout<<" 密码错误"<<endl;
return 0;
}
account *q=new account;
q=first;
while(q!=NULL)
{
q=q->next;
if(q==NULL)
{
cout<<" 本系统先阶段暂无客户开户信息,请等有客户开户后再使用本功能";
return 0;
}
else
Print(q);
}
return 0;
}
int ConsumerList::Deposit(account *p)
{
int x;
cout<<" 存入金额整数:";
cin>>x;
if(x<0)
{
cout<<" 输入错误,请存入大于0的金额数"<<endl;
return 0;
}
else
{
p->data=p->data+x;
return 0;
}
}
{
int x;
cout<<" 存入金额整数:";
cin>>x;
if(x<0)
{
cout<<" 输入错误,请存入大于0的金额数"<<endl;
return 0;
}
else
{
p->data=p->data+x;
return 0;
}
}
int ConsumerList::Withdrawal(account *p)
{
int x;
cout<<" 取出金额整数:";
cin>>x;
if(x>p->data)
{
cout<<" 输入错误,请取出金额数目少于或等于您账户现存余额"<<endl;
return 0;
}
else
{
p->data=p->data-x;
return 0;
}
}
{
int x;
cout<<" 取出金额整数:";
cin>>x;
if(x>p->data)
{
cout<<" 输入错误,请取出金额数目少于或等于您账户现存余额"<<endl;
return 0;
}
else
{
p->data=p->data-x;
return 0;
}
}
int main()
{
ConsumerList a;
int i;
cout<<" 欢迎使用自助银行"<<endl<<endl;
cout<<" 本系统直接连接中国建设银行,拥有开户、销户、查询账户信息、存款、取款功能"<<endl<<endl;
do
{cout<<endl;
cout<<" 1---入户"<<endl;
cout<<" 2---查询名字"<<endl;
cout<<" 3---查询编号"<<endl;
cout<<" 4---销户"<<endl;
cout<<" 5---显示所有人信息(内部人员使用)"<<endl;
cout<<" 6---退出"<<endl;
cout<<" ";
cin>>i;
switch(i)
{
case 1:a.Add();
break;
case 2:a.Get();
break;
case 3:a.Locate();
break;
case 4:a.Delete();
break;
case 5:a.PrintList();
break;
case 6: break;
default:cout<<" 错误选择!请重选";
break;
}
}while(i!=6);
cout<<"谢谢使用自助银行系统,祝您一路顺风";
return 0;
}
{
ConsumerList a;
int i;
cout<<" 欢迎使用自助银行"<<endl<<endl;
cout<<" 本系统直接连接中国建设银行,拥有开户、销户、查询账户信息、存款、取款功能"<<endl<<endl;
do
{cout<<endl;
cout<<" 1---入户"<<endl;
cout<<" 2---查询名字"<<endl;
cout<<" 3---查询编号"<<endl;
cout<<" 4---销户"<<endl;
cout<<" 5---显示所有人信息(内部人员使用)"<<endl;
cout<<" 6---退出"<<endl;
cout<<" ";
cin>>i;
switch(i)
{
case 1:a.Add();
break;
case 2:a.Get();
break;
case 3:a.Locate();
break;
case 4:a.Delete();
break;
case 5:a.PrintList();
break;
case 6: break;
default:cout<<" 错误选择!请重选";
break;
}
}while(i!=6);
cout<<"谢谢使用自助银行系统,祝您一路顺风";
return 0;
}