• ATM管理系统


    博客班级 软件工程
    作业要求 https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11478
    学号 3180701228

    一、题目要求

    编写一个ATM管理系统,语言不限,要求应包括以下主要功能:
    (1)开户
    (2)查询账户余额
    (3)存款
    (4)取款
    (5)转账(一个账户转到另一个账户)

    二、代码

    1.结构体
    typedef struct{
    int uid;//卡号
    int password;//密码
    float balance; //余额
    bool flag; //该账户是否存在,存在为true
    }account;
    vector base;

    2.检测函数
    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.初始化函数
    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;
    

    }

    4.开户
    void create(){

    account N;
    
    init(N);
    
    base.push_back(N);
    

    }

    5.注销
    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("您已取消本次注销行为
    ");
    
    }
    

    }

    6.余额查询
    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);
    
    }
    

    }

    7.存款
    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);
    

    }

    8.取款
    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);
    
    }
    

    }

    9.转账
    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);
    
    }
    

    }

    10.菜单
    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);
    

    }

    三、运行结果



    四、

    psp 任务内容 计划完成的时间(min) 实际完成时间(min)
    Planning 计划 30 30
    Estimate 估计这个任务需要多少时间 50 60
    Development 开发 20 20
    Design 设计 15 15
    Test 测试 6 6
    Postmortem & Process Improvement Plan 事后总结 5 5
  • 相关阅读:
    SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSAS 系列
    微软BI 之SSRS 系列
    微软BI 之SSRS 系列
    配置 SQL Server Email 发送以及 Job 的 Notification通知功能
  • 原文地址:https://www.cnblogs.com/weihang/p/13997343.html
Copyright © 2020-2023  润新知