C++第12周项目5.3——银行系统多文件版

简介: 课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759【项目5-银行系统】  这是我们要做的一个真正的项目!涉及到的技术都用过了,只不过,程序真的要长得多了。  在学习中,总是想要些成就感的。当你没有做过一些事情的时候,总是不能知道所学知识究竟能干些什么。在学习过程中,完成一个像样的项目,那是一件很酷的事情,也让我们更有

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759


【项目5-银行系统】
  这是我们要做的一个真正的项目!涉及到的技术都用过了,只不过,程序真的要长得多了。
  在学习中,总是想要些成就感的。当你没有做过一些事情的时候,总是不能知道所学知识究竟能干些什么。在学习过程中,完成一个像样的项目,那是一件很酷的事情,也让我们更有激情。做好思想准备,中间可能会有些困难,但相信沉下心来还是可以完成的。
  要做项目的需求最好能和大家的生活实践联系起来,我们想得到。另外,还能和我们的课程同步上。两厢结合,我们就开个银行,做个自动取款机吧。
  如果没有用过自动取款机,先用你的银行卡取一次钱去吧,权当作调研。
  我们首先插卡,输密码。做纯软件模拟,我们没有读卡机,好吧,认为卡已经插好了。
  为了让大家一点一点地做出来,我试图分解其中的工作,我们逐渐完善,“增量式”地完成工作。你可以每做完一个任务,就发一篇博文,将这样一个成长的阶段记录下来。


  任务3:将程序用多文件组织
  将任务2中的代码,涉及密码、帐户的函数放在一个文件中,完成各项功能的函数放在另一个文件中,main函放也单独一个文件。

参考解答:

main.cpp——称为测试文件,是程序执行开始的文件,用于“总控”程序的执行

#include<iostream>
using namespace std;
int password = 123456;
double balance = 10000;

bool pass();
void work();

int main()
{
    cout<<"贺家银行欢迎您光临……"<<endl;
    if(pass())
        work();
    else
        cout<<"不要着急,想好了再输入……"<<endl;
    return 0;
}

work.cpp(文件名由你取)——包含完成各项银行业务的函数(术语中也称模块)

#include<iostream>
using namespace std;//本文件中的涉及输入输出,写包含文件与指定命名空间有必要。
extern double balance; //指出这个全局变量来自别的文件,是外部全局变量

void showbalance();
void drawmoney();
void deposit();
void transferAccounts();
void updatePassword();

//处理业务
void work()
{
    char cChoice;
    bool bExit = false;
    do
    {
        cout<<endl<<"*  您可以办理下面的业务:"<<endl;
        cout<<"*  1.查询   2.取款  3.存款  4.转账  5.改密  0.退出"<<endl;
        cout<<"*  请输入(0-5):";
        cin>>cChoice;
        switch(cChoice)
        {
        case '1':
            showbalance();
            break;
        case '2':
            drawmoney();
            break;
        case '3':
            deposit();
            break;
        case '4':
            transferAccounts();
            break;
        case '5':
            updatePassword();
            break;
        case '0':
            cout<<"欢迎您下次来存款. "<<endl;
            bExit=true;
        }
    }
    while(!bExit);
    return;
}

//查询余额
void showbalance()
{
    cout<<"您的当前余额是:"<<balance<<"元"<<endl;
}

//取款
void drawmoney()
{
    double money;

    cout << "请输入取款金额:";
    cin >> money;
    //下面不计利息了,从现在起,我们的银行只提供银行卡业务,先不计息的
    if(money<=balance)
    {
        balance-=money; //取款成功
        cout<<"取款后,您的余额是:"<<balance<<"元。"<<endl;
    }
    else
    {
        cout<<"您的余额不足,取款失败。"<<endl;
    }

}
//存款
void deposit()
{
    double money;
    cout << "请输入存款金额:";
    cin >> money;
    //下面不计利息了,从现在起,我们的银行只提供银行卡业务,是定期统一计息的
    balance+=money; //取款成功
    cout<<"存款后,您的余额是:"<<balance<<"元。"<<endl;
}

//转帐
void transferAccounts()
{
    double money;
    int iAccount2;
    cout << "请输入转帐金额:";
    cin >> money;
    cout << "请输入对方帐户:";
    cin >> iAccount2; //应该判断对方帐户的有效性再转账,暂时不做,待以后改进

    if(money<=balance)
    {
        balance-=money; //取款成功
        //此处应该为对方帐户增加余额,暂时略
        cout<<"转给"<<iAccount2<<"后,您的余额是:"<<balance<<"元。"<<endl;
    }
    else
    {
        cout<<"您的余额不足,转账失败。"<<endl;
    }
}

