教学信息管理系统c语言课程设计报告.docx
- 文档编号:9095243
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:29
- 大小:178.67KB
教学信息管理系统c语言课程设计报告.docx
《教学信息管理系统c语言课程设计报告.docx》由会员分享,可在线阅读,更多相关《教学信息管理系统c语言课程设计报告.docx(29页珍藏版)》请在冰豆网上搜索。
教学信息管理系统c语言课程设计报告
《程序设计基础》课程设计报告
题目:
学院教学信息管理系统日期:
2012.5.21
班级:
计算机应用技术1102班学号:
姓名:
一.设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计基础(C语言)》课程后进行的一次全面的综合练习。
本课程设计的目的:
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
二.课程设计任务书
题目:
学院教学信息管理系统
学院教学信息管理系统,每一条记录包括一位教师的职工号、姓名、职称、性别、3门课程教学效果、综合评分。
系统要求实现以下功能:
1、输入:
输入每一位教师记录,将其信息写入文件中。
2、显示:
显示每位教师记录。
3、排序:
按职工号或教学效果综合评分进行排序,并显示。
4、查找:
完成按姓名或职工号查找教师的相关记录,并显示。
分步实施:
1、初步完成总体设计,搭好框架,确定人机对话的界面,确定函数个数。
2、建立一个文件,将每位教师的相关(教学)信息写入文件中并能显示于屏幕上。
3、完成排序(按职工号、姓名、职称等)、查找等功能。
要求:
1、用C语言实现程序设计;
2、利用结构体数组或者链表实现教师信息的数据结构设计;
3、系统的各个功能模块要求用函数实现;
4、界面友好(良好的人机交互),程序加必要的注释。
三.系统设计方案
用到数据结构的定义:
在此程序中用到了结构体的定义,结构体数组的定义以及变量的申明,还用到了外部函数的申明及调用。
在主函数中,输出教师信息的函数是贯穿在程序始终的,例如要实现教师的排序这一模块时,排完序后就需要用输出信息的函数来输出排序后的信息。
这就得需要多个函数共同实现这一个模块。
此程序的流程:
由于系统需要实现返回主界面的功能,那么在程序的开头就需要使用do....while语句,在do....while语句内首先将系统的主界面写下来,然后又要根据不同的按键实现排序、查找、结束等功能,这就必须使用switch语句来实现,由于实现一个功能后,还需要跳出此功能进入下一个功能,这样就要需要使用while语句来循环,直到用户需要返回主界面时就设定一个条件跳出while语句。
程序流程图:
四.调试分析
(1)遇到的问题如何解决:
在调试程序的过程中,遇到的问题有些是我和老师交流过才解决的,但大部分都是自己通过思考并仔细推敲书本的程序后才解决了调试过程中出现的问题。
(2)程序算法的改进设想;我觉得在两个数进行交换的算法中,应该有更简便的算法。
(3)经验:
通过这次课程设计,我知道了读写文件的方法,还知道了一些细节问题,如:
如果要在键盘中输入一个字符时,需要以%1s的格式进行输入,这样就避免了输入多个字符。
体会:
在调试程序的过程中,我觉得自己要善于分析程序的问题所在,尽量做到自己独立处理问题的能力。
同时在调试程序的过程中,要有不厌其烦的精神,出现问题后不要感到失落,要相信自己一定能攻破难关。
五.用户使用说明
操作步骤:
一、开始
此时要按下Y或y键才能进入系统,如果输入错误时,系统会有提示,并要求重新输入。
二、输入信息
进入此界面时,系统首先提示要输入教师的个数,输入后再输入教师的具体信息,此时的界面如下图:
三、具体信息
进入此界面后,系统会提示用户需要按下哪些键才能执行相应的功能,如果输入错误时,系统会有提示,并要求重新输入,此时的界面如下:
四、排序
在进入此界面之前,系统会提示用户想要用哪种方式对教师进行排序,如果选择y或Y时就会出现以下的界面(即以总分的方式对教师进行排序),当排序完成后,系统会提示用户是否继续执行此功能,用户按系统要求按下指定的键后,系统就会出现相应的功能。
五、查找
在进入此界面之前,系统会提示用户想要用哪种方式对教师进行查找,如果选择y或Y时就会出现以下的界面(即以姓名的方式来查找教师的相关信息),当查找完成后,系统会提示用户是否继续执行此功能,用户按系统要求按下指定的键后,系统就会出现相应的功能。
六、结束
这是结束系统的界面,按下系统指定的键后就可以进入此界面。
六.测试结果
(1).输入n个教师的信息(n由用户输入):
(2).输出n个教师的信息(n由用户输入):
(3).根据教学效果综合评分排序:
(4).根据职工号进行排序:
(5).根据姓名进行查找,而且如果当姓名输入错误时会有提示!
(6).根据职工号进行查找,而且如果当职工号输入错误时会有提示!
(7).如果在系统开始后,没有按指定的键输入数据时,系统就不会去实现相应的功能此时系统会有提示!
并要求重新输入。
七.附录
(1).主函数
#include
#include
#include
structteacher
{
intnum;
charname[30];
charcompetent[30];
charsex[4];
floatscore[3];
floatsum;
};
externvoidInPut(structteacher*p,intn);
externvoidSumofScores(structteacher*p,intn);
externvoidOutPut(structteacher*p,intn);
externvoidReorderbyScore(structteacher*p,intn);
externvoidReorderbyNum(structteacher*p,intn);
externcharInputInformation(void);
externvoidSeacherbyName(structteacher*p,charteacher[],intn);
externvoidSeacherbyNum(structteacher*p,intteacher2,intn);
externvoidFoutPut(structteacher*p,intn);
intmain()
{
intflag,n;
intteacher2;
charc,selectnum,teacher[10];
structteachertea[80];
do
{
flag=1;
/*以下的一部分是系统开始的界面*/
printf("\n\n\n\n\n");
printf("\t\t*************************************************\n");
printf("\t\t*");
printf("\t\t\t\t\t\t*\n");
printf("\t\t*");
printf("\t\t\t\t\t\t*\n");
printf("\t\t*");
printf("\t\t\t\t\t\t*\n");
printf("\t\t*welcometotheteachers'educationalsystem\t*\n");
printf("\t\t*");
printf("\t\t\t\t\t\t*\n");
printf("\t\t*");
printf("\t\t\t\t\t\t*\n");
printf("\t\t*");
printf("\t\t\t\t\t\t*\n");
printf("\t\t*************************************************\n");
printf("\t\t\tpleaseinputyorYtocontinue....");
do
{
scanf("%1s",&c);
if(c!
='y'&&c!
='Y')/*输入Y或y才能进入系统*/
{
printf("Youputerror!
Pleaseinputagain!
\n");
}
}while(c!
='y'&&c!
='Y');
system("cls");/*清屏*/
printf("PleaseinputthenumberofTeachers:
\n");
scanf("%d",&n);
printf("Pleaseinput%dteachers'information\n",n);
printf("Num\tName\tCompetentSex\tMathEnglishComputer\n");
InPut(tea,n);/*调用输入数据的函数,用来输入数据并保存在文件中*/
SumofScores(tea,n);/*调用计算综合评分的函数,用来计算每个教师的综合评分*/
system("cls");/*清屏*/
printf("\t\t@@@THETEACHERS'INFORMATION@@@\n");
printf("******************************************************************************\n");
FoutPut(tea,n);/*调用输出的函数,用来读出文件的信息来把每个教师的信息都显示在屏幕上*/
printf("******************************************************************************\n\n");
selectnum=InputInformation();/*用来提示用户,系统需要按哪些键才能实现相应的功能*/
while(flag)
{
switch(selectnum)
{
case'a':
{
system("cls");/*清屏*/
do
{
printf("Doyouwanttoorderteachers'informationbyscores?
Yes,pleaseinputyorY.elseorderitbycourse.\n");/*提示用户,想要用哪种方法对教师进行排序*/
scanf("%1s",&c);
if(c=='y'||c=='Y')
{
system("cls");/*清屏*/
printf("\t\t\t@@@@ORDEREDBYSUM@@@\n");
printf("******************************************************************************\n");
ReorderbyScore(tea,n);/*调用用综合评分排序的函数,用来给教师排序*/
OutPut(tea,n);/*调用输出的函数,用来把教师的信息显示出来*/
printf("******************************************************************************\n\n");
}
else
{
system("cls");/*清屏*/
printf("\t\t\t@@@@ORDEREDBYNUM@@@\n");
printf("******************************************************************************\n");
ReorderbyNum(tea,n);/*调用用职工号来排序的函数,用来给教师排序*/
OutPut(tea,n);/*调用输出的函数,用来把教师的信息显示出来*/
printf("******************************************************************************\n\n");
}
printf("Doyouwanttocontinue.Yes,pleaseinputyorY.else,inputnorN.\n");/*提示用户,是否还要继续执行此功能*/
scanf("%1s",&c);
}while(c=='y'||c=='Y');
selectnum=InputInformation();/*调用此函数用来提示用户,系统需要按哪些键才能实现相应的功能*/
break;
}
case'b':
{
system("cls");/*清屏*/
do
{
printf("Doyouwanttoseacherteachers'informationbyname?
Yes,pleaseinputyorY.elseseacheritbycourse.\n");/*提示用户,想要用哪种方法来查找教师的相关信息*/
scanf("%1s",&c);
if(c=='y'||c=='Y')
{
printf("Pleaseinputthenamewhoyouwanttofind:
\n");
scanf("%s",teacher);
SeacherbyName(tea,teacher,n);/*调用此函数,通过用姓名的方式来查找相应的教师*/
}
else
{
printf("Pleaseinputtheteachers'numthatyouwanttoknow:
\n");
scanf("%d",&teacher2);
SeacherbyNum(tea,teacher2,n);/*调用此函数,通过用职工号的方式来查找相应的教师*/
}
printf("Doyouwanttocontinun?
Yes,pleaseinputYory.No,pleaseinputN.\n");/*提示用户,是否还要继续执行此功能*/
scanf("%s",&c);
printf("********************************************************************************\n\n");
printf("********************************************************************************\n\n");
}while(c=='y'||c=='Y');
selectnum=InputInformation();/*调用此函数用来提示用户,系统需要按哪些键才能实现相应的功能*/
break;
}
case'c':
{
system("cls");/*清屏*/
flag=0;
selectnum='c';
break;
}
case'd':
{
system("cls");/*清屏*/
/*以下的一部分是系统结束的界面*/
printf("\n\n\n");
printf("\t@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
printf("\t@\t\t\t\t\t\t\t@\n");
printf("\t@\t*Thankingforyouuseingmysystem!
*\t@\n");
printf("\t@\t*\t\t\t\t\t*\t@\n");
printf("\t@\t*\t\t\t\t*\t@\n");
printf("\t@\t*\t\t\t\t*\t\t@\n");
printf("\t@\t*\tGOODBYE!
\t*\t\t@\n");
printf("\t@\t\t*\t\t\t*\t\t@\n");
printf("\t@\t\t*\t\t*\t\t\t@\n");
printf("\t@\t\t\t*\t*\t\t\t@\n");
printf("\t@\t\t\t*\t\t\t\t@\n");
printf("\t@\t\t\t\tmadebyLiYan!
\t@\n");
printf("\t@\t\t\t\t\t\t\t@\n");
printf("\t@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
flag=0;
break;
}
default:
{
do
{
printf("Youhasinputaninvalidselect!
Pleaseinputagain!
\n");/*提示用户,输入错误,需要重新输入*/
scanf("%1s",&selectnum);
}while(selectnum!
='a'&&selectnum!
='b'&&selectnum!
='c'&&selectnum!
='d');
}
}
}
}while(selectnum=='c');
return0;
}
(2).调用用来输入数据并写入文件的函数:
#include
#include
structteacher
{
intnum;
charname[30];
charcompetent[30];
charsex[4];
floatscore[3];
floatsum;
};
voidInPut(structteacher*p,intn)
{
inti;
FILE*fp;
for(i=0;i scanf("%d%s%s%s%f%f%f",&p[i].num,p[i].name,p[i].competent,p[i].sex,&p[i].score[0],&p[i].score[1],&p[i].score[2]); if((fp=fopen("score.txt","w"))==NULL) { printf("Cant'sopenfile."); exit(0); } for(i=0;i { fprintf(fp,"%d%s%s%s%.1f%.1f%.1f",p[i].num,p[i].name,p[i].competent,p[i].sex,p[i].score[0],p[i].score[1],p[i].score[2]); } fclose(fp); } (3).调用用来输出数据的函数: #include structteacher { intnum; charname[30]; charcompetent[30]; charsex[4]; floatscore[3]; floatsum; }; voidOutPut(structteacher*p,intn) { inti; printf("Num\tName\tCompetent\tSex\tMath\tEnglish\tComputer\tSum\n"); for(i=0;i { printf("%d\t%s\t%s\t\t%s\t%.1f\t%.1f\t%.1f\t\t%.1f\n",p[i].num,p[i].name,p[i].competent,p[i].sex,p[i].score[0],p[i].score[1],p[i].score[2],p[i].sum); } } (4).调用用来计算教师综合评分的函数: structteacher { intnum; charname[30]; charcompetent[30]; charsex[4]; floatscore[3]; floatsum; }; voidSumofScores(structteacher*p,intn) { inti; for(i=0;i { p[i].sum=p[i].score[0]+p[i].score[1]+p[i].score[2]; } } (5).调用用教师的综合评分来排序的函数: structteacher { intnum; charname[30]; charcompetent[30]; charsex[4]; floatscore[3]; floatsum; }; voidReorderbyScore(structteacher*p,intn) { inti,j; structteachert; for(i=0;i { for(j=0;j { if(p[j].sum { t=p[j]; p[j]=p[j+1]; p[j+1]=t; } } } } (6).调用用教师的职工号来排序的函数: structteacher { intnum; charname[30]; charcompetent[30]; charsex[4]; floatscore[3]; f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学 信息管理 系统 语言 课程设计 报告