c语言教师工作量管理系统.docx
《c语言教师工作量管理系统.docx》由会员分享,可在线阅读,更多相关《c语言教师工作量管理系统.docx(28页珍藏版)》请在冰豆网上搜索。
![c语言教师工作量管理系统.docx](https://file1.bdocx.com/fileroot1/2023-2/24/dbe7fcc3-8656-42b2-91e2-bdc84ce39bfa/dbe7fcc3-8656-42b2-91e2-bdc84ce39bfa1.gif)
c语言教师工作量管理系统
学院
课程设计报告
C程序设计课程设计
专业
电子信息工程
班级
姓名
学号
指导教师
2016年12月
·新能源与动力工程学院课程设计任务书
课程名称:
C语言课程设计指导教师(签名):
班级:
姓名:
学号:
一、课程设计题目
教师工作量管理系统
二、课程设计使用的原始资料(数据)及设计技术要求:
1.教材
2.课程设计说明书
三、课程设计的目的
通过课程设计,主要达到以下目的:
1.使学生增进对C语言这门课的感性认识,加深对程序设计理论方面的理解;
2.使学生掌握计算机的内部功能模块的应用;
3.使学生了解和掌握C语言程序设计过程、方法及实现,为以后设计和实现计算机应用系统打下良好基础。
四、课程设计的主要内容和要求(包括原始数据、技术参数、设计要求、工作量要求等)
1.设计要求详见前言
2.技术参数详见设计分析
3.用户操作详见附录一
4.原始数据详见附录二
五、工作进度安排
时间
设计内容
要求
12月20日
熟悉题目、查阅资料,拟定设计方案
按要求制定出切实可行的方案
12月21日
设计C语言程序
完成C语言程序设计
12月22~23日
程序调试及修改
先进行程序调试再逐条分析、修改
12月24~25日
程序整理调试并完成设计报告
实现设计要求,报告按要求装订成册
12月26日
答辩
向老师全面展示课程管理系统
六、主要参考文献
[1]谭浩强.《程序设计(第四版)》北京:
清华大学出版社2010年6月。
[2]StephenPrata《PrimerPlus》著北京:
人民邮电出版社2014年12月。
审核批准意见
系主任(签字) 年 月 日
指导教师评语及成绩评定表
指导教师评语
成绩
设计过程
(40)
设计报告
(50)
小组答辩
(10)
总成绩
(100)
指导教师签字:
年月日
前言
随着高等学校的快速发展,高校教师的规模越来越大,教职工的数量也越来越多,每年对高校教师的评教管理无疑是一项琐碎、复杂而又十分细致的工作。
关于工作量的计算,项目繁多,而且一般不允许出错。
在以往,教务部门对教师工作量的统计工作一直都是采取手工的方式,每年需填制大量的表格,这就会耗费工作人员大量的时间和精力。
如若采用专门的计算机管理系统,不仅能够保证工作量核算准确无误、快速输出,而且还可以利用计算机对有关工作量的各种信息进行统计,同时计算机具有手工管理所无法比拟的优点,例如检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高教师工作量管理的效率,也是企业的科学化、正规化管理与世界接轨的重要条件。
使用计算机管理系统来管理高校教师工作量已成为目前的趋势,使用计算机可以高速,快捷地完成以上工作。
在计算机联网后,数据在网上传递,可以实现数据共享,避免重复劳动,规范数据管理行为,从而提高管理效率和水平。
高校教师工作量管理系统便是以计算机为工具,通过对工作量管理所需的信息管理,不仅把管理人员从繁琐的数据计算处理中解脱出来,而且优化了管理体系,使其高效化,简易化、智能化,也提高了透明性和互动性。
一、需求分析
根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
该系统主要适用于学校教务处的工作人员统计教师的课程量,系统首先要功能齐全,操作简便,还应该具有安全、稳定的特点。
1、安全性分析
系统管理的数据涉及到学院的所有教师,数据量较,,大且是一种基础性数据,能够为其它方面的学生管理工作提供重要参考,所以要通过设置密码等手段确保数据不能被随意的删减和修改。
2、稳定性分析
指系统比较健壮,只要是用户的合理操作,系统都应给出合理·正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
3、主要功能分析
计算每个老师在一个学期中所教课程的总工作量。
(教师单个教学任务的信息为:
教师号、姓名、性别、职称、任教课·程、班级、班级数目、理论课时、实验课时、单个教学任务总课时)
A、教师信息处理
(1)输入教师授课教学信息,包括教师号、姓名、性别··、职称、任教课程、班级、班级数目、理论课时、实验课时。
(2)插入(修改)教师授课教学信息:
(3)删除教师授课教学信息:
(4)浏览教师授课教学信息:
B、教师工作量数据处理:
(1)计算单个教学任务总课时。
计算原则如下表:
班级数目
单个教学任务总课时
2
1.5*(理论课时+实验课时)
3
2*(理论课时+实验课时)
>=4
2.5*(理论课时+实验课时)
(2)计算一个教师一个学期总的教学工作量。
总的教学工作量=所有单个教学任务总课时之和。
(3)教师数据查询:
提示:
输入教师号或其他信息,即读出所有数据信息,并显示出来。
C、教师综合信息输出
提示:
输出教师信息到屏幕。
整个程序的设计可分为7部分,即main函数,shuru()函数,xiugai()函数,shanchu()函数,liulan()函数,chaxun()函数,以及最后的退出函数。
A.main函数。
这是整个程序的主函数,调用其他函数来完成功能的实现。
B.shuru()函数。
输入教师的一些基本信息。
C.xiugai()函数。
修改教师的信息。
D.shanchu()函数。
删除教师管理系统的教师信息。
E.liulan()函数。
显示所输入的教师的信息。
F.chaxun()函数。
通过教师号,查询教师的信息。
G.退出系统。
退出运行界面。
二、具体设计流程
1、小组分工
图
(1)小组分工
2、程序设计流程图
图
(2)主函数流程图
图(3)工作量计算流程图
图(4)主要菜单流程图
三、详细实现
(一)main函数
voidmain()//主函数
{
intt;
printf("欢迎进入教师工作量管理系统\n");
printf("--------------------------------------------------------\n");
do
{
printf("***按1,输入信息***\n");
printf("***按2,修改信息***\n");
printf("***按3,删除信息***\n");
printf("***按4,浏览信息***\n");
printf("***按5,查询信息***\n");
printf("***按0,退出系统***\n");
printf("--------------------------------------------------------\n");
printf("请输入选项(0-6):
");
scanf("%d",&t);
if(t<=0&&t>=5)
{
do
{
printf("请重新输入选项(0-6):
");
scanf("%d",&t);
}
while(6<=t&&t<=0);}
switch(t)
{
case0:
break;
case1:
shuru();break;
case2:
xiugai();break;
case3:
shanchu();break;
case4:
liulan();break;
case5:
chaxun();break;
}
}
while(t!
=0);
}
(二)shuru()函数
voidshuru()
{
intj;intd=1,c;
if(n==0)
tt=tea;
printf("请输入教师号:
");
scanf("%s",tt->number);
printf("请输入姓名:
");
scanf("%s",tt->xingming);
printf("请输入性别:
");
scanf("%s",tt->sex);
printf("请输入职称;");
scanf("%s",&tt->zhicheng);
printf("请输入任教课程:
");
scanf("%s",&tt->kecheng);
printf("请输入班级:
");
scanf("%d",&tt->banji);
printf("请输入班级数目(>=2):
");
scanf("%d",&tea[i].shumu);
if(tea[i].shumu<2)
do
{
printf("请重新输入(>=2):
");
scanf("%d",&tea[i].shumu);
}
while(tea[i].shumu<2);
printf("请输入理论课时:
");
scanf("%lf",&tt->lilunkeshi);
printf("请输入实验课时:
");
scanf("%lf",&tt->shiyankeshi);
n++;i++;tt++;
printf("信息输入完毕!
\n");
printf("-------------------------------------------------------------\n");
}
四、测试
输入教师信息:
修改教师信息:
删除教师信息:
浏览教师信息:
查询教师信息:
五、心得体会
对于这次我们组设计的教师工作量管理系统,我感觉自己花了很多的时间并投入很多努力,虽然总是一次一次出现错误,并感到特气馁,但我还是坚持了下来,通过同学和老师的帮助,把错误一个一个都解决掉了,最后才得以成功。
所以我要感谢老师和帮助过我的同学,让我在我的课程设计中坚持了下来。
虽然变好了程序,获得了运行的结果,但是我也自知其中存在许多的不足之处,比如程序过于冗长,运行过程中界面有些混乱,容易让操作人员产生误解,某些功能不太完善。
当然也有其优点所在,如程序结构清晰,有明确的操作提示等。
总之,经过几天的课程设计,我对C语言有了更加浓厚的兴趣,它是一件非常有用的工具,学好它对我们以后的工作大有裨益。
六、致谢
为期一周的课程设计已经接近尾声了,回想这一周,小组的一起探讨,一起实践,共同前进,互相帮助,互相扶持,通过交流思想和方法把本组的课题攻克。
同时也要感谢指导老师的耐心指导,一遍一遍的请教老师,老师耐心的解答,指出问题帮助我们做出一份合格的设计方案。
同学和老师的帮助让我挑战了自己。
参考文献
[1]谭浩强.《程序设计(第四版)》北京:
清华大学出版社2010年6月。
[2]StephenPrata《PrimerPlus》著北京:
人民邮电出版社2014年12月
附录1—用户手册
运行程序后,会出现菜单界面,然后可以选择菜单选项选择要实现的功能,
附录2—程序代码
#include
#include
structteacher{
charnumber[10];//教师号
charxingming[10];//教师名
charsex[3];//性别
charzhicheng[10];//职称
charkecheng[10];//任教课程
intbanji;//班级
intshumu;//班级数目
doublelilunkeshi;//理论课时
doubleshiyankeshi;//实验课时
doublezongkeshi;//单个教学任务总课时
};
structteachertea[100];
structteacher*tt;
intn=0;inti=0;
voidshuru();
voidchaxun();
voidxiugai();
voidshanchu();
voidliulan();
voidmain()//主函数
{
intt;
printf("欢迎进入教师工作量管理系统\n");
printf("--------------------------------------------------------------------------------\n");
do
{
printf("***按1,输入信息***\n");
printf("***按2,修改信息***\n");
printf("***按3,删除信息***\n");
printf("***按4,浏览信息***\n");
printf("***按5,查询信息***\n");
printf("***按0,退出系统***\n");
printf("--------------------------------------------------------------------------------\n");
printf("请输入选项(0-6):
");
scanf("%d",&t);
if(t<=0&&t>=5)
{do
{
printf("请重新输入选项(0-6):
");
scanf("%d",&t);
}
while(6<=t&&t<=0);}
switch(t)
{
case0:
break;
case1:
shuru();break;
case2:
xiugai();break;
case3:
shanchu();break;
case4:
liulan();break;
case5:
chaxun();break;
}}while(t!
=0);
}
voidshuru()//输入函数
{
intj;intd=1,c;
if(n==0)
tt=tea;
printf("请输入教师号:
");
scanf("%s",tt->number);
printf("请输入姓名:
");
scanf("%s",tt->xingming);
printf("请输入性别:
");
scanf("%s",tt->sex);
printf("请输入职称;");
scanf("%s",&tt->zhicheng);
printf("请输入任教课程:
");
scanf("%s",&tt->kecheng);
printf("请输入班级:
");
scanf("%d",&tt->banji);
printf("请输入班级数目(>=2):
");
scanf("%d",&tea[i].shumu);
if(tea[i].shumu<2)
do
{
printf("请重新输入(>=2):
");
scanf("%d",&tea[i].shumu);
}while(tea[i].shumu<2);
printf("请输入理论课时:
");
scanf("%lf",&tt->lilunkeshi);
printf("请输入实验课时:
");
scanf("%lf",&tt->shiyankeshi);
n++;i++;tt++;
printf("信息输入完毕!
\n");
printf("--------------------------------------------------------------------------------\n");
}
voidxiugai()//修改函数
{
intc;
intj;
intd=0;
ints=0;
intz=0;
chara[10];
printf("请输入教师号:
");
scanf("%s",&a);
for(j=0;j{
if(strcmp(tea[j].number,a)==0)//strcmp(tea[j].number,a),如果a与tea[j].number相等,则输出为0
{
do{
printf("--------------------------------------------------------------------------------\n");
printf("修改教师号,请按1\n");
printf("修改姓名,请按2\n");
printf("修改性别,请按3\n");
printf("修改职称,请按4\n");
printf("修改任教课程,请按5\n");
printf("修改班级,请按6\n");
printf("修改班级数目,请按7\n");
printf("修改理论课时,请按8\n");
printf("修改实验课时,请按9\n");
printf("退出系统,请按0\n");
printf("--------------------------------------------------------------------------------\n");
printf("请输入选项:
");
scanf("%d",&c);
switch(c)
{
case0:
break;
case1:
printf("请输入新教师号:
");
scanf("%s",tea[j].number);break;
case2:
printf("请输入新的姓名:
");
scanf("%s",tea[j].xingming);break;
case3:
printf("请输入新的性别:
");
scanf("%s",tea[j].sex);break;
case4:
printf("请输入新的职称:
");
scanf("%s",tea[j].zhicheng);break;
case5:
printf("请输入新的任教课程:
");
scanf("%s",tea[j].kecheng);break;
case6:
printf("请输入新的班级:
");
scanf("%d",&tea[j].banji);break;
case7:
printf("请输入新的班级数目:
");
scanf("%d",&tea[j].shumu);break;
case8:
printf("请输入新的理论课时:
");
scanf("%ld",&tea[j].lilunkeshi);break;
case9:
printf("请输入新的实验课时:
");
scanf("%ld",&tea[j].shiyankeshi);break;
}
}while(c!
=0);
s=1;
}}
printf("--------------------------------------------------------------------------------\n");
if(s!
=1)
printf("输入无效,请核实后再输入!
\n");
printf("--------------------------------------------------------------------------------\n");
}
voidshanchu()//删除函数
{
intj;
intd=0;intdd=n;
ints;
chara[10];
if(n!
=0)
{
printf("请输入要删除的教师号:
");
scanf("%s",&a);
do
{for(j=0;j{
if(strcmp(a,tea[j].number)==0)
{s=j;
d=1;}
dd--;
}
}while(strcmp(a,tea[j].number)!
=0&&dd!
=0);
if(d==1){
if(s!
=(n-1))
{
for(s;s{
tea[s].banji=tea[s+1].banji;
strcpy(tea[s].kecheng,tea[s+1].kecheng);/*将tea[s+1].kecheng复制给tea[s].kecheng*/
tea[s].lilunkeshi=tea[s+1].lilunkeshi;
strcpy(tea[s].number,tea[s+1].number);
strcpy(tea[s].sex,tea[s+1].sex);
tea[s].shiyankeshi=tea[s+1].shiyankeshi;
tea[s].shumu=tea[s+1].shumu;
strcpy(tea[s].xingming,tea[s+1].xingming);
strcpy(tea[s].zhicheng,tea[s+1].zhicheng);
tea[s].zongkeshi=tea[s+1].zongkeshi;
}
n--;tt--;
printf("删除完毕!
!
!
\n");
}else{n--;tt--;}}
else{printf("输入无效!
!
!
\n");
}
}
else
printf("输入无效!
!
!
\n");
printf("删除完毕!
!
!
\n");
printf("--------------------------------------------------------------------------------\n");}
voidliulan()//浏览函数
{
if(n!
=0)
{
intj;
for(j=0;j{
if(tea[j].shumu==2)
tea[j].zongkeshi=1.5*(tea[j].lilunkeshi+tea[j].shiyankeshi);
elseif(tea[j].shumu==3)
tea[j].zongkeshi=2*(tea[j].lilunkeshi+tea[j].shiyankeshi);
else
tea[j].zongkeshi=2.5*(tea[j].lilunkeshi+tea[j].shiyankeshi);
printf("--------------------------------------------------------------------------------\n");
printf("教师号\t姓名\t性别\n");
printf("%s\t%s\t%s\n",tea[j].number,tea[j].xingming,tea[j].sex);
printf("职称\t任教课程\t班级\n");
printf("%s\t%s\t\t%d\n",tea[j].zhicheng,tea[j].kecheng,tea[j].banji);
printf("班级数目\t