C语言课程设计ATM机模拟操作附源码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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.帐户信息存放在文件,储户存取款记录保存在中;(在目录下创建这两
个文件)
j.采用模块化程序设计方法来实现,即main()显示主菜单、调用相关函数实现相应功能,起主控作用;
k.储户一天内输错密码的次数不能超过3次,否则无法进入系统;
l.有效避免输入存款金额、取款金额为负数等异常情况的出现。
较为突出的功能是注册、登录时账号密码的核对验证;存款转出转入金额的核对。是否超过余额,是否不符合格式,是否为冲突操作。
(2)程序运行截图及说明(每图限50到100字);
进入程序,menu1可选择登录、注册功能。
选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否成功登录。若登录失败,则重新选择。
选择注册,输入账号密码,写入文件中。
进入menu2,有五大功能选择,输入对应的序列号进入。
余额查询功能输出账号所对应的余额。
取款功能,需要安装要求取出格式化的金额。
存款功能,选择金额,若超过存款,自动报错。存储成功后,在屏幕上显示余额并可在txt中看到对应数目的增加。
修改密码功能,输入当前密码,输入新密码,并进行确认。即修改成功。
转账功能,输入对方卡号,核程序核对卡号是否存在,选择金额转账,对应存款的减少会反映在屏幕的余额上。
退出功能,任意键退出程序。
帮助功能,介绍了本程序的相关信息。
(3)采用的主要技术(限150到200字);
答:主要采用模块化管理代码。使用结构体对文本信息进行操作、运用文件操作相关函数如fwrite()、fread()、fgets()、fputs()、fgetc()、fputc()、fopen()、fclose()......
并使用指针操作数值。
附:程序代码
#include<>
#include<>
#include<>
#include<>
#include<>
#define N 3
void enterzhanghao(); um))
{
for (k = 1; k < N; k++)
{
if (user == (ATM[k].num))
inputmima();
}
system("cls");
printf("\t\t\t\t\t* 账户不存在,请从新输入*\t\t\t\t\t\n");
enterzhanghao();
}
else
inputmima();
}
void flesh()
{
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();
}
assword)
{
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();
}
ccounte&&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);
}
else
printf("\t\t\t\t\t余额不足!");