ATM管理系统

这个作业属于哪个课程 计算机18级
这个作业要求在哪里 作业要求
这个作业的目标 实现ATM管理系统
学号 3180701230

题目要求

编写一个ATM管理系统,语言不限,要求应包括以下主要功能:

(1)开户,销户

(2)查询账户余额

(3)存款

(4)取款

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

代码提交

1 void KaiHu() // 开户
 2 {
 3     printf("开户中.....\n");
 4     Sleep(1000);
 5     int id = UserNumber + 1;
 6     while (1)
 7     {
 8 
 9         for (int i = 0; i < 11; i++)
10         {
11             user[id].name[i] = rand()%9+1+'0';
12         }
13         user[id].name[11] = '\0';
14         int flag = 0;
15         for (int i = 1; i <= UserNumber; i++)
16         {
17             if (strcmp(user[id].name, user[i].name) == 0)
18             {
19                 flag = i;
20                 break;
21             }
22         }
23         if (!flag)break;
24     }
25     printf("开户成功,账户为:%s\n", user[id].name);
26     while (1)
27     {
28         user[id].d = 2;
29         user[id].flag = 1;
30         user[id].money = 0.01;
31         strcpy(user[id].key,"111111");
32         char ss[50], cc[50];
33         while (1)
34         {
35             printf("请输入账户密码:");
36             strcpy(ss, get_password());
37             if (strlen(ss) != 6)
38             {
39                 printf("密码必须6位,请重新输入密码\n");
40                 memset(ss, '\0', sizeof(char) * 50);
41             }
42             else
43             {
44                 printf("请再次输入账户密码:");
45                 strcpy(cc, get_password());
46                 if (strcmp(ss, cc) != 0)
47                 {
48                     printf("两次密码不一致\n请重新输入密码\n");
49                     memset(ss, 0, sizeof(ss));
50                     memset(cc, 0, sizeof(cc));
51                 }
52                 else
53                 {
54                     strcmp(user[id].key, ss);
55                     UserNumber++;
56                     ChuCun();
57                     printf("密码设置成功\n,开户成功\n按任意键返回\n");
58                     getchar();
59                     getchar();
60                     return;
61                 }
62       }
63        }
64    }
65} 

 1 int login()       //登陆
 2 {
 3 
 4     char a[50];
 5     char b[50];
 6     int count = 0, i, flag = 0;
 7     while (1)
 8     {
 9         printf("\t请输入您的用户名:");
10         scanf("%s", a);
11         printf("\t请输入您的密码  :");
12         strcpy(b, get_password());
13 
14         int fff = 0;
15         for (int i = 1; i <= UserNumber; i++)
16         {
17             if (strcmp(a, user[i].name) == 0 && strcmp(b, user[i].key) == 0)
18             {
19                 fff = 1;
20                 userID = i;
21             }
22         }
23 
24 
25         if (!fff)
26             printf("\t用户名或者密码输入错误!请重新输入!\n");
37         else
38         {
39             printf("\t\t\t正在登陆  请稍后\n");
40             printf("\t\t\t");
41             for (i = 0; i < 8; i++)
42             {
43                 printf("*");
44                 Sleep(100);   
45             }
46             printf("\n");
47             break;
48         }
49         count++;
50         if (count == 3)
51         {
52             printf("\t\t您输入错误已超过三次,系统已退出!\n");
53             system("color 4a");
54             flag = 1;
55             break;
56         }
57     }
58     return flag;
59 }
1 void savemoney()//存款
 2 {
 3     int a, i;
 4     char c;
 5     while (1)
 6     {
 7         printf("\t请输入您的存款金额:");
 8         scanf("%d", &a);
 9         if (a < 0 || a % 100 != 0)
10             printf("\t输入有误,请重新输入!\n");
11         else
12             break;
13     }
14     getchar();
15     user[userID].money += a;
16     printf("\t存款成功\n");
17     getchar();
18}
void drawmoney()//取款
 2 {
 3     int a, i;
 4     char c;
 5     while (1)
 6     {
 7         printf("\t请输入您的取款金额:");
 8         scanf("%d", &a);
 9         if (a > user[userID].money)
10             printf("\t账户余额不足,请重新输入!\n");
11         else if (a < 0 || a % 100 != 0)
12             printf("\t输入有误,请重新输入!\n");
13         else
14             break;
15     }
16     getchar();
17     user[userID].money -= a;
18     printf("\t取款成功,请收好您的钞票!\n");
19 }
 void showmoney()//查询余额
