C语言初步-第47讲: 小小型应用系统开发指导(模拟银行储蓄系统的基本功能)

来源:互联网 发布:南通大学网络 编辑:程序博客网 时间:2024/05/29 09:41
/* 说明:     本程序在学习者仅掌握了基本数据类型和控制结构的前提下设计,模拟银行储蓄系统的基本功能。     在运行前,请建立文件password.txt,其中存储一个整数,表示密码。     建立文件balance.dat,其中存储一个数,表示余额。     运行结束后,对数据所做的所有修改均可以利用文件保存下来。 本程序进一步的改进:     1、银行应该是多用户,而绝不可以是单个的用户     2、应该要记录详细的业务过程     3、增加转帐、挂失等功能     4、密码的加密存储以及密码输入隐藏     5、在程序的结构方面,100多行程序放在main函数中,已经显得复杂了。     随着课程进展,我们将继续完善这个程序。 */  #include <stdio.h>  #include <stdlib.h>  int main()  {      int iPass;  //用户验证时输入的密码      int iPassInFile;  //记录正确的密码      int iTry=0;   //进入系统时尝试的次数      int iNewPass1, iNewPass2;   //用于修改密码      int iChoice;   //用于选择系统功能      double dBalance;  //账户余额      double dMoney;  //存取款金额      FILE *fp;  //用于文件操作          printf("欢迎您光临CSDN银行\n");          //密码保存在文件中,先取出      if ((fp=fopen("password.txt", "r"))==NULL)      {          printf("password file cannot open!");          exit(0);      }      fscanf(fp, "%d", &iPassInFile);      fclose(fp);          //进入系统,密码三次不对将退出      do      {          iTry++;          printf("请输入密码:");          scanf("%d", &iPass);          if(iPass==iPassInFile)              break;          else          {              if(iTry<3)                  printf("超过3次将退出,你已经尝试%d次!\n", iTry);              else              {                  printf("对不起,你不能进入系统\n");                  exit(0);              }          }      }      while(1);              //从文件中取出余额      if ((fp=fopen("balance.dat", "r"))==NULL)      {          printf("data file cannot open!");          exit(0);      }      fscanf(fp, "%lf", &dBalance);      fclose(fp);          //办理业务      do      {          printf("\n您可以办理下面的业务:\n");          printf("  1.查询\n");          printf("  2.取款\n");          printf("  3.存款\n");          printf("  4.改密码\n");          printf("  0.退出\n");          printf("请输入(0-4):");          scanf("%d", &iChoice);          switch(iChoice)          {          case 1:              printf("您的余额有%.2lf元. \n",dBalance);              break;          case 2:              printf("输入取款额: ");              scanf("%lf", &dMoney);              if(dBalance>dMoney)              {                  dBalance-=dMoney;                  printf("取款后,您还有%.2lf元. \n",dBalance);              }              else                  printf("余额不足,取款失败. \n");              break;          case 3:              printf("输入存款额: ");              scanf("%lf", &dMoney);              dBalance+=dMoney;              printf("存款后,您有%.2f元. \n",dBalance);              break;          case 4:              printf("请输入新密码:");              scanf("%d", &iNewPass1);              printf("再输入新密码:");              scanf("%d", &iNewPass2);              if(iNewPass1==iNewPass2)              {                  iPassInFile = iNewPass1;                  printf("密码修改成功,请注意保密.\n");              }              else                  printf("两次输入不一致,密码修改失败.\n");              break;          case 0:              printf("欢迎您再来. \n");          }      }      while(iChoice);      //保存余额      if ((fp=fopen("balance.dat", "w"))==NULL)      {          printf("data file cannot open!");          exit(0);      }      fprintf(fp, "%f", dBalance);      fclose(fp);      //保存密码(可能修改过)      if ((fp=fopen("password.txt", "w"))==NULL)      {          printf("password file cannot open!");          exit(0);      }      fprintf(fp, "%d", iPassInFile);      fclose(fp);      return 0;  } 

知识点总结:

         1.文件的输入输出;

         2.do{}while(1);及其break;exit(0);语句的使用;

         3.do{}while();中嵌套使用switch多分支结构。


心得:

       需要自己多加联系和熟练的两个地方:

               1) 清晰的模块结构;

               2)输入输出格式的规范。

阅读全文
0 0
原创粉丝点击