RFID实验报告Word下载.docx
《RFID实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《RFID实验报告Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
}INFORMATION;
main()
定义变量及对其进行初始化;
利用do-while循环执行菜单;
将调用函数插入菜单中;
由键盘录入来确定循环是否继续;
}
2、被调用函数模块
①intInputInformation(INFORMATIONinf[])
/*函数功能:
基本信息包括卡号(只允许录入十位卡号)和初始金额的录入
函数参数:
inf为结构体组
函数返回值:
录入卡号个数
*/
定义变量及其初始化;
利用do-while进行基本信息即卡号(只允许录入十位)及初始金额的录入,并记录每位卡号所对应的下标值;
由键盘录入的字符来确定是否停止对该函数的调用;
返回录入的卡号个数;
}
②intProcessingService(INFORMATIONinf[],inti,float*p)
乘车明细输入以及对帐户进行扣费处理,若余额不足则进行提示
inf为结构体组,i为所输卡号对应下标值,*p为账户余额地址
乘车次数
在主函数中输入卡号并调用查找函数找到该卡号所对应下标值传值给该函数;
记录该卡号的扣费明细;
当卡内余额不足时不予以扣费并提示尽快充值;
③voidRecharge(INFORMATIONinf[N],intn,float*p)
输入用户卡号及充值金额进行充值
inf为结构体组,n为录入卡号总数,*p为账户余额地址
无
在主函数中输入卡号并调用函数找到该卡号对应余额地址传值给该函数;
由键盘录入用户想要充值的金额并进行充值;
④voidInquiryBusiness(INFORMATIONinf[],intn,intm)
性息查询,用户输入卡号,程序打印相关信息
inf为结构体组,n为录入卡号总数,m为乘车次数
输入卡号并调用查找函数找到该卡号所对应下标值;
打印出有关该卡号的信息;
⑤intLinsearch(INFORMATIONinf[N],charx[],intn)
运用线性查找法查找用户输入的卡号
inf为结构体组,x为用户输入的卡号,n为录入卡号总数
若找到则返回其下标值,找不到则返回-1
输入卡号并调用查找函数找到该卡号所对应下标值并返回给调用函数;
⑥intInputInformationTwo(INFORMATIONinf[],intn)
第二次及其以后再次录入基本信息
inf为结构体组,n为录入卡号总数
整个程序的流程图如下所示:
order不等于5
四详细设计
/*主题:
功能:
基本信息包括卡号,初始金额的录入;
输入卡号进行乘车扣费,充值,乘车明细答应
编程语言:
C
#include<
stdio.h>
stdlib.h>
string.h>
#defineN100
intInputInformation(INFORMATIONinf[]);
intInputInformationTwo(INFORMATIONinf[],intn);
voidRecharge(INFORMATIONinf[],intn,float*p);
intLinsearch(INFORMATIONinf[N],charx[],intn);
voidInquiryBusiness(INFORMATIONinf[],intn,intm);
intProcessingService(INFORMATIONinf[],inti,float*p);
intmain()
intorder;
intn;
/*录入卡号的个数*/
inti;
/*用户输入查找卡号的返回下标值*/
intj;
/*某卡号记载的乘车明细的下标值*/
charx[11];
INFORMATIONinf[N];
printf("
Enter1toinputthebasicinformation\n"
);
Enter2toentertoprocessingservice\n"
Enter3torecharge\n"
Enter4toinquirybusiness\n"
Enter5tostoptheprogram\n"
do{
printf("
Inputthenumberwhichyouchoose\n"
scanf("
%d"
&
order);
}while(order!
=1&
&
order!
=2&
=3&
=4&
=5);
if(order==1)
{
n=InputInformation(inf);
Thereare%dcards\n"
n);
elseif(order==2||order==3||order==4)
do{
printf("
Pleasechoose1andinputthebasicinformation\n"
scanf("
}while(order!
=1);
else
exit(0);
{
n=InputInformationTwo(inf,n);
}
if(order==2)
inputyourcardnumber\n"
%s"
x);
i=Linsearch(inf,x,n);
}while(i==-1);
j=ProcessingService(inf,i,&
inf[i].balance);
/*j为乘车次数*/
}
if(order==3)
{
}while(i==-1);
Recharge(inf,n,&
if(order==4)
InquiryBusiness(inf,n,j);
return0;
/*输入用户卡号及充值金额进行充值,无返回值*/
voidRecharge(INFORMATIONinf[N],intn,float*p)
floatmoney;
yourcard'
sbalanceis%.2f\n"
*p);
Howmuchmoneydoyouwanttorecharge?
\n"
scanf("
%f"
money);
}while(money<
0);
*p=*p+money;
/*基本信息包括卡号(只允许录入十位卡号)和初始金额的录入,并返回录入卡号个数*/
intInputInformation(INFORMATIONinf[])
intdigit;
inti,j,a;
charreply;
i=-1;
i++;
digit=0;
inputthecardnumber\n"
inf[i].cardnumber);
for(j=0;
inf[i].cardnumber[j]!
='
\0'
;
j++)
if(inf[i].cardnumber[j]>
0'
inf[i].cardnumber[j]<
9'
)
digit++;
else
;
}while(digit!
=10);
Inputinitialmoney\n"
}while(inf[i].balance<
Doyouwanttocontinue?
enter'
y'
iscontinue,and'
n'
isstop\n"
%c"
reply);
}while(reply=='
||reply=='
Y'
a=i+1;
returna;
/*运用线性查找法查找用户输入的卡号,若找到则返回其下标值,找不到则返回-1*/
intLinsearch(INFORMATIONinf[N],charx[],intn)
for(i=0;
i<
n;
i++)
if(strcmp(x,inf[i].cardnumber)==0)
returni;
else;
return-1;
/*性息查询,用户输入卡号,程序打印相关信息,无返回值*/
voidInquiryBusiness(INFORMATIONinf[],intn,intm)
i=Linsearch(inf,x,n);
}while(i==-1);
theinformationis:
thecardnumberis%s\n"
thebalanceis%.2f\n"
inf[i].balance);
j<
=m;
thedateis%ld\n"
inf[i].date[j]);
thebusnumberis%d\n"
inf[i].busnumber[j]);
theexpensesis%.2f\n"
inf[i].expenses[j]);
/*乘车明细输入以及对帐户进行扣费处理,若余额不足则进行提示,返回值为乘车次数*/
intProcessingService(INFORMATIONinf[],inti,float*p)
intj=-1;
intflag=1;
j++;
Inputthedate,busnumberandexpenses\n"
%ld"
inf[i].date[j]);
inf[i].busnumber[j]);
inf[i].expenses[j]);
}while(inf[i].date[j]<
=0||inf[i].busnumber[j]<
=0||inf[i].expenses[j]<
=0);
*p=*p-inf[i].expenses[j];
if(*p<
0)
thebalanceisnotenough,pleaserechargeasquicklyaspossible\n"
flag=0;
*p=*p+inf[i].expenses[j];
yourcradbalanceis%.2f\n"
printf("
iscontinue,and'
isstop\n"
returnj;
/*第二次及其以后再次录入基本信息,并返回录入卡号个数*/
intInputInformationTwo(INFORMATIONinf[],intn)
i=n-1;
do{
for(j=0;
if(inf[i].cardnumber[j]>
;
}while(digit!
五调试分析
1、应使用循环以确保录入的初始金额,充值金额,乘车费用均不为负值;
2、应使用循环以确保录入卡号位数的正确性;
3、由于有从键盘录入字符环节,则应防止缓冲区中回车符的误入而影响程序;
4、由于程序信息没有用文件进行保存,因此每次程序运行都要进行初始信息的录入。
六测试结果
1、录入卡号及初始金额;
2.、输入用户卡号录入乘车明细并对其进行扣费处理;
3、输入卡号并进行充值;
4、输入卡号进行相关信息的查询。
七用户使用说明
1、该程序可在VC环境中运行;
2、程序开始运行后,会以菜单的方式展开,用户可通过由键盘输入相应的数字进入需要的功能系统;
3、本程序只允许位数为十位的卡号;
八课程设计总结
程序使用结构体组,函数调用,多种循环以及选择结构基本完成设计要求。