C语言及程序设计初步例程-47 小小型应用系统开发指导(二)

贺老师教学链接  C语言及程序设计初步 本课讲解


简单银行系统的初步框架

#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;
}


上一篇:python 3.5.2安装mysql驱动报错


下一篇:Vim 编辑器的兼容模式