语言模拟ATM自动取款机系统
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了语言模拟ATM自动取款机系统相关的知识,希望对你有一定的参考价值。
C语言实验报告
题目名称:C语言模拟ATM自动取款机系统
C语言模拟实现ATM自动取款机功能:输入密码,余额查询,取款,存款,转账,修改密码,退出功能;
代码实现的功能:
- 账号及密码输入:用户输入密码,才能进入。
- 登陆成功界面:共有六个选项,查询余额、取款、存款、转账,修改密码,退出分别对应1,2,3,4,5,6选项,若序号输入不正确会予以提示。
- 选定1后,进入查询余额界面; 选定2后,进入取款界面; 选定3后,进入存款界面; 选定4后,修改密码,选定5,进入转账;选定6,退出界面;
- 如果过程中操作有误,提醒是否继续操作。
二:分析问题
一:问题描述:
(1)
在main()函数用switch语句现实菜单功能,根据用户选择,进入不同功能区;
(2)
模拟ATM自动取款机功能的实现,需要用自定义函数实现板块化。
所用的自定义函数如下:
登录界面:void enter();
登录成功后的界面:void jiemian();
实现密码输入:void land();
实现余额查
询:void inquiry();
实现取款功能:void withdraw();
实现存款功能:void deposit();
实现转账:void zhuangzhang();
实现修改密码:void correctscrect();
结束:void out();
输入有误,提示是否继续:int keep();
(3)
库函数:strcmp();system();
(4)
用户信息
结构体存储个人信息;
结构体数组存储的存储设计数据库知识,本实验模拟ATM机,简化处理,已经注册用户数据信息存储在结构体数组中;
三:解决问题
1. 用户信息
用结构体来描述用户的姓名、卡号、密码以及金额。
假设用户信息在结构体数组中;
2. 主函数函数
Switch语句实现菜单话;
(3)Void land();
需要解决的问题:1.密码输入2.检查密码是否输入正确3.密码输入次数不能超过3次。(if语句)
(4)void jiemian();
提示用户进行操作printf();
(5)void withdraw();
1.取款时,输入的金额不能为被100整除;
2.取款的金额不能大于余额;
3.修改余额;
(6)void deposit();
1.存款金额不能不被100整除
(7)void correctscrect();
1.修改密码,需要重复输入二遍来确定密码是否修改成功;
(8)void zhuangzhang();
1.转账金额不能不被100整除
2.输入对方账号
3.转账金额是否足够,不能不被100整除
(9)int keep();
1.当输入有误时,提醒是否继续操作;
(8)void out();
1.调用main(),下一个用户操作;
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include<string.h> 4 #include <unistd.h> 5 void enter();//进入界面 6 void jiemian();//登录成功界面 7 void land();//登录 8 void inquiry();//查询余额 9 void withdraw();//取款 10 void deposit();//存款 11 void correctscrect();//修改密码 12 void out();//退出 13 void zhuangzhang();//转账 14 int keep();//当输入有误是否继续 15 16 /* 17 **用户信息 18 */ 19 struct essage 20 { 21 char name[20]; 22 long int acountion; 23 long int keyword; 24 float money; 25 }; 26 struct essage a[5]= {{"zhangsan",3205,1234,2000},{"wanger",3027,2345,3000},{"lisi",3023,3456,2345}}; 27 28 int X; 29 int main() 30 { 31 int i; 32 33 land(); 34 jiemian(); 35 /** 36 菜单 37 **/ 38 while(-1) 39 { 40 41 printf("请输入编号:\n"); 42 scanf("%d",&i); 43 switch (i) 44 { 45 case 1 : 46 { 47 system("cls"); 48 inquiry(); 49 printf("按任意键继续!\n"); 50 system("pause"); 51 jiemian(); 52 break; 53 } 54 case 2: 55 { 56 system("cls"); 57 withdraw(); 58 printf("按任意键继续!\n"); 59 60 system("pause"); 61 jiemian(); 62 break; 63 } 64 case 3: 65 { 66 system("cls"); 67 deposit(); 68 printf("按任意键继续!\n"); 69 70 system("pause"); 71 jiemian(); 72 break; 73 } 74 75 case 4: 76 { 77 system("cls"); 78 correctscrect(); 79 printf("按任意键继续!\n"); 80 81 system("pause"); 82 jiemian(); 83 break; 84 } 85 86 case 5: 87 { 88 system("cls"); 89 zhuangzhang(); 90 system("pause"); 91 jiemian(); 92 break; 93 } 94 case 6: 95 { 96 printf("欢迎下次!\n"); 97 system("cls"); 98 main(); 99 100 } 101 default : 102 { 103 break; 104 105 } 106 107 } 108 } 109 return 0; 110 } 111 112 void enter() 113 { 114 printf("******************************\n"); 115 printf("********welcome to ATM!*******\n"); 116 printf("******************************\n"); 117 } 118 int keep() 119 { 120 char a; 121 printf("是否继续?\n"); 122 while(-1) 123 { 124 125 printf("继续请输入:y 退出按n\n"); 126 getchar(); 127 128 //a= getchar(); 129 //getchar(); 130 scanf("%c",&a); 131 if(a ==‘y‘) 132 { 133 return 1; 134 } 135 else if(a==‘n‘) 136 return 0; 137 else 138 { 139 printf("输入有误!\n"); 140 continue; 141 } 142 } 143 } 144 145 146 147 void land() 148 { 149 long int keyword; 150 int i; 151 int count=0; 152 while(-1) 153 { 154 printf("请输入密码:\n"); 155 count++; 156 scanf("%ld",&keyword); 157 for(i = 0; i<3; i++) 158 { 159 160 161 if(keyword==a[i].keyword) 162 { 163 X = i; 164 return; 165 } 166 } 167 if(count==3) 168 { 169 printf("你输入的密码次数超过3次!\n"); 170 exit(0); 171 172 } 173 else 174 { 175 176 printf("你输入密码有误!请重新输入!\n"); 177 178 } 179 } 180 } 181 182 183 184 185 186 187 188 void inquiry() 189 { 190 printf("你当前余额为:%f\n",a[X].money); 191 } 192 void jiemian() 193 { 194 printf("**************1.查询余额 2.取款*************\n"); 195 printf("**************3.存款 4.修改密码*********\n"); 196 printf("**************5.转账 6.退出**************\n"); 197 198 } 199 void deposit() 200 { 201 int n; 202 int j; 203 while(-1) 204 { 205 printf("请输入存储金额:\n"); 206 scanf("%d",&n); 207 208 if(n%100==0) 209 { 210 a[X].money+=n; 211 printf("存款成功!\n"); 212 printf("当前余额:%f",a[X].money); 213 return; 214 } 215 else 216 { 217 printf("输入金额有错!\n"); 218 j = keep(); 219 if(j == 1) 220 { 221 system("cls"); 222 continue; 223 } 224 else 225 return ; 226 227 } 228 } 229 } 230 void withdraw() 231 { 232 int n; 233 int m; 234 if(a[X].money<100) 235 { 236 printf("余额不足!\n"); 237 return; 238 239 } 240 241 while(-1) 242 { 243 244 printf("请输入取款金额!\n"); 245 scanf("%d",&n); 246 247 if(n>a[X].money) 248 { 249 printf("余额不足!\n"); 250 m = keep(); 251 if(m ==1) 252 continue; 253 else 254 return; 255 } 256 if(n%100!=0) 257 { 258 printf("输入有误!请重新输入取款金额!\n"); 259 260 // system("pause"); 261 m = keep(); 262 if(m==1) 263 continue; 264 else 265 return; 266 } 267 else 268 { 269 printf("成功!"); 270 a[X].money=a[X].money-n; 271 return ; 272 273 } 274 } 275 276 } 277 void correctscrect() 278 { 279 int b; 280 long int n; 281 long int m; 282 long int q; 283 while(-1) 284 { 285 printf("请输入旧密码:\n"); 286 scanf("%ld",&q); 287 if((q!=a[X].keyword)) 288 { 289 printf("输入有误!\n"); 290 b =keep(); 291 if(b ==1) 292 continue; 293 else 294 return; 295 } 296 else 297 break; 298 } 299 while(-1) 300 { 301 printf("请输入新密码:\n"); 302 scanf("%ld",&n); 303 printf("请在一次输入新密码:\n"); 304 scanf("%ld",&m); 305 if(n!=m) 306 { 307 printf("二次密码不一样!\n"); 308 b = keep(); 309 if(b == 1) 310 continue; 311 else 312 return ; 313 } 314 else 315 { 316 printf("修改密码成功!\n"); 317 a[X].keyword = n; 318 break; 319 } 320 } 321 } 322 323 324 void zhuangzhang() 325 { 326 long int n; 327 int m; 328 int i; 329 int j; 330 int leap=1; 331 332 333 printf("转账!\n"); 334 while(leap!=0) 335 { 336 printf("输入转账账号!\n"); 337 scanf("%ld",&n); 338 339 for(i = 0; i<3; i++) 340 { 341 if(a[i].acountion==n) 342 { 343 leap=0; 344 break; 345 } 346 347 } 348 if(leap!=0) 349 { 350 351 printf("你输入的账号不存在!\n"); 352 j = keep(); 353 if(j == 1) 354 { 355 system("cls"); 356 continue; 357 } 358 else 359 return ; 360 } 361 } 362 363 364 365 while(-1) 366 { 367 printf("输入转账金额;\n"); 368 scanf("%d",&m); 369 if(a[X].money<100) 370 { 371 printf("余额不足!\n"); 372 j= keep(); 373 if(j ==1) 374 continue; 375 else 376 return; 377 378 } 379 380 if(m>a[X].money) 381 { 382 printf("余额不足!\n"); 383 j= keep(); 384 if(j ==1) 385 continue; 386 else 387 return; 388 } 389 if(m%100!=0) 390 { 391 printf("输入有误!请重新输入取款金额!\n"); 392 j = keep(); 393 if(j==1) 394 continue; 395 else 396 return; 397 } 398 else 399 { 400 printf("转账成功!"); 401 a[X].money=a[X].money-m; 402 a[i].money = a[i].money+m; 403 404 return ; 405 406 } 407 }
以上是关于语言模拟ATM自动取款机系统的主要内容,如果未能解决你的问题,请参考以下文章