您的当前位置:首页正文

c语言教师工作量管理系统

2023-02-15 来源:爱go旅游网


学院

课 程 设 计 报 告

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]Stephen Prata《Primer Plus》著 北京:人民邮电出版社2014年12月。 审核批准意见 系主任(签字) 年 月 日

指导教师评语及成绩评定表

指导教师评语 设计过程 (40) 设计报告 (50) 小组答辩 (10) 总成绩 (100) 成绩

指导教师签字:

年 月 日

目录

前 言.................................................................................................................................................- 5 -

一、需求分析...................................................................................................................................- 5 -

1、 安全性分析.......................................................................................................................- 5 -

2、 稳定性分析.......................................................................................................................- 6 -

1、主要功能分析.....................................................................................................................- 6 -

二、具体设计流程...........................................................................................................................- 7 -

1、小组分工.............................................................................................................................- 7 -

2、程序设计流程图.................................................................................................................- 8 -

三、详细实现...................................................................................................................................- 9 -

(一)main 函数..............................................................................................................- 9 -

(二)shuru()函数...................................................................................................- 11 -

四、测试.........................................................................................................................................- 12 -

五、心得体会.................................................................................................................................- 14 -

六、致谢.........................................................................................................................................- 15 -

参考文献.........................................................................................................................................- 16 -

附录 1—用户手册..........................................................................................................................- 17 -

附录 2—程序代码..........................................................................................................................- 18 -

前 言

随着高等学校的快速发展,高校教师的规模越来越大,教职工的 数量也越来越多,每年对高校教师的评教管理无疑是一项琐碎、复杂 而又十分细致的工作。关于工作量的计算,项目繁多,而且一般不允 许出错。在以往,教务部门对教师工作量的统计工作一直都是采取手 工的方式,每年需填制大量的表格,这就会耗费工作人员大量的时间 和精力。如若采用专门的计算机管理系统,不仅能够保证工作量核算 准确无误、快速输出,而且还可以利用计算机对有关工作量的各种信 息进行统计,同时计算机具有手工管理所无法比拟的优点,例如检索 迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低 等。这些优点能够极大地提高教师工作量管理的效率,也是企业的科 学化、正规化管理与世界接轨的重要条件。使用计算机管理系统来管 理高校教师工作量已成为目前的趋势,使用计算机可以高速,快捷地 完成以上工作。在计算机联网后,数据在网上传递,可以实现数据共 享,避免重复劳动,规范数据管理行为,从而提高管理效率和水平。 高校教师工作量管理系统便是以计算机为工具,通过对工作量管理所 需的信息管理,不仅把管理人员从繁琐的数据计算处理中解脱出来, 而且优化了管理体系,使其高效化,简易化、智能化,也提高了透明 性和互动性。

一、需求分析

根据任务书给定的“课程设计内容”和“课程设计要求”作如下 的需求分析。该系统主要适用于学校教务处的工作人员统计教师的课 程量,系统首先要功能齐全,操作简便,还应该具有安全、稳定的特 点。

1、 安全性分析

系统管理的数据涉及到学院的所有教师,数据量较,,大且是一 种基础性数据,能够为其它方面的学生管理工作提供重要参考,所以 要通过设置密码等手段确保数据不能被随意的删减和修改。 2、 稳定性分析

指系统比较健壮,只要是用户的合理操作,系统都应给出合

理·正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。

3、主要功能分析

计算每个老师在一个学期中所教课程的总工作量。(教师单个教 学任务的信息为:教师号、姓名、性别、职称、任教课·程、班级、 班级数目、理论课时、实验课时、单个教学任务总课时)

A、教师信息处理

(1) 输入教师授课教学信息,包括教师号、姓名、性别··、职 称、任教课程、班级、班级数目、理论课时、实验课时。

(2) 插入(修改)教师授课教学信息: (3) 删除教师授课教学信息: (4) 浏览教师授课教学信息: B、教师工作量数据处理:

(1) 计算单个教学任务总课时。计算原则如下表: 班级数目 单个教学任务总课时 2 3 >=4 (2)

