C语言ATM有文件输入输出.docx
- 文档编号:4418371
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:21
- 大小:18.21KB
C语言ATM有文件输入输出.docx
《C语言ATM有文件输入输出.docx》由会员分享,可在线阅读,更多相关《C语言ATM有文件输入输出.docx(21页珍藏版)》请在冰豆网上搜索。
C语言ATM有文件输入输出
#include"stdio.h"
#include"stdlib.h"
#include"conio.h"
voidzhanghao();//账号
voidxuanze();//选择函数
voidenter_ATM();//账号输入函数
voidcaozuo();//基本操作界面
voidqukuan();//取款函数
voidsuccess();//操作成功函数
voiddelay();//延时函数
voidchaxun();//余额查询函数
voidcunkuan();//存款函数
voidpanduan(doublez);//判断取款是否合法函数
voidexit();//退出界面函数
voidmima();//密码修改
voidzhuanzhang();//转账函数
voidxinxi();//信息
voidjia();//注册新用户函数
voidwelcome();//欢迎界面
voidzhuxiao();//注销函数
voidguanli();//管理员函数
typedefstruct
{
longintzhanghao;
intmima;
doubleyu_e;
}atm;
atmk;
longintz;
FILE*fp;
////////////////////////////////////////////////////////////主函数
intmain()
{
welcome();
xuanze();
return0;
}
//欢迎界面
voidwelcome()
{
intt=0;
for(inti=0;i<=100;i++)
{
printf("\n\n\n\n\t\t************康师傅牌ATM机欢迎您的使用**********");
printf("\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t加载中");
for(intj=0;j<=t;j++)
{
printf(".");
}
t++;
if(t==7)t=0;
printf("\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t%d%%\n",i);
for(intm=0;m<=2000000;m++);
system("cls");//清屏函数
}
}
////////////////////////////////////////////////////////////功能选择函数
voidxuanze()
{
system("cls");
printf("\t*请选择功能*\n\n\n\n\n");
printf("*1.管理员2.用户3.注册新用户*\n");
switch(getch())
{
case'1':
guanli();break;
case'2':
enter_ATM();break;
case'3':
jia();break;
default:
{
printf("\a非法输入");
delay();
system("cls");
xuanze();
};break;
}
}
voidenter_ATM()
{
delay();
system("cls");
//打开文件
fp=fopen("银行后台.txt","rb+");
if(fp==NULL)
{
printf("打开失败\n");
return;
}
intnumber,f=0;
printf("*欢迎使用ATM柜台机*\n\n\n\n\n");
printf("*请输入卡号*\n");
scanf("%d",&number);
//读到内存比较
while(fread(&k,sizeof(k),1,fp))
{
if(k.zhanghao==number)
{
f=1;
break;
}
}
z=k.zhanghao;
if(f==1)
{
longintcode;
inttemp=3;
system("cls");
printf("*请输入密码*\n");
scanf("%d",&code);
while(code!
=k.mima)
{
temp--;
system("cls");
printf("*密码错误,请重新输入*\n");
printf("*您还有");
printf("%d",temp);
printf("次机会*\n");
scanf("%d",&code);
if(temp==1)
{
system("cls");
printf("*您已经3次输入密码*\n");
printf("*系统将退出操作*\n");
delay();
fclose(fp);
xuanze();
}
}
caozuo();
}
else
{
printf("账号错误\n");
xuanze();
}
fclose(fp);
}
//////////////////////////////////////////////////////////////////主操作界面函数
voidcaozuo()
{
system("cls");
printf("********************************\n");
printf("*请选择以下业务*\n");
printf("*1.存款*\n");
printf("*2.取款*\n");
printf("*3.查询*\n");
printf("*4.转账*\n");
printf("*5.修改密码*\n");
printf("*6.注销*\n");
printf("*7.退出*\n");
printf("********************************\n");
switch(getch())
{
case'1':
cunkuan();break;
case'2':
qukuan();break;
case'3':
chaxun();break;
case'4':
zhuanzhang();break;
case'5':
mima();break;
case'6':
zhuxiao();break;
case'7':
exit();break;
default:
{
printf("\a非法操作\n");
caozuo();
};
}
}
/////////////////////////////////////////////////////////////////存款函数
voidcunkuan()
{
doublecun;
system("cls");
fp=fopen("银行后台.txt","rb+");
if(fp==NULL)
{
printf("打开失败\n");
return;
}
while(fread(&k,sizeof(k),1,fp))
{
if(k.zhanghao==z)
{
break;
}
}
printf("请输入您要存入的金额:
");
scanf("%lf",&cun);
if(cun<0)
{
system("cls");
printf("非法存款\n");
printf("请重新输入\n");
scanf("%lf",&cun);
}
k.yu_e+=cun;
system("cls");
printf("您当前的余额为:
%f\n",k.yu_e);
printf("请输入回车键继续!
!
!
");
getch();
fseek(fp,-sizeof(k),1);
fwrite(&k,sizeof(k),1,fp);
fclose(fp);
success();
}
/////////////////////////////////////////////////////////////////////////取款函数
voidqukuan()
{
doubletemp;
system("cls");
fp=fopen("银行后台.txt","rb+");
printf("请选择您要取款的金额\n");
printf("1.1002.200\n");
printf("3.5004.800\n");
printf("5.10006.其它\n");
printf("\n");
printf("7.返回8.退出\n");
switch(getch())
{
case'1':
panduan(100);break;
case'2':
panduan(200);break;
case'3':
panduan(500);break;
case'4':
panduan(800);break;
case'5':
panduan(1000);break;
case'6':
system("cls");
printf("请输入您要取款的金额:
");
scanf("%lf",&temp);
panduan(temp);break;
case'7':
caozuo();break;
case'8':
exit();break;
}
}
///////////////////////////////////////////////////////////////////判断取款是否合法函数
voidpanduan(doublei)
{
floatbeishu;
while(fread(&k,sizeof(k),1,fp))
{
if(k.zhanghao==z)
{
break;
}
}
if(i>k.yu_e)
{
system("cls");
printf("余额不足!
\n");
printf("请重新操作\n");
printf("1.返回2.退出\n");
fclose(fp);
switch(getch())
{
case'1':
qukuan();
case'2':
exit();
}
}
beishu=(int)i%100;
if(beishu!
=0)
{
system("cls");
delay();
printf("本ATM机只支持100的人民币\n");
printf("请重新操作\n");
printf("\n");
printf("1.返回2.退出\n");
fclose(fp);
switch(getch())
{
case'1':
qukuan();
case'2':
exit();
}
}
if(i==5000.00||i>5000.00)
{
system("cls");
printf("每次取款不能超过5000元\n");
printf("请重新操作\n");
printf("\n");
printf("1.返回2.退出\n");
fclose(fp);
switch(getch())
{
case'1':
qukuan();
case'2':
exit();
}
}
k.yu_e-=i;
system("cls");
printf("您当前的余额为:
%f\n",k.yu_e);
printf("请输入回车键继续!
!
!
");
getch();
fseek(fp,-sizeof(k),1);
fwrite(&k,sizeof(k),1,fp);
fclose(fp);
success();
}
////////////////////////////////////////////////////////////////////余额查询函数
voidchaxun()
{
intf=0;
fp=fopen("银行后台.txt","rb+");
system("cls");
while(fread(&k,sizeof(k),1,fp))
{
if(k.zhanghao==z)
{
break;
}
}
printf("你的余额为:
%lf\n",k.yu_e);
printf("1.返回2.退出\n");
switch(getch())
{
case'1':
caozuo();break;
case'2':
exit();break;
}
fclose(fp);
}
////////////////////////////////////////////////////////////////转账号函数
voidzhuanzhang()
{
inthao,f=0,sm;
doublemoney;
fp=fopen("银行后台.txt","rb+");
system("cls");
delay();
printf("*请输入账号*\n");
scanf("%d",&hao);
while(fread(&k,sizeof(k),1,fp))
{
if(k.zhanghao==hao)
{
f=1;
break;
}
}
fseek(fp,-sizeof(k),1);
sm=ftell(fp);
if(f==1)
{
printf("*请输入金额*\n");
scanf("%lf",&money);
}
else
{
printf("*账号错误,操作取消*\n");
delay();
delay();
fclose(fp);
caozuo();
}
rewind(fp);
while(fread(&k,sizeof(k),1,fp))
{
if(k.zhanghao==z)
{
f=1;
break;
}
}
if(f==1)
{
if(money>k.yu_e||money<0)
{
printf("*金额错误,操作取消*\n");
delay();
delay();
fclose(fp);
caozuo();
}
else
{
k.yu_e-=money;
fseek(fp,-sizeof(k),1);
fwrite(&k,sizeof(k),1,fp);
system("cls");
printf("您的账号为%d\n",k.zhanghao);
printf("您的余额为%f\n",k.yu_e);
printf("按回车键继续.");
getch();
rewind(fp);
fseek(fp,sm,1);
fread(&k,sizeof(k),1,fp);
k.yu_e+=money;
fseek(fp,-sizeof(k),1);
fwrite(&k,sizeof(k),1,fp);;
fclose(fp);
success();
}
}
}
//////////////////////////////////////////////////////////////////////密码修改函数
voidmima()
{
longintmm1,mm2,mm3;
inttemp;
system("cls");
fp=fopen("银行后台.txt","rb+");
while(fread(&k,sizeof(k),1,fp))
{
if(k.zhanghao==z)
{
break;
}
}
printf("旧密码:
");
scanf("%d",&mm1);
printf("\n");
if(mm1!
=k.mima)
{
system("cls");
printf("旧密码错误,请重新输入\n");
delay();
fclose(fp);
mima();
}
printf("新密码:
");
scanf("%d",&mm2);
if(mm2<100000||mm2>999999)
{
system("cls");
printf("密码必须等于6位数\n");
printf("请重新输入!
\n");
delay();
fclose(fp);
mima();
}
temp=mm2%111111;
if(temp==0)
{
system("cls");
printf("密码过于简单\n");
printf("请重新输入!
\n");
delay();
mima();
}
//判断密码是否等于六位数和是否六个数字相同
printf("\n");
printf("确认新密码:
");
scanf("%d",&mm3);
if(mm2!
=mm3)
{
system("cls");
printf("确认密码不一致,请重新输入\n");
delay();
mima();
}
if(mm3==mm2)
{
k.mima=mm3;
fseek(fp,-sizeof(k),1);
fwrite(&k,sizeof(k),1,fp);
fclose(fp);
success();
}
}
//////////////////////////////////////////////注销函数
voidzhuxiao()
{
system("cls");
printf("*欢迎您的再次使用*\n");
printf("*系统正在注销...*\n");
delay();
enter_ATM();
}
//////////////////////////////////////////////系统退出函数
voidexit()
{
system("cls");
printf("*欢迎您的再次使用*\n");
printf("*系统正在退出...*\n");
delay();
xuanze();
}
///////////////////////////////////////////////////////延时函数
voiddelay()
{
longintbl1;
intbl2;
for(bl1=600000;bl1>0;bl1--)
{
for(bl2=300;bl2>0;bl2--);
}
}
/////////////////////////////////////////////////操作成功函数
voidsuccess()
{
system("cls");
printf("操作已成功\n");
printf("\n");
printf("1.返回2.退出\n");
switch(getch())
{
case'1':
caozuo();break;
case'2':
exit();break;
}
}
//////////////////////////////////////////注册新用户函数
voidjia()
{
intmm1,mm2,f=0;
inttemp;
longn;
system("cls");
fp=fopen("银行后台.txt","ab+");
if(fp==NULL)
{
printf("打开失败\n");
return;
}
printf("请输入您要创建的账号:
");
scanf("%d",&n);
while(fread(&k,sizeof(k),1,fp))
{
if(k.zhanghao==n)
{
f=1;
break;
}
}
if(f==1)
{
printf("该账户名已存在\n");
delay();
printf("即将返回上一界面...");
delay();
xuanze();
}
else
{
printf("请输入密码:
");
fflush(stdin);
scanf("%d",&mm1);
if(mm1<100000||mm1>999999)
{
system("cls");
printf("密码必须等于6位数\n");
printf("请重新输入:
\n");
delay();
scanf("%d",&mm1);
}
temp=mm1%111111;
if(temp==0)
{
system("cls");
printf("密码过于简单\n");
printf("请重新输入:
\n");
delay();
scanf("%d",&mm1);
}
printf("\n");
printf("确认密码:
\n");
scanf("%d",&mm2);
if(mm1==mm2)
{
k.zhanghao=n;
k.mima=mm1;
k.yu_e=0;
fwrite(&k,sizeof(k),1,fp);
fclose(fp);
printf("账号创建成功!
\n");
printf("您的账号是%d,请妥善保管!
\n",k.zhanghao);
printf("*按1退出*\n");
switch(getch())
{
case'1':
xuanze();break;
}
}
else
{
system("cls");
printf("确认密码不一致,操作取消\n");
delay();
fclose(fp);
xuanze();
}
}
}
///////////////////////////////////////
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 ATM 文件 输入输出