C语言课程设计报告ATM机模拟操作附源码.docx

上传人:b****6 文档编号:8776171 上传时间:2023-02-01 格式:DOCX 页数:21 大小:147.12KB
下载 相关 举报
C语言课程设计报告ATM机模拟操作附源码.docx_第1页
第1页 / 共21页
C语言课程设计报告ATM机模拟操作附源码.docx_第2页
第2页 / 共21页
C语言课程设计报告ATM机模拟操作附源码.docx_第3页
第3页 / 共21页
C语言课程设计报告ATM机模拟操作附源码.docx_第4页
第4页 / 共21页
C语言课程设计报告ATM机模拟操作附源码.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C语言课程设计报告ATM机模拟操作附源码.docx

《C语言课程设计报告ATM机模拟操作附源码.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告ATM机模拟操作附源码.docx(21页珍藏版)》请在冰豆网上搜索。

C语言课程设计报告ATM机模拟操作附源码.docx

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余额,操作后XX余额应相应减少。

之后可返回主菜单;

e.修改密码:

连续输入两次新密码(两次输入结果完全一样)后,新密码取代旧密码,并存放到XX信息文件中。

之后可返回主菜单;

f.退出:

退出系统;

g.帮助:

增加趣味性;

h.存款时,可正可负,正表示存款,负表示取款;

i.XX信息存放在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()......

并使用指针操作数值。

附:

程序代码

#include

#include

#include

#include

#include

#defineN3

voidenterzhanghao();//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;k

{

if(user==(ATM[k].num))

inputmima();

}

system("cls");

printf("\t\t\t\t\t*账户不存在,请从新输入*\t\t\t\t\t\n");

enterzhanghao();

}

else

inputmima();

}

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);

}

else

printf("\t\t\t\t\t余额缺乏!

");

write();

}

//延时函数

voiddaly()

{

longinth;

intk;

for(h=600000;h>0;h--)

{

for(k=300;k>0;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",&password2);

printf("\n");

printf("\t\t\t\t\t请再次输入新的密码:

");

scanf("%d",&password3);

if(password2==password3)

{

ATM[k].password=password2;

printf("\t\t\t\t\t\n密码修改成功!

\n");

}

else

{

printf("\t\t\t\t\t\n密码不一致!

\n");

printf("\t\t\t\t\t请重新输入!

\n");

gotoloop;

}

}

else

{

printf("\t\t\t\t\t输入错误\n");

change();

}

write();

}

//文件读取函数

voidread()

{

inti;

FILE*fp;

fp=fopen("accounts.txt","r");

if(fp==NULL)

{

printf("\t\t\t\t\t翻开文件失败\n");

return;

}

for(i=0;i

{

fscanf(fp,"%d",&(ATM[i].num));

fscanf(fp,"%d",&(ATM[i].password));

fscanf(fp,"%lf\n",&(ATM[i].accounte));

}

fclose(fp);

}

//accounts文件写入函数

voidwrite()

{

inti;

FILE*fp;

fp=fopen("accounts.txt","w");

if(fp==NULL)

{

printf("\t\t\t\t\t翻开文件失败\n");

return;

}

for(i=0;i

{

fprintf(fp,"%-8d",ATM[i].num);

fprintf(fp,"%-8d",ATM[i].password);

fprintf(fp,"%lf\n",ATM[i].accounte);

}

fclose(fp);

}

//records文件写入函数

voidwrite2(floath)

{

time_tt;

structtm*lt;

time(&t);//获取Unix时间戳。

lt=localtime(&t);//转为时间构造。

FILE*fp;

fp=fopen("records.txt","a");

if(fp==NULL)

{

printf("\t\t\t\t\t翻开文件失败\n");

return;

}

else

{

fprintf(fp,"%-5d",lt->tm_year+1900);

fprintf(fp,"%-3d",lt->tm_mon);

fprintf(fp,"%-3d",lt->tm_mday);

fprintf(fp,"%-5lf\n",h);

}

fclose(fp);

}

//转账函数

voidtran_account()

{

intother_num[10];

inti,c,q,tran;//c用来判断转账是否继续,q用来判断用户行为,tran用来存储转账金额

system("CLS");

printf("\n\t\t\t\t\t\t\t\t0.返回菜单");

printf("\n\n\n\n\n\n\t\t\t请输要对方的账号:

");

scanf("%d",other_num[10]);//输入对方账号

if(other_num[10]==ATM[k].num)//判断是否为自身账号

{

system("CLS");

printf("\n\n\n\n\n\n\n\n\t\t对不起,不能给自己转账,请重新输入账号!

\n");

printf("\n\n\n按任意键返回!

");

_getch();

system("CLS");

tran_account();//递归调用

}

else

while

(1)

{

for(i=0;i

{

if(other_num[10]==ATM[i].num)//匹配用户

{

while

(1)

{

system("CLS");

printf("\t\t\t请输入对方账号:

%s",ATM[i].num);//显示对方信息

printf("\n\n\n\n\n\t\t0.返回菜单\t\t\t9.确认");

scanf("%d",&c);//输入9确认

if(c=='9')

{

system("CLS");

do

{

printf("\n\t\t\t\t\t\t\t\t0.返回菜单");

printf("\n\n\n\n\n\n\t\t请输入转账金额〔整百数〕:

");

scanf("%d",&q);getchar();

if(q)//q为非0时进入内层条件语句

{

tran=q;

if(tran>=100&&tran%100==0)//判断是否为整百//数并且大于100的数

{

if(tran<=ATM[k].accounte)//取款数是否不超过余额

{

if(tran<=3000)//判断是否超过3000

{

system("CLS");

ATM[k].accounte-=tran;

ATM[k].accounte+=tran;

menu();//调用save_info,存储信息

printf("\n\n\n\n\n\n\t\t\t交易成功!

\n");

printf("\n\n\n\n\n\t\t0.返回菜单\t\t\t9.继续转账");

c=_getch();

if(c=='9')//输入9就行转账

{

system("CLS");

}

else

if(c=='0')//c为0返回菜单

{

system("CLS");

menu();

}

else

{

printf("输入错误,请重新输入!

\n");

system("CLS");

}

}

else

{

system("CLS");

printf("\n\n\n\n\n\n\t\t对不起,一次最多能转账3000元,请重新输入!

");

printf("\n\n\n\n\n按任意键返回!

\n");

_getch();

system("CLS");

}

}

else

{

system("CLS");

printf("\n\n\n\n\n\n\t\t\t您的余额缺乏,请重新输入!

");

printf("\n\n\n\n\n按任意键返回!

\n");

_getch();

system("CLS");

}

}

else

{

system("CLS");

printf("\n\n\n\n\n\n\t\t\t请输入正确的金额!

请重新输入!

");

printf("\n\n\n\n\n按任意键返回!

\n");

_getch();

system("CLS");

}

}

else

{

system("CLS");

menu();

}

}while

(1);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1