C语言ATM程序设计_第1页
C语言ATM程序设计_第2页
C语言ATM程序设计_第3页
C语言ATM程序设计_第4页
C语言ATM程序设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论