//
// main.cpp
// 银行管理系统
//
// Created by 丁小未 on 13-7-23.
// Copyright (c) 2013年 dingxiaowei. All rights reserved.
//
//项目:银行管理系统
//系统实现的主要有管理,取款机管理,用户查询等功能:
//*管理模块:存款、取款、开户、销户、修改信息、办卡、挂失卡;
//*用户查询模块;
//*取款机信息管理模块:管理员管理查询和维护、客户查询和取款等功能;
//可以考虑利率
#include
using namespace std;
#include
#include
#include
#include
#define MAX 20
class Person
{
public:
string cardNum;//卡号
string cardName;//用户名
double money;//余额
string beginTime;//开户日期
bool useState=false;//是否挂失
/*******用户的功能***********/
//查询我当前用户的账户余额
double SelectMoney()
{
return money;
}
//选择挂失和解锁卡
bool ChooseUseState(bool f)
{
useState = f;
return useState;
}
//取钱
double GetMoney(double m)
{
if (m>money) {
cout<<"您的余额不足!"< } return money -= m; } //存钱 double AddMoney(double m) { return money += m; } //构造函数 Person(string cardnum,string cardname,double money,string begintime,bool usestate) { this->cardNum = cardnum; this->cardName = cardname; this->money = money; this->beginTime = begintime; this->useState = usestate; } //默认构造函数 Person(){}; //运算符重载 // Person&person = (const Person &other) // { // // } }; int total=0;//记录总数 Person person[MAX];//定义一个person数组 double price=0.1;//默认汇率 /*******************函数申明******************************************/ void set_psw();//设置密码 int psw_check();//密码验证 void Show_menu();//显示菜单 int get_managermenu_choice();//接受管理员菜单选择 void PrintPersonTitle();//打印头信息 char* GetTime();//获取系统当前时间 void Show_Iden_menu();//身份选择菜单 int get_Idemenu_choice();//接受身份菜单选择 void inputInfile(Person person[],int n);//将类数组写入文件 void Show_PersonMenu();//显示普通用户功能菜单 void Show_Managermenu();//显示管理员功能菜单 int get_personmenu_choice();//普通用户接受功能菜单 int findPerson(Person *person,int n,string findName);//查找名字返回序列号 bool ISManager(string &name,string &pwd);//验证管理员身份 bool ISPerson(string &name,string &pwd);//验证用户信息 /**********************************************************************/ //查找名字返回序列号 int findPerson(Person *person,int n,string findName) { int i; int m=-1; for (i=0; i if (person[i].cardName == findName) { m=i; break; } } return m;//返回person的下标 } //将类数组写入文件,数组本身就是地址传递 void inputInfile(Person person[],int &n) { ofstream onfile;//写入文件类 onfile.open("Person.txt"); for (int i=0; i onfile< } onfile.close(); } //管理员共有继承自普通人 class Manager:public Person { public: //开户 void addPerson(Person person[],int &n) { char f='y'; string sTemp; char *t=GetTime(); ofstream onfile;//写入文件 onfile.open("person.txt"); do { cout<<"输入卡号:"; cin>>sTemp; onfile< person[n].cardNum = sTemp; cout<<"请输入用户名:"; cin>>sTemp; onfile< onfile< person[n].cardName = sTemp; onfile<<0<<" ";//余额默认是0 person[n].money = 0; sTemp = t; onfile< person[n].beginTime = sTemp; onfile<<0;//0代表没有挂失,正常使用 person[n].useState = false; onfile<<"\n"; ++n; cout<<"还要继续开户吗?(y/n)"; cin>>f; } while (f=='y'); } //销户 void deletePerson(Person person[],int &n,string delname) { int i; int j=0; for (i = 0; i if (person[i].cardName == delname) { for (j=i; j person[j].cardName = person[j+1].cardName; person[j].cardNum = person[j+1].cardNum; person[j].money = person[j+1].money; person[j].beginTime = person[j+1].beginTime; person[j].useState = person[j+1].useState; } n--; i--; } } //从写入文件 ofstream onfile;//写入文件类 onfile.open("Person.txt"); for (int i=0; i onfile< } onfile.close(); } //修改卡的信息 void alterPerson(string name,Person person[],int &n) { int i=findPerson(person,total, name); if(i<0) { cout<<"对不起,没有该账户!"< } else { double _money; string sTemp; int jj; cout<<"从新修改账户信息:"< cout<<"修改账户号:"; cin>>sTemp; person[i].cardNum = sTemp; cout<<"修改账户名:"; cin>>sTemp; person[i].cardName = sTemp; cout<<"修改账户余额:"; cin>>_money; person[i].money = _money; cout<<"修改挂失/解锁(1.挂失 2.解锁)"; cin>>jj; if (jj==1) { person[i].useState = true; } else { person[i].useState = false; } } //将信息重写入文档 ofstream onfile;//写入文件类 onfile.open("Person.txt"); for (int i=0; i onfile< } onfile.close(); } //选择某用户卡的挂失和解锁 void chooseUseFunction(string name,Person person[],int &n) { int i=findPerson(person,total, name); if(i<0) { cout<<"对不起,没有该账户!"< } else { int jj; cout<<"修改挂失/解锁(1.挂失 2.解锁)"; cin>>jj; if (jj==1) { person[i].useState = true; } else { person[i].useState = false; } } //将信息重写入文档 ofstream onfile;//写入文件类 onfile.open("Person.txt"); for (int i=0; i onfile< } onfile.close(); } //用户查询(查询所有的卡信息) void showAllCard(Person person[],int &n) { cout<<"当前有"< PrintPersonTitle(); for (int i=0; i cout< } } }; /*********************************************************************/ void IdMenu(Manager &manager);//身份菜单响应 void managermenu(Manager &manager);//管理员菜单相应 void personmenu();//用户菜单 /********************函数定义*****************************************/ //获取当前系统时间 char* GetTime() { { time_t now; struct tm *timenow; time(&now); timenow = localtime(&now); char *p = asctime(timenow); return p; } } //身份菜单响应 void IdMenu(Manager &manager) { Show_Iden_menu();//菜单显示 switch (get_Idemenu_choice()) { case 1: { //进入管理员身份验证 string n,s; cout<<"请输入管理员账号:"; cin>>n; cout<<"请输入管理员密码:"; cin>>s; if (ISManager(n, s)) { managermenu(manager); } else { cout<<"验证错误"< } } break; case 2: //进入客户身份验证 { string n,s; cout<<"请输入账户名:"; cin>>n; cout<<"请输入账户密码:"; cin>>s; // if (ISManager(n, s)) { // managermenu(manager); // } if (ISPerson(n,s)) { cout<<"验证用户成功"< } else{ cout<<"验证用户失败"; } } break; default: cout<<"选择错误"< break; } } //验证客户信息 bool ISPerson(string &name,string &pwd) { int i=0; string password="dingxiaowei"; for (i=0; i<total; i++) { if(person[i].cardName == name&&password==pwd); { return true; break; } } if (i==total) { return false; } } //验证管理员身份 bool ISManager(string &name,string &pwd) { string n,p; ifstream infile;//读取文件类 infile.open("manager.txt"); if(infile.is_open()) { infile>>n>>p; } else { cout<<"打开失败!"; } if (n==name&&p==pwd) { return true; } else { return false; } } //管理员菜单相应 void managermenu(Manager &manager) { bool flag = false; do { Show_Managermenu();//显示菜单 switch (get_managermenu_choice()) { case 1://增加记录 manager.addPerson(person,total); break; case 2://删除记录 { cout<<"请输入您要销户的名字:"; string name; cin>>name; manager.deletePerson(person,total, name); } break; case 3://查询记录 { cout<<"请输入您要修改的账户名:"; string name; cin>>name; manager.alterPerson(name, person, total); } break; case 4://修改记录 { cout<<"请输入您修改挂失或解锁的账户名:"; string name; cin>>name; manager.chooseUseFunction(name,person, total); } break; case 5://查询所有记录 manager.showAllCard(person,total); break; case 0: flag = true; IdMenu(manager);//返回上一级 break; default: printf("*************************\n"); printf(" 欢迎再次使用本系统,谢谢 \n"); printf("*************************\n"); break; } }while (flag==false); } //打印个体用户头信息 void PrintPersonTitle() { cout<<"--------------------------------------------------------\n"; cout<<" 卡号 用户名 余额 开户日期 是否挂失 \n"; cout<<"--------------------------------------------------------\n"; } //设置密码 void set_psw() { ofstream onfile;//写入文件类 string psw_set ,psw_check; do { cout<<"You must set password first!\n"; cin>>psw_set; cout<<"conform password:"; cin>>psw_check; if(psw_check == psw_check) { cout<<"set password success!\n"; } else { cout<<"error!\n"; } } while(psw_check != psw_set); onfile.open("password.txt",ios::out); onfile< onfile.close(); } //密码验证 int psw_check() { ifstream infile;//读取文件类 ofstream onfile;//文件写入类 unsigned int j=1; string pword; string password; infile.open("password.txt",ios::in); if (!infile.is_open())//如果打开失败,则重新设置密码 { set_psw();//重新设置密码 } //取值 infile>>password; //打开成功验证密码 do { cout<<"输入密码,你将有三次机会:"< cin>>pword; j++; } while (password != pword && j<=3); if (j<=3) { cout<<"恭喜登陆成功!"< return 1;//打开成功 } else { cout<<"你已经输入了三次了,打开文件失败!"< return 0; } } //身份选择菜单 void Show_Iden_menu() { cout<<">>>>>>>>>>>>>>>>>欢迎您使用银行管理系统<<<<<<<<<<<<<<<<<<<<\n"; cout<<"*******************************************************\n"; cout<<" 1.银行管理员 | 2.普通用户 \n"; cout<<"*******************************************************\n"; } //显示管理员菜单 void Show_Managermenu() { cout<<">>>>>>>>>>>>>>>欢迎您使用银行管理员管理系统<<<<<<<<<<<<<<<<\n"; cout<<"******************************************************\n"; cout<<" 1.开户 | 2.销户 \n"; cout<<" 3.修改卡号信息 | 4.挂失/解锁 \n"; cout<<" 5.查询所有记录 | 0.返回上级 \n"; cout<<"******************************************************\n"; } //显示普通用户功能菜单 void Show_PersonMenu() { cout<<">>>>>>>>>>>>>>欢迎您使用×××管理系统<<<<<<<<<<<<<<<<<<<<\n"; cout<<"******************************************************\n"; cout<<" 1.查询余额 | 2.挂失/解锁 \n"; cout<<" 3.存款 | 4.取款 \n"; cout<<" 0.返回上级 | \n"; cout<<"******************************************************\n"; } //普通用户接受菜单 int get_personmenu_choice() { int personmenu_ch;//菜单选项 do { cout<<"请选择功能:"; cin>>personmenu_ch; if (personmenu_ch<0||personmenu_ch>4) { cout<<"输入有误!"< } } while (personmenu_ch<0||personmenu_ch>4); return personmenu_ch; } //接受身份菜单选择 int get_Idemenu_choice() { int idmenu_ch;//菜单选项 do { cout<<"请选择身份:"; cin>>idmenu_ch; if (idmenu_ch<1||idmenu_ch>2) { cout<<"输入有误!"< } } while (idmenu_ch<1||idmenu_ch>2); return idmenu_ch; } //接受菜单选择 int get_managermenu_choice() { int menu_ch;//菜单选项 do { cout<<"请选择菜单:"; cin>>menu_ch; if (menu_ch<0||menu_ch>5) { cout<<"error"; } } while (menu_ch<0||menu_ch>5); return menu_ch; } int main(int argc, const char * argv[]) { Manager manager; if (psw_check()) { IdMenu(manager); } return 0; } ==================== 迂者 丁小未 CSDN博客专栏================= MyBlog:http://blog.csdn.net/dingxiaowei2013 MyQQ:1213250243 MyTel:13262983383 ====================== 相互学习,共同进步 ===================