您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 【C语言】课程设计-ATM机模拟操作(附源码)
C语言-ATM机模拟操作程序实现功能点:a.查询:查询帐户的存款余额。按任意键返回主菜单;b.取款:输入100、500、1000、2000、5000、其它金额为取款金额,取款金额不超过帐户余额,操作后帐户余额应相应减少,之后可返回主菜单;c.存款:输入100、500、1000、2000、5000、其它金额为存款金额,存款金额不超过20000元,操作后帐户余额应相应增加。之后可返回主菜单;d.转帐:输入一个帐户号,程序判断与文件信息是否相符,储户确认无误后,再输入100、500、1000、2000、5000、其它金额为转帐金额,转帐金额不得超过帐户余额,操作后帐户余额应相应减少。之后可返回主菜单;e.修改密码:连续输入两次新密码(两次输入结果完全相同)后,新密码取代旧密码,并存放到帐户信息文件中。之后可返回主菜单;f.退出:退出系统;g.帮助:增加趣味性;h.存款时,可正可负,正表示存款,负表示取款;i.帐户信息存放在accounts.txt文件,储户存取款记录保存在records.txt中;(在目录下创建这两个文件)j.采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用;k.储户一天内输错密码的次数不能超过3次,否则无法进入系统;l.有效避免输入存款金额、取款金额为负数等异常情况的出现。较为突出的功能是注册、登录时账号密码的核对验证;存款转出转入金额的核对。是否超过余额,是否不符合格式,是否为冲突操作。(2)程序运行截图及说明(每图限50到100字);进入程序,menu1可选择登录、注册功能。选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否成功登录。若登录失败,则重新选择。选择注册,输入账号密码,写入文件中。进入menu2,有五大功能选择,输入对应的序列号进入。余额查询功能输出账号所对应的余额。取款功能,需要安装要求取出格式化的金额。存款功能,选择金额,若超过存款,自动报错。存储成功后,在屏幕上显示余额并可在txt中看到对应数目的增加。修改密码功能,输入当前密码,输入新密码,并进行确认。即修改成功。转账功能,输入对方卡号,核程序核对卡号是否存在,选择金额转账,对应存款的减少会反映在屏幕的余额上。退出功能,任意键退出程序。帮助功能,介绍了本程序的相关信息。(3)采用的主要技术(限150到200字);答:主要采用模块化管理代码。使用结构体对文本信息进行操作、运用文件操作相关函数如fwrite()、fread()、fgets()、fputs()、fgetc()、fputc()、fopen()、fclose()......并使用指针操作数值。附:程序代码#includestdio.h#includestdlib.h#includeconio.h#includetime.h#includestring.h#defineN3voidenterzhanghao();//ATM账号输入函数voidinputmima();//密码输入函数voidmenu();//操作界面voidWithdraw();//取款函数voiddaly();//延时函数voidyuer();//余额查询函数voidDesposit();//存款函数intquit();//退出界面函数voidchange();//密码修改voidread();//文件读取函数voidwrite();//文件写入函数voidwrite2(floath);//流水账函数voidtran_account();//转账函数voidenter();//登录函数voidflesh();//注册函数voidhelp();//帮助typedefstruct{intnum;intpassword;doubleaccounte;}atm;atmATM[N]={{10001,111111,10000},{10002,222222,20000},{10003,333333,30000}};typedefstruct{intyear;intmonth;intday;}riqi;intk;intmain(){enterzhanghao();}//ATM账号输入函数voidenterzhanghao(){read();printf(\t\t\t\t\t**************************************\n);printf(\t\t\t\t\t-欢迎使用ATM机模拟操作的程序-\n);printf(\t\t\t\t\t-1、登录-\n);printf(\t\t\t\t\t-2、注册-\n);printf(\t\t\t\t\t**************************************\n);printf(请输入对应序号:);intk;scanf(%d,&k);switch(k){case1:enter();break;case2:flesh();break;}}voidenter(){system(cls);intuser;printf(请输入账号:);scanf(%d,&user);if(user==0){printf(\t\t\t\t\t*账号错误*\t\t\t\t\t\n);enterzhanghao();}elseif(user!=(ATM[k].num)){for(k=1;kN;k++){if(user==(ATM[k].num))inputmima();}system(cls);printf(\t\t\t\t\t*账户不存在,请从新输入*\t\t\t\t\t\n);enterzhanghao();}elseinputmima();}voidflesh(){system(cls);printf(\t\t\t\t\t请输入账号:);scanf(%f,&ATM[k].num);printf(\t\t\t\t\t请输入密码:);scanf(%f,&ATM[k].password);write();}//密码输入函数voidinputmima(){intcode;inttemp=3;read();system(cls);printf(\t\t\t\t\t*请输入密码*\t\t\t\t\n);scanf(%d,&code);while(code!=ATM[k].password){temp--;system(cls);printf(\t\t\t\t\t*密码错误,请重新输入*\t\t\t\t\n);printf(\t\t\t\t\t*您还有:);printf(%d,temp);printf(次机会*\n);scanf(%d,&code);if(temp==1){system(cls);printf(\t\t\t\t\t*您已经3次输入密码错误*\t\t\t\t\n);printf(\t\t\t\t\t*系统将退出操作*\t\t\t\t\n);daly();enterzhanghao();}}menu();}//操作界面voidmenu(){system(cls);inth=1,x;while(h){printf(\t\t\t\t\t----------------------\n);printf(\n);printf(\t\t\t\t\t1、\t查询余额\n);printf(\t\t\t\t\t2、\t取款\n);printf(\t\t\t\t\t3、\t存款\n);printf(\t\t\t\t\t4、\t修改密码\n);printf(\t\t\t\t\t5、\t转账\n);printf(\t\t\t\t\t6、\t退出登录\n);printf(\t\t\t\t\t7、\t帮助\n);printf(\n);printf(\t\t\t\t\t----------------------\n\n);scanf(%d,&x);switch(x){case1:yuer();break;case2:Withdraw();break;case3:Desposit();break;case4:change();break;case5:tran_account();break;case6:quit();h=quit();break;case7:help();break;}}}//取款函数voidWithdraw(){system(cls);floati;inty;printf(\t\t\t\t\t请输入你要取款的金额:\n);printf(\t\t\t\t\t----------------------\n);printf(\n);printf(\t\t\t\t\t1、\t100\n);printf(\t\t\t\t\t2、\t200\n);printf(\t\t\t\t\t3、\t500\n);printf(\t\t\t\t\t4、\t1000\n);printf(\t\t\t\t\t5、\t2000\n);printf(\t\t\t\t\t6、\t其他金额\n);printf(\n);printf(\t\t\t\t\t----------------------\n);printf(\t\t\t\t\t\t\t请输入对应序列号:\n);scanf(%d,&y);system(cls);switch(y){case1:i=100;break;case2:i=200;break;case3:i=500;break;case4:i=1000;break;case5:i=2000;break;case6:scanf(%f,&i);break;default:printf(\t\t\t\t\t請重新輸入);Withdraw();break;}if(i=ATM[k].accounte&&i!=0){ATM[k].accounte=ATM[k].accounte-i;printf(\t\t\t\t\t取款成功!你的余额为:);printf(%f,ATM[k].accounte);i=i*(-1);write2(i);}elseprintf(\t\t\t\t\t余额不足!);write();}//延时函数voiddaly(){longinth;intk;for(h=600000;h0;h--){for(k=300;k0;k--);}}//余额查询函数voidyuer(){system(cls);printf(\t\t\t\t\t账号%4d,余额:%.2lf\n\n\n\n\n,ATM[k].num,ATM[k].accounte);}//存款函数voidDesposit(){system(cls);inti;printf(\t\t\t\t\t请将钞票整齐放入!!\n\n);printf(\t\t\t\t\t请输入你要存的金额:);scanf(%d,&i);if(i%100==0)printf(\t\t\t\t\t存款成功!);else{printf(\t\t\t\t\t数额必须是100的整数倍!请重新放入!!);daly();Desposit();}ATM[k].accounte=i+ATM[k].accounte;printf(%f,ATM[k].accounte);write();write2(i);}//退出函数intquit(){system(cls);inti;printf(\t\t\t\t\t谢谢你的使用!!!\n\n);i=0;returni;}//密码修改voidchange(){daly();system(cls);intpassword1,password2,password3;printf(\t\t\t\t\t请输入旧密码:);scanf(%d,&password1);printf(\n);if(password1==ATM[k].password){loop:printf(\t\t\t\t\t请输入新的密码:);scanf(%d,&password
本文标题:【C语言】课程设计-ATM机模拟操作(附源码)
链接地址:https://www.777doc.com/doc-5491840 .html