一.题目要求
编写一个ATM管理系统,语言不限,要求应包括以下主要功能:
(1)开户,销户
(2)查询账户余额
(3)存款
(4)取款
(5)转账(一个账户转到另一个账户)等...
二.代码提交
结构体:
struct node
{
char Name[30];
char Id[30];
char Key[20];
float Money;
} info[10000];
保存信息
int preserve_info()//保存信息
{
int i = 0;
FILE *fp;
fp = fopen("info.txt", "w");
if(fp == NULL)
{
printf("文件打开失败\n");
exit(0);
}
for(i=0; i<10000 && info[i].Id[0]!='\0'; i++)
{
fprintf(fp, "%s\t", info[i].Name);
fprintf(fp, "%s\t", info[i].Id);
fprintf(fp, "%s\t", info[i].Key);
fprintf(fp, "%f\n", info[i].Money);
}
fclose(fp);
return 0;
}
读取信息
int read_info()//读取信息
{
int i;
FILE *fp;
fp = fopen("info.txt", "rb");
if(fp == NULL)
{
printf("文件打开失败\n");
exit(0);
}
i=0;
while(!feof(fp))
{
fscanf(fp, "%s", &info[i].Name);
fscanf(fp, "%s", &info[i].Id);
fscanf(fp, "%s", &info[i].Key);
fscanf(fp, "%d", &info[i].Money);
i++;
}
fclose(fp);
return 0;
}
创建信息
int create_info()//创建信息
{
int i;
for(i=0; i<10000; i++)
{
if(info[i].Id[0]=='\0')
{
getchar();
printf("\n 姓名:");
gets(info[i].Name);
printf(" 身份证号:");
gets(info[i].Id);
printf(" 密码:");
gets(info[i].Key);
info[i].Money = 0;
printf("\n账户创建成功!!!\n\n");
return 0;
}
}
return 0;
}
存取款以及转账
int add_money(int n) //存款
{
float num;
printf("存款金额为:");
scanf("%f", &num);
info[n].Money = info[n].Money + num;
printf("存款成功,剩余金额为:%.2f\n", info[n].Money);
return 0;
}
int withdraw_money(int n) //取款
{
float num;
printf("取款金额为:");
scanf("%f", &num);
info[n].Money = info[n].Money - num;
printf("取款成功,剩余金额为:%.2f\n", info[n].Money);
return 0;
}
int transfer_money(int n)//转账
{
float num;
int i;
char other_id[30];
printf("请输入收款人的身份证号:");
getchar();
gets(other_id);
for(i=0; i<10000; i++)
{
if(strcmp(info[i].Id, other_id) == 0)
{
printf("请输入转账金额:");
scanf("%f",&num);
info[n].Money = info[n].Money - num;
info[i].Money = info[i].Money + num;
printf("转账成功,剩余金额为:%.2f", info[n].Money);
return 0;
}
}
printf("转账失败\n");
return 0;
}
登录
int login_account() //登录
{
int n;
char personal_id[30], personal_key[20];
printf("请输入您的身份证号:");
getchar();
gets(personal_id);
printf("请输入您的密码:");
gets(personal_key);
for (n=0; n<10000; n++)
{
if ((strcmp(info[n].Id, personal_id) == 0) && (strcmp(info[n].Key, personal_key) == 0))
{
return n;
}
}
return n;
}
截图
创建账户
存款
登录
取款
销户
转账
三.个人小结
psp | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 20 | 16 |
Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 20 | 23 |
Development | 开发 | 300 | 280 |
Analysis | 需求分析(包括学习新技术) | 24 | 20 |
Design Spec | 生成设计文档 | 10 | 5 |
Design Review | 设计复审 | 10 | 5 |
Coding Standard | 代码规范 | 5 | 3 |
Design | 具体设计 | 20 | 15 |
Coding | 具体编码 | 60 | 58 |
Code Review | 代码复审 | 5 | 10 |
Test | 测试(自我测试,修改代码,提交修改) | 20 | 15 |
Reporting | 报告 | 10 | 8 |
Test Report | 测试报告 | 5 | 3 |
Size Measurement | 计算工作量 | 3 | 2 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 6 | 5 |