C語言程序設計提高篇應用程序設計-CSDN銀行2.0

#include <stdio.h>
#include <stdlib.h>
//C語言及程序設計初步,綜合練習,CSDN銀行2.0,功能說明
/* 1.輸入密碼進行登錄(錯誤三次後退出程序),輸入0-4選擇不同功能,1-查詢、2-取款,3-存款,4-改密碼,0-退出.
   2.只支持單個用戶,密碼和存款餘額分別保存在本地兩個文件中
   3.取款功能支持超出額度提示.
   4.修改密碼需要輸入兩次新密碼,先要輸入原密碼
   5.取款和存款操作需要加入確認提示,點擊確認後纔會繼續操作,取消的話回退會上一級
*/
//第二版,代碼優化,模塊化思路
int passwd();//函數功能:判斷密碼是否正確
void work();//函數功能:主業務模塊,被main函數調用
void Out();//取款模塊,被主業務模塊調用
void In();//存款模塊,被主業務模塊帶哦用
void change_passwd();//修改密碼模塊,被主業務模塊調用
long getsalary();//獲得餘額模塊,被多個其他模塊調用
void show_menu();//展示業務菜單模塊,被主業務模塊調用
void change_money(long);//修改餘額模塊,被存取款模塊調用
int main()
{
    printf("歡迎使用CSDN銀行\n");
    if(passwd()==0)
    {
        printf("密碼錯誤三次,賬號鎖定!\n");
        exit(0);
    }
    work();
    printf("謝謝您的使用,歡迎下次光臨!\n");
    return 0;
}
int passwd()
{
    long iPass_file,iPass;
    int iErr_count=1,r;
    FILE *fp;
    fp=fopen("passwd.dat","r");
    fscanf(fp,"%ld",&iPass_file);
    fclose(fp);
    while(iErr_count<=3)
    {
        if(iErr_count==1)
            printf("請輸入密碼:");
        else
            printf("密碼錯誤,請再次輸入密碼: ");
        scanf("%ld",&iPass);
        if(iPass==iPass_file)
            break;
        else
            iErr_count++;
    }
    if(iErr_count>3)
        r=0;
    else
        r=1;
    return r;
}
void work()
{
    int iErr_count;
    int flag=0,choice;
    while(flag==0)
    {
        show_menu();
        scanf("%d",&choice);
        switch(choice)
        {
            case 1:
            {
                printf("當前的存款餘額爲:%ld\n",getsalary());
                break;
            }
            case 2:
            {
                Out();
                break;
            }
            case 3:
            {
                In();
                break;
            }
            case 4:
            {
                iErr_count=1;
                printf("修改密碼需要校驗原密碼\n");
                if(passwd()==1)
                {
                    change_passwd();
                }
                else
                {
                    printf("錯誤三次,請重新選擇\n");
                }
                break;
            }
            case 0:
            {
                flag=1;
                break;
            }
            default:
            {
                printf("輸入錯誤,請重新輸入!\n");
            }
        }
    }
}
void show_menu()
{
    printf("本行提供以下業務:\n");
    printf("1.  查詢.\n");
    printf("2.  取款.\n");
    printf("3.  存款.\n");
    printf("4.  改密碼.\n");
    printf("0.  退出.\n");
    printf("請選擇需要辦理的業務(1-4),按0退出:");
}
long getsalary()
{
    long money;
    FILE *fp;
    fp=fopen("money.dat","r");
    fscanf(fp,"%ld",&money);
    fclose(fp);
    return money;
}
void change_money(long iMoney)
{
    FILE *fp;
    fp=fopen("money.dat","w");
    fprintf(fp,"%ld",iMoney);
    fclose(fp);
}
void Out()
{
    long iOut,iMoney;
    char choice_temp;
    iMoney=getsalary();
    printf("請輸入需要取出的金額:");
    scanf("%ld",&iOut);
    printf("確認取出%ld元(輸入n取消,任意鍵確認)\n",iOut);
    choice_temp=getchar();//接收前一個字符串的\n
    choice_temp=getchar();
    if(choice_temp!='n'&&choice_temp!='N')
    {
        if(iOut<=iMoney)
        {
            iMoney-=iOut;
            change_money(iMoney);
            printf("成功取出%ld元!\n",iOut);
        }
        else
        {
            printf("餘額不足!\n");
        }
    }
}
void In()
{
    long iPut,iMoney;
    char choice_temp;
    iMoney=getsalary();
    printf("請輸入需要存入的金額:");
    scanf("%ld",&iPut);
    printf("確認存入%ld元(輸入n取消,任意鍵確認)\n",iPut);
    choice_temp=getchar();//接收前一個字符串的\n
    choice_temp=getchar();
    if(choice_temp!='n'&&choice_temp!='N')
    {
        iMoney+=iPut;
        change_money(iMoney);
        printf("成功存入%ld元!\n",iPut);
    }
}
void change_passwd()
{
    long iPass_change_new1,iPass_change_new2;
    long iPass;
    FILE *fp;
    fp=fopen("passwd.dat","w");
    printf("校驗通過,請輸入新密碼:");
    scanf("%ld",&iPass_change_new1);
    printf("請再次輸入新密碼:");
    scanf("%ld",&iPass_change_new2);
    while(iPass_change_new1!=iPass_change_new2)
    {
        printf("兩次結果不一致,請重新輸入!\n");
        printf("校驗通過,請輸入新密碼:");
        scanf("%ld",&iPass_change_new1);
        printf("請再次輸入新密碼:");
        scanf("%ld",&iPass_change_new2);
    }
    iPass=iPass_change_new1;
    fprintf(fp,"%ld",iPass);
    fclose(fp);
    printf("修改密碼成功!\n");
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章