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



《C语言课程设计报告 饭卡管理程序》由会员分享,可在线阅读,更多相关《C语言课程设计报告 饭卡管理程序(37页珍藏版)》请在装配图网上搜索。
1、 C语言课程设计报告 饭卡管理程序 完成日期:2009年12月 【题目描述】 该程序为饭卡管理程序,具有下列功能: (1) 录入某位持卡人的基本信息。教师:职工号、姓名、院系、金额;学生:学号、姓名、院系、金额;随机分配一个密码,分配一个卡号。 (2) 给定卡号,显示此卡的基本信息; (3) 给定卡号,修改密码或查询密码; (4) 给定卡号,修改持卡人信息; (5) 给定卡号,查询余额或加钱; (6) 给定卡号,输入密码后,若余额充足即可消费; (7) 挂失处理;给定卡
2、号或职工号(学号)等信息进行挂失处理,挂失处理后能查到该卡号,但显示“该卡已挂失”信息。 (8) 删除处理;给定卡号或职工号(学号),对该卡进行删除处理;删除处理后无法找到该卡号。 (9) 提供一些统计各类信息的功能。可统计当前教师、学生持卡人数;当前已挂失卡卡号;当前卡中余额少于10元的卡号,并显示其余额。 【用户文档】 l 应用程序功能详细说明 1、进入操作菜单。按照菜单提示选择需要的操作。选择0~9号,若超出该范围,系统将提示警告信息,且切回到主菜单。若需退出系统选择0。每项操作执行完毕,将出现是否返回原菜单的提示信息,选择是将返回主菜单,选择否将返回该项操作的选择菜单。 2
3、、录入持卡人信息:该程序可分别管理教师学生各100人。持卡人分教师卡和学生两种,进入录入界面后,用户按菜单选择卡的类别。之后按照程序提示的文本格式及长度要求,按顺序依次输入教师号(学生号)、姓名、院系及金额。超出允许的范围,系统可能出现运行错误。 3、 查询饭卡基本信息:进入查询界面,输入卡号,即可显示持卡人的卡号、姓名、教师号(学生号)、院系、卡上金额。若输入卡号不存在,系统将提示卡号错误。 4、 修改或查询密码:进入密码编辑界面,输入卡号,将会显示出命令选择菜单。根据提示选择希望进行的操作。密码修改成功后,系统会给出密码修改成功信息。若输入卡号不存在,系统将提示卡号错误。 5、 修改
4、个人信息:进入修改界面输入卡号,系统将逐项询问是否要修改该项信息,选择是即可修改,选择否,将跳转到下一条信息修改。修改信息的格式及长度要求与录入相同。若输入卡号不存在,系统将提示卡号错误。 6、 饭卡加钱或查询余额:进入余额操作界面,输入卡号,根据屏幕提示选择需要的操作。加钱成功后系统会显示成功操作信息。若输入卡号不存在,系统将提示卡号错误。 7、 处理消费信息:进入消费界面,按照提示输入卡号以及消费金额,系统会提示输入密码。若密码正确,则显示消费成功信息,并从账户中扣除相应余额,若密码错误,系统将警告密码错误,并返回主菜单。若消费金额超出余额范围,则系统提示余额不足信息,消费不成功并返回
5、主菜单。若输入卡号不存在,系统将提示卡号错误。 8、 挂失:进入挂失界面,根据系统提示选择输入卡号或输入教师号(学生号)进行操作。若正确输入相应卡号系统将确认是否挂失,选择是则挂失成功。挂失后若进行以上各项操作以及删除操作,系统均将提示已挂失信息,并无法进行操作。若输入卡号不存在,系统将提示卡号错误。 9、 删除:进入删除界面,根据菜单提示选择输入卡号还是教师号(学生号),输入相应号码,系统将询问是否要删除该号码。选择是,则提示该卡删除成功,选择否,将返回主菜单。若输入的号码不存在,系统将提示号码错误并返回主菜单。删除后,该卡在系统中将不能被查出。 10、 统计其他信息:进入统计界面,根
6、据菜单选择需要进行哪项统计。选择1,将统计出当前教师及学生的持卡人数;选择2,将统计出当前所有挂失卡卡号;选择3,将统计出当前卡中余额不足10元的卡号及相应余额。 l 应用程序运行环境的要求 或Win-tc环境下均可运行。 l 应用程序的安装与启动方法 将程序源代码置入或Win-tc中,运行程序。或直接双击运行.exe格式的可执行文件运行该程序。 l 程序的界面、交互方式和操作方法 以下是程序运行后的主菜单操作界面。按照系统的询问,选择需要的操作。程序运行过程中输入命令完毕需键入回车键确认。 l 输入数据类型、格式和内容限制 教师及学生的个人信息属于结构体型数据; 菜单选择项
7、:整型数据,只可输入系统提供的选项代号; 确认选项:字符型数据,大小写均可,只可输入Y或N; 教师号(学生号):整型数据,只可输入介于1000至9999间的整型数据; 姓名:字符型一维数组,姓氏与名字之间用空格隔开,少于20个字符; 院系:字符型一维数组,院与系之间可用空格隔开,少于50个字符; 金额:单精度实型数据,精确到分,可输入介于至间的数据; 卡号、密码:整型数据,介于1000至9999之间随机产生。 l 应用程序运行中,用户需要使用的交互命令名称、功能和格式的详细解决和示例 1) 数字选择交互命令。以菜单为例,在操作界面中选下需要的操作所对应的数字,按回车键,即可进入
8、相应的操作界面。 2) Y、N选择交互命令。 当系统询问否是,选择Y,键入回车即为是,选择N键入回车即为否。如上图,选择Y回车,即返回主菜单;选择N回车即不返回主菜单,继续执行该项操作。 【技术文档】 l 程序整体结构以及各模块功能描述 程序整体分为10个模块。分别为: 1) 菜单模块 函数原型:void displayMenu();函数功能:显示并输出主菜单;无返回值。 2) 注册信息模块 函数原型:void registing(tea T[],stu S[]);函数功能:输入持卡人基本信息;无返回值。 i——持卡人身份选项,用于选择持卡
9、人身份; x——用于记录程序中中的字符量。 3) 查询模块 函数原型:void searchInfo(tea T[],stu S[]);函数功能:查询持卡人基本信息;无返回值。 number——卡号,用于输入卡号并在程序中查找该卡号; flag—用于判断该函数—操作是否完毕; i——教师循环控制变量; j——学生循环控制变量。 4) 密码操作模块 函数原型:void editpassword(tea T[],stu S[]);函数功能:查询或修改密码;无返回值。 c——功能选项,用于选择修改密码还是查询密码; number——卡号
10、,用于输入卡号并在程序中查找该卡号; flag—用于判断该函数—操作是否完毕; i——教师循环控制变量; j——学生循环控制变量。 5) 信息修改模块 函数原型:void editinfo(tea T[],stu S[]);函数功能:修改持卡人个人信息;无返回值。 number——卡号,用于输入卡号并在程序中查找该卡号; flag—用于判断该函数—操作是否完毕; i——教师循环控制变量; j——学生循环控制变量; decide——用于确定是否进行该项操作。 6) 余额操作模块 函数原型:void e
11、ditmoney(tea T[],stu S[]);函数功能:饭卡加钱或查询余额;无返回值。 c——功能选项,用于选择加钱还是查询余额; number——卡号,用于输入卡号并在程序中查找该卡号; flag—用于判断该函数—操作是否完毕; i——教师循环控制变量; j——学生循环控制变量; money——用于记录函数中要操作的钱数。 7) 消费模块 函数原型:void editmealinfo(tea T[],stu S[]);函数功能:处理消费信息;无返回值。 number——
12、卡号,用于输入卡号并在程序中查找该卡号; money——金额,用于输入需要消费的金额; flag—用于判断该函数—操作是否完毕; i——教师循环控制变量; j——学生循环控制变量; password——函数中用于记录密码。 8) 挂失模块 函数原型:void reportloss(tea T[],stu S[]);函数功能:账户挂失注册;无返回值。 c——功能选项,用于选择输入卡号还是教师号(学生号); i——教师循环控制变量; j——学生循环控制变量; number——号码,用于输入号码并在程序中查找是卡号还是教师号(学生号); dec
13、ide——确认选择,用于确认是否确实要挂失; flag—用于判断该函数—操作是否完毕。 9) 删除模块 函数原型:void deleterecord(tea T[],stu S[]);函数功能:删除账户;无返回值。 c——功能选项,用于选择输入卡号还是教师号(学生号); number——号码,用于输入号码并在程序中查找是卡号还是教师号(学生号); tn——教师卡数,用于程序中记录教师卡数量; sn——学生卡数,用于程序中记录学生卡数量; i——教师循环控制变量; j——学生循环控制变量; k——循环控制变量,用于使教师及学生卡号注销的循环中; decid
14、e——确认选择,用于确认是否确实要挂失; flag—用于判断该函数—操作是否完毕。 10) 统计模块 函数原型:void countotherinfo(tea T[],stu S[]);函数功能:统计持卡人数、统计挂失卡信息、统计余额不足卡信息;无返回值。 i——教师循环控制变量; j——学生循环控制变量; c——功能选项,用于程序中选择想要统计的内容。 l 各模块的主要算法和数据结构解释 1)主函数 结束 开始 执行对应函数 choice=1~9 清屏 return0 choice!=0
15、 N Y N Y 开始 2) 菜单模块 输出主菜单 结束 3)信息注
16、册模块 结束 输入学生信息 输入教师信息 开始 i==2 i==1 N Y N Y
17、
4)信息查询模块
flag==0
结束
提示号码错误
j++
输出学生信息
number==scnumber
j 18、
N
Y
N
输出教师信息
Y
19、 N
Y
N
Y
N
Y
N
Y
20、
5)密码操作模块
结束
输出号码错误
输出密码
输入新密码
开始
c==2
flag==0
c==1
N
Y
N
21、 Y
N
Y
6)信息修改模块
flag==0
结束
提示号码错误
j++
输入学生信息
number==scnumber
j 22、0→j
flag==0
i++
number==tcnumber
i 23、
N
Y
N
Y
N
Y
24、 N
Y
7)余额操作模块
c==1
开始
N
c==2
输入卡号
Y
Y
25、 Y
输入卡号
输出加钱金额
输出卡中余额
flag==0
结束
输出号码错误
26、 N
Y
8)消费模块
flag==0
结束
提示号码错误
j++
输入消费金额及密码
number==scnumber
j 27、 N
Y
N
输入消费金额及密码
Y
N
Y
28、 N
Y
N
Y
N
Y
9)挂失模块
结束
loss=1
输入学生号或教师号
c==2
输入卡号
loss 29、=1
开始
c==1
N
Y
N
Y
10)统计模块
输出余额不足卡卡号及余额
卡号
结束
输出挂失卡
卡号
输出教师 30、卡及学生卡数量
开始
c==3
c==2
c==1
N
Y
N
Y 31、
N
Y
l 选用的测试数据及测试结果
信息注册测 32、试结果如下:
信息查询测试结果如下:
密码修改测试结果如下:
密码查询测试结果如下:
信息修改测试结果如下:
加钱测试结果如下:
查询余额测试结果如下:
消费测试结果如下:
挂失测试结果如下:
删除测试结果如下:
输入号码错误测试结果如下:
挂失后查询基本信息测试结果如下:
l 程序运行环境以及有关信息
该程序在windows XP操作系统中运行成功,在此环境下运行或Win-tc写入源代码均可。或直接运行.exe格式的可执行文件。
l 程序源代 33、码清单
#include 34、20]; /*学生姓名数组*/
char scollege[50]; /*学生院系数组*/
float smoney; /*学生卡余额*/
int spassword; /*学生卡密码*/
int sloss; /*学生卡挂失变量*/
}stu;
typedef struct teacher{ /*定义教师卡数据结构*/
int tnumber; /*教师号*/
int tcnumber; /*教师卡号*/
char tname[20]; /*教师姓名数组*/
char tcollege[50]; / 35、*教师院系数组*/
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 ed 36、itinfo(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[]); /*统计函数*/
/******主函数** 37、****/
main() {
stu S[100]; /*学生结构体数组*/
tea T[100]; /*教师结构体数组*/
int choice;
char x;
randomize(); /*初始化随机数发生器*/
displayMenu(); /*显示菜单*/
scanf("%d",&choice); /*输入函数选择*/
while(choice!=0){
switch(choice){
case 1: {
do{
38、 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;
}
ca 39、se 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;
40、 }
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');
41、 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== 42、'n');
break;
}
case 5: {
do{
editmoney(T,S); /*饭卡加钱或查询余额*/
printf("Do you want to return to the menu?(Y or N):");
getchar();
scanf("%c",&x);
43、 }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("% 44、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();
45、 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):");
ge 46、tchar();
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):"); 47、
getchar();
scanf("%c",&x);
}while(x=='N'||x=='n');
break;
}
default :
printf("warning:wrong choice!Please enter the right choice.\n"); /*提示错误信息*/
break;
}
48、 clrscr(); /*清屏*/
displayMenu();
scanf("%d",&choice);
}
return 0;
}
/******主菜单******/
void displayMenu(){
printf("\n====================MENU===================\n");
printf("Input personal information................1\n"); /*输入个人信息*/
printf("The bas 49、ic information of the card.........2\n"); /*饭卡基本信息*/
printf("Change or inquire the password............3\n"); /*修改或查询密码*/
printf("Change personal information...............4\n"); /*修改个人信息*/
printf("Inquire balance or add money..............5\n"); /*查询余额或加钱*/
printf("Manage the di 50、ning information.............6\n"); /*处理就餐信息*/
printf("Report the loss of the card...............7\n"); /*挂失*/
printf("Delate process............................8\n"); /*删除*/
printf("Count other information...................9\n"); /*统计其他信息*/
printf("Exit........................ 51、..............0\n"); /*退出*/
printf("===========================================\n");
printf("Please choose the service you want:(0~9)"); /*请选择需要的服务*/
}
/********账户注册********/
void registing(tea T[],stu S[]){
int i; /*身份变量*/
char x; /*姓名*/
clrscr(); /*清屏*/
printf("==== 52、======system of registing==========\n");
printf("Please choose your position\n");
printf("1--teacher\n");
printf("2--student\n");
printf("Please input your choice (1 or 2):");
scanf("%d",&i);
if(i==1){ /*选择教师*/
printf("Please input your teacher number(4 numbers):");
sca 53、nf("%d",&T[tn].tnumber); /*输入教师号*/
printf("Please input name(less than 20 letters):(Wang Ming)");
scanf("%c",&x); /*输入姓名*/
gets(T[tn].tname);
printf("Please input college information(less than 50 integers):(mechanic electricity)\n");
gets(T[tn].tcollege); /*输入院系*/
54、 printf("Please input the money(0.00~5000.00):");
scanf("%f",&T[tn].tmoney); /*输入金额*/
T[tn].tcnumber=random(8999)+1000; /*随机分配卡号*/
printf("The card number is:%d\n",T[tn].tcnumber); /*输出卡号*/
T[tn].tpassword=random(8999)+1000; /*随机分配密码*/
printf("The password is:%d\n",T 55、[tn].tpassword); /*输出密码*/
T[tn].tloss=0; /*初始化挂失变量*/
tn++; /*教师卡数累加*/
}
else if(i==2){ /*选择学生*/
printf("Please input your school number(less than 4 numbers):");
scanf("%d",&S[sn].snumber); /*输入学生号*/
printf("Please input name(less than 20 integers):(Wang Ming)");
56、 scanf("%c",&x); /*输入姓名*/
gets(S[sn].sname);
printf("Please input college information(less than 50 integers):(mechanic electricity)\n");
gets(S[sn].scollege); /*输入院系*/
printf("Please input the money(0.00~5000.00):");
scanf("%f",&S[sn].smoney); /*输入金额*/
S[sn].s 57、cnumber=random(8999)+1000; /*随机分配卡号*/
printf("The card number is:%d\n",S[sn].scnumber); /*输出卡号*/
S[sn].spassword=random(8999)+1000; /*随机分配密码*/
printf("The password is:%d\n",S[sn].spassword); /*输出密码*/
S[sn].sloss=0; /*初始化挂失变量*/
sn++; /*学生卡数累加*/
}
}
/******* 58、*信息查找********/
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):");
59、 scanf("%d",&number); /*输入卡号*/
for(i=0;i 60、*提示挂失信息*/
}
else{
printf("========information========\n"); /*输出教师基本信息*/
printf("CardNumber: %d\n",T[i].tcnumber);
printf("Name: %s\n",T[i].tname);
printf("Teacher number: %d\n",T[i].tnumber);
printf("College: %s\n",T[i].tcollege);
61、 printf("Money: %4.2f\n",T[i].tmoney);
flag=1;
break;
}
}
}
if(flag==0){
for(j=0;j 62、e office to restart it.\n");
flag=1; /*提示挂失信息*/
}
else{
printf("========information========\n"); /*输出学生基本信息*/
printf("CardNumber: %d\n",S[j].scnumber);
printf("Name: %s\n",S[j].sname);
63、 printf("School number: %d\n",S[j].snumber);
printf("College: %s\n",S[j].scollege);
printf("Money: %4.2f\n",S[j].smoney);
flag=1;
break;
}
}
}
}
if(flag==0){ /*若未找到该卡号*/
printf("========warning========\n"); /*提示 64、卡号错误*/
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====== 65、==\n");
printf("Please enter the card number:");
scanf("%d",&number); /*输入卡号*/
printf("1--change the password\n"); /*修改密码*/
printf("2--inquire the password\n"); /*查询密码*/
printf("Please choose the service you want:(1 or 2)");
scanf("%d",&c); /*选择需要的操作*/
if(c==1){ /*选择修改 66、密码*/
for(i=0;i
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。