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
- C语言初步-第47讲: 小小型应用系统开发指导(模拟银行储蓄系统的基本功能)
- C语言提高-第15讲: 小小型应用系统开发指导(函数版银行储蓄系统)
- C语言提高-40讲: 小小型应用系统开发指导(四)(银行储蓄系统数组版)
- 第3周 C语言及程序设计初步例程-47 小小型应用系统开发指导(二)
- C语言及程序设计初步例程-47 小小型应用系统开发指导(二)
- 第3周 C语言及程序设计初步例程-46 小小型应用系统开发指导(一)
- C语言及程序设计初步例程-46 小小型应用系统开发指导(一)
- C语言进阶-第39讲:银行储蓄系统(二进制版)开发
- 第4周 C语言及程序设计提高例程-15 小小型应用系统开发指导(三)
- 第10周 C语言及程序设计提高例程-40 小小型应用系统开发指导(四)
- C语言:银行储蓄系统的开发(初级)
- C语言及程序设计提高例程-15 小小型应用系统开发指导(三)
- C语言及程序设计提高例程-40 小小型应用系统开发指导(四)
- 银行储蓄系统指导
- C语言:银行储蓄系统开发(中级)
- C++语言基础 例程 应用系统开发:银行储蓄系统
- C++语言基础 例程 应用系统开发:银行储蓄系统
- 第十五课 小小型应用系统开发指导(三)
- C#as关键字
- 3.C++进化后的 const
- jquery validate
- Word表格外的第一个空行如何删除
- 异步加载
- C语言初步-第47讲: 小小型应用系统开发指导(模拟银行储蓄系统的基本功能)
- Failed to resolve: com.android.support.constraint:constraint-layout
- java中循环引用会不会防止GC回收
- byte解析为bool
- OutOfMemoryError系列(7): Requested array size exceeds VM limit
- C_十进制,二进制,八进制,十六进制
- JavaScript学习笔记
- Android 6.0 沉浸式状态栏
- Git入门(一)