C++银行管理系统
本文没有完整代码,想找作业的就别在这浪费时间了
最近实在是闲来无事,想着重新温习一下之前c++的一个大作业:银行管理系统,C++当时学的十分痛苦,毕竟是从面向过程到面向对象转变的过程,十分不理解为什么非要封装起来,为什么要写那么多函数来回调用,但是现在明白回来,真正在学习的痛苦的时候,那正是长知识的最快的时候。
账户内部设置
将每一个用户账户封装为对象,其中包括账号、密码、余额等,还有获得密码设置密码账户等的方法,后续还可以拓展更多。
创建对象数组,即预估总共的用户数量,这个有较大的限制,我也想过将用户文件等写入文件,读出文件的方法,也想过使用数据库存储的方法;为了最快写出框架,就简单写了一点。
希望就当个段子看了吧
代码
#include <iostream>
#include <sstream>
using namespace std;
void menu();
string inchangestr(int x);
void regisid();
void regispas();
void usregister();
void uslogin();
int checkid(int x);
bool checkpass(int x);
void clean();
void mainmenu(int id);
class Bankuser{
public:
int getaccount();
string getpassword();
void setaccount(int x);
void setpassword(string p);
private:
int count;
string pass="";
double balence=0.00;
};
int Bankuser::getaccount()
{
return count;
}
string Bankuser::getpassword()
{
return pass;
}
void Bankuser::setaccount(int x)
{
count=x;
}
void Bankuser::setpassword(string p)
{
pass=p;
}
//Bankuser bankuser;
Bankuser bank[100];
int associat[100][2]={0};
int num=0,t=0;
void menu(){
int f;
cout<<"******************************************************"<<endl;
cout<<" 请输入你要进行的操作 "<<endl;
cout<<" 1.注册账户 "<<endl;
cout<<" 2.登录账户 "<<endl;
cout<<"******************************************************"<<endl;
cin>>f;
if(f==1){
//system("cls");
clean();
usregister();
}
else if(f==2){
uslogin();
clean();
//system("cls");
}
else{
cout<<"操作有误,请重新输入"<<endl;
clean();
menu();
}
}
void clean(){
cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;
//cout<<endl;cout<<endl;//cout<<endl;cout<<endl;cout<<endl;cout<<endl;
//cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<endl;
}
string inchangestr(int x){ //int 型转换为string类型
stringstream s;
s<<x;
string ss;
s>>ss;
return ss;
}
void regisid(){ //注册存入账户
int counts;
cout<<"******************************************************"<<endl;
cout<<" 请输入你要注册的账号(4位数字):";
cin>>counts;
cout<<endl;
bank[num].setaccount(counts);
int x=bank[num].getaccount();
string str=inchangestr(x);
cout<<" 你的账号是:"+str<<endl;
}
void regispas(){ //注册存入密码
string password1,password2;
cout<<" 请第一遍输入你的密码:(8位以内数字或字母):";
cin>>password1;
cout<<endl;
cout<<" 请第二遍输入你的密码:";
cin>>password2;
cout<<"******************************************************"<<endl;
cout<<endl;
if(password1==password2){
cout<<"注册成功"<<endl;
cout<<"******************************************************"<<endl;
bank[num].setpassword(password1);
}
else{
clean();
cout<<"******************************************************"<<endl;
cout<<" 两次密码输入不一致,请重新输入"<<endl;
regispas();
}
}
void usregister(){ //实现注册功能
regisid();
regispas();
//string str= inchangestr(bank[num].getaccount());
//cout<<"注册成功,您的账号是:"+str<<endl;
associat[num][1]=bank[num].getaccount();
num++;
clean();
uslogin();
}
void uslogin(){ //实现登录功能
int id,bankuserid=0;
string password;
cout<<"******************************************************"<<endl;
cout<<" 请输入你的账号和密码 "<<endl;
cout<<" 账号:";
cin>>id;
cout<<endl;
int m=checkid(id);
if(m==-1){
cout<<" 查无此账号,请重新输入"<<endl;
cout<<"******************************************************"<<endl;
cout<<endl;
clean();
uslogin();
}
t=0;
if(checkpass(m)) {
cout << "******************************************************" << endl;
clean();
mainmenu(m);
}
else{
cout<<" 密码错误,请重新输入"<<endl;
uslogin();
}
//cout<<"登录测试成功";
}
int checkid(int x){
int f=0,i;
for(int i=0;i<100;i++){
if(x==associat[i][1]){
f=i;
return f;
}
else{
return -1;
}
}
return -1;
}
bool checkpass(int x){
string password;
cout<<" 密码:";
cin>>password;
cout<<endl;
string pass=bank[x].getpassword();
if(pass==password)
return true;
else{
cout<<"输入错误,请重新输入你的密码"<<endl;
t++;
if(t==3){
cout<<"你已经三次输入密码错误"<<endl;
clean();
uslogin();
}
else
checkpass(x);
}
return false;
}
void mainmenu(int id){//传入账号,执行下一步对对象的操作
int f;
cout<<"*******************************************************"<<endl;
cout<<" 请输入你要执行的操作:"<<endl;
cout<<" 1.存款"<<endl;
cout<<" 2.取款"<<endl;
cout<<" 3.查询余额"<<endl;
cout<<" 4.修改密码"<<endl;
cout<<"*******************************************************"<<endl;
cin>>f;
switch (f) {
case 1:
cout<<"测试存款成功"<<endl;
break;
case 2:
cout<<"测试取款成功"<<endl;
break;
case 3:
cout<<"测试查询金额成功"<<endl;
break;
case 4:
cout<<"修改密码测试"<<endl;
break;
default:
clean();
cout<<"输入操作有误,请重新进行"<<endl;
mainmenu(id);
break;
}
}
int main() {
menu();
return 0;
}
总结
说是写代码练手,实际上写银行管理,连存款取款都没得写,哈哈哈哈哈哈,还希望我将来没事还能想到这个东西。写到一半我认为对我的帮助没有很大了,都是些简单的逻辑结构,新学的一点设计模式应用起来还没得头绪,等再写个新的小项目再用设计模式,这就当是对之前C++的纪念了,嘿嘿