教师工作量管理系统.docx
- 文档编号:30483389
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:19
- 大小:92.82KB
教师工作量管理系统.docx
《教师工作量管理系统.docx》由会员分享,可在线阅读,更多相关《教师工作量管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
教师工作量管理系统
沈阳航空航天大学
课程设计
学号:
班级:
姓名:
指导教师:
2011年3月11日
某航空航天大学
课程设计任务书
系:
动力与能源工程学院专业:
飞行器动力工程
班级:
学号:
题目:
教师工作量管理系统
一、课程设计时间
2010~11第2学期第1周,即3月7日~3月11日,共计1周,20学时。
二、课程设计内容
用C语言编写软件完成以下任务:
计算每个老师在一个学期中所教课程的总工作量(教师的信息为:
教师号、某、所授课程、班级数目、理论课时、实验课时、单个教学任务总课时)。
(1)输入教师教学信息,包括教师号、某、所授课程、班级数目、理论课时、实验课时。
(2)插入教师授课信息。
(3)教师工作量计算:
①计算单个教学任务总课时。
计算原则如下表:
班级数目
单个教学任务总课时
2
1.5*(理论课时+实验课时)
3
2*(理论课时+实验课时)
>=4
2.5*(理论课时+实验课时)
②计算一个教师一个学期总的教学工作量。
总的教学工作量等于所有单个教学任务总课时之和。
(4)完整的教师信息显示。
三、课程设计要求
程序质量:
1.贯彻结构化程序设计思想。
2.用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
3.用户界面中的菜单至少应包括“输入教师信息”、“插入授课信息”、“工作量计算与显示”、“退出”4项。
4.代码应适当缩进,并给出必要的注释,以增强程序的可读性。
课程设计说明书:
✧课程结束后,上交课程设计说明书和源程序。
课程设计说明书的内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、成绩
六、教师评语
一、需求分析
根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
该系统主要适用于学校教务处的工作人员统计教师的课程量,系统首先应功能齐全,操作简便,还应该具有安全、稳定的特点。
1.安全性分析
系统管理的数据涉及到学院的所有教师,数据量较大且是一种基础性数据,能够为其它方面的学生管理工作提供重要参考,所以要通过设置密码等手段确保数据不能被随意的删减和修改。
2.稳定性分析
指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
3.主要功能分析
(1)数据输入:
在使用系统时,操作人员需要根据系统提示,按要求输入教师的个人信息以及教师的授课信息。
若输入出现错误,操作人员可以根正,但必要是需要退出系统后重新进入系统输入。
(2)数据保存:
对于输入的数据,或被修改的数据以及统计结果应该保存到某个磁盘文件中,实现永久存储。
文件的具体格式题目未作具体要求,所以可采用随机文件,也可采用文本文件。
不管采用哪种文件形式,文件中的数据应有固定的格式,以便于程序自动读取或人工阅读。
二、设计分析
主要有6个功能模块,每个模块对应一个C语言自定义函数。
这些函数原型及其功能简述如下:
1、程序总体结构图(传统流程图或N-S框图)
图1程序总体结构图
2、主要功能模块框图(传统流程图或N-S框图)
(1)输入教师信息模块
输入教师号
p[i].jsh=tea.jsh
输入教师某
strcpy(p[i].name,tea.name)
输入该名教师所授课程数目
p[i].a=tea.a
图2输入教师信息模块
(2)插入授课信息模块
输入课程题目
strcpy(w[j].kctm,kc.kctm)
输入该课程的班级数目
w[j].bjsm=kc.bjsm
输入该课程理论课时数目
w[j].llks=kc.llks
输入该课程实验课时数目
w[j].syks=kc.syks
图3插入授课信息模块
(3)教师工作量计算模块
图4教师工作量计算模块
三、主要界面截图
图1程序主界面
图2错误提示界面
图3退出系统界面
图4教师信息输入界面(输入系统校验数据)
图5信息输出界面
四、技术要点
1、结构体的应用
定义了结构体用来描述教师的某、教师号、所授课程、班级数目、理论课时、实验课时。
具体的定义如下:
structkcxx
{
charkctm[15];
intbjsm;
intllks;
intsyks;
};
structteacher
{
intjsh;
charname[15];
inta;
structkcxxshouke[5];
};
structteachertea[100];
structteacher*p;
floatsum[100];/*存放教师的工作量*/
所定义的结构体主要用于定义数组。
2、文件操作
此程序的文件操作主要是对教师信息及其授课信息的保存,将系统使用的数据及统计结果录入磁盘文件中以便查阅。
具体的程序如下:
voidsave(float*sum,intn,int*b)
{
intz,i;
FILE*fp,*fc,*fq;
printf("请确认信息,如需文件保存请输入1并回车,无需保存输入2并回车。
\n");
/*教师信息及统计结果的保存*/
scanf("%d",&z);
if(z==1)
{
if((fp=fopen("teacher_xx","wb"))==NULL)
{
printf("文件打开失败\n");
printf("未保存\n");
}
else
{
fc=fopen("kechen_xx","wb");
fq=fopen("teacher_gzl","wb");
for(i=1;i<=n;i++)
if(fwrite(&tea[i],sizeof(structteacher),1,fp)!
=1)
printf("文件输出失败\n");
else
fwrite(&sum[i],4,1,fq);
fclose(fp);
fclose(fc);
fclose(fq);
printf("保存成功\n");
}
}
else
printf("未保存\n");
}
3、教师教学任务的算法
教师教学任务的计算是根据教学计算原则计算的。
首先自定义函数计算单课时的教学任务,然后在主函数中循环调用该函数计算出所有课时的任务量,最后将其求和即可。
具体程序如下:
自定义函数部分:
floatdan(intbjs,intllks,intsyks)
{
floatdgks;
if(bjs>=4)
dgks=(llks+syks)*2.5;
else
if(bjs>=3)
dgks=2*(llks+syks);
else
dgks=(llks+syks)*1.5;
returndgks;
}
主函数调用部分:
case3:
/*计算*/
{if((cd1==1)&&(cd2==2))
{for(e=1;e<=n;e++)
{for(f=1;f<=b[e];f++)/*e指定的是人数,f指定的是课程数*/{c=p[e].shouke[f].bjsm;a[f]=dan(c,p[e].shouke[f].llks,p[e].shouke[f].syks);}sum[e]=0;
for(f=1;f<=b[e];f++)
sum[e]+=a[f];
printf("第%d位教师的工作量=%.2f\n",e,sum[e]);
五、个人总结
经过一周的课程设计后,我对C语言有了更加深入的认识。
以前我们学习C语言只是仅限于书本的理论认识,上机调试一些简单的程序,对于把书中的知识真正运用到现实中去,去解决生活中的问题还未有过。
这次的课程设计让我们切身感觉到了理论知识的实际作用,那些生活中的许多现象也不再那么神奇。
由于C语言学了有些时日,所以在设计过程中参考了一些资料。
面对这样陌生的课题,刚开始也是茫然一片,思路很混乱,不知道从何处开始。
经过一段时间的思考,我确定了编程思路,先解决程序的各分支问题,然后再将各部分的程序组合在一起从而完成程序的设计。
当然,这也不是顺利的,编程需要无数次的修改,有时候还要完全推翻之前的模块设计重新开始,有时候也会因为出现一点小错误而无法通过编译时对着电脑苦思冥想。
不过付出终是有回报的,自己编写的程序基本完成了所需要的功能,至于程序的一些优化和修饰就感觉简单多了。
虽然变好了程序,获得了运行的结果,但是我也自知其中存在许多的不足之处,比如程序过于冗长,运行过程中界面有些混乱,容易让操作人员产生误解,某些功能不太完善。
当然也有其有点所在,如程序结构清晰,有明确的操作提示等。
总之,经过几天的课程设计,我对C语言有了更加浓厚的兴趣,它是一件非常有用的工具,学好它对我们以后的工作大有裨益。
六、参考文献
1,谭浩强.C程序设计.:
清华大学,2005
七、源程序
(所书写的全部源程序,排版要规X)
#include
#include
#include
/*定义全局变量以指代教师的个人信息和其授课信息*/
structkcxx
{charkctm[15];
intbjsm;
intllks;
intsyks;};
structteacher
{intjsh;
charname[15];
inta;
structkcxxshouke[5];};
structteachertea[100];
structteacher*p;
floatsum[100];/*存放教师的工作量*/
/*主函数开始*/
voidmain()
{inti,j,b[10],n,c,e,f,l=0;
intcd1,cd2,cd3,cd4;
floata[10];
p=tea;
/*申明函数部分*/
voidshuru1(inti);
voidshuru2(inti,intj);
floatdan(intbjs,intllks,intsyks);
voidshuchu(int*b,intn,float*sum);
voidsave(float*sum,intn,int*b);
/*输出界面*/
printf("╭**********╳╳╳***************╳╳╳************╮\n\n");
printf("★\n");
printf("│◎◎☆欢迎进入教师工作量管理系统☆◎◎│\n\n\n");
printf("╰********╳╳╳*****************╳╳╳************╯\n\n\n");
while
(1)
/*输出系统菜单*/
printf("系统菜单\n");
printf("╔**********╦*************━***********╦***********╗\n");
printf("*㈠.输入教师信息*\n");
printf("*㈡.插入授课信息*\n");
printf("╠㈢.教师工作量计算╣\n");
printf("╠㈣.输出统计结果╣\n");
printf("*㈤.保存教师信息及统计结果*\n");
printf("*㈥.退出*\n");
printf("╚********╩*************━***********╩***********╝\n\n");
printf("说明:
请按菜单序号依次执行,且必须首先执行前三项,重复输入将覆盖之前的输入信息。
\n\n");
printf("★★请选择需要执行的菜单项:
\n\n");
scanf("%d",&l);
switch(l)
{case1:
{printf("请输入所需统计的教师人数,且人数小于一百\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
printf("请输入第%d位教师信息\n",i);
shuru1(i);/*输入教师信息*/
b[i]=p[i].a;/*b表示的是教师所授课程的数目,i指定第几位教师*/
if(i==n)
break;
}cd1=1;
printf("输入结束,请进入下一项\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");
}break;
case2:
{if(cd1==1)
{printf("请对应输入教师的授课信息\n");
for(i=1;i<=n;i++)
{printf("请输入第%d位教师的课程信息\n",i);
for(j=1;j<=b[i];j++)
{shuru2(i,j);/*输入课程信息*/
if(j==b[i])
break;
printf("请输入下一课程信息!
\n");}
if(i==n)
break;}
cd2=2;
printf("输入结束,请进入下一项\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");}
else
printf("o(︶︿︶)o请先输入教师信息!
\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n");}break;
case3:
{if((cd1==1)&&(cd2==2))
{for(e=1;e<=n;e++)
{for(f=1;f<=b[e];f++)
{c=p[e].shouke[f].bjsm;
a[f]=dan(c,p[e].shouke[f].llks,p[e].shouke[f].syks);}
sum[e]=0;
for(f=1;f<=b[e];f++)
sum[e]+=a[f];
printf("第%d位教师的工作量=%.2f\n",e,sum[e]);}cd3=3;
printf("计算完成,请进入下一项\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");}
else
printf("o(︶︿︶)o请先输入教师信息及其授课信息!
\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n\n");}break;
case4:
{if((cd1==1)&&(cd2==2)&&(cd3==3))
{shuchu(b,n,sum);/*调用输出函数,输出完整的教师信息*/
cd4=4;
printf("输出完成,请进入下一项\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");}
else
printf("o(︶︿︶)o请先完善输入信息!
\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n\n");}break;
case5:
if((cd1==1)&&(cd2==2)&&(cd3==3))
save(sum,n,b);
else
printf("o(︶︿︶)o请先完善信息并运算!
\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n\n\n");break;
case6:
printf("程序结束*******谢谢使用\n");
printf("^_^^_^^_^^_^^_^\n\n\n\n");
exit(0);
default:
printf("输入错误,请输入菜单中存在的序号!
\n<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n");}}}
/*输入教师信息*/
voidshuru1(inti)
{structteacher
{intjsh;
charname[20];
inta;
}tea;
printf("请输入教师号:
\n");
scanf("%d",&tea.jsh);
p[i].jsh=tea.jsh;
printf("请输入教师某:
\n");
scanf("%s",&tea.name);
strcpy(p[i].name,tea.name);
printf("请输入该名教师所授课程数目,且课程数目小于6:
\n");
scanf("%d",&tea.a);
p[i].a=tea.a;}
/*输入课程信息*/
voidshuru2(intj)
{structkcxx
{charkctm[20];
intbjsm;
ntllks;
intsyks;}kc;
printf("请输入课程题目:
\n");
scanf("%s",&kc.kctm);
strcpy(p[i].shouke[j].kctm,kc.kctm);
printf("请输入该课程的班级数目:
\n");
scanf("%d",&kc.bjsm);
p[i].shouke[j].bjsm=kc.bjsm;
printf("请输入该课程理论课时数目:
\n");
scanf("%d",&kc.llks);
p[i].shouke[j].llks=kc.llks;
printf("请输入该课程实验课时数目:
\n");
scanf("%d",&kc.syks);
p[i].shouke[j].syks=kc.syks;}
/*单个教学任务总课时计算*/
floatdan(intbjs,intllks,intsyks)
{floatdgks;
if(bjs>=4)
dgks=(llks+syks)*2.5;
else
if(bjs>=3)
dgks=2*(llks+syks);
else
dgks=(llks+syks)*1.5;
returndgks;}
/*输出函数*/
voidshuchu(int*b,intn,float*sum)
{inti,j;
printf("\n\n\n");
printf("信息输出如下:
\n\n");
printf(":
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
\n");
for(i=1;i<=n;i++)
{printf("教师号教师某\n");
printf("%5d%10s\n\n",p[i].jsh,p[i].name);
printf("所授课程班级数目理论课时实验课时\n");
for(j=1;j<=b[i];j++)
{printf("%5s%10d%10d%10d\n\n",p[i].shouke[j].kctm,p[i].shouke[j].bjsm,p[i].shouke[j].llks,p[i].shouke[j].syks);}
printf("总教学工作量=%.2f课时\n",sum[i]);
printf(":
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
\n");
printf("\n\n");}}}
/*保存信息*/
voidsave(float*sum,intn,int*b)
{intz,i;
FILE*fp,*fq;
printf("请确认信息,如需文件保存请输入1并回车,否则输入2并回车。
\n");
/*教师信息及统计结果的保存*/
scanf("%d",&z);
if(z==1)
{if((fp=fopen("teacher_xx","wb"))==NULL)
{printf("文件打开失败\n");
printf("未保存\n");}
else
{fq=fopen("teacher_gzl","wb");
for(i=1;i<=n;i++)
if(fwrite(&tea[i],sizeof(structteacher),1,fp)!
=1)
printf("文件输出失败\n");
else
fwrite(&sum[i],4,1,fq);}
fclose(fp);
fclose(fq);
printf("保存成功\n");}}
else
printf("未保存\n");
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教师 工作量 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)