实训项目--银行储蓄系统

头文件:bank.h

/*
*版权所有:Copyright (c)2015,烟台大学计算机与控制工程学院
*All rights reserved.
*
*文件名称:main.cpp
*文件标识:无
*内容摘要:该代码用于获取满足后缀要求的第一个文件
*其他说明:无
*当前版本:V1.0
*作    者:尚 月
*完成日期:2015年07月17日
*
*修改记录:
*修改日期:无
*版本号:V1.0
*修改人:尚 月
*修改内容:
*/
#ifndef BANK_H_INCLUDED
#define BANK_H_INCLUDED
#include <cstring>
using namespace std;
const int upNum=2000; //系统最多容纳的用户数
class Bank;
class User
{
public:
    void setUser(int acc, string nam, int pw, double bal,int sta);
    void showName();
    void showBalance(string prompt); //显示余额,前面加上提示词prompt
    bool passwordIsRight();   //校验密码,输入的密码正确则返回true
    bool isNormalUser(); //存款、取款、转帐等功能,需要账户处于正常姿态,处于正常状态时返回true,其他情形返回false并提示
    friend class Bank;   //将Bank声明为友元类,方便其访问数据成员
private:
    int account; //账号
    int password;  //密码
    string name;   //用户名
    double balance;  //账户余额
    int status;  //状态 0-正常  1-挂失  2-销户
};

class Bank
{
public:
    Bank();  //开始前从文件中读数据,存在数组中
    ~Bank();   //程序结束前,将数组中的数据写入到文件中
    void work();  //业务驱动
    void openAccount(); //开户
    void cancelAccount();  //注销账户
    void save();   //存款
    void withdraw();   //取款
    void showAccount(); //查询余额
    void transferAccounts();  //转账
    void reportLoss();  //挂失
    void cancelLoss();  //解除挂失
    void updatePassword();   //更改密码
    int getUser();  //输入账号查询用户,返回用户在对象数组中的下标
private:
    int N;  //实际的用户数目
    User users[upNum];  //User数组,耗空间啊!改进方案:1.对象指针数组;2. 动态数组;3. 链表

};

int pass();  //业务员登录
int chooseInMenu(); //显示菜单并由业务员选择
int inputPassword();   //返回键盘输入的密码
#endif // BANK_H_INCLUDED

主函数:main.cpp

#include <iostream>
#include <windows.h>
#include "bank.h"
using namespace std;
/*主函数:*/
int main()
{
    system("cls");
	system("color 13");
    cout<<"***************************************************************\n";
	cout<<"** ____________                                 **\n";
	cout<<"**│                      │                                **\n";
	cout<<"**│                      │       ╭─────────╮   **\n";
	cout<<"**│您好!欢迎进入本银行!│       │                  │   **\n";
	cout<<"**│                      │       │ 请输入您的信息   │   **\n";
	cout<<"**│                      │   ╭╮╰─────────╯   **\n";
	cout<<"**│___________│○ ╰╯                         **\n";
	cout<<"**                                                          **\n";
	cout<<"**                                                          **\n";
	cout<<"***************************************************************\n";
    Bank b;
    if (pass())
    {
        Bank b;
        b.work();
    }
    return 0;
}

基础函数:work.cpp

#include <iostream>
#include <fstream>
#include <conio.h>
#include <cstdlib>
#include <cstring>
#include <ctype.h>
#define rate 0.0225   //利率(固定的)

#include "bank.h"
using namespace std;
/*
*功能描述:业务员登录 
*输入参数:无 
*输出参数:无 
*返回值:密码正确,返回1,不能通过密码验证,返回0
*其它说明:无 
*/
int pass()
{
    char sNameInFile[20];   //由文件中读出的业务员用户名
    char sPassInFile[20];  //文件中保存的密码,这一版本中,用字符保存密码
    ifstream infile("password.txt",ios::in);
    if(!infile)
    {
        cout<<"password file cannot open!"<<endl;
        exit(1);
    }
    infile>>sNameInFile>>sPassInFile;
    infile.close();

    char sName[20];   //业务员登录时输入的用户名
    char sPass[20];  //业务员登录时输入的密码
    char ch;
    int iTry=3;   //进入系统时尝试的次数
    int right = 0;  //要返回的结果:0-不正确 1-正确

    //进入系统,密码三次不对将退出
    do
    {
        cout<<"请输入业务员用户名:";
        cin>>sName;
        cout<<"请输入密码:";
        int i=0;
        while((ch=getch())!='\r')  //getch在接受输入后,不在屏幕上显示
        {
            sPass[i++]=ch;
            putchar('*');   //接受任何字符,屏幕上只显示*
        }
        sPass[i]='\0';
        fflush(stdin);
        cout<<endl;;
        if(strcmp(sPass,sPassInFile)==0&&strcmp(sName,sNameInFile)==0)
        {
            right = 1;
            break;
        }
        else
        {
            iTry--;
            if(iTry>0)
                cout<<"超过3次将退出,你还可以尝试"<<iTry<<"次!"<<endl;
            else
            {
                cout<<"对不起,你不能进入系统"<<endl;;
    
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值