博客班级 | AHPU软件工程 |
---|---|
作业要求 | ATM自助银行管理系统 |
作业目标 | 编码实现ATM自助银行服务系统 |
学号 | 3180701211 |
作业目标
编写一个ATM管理系统,语言不限,要求应包括以下主要功能:
(1)开户,销户
(2)查询账户余额
(3)存款
(4)取款
(5)转账(一个账户转到另一个账户)等...
代码
头文件
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 100
定义结构体和函数
void Transaccount();//转账
void Menu(); //菜单
void Close_account(); //销户
void Save_money();//存钱
void Withdraw_money();//取钱
void Show(); //查询
void Open_account();//开户
void save(int m); //存入文件
int read(); //读取文件
struct Person
{
char Id_number[20];//身份证号
char name[10];//姓名
char password[20];//密码
char Repassword[20];//再次确认输入的密码
float balance;//余额
}Person[N],P[2];
主函数与菜单
void Menu()
{
system("color 3F");//设置文字背景颜色
printf("******************************************************************
");
printf("************************欢迎使用ATM管理系统***********************
");
printf("******************************************************************
");
printf("------------------------------------------------------------------
");
printf(": 1. 开户 :
");
printf("------------------------------------------------------------------
");
printf(": 2. 销户 :
");
printf(":-----------------------------------------------------------------
");
printf(": 3.查询用户余额 :
");
printf(":-----------------------------------------------------------------
");
printf(": 4.存款 :
");
printf("------------------------------------------------------------------
");
printf(": 5.取款 :
");
printf("------------------------------------------------------------------
");
printf(": 6.转账 :
");
printf("------------------------------------------------------------------
");
printf(": 7.退出系统 :
");
printf("------------------------------------------------------------------
");
printf("请选择功能:
");
}
int main()
{
int a;
do
{
Menu();
scanf("%d",&a);
if(a>8||a<0)
{
system("cls");
printf("输入错误! a
");
continue;
}
system("cls");
switch(a)
{
case 1:
Open_account();// 开户
break;
case 2:
Close_account();//销户
break;
case 3:
Show();//查询用户余额
break;
case 4:
Save_money();//存款
break;
case 5:
Withdraw_money();//取款
break;
case 6:
Transaccount();//转账
break;
case 7:
exit(0);//退出系统
break;
}
}while(1);
}
开户
//初始开户
void Open_account()
{
int x,j,i,k,sum;
printf("请输入你需要开户的人数:
");
scanf("%d",&x);
for(i=0;i<x;i++)
{
printf("请输入第%d个开户的身份证号码
",i+1);
scanf("%s",&Person[i].Id_number);
for(j=0,sum=0;j<x;j++)
{
for(k=0;k<10;k++)
{
if(j!=i&&Person[i].Id_number[k]==Person[j].Id_number[k])
sum+=0;
else
sum+=1;
}
if(Person[j+1].Id_number==NULL)
break;
while(sum==0)
{
system("cls");
printf("你输入的身份证号重复!请重新输入:
");
printf("请输入第%d个客户身份证号
",i+1);
scanf("%s",&Person[i].Id_number);
for(k=0;k<10;k++)
{
if(j!=i&&Person[i].Id_number[k]==Person[j].Id_number[k])
sum+=0;
else
sum+=1;
}
if(Person[j+1].Id_number==NULL)
break;
}
}
printf("请输入第%d个客户姓名
",i+1);
scanf("%s",&Person[i].name);
printf("请输入第%d个客户密码
",i+1);
scanf("%s",&Person[i].password);
printf("请再次输入第%d个客户密码
",i+1);
scanf("%s",&Person[i].Repassword);
printf("请输入第%d个客户的存入余额
",i+1);
scanf("%f",&Person[i].balance);
system("cls");
}
save(x);
printf("恭喜!开户完成,请登录!
");
}
销户
void Close_account()
{
int i,j,n;
int m=read();
char password[20],Id_number[20];
printf("请输入要销户的身份证号:
");
scanf("%s",Id_number);
getchar();
printf("请输入密码:");
scanf("%s",password);
getchar();
for(i=0;i<N;i++)
{
if(Person[i].Id_number[0]==' ')
continue;
if(strcmp(Id_number,Person[i].Id_number)==0 && strcmp(password,Person[i].password)==0)
{
for(j=i;j<i+1;j++)
Person[j]=P[0];
printf("客户信息已经销户成功!
");
save(m);
return;
}
}
if(i==N)
printf("没有这位客户的信息!
");
printf("%s %s %f
",Person[i].Id_number,Person[i].name,Person[i].balance);
save(m);
}
查询
void Show()
{
int i,j,n;
int m=read();
char password[20],Id_number[20];
printf("请输入你要查询的身份证号:
");
scanf("%s",Id_number);
getchar();
printf("请输入密码:");
scanf("%s",password);
getchar();
for(i=0;i<N;i++)
{
if(Person[i].Id_number[0]==' ')
continue;
if(strcmp(Id_number,Person[i].Id_number)==0 && strcmp(password,Person[i].password)==0)
{
printf("%s %s %f
",Person[i].Id_number,Person[i].name,Person[i].balance);
return;
}
else
printf("你输入的密码错误!
");
}
if(i==N)
printf("没有这位客户的信息!
");
}
存款
void Save_money()
{
int i,j,n;
int m=read();
float sav_mon;
char password[20],Id_number[20];
printf("请输入要存款的身份证号:
");
scanf("%s",Id_number);
getchar();
printf("请输入密码:");
scanf("%s",password);
getchar();
for(i=0;i<N;i++)
{
if(Person[i].Id_number[0]==' ')
continue;
if(strcmp(Id_number,Person[i].Id_number)==0 && strcmp(password,Person[i].password)==0)
{
printf("输入要存入的款数:
");
scanf("%f",&sav_mon);
Person[i].balance = Person[i].balance + sav_mon;
printf("客户已存款成功!
");
save(m);//储存修改后的数据
printf("%s %s %f
",Person[i].Id_number,Person[i].name,Person[i].balance);
return;
}
}
if(i==N)
printf("无此客户资料!
");
save(m);
}
取款
void Withdraw_money()
{
int i,j,n;
int m=read();
float withdraw_mon;
char password[20],Id_number[20];
printf("请输入要取款的身份证号:
");
scanf("%s",Id_number);
getchar();
printf("请输入密码:");
scanf("%s",password);
getchar();
for(i=0;i<N;i++)
{
if(Person[i].Id_number[0]==' ')
continue;
if(strcmp(Id_number,Person[i].Id_number)==0 && strcmp(password,Person[i].password)==0)
{
printf("输入要取出的款数:
");
scanf("%f",&withdraw_mon);
if(Person[i].balance >= withdraw_mon)
{
Person[i].balance = Person[i].balance - withdraw_mon;
printf("客户已取款成功!
");
save(m);//储存修改后的数据
}
else
printf("账户余额不足!");
printf("%s %s %f
",Person[i].Id_number,Person[i].name,Person[i].balance);
return;
}
}
if(i==N)
printf("没有这位客户的信息!
");
save(m);
}
转账
void Transaccount()
{
int i,j,n;
int m=read();
float trans_mon;
char password[20],Id_number[20],Id_number2[20];
printf("请输入要转账的身份证号:
");
scanf("%s",Id_number);
getchar();
printf("请输入密码:");
scanf("%s",password);
getchar();
for(i=0;i<N;i++)
{
if (Person[i].Id_number[0]==' ')
continue;
if(strcmp(Id_number,Person[i].Id_number)==0 && strcmp(password,Person[i].password)==0)
{
printf("登录成功,请输入要转入的身份证号:
");
scanf("%s",Id_number2);
getchar();
for(j=0;j<N;j++)
{
if(Person[j].Id_number[0]==' ')
continue;
if(strcmp(Id_number2,Person[j].Id_number)==0)
{
printf("输入要转账的金额:
");
scanf("%f",&trans_mon);
if(Person[i].balance >= trans_mon)
{
Person[i].balance = Person[i].balance - trans_mon;
Person[j].balance = Person[j].balance + trans_mon;
printf("转账成功!
");
save(m);
printf("%s %s %f
",Person[i].Id_number,Person[i].name,Person[i].balance);
printf("%s %s %f
",Person[j].Id_number,Person[j].name,Person[j].balance);
}
else
printf("账户余额不足!");
}
}
if(j==N)
printf("没有这位转入客户的信息!
");
}
}
if(i==N)
printf("没有这位客户的信息!
");
save(m);
}
运行截图
菜单
开户
销户
销户不成功
销户成功
查询
存款
取款
转账
作业小结
(1)psp表格
psp2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
---|---|---|---|
Planning | 计划 | 15 | 8 |
Development | 开发 | 250 | 300 |
Analysis | 需求分析(包括学习新技术) | 20 | 15 |
Design Spec | 生成设计文档 | 30 | 40 |
Design Review | 设计复审 | 5 | 10 |
Coding Standard | 代码规范 | 5 | 7 |
Design | 具体设计 | 10 | 12 |
Coding | 具体编码 | 50 | 70 |
Code Review | 代码复审 | 5 | 7 |
Test | 测试(自我测试,修改代码,提交修改) | 60 | 50 |
Reporting | 报告 | 20 | 25 |
Test Report | 测试报告 | 20 | 20 |
Size Measurement | 计算工作量 | 2 | 1 |
Postmortem & Process Improvement Plan | 事后总结,并提出过程改进计划 | 3 | 3 |
(2)心得和经验
通过这次作业发现了很多不足,代码也不够完善,后续通过查资料在对此进行相应的完善。