C语言课程设计学生证管理程序.docx
- 文档编号:9928499
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:30
- 大小:231.02KB
C语言课程设计学生证管理程序.docx
《C语言课程设计学生证管理程序.docx》由会员分享,可在线阅读,更多相关《C语言课程设计学生证管理程序.docx(30页珍藏版)》请在冰点文库上搜索。
C语言课程设计学生证管理程序
报告题目:
学生证管理程序
题目要求
【功能要求】
该程序应该具有下列功能:
(1)录入某位学生的学生证信息。
学生证应该包含的信息参见自己的学生证。
(2)给定学号,显示某位学生的学生证信息。
(3)给定某个班级的班号,显示该班所有学生的学生证信息。
(4)给定某位学生的学号,修改该学生的学生证信息。
(5)给定某位学生的学号,删除该学生的学生证信息。
(6)提供一些统计各类信息的功能。
【输入要求】
应用程序运行后,在屏幕上显示一个菜单。
用户可以根据需求,选定相应的操作项目。
进入某个操作项目后,根据应用程序的提示信息,从键盘输入相应信息。
【输出要求】
(1)应用程序运行后,要在屏幕上显示一个菜单。
(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
二、需求分析
学生证信息采用文件存储,因而要提供文件的输入/输出操作;要根据给定的学号或班号进行相应的操作,要提供查找操作;显示信息要提供显示操作;修改和删除要提供文件的修改和删除操作;实现一些统计各类信息的功能要提供统计操作;另外,还要提供键盘式选择菜单以实现功能选择。
三、总体设计
整个管理程序被设计为数据输入模块、数据查找模块、数据修改模块、数据删除模块和数据统计模块。
如图所示:
四、详细设计
1.主函数
主函数一般设计得比较简洁,只提供输入、处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
【流程图】
【程序】
intmain()
{
intn;
Re_file();//读学生证信息文件
n=1;
while(n)
{
system("cls");
printf("\n\n");
printf("\t\t**********WelcometoStudentcardSystem**********");
printf("\n\n\n");
printf("\t\t\t┌──────主菜单──────┐\n");
printf("\t\t\t││\n");
printf("\t\t\t│1.录入学生证信息│\n");
printf("\t\t\t│2.查找学生证信息│\n");
printf("\t\t\t│3.修改学生证信息│\n");
printf("\t\t\t│4.删除学生证信息│\n");
printf("\t\t\t│5.执行统计功能│\n");
printf("\t\t\t│6.退出│\n");
printf("\t\t\t││\n");
printf("\t\t\t└───────────────┘\n");
printf("\n\n\t\t\t请输入您所需相应操作前的数字:
");
scanf("%d",&n);
printf("\n\n");
switch(n)
{case1:
Append();Display1();break;
case2:
Query();break;
case3:
Modify();Display2();break;
case4:
Delete();Display3();break;
case5:
Stat();break;
case6:
exit(0);
}
printf("\n\n\n\t\t\t请按任意键继续!
");
getch();
}
Wr_file();//写文件
return0;
}
2.各功能模块设计
(1)数据读入模块
【数据结构】
structStudentCard//学生证结构体
{
charname[10];
intsex;
charstuNo[10];//学号
intclassNo;//班号
}StuCard[N];
注意:
StuCard[N]中的N为学生人数,程序中采用宏定义的方式,可以随时在源程序宏定义中修改。
本程序中宏定义为:
#defineN10。
【程序】
/************************数据读入模块**********************/
voidRe_file()
{
inti;
FILE*fp;
fp=fopen("file1.txt","r");
i=0;
while(fscanf(fp,"%s%d%s%d",StuCard[i].name,&StuCard[i].sex,StuCard[i].stuNo,&StuCard[i].classNo)!
=EOF)
i++;
fclose(fp);
}
(2)增加模块
【需求分析】
该模块的功能是增加新的学生的学生证信息,用户从键盘出入并逐条写到原来的输入文件中。
【程序】
/************************增加模块**********************/
voidAppend()
{intQ;
system("cls");
printf("\n\n\n");
printf("\t\t\t***********************\n");
printf("\t\t\t**录入学生证信息**\n");
printf("\t\t\t***********************\n");
printf("\n\n\n");
printf("\t\t\t请输入相关信息:
\n\n");
printf("\t\t\t\t\t姓名:
");
scanf("%s",StuCard[10].name);
printf("\n\t\t\t\t\t性别:
");
scanf("%d",&StuCard[10].sex);
printf("\n\t\t\t\t\t学号:
");
scanf("%s",StuCard[10].stuNo);
printf("\n\t\t\t\t\t班号:
");
scanf("%d",&StuCard[10].classNo);
printf("\n\n");
Q=N+1;
system("cls");
printf("\n\n\n");
printf("\t\t\t添加成功!
");
}
(3)查询模块
【需求分析】
该模块的功能是根据输入的学号查找对应的记录。
【流程图】
N
Y
【程序】
/**********************查询模块************************/
voidQuery()
{
inti,k,d,j[20]={-1},t=0,Q=N;
charm[20];
system("cls");
printf("\n\n\n");
printf("\t\t\t***********************\n");
printf("\t\t\t**查找学生证信息**\n");
printf("\t\t\t***********************\n");
printf("\n\n\n");
printf("\t\t\t┌──────功能选择─────┐\n");
printf("\t\t\t││\n");
printf("\t\t\t││\n");
printf("\t\t\t│1.学号│\n");
printf("\t\t\t││\n");
printf("\t\t\t││\n");
printf("\t\t\t│2.班号│\n");
printf("\t\t\t││\n");
printf("\t\t\t││\n");
printf("\t\t\t││\n");
printf("\t\t\t└───────────────┘\n");
printf("\n\n\t\t\t请输入您所需相应操作前的数字:
");
scanf("%d",&k);
printf("\n\n");
if(k==1)
{
printf("\t\t\t请输入学号:
");
scanf("%s",m);
printf("\n");
for(i=0;i if(strcmp(m,StuCard[i].stuNo)==0) { j[t]=i; t=t+1; } } elseif(k==2) { printf("\t\t\t请输入班号: "); scanf("%d",&d); printf("\n"); for(i=0;i if(d==StuCard[i].classNo) { j[t]=i; t++; } } if(j[0]==-1&&t==0) { printf("\n\t\t\t对不起,没有找到! "); } if(j[0]! =-1&&t! =0) { system("cls"); printf("\n\n\n"); printf("\t查找结果如下: \n"); printf("\t\t\t****************************************\n"); printf("\t\t\t姓名性别学号班号\n"); for(i=0;i printf("\t\t\t%-11s%-10d%-10s%-10d\n",StuCard[j[i]].name,StuCard[j[i]].sex,StuCard[j[i]].stuNo,StuCard[j[i]].classNo); printf("\t\t\t****************************************\n"); } } (4)修改模块 【需求分析】 该模块的功能是根据某个班级的班号找到要修改的记录,并提示用户修改该记录的哪部分信息(是姓名、性别、学号还是班号),然后根据用户的选择修改相应信息。 【程序】 /*****************************修改模块***************************/ voidModify() { inti,k; charn[20]; system("cls"); printf("\n\n\n"); printf("\t\t\t***********************\n"); printf("\t\t\t**修改学生证信息**\n"); printf("\t\t\t***********************\n"); printf("\n\n\t\t\t请输入需要修改信息的学生的学号: "); scanf("%s",n); for(i=0;i { if(strcmp(n,StuCard[i].stuNo)==0) { printf("\n\n"); printf("\t该学生原信息如下: \n"); printf("\t\t\t****************************************\n"); printf("\t\t\t姓名性别学号班号\n"); printf("\t\t\t%-10s%-10d%-13s%-10d\n",StuCard[i].name,StuCard[i].sex,StuCard[i].stuNo,StuCard[i].classNo); printf("\t\t\t****************************************\n\n\n"); printf("\t\t\t┌──────修改选择─────┐\n"); printf("\t\t\t││\n"); printf("\t\t\t││\n"); printf("\t\t\t│1.姓名2.性别│\n"); printf("\t\t\t││\n"); printf("\t\t\t││\n"); printf("\t\t\t│3.学号4.班号│\n"); printf("\t\t\t││\n"); printf("\t\t\t││\n"); printf("\t\t\t││\n"); printf("\t\t\t└───────────────┘\n"); printf("\n\n\t\t\t请选择您要修改的内容编号: "); scanf("%d",&k); printf("\n\n"); if(k>=1&&k<=4) { if(k==1) { printf("\t\t\t请输入新的姓名: "); scanf("%s",StuCard[i].name); } if(k==2) { printf("\t\t\t请输入新的性别: "); scanf("%d",&StuCard[i].sex); } if(k==3) { printf("\t\t\t请输入新的学号: "); scanf("%s",StuCard[i].stuNo); } if(k==4) { printf("\t\t\t请输入新的班号: "); scanf("%d",&StuCard[i].classNo); } system("cls"); printf("\n\n"); printf("\n\n\t\t\t修改成功! "); } elseprintf("\n\n\t\t\t对不起,没有该选项! "); } } } (5)删除模块 【需求分析】 用户输入要删除学生证信息的某位学生的学号,根据学号查找学生证信息并删除。 删除一般的做法是将数据从文件中删除,删除位置后面的记录往前移动。 【程序】 /*****************************删除模块***************************/ voidDelete() { inti,j=-1,Q,t=0; charn[20]; system("cls"); printf("\n\n\n"); printf("\t\t\t***********************\n"); printf("\t\t\t**删除学生证信息**\n"); printf("\t\t\t***********************\n"); printf("\n\n\t\t\t请输入需要删除的学生的学号: "); scanf("%s",n); printf("\n\n\n"); for(i=0;i if(strcmp(n,StuCard[i].stuNo)==0)j=i; if(j! =-1) { Q=N-1; for(i=j;i<=Q&&j! =-1;i++)StuCard[i]=StuCard[i+1]; system("cls"); printf("\n\n"); printf("\t\t\t删除成功! "); } elseif(j==-1)printf("\n\t\t\t对不起,没有找到! "); } (6)统计模块 【需求分析】 该模块的功能是根据用户需求统计菜单所显示信息。 【流程图】 【程序】 voidStat() { inti,n,m,k=0,boy=0,girl=0,Q=N; system("cls"); printf("\n\n\n"); printf("\t\t\t***********************\n"); printf("\t\t\t**统计学生证信息**\n"); printf("\t\t\t***********************\n\n\n"); printf("\t\t\t┌───────功能选择──────┐\n"); printf("\t\t\t││\n"); printf("\t\t\t││\n"); printf("\t\t\t│1.班级总人数│\n"); printf("\t\t\t││\n"); printf("\t\t\t│2.年级男女人数│\n"); printf("\t\t\t││\n"); printf("\t\t\t│3.班级男女人数│\n"); printf("\t\t\t││\n"); printf("\t\t\t││\n"); printf("\t\t\t└─────────────────┘\n"); printf("\n\n\t\t\t请输入统计选项: "); scanf("%d",&n); printf("\n\n"); if(n==1) { printf("\t\t\t请输入您需要统计的班号: "); scanf("%d",&m); system("cls"); printf("\n\n\n"); printf("\t\t\t****************************************\n"); printf("\t\t\t姓名性别学号班号\n"); for(i=0;i { if(m==StuCard[i].classNo) { printf("\t\t\t%-11s%-10d%-10s%-10d\n",StuCard[i].name,StuCard[i].sex,StuCard[i].stuNo,StuCard[i].classNo); k++; } } printf("\t\t\t****************************************\n"); if(k! =0)printf("\n\n\t\t\t该班共有%d人。 ",k); elseprintf("\n\t\t\t对不起,没有找到! "); } if(n==2) { for(i=0;i { if(StuCard[i].sex==0)boy=boy+1; if(StuCard[i].sex==1)girl=girl+1; } printf("\t\t\t该年级男生共有%d人,女生共有%d人。 ",boy,girl); } if(n==3) { printf("\t\t\t请输入您需要统计的班号: "); scanf("%d",&m); for(i=0;i { if(m==StuCard[i].classNo) { if(StuCard[i].sex==0)boy=boy+1; if(StuCard[i].sex==1)girl=girl+1; } } system("cls"); printf("\n\n\n"); printf("\t\t\t****************************************\n"); printf("\t\t\t姓名性别学号班号\n"); for(i=0;i { if(m==StuCard[i].classNo) { printf("\t\t\t%-11s%-10d%-10s%-10d\n",StuCard[i].name,StuCard[i].sex,StuCard[i].stuNo,StuCard[i].classNo); k++; } } printf("\t\t\t****************************************\n"); if(boy==0&&girl==0) printf("\n\t\t\t对不起,没有找到! "); elseprintf("\n\n\t\t\t该班男生共有%d人,女生共有%d人。 ",boy,girl); } } (7)浏览模块 【需求分析】 该模块的功能是显示所有学生的学生证信息。 因为人数有不同变化,所以将该模块分为三个部分: 录入后的浏览模块、修改后的浏览模块和删除后的浏览模块。 【程序】 /************************录入后的浏览模块**********************/ voidDisplay1() { inti,Q=N+1; printf("\n\n"); printf("\t\t\t****************************************\n"); printf("\t\t\t姓名性别学号班号\n"); for(i=0;i printf("\t\t\t%-10s%-10d%-13s%-10d\n",StuCard[i].name,StuCard[i].sex,StuCard[i].stuNo,StuCard[i].classNo); printf("\t\t\t****************************************\n"); } /************************修改后的浏览模块**********************/ voidDisplay2() { inti; printf("\n\n"); printf("\t\t\t****************************************\n"); printf("\t\t\t姓名性别学号班号\n"); for(i=0;i printf("\t\t\t%-10s%-10d%-13s%-10d\n",StuCard[i].name,StuCard[i].sex,StuCard[i].stuNo,StuCard[i].classNo); printf("\t\t\t****************************************\n"); } /************************删除后的浏览模块**********************/ voidDisplay3() { inti,Q=N-1; printf("\n\n"); printf("\t\t\t****************************************\n"); printf("\t\t\t姓名性别学号班号\n"); for(i=0;i print
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 学生证 管理程序