• 个人作业三-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
  • 相关阅读:
    Informatica 常用组件Lookup缓存之五 使用动态查找高速缓存
    Informatica 常用组件Lookup缓存之四 使用不高速缓存的查找或静态高速缓存
    Informatica 常用组件Lookup缓存之三 重建查找高速缓存
    Golang入门教程(十一)beego 框架之RESTful Controller 路由
    PHP7 学习笔记(十二)PHPExcel vs PhpSpreadsheet and PHP_XLSXWriter
    PHP7 学习笔记(十二)gRPC
    PHP7 学习笔记(十一)使用phpstudy快速配置一个虚拟主机
    Golang入门教程(十)内建函数
    Golang入门教程(九)复合数据类型使用案例二
    Golang入门教程(八)复合数据类型使用案例一
  • 原文地址:https://www.cnblogs.com/tb1314tx/p/14000369.html
Copyright © 2020-2023  润新知