教师评分系统Word下载.docx
《教师评分系统Word下载.docx》由会员分享,可在线阅读,更多相关《教师评分系统Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
●核心技术的实现说明及相应程序段
●个人总结
●参考资料
●源程序及适当的注释
指导教师:
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段4
四、个人总结10
五、参考文献10
六、源程序10
一、需求分析
经过对程序设计题目的分析可知,整个程序的设计实现大致分为六个模块,其中每一个模块对应一个函数,他们的功能分别是:
保存函数(save),输入教师信息函数(enter),输入教师得分函数(score),教师分数统计函数(score0),教师分数排名函数(sort)以及主菜单函数(main)。
这六个函数的实现严格按照题目的要求。
1、保存函数主要实现程序里使输入信息可以保存到磁盘中来;
2、输入教师信息函数实现的功能是输入教师的信息;
3、输入教师得分函数输入教师的专家给分以及学生给分;
4、教师分数统计函数将教师的专家给分得60%以及学生给分的40%相加,并计算出总分;
5、教师分数排名函数将教师按照总分进行排名;
6、主菜单函数实现的是对以上函数的使用。
二、程序流程图
1、程序总体结构图
2、具体功能框图
(1)保存函数(save)
图2添加学生数据函数
(2)输入教师信息函数(enter)
图3读取学生数据
(3)输入教师得分函数(score)
(4)教师分数统计函数(score0)
教师分数排名函数(sort)
三、核心技术的实现说明及相应程序段
本程序主要由五个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。
在这些函数当中,保存及输入教师信息函数、教师分数统计函数和教师分数排名函数是程序中较为核心的部分,下面分别进行说明。
1、保存及输入教师信息函数
具体的程序段如下:
voidsave()
{
FILE*fp;
/*指向文件的指针*/
inti;
if((fp=fopen("
record.txt"
"
w"
))==NULL)/*打开文件,并判断打开是否正常*/
{
printf("
cannotopenfile\n"
);
/*没打开*/
exit
(1);
/*退出*/
}
for(i=0;
i<
n;
i++)
fprintf(fp,"
%s%s%s%d%s%f%f%f\n"
tea[i].number,tea[i].name,tea[i].sex,tea[i].age,tea[i].subject,tea[i].a,tea[i].b,tea[i].c);
fclose(fp);
/*关闭文件*/
****savesuccess***\n"
/*显示保存成功*/
}
/*输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/
voidenter()
/*intn;
*/
请输入要录入教师信息的数量\n"
/*提示信息*/
scanf("
%d"
&
n);
/*输入记录数*/
开始录入教师信息:
\n"
/*提示输入记录*/
请输入第%d名教师的教师号,姓名,性别,年龄,所教课程:
i+1);
%s%s%s%d%s/n"
tea[i].number,tea[i].name,tea[i].sex,&
tea[i].age,tea[i].subject);
----------------------------------------------\n"
save();
/*显示记录,参数为记录数组和记录条数*/
2、教师分数统计函数
具体程序段如下:
voidscore0()
教师号---姓名---性别---年龄---所教课程---专家给分---学生给分---总分\n"
tea[i].c=tea[i].a*0.6+tea[i].b*0.4;
tea[i].number,tea[i].name,tea[i].sex,tea[i].age,tea[i].subject,tea[i].a,tea[i].b,tea[i].c);
/*输出记录*/
3、教师分数排名函数
对于总分的排名采用的排序算法是冒泡法排序,其中总分的求得是在排名的过程中实现的,整个排序过程在结构体数组tea中实现,由于排序算法涉及到两个数组元素的信息交换,因此还需要定义一个中间变量(temp)来协助。
排序函数使教师数据的排列顺序发生了变化,因此也需要队员文件进行更新,此外,对于教师排序后名次的确定,仅在结果输出时予以显示,并未将名次信息写入源文件。
具体的程序段如下:
voidsort()
inti,j;
structteachertemp;
/*临时变量做交换数据用*/
for(j=0;
j<
n-1;
j++)
if(tea[j].c>
tea[j+1].c)/*起泡法比较大小*/
strcpy(temp.number,tea[j].number);
/*交换记录*/
strcpy(temp.name,tea[j].name);
strcpy(temp.sex,tea[j].sex);
strcpy(temp.subject,tea[j].subject);
strcpy(tea[j].number,tea[j+1].number);
strcpy(tea[j].name,tea[j+1].name);
strcpy(tea[j].sex,tea[j+1].sex);
strcpy(tea[j].subject,tea[j+1].subject);
strcpy(tea[j+1].number,temp.number);
strcpy(tea[j+1].name,temp.name);
strcpy(tea[j+1].sex,temp.sex);
strcpy(tea[j+1].subject,temp.subject);
temp.age=tea[j].age;
tea[j].age=tea[j+1].age;
tea[j+1].age=temp.age;
temp.a=tea[j].a;
tea[j].a=tea[j+1].a;
tea[j+1].a=temp.a;
temp.b=tea[j].b;
tea[j].b=tea[j+1].b;
tea[j+1].b=temp.b;
temp.c=tea[j].c;
tea[j].c=tea[j+1].c;
tea[j+1].c=temp.c;
-----------------------------------------\n"
sortsucess!
!
/*显示排序成功*/
教师号---姓名---性别---年龄---班所教课程---专家给分---学生给分---总分\n"
四、个人总结
经过将近一个星期的计算机C语言课程设计,我体会到了C语言程序的内涵,通过C语言设计,我学会了将零散的实现单个功能的函数,重组执行完成一个整套程序的编写,解决实际生活中存在的问题,而且在设计中,通过对书本资料的查询,也让我又了一个大致编程的整体思路。
在设计中,我也深刻体会到编程的乐趣,以及程序调制中改正错误的成就感,这也大大增加了对C语言编程的乐趣,了解到C语言的快乐。
在书写报告中,我学会了将计算机流程通过文字和图表以更鲜明的形式表现出来也学会了报告的书写模式,这次课程设计让我受益匪浅,我会珍惜这次宝贵的学习机会。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序:
#include"
stdio.h"
/*I/O函数*/
stdlib.h"
/*标准库函数*/
string.h"
/*字符串函数*/
#defineM20/*定义常数表示记录数*/
structteacher/*定义数据结构*/
charnumber[10];
/*教师号*/
charname[10];
/*姓名*/
charsex[5];
/*性别*/
intage;
/*年龄*/
charsubject[10];
/*所教课程*/
floata;
/*专家给分*/
floatb;
/*学生给分*/
doublec;
/*总分*/
}tea[M];
intn;
/*显示记录,参数为记录数组和记录条数*/
voidscore()
floatta,tb;
录入教师的给分:
输入%s教师的专家给分和学生期末给分:
tea[i].name);
%f%f"
ta,&
tb);
/*输入记录*/
tea[i].a=ta,tea[i].b=tb;
tea[j+1].c)/*比较大小*/
main()
/*保存记录长度*/
********************MENU*********************\n\n"
0.录入教师信息\n"
1.录入专家给分和学生给分\n"
2.统计教师所得的总分\n"
3.按照总成绩对教师进行排名\n"
4.Quit\n"
***********************************************\n"
for(;
;
)
switch(getchar())/*调用主菜单函数,返回值整数作开关语句的条件*/
case'
0'
:
enter();
break;
1'
score();
2'
score0();
break;
3'
sort();
4'
exit(0);
/*如返回值为4则程序结束*/