博客班级 https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/
作业要求 https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/homework/11477
作业目标 编写一个ATM管理系统
学号 3190704242
(一)代码
(1)主函数及系统界面

include <stdio.h>

include <stdlib.h>

include <string.h>

struct ATM
{
char no[20];
char name[40];
double jine;
double money;
struct ATM *link;
};

struct ATM *head;

void insert(); /开户/
void seek();/查询账户余额/
void mod();/存取款/
void del();/销户/
void dis();/显示账户信息/

int main()
{
char n[20];
head=(struct ATM*)malloc(sizeof(struct ATM));
head->link=NULL;
if(headNULL){
printf("error!\n");
exit(0);
}
while(1)
{
system("cls");
printf("|--------幸幸子的ATM管理系统---------|\n");
printf("| 1.开户 |\n");
printf("| 2.查询账户余额 |\n");
printf("| 3.销户 |\n");
printf("| 4.存款或取款 |\n");
printf("| 5.显示账户信息 |\n");
printf("| 0.退出系统 |\n");
printf("请选择功能(0-5):");
scanf("%s",n);
if(strcmp(n,"0")
0)
{
printf("谢谢惠顾!\n");
exit(0);
}
else if(strcmp(n,"1")0)
{
insert();
}
else if(strcmp(n,"2")
0)
{
seek();
}
else if(strcmp(n,"3")0)
{
del();
}
else if(strcmp(n,"4")
0)
{
mod();
}
else if(strcmp(n,"5")==0)
{
dis();
}
else
{
printf("无此功能!请重新输入!\n");
}
printf("按任意键继续!");
system("pause");
}
return 0;
}

(2)开户
void insert()
{
struct ATM p=head,temp;
temp=(struct ATM*)malloc(sizeof(struct ATM));
temp->link=NULL;
printf("请输入用户信息:\n");
printf("请输入用户编号:");
scanf("%s",temp->no);
printf("请输入用户名称:");
scanf("%s",temp->name);
printf("请输入存款金额:");
scanf("%lf",&temp->money);
temp->jine=temp->money;
while(p->link!=NULL)
{
p=p->link;
}
p->link=NULL;
p->link=temp;
printf("开户成功!\n");
}

(3)查询账户余额
void seek()
{
struct ATM *p=head;
p=p->link;
char no[20];
int flag=0;
printf("请输入所要查找的用户编号:");
scanf("%s",no);
while(p!=NULL)
{
if(strcmp(p->no,no)0)
{
printf("用户编号:%s 用户名称:%s 存款金额:%lf ",p->no,p->name,p->money);
flag=1;
break;
}
p=p->link;
}
if(flag
0)
{
printf("查无此用户!查找失败!\n");
}
}

(4)存取款
void mod()
{
struct ATM *p=head;
p=p->link;
char n[20],no[20];
int flag=0;
printf("请输入所要存款或取款的用户编号:");
scanf("%s",no);
while(1){
while(p!=NULL){
if(strcmp(p->no,no)0
){
printf("当前用户信息:\n");
printf("用户编号:%s 用户名称:%s 存款金额:%lf",p->no,p->name,p->money);
flag=1;
break;
}
p=p->link;
}
if(flag
0)
{
printf("查无此用户!\n");
}
printf("请选择是否要进行存取款(1进行存取款 0:不进行存取款):");
scanf("%s",n);
if(strcmp(n,"0")0)
{
printf("退出存取款!\n");
break;
}
else(strcmp(n,"1")
0);
{
printf("请输入存取款金额:");
scanf("%lf",p->money);
}
printf("存取款完成!\n");
p->jine=p->money;
}
}

(5)销户
void del()
{
struct ATM p=head,q;
char no[20];
int flag=0;
printf("请输入所要销户的用户编号:");
scanf("%s",no);
while(p->link!=NULL)
{
if(strcmp(p->link->no,no)0)
{
printf("删除用户信息:\n");
printf("用户编号:%s 用户名称:%s 存款金额:%lf ",p->link->no,p->link->name,p->link->money);
flag=1;
printf("是否确定销户(y/任意):\n");
scanf("%s",no);
if(strcmp(no,"y")
0)
{
q=p->link;
p->link=q->link;
free(q);
printf("销户成功!\n");
}
else
{
printf("退出销户!\n");
}
break;
}
p=p->link;
}
if(flag==0)
{
printf("查无此用户!销户失败!\n");
}
}

(6)显示账户信息
void dis()
{
struct ATM *p=head;
p=p->link;
while(p!=NULL)
{
printf("用户编号:%s 用户名称:%s 存款金额:%lf ",p->no,p->name,p->money);
p=p->link;
}
}

(二)个人小结

psp 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 5 8
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 10 13
Development 开发 110 100
Analysis 需求分析(包括学习新技能) 20 14
Design Spec 生成设计文档 6 8
Design Review 设计复审 5 5
Coding Standard 代码规范 5 5
Design 具体设计 15 20
Coding 具体编码 20 30
Code Review 代码复审 10 8
Test 测试(自我测试,修改代码,提交修改) 25 15
Reporting 报告 5 10
Test Report 测试报告 10 9
Size Measurement 计算工作量 35 42
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 5 10