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

课程首页在: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菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =======

时间: 2024-11-04 15:45:26

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

2014秋C++第12周项目4参考- 银行系统

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目4 - 银行系统]这是我们要做的一个真正的项目!涉及到的技术都用过了,只不过,程序真的要长得多了. 在学习中,总是想要些成就感的.当你没有做过一些事情的时候,总是不能知道所学知识究竟能干些什么.在学习过程中,完成一个像样的项目,那是一件很酷的事情,也让我们更有激情.做好思想准备,中间可

C++第12周项目5.1——银行系统框架

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目5-银行系统] 这是我们要做的一个真正的项目!涉及到的技术都用过了,只不过,程序真的要长得多了. 在学习中,总是想要些成就感的.当你没有做过一些事情的时候,总是不能知道所学知识究竟能干些什么.在学习过程中,完成一个像样的项目,那是一件很酷的事情,也让我们更有激情.做好思想准备,中间可能会有些困难,但相信沉下心来还是可以完成的. 要做项目的需求最好能和大家的生活实践联

C++第12周项目5.2 ——银行系统函数版

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目5-银行系统] 这是我们要做的一个真正的项目!涉及到的技术都用过了,只不过,程序真的要长得多了. 在学习中,总是想要些成就感的.当你没有做过一些事情的时候,总是不能知道所学知识究竟能干些什么.在学习过程中,完成一个像样的项目,那是一件很酷的事情,也让我们更有激情.做好思想准备,中间可能会有些困难,但相信沉下心来还是可以完成的. 要做项目的需求最好能和大家的生活实践联

2013级C++第12周项目——函数应用

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目1-当年第几天] 定义一个函数,其参数为年.月.日的值,返回这一天为该年的第几天.要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果. [项目2-太乐了]先听故事,再编程序. 故事是这样的:话说sin和cos是一对夫妇.一天,sin去听相声了,cos在家.过了一会,有人敲门,cos开门一看,是一个不认识的多项式函数.cos问:你是谁啊?

2014秋C++ 第12周项目 C++函数新特征与递归函数

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目1- 阅读程序]阅读下列程序,写出程序的运行结果.上机时运行程序,与你的预期进行对照.理解.如果对运行结果和其背后的原理仍不理解,请通过单步执行的手段跟踪理解.(1)阅读下面两个有静态局部变量的程序,阅读中画出其中各变量的变化过程,以掌握静态变量的存储特征,对照实际运行结果检验学习成果

C++第12周项目1——某年的第几天

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759 [项目1-当年第几天] 定义一个函数,其参数为年.月.日的值,返回这一天为该年的第几天.要求在main函数中输入年月日,然后调用这个函数求值,并在main函数中输出结果.  参考解答1: #include<iostream> using namespace std; int days(int y, int m, int d); int main() { int year

2014秋C++第12周项目2参考-OJ平台题目中多种输入形式的处理

课程主页在http://blog.csdn.net/sxhelijian/article/details/39152703,课程资源在云学堂"贺老师课堂"同步展示,使用的帐号请到课程主页中查看.  [项目2-OJ平台题目中多种输入形式的处理]看教学视频或"OJ平台题目中不同形式输入的处理",完成平台中的一组题目,分别对应不同输入的形式的问题. A: 求N组数的最大公约数 Description 计算一组数的最大公约数 Input 第一行是数据的组数N,从第二行是N组

C++第12周项目4——用函数解决素数、回文数等

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目4-回文.素数]  编制一个返回值为bool型的函数isPrimer(),用于判断参数是否为素数,isPalindrome()用于判断参数是否是回文数,调用函数回答以下问题(可以分别编制几个程序完成,也可以在一个main()函数中完成,输出时,用明显的提示语,说明正在完成哪个任务.) (1)输出10000以内的所有素数.(2)输出10000以内的所有回文数.(3)输

C++第12周项目6——太乐了!

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565 [项目6-泰勒展开] 先听故事,再编程序.故事是这样的:话说sin和cos是一对夫妇.一天,sin去听相声了,cos在家.过了一会,有人敲门,cos开门一看,是一个不认识的多项式函数.cos问:你是谁啊?他说:我是你的老公sin啊.cos说:你不是去听相声了吗?怎么成这幅摸样了?他说:是啊,太乐了!故事讲完了.不懂吗?好好学高数.否则,挂了不冤. 编程序求出sin(π/2