简单银行系统的初步框架
#include <stdio.h> #include <stdlib.h> int main() { int iPass; int iChoice; printf("欢迎您光临CSDN银行\n"); printf("请输入密码:"); scanf("%d", &iPass); if(iPass!=123456) { printf("不要着急,想好了再输入……\n"); exit(0); } 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("您的余额有100W. \n"); break; case 2: printf("理智消费. \n"); break; case 3: printf("勤俭持家. \n"); break; case 4: printf("请牢记你的密码. \n"); break; case 0: printf("欢迎您再来. \n"); } } while(iChoice); return 0; }
完整程序
/* 说明: 本程序在学习者仅掌握了基本数据类型和控制结构的前提下设计,模拟银行储蓄系统的基本功能。 在运行前,请建立文件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; }