1.5*(理论课时+实验课时) 2*(理论课时+实验课时) 2.5*(理论课时+实验课时) 计算一个教师一个学期总的教学工作量。总的教学工作量=

所有单个教学任务总课时之和。

(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 函数

void main() {

//主函数

int t;

printf(\" 欢迎进入教师工作量管理系统 \\n\");

printf(\"--------------------------------------------------------\\n\"); do {

按 1, 输入信息 printf(\" *** *** \\n\"); 按 2, 修改信息 *** \\n\"); printf(\" ***

按 3, 删除信息 printf(\" *** *** \\n\"); 按 4, 浏览信息 printf(\" *** *** \\n\"); 按 5, 查询信息 printf(\" *** *** \\n\"); 按 0, 退出系统 printf(\" *** *** \\n\");

printf(\"--------------------------------------------------------\\n\"); printf(\" 请输入选项(0-6):\");

scanf(\"%d\ if(t<=0&&t>=5) {

do {

printf(\"请重新输入选项(0-6):\"); scanf(\"%d\ }

while(6<=t&&t<=0);} switch(t) {

case 0:

break; case 1:

shuru();break; case 2:

xiugai();break; case 3:

shanchu();break; case 4:

liulan();break; case 5:

chaxun();break; } }

while(t!=0); }

(二)shuru()函数

void shuru() {

int j;int d=1,c; if(n==0) tt=tea;

printf(\"请输入教师号:\"); scanf(\"%s\ printf(\"请输入姓名:\"); scanf(\"%s\ printf(\"请输入性别:\"); scanf(\"%s\ printf(\"请输入职称;\"); scanf(\"%s\ printf(\"请输入任教课程:\"); scanf(\"%s\ printf(\"请输入班级:\");

scanf(\"%d\ printf(\"请输入班级数目(>=2):\"); scanf(\"%d\

if(tea[i].shumu<2) do {

printf(\"请重新输入(>=2):\"); scanf(\"%d\

}

while(tea[i].shumu<2);

printf(\"请输入理论课时:\");

scanf(\"%lf\ printf(\"请输入实验课时:\");

scanf(\"%lf\ n++;i++;tt++;

printf(\"信息输入完毕!\\n\"); printf(\"-------------------------------------------------------------\\n\"); }

四、测试

输入教师信息:

修改教师信息:

删除教师信息:

浏览教师信息:

查询教师信息:

五、心得体会

对于这次我们组设计的教师工作量管理系统,我感觉自己花了很多

的时间并投入很多努力,虽然总是一次一次出现错误,并感到特气馁,

但我还是坚持了下来,通过同学和老师的帮助,把错误一个一个都解

决掉了,最后才得以成功。所以我要感谢老师和帮助过我的同学,让 我在我的课程设计中坚持了下来。

虽然变好了程序,获得了运行的结果,但是我也自知其中存在许 多的不足之处,比如程序过于冗长,运行过程中界面有些混乱,容易 让操作人员产生误解,某些功能不太完善。当然也有其优点所在,如 程序结构清晰,有明确的操作提示等。

总之,经过几天的课程设计,我对 C 语言有了更加浓厚的兴趣, 它是一件非常有用的工具,学好它对我们以后的工作大有裨益。

六、致谢

为期一周的课程设计已经接近尾声了,回想这一周,小组的一起 探讨,一起实践,共同前进,互相帮助,互相扶持,通过交流思想和 方法把本组的课题攻克。同时也要感谢指导老师的耐心指导,一遍一 遍的请教老师,老师耐心的解答,指出问题帮助我们做出一份合格的 设计方案。同学和老师的帮助让我挑战了自己。

参考文献

[1]谭浩强.《程序设计(第四版)》北京:清华大学出版社 2010 年 6 月。 [2]Stephen Prata《Primer Plus》著 北京:人民邮电出版社 2014 年 12 月

附录 1—用户手册

运行程序后,会出现菜单界面,然后可以选择菜单选项选择要实现 的功能,

附录 2—程序代码

#include #include struct teacher{ char number[10]; char xingming[10]; char sex[3]; char zhicheng[10]; char kecheng[10]; int banji; int shumu; double lilunkeshi; double shiyankeshi; double zongkeshi; 时 };

struct teacher tea[100]; struct teacher *tt; int n=0;int i=0; void shuru(); void chaxun(); void xiugai();

//班级

//班级数目

//理论课时 //实验课时

//单个教学任务总课//教师号 //教师名 //性别 //职称 //任教课程

void shanchu(); void liulan();

void main() //主函数 { int t; printf(\"

欢迎进入教师工作量管理系统

\\n\");

printf(\"--------------------------------------------------------------------------------\\n\"); do {

按 1, 输入信息 *** \\n\"); printf(\" *** printf(\" printf(\" printf(\" printf(\"

*** *** *** ***

按 2, 修改信息 按 3, 删除信息 按 4, 浏览信息 按 5, 查询信息 *** \\n\"); *** \\n\"); *** \\n\"); *** \\n\");

按 0, 退出系统 printf(\" *** *** \\n\");

printf(\"--------------------------------------------------------------------------------\\n\"); printf(\" 请输入选项(0-6):\"); scanf(\"%d\ if(t<=0&&t>=5) {do {

printf(\"请重新输入选项(0-6):\"); scanf(\"%d\ }

while(6<=t&&t<=0);} switch(t) {

case 0: break; case 1:

shuru();break; case 2:

xiugai();break; case 3:

shanchu();break; case 4:

liulan();break; case 5:

chaxun();break; }}while(t!=0); }

void shuru() {

int j;int d=1,c; if(n==0) tt=tea;

//输入函数

printf(\"请输入教师号:\"); scanf(\"%s\ printf(\"请输入姓名:\"); scanf(\"%s\ printf(\"请输入性别:\"); scanf(\"%s\ printf(\"请输入职称;\"); scanf(\"%s\ printf(\"请输入任教课程:\"); scanf(\"%s\ printf(\"请输入班级:\");

scanf(\"%d\

printf(\"请输入班级数目(>=2):\"); scanf(\"%d\ if(tea[i].shumu<2) do {

printf(\"请重新输入(>=2):\"); scanf(\"%d\ }while(tea[i].shumu<2);

printf(\"请输入理论课时:\"); scanf(\"%lf\ printf(\"请输入实验课时:\"); scanf(\"%lf\ n++;i++;tt++;

printf(\"信息输入完毕!\\n\");

printf(\"--------------------------------------------------------------------------------\\n\"); }

void xiugai() { int c; int j; int d=0; int s=0; int z=0; char a[10];

printf(\"请输入教师号:\");

scanf(\"%s\ for( j=0;jif(strcmp(tea[j].number,a)==0)//strcmp(tea[j].number,a),如果 a 与 tea[j].number 相等,则输出为 0 { do{

//修改函数

printf(\"--------------------------------------------------------------------------------\\n\");

修改教师号, 请按 1 printf(\" \\n\");

printf(\" printf(\" printf(\" printf(\" printf(\" printf(\" printf(\" printf(\"

修改姓名 , 请按 2 修改性别 , 请按 3 修改职称 , 请按 4 修改任教课程,请按 5 修改班级 ,

请按 6

修改班级数目,请按 7 修改理论课时,请按 8 修改实验课时,请按 9

\\n\"); \\n\"); \\n\"); \\n\"); \\n\"); \\n\"); \\n\"); \\n\");

退出系统 ,请按 0 printf(\" \\n\");

printf(\"--------------------------------------------------------------------------------\\n\"); printf(\"请输入选项:\"); scanf(\"%d\ switch(c) {

case 0: break; case 1:

printf(\"请输入新教师号:\"); scanf(\"%s\ case 2:

printf(\"请输入新的姓名:\"); scanf(\"%s\ case 3:

printf(\"请输入新的性别:\"); scanf(\"%s\ case 4:

printf(\"请输入新的职称:\"); scanf(\"%s\ case 5:

printf(\"请输入新的任教课程:\"); scanf(\"%s\ case 6:

printf(\"请输入新的班级:\"); scanf(\"%d\ case 7:

printf(\"请输入新的班级数目:\"); scanf(\"%d\ case 8:

printf(\"请输入新的理论课时:\"); scanf(\"%ld\ case 9:

printf(\"请输入新的实验课时:\");

scanf(\"%ld\

}

}while(c!=0); s=1; }}

printf(\"--------------------------------------------------------------------------------\\n\"); if(s!=1)

printf(\"输入无效,请核实后再输入!\\n\");

printf(\"--------------------------------------------------------------------------------\\n\"); }

void shanchu() { int j;

int d=0;int dd=n; int s;

char a[10]; if(n!=0) {

printf(\"请输入要删除的教师号:\");

scanf(\"%s\ do

{for(j=0;jif(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;stea[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\");} void liulan()

//浏览函数 {

if(n!=0) { int j;

for( j=0;jif(tea[j].shumu==2)

tea[j].zongkeshi=1.5*(tea[j].lilunkeshi+tea[j].shiyankeshi); else if(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(\"教师号\ 姓名\ 性别\\n\");

printf(\"%s\%s\%s\\n\ printf(\"职称\ 任教课程\ 班级\\n\");

printf(\"%s\%s\\%d\\n\ printf(\"班级数目\ 理论课时\\ 实验课时\\ 教学任务总课时\\n\"); printf(\"%d\\%lf\\\

printf(\"%lf\\\ printf(\"%lf\ printf(\"\\n\");

printf(\"--------------------------------------------------------------------------------\\n\");}

} else

printf(\"数据为空!!!\\n\"); printf(\"--------------------------------------------------------------------------------\\n\"); }

void chaxun()

//查询函数

{ int a;

printf(\"--------------------------------------------------------------------------------\\n\"); printf(\"按 1,依教师号查询\\n\"); printf(\"按 2,依姓名查询\\n\"); printf(\"请输入数字查询(1 或 2):\");

scanf(\"%d\ if(a!=1&&a!=2) {do {

printf(\"请重新输入数字查询(1 或 2):\"); scanf(\"%d\

}while(a!=1&&a!=2); }

switch(a) {

case 1:

{ int j; char q[10]; int d=0;

printf(\"请输入教师号:\");

scanf(\"%s\ for( j=0;jif(strcmp(q,tea[j].number)==0) {

if(tea[j].shumu==2)

tea[j].zongkeshi=1.5*(tea[j].lilunkeshi+tea[j].shiyankeshi); else if(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(\"教师号\ 姓名\ 性别\\n\");

printf(\"%s\%s\%s\\n\printf(\"职称\ 任教课程\ 班级\\n\");

printf(\"%s\%s\\%d\\n\printf(\"班级数目\ 理论课时\\ 实验课时\\ 教学任务总课时\\n\"); printf(\"%d\\%lf\\\

printf(\"%lf\\\ printf(\"%lf\ printf(\"\\n\");

printf(\"--------------------------------------------------------------------------------\\n\"); d=1; }}

if(d==0)

printf(\"请核实后再输入!!!\\n\");} break; case 2:

{ int j;

char q[10];

int d=0;

printf(\"请输入姓名:\");

scanf(\"%s\ for( j=0;jif(strcmp(q,tea[j].xingming)==0) {

if(tea[j].shumu==2)

tea[j].zongkeshi=1.5*(tea[j].lilunkeshi+tea[j].shiyankeshi); else if(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(\"教师号\ 姓名\ 性别\\n\");

printf(\"%s\%s\%s\\n\printf(\"职称\ 任教课程\ 班级\\n\");

printf(\"%s\%s\\%d\\n\printf(\"班级数目\ 理论课时\\ 实验课时\\ 教学任务总课时\\n\");

printf(\"%d\\%lf\\\ printf(\"%lf\\\ printf(\"%lf\ printf(\"\\n\");

printf(\"--------------------------------------------------------------------------------\\n\"); d=1; } }

if(d==0)

printf(\"请核实后再输入!!!\\n\");} break; } }

因篇幅问题不能全部显示,请点此查看更多更全内容