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 |
浙公网安备 33010602011771号