C语言课程设计ATM机模拟操作附源码.docx
《C语言课程设计ATM机模拟操作附源码.docx》由会员分享,可在线阅读,更多相关《C语言课程设计ATM机模拟操作附源码.docx(12页珍藏版)》请在冰豆网上搜索。
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.帐户信息存放在文件,储户存取款记录保存在中;(在目录下创建这两
个文件)
j.采用模块化程序设计方法来实现,即mainO显示主菜单、调用相关函数实现相应功能,起主控作用;
k.储户一天内输错密码的次数不能超过3次,否则无法进入系统;
l.有效避免输入存款金额、取款金额为负数等异常情况的出现。
较为突出的功能是注册、登录时账号密码的核对验证;存款转出转入金额的核对。
是否超过余额,是否不符合格式,是否为冲突操作。
(2)程序运行截图及说明(每图限50到100字);
进入程序,menul可选择登录、注册功能。
选择登录,输入账号密码,通过输入内容与文件的匹配,判断是否成功登录。
若登录失败,则重新选择。
IG\V/lNDOV/S\iy%tem32\cmdrxe
_□
选择注册,输入账号密码,写入文件中。
□IG\V/1NDOV/S\iyitem32\cmdrxr
-□
进入menu2,有五大功能选择,输入对应的序列号进入。
A/S\system32\cmd.exe
余额査询功能输出账号所对应的余额O
item32\cmd.exe
帐号10001,余额:
10000.00
育询余额取款存款
修改密码转账
退出登录
取款功能,需要安装要求取出格式化的金额。
m32\cmd.exe
iff输入你要取款的金额:
100
200
500
1000
2000其他金额
请输入对应序列号:
•2\cmd.exe
取款成功!
你的余额为:
9900.000000
』、、・、、
123456
询款款改账出查取存修转退
存款功能,选择金额,若超过存款,自动报错。
存储成功后,在屏幕上显示余额并可在txt中看到对应数目的增加。
n32\cmd.exe
请输入你要取款的金额:
100
200
500
1000
2000其他金额
请输入对应序列号:
修改密码功能,输入当前密码,输入新密码,并进行确认。
即修改成功。
▼林
31CAV/INDOWS\sy5tem32\cmd.exe
:
mm
请输入新的密码:
222222
请再次输入新的密码:
222222
码修改成功!
勺£左一询款款改账出一S取存修转退一
一
-
-123456-
转账功能,输入对方卡号,核程序核对卡号是否存在,选择金额转账,对应存款的减少会反映在屏幕的余额上。
o•返回菜单
请输要对方的账号:
退出功能,任意键退出程序。
曲C:
\WINDOWS\$^tem32\cmd^xe
按任总健继续
帮助功能,介绍了本程序的相关信息。
何BSCAWINDOWSUystem32\cmd.exe
额码录余密登询歉歉改账出助直取存修转退帮一
-
(3)采用的主要技术(限150到200字);
答:
主要采用模块化管理代码。
使用结构体对文本信息进行操作、运用文
件操作相关函数如fwrite()>fread()、fgets()、fputs()>fgetc()>
fputc()、fopen()、fclose()
并使用指针操作数值。
附:
程序代码
ftincludeO
tiincludeO
ttincludeO
ttincludeO
tiincludeO
ttdefineN3
voidenterzhanghao():
um))
{
for(k=1;k{
if(user==(ATM[k].num))
inputmimaO;
}
system("cis");
请从新输入
printf("\t\t\t\t\t*账户不存在,
*\t\t\t\t\t\n");
enterzhanghao();
}
inputmimaO;
voidflesh()
system("cls〃);
printf(z,\t\t\t\t\t请输入账号:
”);scanf&ATM[k].num);
printf("\t\t\t\t\t请输入密码:
");scanf&ATM[kJ.password);
write();
}assword)
temp——;
systemCcls");
printf(〃\t\t\t\t\t*
密码错误,请重新输入
printf(〃\t\t\t\t\t*
您还有:
〃);
printftemp);
printfC次机会*\n");
scanf&code);
if(temp==1)
system("cls");
printf("\t\t\t\t\t*您已经3次输入密码错误
*\t\t\t\t\n,z);
printf("\t\t\t\t\t*系统将退出操作
daly();
enterzhanghao();
}
}
menu();
}
ccounte&&i!
==0)
{
ATM[kJ.accounte=ATM[k].accounte-i:
printf(,z\t\t\t\t\t取款成功!
你的余额为:
”);
printfATM[k].accounte);
i=i*(-1);
write2(i);
}
write();
lf\n\n\n\n\nz,,ATM[k]・num,ATMLk]・accounte);
}
ccounte二i+ATM[k]・accounte:
printfATM[kJ.accounte);
write();
write2(i);
}
assword)
{
loop:
printf(,z\t\t\t\t\t请输入新的密码:
”);
scanf(“%d",&password?
);
printf("\n");
printf(zz\t\t\t\t\t请再次输入新的密码:
");
scanf(z,%d/z,&password3);
if(password2二二password3)
{
ATM[k]・password二password2;
}
printfC\t\t\t\t\t\n密码不一致!
\rT);printf("\t\t\t\t\t请重新输入\n");gotoloop;
}
}
else
printfC\t\t\t\t\t输入错误\iT);change();
}
write();
fscanf(fp,&(ATMLi]・password));
fscanf(fp,&(ATM[i].accounte));
}
fclose(fp);
}
um);
fclose(fp);
}
回菜单〃);
printf("\n\n\n\n\n\n\t\t\t请输要对方的账号:
”);
scanfC%d,z,other_num[10]):
um)um)
um);回菜单\t\t\t9.确认");
scanf&c);回菜单");
printf("\n\n\n\n\n\n\t\t请输入转账金额(整
百数):
〃);
scanf&q);getchar();
if(q)ccounte)ccounte-二tran;
ATM[k]・accounte+二tran;
menu();回菜单\t\t\t9.继续
转账〃);
c=_getch();
if(c='9')〃输入9就行
转账
system("CLS〃);
else
if(c=P)〃c为0返回菜单
{
system("CLS");
menu();
}
else
{
printf(,z输入错误,请重新输入!
\n〃);
system("CLS");
}
}
else
{
system("CLS");
printf("\n\n\n\n\n\n\t\t对不起,一次最多能转账3000元,请重新输入!
〃);
回!
\n〃);
}
else
{
system(,/CLS,/);
printf(,z\n\n\n\n\n\n\t\t\t您的余额不足,请重新输入!
〃);
printf("\n\n\n\n\n按任意键返回
\n");
_getch();
system("CLS");
}
}
else
{
system(/,CLS,/);
printf(z/\n\n\n\n\n\n\t\t\t请输入正确的金额!
请重新输入!
〃);
\n");
system("CLS");
}
else
{
system("CLS");
menu();
}
}whi.le
(1);
}
else
if(c=='O')
menu();
}
}
system("CLS");
printf(z,\n\n\n\n\n\n\t\t\t用户不存在!
请重新输入!
“);
system("CLS");
tran_account();//递归调用
}
}
〃帮助
voidhelp()
system("CLS");
printf(/z\t\t\t\t\t->码字不易,我可以在你心电跑一圈吗
<-\n,0;
printf(,,\t\t\t\t\t~>可以
<-\n,z);
printf(z,\t\t\t\t\t->当然可以
<-\n0;
你要选哪个
printf(〃\t\t\t\t\t-〉
intk;
scanf&k);
switch(k){
menu();
case1:
{printf("蟹蟹你、\n〃);_getch();
};break;
_getch();menu();
case2:
{printf("等下我,第十圈了!
\3n");
}break;