您的位置:首页 > 编程语言 > C语言/C++

银行管理系统[C++]

2013-07-24 10:50 288 查看
//项目:银行管理系统

//系统实现的主要有管理,取款机管理,用户查询等功能:

//*管理模块:存款、取款、开户、销户、修改信息、办卡、挂失卡;

//*用户查询模块;

//*取款机信息管理模块:管理员管理查询和维护、客户查询和取款等功能;

//可以考虑利率

//

// main.cpp

// 银行管理系统

//

// Created by 丁小未 on 13-7-23.

// Copyright (c) 2013年 dingxiaowei. All rights reserved.

//

//项目:银行管理系统

//系统实现的主要有管理,取款机管理,用户查询等功能:

//*管理模块:存款、取款、开户、销户、修改信息、办卡、挂失卡;

//*用户查询模块;

//*取款机信息管理模块:管理员管理查询和维护、客户查询和取款等功能;

//可以考虑利率

#include <iostream>

using namespace std;

#include <string>

#include <fstream>

#include <time.h>

#include <vector>

#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<<"您的余额不足!"<<endl;

}

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<n; 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<n; i++) {

onfile<<person[i].cardNum<<" "<<person[i].cardName<<" "<<person[i].money<<" "<<person[i].beginTime<<" "<<person[i].useState<<"\n"<<endl;

}

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<<sTemp<<" ";

person
.cardNum = sTemp;

cout<<"请输入用户名:";

cin>>sTemp;

onfile<<sTemp;

onfile<<sTemp<<" ";

person
.cardName = sTemp;

onfile<<0<<" ";//余额默认是0

person
.money = 0;

sTemp = t;

onfile<<sTemp<<" ";//开户时间

person
.beginTime = sTemp;

onfile<<0;//0代表没有挂失,正常使用

person
.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<n; i++) {

if (person[i].cardName == delname) {

for (j=i; j<n-1; 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<n; i++) {

onfile<<person[i].cardNum<<" "<<person[i].cardName<<" "<<person[i].money<<" "<<person[i].beginTime<<" "<<person[i].useState<<"\n"<<endl;

}

onfile.close();

}

//修改卡的信息

void alterPerson(string name,Person person[],int &n)

{

int i=findPerson(person, total, name);

if(i<0)

{

cout<<"对不起,没有该账户!"<<endl;

}

else

{

double _money;

string sTemp;

int jj;

cout<<"从新修改账户信息:"<<endl;

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<n; i++) {

onfile<<person[i].cardNum<<" "<<person[i].cardName<<" "<<person[i].money<<" "<<person[i].beginTime<<" "<<person[i].useState<<"\n"<<endl;

}

onfile.close();

}

//选择某用户卡的挂失和解锁

void chooseUseFunction(string name,Person person[],int &n)

{

int i=findPerson(person, total, name);

if(i<0)

{

cout<<"对不起,没有该账户!"<<endl;

}

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<n; i++) {

onfile<<person[i].cardNum<<" "<<person[i].cardName<<" "<<person[i].money<<" "<<person[i].beginTime<<" "<<person[i].useState<<"\n"<<endl;

}

onfile.close();

}

//用户查询(查询所有的卡信息)

void showAllCard(Person person[],int &n)

{

cout<<"当前有"<<n<<"条记录:"<<endl;

PrintPersonTitle();

for (int i=0; i<n; i++) {

cout<<person[i].cardNum<<" "<<person[i].cardName<<" "<<person[i].money<<" "<<person[i].beginTime<<" "<<person[i].useState<<endl;

}

}

};

/*********************************************************************/

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<<"验证错误"<<endl;

}

}

break;

case 2:

//进入客户身份验证

{

string n,s;

cout<<"请输入账户名:";

cin>>n;

cout<<"请输入账户密码:";

cin>>s;

// if (ISManager(n, s)) {

// managermenu(manager);

// }

if (ISPerson(n,s)) {

cout<<"验证用户成功"<<endl;

}

else{

cout<<"验证用户失败";

}

}

break;

default:

cout<<"选择错误"<<endl;

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<<psw_set;

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<<"输入密码,你将有三次机会:"<<j<<"/3次机会"<<endl;

cin>>pword;

j++;

} while (password != pword && j<=3);

if (j<=3) {

cout<<"恭喜登陆成功!"<<endl;

return 1;//打开成功

}

else

{

cout<<"你已经输入了三次了,打开文件失败!"<<endl;

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<<"输入有误!"<<endl;

}

} 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<<"输入有误!"<<endl;

}

} 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;

}











内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: