ATM管理系统

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

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

二.代码分析
1.头文件及全局变量

#include <stdio.h>
#include<stdlib.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>

#define topNum 2000 //系统最多容纳用户数目
int uActual;//实际人数
char AccName[topNum][9];//账户名
int users[topNum][2];//密码、状态,0行不存放
char nameGroup[topNum][10];//用户姓名,0行不存放
double balance[topNum];//账户余额,0行不存放

2.开户

void OpenaAcount()//开户
{
    if (uActual == topNum)
    {
        printf("系统存储已达上线,不能开户");
        return;
    }
    printf("正在开户中……\n");
    printf("系统生成账号为:");
    creatAccNum(uActual);//生成账号
    printf("请输入姓名:");
    scanf("%s", nameGroup[uActual]);//存入用户名
    if (createPWd(uActual) == 1)//创建密码并校验
    {
        printf("请输入存款金额:");
        scanf("%lf", &balance[uActual]);
        printf("您已经存入%lf元", balance[uActual]);
        users[uActual][1] = 0;//写入状态代号为正常,0表示
        uActual++;
    }
    else
    {
        printf("返回系统选项\n");
    }
}

3.销户

void AccountCancellation()//销户
{

    int site;//查找位置
    if ((site = verifyAll()) != -1)
    {
        printf("你的账户余额为%0.2lf元\n", balance[site]);
        printf("是否销户Y/N:");
        if (tolower(getchar()) == 'y')
        {
            users[site][1] = 2;//销户
            printf("销户成功\n");
        }
        else
        {
            printf("销户失败\n");
        }
    }
    else
    {
        printf("\n失败\n");
    }
    return;
}

4.查询账户余额

void Qurey()//查询
{
    int site;
    if ((site = verifyAll()) != -1)//身份验证
    {
        printf("账户余额为%lf", balance[site]);
    }
}

5.存款

void Deposit()//存款
{
    int site;
    double uMoney;
    if ((site = verifyAll()) != -1)//身份验证
    {
        printf("请输入存款金额:");
        scanf("%lf", &uMoney);
        balance[site] += uMoney;
        printf("已存款%0.2lf元\n余额为%0.2lf元\n", uMoney, balance[site]);
    }
}

6.取款

void Withdraw()//取款
{
    int site;
    double uMoney;
    if ((site = verifyAll()) != -1)//身份验证
    {
        printf("请输入取款金额:");
        scanf("%lf", &uMoney);
        if (uMoney < balance[site])
        {
            balance[site] -= uMoney;
            printf("已取款%0.2lf元\n余额为%0.2lf元\n", uMoney, balance[site]);
        }
        else
            printf("余额不足!");
    }
}

7.转账

void TransferAccount()//转账
{
    int site;
    int Num;
    double uMoney;
    char str[20];//存储输入账号数字
    if ((site = verifyAll()) != -1)//身份验证
    {
        printf("请输入需要转入的账户:");
        gets_s(str);//标准输入设备读字符串函数
        fflush(stdin);
        if ((Num = seek(str)) != -1)//
        {
            printf("请输入转账金额");
            scanf("%lf", &uMoney);
            if (uMoney < balance[site])
            {
                balance[site] -= uMoney;
                balance[Num] += uMoney;
                printf("转账成功\n账户余额为%lf", balance[site]);
            }
            else
            {
                printf("余额不足");
            }
        }

    }
    return;
}

8.导出数据

void Expotr()//导入数据
{
    int i = 0;
    FILE* fp;
    if ((fp = fopen("account.dat", "r")) == NULL)
    {
        printf("File cannot open!\n");
        exit(0);
    }
    if (feof(fp))
    {
        uActual = 0;
    }
    else
    {
        //密码、状态、用户姓名、账号、余额写入
        while (fscanf(fp, "%d %d %s %s %lf", &users[i][0], &users[i][1], nameGroup[i], AccName[i], &balance[i]) != EOF)
            i++;
        fclose(fp);
        uActual = i;
    }
}

9.写入数据

void Import()//写入数据
{
    int i = 0;
    FILE* fp;
    if ((fp = fopen("account.dat", "w")) == NULL)
    {
        printf("File cannot open!\n");
        exit(0);
    }
    //密码、状态、用户名、账号、余额写入
    for (i = 0; i < uActual; i++)
        fprintf(fp, "%d %d %s %s %.2lf\n", users[i][0], users[i][1], nameGroup[i], AccName[i], balance[i]);
    fclose(fp);
}

三.运行截图
1.开户

2.销户

3.存款

4.取款

5.修改密码

四.个人小结

psp 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 15 12
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 8 8
Development 开发 120 130
Analysis 需求分析(包括学习新技术) 12 15
Design Spec 生成设计文档 5 6
Design Review 设计复审 5 5
Coding Standard 代码规范 3 4
Design 具体设计 12 16
Coding 具体编码 35 40
Code Review 代码复审 5 6
Test 测试(自我测试,修改代码,提交修改) 10 15
Reporting 报告 10 12
Test Report 测试报告 6 12
Size Measurement 计算工作量 20 25
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 5 5
posted @ 2020-11-16 23:49  WGT-UP  阅读(130)  评论(0)    收藏  举报