atm管理系统

一、作业信息
| 博客班级 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18 |
| ---- | ---- | ---- |
| 作业要求 | https://edu.cnblogs.com/campus/ahgc/AHPU-se-JSJ18/homework/11478 | |
| 作业要求| 提高编写代码能力|
|学号|3180701317|
二、题目要求
编写一个ATM管理系统,语言不限,要求应包括以下主要功能:

(1)开户,销户

(2)查询账户余额

(3)存款

(4)取款

(5)转账(一个账户转到另一个账户)等...

允许网上查询参考,但请注意不要直接抄袭,可以理解看懂别人的代码,再自己编写
三、代码与运行截图

结构体
struct atm
{
char ID[20];
char key[20];
int account;
}user[NUM];
登录界面

void jiemian()
{
int n;
do
{
printf("\n\n\n");
printf(" \t\t\t+++++++++++++++++++++++++++++\n");
printf(" \t\t\t+  A T M 系 统 个 人 界 面  +\n");
printf(" \t\t\t+     您 有 以 下 选 择     +\n");
printf(" \t\t\t+++++++++++++++++++++++++++++\n");
printf(" \t\t\t    ++++++++++++++++++++\n");
printf(" \t\t\t    #     1.  查询     #\n");
printf(" \t\t\t    #     2.  取款     #\n");
    printf(" \t\t\t    #     3.  转账     #\n");
printf(" \t\t\t    #     4.  存款     #\n");
printf(" \t\t\t    #     5.修改密码   #\n");
printf(" \t\t\t    #     6.返回目录   #\n");
printf(" \t\t\t    ++++++++++++++++++++\n\n\t\t\t\t  ");
scanf("%d",&n);
    switch(n)
{
case 1:system("cls");
chaxun();
break;
    case 2:system("cls");
qukuan();
        break;
case 3:system("cls");
        zhuanzhang();
break;
case 4:system("cls");
        cunkuan();
break;
case 5:system("cls");
        xiugai();
break;
    case 6:system("cls");
        enter();
break;
default:printf("\t\t\t\t无此操作项\n\n");
system("pause");
system("cls");
}
}while(n>4&&n<0);
}
开户
void kaihu()
{
char ch;
if(user[1000].account!=0)
{
j=user[1000].account;
}
printf("\n\n\t\t\t\t请设置您的卡号:\n\t\t\t\t  ");
scanf("%s",user[j].ID);
    printf("\n\t\t\t\t请设置您的密码:\n\t\t\t\t  ");
        scanf("%s",user[j].key);
          user[j].account=0;
    printf("卡号:%s \n余额:%4d\n",user[j].ID,user[j].account);
user[1000].account=++j;
save();
printf("\n\n\t\t\t\t恭喜您开户成功!");
printf("\n\n\n");
system("pause");
printf("\t\t\t\t按回车键返回上一级\n");
    printf("\n\n\n");
system("cls");
ch=getchar();//用来接收最后的回车符
if(ch=='\n')
{
       enter();
}
}
查询
void chaxun()
{
char ch;
printf("\t\t\t******欢迎使用查询服务******\n");
printf("\t\t\t     您的余额为%d元\n\n",user[k].account);
system("pause");
    system("cls");
printf("\n\n\n");
ch=getchar();//用来接收最后的回车符
if(ch=='\n')
{
enter2();
}
}
取款
void qukuan()
{
int i,x;
char a,ch;
printf(" \t\t\t+++++++++++++++++++++++++++++++\n");
printf(" \t\t\t+  本银行最低取款金额为100元  +\n");
    printf(" \t\t\t+       您卡号的余额为        +\n");
printf(" \t\t\t+       %d元                  +\n",user[k].account);
printf(" \t\t\t+    请选择你要提取的金额:    +\n");
printf(" \t\t\t+    1: 100元     2:200元     +\n");
printf(" \t\t\t+    3.500元      4:1000元    +\n");
printf(" \t\t\t+    5:2000元     6:5000元    +\n");
printf(" \t\t\t+        7: 自定义金额        +\n");
printf(" \t\t\t+++++++++++++++++++++++++++++++\n\n\t\t\t\t      ");
scanf("%d",&i);
if(i==1)   
{
    x=100;
}
else
if(i==2)
{
    x=200;
}
else
if(i==3)
{
    x=500;
}
else
if(i==4)
{
    x=1000;
}
else
if(i==5)
{
    x=2000;
}
else
if(i==6)
{
    x=5000;
}
else
if(i==7)
{
printf("\t\t\t\t请输入自定义的金额:\n\t\t\t\t  ");
scanf("%d",&x);
}
if(x<=user[k].account)
{
user[k].account=user[k].account-x;
printf(" \t\t\t\t您取了%d元钱\n",x);
            printf(" \t\t\t\t您的余额为%d元\n",user[k].account);
}
       else if(x>user[k].account)
{
printf("\t\t\t\t您卡里的余额不足\n");
printf("\t\t\t\t请重新输入提取金额:\n");
}
printf(" \t\t\t\t请选择是否继续取款\n");
    printf(" \t\t\t\t是:Y          否:N\n\n\t\t\t\t  ");
scanf("%s",&a);
if(a=='Y')
{
save();
qukuan();
}
else
if(a=='N')
{
save();
system("pause");//冻结屏幕
system("cls");
printf("\n\n\n");
}
else
{
save();
system("pause");//冻结屏幕
system("cls");
printf("\n\n\n");
}
ch=getchar();//用来接收最后的回车符
if(ch=='\n')
{
system("cls");
enter2();
        }
}
存款
void cunkuan()
{
int a;
printf("\t\t\t\t请输入存入账户的金额:\n\n\t\t\t\t  ");
scanf("%d",&a);
user[k].account=user[k].account+a;
save();
printf(" \t\t\t\t您的余额为%d元\n",user[k].account);
system("pause");//冻结屏幕
system("cls");
printf("\n\n\n");
enter2();
}

转账
void zhuanzhang()
{
int a,b,c,x;
char kahao[20];
printf("\t\t\t       请输入转账卡号:\n\t\t\t\t  ");
scanf("%s",kahao);
for(a=0;a<NUM-1;a++)
{
if(!strcmp(kahao,user[a].ID))
{
printf("\t\t\t\t  卡号正确\n\n");
break;
}
}
if(strcmp(kahao,user[a].ID))
{
printf("\t\t\t\t  卡号不存在\n\n");
system("pause");
zhuanzhang();
}
printf("\t\t\t\t请输入转账金额\n\t\t\t\t    ");
scanf("%d",&x);
if(x>user[k].account)
{
printf("\t\t\t\t您卡里的余额不足\n");
printf("\t\t\t\t请重新输入提取金额:\n");
}
else
{
user[k].account=user[k].account-x;
user[a].account=user[a].account+x;
save();
}
system("pause");//冻结屏幕
system("cls");
printf("\n\n\n");
enter2();
}

运行结果




四、小结

psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 150 13 0
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 12 10
Development 开发 102 130
Analysis 需求分析(包括学习新技术) 16 8
Design Spec 生成设计文档 6 3
Design Review 设计复审 5 5
Coding Standard 代码规范 60 20
Design 具体设计 13 6
Coding 具体编码 39 42
Code Review 代码复审 6 8
Test 测试(自我测试,修改代码,提交修改) 15 19
Reporting 报告 5 8
Test Report 测试报告 6 3
Size Measurement 计算工作量 2 1
Postmortem & Process Improvement Plan Improvement Plan 事后总结,并提出过程改进计划 4 6
posted @ 2020-11-18 23:08  李家辉  阅读(123)  评论(0编辑  收藏  举报