• 提高第40课时,实践,简易银行系统开发


    /*
    *Copyright(c) 2015/6/3 CSDN博客
    *All rights reserved.
    *文件名:main.c
    *作    者:金叶
    *完毕日期:2015/6/3
    *版本:V1.0
    *问题描写叙述:小型银行应用程序
    *程序输出:
    */
    
    
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <conio.h>
    #define upNum 2000
    int ipass(); //银行员工password确认
    void downdate(); //载入数据
    int iChoose(); //银行员工选择功能
    int search(int id); //用于查找账户相应的下标
    int inputpass(); //用于输入password
    void work(); //主菜单
    void open_account(); //1开户
    void cancellation(); //2注销
    void deposit(); //3存款
    void withdraw_money(); //4取款
    void query(); //5查询
    void transfer_accounts(); //6转账
    void loss(); //7挂失
    void unloss(); //8解挂
    void change(); //9该密
    void update(); //保存数据,退出
    int user[upNum][3];  //账号、password、状态
    char name[upNum][10];   //username
    double balance[upNum];  //账户剩余金额
    int N; //银行用户实际人数
    
    int main()
    {
        if (ipass()==1)
        {
            downdate();
            work();
            update();
        }
        return 0;
    }
    
    int ipass()
    {
        int i,j=3;
        int right=0;
        char ch;
        char worker[20];
        char ipass[20];
        char worker1[20];
        char ipass1[20];
        FILE *fp;
        printf("+-------------------+
    ");
        printf("+  欢迎光临CSDN银行 +
    ");
        printf("+-------------------+
    ");
        if ((fp=fopen("worker.txt","r"))==NULL)
        {
            printf("worker file cannot open!");
            exit(0);
        }
        fscanf(fp,"%s %s",worker,ipass); //读入工作人员username
        fclose(fp);
        do
        {
            printf("请输入业务员的username:");
            scanf("%s",worker1);
            printf("请输入password:");
            i=0;
            while((ch=getch())!='
    ')
            {
                ipass1[i++]=ch;
                putchar('*');
            }
            ipass1[i]='';
            fflush(stdin);
            printf("
    ");
            if (strcmp(worker1,worker)==0&&strcmp(ipass1,ipass)==0)
            {
                right = 1;
                break;
            }
            else
            {
                j--;
                if (j>0)
                {
                    printf("超过3次将退出,你还能够尝试%d次!

    ", j); } else { printf("对不起,你不能进入系统 "); } } } while (j); return right; } void downdate() { int i=0; FILE *fp; if ((fp=fopen("bank.txt","r"))==NULL) { printf("bank file cannot open!"); exit(0); } while(fscanf(fp,"%d %s %d %lf %d",&user[i][0], name[i], &user[i][1], &balance[i],&user[i][2] ) != EOF) { i++; } N=i; fclose(fp); return; } void work() { int ichose; do { ichose=iChoose(); switch (ichose) { case 1: open_account(); //开户 break; case 2: cancellation(); //2注销 break; case 3: deposit(); //3存款 break; case 4: withdraw_money(); //4取款 break; case 5: query(); //5查询 break; case 6: transfer_accounts(); //6转账 break; case 7: loss(); //7挂失 break; case 8: unloss(); //8解挂 break; case 9: change(); //9该密 break; case 0: printf("欢迎再来 "); update(); //保存退出 } } while (ichose); } int iChoose() { int ichose; while (1) { printf(" "); printf("+----------------------------+ "); printf("+ 1 开户 2 销户 3 存款 + "); printf("+ 4 取款 5 查询 6 转账 + "); printf("+ 7 挂失 8 解挂 9 改密 + "); printf("+ 0 退出 + "); printf("+----------------------------+ "); printf("请输入操作指令:"); scanf("%d",&ichose); if (ichose>=0 && ichose<=9) { break; } else printf("输入错误。请又一次选择 "); } return ichose; } void open_account() { int ipass1,ipass2; if (N==upNum) { printf("银行用户达到上限,不能开户 "); } printf("正在进行开户 "); printf("请输入用户账号:"); scanf("%d",&user[N][0]); printf("请输入用户姓名:"); scanf("%s",name[N]); printf("请输入password:"); ipass1=inputpass(); printf("请再次确认password:"); ipass2=inputpass(); if (ipass1==ipass2) { user[N][1]=ipass1; user[N][2]=0; printf("存款金额:"); scanf("%lf",&balance[N]); printf("开户成功。 "); N++; } else { printf("password错误,开户失败!

    "); } } int search(int id) { int index; index=-1; int i; for (i=0; i<N; i++) { if (user[i][0]==id) { index=i; break; } } return index; } int inputpass() { char ch; //接收字符形式password int iPass=0; //要转换为数字 int i; while(1) { for(i=0; i<6; i++) { ch=getch(); //输入但不显示 putchar('*'); //输出* if(isdigit(ch)) iPass=iPass*10+(ch-'0'); else { iPass=0; break; //退出for循环后。再次接受 } } fflush(stdin); //清除键盘缓存区中已经有的输入 printf(" "); if(iPass==0) //此条件成立可能由两种情况引起:输入了非数字字符被直接重置为0,或6位全0后正常退出for循环 { printf("password要求全为数字。且不能全0。 "); printf("请又一次输入password: "); } else break; } return iPass; } void cancellation() { int i; int cancel; int pass; printf("输入待销户账号:"); scanf("%d",&cancel); i=search(cancel); printf("姓名:%s ",name[i]); printf("password:"); pass=inputpass(); if (pass==user[i][1]) { printf("剩余金额:%.2lf",balance[i]); printf("确认销户Y/N:"); if(tolower(getchar())=='y') { balance[i]=0; //取款后剩余金额变0 user[i][2]=2; //状态变为注销 printf("取款 %.2f 元,销户成功!

    ", balance[i]); } else { printf("你取消了操作。销户失败! "); } } else { printf("password错误,销户失败! "); } } void deposit() { int i; int id; int pass; double money; printf("请输入账号:"); scanf("%d",&id); i=search(id); if (i<0) { printf("username不存在。 "); } else { printf("姓名:%s",name[i]); printf("password:"); pass=inputpass(); if (pass==user[i][1]&&user[i][2]==0) { printf("输入存款金额:"); scanf("%lf",&money); printf("剩余金额总计%.2lf,存款成功",money+balance[i]); } else if (pass==user[i][1]&&user[i][2]==1) { printf("卡已挂失,存款失败!

    "); } else if (pass==user[i][1]&&user[i][2]==2) { printf("卡已注销,存款失败!

    "); } else { printf("password错误,存款失败! "); } } } void withdraw_money() { int i; int id; int pass; double money; printf("请输入账号:"); scanf("%d",&id); i=search(id); if(i<0) { printf("username不存在。 "); } else { printf("姓名:%s",name[i]); printf("password:"); pass=inputpass(); if (pass==user[i][1]&&user[i][2]==0) { printf("剩余金额 :%.2lf ",balance[i]); printf("取款金额:"); scanf("%lf",&money); if (money>balance[i]) { printf("剩余金额不足,取款失败"); } else { balance[i]-=money; printf("剩余金额:%.2lf",balance[i]); } } else if (pass==user[i][1]&&user[i][2]==1) { printf("卡已挂失,取款失败!

    "); } else if (pass==user[i][1]&&user[i][2]==2) { printf("卡已注销,取款失败! "); } else { printf("password错误。取款失败! "); } } } void query() { int i; int id; int pass; printf("请输入账号:"); scanf("%d",&id); i=search(id); printf("姓名:%s",name[i]); printf("password:"); pass=inputpass(); if (pass==user[i][1]) { printf("剩余金额:%.2lf ",balance[i]); if (user[i][2]==0) { printf("当前状态:正常 "); } else if (user[i][2]==1) { printf("当前状态:挂失 "); } else printf("当前状态:注销 "); printf("查询完毕! "); } else { printf("password错误,查询失败 "); } } void transfer_accounts() { int id,id2; int i,i2; double money; int pass; printf("请输入转出账号:"); scanf("%d",&id); i=search(id); printf("姓名:%s",name[i]); printf("password:"); pass=inputpass(); if (pass==user[i][1]&&user[i][2]==0) { printf("请输入转入账号:"); scanf("%d",&id2); i2=search(id2); printf("转账金额:"); scanf("%lf",&money); if (money>balance[i]) { printf("金额不足,转账失败!

    "); } else { printf("转账成功。剩余金额 %.2lf ",balance[i]-money); balance[i2]+=money; } } } void loss() { int id; int i; int pass; printf("请输入账号:"); scanf("%d",&id); i=search(id); printf("姓名:%s",name[i]); printf("password:"); pass=inputpass(); if (pass==user[i][1]) { printf("剩余金额:%.2lf ",balance[i]); if (user[i][2]==0) { printf("当前状态:正常 "); user[i][2]=1; printf("挂失成功!

    "); } else if (user[i][2]==1) { printf("当前状态:挂失 "); } else printf("当前状态:注销 "); } else { printf("password错误,挂失失败 "); } } void unloss() { int id; int i; int pass; printf("请输入账号:"); scanf("%d",&id); i=search(id); printf("姓名:%s",name[i]); printf("password:"); pass=inputpass(); if (pass==user[i][1]) { printf("剩余金额:%.2lf ",balance[i]); if (user[i][2]==0) { printf("当前状态:正常 "); } else if (user[i][2]==1) { printf("当前状态:挂失 "); user[i][2]=0; printf("解挂成功!

    "); } else printf("当前状态:注销 "); } else { printf("password错误。解挂失败 "); } } void change() { int id; int i; int pass,pass1,pass2; printf("请输入账号:"); scanf("%d",&id); i=search(id); printf("姓名:%s",name[i]); printf("password:"); pass=inputpass(); if (pass==user[i][1]&&user[i][2]!=2) { printf("新password:"); pass1=inputpass(); printf("再次输入:"); pass2=inputpass(); if (pass1==pass2) { user[i][1]=pass1; } else { printf("2次输入不对,改password失败 "); } } else { printf("password不对! "); } } void update() { FILE *p; int i=0; if ((p=fopen("bank.txt", "w"))==NULL) { printf("bank.txt file cannot open!"); exit(0); } for(i=0; i<N; i++) fprintf(p,"%d %s %d %lf %d ",user[i][0], name[i], user[i][1], balance[i],user[i][2]); fclose(p); exit(0); }









    用了一下午才做好这个实践


    真的是好累啊


    只是最后測试完以后是十分的满足啊


    后面还得改进些。得等歇息的时候弄了。


  • 相关阅读:
    indexDB的用法
    append动态生成的元素,无法触发事件的原因及解决方案
    jquery中attr()和prop()的区别
    arguments.callee
    meter标签度量衡如何改变颜色
    Nginx入门
    linux中的权限管理
    python_面向对象
    ORM
    Flask入门
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7112973.html
Copyright © 2020-2023  润新知