介绍:
银行储蓄系统包括:支持多名储户开户、存款、取款、转帐、改密、挂失、解挂、销户等功能。
登录
输入业务员用户名和密码。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_INCLUDED
salesman.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_INCLUDED
bank.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; }
运行截图;
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-11 13:06:56