password.cpp——包含涉及密码的函数

#include<iostream>
using namespace std;  //本文件中的涉及输入输出,写包含文件与指定命名空间有必要。
extern int password;  //指出这个全局变量来自别的文件,是外部全局变量

//检验密码
//返回值:通过-true; 不通过-false
bool pass()
{
    bool bPass=false;   //先假设不正确,直至正确后赋值为true
    int iPass;
    int num=1;
    do
    {
        cout<<"请输入密码";
        if(num>1)
            cout<<"(提示:这是第"<<num<<"次输入密码,三次不对将吞卡)";
        cin>>iPass;
        num++;
        if(iPass==password)
            bPass=true;
    }
    while(!bPass&&num<4);   //密码不正确且次数在允许范围内
    return bPass;  //密码正确为true,表示通过,反之……
}


void updatePassword()
{
    int p1,p2;
    cout << "请输入旧密码:";
    cin >> p1;
    if(p1!=password)
    {
        cout<<"旧密码输入不正确,不允许修改密码。"<<endl;
    }
    else
    {
        cout << "请输入新密码:";
        cin >> p1;
        cout << "请确认新密码:";
        cin >> p2;
        if(p1==p2)//两次输入相符
        {
            password=p1;
            cout<<"密码修改成功!"<<endl;
        }
        else
        {
            cout<<"两次输入不一致,密码修改失败。"<<endl;
        }
    }
}




==================== 迂者 贺利坚 CSDN博客专栏=================

|==  IT学子成长指导专栏  专栏文章分类目录(不定期更新)    ==|

|== C++ 课堂在线专栏   贺利坚课程教学链接(分课程年级)   ==|

======== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =======


目录
相关文章
WK
|
1月前
|
机器学习/深度学习 人工智能 算法
那C++适合开发哪些项目
C++ 是一种功能强大、应用广泛的编程语言,适合开发多种类型的项目。它在游戏开发、操作系统、嵌入式系统、科学计算、金融、图形图像处理、数据库管理、网络通信、人工智能、虚拟现实、航空航天等领域都有广泛应用。C++ 以其高性能、内存管理和跨平台兼容性等优势,成为众多开发者的选择。
WK
86 1
|
2月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
571 3
|
2月前
|
Linux C++
Linux c/c++文件的基本操作
在Linux环境下使用C/C++进行文件的基本操作,包括文件的创建、写入、读取、关闭以及文件描述符的定位。
25 0
Linux c/c++文件的基本操作
|
3月前
|
C++ 内存技术
[转]Visual C++内嵌swf文件并播放
[转]Visual C++内嵌swf文件并播放
|
3月前
|
C++
【C++案例】一个项目掌握C++基础-通讯录管理系统
这篇文章通过一个通讯录管理系统的C++项目案例,详细介绍了如何使用C++实现添加、显示、删除、查找、修改和清空联系人等功能。
57 3
|
2月前
|
Linux C++
Linux c/c++文件虚拟内存映射
这篇文章介绍了在Linux环境下,如何使用虚拟内存映射技术来提高文件读写的速度,并通过C/C++代码示例展示了文件映射的整个流程。
65 0
|
2月前
|
Linux C++
Linux c/c++文件移动
这篇文章介绍了在Linux环境下,使用C/C++语言通过命令方式和文件操作方式实现文件移动的方法。
93 0
|
3月前
|
Linux API C++
超级好用的C++实用库之文件目录操作
超级好用的C++实用库之文件目录操作
48 0
|
3月前
|
JavaScript 前端开发 测试技术
一个google Test文件C++语言案例
这篇文章我们来介绍一下真正的C++语言如何用GTest来实现单元测试。
25 0
|
28天前
|
存储 编译器 C语言
【c++丨STL】string类的使用
本文介绍了C++中`string`类的基本概念及其主要接口。`string`类在C++标准库中扮演着重要角色,它提供了比C语言中字符串处理函数更丰富、安全和便捷的功能。文章详细讲解了`string`类的构造函数、赋值运算符、容量管理接口、元素访问及遍历方法、字符串修改操作、字符串运算接口、常量成员和非成员函数等内容。通过实例演示了如何使用这些接口进行字符串的创建、修改、查找和比较等操作,帮助读者更好地理解和掌握`string`类的应用。
50 2