银行管理系统

//

//  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[n].cardNum = sTemp;

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

            cin>>sTemp;

            onfile<<sTemp;

            onfile<<sTemp<<"    ";

            person[n].cardName = sTemp;

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

            person[n].money = 0;

            sTemp = t;

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

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

}

==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013              MyQQ:1213250243

MyTel:13262983383 

====================== 相互学习,共同进步 ===================

时间: 2024-12-20 19:25:05

银行管理系统的相关文章

银行管理系统实习报告

一Field     Field name        Type         Width      dec           1        银行名称       字符型        20         0 (索引) 2        地址           字符型        40         0 3        电话           数值型         8         0 4        邮编           数值型         6       

求大神指点!!交作业急,C++银行管理系统,运行总是停止工作,是哪个代码不对吗?

问题描述 求大神指点!!交作业急,C++银行管理系统,运行总是停止工作,是哪个代码不对吗? #include #include #include #include using namespace std; class Count { private: int zhanghao; string name; int idcard; string password; double money; string address; int phone; string condition; public: f

用java做银行管理系统

问题描述 用java做银行管理系统 银行管理系统 设计要求:界面部分与后边的业务逻辑处理,要用接口进行分离.不要让界面部分与业务逻辑处理混合在一起!!! 银行管理系统分为三个模块:登录模块.管理员(即银行操作员)模块和客户模块. 登录模块: 在登录模块中,以用户名区别管理员和客户. 管理员用工号登录,密码也为工号. 客户用自己开户时的用户名登录(客户用户名为英文字符串,不得有其他字符),密码为客户在开户时的密码,第一次使用本系统的客户可以通过两种方式开户:○1 通过管理员办理开户,○2通过登录界

使用netbeans和SQLserver做一个银行管理系统

问题描述 使用netbeans和SQLserver做一个银行管理系统 需要有完整的代码以及窗体,分为登录,用户,账户,转账,存款,取款 面向对象是银行前台工作人员 解决方案 窗体只需要最简单的设计就可以,不需要背景图什么的 解决方案二: 把这里当外包了么?楼主想多了吧. 解决方案三: 哪里去弄?JavaEE教程这本书有完整例子

文件存储-用c++编写花卉管理系统

问题描述 用c++编写花卉管理系统 可以实现对花卉的增删改查,可以计算总利润,以及可以给客户推荐的功能,,用文件存储,不用数据库 解决方案 c++编写银行管理系统<C++编写 学生成绩管理系统>

用java写银行ATM和分行和总行的系统

问题描述 用java写银行ATM和分行和总行的系统 1.有若干个工商ATM,每几个工商ATM连接一个工商支行服务器,所有的工商支行服务器连接工商总行服务器. 2.工商支行服务器存储在该支行开户的用户的账号和密码,工商总行服务器有此备份. 3.模拟用户在一台工商银行ATM上输入账号和密码,工商总行服务器验证账号和密码是否匹配. 若成功,ATM提供查询.存款.取款业务. 若失败,ATM提示用户重新输入密码. 4.若用户在ATM上存取款,则工商支行服务器上该用户的余额相应增减,工商总行服务器上该用户的

坐牢也能网购,服刑人员个人资金银行化管理

南方日报讯 (记者/夏小荔 通讯员/陈俊伟)在监狱内的服刑人员只要在监仓登陆局域网购物终端,就可以在监仓的网络"超市"中购物了!昨日,记者从佛山监狱获悉,全国首个服刑人员个人资金管理系统正式启用.通过该系统,服刑人员还可以很方便地在狱内监仓网络终端通过指纹认证身份,随时查询自己银行账户里的交易明细.资金余额等情况. 服刑人员个人资金银行化管理 昨日,由广东省佛山监狱与佛山市高明区农村信用合作联社联合开发的服刑人员个人生活资金银行管理系统正式投入使用. "过去,服刑人员家属汇转

软件开发的那些事儿:解决之道

前面提出了软件开发的轮回:期望--破灭--崩溃--新的轮回,我们的解决之道在哪里呢? 我的反思--不在沉默中爆发,就在沉默中灭亡 反思,我在反思-- 对于来自客户的变更,我永远忘不了的是大学时老师的谆谆教导.上软件工程课的时候,老师总是一再地反复强调,一定要将需求变更消灭在需求分析阶段.按照过去的瀑布式开发理论的描述,总是要求我们在需求分析阶段了解清楚客户的所有需求,并编写成<软件需求说明书>,交给客户签字.客户一旦在<软件需求说明书>上签字,那么需求就不能再更改了,软件就照这个开

AOP的利器:ASM 3.0介绍

随着 AOP(Aspect Oriented Programming)的发展,代码动态生成已然成为 Java 世界中不可或缺的一环.本文将介绍一种小巧轻便的 Java 字节码操控框架 ASM,它能方便地生成和改造 Java 代码.著名的框架,如 Hibernate 和 Spring 在底层都用到了 ASM.比起传统的 Java 字节码操控框架,BCEL 或者 SERP,它具有更符合现代软件模式的编程模型和更迅捷的性能. 引言 什么是 ASM? ASM 是一个 Java 字节码操控框架.它能被用来