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 |
浙公网安备 33010602011771号