2 {
3     printf("\t用户名  :%s\n", user[userID].name);
4     printf("\t账户余额:%.2lf\n", user[userID].money);
5     printf("\t请按Enter键返回\n");
6     getchar();
7 }
 1 void transfer() // 转账
  2 {
  3 
  4     char a[50];
  5     while (1)
  6     {
  7 
  8         printf("请输入转账人账户:");
  9         scanf("%s", a);
 10         int flag = 0;
 11         for (int i = 1; i <= UserNumber; i++)
 12         {
 13 
 14             if (strcmp(a, user[i].name) == 0)
 15             {
 16                 flag = i;
 17                 break;
 18             }
 19         }
 20 
 21         if (flag == 0)
 22         {
 23             printf("收款人未在此银行或不存在,转账失败\n");
 24             while (1)
 25             {
 26 
 27                 printf("1.重新输入账号\n2.退出\n请输入编号:");
 28                 int b=0;
 29                 scanf("%d", &b);
 30                 if (b == 2)
 31                     return;
 32                 else if (b == 1)
 33                     break;
 34                 else
 35                     printf("编号错误\n");
 36             }
 37         }
 38         else
 69         {
 70             printf("请输入转账金额:");
 71             double s=0;
 72             //scanf("%lf",&s);
 73             int x = 0;
 74             while (1)
 75             {
 76                 if (x){
 77                     printf("余额不足,是否重新输入转账金额y/n(n将返回菜单)");
 78                     char ff[5];
 79                     scanf("%s",ff);
 80                     if(ff[0]=='n' || ff[0]=='N')
 81                         return ;
 82                     else printf("重新输入转账金额\n");
 83                 }
 84 
 85                 x = 0;
 86                 scanf("%lf", &s);
 87                 if (user[userID].money - 2.50 < s)
 88                     x = 1;
 89                 if (!x)
 90                 {
 91                     printf("转账金额为:%.2f\n是否确认转账y/n (n将返回菜单)", s);
 92                     char f[5];
 93                     scanf("%s", f);
 94                     if (f[0] == 'n' || f[0] == 'N')
 95                         return;
 96                     user[flag].money += s;
 97                     user[userID].money -= s;
 98                     ChuCun();
 99                     printf("转账成功\n");
100                     Sleep(800);
101                     return;
102                 }
103             }
104         }
105     }
106 }
void menu(){
    int end = 0;   //是否结束,0记为不结束
    do {
        printf("请选择您需要进行的操作:\n1.开户\t2.销户\n3.查询当前余额\n4.存款\t5.取款\n6.转账\t0.退出\n");
        int choose = 0;
        scanf("%d",&choose);
        switch (choose) {
            case 0:
                printf("Bye~\n");
                exit(0);
            case 1:
                create();
                break;
            case 2:
                cancel();
                break;
            case 3:
                enquire();
                break;
            case 4:
                deposit();
                break;
            case 5:
                withdraw();
                break;
            case 6:
                transfer();
                break;
                
            default:
                break;
        }
        printf("请问您是否需要继续进行其他操作?输入1继续进行其他操作,输入0则退出\n");
        scanf("%d",&end);
    } while (end);
}

运行截图






实验小结

通过本次作业,我复习了指针、链表、结构体的相关知识,写一个简单的ATM,但简单的银行ATM管理系统远远不能够满足需求,在数据信息的保护方面仍需设置密码才可以
在之后的学习中掌握更多

psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 200 500
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 10 5
Development 开发 355 300
Analysis 需求分析(包括学习新技术) 20 25
Design Spec 生成设计文档 30 50
Design Review 设计复审 10
Coding Standard 代码规范 20 15
Design 具体设计 30 25
Coding 具体编码 200 250
Code Review 代码复审 15 10
Test 测试(自我测试,修改代码,提交修改) 10 15
Reporting 报告 20 15
Test Report 测试报告 15 10
Size Measurement 计算工作量 10 10
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 10 15
posted @ 2020-11-19 00:44  柠檬心酸  阅读(128)  评论(0)    收藏  举报