| 所在班级 | 软件工程 |
| ---- | ---- | ---- |
| 作业要求 | ATM管理系统 |
| 作业目标 | 熟悉代码编写 |
| 本人学号 | 3180701328 |
题目要求
编写一个ATM管理系统,语言不限,要求应包括以下主要功能:
(1)开户,销户
(2)查询账户余额
(3)存款
(4)取款
(5)转账(一个账户转到另一个账户)等...
代码提交
代码分析
头文件
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include "login.h" //登陆函数模块
#include "Welcome.h" //界面欢迎模块
#include "client.h" //用户操作界面
主界面
void menu(){
int end = 0;
do {
system("cls"); //清屏操作
printf("* 安徽工程大学ATM管理系统 *\n");
printf("*****************************\n");
printf("* 1.开户 *\n");
printf("* 2.销户 *\n");
printf("* 3.查询余额 *\n");
printf("* 4.存款 *\n");
printf("* 5.取款 *\n");
printf("* 6.转账 *\n");
printf("* 7.退出 *\n");
printf("*****************************\n");
int choose = 0;
scanf("%d",&choose);
switch (choose) {
case 1:
BuildUser();
break;
case 2:
logout();
break;
case 3:
showmoney();
break;
case 4:
savemoney();
break;
case 5:
drawmoney();
break;
case 6:
Trans();
break;
case 7:
printf("退出\n");
exit(0);
default:
break;
}
printf("您是否需要继续使用其他功能?输入1继续,输入0则退出\n");
scanf("%d",&end);
} while (end);
}
开户
void BuildUser()
{
printf("\n\t\t\t开始录入用户:\n");
USERDATA userdata;
int i=0;FILE *fp; //判断是否继续录入,如果继续按1,否则按2
char ch;
if((fp=fopen("iddata.txt","a+"))==NULL)
{
printf("Failure to open admin.txt!\n");
exit(0);
}
do{
system("cls");
printf("\n\t\t\t请输入你的卡号:");
gets(userdata.UserID);
printf("\n\t\t\t请输入用户密码:");
gets(userdata.UserPassword);
fprintf(fp,"%-10s%-10s%-10s%-10.2f\n",userdata.Name,userdata.UserID,userdata.UserPassword,userdata.money); //见录入数据保存到文件中
system("cls");
printf("\n\t\t\t录入成功。\n\t\t\t继续录入请按 1 \n\t\t\t结束录入并推出登陆请按 2\n");
printf("\t\t\t----");
scanf("%d",&i);
ch=getchar();
}while(i==1);
fclose(fp);
if(i==2) main();
}
销户
void logout()
{
char confirm;//confirm 确认
printf("您正在使用注销功能\n");
printf("%d确认注销?\n",user[find].account);
printf("Y表示确定,其它字符表示取消\n");
scanf("%c",&confirm);
if(confirm=='y'||confirm=='Y')
{
printf("正在注销%d\n",user[find].account);
isLogout=1;
}else
{
printf("取消注销帐号%d,返回服务界面\n",user[find].account);
isLogout=0;
}
}
查询余额
void showmoney()
{
printf("\t用户名 :%s\n",user.name);
printf("\t账户余额:%d\n",user.money);
printf("\t请按Enter键返回\n");
getchar();
}
存款
void savemoney()
{
FILE *fp;
int a,i;
char c;
printf("\t请输入您的存款数额:");
scanf("%d",&a);
getchar();
user.money+=a;
if((fp=fopen("data/client.dat","wb"))!=NULL)
{
fwrite(&user, sizeof(client), 1 ,fp);
fclose(fp);
}
printf("\t存款成功\n");
printf("\t请按Enter键退出\n");
getchar();
}
取款
void drawmoney()
{
FILE *fp;
int a,i;
char c;
while(1){
printf("\t请输入您的取款金额:");
scanf("%d",&a);
if(a>user.money)
printf("\t账户余额不足,请重新输入!\n");
else if(a<0)
printf("\t输入有误,请重新输入!\n");
else
break;
}
getchar();
user.money-=a;
if((fp=fopen("data/client.dat","wb"))!=NULL)
{
fwrite(&user, sizeof(client), 1 ,fp);
fclose(fp);
}
printf("\t取款成功,请收好您的钞票!\n");
printf("\t请按Enter键退出\n");
getchar();
}
转账
float Trans(struct User *p)
{
FILE *fp;
char a[N];
float money;
printf("\n\t\t\t请输入您要转账的同行账户:");
re:
scanf(" %s",a);
char path[30]="G:\\1\\ATM\\private_record\\",suffix[]=".txt";
strcat(path,a);
strcat(path,suffix);
if((fp=fopen(path,"r+"))==NULL)
{
fp=fopen(path,"w+");
printf("\n\t\t\t该账户不存在,请重新输入转账账户:");
goto re;
}
else
{
printf("\n\t\t\t请输入转账金额:");
scanf("%f",&money);
while(money>p->money||money<=0)
{
if(money>p->money)
{
printf("\n\t\t\t卡里余额不足\n");
printf("\n\t\t\t请先按键查询余额后重新确认转账金额。");
printf("\t\t ");
getch();return 0;
break;
}
}
p->money-=money;
printf("\n\t\t\t成功转入目标账户%.2f元,按任意键返回上层\n",money);
fclose(fp);
printf(" ");
getch();
return -money;
}
}
运行截图
开户
销户
查询余额
存款
取款
转账
个人小结
这次报告使用C语言编写一个简单的ATM管理系统,其实如果是用Java来写更好,但Java我们并没有学习,所以只能用
c了。在导入文件的时候出现了乱码,但后面及时改正。让我对编程又有了新的认识。
PSP:
PSP2.1 | 任务内容 | 预计时间(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 20 | 40 |
Estimate | 估算开发时间 | 290 | 500 |
Development | 开发 | 80 | 100 |
Analysis | 需求分析 | 20 | 20 |
Design Spec | 生成设计文档 | 10 | 20 |
Design Review | 设计复审 | 10 | 10 |
Coding Standard | 代码规范 | 10 | 10 |
Design | 具体设计 | 20 | 20 |
Coding | 具体编码 | 20 | 20 |
Code Review | 代码复审 | 20 | 20 |
Test | 测试 | 30 | 20 |
Reporting | 报告 | 20 | 30 |
Test Report | 测试报告 | 20 | 30 |
Size Measurement | 计算工作量 | 20 | 20 |
Postmorten & Process Improvement | 事后总结,并提出过程改进计划 | 20 | 20 |
Size Measurement | 合计 | 300 | 350 |