标签:
银行储蓄系统包括:支持多名储户开户、存款、取款、转帐、改密、挂失、解挂、销户等功能。
登录
输入业务员用户名和密码。3次输入不正确,强制退出程序。
基本要求
可以只设一名业务员,用全局变量表示其用户名和密码,写在程序中。
系统菜单
当业务员信息验证后,进入到系统主控菜单,由业务员为储户办理各种业务,直到按0后退出。
基本要求
每次启动系统,都是从0用户开始办理业务
开户
账号由系统自动分配
确认密码和密码不同时要拒绝。
开户后,账号状态为0-正常
销户
输入账号,确认后,将余额全部取完,并将状态state置为2-销户。
办理销户的账号,其状态必须为“0-正常“。
存款
输入账号、金额,记录存款后的余额。
取款
输入账号、金额,记录取款后的余额。
取款额不能超过余额。
查询
输入账号,显示账户信息。
转账
输入转出账号、金额、转入账户,记录转账后的余额。
账户必须存在,扣除转出账户的金额,要与转入账户增加的金额相同。
挂失
输入账号,将状态改变为 1-挂失
解挂
输入账号,将状态为 1-挂失 的账户状态改为 0-正常
改密
用新密码替代旧密码。
新密码必须与确认密码相同。
下面是源代码:
bank.h
/***********************************************************
* 版权所有 (C)2015,zhaosong.
*
* 文件名称:bank.cpp
* 文件标识:无
* 内容摘要:该代码为bank类的声明
* 其它说明:无
* 当前版本: V1.0
* 作 者:赵嵩
* 完成日期: 20150717
*
* 修改记录1:
* 修改日期: 20150717
* 版本号: V1.0
* 修改人: zhaosong
* 修改内容:创建
**********************************************************/
#ifndef BANK_H_INCLUDED
#define BANK_H_INCLUDED
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
#include "user.h"
#include "saleman.h"
using namespace std;
class Bank
{
public:
int N=1001;
Bank();
User users[2000];
Salesman sale;
void show_page();
void show_menu();
int open_salesman();
bool compare_salesman();
bool check(long cardnumber);
void bank_work();
void open_user();
void cancel_uesr();
void save_user_money();
void getout_money();
void find_user();
void loss_user();
void solve_card();
void change_password();
void choice_order();
void transfer_money();
void save();
bool compare(long acc,string pass);
};
#endif // BANK_H_INCLUDEDsalesman.h
/***********************************************************
* 版权所有 (C)2015,zhaosong.
*
* 文件名称:bank.cpp
* 文件标识:无
* 内容摘要:该代码为salema类的声明
* 其它说明:无
* 当前版本: V1.0
* 作 者:赵嵩
* 完成日期: 20150717
*
* 修改记录1:
* 修改日期: 20150717
* 版本号: V1.0
* 修改人: zhaosong
* 修改内容:创建
**********************************************************/
#ifndef SALEMAN_H_INCLUDED
#define SALEMAN_H_INCLUDED
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
using namespace std;
class Salesman
{
private:
string name;
int password;
public:
string get_name();
int get_password();
void set_name(string);
void set_password(int);
};
#endif // SALEMAN_H_INCLUDED
user.h
/***********************************************************
* 版权所有 (C)2015,zhaosong.
*
* 文件名称:bank.cpp
* 文件标识:无
* 内容摘要:该代码为user类的声明
* 其它说明:无
* 当前版本: V1.0
* 作 者:赵嵩
* 完成日期: 20150717
*
* 修改记录1:
* 修改日期: 20150717
* 版本号: V1.0
* 修改人: zhaosong
* 修改内容:创建
**********************************************************/
#ifndef USER_H_INCLUDED
#define USER_H_INCLUDED
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
using namespace std;
class User
{
private:
string user_name;
string user_ID_number;
long usercard_number;
double user_money;
int user_status;
string user_password;
public:
void set_users(long cardnumber,string name,string id, string password_1,double money,int status);
string get_password();
double get_money();
string get_name();
string get_ID_number();
int get_status();
long get_card_number();
void set_money(double money);
void set_status(int status);
void set_password(string password);
};
#endif // USER_H_INCLUDEDbank.cpp
/***********************************************************
* 版权所有 (C)2015,zhaosong.
*
* 文件名称:bank.cpp
* 文件标识:无
* 内容摘要:该代码为saleman类的声明和user类的声明
* 其它说明:无
* 当前版本: V1.0
* 作 者:赵嵩
* 完成日期: 20150717
*
* 修改记录1:
* 修改日期: 20150717
* 版本号: V1.0
* 修改人: zhaosong
* 修改内容:创建
**********************************************************/
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
#include "bank.h"
using namespace std;
/*********************************************************
* 功能描述:bank类构造函数
* 输入参数:无
* 输出参数:无
* 返回值:无
* 其它说明:无
************************************************************/
Bank::Bank()
{
ifstream infile("user.txt",ios::in);
if (!infile)
{
cerr<<"error!"<<endl;
}
string n,id,p;
long num;
double m;
int s;
while(infile>>num>>n>>id>>p>>m>>s)
{
users[N].set_users(num,n,id,p,m,s);
N=N+1;
}
}
/*********************************************************
* 功能描述:检验密码输入对错
* 输入参数:无
* 输出参数:无
* 返回值:无
* 其它说明:无
************************************************************/
bool Bank::compare(long acc,string pass)
{
if (users[acc].get_password()==pass)
return true;
else
{
cout<<"密码输入错误!"<<endl;
return false;
}
}
/*********************************************************
* 功能描述:显示银行标题栏
* 输入参数:无
* 输出参数:无
* 返回值:无
* 其它说明:无
************************************************************/
void Bank::show_menu()
{
cout<<"+++++++++++++++++++++++++++++++"<<endl;
cout<<"+ 欢迎来到zs9528银行 +"<<endl;
cout<<"+++++++++++++++++++++++++++++++"<<endl;
}
/*********************************************************
* 功能描述:显示银行功能表
* 输入参数:无
* 输出参数:无
* 返回值:无
* 其它说明:无
************************************************************/
void Bank::show_page()
{
cout<<"+------------------------------+"<<endl;
cout<<"+ 1 开户 2 销户 3 存款 +"<<endl;
cout<<"+ 4 取款 5 查询 6 转账 +"<<endl;
cout<<"+ 7 挂失 8 解挂 9 改密 +"<<endl;
cout<<"+ 0 退出 +"<<endl;
cout<<"+------------------------------+"<<endl;
}
/*********************************************************
* 功能描述:设置业务员信息
* 输入参数:无
* 输出参数:无
* 返回值:无
* 其它说明:无
************************************************************/
int Bank::open_salesman()
{
string name;
int pass;
ifstream outfile("salesman.txt",ios::in);
if(!outfile)
{
cout<<"open error!"<<endl;
exit(1);
}
while(outfile>>name>>pass)
{
sale.set_name(name);
sale.set_password(pass);
}
outfile.close();
}
/*********************************************************
* 功能描述:检查账号姓名是否正确
* 输入参数:无
* 输出参数:无
* 返回值:无
* 其它说明:无
************************************************************/
bool Bank::check(long cardnumber)
{
cout<<"姓名:"<<users[cardnumber].get_name()<<endl;
if(users[cardnumber].get_card_number()==cardnumber)
{
return true;
}
else
return false;
}
/*********************************************************
* 功能描述:检查业务员登陆对错
* 输入参数:输入业务员的用户名和登录密码
* 输出参数:登陆对错
* 返回值:无
* 其它说明:无
************************************************************/
bool Bank::compare_salesman()
{
string name;
int password;
int i=0;
while(1)
{
cout<<"请输入业务员用户名:";
cin>>name;
cout<<"请输入密码:";
cin>>password;
if(name==sale.get_name()&&password==sale.get_password())
{
return true;
}
else
{
cout<<"用户名或密码输入错误,请重新输入:"<<endl;
i++;
if(i>2)
exit(1);
continue;
}
}
}
/*********************************************************
* 功能描述:为用户开户
* 输入参数:用户的个人信息
* 输出参数:无
* 返回值:无
* 其它说明:无
************************************************************/
void Bank::open_user()
{
string password_1,password_2,name,id;
double money;
long cardnumder;
int s=0;
while(1)
{
cardnumder=N;
cout<<cardnumder;
cout<<"正在开户......"<<endl;
cout<<"请输入您的姓名:";
cin>>name;
cout<<"请输入您的身份证号:";
cin>>id;
cout<<"请输入您的密码:";
cin>>password_1;
cout<<"请再次输入您的密码:";
cin>>password_2;
if(password_1==password_2)
{
cout<<"开户成功!"<<endl;
cout<<"你的账号为:"<<cardnumder<<endl;
cout<<"存入金额为:";
cin>>money;
cout<<"您的信息为:"<<endl;
cout<<"账号:"<<cardnumder<<endl;
cout<<"姓名:"<<name<<endl;
cout<<"身份证号:"<<id<<endl;
cout<<"余额:"<<money<<endl;
ofstream outfile("user.txt", ios::app);
if (!outfile)
{
cerr << "打开数据库(user.txt)文件失败!";
exit(1);
}
outfile << cardnumder << " " << name << " " << id<<" "<<password_1<< " " << money << " " << s<<endl;
outfile.close();
N=N+1;
break;
}
}
}
/*********************************************************
* 功能描述:将用户信息保存到文件中
* 输入参数:无
* 输出参数:无
* 返回值:无
* 其它说明:无
************************************************************/
void Bank::save()
{
int i;
ofstream outfile("user.txt", ios::out);
if (!outfile)
{
cerr << "打开数据库(user.txt)文件失败!";
exit(1);
}
for (i=1001; i<N; i++)
{
outfile <<users[i].get_card_number() <<" "<< users[i].get_name()<< " " << users[i].get_ID_number() << " " << users[i].get_password()<< " " << users[i].get_money() << " " << users[i].get_status() <<endl;
}
outfile.close();
}
/*********************************************************
* 功能描述:销户
* 输入参数:输入用户的信息
* 输出参数:是用户状态改变
* 返回值:无
* 其它说明:无
************************************************************/
void Bank::cancel_uesr()
{
long cardnumber;
string pass;
char judge;
cout<<"销户"<<endl;
cout<<"账号:";
cin>>cardnumber;
while(1)
{
if(check(cardnumber))
{
cout<<"请输入密码:";
cin>>pass;
if(users[cardnumber].get_password()==pass)
{
if (users[cardnumber].get_status()==0)
{
cout<<"是否确认销户?(y/Y)"<<endl;
cin>>judge;
if(judge=='y'||judge=='Y')
{
users[cardnumber].set_status(2);
cout<<"取款:"<<users[cardnumber].get_money()<<"元,销户成功!"<<endl;
users[cardnumber].set_money(0);
break;
}
}
else
{
cout<<"账户已经销户或者挂失,不能进行下一步操作。"<<endl;
break;
}
}
}
}
}
/*********************************************************
* 功能描述:用户存款
* 输入参数:存款金额
* 输出参数:现余额
* 返回值:无
* 其它说明:无
************************************************************/
void Bank::save_user_money()
{
long cardnumber;
cout<<"账号:";
cin>>cardnumber;
if(check(cardnumber))
{
if(users[cardnumber].get_status()==0)
{
double addmoney;
cout<<"请输入存款金额:";
cin>>addmoney;
users[cardnumber].set_money(users[cardnumber].get_money()+addmoney);
cout<<"存款成功!"<<endl;
cout<<"您账户余额为:"<<users[cardnumber].get_money()<<endl;
}
else
{
cout<<"账户已经销户或者挂失,不能进行下一步操作。"<<endl;
}
}
}
/*********************************************************
* 功能描述:用户取款
* 输入参数:用户所取得金额
* 输出参数:所剩可用金额
* 返回值:无
* 其它说明:无
************************************************************/
void Bank::getout_money()
{
long cardnumber;
double money;
cout<<"账号:";
cin>>cardnumber;
string pass;
if(check(cardnumber))
{
cout<<"请输入密码:";
cin>>pass;
if (compare(cardnumber,pass))
{
cout<<"请输入你所取款金额:";
cin>>money;
if(users[cardnumber].get_money()>money)
{
users[cardnumber].set_money(users[cardnumber].get_money()-money);
cout<<"取款成功!"<<endl;
cout<<"当前可用余额为:"<<users[cardnumber].get_money()<<endl;
}
else
{
cout<<"余额不足!"<<endl;
}
}
}
}
/*********************************************************
* 功能描述:查询用户信息
* 输入参数:无
* 输出参数:用户的个人信息
* 返回值:无
* 其它说明:无
************************************************************/
void Bank::find_user()
{
long cardnumber;
cout<<"账号:";
cin>>cardnumber;
if(check(cardnumber))
{
cout<<"账号:"<<users[cardnumber].get_card_number()<<endl;
cout<<"姓名:"<<users[cardnumber].get_name()<<endl;
cout<<"身份证号:"<<users[cardnumber].get_ID_number()<<endl;
cout<<"密码:"<<users[cardnumber].get_password()<<endl;
cout<<"余额:"<<users[cardnumber].get_money()<<endl;
if(users[cardnumber].get_status()==0)
{
cout<<"当前状态:正常"<<endl;
}
else if(users[cardnumber].get_status()==1)
{
cout<<"当前状态:挂失"<<endl;
}
else
{
cout<<"当前状态:销户"<<endl;
}
cout<<users[cardnumber].get_ID_number()<<endl;
cout<<"查询完毕"<<endl;
}
}
/*********************************************************
* 功能描述:用户挂失
* 输入参数:无
* 输出参数:用户状态改变
* 返回值:无
* 其它说明:无
************************************************************/
void Bank::loss_user()
{
char choice;
long cardnumber;
cout<<"挂失"<<endl;
cout<<"账号:";
cin>>cardnumber;
string pass;
if(check(cardnumber))
{
cout<<"请输入密码:";
cin>>pass;
if (compare(cardnumber,pass))
{
if(users[cardnumber].get_status()==0)
{
users[cardnumber].set_status(1);
cout<<"挂失成功!"<<endl;
}
else
{
cout<<"该账户已经挂失或者销户!"<<endl;
}
}
}
}
/*********************************************************
* 功能描述:用户解挂
* 输入参数:无
* 输出参数:用户状态返回正常状态
* 返回值:无
* 其它说明:无
************************************************************/
void Bank::solve_card()
{
char choice;
long cardnumber;
cout<<"解挂"<<endl;
cout<<"账号:";
cin>>cardnumber;
string pass;
if(check(cardnumber))
{
cout<<"请输入密码:";
cin>>pass;
if (compare(cardnumber,pass))
{
if(users[cardnumber].get_status()==1)
{
users[cardnumber].set_status(0);
cout<<"解挂成功!"<<endl;
}
else
{
cout<<"当前账户未挂失!"<<endl;
}
}
}
}
/*********************************************************
* 功能描述:用户改密
* 输入参数:原密码和新密码
* 输出参数:新密码代替原密码
* 返回值:无
* 其它说明:无
************************************************************/
void Bank::change_password()
{
long cardnumber;
string password,password_1,password__2;
cout<<"改密"<<endl;
cout<<"账号:";
cin>>cardnumber;
if(check(cardnumber))
{
cout<<"请输入原来的密码:";
cin>>password;
if(password==users[cardnumber].get_password())
{
while(1)
{
cout<<"请输入新密码:";
cin>>password_1;
cout<<"请再次确认密码:";
cin>>password__2;
if(password_1==password__2)
{
users[cardnumber].set_password(password_1);
cout<<"修改成功!"<<endl;
break;
}
else
{
cout<<"两次密码输入不一致,请重新输入。"<<endl;
continue;
}
}
}
}
}
/*********************************************************
* 功能描述:选择功能
* 输入参数:输入相应数值
* 输出参数:对应的各项功能
* 返回值:无
* 其它说明:无
************************************************************/
void Bank::choice_order()
{
int cho;
while (1)
{
cout<<"请输入你所需要的指令:";
cin>>cho;
switch(cho)
{
case 1:
open_user();
break;
case 2:
cancel_uesr();
save();
break;
case 3:
save_user_money();
save();
break;
case 4:
getout_money();
save();
break;
case 5:
find_user();
save();
break;
case 6:
transfer_money();
save();
break;
case 7:
loss_user();
save();
break;
case 8:
solve_card();
save();
break;
case 9:
change_password();
save();
break;
case 0:
exit(1);
}
}
}
/*********************************************************
* 功能描述:用户转账
* 输入参数:用户及要转的用户及金额
* 输出参数:无
* 返回值:无
* 其它说明:无
************************************************************/
void Bank::transfer_money()
{
cout<<"转账"<<endl;
long cardnumber,card_2;
double money;
string pass;
cout<<"账号:";
cin>>cardnumber;
if (check(cardnumber))
{
cout<<"请输入密码:";
cin>>pass;
if (compare(cardnumber,pass))
{
cout<<"请输入转入账号:";
cin>>card_2;
cout<<"请输入所转金额:";
cin>>money;
if(users[cardnumber].get_money()<money)
{
cout<<"您的余额已不足!"<<endl;
}
else
{
users[cardnumber].set_money(users[cardnumber].get_money()-money);
users[card_2].set_money(users[card_2].get_money()+money);
cout<<"转账成功!"<<endl;
cout<<"您当前可用余额为:"<<users[cardnumber].get_money()<<endl;
}
}
}
}main.cpp
/***********************************************************
* 版权所有 (C)2015,zhaosong.
*
* 文件名称:bank.cpp
* 文件标识:无
* 内容摘要:运行主要函数
* 其它说明:无
* 当前版本: V1.0
* 作 者:赵嵩
* 完成日期: 20150717
*
* 修改记录1:
* 修改日期: 20150717
* 版本号: V1.0
* 修改人: zhaosong
* 修改内容:创建
**********************************************************/
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
#include "bank.h"
using namespace std;
int main()
{
Bank bank;
bank.show_menu();
bank.open_salesman();
bank.compare_salesman();
bank.show_page();
bank.choice_order();
return 0;
}
salesman.cpp
/***********************************************************
* 版权所有 (C)2015,zhaosong.
*
* 文件名称:bank.cpp
* 文件标识:无
* 内容摘要:该代码为业务员成员函数
* 其它说明:无
* 当前版本: V1.0
* 作 者:赵嵩
* 完成日期: 20150717
*
* 修改记录1:
* 修改日期: 20150717
* 版本号: V1.0
* 修改人: zhaosong
* 修改内容:创建
**********************************************************/
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
#include "saleman.h"
using namespace std;
void Salesman::set_name(string nam)
{
name=nam;
}
void Salesman::set_password(int passwor)
{
password=passwor;
}
string Salesman::get_name()
{
return name;
}
int Salesman::get_password()
{
return password;
}user.cpp/***********************************************************
* 版权所有 (C)2015,zhaosong.
*
* 文件名称:bank.cpp
* 文件标识:无
* 内容摘要:该代码为定义user类的成员函数
* 其它说明:无
* 当前版本: V1.0
* 作 者:赵嵩
* 完成日期: 20150717
*
* 修改记录1:
* 修改日期: 20150717
* 版本号: V1.0
* 修改人: zhaosong
* 修改内容:创建
**********************************************************/
#include <iostream>
#include <string>
#include <fstream>
#include <cstdlib>
#include "user.h"
/*********************************************************
* 功能描述:建立user的信息
* 输入参数:无
* 输出参数:无
* 返回值:无
* 其它说明:无
************************************************************/
void User::set_users(long cardnumber,string name,string id, string password_1,double money,int status)
{
usercard_number=cardnumber;
user_name=name;
user_ID_number=id;
user_password=password_1;
user_money=money;
user_status=status;
}
string User::get_password()
{
return user_password;
}
double User::get_money()
{
return user_money;
}
string User::get_name()
{
return user_name;
}
string User::get_ID_number()
{
return user_ID_number;
}
int User::get_status()
{
return user_status;
}
long User::get_card_number()
{
return usercard_number;
}
void User::set_money(double money)
{
user_money=money;
}
void User::set_status(int status)
{
user_status=status;
}
void User::set_password(string password)
{
user_password=password;
}运行截图;
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/zs9528/article/details/46939431