C语言课程设计报告 饭卡管理程序

上传人:r****d 文档编号:79603850 上传时间:2022-04-24 格式:DOCX 页数:37 大小:316.29KB
返回 下载 相关 举报
C语言课程设计报告 饭卡管理程序_第1页
第1页 / 共37页
C语言课程设计报告 饭卡管理程序_第2页
第2页 / 共37页
C语言课程设计报告 饭卡管理程序_第3页
第3页 / 共37页
点击查看更多>>
资源描述
C语言课程设计报告饭卡管理程序完成日期:2009年12月【题目描述】该程序为饭卡管理程序,具有下列功能:(1) 录入某位持卡人的基本信息。教师:职工号、姓名、院系、金额;学生:学号、姓名、院系、金额;随机分配一个密码,分配一个卡号。(2) 给定卡号,显示此卡的基本信息;(3) 给定卡号,修改密码或查询密码;(4) 给定卡号,修改持卡人信息;(5) 给定卡号,查询余额或加钱; (6) 给定卡号,输入密码后,若余额充足即可消费;(7) 挂失处理;给定卡号或职工号(学号)等信息进行挂失处理,挂失处理后能查到该卡号,但显示“该卡已挂失”信息。(8) 删除处理;给定卡号或职工号(学号),对该卡进行删除处理;删除处理后无法找到该卡号。(9) 提供一些统计各类信息的功能。可统计当前教师、学生持卡人数;当前已挂失卡卡号;当前卡中余额少于10元的卡号,并显示其余额。【用户文档】l 应用程序功能详细说明1、进入操作菜单。按照菜单提示选择需要的操作。选择09号,若超出该范围,系统将提示警告信息,且切回到主菜单。若需退出系统选择0。每项操作执行完毕,将出现是否返回原菜单的提示信息,选择是将返回主菜单,选择否将返回该项操作的选择菜单。2、录入持卡人信息:该程序可分别管理教师学生各100人。持卡人分教师卡和学生两种,进入录入界面后,用户按菜单选择卡的类别。之后按照程序提示的文本格式及长度要求,按顺序依次输入教师号(学生号)、姓名、院系及金额。超出允许的范围,系统可能出现运行错误。3、 查询饭卡基本信息:进入查询界面,输入卡号,即可显示持卡人的卡号、姓名、教师号(学生号)、院系、卡上金额。若输入卡号不存在,系统将提示卡号错误。4、 修改或查询密码:进入密码编辑界面,输入卡号,将会显示出命令选择菜单。根据提示选择希望进行的操作。密码修改成功后,系统会给出密码修改成功信息。若输入卡号不存在,系统将提示卡号错误。5、 修改个人信息:进入修改界面输入卡号,系统将逐项询问是否要修改该项信息,选择是即可修改,选择否,将跳转到下一条信息修改。修改信息的格式及长度要求与录入相同。若输入卡号不存在,系统将提示卡号错误。6、 饭卡加钱或查询余额:进入余额操作界面,输入卡号,根据屏幕提示选择需要的操作。加钱成功后系统会显示成功操作信息。若输入卡号不存在,系统将提示卡号错误。7、 处理消费信息:进入消费界面,按照提示输入卡号以及消费金额,系统会提示输入密码。若密码正确,则显示消费成功信息,并从账户中扣除相应余额,若密码错误,系统将警告密码错误,并返回主菜单。若消费金额超出余额范围,则系统提示余额不足信息,消费不成功并返回主菜单。若输入卡号不存在,系统将提示卡号错误。8、 挂失:进入挂失界面,根据系统提示选择输入卡号或输入教师号(学生号)进行操作。若正确输入相应卡号系统将确认是否挂失,选择是则挂失成功。挂失后若进行以上各项操作以及删除操作,系统均将提示已挂失信息,并无法进行操作。若输入卡号不存在,系统将提示卡号错误。9、 删除:进入删除界面,根据菜单提示选择输入卡号还是教师号(学生号),输入相应号码,系统将询问是否要删除该号码。选择是,则提示该卡删除成功,选择否,将返回主菜单。若输入的号码不存在,系统将提示号码错误并返回主菜单。删除后,该卡在系统中将不能被查出。10、 统计其他信息:进入统计界面,根据菜单选择需要进行哪项统计。选择1,将统计出当前教师及学生的持卡人数;选择2,将统计出当前所有挂失卡卡号;选择3,将统计出当前卡中余额不足10元的卡号及相应余额。l 应用程序运行环境的要求或Win-tc环境下均可运行。l 应用程序的安装与启动方法将程序源代码置入或Win-tc中,运行程序。或直接双击运行.exe格式的可执行文件运行该程序。l 程序的界面、交互方式和操作方法以下是程序运行后的主菜单操作界面。按照系统的询问,选择需要的操作。程序运行过程中输入命令完毕需键入回车键确认。l 输入数据类型、格式和内容限制教师及学生的个人信息属于结构体型数据;菜单选择项:整型数据,只可输入系统提供的选项代号;确认选项:字符型数据,大小写均可,只可输入Y或N;教师号(学生号):整型数据,只可输入介于1000至9999间的整型数据;姓名:字符型一维数组,姓氏与名字之间用空格隔开,少于20个字符;院系:字符型一维数组,院与系之间可用空格隔开,少于50个字符;金额:单精度实型数据,精确到分,可输入介于至间的数据;卡号、密码:整型数据,介于1000至9999之间随机产生。l 应用程序运行中,用户需要使用的交互命令名称、功能和格式的详细解决和示例1) 数字选择交互命令。以菜单为例,在操作界面中选下需要的操作所对应的数字,按回车键,即可进入相应的操作界面。2) Y、N选择交互命令。 当系统询问否是,选择Y,键入回车即为是,选择N键入回车即为否。如上图,选择Y回车,即返回主菜单;选择N回车即不返回主菜单,继续执行该项操作。【技术文档】l 程序整体结构以及各模块功能描述程序整体分为10个模块。分别为:1) 菜单模块函数原型:void displayMenu();函数功能:显示并输出主菜单;无返回值。2) 注册信息模块函数原型:void registing(tea T,stu S);函数功能:输入持卡人基本信息;无返回值。i持卡人身份选项,用于选择持卡人身份;x用于记录程序中中的字符量。3) 查询模块函数原型:void searchInfo(tea T,stu S);函数功能:查询持卡人基本信息;无返回值。number卡号,用于输入卡号并在程序中查找该卡号;flag用于判断该函数操作是否完毕; i教师循环控制变量; j学生循环控制变量。4) 密码操作模块函数原型:void editpassword(tea T,stu S);函数功能:查询或修改密码;无返回值。c功能选项,用于选择修改密码还是查询密码; number卡号,用于输入卡号并在程序中查找该卡号; flag用于判断该函数操作是否完毕; i教师循环控制变量; j学生循环控制变量。5) 信息修改模块函数原型:void editinfo(tea T,stu S);函数功能:修改持卡人个人信息;无返回值。number卡号,用于输入卡号并在程序中查找该卡号;flag用于判断该函数操作是否完毕; i教师循环控制变量; j学生循环控制变量;decide用于确定是否进行该项操作。6) 余额操作模块函数原型:void editmoney(tea T,stu S);函数功能:饭卡加钱或查询余额;无返回值。c功能选项,用于选择加钱还是查询余额; number卡号,用于输入卡号并在程序中查找该卡号; flag用于判断该函数操作是否完毕; i教师循环控制变量; j学生循环控制变量; money用于记录函数中要操作的钱数。7) 消费模块函数原型:void editmealinfo(tea T,stu S);函数功能:处理消费信息;无返回值。number卡号,用于输入卡号并在程序中查找该卡号; money金额,用于输入需要消费的金额;flag用于判断该函数操作是否完毕; i教师循环控制变量; j学生循环控制变量;password函数中用于记录密码。8) 挂失模块函数原型:void reportloss(tea T,stu S);函数功能:账户挂失注册;无返回值。c功能选项,用于选择输入卡号还是教师号(学生号);i教师循环控制变量;j学生循环控制变量; number号码,用于输入号码并在程序中查找是卡号还是教师号(学生号);decide确认选择,用于确认是否确实要挂失;flag用于判断该函数操作是否完毕。9) 删除模块函数原型:void deleterecord(tea T,stu S);函数功能:删除账户;无返回值。c功能选项,用于选择输入卡号还是教师号(学生号); number号码,用于输入号码并在程序中查找是卡号还是教师号(学生号);tn教师卡数,用于程序中记录教师卡数量;sn学生卡数,用于程序中记录学生卡数量;i教师循环控制变量;j学生循环控制变量;k循环控制变量,用于使教师及学生卡号注销的循环中;decide确认选择,用于确认是否确实要挂失;flag用于判断该函数操作是否完毕。10) 统计模块函数原型:void countotherinfo(tea T,stu S);函数功能:统计持卡人数、统计挂失卡信息、统计余额不足卡信息;无返回值。i教师循环控制变量;j学生循环控制变量;c功能选项,用于程序中选择想要统计的内容。l 各模块的主要算法和数据结构解释1)主函数结束开始执行对应函数choice=19清屏return0choice!=0 N Y N Y开始2) 菜单模块输出主菜单结束 3)信息注册模块结束输入学生信息输入教师信息开始i=2i=1 N Y N Y 4)信息查询模块flag=0结束提示号码错误j+输出学生信息number=scnumberjsn0jflag=0i+number=tcnumberitn开始0i N Y N 输出教师信息 Y N Y N Y N Y N Y5)密码操作模块结束输出号码错误输出密码输入新密码开始c=2flag=0c=1 N Y N Y N Y 6)信息修改模块flag=0结束提示号码错误j+输入学生信息number=scnumberjsn0jflag=0i+number=tcnumberitn开始0i N Y N 输入教师信息 Y N Y N Y N Y N Y 7)余额操作模块c=1 开始 Nc=2输入卡号 Y Y Y 输入卡号 输出加钱金额 输出卡中余额flag=0结束输出号码错误 N Y 8)消费模块flag=0结束提示号码错误j+输入消费金额及密码number=scnumberjsn0jflag=0i+number=tcnumberitn开始0i N Y N 输入消费金额及密码 Y N Y N Y N Y N Y 9)挂失模块结束loss=1输入学生号或教师号c=2输入卡号loss=1开始c=1 N Y N Y 10)统计模块输出余额不足卡卡号及余额卡号结束输出挂失卡卡号输出教师卡及学生卡数量开始c=3c=2c=1 N Y N Y N Yl 选用的测试数据及测试结果信息注册测试结果如下:信息查询测试结果如下:密码修改测试结果如下:密码查询测试结果如下:信息修改测试结果如下:加钱测试结果如下:查询余额测试结果如下:消费测试结果如下:挂失测试结果如下:删除测试结果如下:输入号码错误测试结果如下:挂失后查询基本信息测试结果如下:l 程序运行环境以及有关信息该程序在windows XP操作系统中运行成功,在此环境下运行或Win-tc写入源代码均可。或直接运行.exe格式的可执行文件。l 程序源代码清单#include /*I/O函数*/#include /*字符串函数*/#include /*其它说明*/#include /*屏幕操作函数*/int sn=0; /*学生卡人数初始化*/int tn=0; /*教师卡人数初始化*/typedef struct student /*定义学生卡数据结构*/ int snumber; /*学号*/ int scnumber; /*学生卡号*/ char sname20; /*学生姓名数组*/ char scollege50; /*学生院系数组*/ float smoney; /*学生卡余额*/ int spassword; /*学生卡密码*/ int sloss; /*学生卡挂失变量*/stu;typedef struct teacher /*定义教师卡数据结构*/ int tnumber; /*教师号*/ int tcnumber; /*教师卡号*/ char tname20; /*教师姓名数组*/ char tcollege50; /*教师院系数组*/ float tmoney; /*教师卡余额*/ int tpassword; /*教师卡密码*/ int tloss; /*教师卡挂失变量*/tea; void displayMenu(void); /*列菜单函数*/void registing(tea T,stu S); /*注册函数*/void searchInfo(tea T,stu S); /*信息查找函数*/void editpassword(tea T,stu S); /*密码修改或查询函数*/void editinfo(tea T,stu S); /*信息修改函数*/void editmoney(tea T,stu S); /*加钱或查询余额函数*/void editmealinfo(tea T,stu S); /*就餐信息处理函数*/void reportloss(tea T,stu S); /*挂失函数*/ void deleterecord(tea T,stu S); /*账户删除函数*/void countotherinfo(tea T,stu S); /*统计函数*/*主函数*/main() stu S100; /*学生结构体数组*/ tea T100; /*教师结构体数组*/ int choice; char x; randomize(); /*初始化随机数发生器*/ displayMenu(); /*显示菜单*/ scanf(%d,&choice); /*输入函数选择*/ while(choice!=0) switch(choice) case 1: do registing(T,S); /*信息注册*/ printf(Do you want to return to the menu?(Y or N):); getchar(); /*输入是否返回主菜单*/ scanf(%c,&x); while(x=N|x=n); break; case 2: do searchInfo(T,S); /*信息查找*/ printf(Do you want to return to the menu?(Y or N):); getchar(); scanf(%c,&x); while(x=N|x=n); break; case 3: do editpassword(T,S); /*密码修改或查询*/ printf(Do you want to return to the menu?(Y or N):); getchar(); scanf(%c,&x); while(x=N|x=n); break; case 4: do editinfo(T,S); /*信息修改*/ printf(Do you want to return to the menu?(Y or N):); getchar(); scanf(%c,&x); while(x=N|x=n); break; case 5: do editmoney(T,S); /*饭卡加钱或查询余额*/ printf(Do you want to return to the menu?(Y or N):); getchar(); scanf(%c,&x); while(x=N|x=n); break; case 6: do editmealinfo(T,S); /*处理就餐信息*/ printf(Do you want to return to the menu?(Y or N):); getchar(); scanf(%c,&x); while(x=N|x=n); break; case 7: do reportloss(T,S); /*挂失*/ printf(Do you want to return to the menu?(Y or N):); getchar(); scanf(%c,&x); while(x=N|x=n); break; case 8: do deleterecord(T,S); /*删除*/ printf(Do you want to return to the menu?(Y or N):); getchar(); scanf(%c,&x); while(x=N|x=n); break; case 9: do countotherinfo(T,S); /*统计*/ printf(Do you want to return to the menu?(Y or N):); getchar(); scanf(%c,&x); while(x=N|x=n); break; default : printf(warning:wrong choice!Please enter the right choice.n); /*提示错误信息*/ break; clrscr(); /*清屏*/ displayMenu(); scanf(%d,&choice); return 0;/*主菜单*/void displayMenu() printf(n=MENU=n); printf(Input personal information.1n); /*输入个人信息*/ printf(The basic information of the card.2n); /*饭卡基本信息*/ printf(Change or inquire the password.3n); /*修改或查询密码*/ printf(Change personal information.4n); /*修改个人信息*/ printf(Inquire balance or add money.5n); /*查询余额或加钱*/ printf(Manage the dining information.6n); /*处理就餐信息*/ printf(Report the loss of the card.7n); /*挂失*/ printf(Delate process.8n); /*删除*/ printf(Count other information.9n); /*统计其他信息*/ printf(Exit.0n); /*退出*/ printf(=n); printf(Please choose the service you want:(09); /*请选择需要的服务*/*账户注册*/void registing(tea T,stu S) int i; /*身份变量*/ char x; /*姓名*/ clrscr(); /*清屏*/ printf(=system of registing=n); printf(Please choose your positionn); printf(1-teachern); printf(2-studentn); printf(Please input your choice (1 or 2):); scanf(%d,&i); if(i=1) /*选择教师*/ printf(Please input your teacher number(4 numbers):); scanf(%d,&Ttn.tnumber); /*输入教师号*/ printf(Please input name(less than 20 letters):(Wang Ming); scanf(%c,&x); /*输入姓名*/ gets(Ttn.tname); printf(Please input college information(less than 50 integers):(mechanic electricity)n); gets(Ttn.tcollege); /*输入院系*/ printf(Please input the money(0.005000.00):); scanf(%f,&Ttn.tmoney); /*输入金额*/ Ttn.tcnumber=random(8999)+1000; /*随机分配卡号*/ printf(The card number is:%dn,Ttn.tcnumber); /*输出卡号*/ Ttn.tpassword=random(8999)+1000; /*随机分配密码*/ printf(The password is:%dn,Ttn.tpassword); /*输出密码*/ Ttn.tloss=0; /*初始化挂失变量*/ tn+; /*教师卡数累加*/ else if(i=2) /*选择学生*/printf(Please input your school number(less than 4 numbers):);scanf(%d,&Ssn.snumber); /*输入学生号*/ printf(Please input name(less than 20 integers):(Wang Ming); scanf(%c,&x); /*输入姓名*/ gets(Ssn.sname); printf(Please input college information(less than 50 integers):(mechanic electricity)n); gets(Ssn.scollege); /*输入院系*/ printf(Please input the money(0.005000.00):); scanf(%f,&Ssn.smoney); /*输入金额*/ Ssn.scnumber=random(8999)+1000; /*随机分配卡号*/ printf(The card number is:%dn,Ssn.scnumber); /*输出卡号*/ Ssn.spassword=random(8999)+1000; /*随机分配密码*/ printf(The password is:%dn,Ssn.spassword); /*输出密码*/ Ssn.sloss=0; /*初始化挂失变量*/ sn+; /*学生卡数累加*/ /*信息查找*/void searchInfo(tea T,stu S) int number,flag=0; /*number记录卡号、flag记录查找是否结束*/ int i,j; /*i为控制教师的循环变量、j为控制学生的循环变量*/ clrscr(); /*清屏*/ printf(=system of inquiring personal information=n); printf(Please enter your card number(4 numbers):); scanf(%d,&number); /*输入卡号*/ for(i=0;itn;i+) if(number=Ti.tcnumber) /*若为教师卡号*/ if(Ti.tloss=1) /*若该卡已挂失*/ printf(This card is registed loss!nYou must go to the office to restart it.n); flag=1; /*提示挂失信息*/ else printf(=information=n); /*输出教师基本信息*/ printf(CardNumber: %dn,Ti.tcnumber); printf(Name: %sn,Ti.tname); printf(Teacher number: %dn,Ti.tnumber); printf(College: %sn,Ti.tcollege); printf(Money: %4.2fn,Ti.tmoney); flag=1; break; if(flag=0) for(j=0;jsn;j+) /*若为学生卡号*/ if(number=Sj.scnumber) if(Sj.sloss=1) /*若该卡已挂失*/ printf(This card is registed loss!nYou must go to the office to restart it.n); flag=1; /*提示挂失信息*/ else printf(=information=n); /*输出学生基本信息*/ printf(CardNumber: %dn,Sj.scnumber); printf(Name: %sn,Sj.sname); printf(School number: %dn,Sj.snumber); printf(College: %sn,Sj.scollege); printf(Money: %4.2fn,Sj.smoney); flag=1; break; if(flag=0) /*若未找到该卡号*/ printf(=warning=n); /*提示卡号错误*/ printf(This is a wrong number.n); /*密码查询或修改*/void editpassword(tea T,stu S) int number,flag=0; /*number记录卡号、flag记录挂失程序是否完成*/ int i,j,c; /*i为控制教师的循环变量、j为控制学生的循环变量、c为命令选择变量*/ clrscr(); /*清屏*/ printf(=system of changing/inquiring password=n); printf(Please enter the card number:); scanf(%d,&number); /*输入卡号*/ printf(1-change the passwordn); /*修改密码*/ printf(2-inquire the passwordn); /*查询密码*/ printf(Please choose the service you want:(1 or 2); scanf(%d,&c); /*选择需要的操作*/ if(c=1) /*选择修改密码*/ for(i=0;itn;i+) if(number=Ti.tcnumber) /*若为教师卡号*/ if(Ti.tloss=1) /*若该卡已挂失*/ printf(This card is registed loss!nYou must go to the office to restart it.n); flag=1; /*提示挂失信息*/ else /*若未挂失*/ printf(Please enter your new password:(00009999); scanf(%d,&Ti.tpassword); /*输入新密码*/ printf(The password is changed successfully.n); /*提示密码修改
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!