博客班级 | 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(flag0)
{
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(flag0)
{
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 |