1、C语言课程设计报告ATM机模拟操作附源码C语言-ATM机模拟操作程序实现功能点:a.查询:查询XX的存款余额。按任意键返回主菜单;b.取款:输入100、500、1000、2000、5000、其它金额为取款金额,取款金额不超过XX余额,操作后XX余额应相应减少,之后可返回主菜单;c.存款:输入100、500、1000、2000、5000、其它金额为存款金额,存款金额不超过20000元,操作后XX余额应相应增加。之后可返回主菜单;d.转帐:输入一个XX号,程序判断与文件信息是否相符,储户确认无误后,再输入100、500、1000、2000、5000、其它金额为转帐金额,转帐金额不得超过XX余额,操
2、作后XX余额应相应减少。之后可返回主菜单;e.修改密码:连续输入两次新密码(两次输入结果完全一样)后,新密码取代旧密码,并存放到XX信息文件中。之后可返回主菜单;f.退出:退出系统;g.帮助:增加趣味性;h.存款时,可正可负,正表示存款,负表示取款;i.XX信息存放在accounts.txt文件,储户存取款记录保存在records.txt中;(在目录下创立这两个文件)j.采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用;k.储户一天内输错密码的次数不能超过3次,否那么无法进入系统;l.有效防止输入存款金额、取款金额为负数等异常情况的出现。较为突出的功
3、能是注册、登录时账号密码的核对验证;存款转出转入金额的核对。是否超过余额,是否不符合格式,是否为冲突操作。2程序运行截图及说明每图限50到100字;进入程序,menu1可选择登录、注册功能。选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否成功登录。假设登录失败,那么重新选择。选择注册,输入账号密码,写入文件中。进入menu2,有五大功能选择,输入对应的序列号进入。余额查询功能输出账号所对应的余额。取款功能,需要安装要求取出格式化的金额。存款功能,选择金额,假设超过存款,自动报错。存储成功后,在屏幕上显示余额并可在txt中看到对应数目的增加。修改密码功能,输入当前密码,输入新密码,并进
4、展确认。即修改成功。转账功能,输入对方卡号,核程序核对卡号是否存在,选择金额转账,对应存款的减少会反映在屏幕的余额上。退出功能,任意键退出程序。帮助功能,介绍了本程序的相关信息。3采用的主要技术限150到200字;答:主要采用模块化管理代码。使用构造体对文本信息进展操作、运用文件操作相关函数如fwrite()、fread()、fgets()、fputs()、fgetc()、fputc()、fopen()、fclose().并使用指针操作数值。附:程序代码#include#include#include#include#include#defineN 3void enterzhanghao();
5、 /ATM账号输入函数void inputmima(); /密码输入函数void menu(); /操作界面void Withdraw(); /取款函数void daly(); /延时函数void yuer(); /余额查询函数void Desposit(); /存款函数int quit(); /退出界面函数void change(); /密码修改void read(); /文件读取函数void write(); /文件写入函数void write2(float h); /流水账函数void tran_account();/转账函数void enter();/登录函数void flesh();
6、/注册函数void help();/帮助typedefstructint num;int password;double accounte;atm;atm ATMN = 10001, 111111, 10000 , 10002, 222222, 20000 , 10003, 333333, 30000 ;typedefstructint year;int month;int day;riqi;int k;int main() enterzhanghao();/ATM账号输入函数void enterzhanghao() read(); printf(ttttt*n); printf(ttttt-
7、 欢送使用ATM机模拟操作的程序 1、登录 2、注册 -n); printf(ttttt*n); printf(请输入对应序号:); int k; scanf(%d, &k);switch (k)case 1:enter(); break;case 2:flesh(); break; void enter() system(cls);int user; printf(请输入账号:); scanf(%d, &user);if (user = 0) printf(ttttt* 账号错误 *tttttn); enterzhanghao(); elseif (user != (ATMk.num) fo
8、r (k = 1; k N; k+) if (user = (ATMk.num) inputmima(); system(cls); printf(ttttt* 账户不存在,请从新输入 *tttttn); enterzhanghao(); elseinputmima(); void flesh() system(cls); printf(ttttt请输入账号:); scanf(%f, &ATMk.num); printf(ttttt请输入密码:); scanf(%f, &ATMk.password); write(); /密码输入函数void inputmima()int code;int t
9、emp = 3; read(); system(cls); printf(ttttt* 请输入密码 *ttttn); scanf(%d, &code);while (code != ATMk.password) temp-; system(cls); printf(ttttt* 密码错误,请重新输入 *ttttn); printf(ttttt* 您还有: ); printf(%d, temp); printf( 次时机 *n); scanf(%d, &code);if (temp = 1) system(cls); printf(ttttt* 您已经 3 次输入密码错误 *ttttn); pr
10、intf(ttttt* 系统将退出操作 *ttttn); daly(); enterzhanghao(); menu();/操作界面void menu() system(cls);int h = 1, x;while (h) printf(ttttt-n); printf(n); printf(ttttt1、t查询余额n ); printf(ttttt2、t取款n ); printf(ttttt3、t存款n ); printf(ttttt4、t修改密码 n ); printf(ttttt5、t转账 n ); printf(ttttt6、t退出登录n ); printf(ttttt7、t帮助 n
11、 ); printf(n); printf(ttttt-nn ); scanf(%d, &x);switch (x) case 1:yuer(); break;case 2:Withdraw(); break;case 3:Desposit(); break;case 4:change(); break;case 5:tran_account(); break;case 6:quit(); h = quit(); break;case 7:help(); break; /取款函数void Withdraw() system(cls);float i;int y; printf(ttttt请输入
12、你要取款的金额:n); printf(ttttt- n); printf(n); printf(ttttt1、t100n); printf(ttttt2、t200n ); printf(ttttt3、t500n ); printf(ttttt4、t1000n ); printf(ttttt5、t2000n ); printf(ttttt6、t其他金额n ); printf(n); printf(ttttt- n); printf(ttttttt请输入对应序列号:n ); scanf(%d, &y); system(cls);switch (y) case 1:i = 100; break;ca
13、se 2:i = 200; break;case 3:i = 500; break;case 4:i = 1000; break;case 5:i = 2000; break;case 6:scanf(%f, &i); break;default: printf(ttttt請重新輸入); Withdraw();break; if (i 0; h-) for (k = 300; k0; k-); /余额查询函数void yuer() system(cls); printf(ttttt账号%4d, 余额:%.2lfnnnnn, ATMk.num, ATMk.accounte);/存款函数void
14、Desposit() system(cls);int i; printf(ttttt请将钞票整齐放入!nn); printf(ttttt请输入你要存的金额:); scanf(%d, &i);if (i % 100 = 0) printf(ttttt存款成功!);else printf(ttttt数额必须是100的整数倍!请重新放入!); daly(); Desposit(); ATMk.accounte = i + ATMk.accounte; printf(%f, ATMk.accounte); write(); write2(i);/退出函数int quit() system(cls);i
15、nt i; printf(ttttt谢谢你的使用!nn); i = 0;return i;/密码修改void change() daly(); system(cls);int password1, password2, password3; printf(ttttt请输入旧密码:); scanf(%d, &password1); printf(n);if (password1 = ATMk.password) loop:printf(ttttt请输入新的密码:); scanf(%d, &password2); printf(n); printf(ttttt请再次输入新的密码:); scanf(
16、%d, &password3);if (password2 = password3) ATMk.password = password2; printf(tttttn密码修改成功!n); else printf(tttttn密码不一致!n); printf(ttttt请重新输入!n);goto loop; else printf(ttttt输入错误n); change(); write();/文件读取函数void read()int i;FILE *fp; fp = fopen(accounts.txt, r);if (fp = NULL) printf(ttttt翻开文件失败n);retur
17、n; for (i = 0; iN; i+) fscanf(fp, %d, &(ATMi.num); fscanf(fp, %d, &(ATMi.password); fscanf(fp, %lfn, &(ATMi.accounte); fclose(fp);/accounts文件写入函数void write()int i;FILE *fp; fp = fopen(accounts.txt, w);if (fp = NULL) printf(ttttt翻开文件失败n);return; for (i = 0; itm_year + 1900); fprintf(fp, %-3d, lt-tm_m
18、on); fprintf(fp, %-3d, lt-tm_mday); fprintf(fp, %-5lfn, h); fclose(fp);/转账函数void tran_account()int other_num10;int i, c, q, tran; /c用来判断转账是否继续,q用来判断用户行为,tran用来存储转账金额system(CLS); printf(ntttttttt0.返回菜单); printf(nnnnnnttt请输要对方的账号: ); scanf(%d, other_num10); /输入对方账号if (other_num10 = ATMk.num) /判断是否为自身账
19、号 system(CLS); printf(nnnnnnnn tt对不起,不能给自己转账,请重新输入账号!n); printf(nnn按任意键返回!); _getch(); system(CLS); tran_account(); /递归调用 elsewhile (1) for (i = 0; i = 100 & tran % 100 = 0) /判断是否为整百/数并且大于100的数 if (tran = ATMk.accounte)/取款数是否不超过余额 if (tran = 3000) /判断是否超过3000 system(CLS); ATMk.accounte -= tran; ATMk
20、.accounte += tran; menu(); /调用save_info,存储信息printf(nnnnnnttt 交易成功!n); printf(nnnnntt0.返回菜单ttt9.继续转账); c = _getch();if (c = 9) /输入9就行转账 system(CLS); elseif (c = 0) /c为0返回菜单 system(CLS); menu(); else printf(输入错误,请重新输入!n); system(CLS); else system(CLS); printf(nnnnnntt对不起,一次最多能转账3000元,请重新输入!); printf(nnnnn按任意键返回!n); _getch(); system(CLS); else system(CLS); printf(nnnnnnttt您的余额缺乏,请重新输入!); printf(nnnnn按任意键返回!n); _getch(); system(CLS); else system(CLS); printf(nnnnnnttt请输入正确的金额!请重新输入!); printf(nnnnn按任意键返回!n); _getch(); system(CLS); else system(CLS); menu(); while (1);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1