码迷,mamicode.com
首页 > 其他好文 > 详细

课程设计--银行储蓄系统

时间:2015-07-18 11:07:15      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:

介绍:

银行储蓄系统包括:支持多名储户开户、存款、取款、转帐、改密、挂失、解挂、销户等功能。
登录
输入业务员用户名和密码。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;
}
运行截图;

技术分享
技术分享
技术分享
技术分享
技术分享
技术分享

技术分享

技术分享

技术分享

技术分享



版权声明:本文为博主原创文章,未经博主允许不得转载。

课程设计--银行储蓄系统

标签:

原文地址:http://blog.csdn.net/zs9528/article/details/46939431

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!