c语言创建银行系统之改进一

原创 2018年04月15日 11:08:26
#include <stdio.h>
#include <stdlib.h>

int pass();//验证密码
void work();//业务驱动
void showMenu();//显示菜单
double save(double d);//存款
double withdraw(double d);//取款
void updatePassword();//更改密码
double getBalance();//获得余额
void saveBalance(double d);//保存余额

int main()
{
    printf("Welcome to CSDN bank!\n");
    if(pass())
    {
        work();
    }
    return 0;
}



/*功能:验证用户密码
  返回值:密码正确,返回正数;不能通过密码验证,返回0。*/

int pass()
{
    int iPass;//用户验证时输入的密码
    int iPassInFile;//文件记录的正确密码
    int iTry=3;//进入系统尝试的次数
    FILE *fp;//用于文件操作

    fp=fopen("password.txt","r");
    if(fp==NULL)
    {
        printf("password file cannot open!");
        exit(0);
    }
    fscanf(fp,"%d",&iPassInFile);
    fclose(fp);//取出保存在文件中的密码


    do
    {
        iTry--;
        printf("please enter the password:");
        scanf("%d",&iPass);
        if(iPass==iPassInFile)
            break;
        else
        {
            if(iTry>0)
                printf("you have tried %d times!\n",iTry);
            else
            {
                printf("Sorry,you cannot enter the system!\n");
            }
        }
    }
    while(iTry);//进入系统,密码三次不对将退出

    return iTry;

}


void work()
{
    int iChoice;//用于选择系统功能
    double dBalance;//账户余额
    dBalance=getBalance();


    do
    {
        showMenu();//选择功能并进行处理
        printf("please enter(0-4):");
        scanf("%d",&iChoice);
        switch(iChoice)
        {
        case 1:
            printf("you have %.2lf dollars!\n",dBalance);
            break;
        case 2:
            dBalance=withdraw(dBalance);
            break;
        case 3:
            dBalance=save(dBalance);
            break;
        case 4:
            updatePassword();
            break;
        case 0:
            printf("welcome next time!\n");
        }

    }
    while(iChoice);
    saveBalance(dBalance);
}

/*功能:显示菜单*/
void showMenu()
{
    printf("\nchoose the work:\n");
    printf("1.check\n");
    printf("2.withdraw\n");
    printf("3.save\n");
    printf("4.update password\n");
    printf("0.quit\n");
}

/*功能:获得账户余额
  返回值:账户余额*/
  double getBalance()
  {
      double dBalance;//账户余额
      FILE *fp;//用于文件操作


      if((fp=fopen("balance.txt","r"))==NULL)
      {
          printf("data file cannot open!");
          exit(0);
      }
      fscanf(fp,"%lf",&dBalance);
      fclose(fp);

      return dBalance;

  }

  /*功能:将余额保存到文件中
    参数值:账户余额*/
void saveBalance(double d)
{
    FILE *fp;

    if((fp=fopen("balance.txt","w"))==NULL)
    {
        printf("data file cannot open!");
        exit(0);

    }
    fprintf(fp,"%f",d);
    fclose(fp);
}

/*功能:存款
  参数:存款前的余额
  返回值:存款后的余额*/
double save(double d)
{
    double dMoney;//存款金额
    printf("please enter the money:");
    scanf("%lf",&dMoney);
    d+=dMoney;
    printf("after save money,you have %.2f dollars\n",d);
    return d;
}

/*功能:取款
  参数:取款前金额
  返回值:取款后金额*/
double withdraw(double d)
{
    double dMoney;
    printf("please enter the money:");
    scanf("%lf",&dMoney);
    if(d>=dMoney)
    {
        d-=dMoney;
        printf("after withdraw,you have %.2f dollars!\n",d);
    }
    else
    {
        printf("you have no enough money!\n");
    }
    return d;
}

/*功能:更改密码*/
void updatePassword()
{
    FILE *fp;
    int iPassInFile;
    int iNewPass1,iNewPass2;
    printf("please enter a new password:");
    scanf("%d",&iNewPass1);
    printf("please enter the new password again:");
    scanf("%d",&iNewPass2);
    if(iNewPass1==iNewPass2)
    {
        iPassInFile=iNewPass1;
        printf("update password success!\n");
        if((fp=fopen("password.txt","w"))==NULL)
        {
            printf("password file cannot open!");
            exit(0);
        }
        fprintf(fp,"%d",iPassInFile);
        fclose(fp);
    }
    else
        printf("two enter not same,failed!\n");
}

运用函数的知识,将银行的各种功能以及某些复杂的地方进行模块化处理,从而使程序更加简洁明了,并且更加容易进行改进,需要注意的是:模块化处理是编程的一个重要思想



此外,该程序在密码验证处还存在一些逻辑问题

软件复用为软件开发提速

软件复用为软件开发提速四木(本文转载自软件工程专家网www.21cmm.com)    随着社会信息化程度的提高,IT技术已经深入到社会生活的方方面面,而软件作为IT技术应用的核心,其重要性也日渐突出...
  • gigix
  • gigix
  • 2002-04-09 09:37:00
  • 1370

C语言除法”四舍五入“与“进一法”的实现

1(四舍五入) : e=(a+(b/2))/b e:计算结果 a:被除数 b:除数: 2(进一法) : e=(a+(b-1))/b...
  • harry19902002
  • harry19902002
  • 2014-07-04 15:35:44
  • 2314

C语言课程设计-模拟银行系统

main.c #include #include #include #include #include #define MaxNum 200 #define N_P 6 typedef st...
  • qq920444182
  • qq920444182
  • 2017-04-22 16:13:23
  • 1083

用C++语言模拟实现"逢10进1"的计算法则

[作者]  常用网名: 猪头三 出生日期: 1981.XX.XX 生理特征: 男 婚姻状况: 已婚 个人网站: http://www.x86asm.com Emai...
  • Code_GodFather
  • Code_GodFather
  • 2014-05-02 20:46:06
  • 2731

c语言简单的银行系统

  • 2016年11月21日 13:49
  • 3KB
  • 下载

c语言银行开发系统,功能强大。

  • 2008年11月24日 20:45
  • 37KB
  • 下载

c语言银行系统源代码(改进版)

  • 2008年01月29日 11:05
  • 17KB
  • 下载

菜鸟级C语言银行管理系统

/* * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:main.cpp * 作 者:赵...
  • zhao960803
  • zhao960803
  • 2016-06-30 20:12:26
  • 6150

C语言编写的银行管理系统关键代码

在一个银行系统中,最重要的是客户的开户问题,我在这一部分,花费了一天才搞明白,都怪之前学的数据结构没学好,哎,以后还要温故而知新啊。 以下是用C语言编写的开户,#include #include ...
  • su1573
  • su1573
  • 2017-06-29 00:31:27
  • 818

C语言及程序设计进阶例程-21 银行储蓄系统(第五版)开发

贺老师教学链接  C语言及程序设计进阶 本课讲解可以直接下载完整的项目文件bank.zip运行(点击打开链接,解压后打开项目,或者自建项目后加入源文件和头文件)下面的代码,分别展示各个头文件、源文件:...
  • sxhelijian
  • sxhelijian
  • 2015-05-30 21:31:45
  • 4007
收藏助手
不良信息举报
您举报文章:c语言创建银行系统之改进一
举报原因:
原因补充:

(最多只允许输入30个字)