版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C说话程序实践I2J
试验报告
姓名学号
班级指导教师
开设学期
开设时间
试验标题主动取款机程序设计
试验日期
评定人签字
评定日期
第1页,一共17页
一.试验目标
I.函数的挪用
2.构造体的运用
3.文件的运用:打开.封闭.输入.输出等
4.宏界说
二.试验内容与试验步骤
试验内容.道理剖析
1.给出数据构造或函数界说
构造体:
structclients
(
longintcard_number,card_password;
charname[20];
floatmoney;
}yonghuf3];
card_number:银行卡号
card_passwordW音玛
name:用户名
money:卡内金额
自界说函数:
voidfuction(float,int);
用于登陆后的操作
第2页,一共17页
2.用流程图表示出来程序设计的思惟
输
入
O
停止
3.给出具体试验步骤
#include<stdio.h>
#include<stdlib.h>
#defineN3/*用户人数*/
第3页,一共17页
structclients
longintcaid_number,card_password;
charname[20];
floatmoney;
)yonghu[N];
FILE*fp:
inti;
voidfuction(float,int);
voidmain()
(
intj,number,passwoidjimes1=3,times2=3;
printf("迎接运月中国扶植银行主动取款机!\n”);
fp=fopenCclients.txt","a+");
if(getw(fp)==EOF)
printf("用户文件未设置!\n“);
for(i=0;i<N;i++)/*文件不消失时,输入用户信息*/
printf("请输入第%d位用户的信息:\n”,i+1);
printf("银行卡号暗码用户名卡内金额\n”);
scanf("%d%d%s%f',&yonghui].card_numbcr,&yonghulij.card_password,,&yonghuli].money);
if(i==l)
while((yonghu[i].card_number==yonghufi-ll.card_number)||(yonghu[i].card_passwoid==yonghu[i-
第4页,一共17页
I].card_password))
printf("输入信息有反复!请从新输入\n”);
prinlf("请输入第%11位用户的信息:\n”,i+I);
prinlf("银行卡号暗码用户名卡内金额\n”);
scanf("%d%d%s%f',&yonghu[i].card_number,&yonghu[i].caiii_passvvord,yonghu[i].name,&yonghu[i].money);
)
)
if(i==2)
(
while((yonghu[i].card_nuniber==yonghu[i-l].card_number)||(yonghu[i].card_password==yonghu[i-
1].card_pass\vord)||(yonghuli].card_nuniber==yonghu[i-2J.card_number)||(yonghu[i].card_password==yonghu[i-
2].card_password))
{
prinlf(“输入信息有反复!请从新输入\n");
printfC请输入第%€1位用户的信息:\n”,i十1);
printf("银行卡号暗码用户名卡内金额\n”);
scanf("%d%d%s%f',&yonghL[i].card_numbcr,&yonghu[i].card_password,yonghu[i].namc,&yonghu[i].money);
)
)
fprintf(fp."%d%d%s%r,yonghu[i].card_number,yonghu[il.card_password.yonghu[.yonghu[il.money);
putc('\n\fp);
)
)
fclose(fp);
第5页,一共17页
printf("\n\n请登录体系\n");/*登录体系,输入卡号和暗码*/
printf("请输入您的银行卡号:\n”);
scanf("%d",&number);
printf("请输入您的暗码:\n");
scanf("%d",&password);
fp=fopen("clients.txt","r+");
for(i=0;i<N;i++)
{
fscanf(fp,"%d%d%s%r',&yonghu[i].card_number,&yonghu[il.card_password,yonghu[i].nanie,&yonghu[i].mon
ey);
)
fclose(fp);
for(i=0;i<N;i++)/*断定卡号及暗码是否匹配*/
{
if((number!=yonghulOJ.card_number)&&(number!=yonghu[I].card_number)&&(number!=yonghu[2].car
(J_iiuinbci))
{
if((timesl-l)!=O)
(
printf("该用户不消失!您还有%d次尝试机遇\n\timesl」);
printR"请输入您的银行卡号:\n");
scanf("%d'\&number);
printf("请输入您的暗码:\n”);
scanf("%d'\&password);
i=-l;
第6页,一共17页
else
printf("尝试掉败!请按随意率性键退出:\n”);
exit(O);
)
times1-;
)
else
{
if(nuniber==yonghu[i].card_number)
(
if(password==yonghuli].card_password)
(
printf("%s登陆成功!请持续您的操作\n”,yonghu[i].namc);
j=i;
i=5;/*登陆成功,退出轮回*,
)
else
{
if((times2-l)!=0)
{
printf("暗码输入错误!您还有%d次尝试机遇\n",times2-1);
printf(“请输入您的暗码
scanf("%d",&password);
第7页,一共17页
else
printf(“尝试掉败!请按随意率性键退出:\n");
exit(O);
)
times2";
fuction(yonghu(j].money,j);
}
voidfuction(floatk)
(
floatsaved_money,fetched_inoney,payment;
in(phone_num,x.old_password,rew_password;
while(l)
{
pnnU(”I.存款.\n2.取款.\n3.允话费.\n4.修正暗码.\n5.显示菜单.\nO.退出体系.\n");
scanf("%d'\&x);
switch(x)
{
case0:
第8页,一共17页
printf("退出体系!");
exit(O);
case1:
prinlf("卡内金额:
printf(”请输入存款金额:\n");
scanf("%f'.&saved_money);
while(saved_money<0)
{
printf(“输入有误!请从新输入!\n");
printfC请输入存款金额:\n”);
scanf("%f'.&saved_money);
)
m+=savcd_moncy;
prinlfC操作成功!卡内余额为:
yonghufk].money=m;
fp=fopcn("clicnts.txt",,'w+");
for(i=0;i<N;i++)
(
fprintf(fp/'%d%d%s%f,,yonghu[i].caid_number,yonghu[il.card_password.yonghu[,yonghufi].money);
putc('\n\fp);
)
fclose(fp);
break;
case2:
prinlf("卡内金额:%f\n",m);
第9页,一共17页
printf("请输入取款金额:\n");
scanf("%f',&fetched_money);
m-=fctchcd_moncy;
while((fetched_money<0)||(m<0))
(
printf("输入有误!请从新输入!\n");
m+=fetched_money;
printff请输入取款金额:\n");
scanf("%f',&fetched_money);
m-=fetched_money;
)
prinlf("操作成功!卡内余额为:
yonghu|k].money=m;
fp=fopenCclients.txt",,^4-");
for(i=0;i<N;i++)
{
fprintf(fp."%d%d%s%f',yonghu[i].card_number,yonghu[i].card_password.yonghu[i].name.yonghu[i].money);
putc('\n'.fp);
)
fclose(fp);
break;
case3:
printf("卡内金额:
printf("请输入德律风号码:\n");
scanf("%d",&phone_nuni);
第10页,一共17页
prinlf(“请输入所交话费金额:\n”);
scanf("%f',&payment);
m-=payment;
while((payment<())||(m<0))
(
printf("输入有误!请从新输入!\n");
m+=payment;
printf(”请输入所交话费金额:\n”);
scanf("%f',&payment);
m-=payment;
)
prinlf("操作成功!卡内余额为:
yonghu|k].money=m;
fp=fopenCclients.txt",,^4-");
for(i=0;i<N;i++)
{
fprintf(fp."%d%d%s%f,,yonghu[i].card_number,yonghu[i].card_password.yonghu[.yonghu[il.money);
putc('\n'.fp);
)
fclose(fp);
break;
case4:
while(l)
(
printf("请输入原暗码:\n");
第11页,一共17页
scanf("%d",&old_password);
if(old_password==yonghu[k].card_password)
{
printf("请输入新暗码:\n");
scanf("%d".&new_password);
printf("暗码修正成功!\n”);
yonghu[k].card_password=new_password;
fp=fopenCclients.txt","w+");
for(i=0;i<N;i++)
{
fprin(f(fp,"%d%d%s%r,yongriu[i].card_number,yonghu[i].card_password,yonghu[i].name,yonghu[i].money);
putc('\n'.fp);
)
fclosc(fp);
break;
)
else
prinif("暗码输入错误!\n");
)
break;
case5:
break;
default:
printf("输入有误!请从新输入!\n");
break;
第12页,一共17页
三.试验进程与成果剖析
1.现象:输入用户信息后,在登录体系时,输入第一个用户的信息,提醒该用户不消失
解决办法:
fp=fopenCclients.txt","r+,');
for(i=0;i<N;i++)
{
fscanf(fp,"%d%d%s%f',&yonghu[i].card_number,&yonghu[i].card_password,yonghu[i].name,&yonghu[i]
.money);
)
fclose(fp);
2.现象:登录体系时,输入卡号或暗码超过3次错误后,仍能输入
解决办法:
增长变量times1=3(卡号输入错误的次数),times2=3(暗码输入错误的次数),当times-1>0时,提醒
残剩尝试机遇,当times-1=()时,退出程序
3.现象:存取款或充话费时,输入负数仍能运行
解决办法:
增长轮回:
while(saved_money<0)
(
printf("输入有误!请从新输入!\n”);
printf(“请输入存款金额:\n”);
第13页,一共17页
scanf("%「',&saved_money);
while((fetched_money<0)||(m<0))
(
printf("输入有误!请从新输入!\n”);
m+=fetched_money;
prinlf(”请输入取款金额:\n");
scanf("%f",&fetched_money);
m-=fetched_money;
}
while((payment<0)||(m<0))
{
prinlf("输入有误!请从新输入!\n");
m+=payment;
printf("请输入所交话费金额:\n");
scanf("%f,,&payment);
m-=payment;
}
四.试验成果总结
第14页,一共17页
*C:\Progra>Files\licrosoftVisualStudio\lyProjects\b\Debug\b.exe*-口区
困户文,
的信息:
限行卡密码用户名卡内金额
201122442244lirunze9999
常购入靠2位用户的信息:
假行卡高密码用户名卡内金额
201122452245poi8888
晴项i人等3位用户的信息:
k哈卡再密码用户名卡内金额
201122462246qwe7777
请登录系统
情输入您的银行卡号:
20112244
请输入您的密码:
1irunze登陆成功?请继续您的操作
1存蔓
2•
斡
笔•
3费
改
修
・
4密
一
显
亶
5菜
畲
退
统
系
V金额:9999.000000
Si入存款金额:
:成功?卡内余额为:10000.000000
%.修改密伸.
由系统.
2
|卡内金额:10000.000000
晴输入取款金额:
1000
操隹成功?卡内余额为:9000.000000
(2.取款.
F.充话费.
4.修改密码.
显示节L.
第15页,一共17页
\Progra>Files\licrosoftVisualStudio\lyProjects\b\Debug\b.exe*-力|
范
话费
・
宓
改
修
亶
黑
一
4.显
木
5.统
蚕
退
B3.系
卡
觐
&金
请
以
入
12
请789
34所
输56
入
10。
操
功卡
内余
额为
雪成♦
・8900.000000
迁
a..鬓.
B.
改
B.修
・
一
4.显
黑
5.亶
蚕
退
素
统
22输
请
成功
修
11改
20码
密
心
1存
勃•
鬓
2球.
费
迁
3修
一
密
4改
显
亶
菜
5一
退
统
系
0蚕
5
存
•
1.冬
•
23.话费
修
・
改
4密
显
鳖
一
5菜
退
统
畲
0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 富士康厂长培训课件
- 家长安全工作培训会讲话课件
- 家长培训课件软件
- 公众责任保险合同2026年供应协议
- 2026年电商直播品牌代言合同
- 2026年安保系统维护合同
- 2026年广告投放效果承诺合同协议
- 2026年车辆产权抵押合同协议
- 2026年工业设备供电合同协议
- 知识产权许可合同2026年使用许可协议
- 买房分手协议书范本
- 污水管道疏通方案
- 氟橡胶胶浆寿命的研究
- HGT20638-2017化工装置自控工程设计文件深度规范
- 东北抗联英雄人物智慧树知到期末考试答案章节答案2024年牡丹江师范学院
- 【课堂练】《声音》单元测试
- Turning Red《青春变形记(2022)》完整中英文对照剧本
- 《抽水蓄能电站建设征地移民安置规划大纲编制规程》
- MOOC 数字逻辑电路实验-东南大学 中国大学慕课答案
- 安全的电气施工方案
- 北师大版七年级数学上册 (认识一元一次方程)一元一次方程课件教学
评论
0/150
提交评论