zoukankan      html  css  js  c++  java
  • 个人作业三-ATM管理系统


    一、作业信息


    作业班级 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18
    作业要求 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11478
    作业目标 编写一个ATM管理系统
    学号 3180701340

    二、作业要求


    编写一个ATM管理系统,语言不限,要求应包括以下主要功能:

    (1)开户,销户

    (2)查询账户余额

    (3)存款

    (4)取款

    (5)转账(一个账户转到另一个账户)等...

    允许网上查询参考,但请注意不要直接抄袭,可以理解看懂别人的代码,再自己编写


    三、代码提交


        int uid;//卡号
        int password;//密码
        float balance; //余额
        bool flag;  //该账户是否存在,存在为true
    }account;
    
    vector<account> base;
    
    
    

    3.1 检测函数

    //检查账户是否存在,true为存在
    bool check(account N){
        bool flag = true;
        if (N.uid-first > base.size() || !N.flag) {
            printf("抱歉您所寻找的账户并不存在,请重新输入:
    ");
            flag = false;
        }
    //    if (!N.flag) {
    //        printf("抱歉您所寻找的账户已注销,请重新输入:
    ");
    //        flag = false;
    //    }
        return flag;
    }
    
    

    3.2 初始化函数

    //初始化
    void init(account &N){
        //设置卡号
        int id = int(base.size());
        N.uid = first+id; //六位卡号
        printf("您的卡号为: %d 
    ",N.uid);
        
        //设置密码
        printf("请设置您的密码:
    ");
        int psw = 0;
        scanf("%d",&psw);
        N.password = psw;  //账户密码
        
        //初始化余额
        N.balance = 0;  //账户余额
        
        //将账户标记为存在,没有被注销
        N.flag = true;
    }
    
    
    

    3.3开户

    int random(double start, double end)
    {
        return (int)(start+(end-start)*rand()/(RAND_MAX+ 1.0));
    }
    

    3.4销户

    //销户
    void cancel(){
        printf("请输入您需要删除的账号卡号:
    ");
        int id = 0;
        scanf("%d",&id);
        while (check(base[id-first]) == false) {
            scanf("%d",&id);
        }
        
        printf("请输入该 %d 账号的密码:
    ",id);
        int psw = 0;
        scanf("%d",&psw);
        while (psw != base[id-first].password) {
            printf("抱歉,您输入的密码并不正确,请重新输入:
    ");
            scanf("%d",&psw);
        }
        
        printf("您是否确认注销该账户?	 输入1为确认注销,输入0为不注销
    ");
        int choice = 0;
        cin>>choice;
        if (choice == 1) {
            base[id-first].flag = false;   //flag标记为账户不存在
        } else {
            printf("您已取消本次注销行为
    ");
        }
    }
    
    
    

    3.5 余额查询

    //查询余额
    void enquire(){
        printf("请输入您的账户卡号:
    ");
        int id = 0;
        scanf("%d",&id);
        while (check(base[id-first]) == false) {
            scanf("%d",&id);
        }
        
        if (base[id-first].balance == 0) {
            printf("很抱歉,您当前并未有任何存款
    ");
        } else {
            printf("您的余额为: %f ¥
    ",base[id-first].balance);
        }
    }
    
    

    3.6 存款

    //存款
    void deposit(){
        printf("请输入您的账户卡号:
    ");
        int id = 0;
        scanf("%d",&id);
        while (check(base[id-first]) == false) {
            scanf("%d",&id);
        }
        
        float input = 0;
        printf("请输入您要存入的金额数目
    ");
        scanf("%f",&input);
        base[id-first].balance += input;
        printf("您的余额为: %f ¥
    ",base[id-first].balance);
    }
    
    
    

    3.7 取款

    //取款
    void withdraw(){
        printf("请输入您的账户卡号:
    ");
        int id = 0;
        scanf("%d",&id);
        while (check(base[id-first]) == false) {
            scanf("%d",&id);
        }
        
        float input = 0;
        printf("请输入您要取出的金额数目
    ");
        scanf("%f",&input);
        if (base[id-first].balance < input) {
            printf("抱歉,您的存款不足,不能取出
    ");
        } else {
            base[id-first].balance -= input;
            printf("您的余额为: %f ¥
    ",base[id-first].balance);
        }
    }
    
    
    

    3.8 转账

    //转账
    void transfer(){
        printf("请输入您的账户卡号:
    ");
        int oid = 0;
        scanf("%d",&oid);
        while (check(base[oid-first]) == false) {
            scanf("%d",&oid);
        }
        
        printf("请输入您所要转入的账户卡号:
    ");
        int iid = 0;
        scanf("%d",&iid);
        while (check(base[oid-first]) == false) {
            scanf("%d",&oid);
        }
        
        float input = 0;
        printf("请输入您要转出的金额数目
    ");
        scanf("%f",&input);
        if (base[oid-first].balance < input) {
            printf("抱歉,您的存款不足,不能转出
    ");
        } else {
            base[oid-first].balance -= input;
            base[iid-first].balance += input;
            printf("您的余额为: %f ¥
    ",base[oid-first].balance);
            printf("对方余额为: %f ¥
    ",base[iid-first].balance);
        }
    }
    
    
    
    

    3.7菜单

    //转账
    //菜单
    void menu(){
        int end = 0;   //是否结束,0记为不结束
        do {
            printf("请选择您需要进行的操作:
    1.开户	2.销户
    3.查询当前余额
    4.存款	5.取款
    6.转账	0.退出
    ");
            int choose = 0;
            scanf("%d",&choose);
            switch (choose) {
                case 0:
                    printf("Bye~
    ");
                    exit(0);
                case 1:
                    create();
                    break;
                case 2:
                    cancel();
                    break;
                case 3:
                    enquire();
                    break;
                case 4:
                    deposit();
                    break;
                case 5:
                    withdraw();
                    break;
                case 6:
                    transfer();
                    break;
                    
                default:
                    break;
            }
            printf("请问您是否需要继续进行其他操作?输入1继续进行其他操作,输入0则退出
    ");
            scanf("%d",&end);
        } while (end);
    }
    
    
    

    四、运行截图

    五、个人小结

    简单的银行ATM管理系统远远不能够满足需求,在数据信息的保护方面仍需设置密码才可以,在取款时也需设置一次或单日取款的最大金额,整个程序的编写使用C++语言,在语法的使用方面仍需加强,在对于软件的开放方面,仍然要注重用户的需求分析,要不断的与用户沟通,来完善产品信息。

    附:PSP表格

    psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
    Planning 计划 15 20
    Estimate 估计这个任务需要多少时间,并规划大致工作步骤 20 24
    Development 开发 200 243
    Analysis 需求分析(包括学习新技术) 15 11
    Design Spec 生成设计文档 7 7
    Design Review 设计复审 6 4
    Coding Standard 代码规范 5 7
    Design 具体设计 30 38
    Coding 具体编码 45 40
    Code Review 代码复审 8 7
    Test 测试(自我测试,修改代码,提交修改) 5 6
    Reporting 报告 6 12
    Test Report 测试报告 5 8
    Size Measurement 计算工作量 3 4
    Size Measurement 事后总结,并提出过程改进计划 4 9
  • 相关阅读:
    ZOJ Problem Set–2417 Lowest Bit
    ZOJ Problem Set–1402 Magnificent Meatballs
    ZOJ Problem Set–1292 Integer Inquiry
    ZOJ Problem Set–1109 Language of FatMouse
    ZOJ Problem Set–1295 Reverse Text
    ZOJ Problem Set–1712 Skew Binary
    ZOJ Problem Set–1151 Word Reversal
    ZOJ Problem Set–1494 Climbing Worm
    ZOJ Problem Set–1251 Box of Bricks
    ZOJ Problem Set–1205 Martian Addition
  • 原文地址:https://www.cnblogs.com/tb1314tx/p/14000369.html
Copyright © 2011-2022 走看看