1、INFORMATION;main()定义变量及对其进行初始化;利用do-while循环执行菜单;将调用函数插入菜单中;由键盘录入来确定循环是否继续;2、被调用函数模块int InputInformation(INFORMATION inf)/*函数功能:基本信息包括卡号(只允许录入十位卡号)和初始金额的录入函数参数:inf为结构体组函数返回值:录入卡号个数*/定义变量及其初始化;利用do-while进行基本信息即卡号(只允许录入十位)及初始金额的录入,并记录每位卡号所对应的下标值;由键盘录入的字符来确定是否停止对该函数的调用;返回录入的卡号个数; int ProcessingService(I
2、NFORMATION inf,int i,float *p)乘车明细输入以及对帐户进行扣费处理,若余额不足则进行提示inf为结构体组,i为所输卡号对应下标值,*p为账户余额地址乘车次数在主函数中输入卡号并调用查找函数找到该卡号所对应下标值传值给该函数;记录该卡号的扣费明细;当卡内余额不足时不予以扣费并提示尽快充值;void Recharge(INFORMATION infN,int n,float *p)输入用户卡号及充值金额进行充值inf为结构体组,n为录入卡号总数,*p为账户余额地址无在主函数中输入卡号并调用函数找到该卡号对应余额地址传值给该函数;由键盘录入用户想要充值的金额并进行充值;v
3、oid InquiryBusiness(INFORMATION inf,int n,int m)性息查询,用户输入卡号,程序打印相关信息inf为结构体组,n为录入卡号总数,m为乘车次数输入卡号并调用查找函数找到该卡号所对应下标值;打印出有关该卡号的信息;int Linsearch(INFORMATION infN,char x,int n)运用线性查找法查找用户输入的卡号inf为结构体组,x为用户输入的卡号,n为录入卡号总数若找到则返回其下标值,找不到则返回-1输入卡号并调用查找函数找到该卡号所对应下标值并返回给调用函数;int InputInformationTwo(INFORMATION
4、inf,int n)第二次及其以后再次录入基本信息inf为结构体组, n为录入卡号总数整个程序的流程图如下所示: order不等于5四 详细设计/*主题: 功能:基本信息包括卡号,初始金额的录入;输入卡号进行乘车扣费,充值,乘车明细答应 编程语言:C#include stdlib.hstring.h#define N 100int InputInformation(INFORMATION inf);int InputInformationTwo(INFORMATION inf,int n);void Recharge(INFORMATION inf,int n,float *p);int Li
5、nsearch(INFORMATION infN,char x,int n);void InquiryBusiness(INFORMATION inf,int n,int m);int ProcessingService(INFORMATION inf,int i,float *p);int main() int order; int n; /*录入卡号的个数*/ int i; /*用户输入查找卡号的返回下标值*/ int j; /*某卡号记载的乘车明细的下标值*/ char x11; INFORMATION infN; printf(Enter 1 to input the basic in
6、formationn);Enter 2 to enter to processing servicenEnter 3 to rechargenEnter 4 to inquiry businessnEnter 5 to stop the programn do printf(Input the number which you choosen scanf(%d,&order); while(order!=1&order!=2&=3&=4&=5); if(order=1) n=InputInformation(inf);There are %d cardsn,n); else if(order=
7、2|order=3|order=4) do printf(Please choose 1 and input the basic informationn scanf( while(order!=1); else exit(0); n=InputInformationTwo(inf,n); if(order=2)input your card numbern%s,x); i=Linsearch(inf,x,n); while(i=-1); j=ProcessingService(inf,i,&infi.balance);/*j为乘车次数*/ if(order=3) while(i=-1); R
8、echarge(inf,n,& if(order=4) InquiryBusiness(inf,n,j); return 0;/*输入用户卡号及充值金额进行充值,无返回值*/void Recharge(INFORMATION infN,int n,float *p) float money;your cards balance is %.2fn,*p);How much money do you want to recharge?n scanf(%fmoney); while(money0infi.cardnumberj9) digit+; else ; while(digit!=10);In
9、put initial moneyn while(infi.balanceDo you want to continue?enter yis continue,and nis stopn %creply); while(reply=|reply=Y a=i+1;return a;/*运用线性查找法查找用户输入的卡号,若找到则返回其下标值,找不到则返回-1*/int Linsearch(INFORMATION infN,char x,int n) for(i=0;in;i+) if(strcmp(x,infi.cardnumber)=0) return i; else; return -1;/*
10、性息查询,用户输入卡号,程序打印相关信息,无返回值*/void InquiryBusiness(INFORMATION inf,int n,int m) i=Linsearch(inf,x,n); while(i=-1);the information is :the card number is %snthe balance is %.2fn,infi.balance);j=m;the date is %ldn,infi.datej);the bus number is %dn,infi.busnumberj);the expenses is %.2fn,infi.expensesj);/*
11、乘车明细输入以及对帐户进行扣费处理,若余额不足则进行提示,返回值为乘车次数*/int ProcessingService(INFORMATION inf,int i,float *p) int j=-1; int flag=1; j+;Input the date,bus number and expensesn%ldinfi.datej);infi.busnumberj);infi.expensesj); while(infi.datej=0|infi.busnumberj=0|infi.expensesj=0); *p=*p-infi.expensesj; if(*p ; while(di
12、git!五 调试分析1、应使用循环以确保录入的初始金额,充值金额,乘车费用均不为负值;2、应使用循环以确保录入卡号位数的正确性;3、由于有从键盘录入字符环节,则应防止缓冲区中回车符的误入而影响程序;4、由于程序信息没有用文件进行保存,因此每次程序运行都要进行初始信息的录入。六 测试结果1、录入卡号及初始金额;2.、输入用户卡号录入乘车明细并对其进行扣费处理;3、输入卡号并进行充值;4、输入卡号进行相关信息的查询。七 用户使用说明1、该程序可在VC环境中运行;2、程序开始运行后,会以菜单的方式展开,用户可通过由键盘输入相应的数字进入需要的功能系统;3、本程序只允许位数为十位的卡号;八 课程设计总结程序使用结构体组,函数调用,多种循环以及选择结构基本完成设计要求。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1