ATM管理系统

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

一.题目要求

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

(1)开户,销户

(2)查询账户余额

(3)存款

(4)取款

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

二.代码提交

1.结构体的创建

 1  struct User 
 2  {
 3      char name[50];  //账号
 4      double  money;  //金额
 5      int flag;        //账号能否正常使用
 6     char key[50];   //密码
 7  } user[100];

2.开户

 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} 

3.登录

 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);   //让系统在此处停留500毫秒之后在运行。
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 }

4.存款

 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}

5.取款

 1 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 }

6.查询余额

1 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 }

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 }

8.主菜单

1void Menu()
2{
3	int d;
4	printf("----欢迎使用ATM管理系统-----\n");
5	printf("1.注册\n");
6       printf("2.登录\n");
7       printf("3.取款\n");
8       printf("4.存款\n");
9       printf("5.查询余额\n");
10      printf("6.转账\n");
11      printf("7.销户\n");
12      printf("8.退出系统\n\n");
13	printf("请输入你的选择:");
14	scanf("%d",&d);
15	
16}

三、运行截图

主菜单

ATM管理系统

开户

ATM管理系统

登录

ATM管理系统

存款

ATM管理系统

取款

ATM管理系统

查询余额

ATM管理系统

转账

ATM管理系统

销户

ATM管理系统

四、实验小结

psp2.1 任务内容 计划完成需要的时间(min) 实际完成需要的时间(min)
Planning 计划 10 8
Estimate 估计这个任务需要多少时间,并规划大致工作步骤 10 12
Development 开发 120 160
Analysis 需求分析(包括学习新技术) 12 6
Design Spec 生成设计文档 10 10
Design Review 设计复审 5 5
Coding Standard 代码规范 3 10
Design 具体设计 10 20
Coding 具体编码 36 30
Code Review 代码复审 10 10
Test 测试(自我测试,修改代码,提交修改) 20 20
Reporting 报告 10 3
Test Report 测试报告 5 3
Size Measurement 计算工作量 5 3
Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 5 4
上一篇:ATM机境内外取款


下一篇:ATM管理系统