第15章项目-银行系统开发(三)

问题及代码:

/*
Copyright(c)2018,CSDN学院行者-
All rights reserved.
文件名称:main.c
作者:乔帅
完成日期:2018年3月13日
版本号:v1.0

问题描述:银行系统开发
输入描述:相应数据
程序输出:相应数据
*/
#include<stdio.h>
int pass();                      //验证密码
void work();                    //业务驱动
void showMenu();                //显示菜单
double save(double d);          //存款
double withfraw(double d);      //取款
void updatePassword();          //更改密码
double getBalance();            //获得余额
void saveBalance(double d);     //保存数据
int main(){
    printf("欢迎您光临CSDN银行\n");
    if(pass()){
        work();
    }
    return 0;
}
int pass(){
/*
功能:验证用户密码
返回值:密码正确,返回正数;
        不能通过密码验证,返回0
*/
    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("请输入密码:");
        scanf("%d",&iPass);
        if(iPass == iPassInFile){
            break;
        }else{
            if(iTry>0){
                printf("密码错误!\n");
                printf("您还可以尝试%d次\n",iTry);
            }else{
                printf("密码错误!\n");
                printf("对不起您今天以无尝试机会!\n");
            }
        }
    }while(iTry);
    return iTry;
}
void work(){
/*
功能:办理业务
*/
    int iChoice;        //用于选择系统功能
    double dBalance;    //账户余额
    dBalance = getBalance();
    do{
        showMenu();
        printf("请输入(0-4):");
        scanf("%d",&iChoice);
        switch(iChoice){
            case 1:
                printf("余额为:%.2lf元\n",dBalance);
                break;
            case 2:
                dBalance = save(dBalance);
                break;
            case 3:
                dBalance = withfraw(dBalance);
                break;
            case 4:
                updatePassword();
                break;
            case 0:
                printf("欢迎您再来.\n");
        }
        //选择功能并处理
    }while(iChoice);
    saveBalance(dBalance);
}
/*
功能:显示菜单
*/
void showMenu(){
printf("\n选择业务:\n");
printf("1.查询\n");
printf("2.存款\n");
printf("3.取款\n");
printf("4.改密码\n");
printf("0.退出\n");
}
/*
功能:获得账户余额
返回值:账户余额
*/
double getBalance(){
    double dBalance;
    FILE *fp;
    if((fp = fopen("balance.dat","r")) == NULL){
        printf("date file cannot open!");
        exit(0);
    }
    fscanf(fp,"%lf",&dBalance);
    fclose(fp);
    return dBalance;
}
/*
功能:存款
*/
double save(double d){
    double value;
    printf("请输入存款金额:");
    scanf("%lf",&value);
    d += value;
    printf("存款成功!余额为:%.2lf",d);
    return d;
}
/*
功能:取款
*/
double withfraw(double d){
    double value;
    printf("请输入取款金额:");
    scanf("%lf",&value);
    if(d >= value){
        d = d - value;
        printf("取款成功!余额为:%.2lf",d);
    }else{
        printf("余额不足,取款失败!");
    }
    return d;
}
/*
功能:修改密码
*/
void updatePassword(){
    int newpassword1 , newpassword2,iPassInfile;
    FILE *fp;       //用于文件操作
    printf("请输入新的密码:");
    scanf("%d",&newpassword1);
    printf("请再次输入新的密码:");
    scanf("%d",&newpassword2);
    if(newpassword1 == newpassword2
       ){
        iPassInfile = newpassword1;
        printf("修改密码成功!\n");
        if((fp = fopen("password.txt","w"))==NULL){
            printf("date file cannot open!");
            exit(0);
        }
        fprintf(fp,"%d",iPassInfile);
        fclose(fp);
    }else{
        printf("两次输入不一致,密码修改失败!\n");
    }
}
/*
功能:将余额保存到文件中
参数值:账户余额
*/
void saveBalance(double d){
    FILE *fp;    //用于文件操控
    //保存余额
    if((fp = fopen("balance.dat","w")) == NULL){
        printf("data file cannot open!");
        exit(0);
    }
    fprintf(fp,"%f",d);
    fclose(fp);
}

运行结果:


知识点总结:

1.综合运用了,前一段时间所学习的知识

学习心得:

这个题目涵盖了很多的知识点,算是对前一段时间的学习进行了总结。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值