C课程设计教师工作量计算.docx
- 文档编号:7278914
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:15
- 大小:41.69KB
C课程设计教师工作量计算.docx
《C课程设计教师工作量计算.docx》由会员分享,可在线阅读,更多相关《C课程设计教师工作量计算.docx(15页珍藏版)》请在冰豆网上搜索。
C课程设计教师工作量计算
辽宁工业大学
C语言程序设计课程设计(论文)
题目:
教师工作量计算
院(系):
专业班级:
学号:
学生姓名:
指导教师:
教师职称:
起止时间:
课程设计(报告)任务及评语
院(系):
软件学院教研室:
软件教研窒
学号
学生姓名
专业班级
程序设计(报告)题目
教师工作量计算
程序设计(报告)任务
程序设计的任务与要求:
(1)掌握C语言编程的基础知识。
(2)较熟练地编写C语言应用程序。
(3)了解C语言的常用标准函数、编程技巧、异常处理。
(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。
(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。
(7)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。
课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。
正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。
指导教师评语及成绩
成绩:
指导教师签字:
2009年1月10日
目录
第1章课程设计的目的与要求1
1.1课程设计目的1
1.2课程设计的实验环境1
1.3课程设计的预备知识1
1.4课程设计要求1
第2章课程设计内容2
2.1程序功能介绍2
2.2程序整体设计说明2
2.2.1设计思路2
2.2.2数据结构设计及用法说明2
2.2.3程序结构(流程图)6
2.2.4各模块的功能及程序说明6
2.3程序源代码及注释源程序7
第3章课程设计总结14
参考资料15
第1章课程设计的目的与要求
1.1课程设计目的
本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。
本课程设计的目的和任务:
1.巩固和加深学生对C语言课程的基本知识的理解和掌握
2.掌握C语言编程和程序调试的基本技能
3.利用C语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C语言解决实际问题的能力
1.2课程设计的实验环境
硬件要求能运行Windows2000/XP操作系统的微机系统。
C语言程序设计及相应的开发环境。
1.3课程设计的预备知识
熟悉C语言及C语言开发工具。
1.4课程设计要求
1.分析课程设计题目的要求
2.写出详细设计说明
3.编写程序代码,调试程序使其能正确运行
4.设计完成的软件要便于操作和使用
5.设计完成后提交课程设计报告
第2章课程设计内容
2.1程序功能介绍
在学校里,教师工作量统计是一项基本任务,本课题要求实现教师工作量统计这个功能,其基本功能包括创建教师基本信息,显示信息,查询、删除等。
2.2程序整体设计说明
2.2.1设计思路
编制一个教师工作量计算,包括创建每个教师的基本信息,显示信息,查询、删除等.
具体如下:
①显示每个教师的基本信息;
②按照教师的基本信息查询工作量;
③根据教师的信息可以删除教师的工作量信息;
通过用所学的C语言知识设计出一个教师工作量计算程序,用章节的方式设计出来用最直观的方式让人们了解
步骤:
①编写出系统功能模块结构图,目的为写流程图做好思路。
②画出流程图后创出程序的原代码。
③由自己做出了原代码可以上机操作编译、运行。
我的课程设计的整体就是按照课程设计任务书的内容编制一个教师工作量计算,可以把在学校里,教师工作量统计是一项基本任务,要求实现教师工作量统计这个功能,其基本功能包括创建教师基本信息,显示信息,查询、删除等。
2.2.2数据结构设计及用法说明
typedefstructteacher{
charname[MAX];
intnum[MAX];
charsex[MAX];
intinformation;
intworkload;
intdelete;
intcomputer;
structteacher*next;
}
本系统使用SQLServer作为后台数据库,使用一组ASP动态网页作为应用程序的用户界面.本系统完成后,可以部署在Windows2000Server服务器上,同一局域网中的用户使用IE浏览器即可查询数据和处理数据.本系统由以下几个功能模块组成:
本系统全称为教师工作量计算系统。
根据开发要求,它主要应用于教师工作量计算系统,完成对日常的教师信息和教师工作量的统计管理。
教师工作量计算系统可使学校管理员工减轻工作压力,r比较系统地对教师的基本信息和教师工作量进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。
目前,学校工作繁杂、资料重多。
目前,管理信息系统已进入高校内部,但还未普及,而对教师工作量信息管理来说,目前还没有一套完整的、统一的系统。
因此,开发一套适和大众的、兼容性好的系统是很有必要的。
1.主函数:
main()主函数,每一C程序都必须有一main()函数,可以根据自己的爱好把它放在程序的某个地方。
有些程序员把它放在最前面,而另一些程序员把它放在最后面,无论放在哪个地方,以下几点说明都是适合的。
1.main()参数在TurboC2.0启动过程中,传递main()函数三个参数:
argc,argv和env。
argc:
整数,为传给main()的命令行参数个数。
argv:
字符串数组。
在DOS3.X版本中,argv[0]为程序运行的全路径名;对DOS3.0。
以下的版本,argv[0]为空串("")。
argv[1]为在DOS命令行中执行程序名后的第一个字符串;argv[2]为执行程序名后的第二个字符串;argv[argc]为NULL。
env:
安符串数组。
env[]的每一个元素都包含ENVVAR=value形式的字符串。
其中ENVVAR为环境变量如PATH或87。
value为ENVVAR的对应值如C:
\DOS,C:
\TURBOC(对于PATH)或YES(对于87)。
TurboC2.0启动时总是把这三个参数传递给main()函数,可以在用户程序中说明(或不说明)它们,如果说明了部分(或全部)参数,它们就成为main()子程序
的局部变量。
2.Showdata()函数:
该函数列出一个清晰的结构,对本程序所运用的几个模块整体上有个统一认识,方便了对程序的调用,节省了时间。
3.Inputdata()函数:
该函数是一个输入函数,它运用了for循环语句,本程序定义了两个变量,通过scanf语句的使用,又调用了函数SIR,实现了简洁明了的对商品信息管理等进行键入。
4.del()函数:
该函数实现的是删除功能。
该函数虽然定义的变量不多,但通过if语句和scanf语句的使用,对文件进行了读去和运用,简便的删除所选的目标。
5.sort()函数:
该函数构成了一个排序模块,它实现了员工工资的排序。
该函数定义的变量虽少,但通过文件的连接和if循环语句的使用,该功能完整的显现出来了,仍然使用for语句,实现了目标。
6.modify()函数:
该函数是一个修改函数。
它通过if,scanf等函数的运用,可以修改本程序中所出现的所有错误。
通过数组的运用,缩短了程序的运行时间。
7.main()函数:
一个程序主函数不能少。
当以上的函数均编完之后,要实现各个功能操作的连接,还必须有主函数将它们联系起来,这样才能达到理想的结果。
对以上函数的连接,此程序采用了switch语句,格式清晰、容易接受。
至此商品信息管理的基本功能便基本实现。
8.辅助函数:
以上介绍的是完成商品信息管理这个功能,程序主要包含的函数,为了使程序更有条理性或者更加完整形象,可以将主要函数经常使用的一些功能编成一个函数,这样便可在多处很方便调用,如此程序中的file1()(用来打开数据文件的操作)、file2()(用来保存数据)、prt()函数等便起到这个作用。
另外还加了jm1()、jm2()进入界面、退出界面这两个函数,使本程序显得更加完整。
9.数组:
数组是一组具有相同类型和名称的变量的集合。
这些变量称为数组的元素,每个数组元素都有一个编号,这个编号叫做下标,我们可以通过下标来区别这些元素。
数组元素的个数有时也称之为数组的长度。
一般情况下,数组的元素类型必须相同,可以是前面讲过的各种基本数据类型。
但当数组类型被指定为变体型时,它的各个元素就可以是不同的类型。
数组和变量一样,也是有作用域的,按作用域的不同可以把数组分为:
过程级数组(或称为局部数组)、模块级数组以及全局数组。
10.调试分析:
为了便于查错、阅读,在设计该程序的时候我们采用了结构化程序方法编辑添加了尽可能多的注释,这为我们后来的调试过程带来了很多方便。
经过仔细检查之后进行上机调试。
在本次实习过程中碰到的编译、连接的错误主要有:
(1)缺少变量定义,定义位置不正确;
由于该程序相对来讲稍有些长,前后有些变量不容易联系起来,但是在错误信息的提示下一般还是很容易找到。
不过需要注意的是在定义的时候有些函数使用同样的变量名而表示不同的作用,因而使用要很小心,定义及定义的位置要特别留意。
为减少这样的错误我们后来还是用不同的变量名来表示,结果引起的那些错误解决了。
(2)语法错误;
大多的语法错误在通过书本参考下能够修改。
如没有注意具体数据使用是有一定的范围限定;在使用文件的时候忘记将文件先打开,对打开的方式与使用的情况不太注意而造成不匹配等。
这些语法错误有信息框的提示一般是能够排除的。
2.2.3程序结构(流程图)
2.2.4各模块的功能及程序说明
第一个模块:
主函数main()的功能是:
根据选单的选项调用各函数,并完成相映的功能。
第二个模块:
menu()的功能:
显示出选单。
第三个模块:
enter()的功能:
进入程序创建教师的基本信息。
第四个模块:
search()的功能:
查询教师的工作量信息。
第五个模块:
modify()的功能:
根据教师的信息删除教师的工作量。
第六个模块:
exit()的功能:
退出查询。
1、教师基本信息模块
教师基本信息模块具有教师信息输入、教师信息的增删、教师信息查询三个功能,教师基本信息包括教师工号、教师姓名、教师性别、所在岗位、工龄和工作量等信息。
教师增删实现了对数据库中教师信息的增加和删除。
教师可以通过教师号或教师姓名对教师信息进行查询。
2、教师工作量结构设置模块
根据该学校的教师工作量管理实际情况,本系统将工资结构分为基础工资、岗位工资、工龄工资三部分。
该模块可以对教师工作量设置等级,并对每个等级设置工作量标准。
3、教师工作量总模块
用户在教师工作量管理模块对该教师的工作量进行输入以后,在工作量汇总模块会自动对教师工作量进行汇总。
用户可以打印出工作量汇总表,打印之前可以通过打印预览功能进行打预览。
2.3程序源代码及注释源程序
*7.teacher.c源程序*/
/*******teacher.c***********/
/******头文件、函数原型及全局变量定义***********/
#include"stdio.h"
#include"bios.h"
#include"dos.h"
#include"conio.h"
#include"stdlib.h"
#include"string.h"
#include"mem.h"
#include"ctype.h"
#include"alloc.h"
#include"stdio.h"
#include"graphics.h"
#include"d:
\cbook\14\c14_m.c"/*根据实际存放位置设*/
typedefstructt1
{
charno[11];
charname[15];
charsex[5];
charprofess[15];
chardept[15];
charclass[15];
floatworkload;
floatlessonf;
structt1*prior;
structt1*next;
}TEACHER;
TEACHER*First;
TEACHER*Last;
TEACHER*p;
voidinit();/*初始化双链表*/
voidfirstr();/*显示头一条*/
voidlastr();/*显示最后一条*/
voidpriorr();/*显示前一条*/
voidnextr();/*显示下一条*/
voidclear();/*清除显示信息*/
voiddelete();/*删除当前记录*/
voidsave();/*保存*/
voidload();/*读入文件*/
voidsort();/*排序*/
voidcreate();/*创建双链表*/
voidprint(TEACHER*p);/*输出数据*/
voidrun(intm,intn);/*调用各功能*/
voidbutton(intbuttonx1,intbuttony1,intbuttonx2,
intbuttony2,char*name,intstat);/*按钮*/
voidwins(intx1,inty1,intx2,inty2);/*窗口*/
voidrealwin(intx1,inty1,intx2,inty2);/*校验窗口*/
voidmousewin();/*主控界面*/
voidcross(inty1,intx2,intpress);/*关闭按钮*/
char*Str[]={"First","Prior","Next","Last","Clear",
"Delete","Load","Save","Sort","Exit"};/*命令项*/
/*********主函数**********/
voidmain()
{
charch;
intgdriver,gmode,i,j;
init();
printf("Doyoucreatenewtable(Y/N)\n");
ch=getchar();
if(ch=='Y'||ch=='y')
create();
gdriver=DETECT;
initgraph(&gdriver,&gmode,"");
mousewin();
closegraph();
}
/**按钮实现函数,buttonx1和buttony1为按钮的左上角的坐标,buttonx2和buttony2为按钮的右下角的坐标,*name为按钮上显示的字符串名,stat为按钮类型,0为平面,1为凸起,2为凹下,3为兰色平面*/
voidbutton(intbuttonx1,intbuttony1,intbuttonx2,
intbuttony2,char*name,intstat)
{
if(stat==0)/*显示平面按钮*/
{
setcolor(BLACK);
outtextxy(buttonx1+3,buttony1+4,name);
}
if(stat==1)/*显示凸起按钮*/
{
setfillstyle(1,WHITE);
bar(buttonx1,buttony1,buttonx2,buttony2);
setfillstyle(1,DARKGRAY);
bar(buttonx1+1,buttony1+1,buttonx2,buttony2);
setfillstyle(1,LIGHTGRAY);
bar(buttonx1+1,buttony1+1,buttonx2-1,buttony2-1);
setcolor(BLACK);
outtextxy(buttonx1+3,buttony1+4,name);
}
if(stat==2)/*显示凹下按钮*/
{
setfillstyle(1,DARKGRAY);
bar(buttonx1,buttony1,buttonx2,buttony2);
setfillstyle(1,WHITE);
bar(buttonx1+1,buttony1+1,buttonx2,buttony2);
setfillstyle(1,LIGHTGRAY);
bar(buttonx1+1,buttony1+1,buttonx2-1,buttony2-1);
setcolor(BLACK);
outtextxy(buttonx1+3,buttony1+4,name);
}
if(stat==3)/*显示平面兰色背景按钮*/
{
setfillstyle(1,DARKGRAY);
bar(buttonx1,buttony1,buttonx2,buttony2);
setfillstyle(1,WHITE);
bar(buttonx1+1,buttony1+1,buttonx2,buttony2);
setfillstyle(1,BLUE);
bar(buttonx1+1,buttony1+1,buttonx2-1,buttony2-1);
setcolor(WHITE);
outtextxy(buttonx1+3,buttony1+4,name);
}
}
/****窗口函数,x1和y1为左上角坐标,x2和y2为右下角坐标*/
voidwins(intx1,inty1,intx2,inty2)
{
charlable[][10]={"No","Name","Sex",
"Profess","Dept","Class","Workload","LessonF"};/*标签信息*/
intm,n;
setfillstyle(1,WHITE);/*画窗口*/
bar(x1,y1,x2,y2);
setfillstyle(1,LIGHTGRAY);
bar(x1+1,y1+1,x2,y2);
setfillstyle(1,BLUE);/*画兰色标题栏*/
bar(x1+3,y1+3,x2-3,y1+20);
cross(y1,x2,0);/*画关闭按钮*/
outtextxy(x1+5,y1+8,"teacherLessonF");/*输出标题文字*/
for(m=0;m<4;m++)
for(n=0;n<2;n++)
while(state==1)
{
MouseStatus(&x1,&y1,&state);
if(x1>winx2-17&&y1>winy1+5&&x1 {/*鼠标在关闭按钮上单击*/ cross(winy1,winx2,1);/*凸起显示关闭按钮*/ delay(1000); close=1; } { button(x1+n*250+20,y1+50+m*30+20,x1+n*250+90, y1+50+m*30+40,lable[n+m*2],2);/*标签信息*/ setfillstyle(1,WHITE); bar(x1+n*250+100,y1+50+m*30+20,x1+n*250+200,y1+50+m*30+40); /*白色背景显示数据区*/ } if(press==0) button(winx1+3,winy1+21,winx1+45,winy1+35,"main",1);/*凸起*/ delay(1000); settextstyle(0,0,0); button(winx1+3,winy1+21,winx1+45,winy1+35,"main",2);/*凹下*/ MouseStatus(&x1,&y1,&state); delay(1000); press=1; } if(press==1) button(winx1+3,winy1+35,winx1+45,winy1+50,"exit",1); } settextstyle(0,0,1); for(m=0;m<2;m++) for(n=0;n<5;n++) button(x1+n*100+10,y1+200+m*30+20,x1+n*100+80, y1+200+m*30+40,Str[n+m*5],1);/*显示凸起命令按钮*/ } /*关闭按钮函数y1和x2分别是窗口的左上角的y坐标和右下角的x坐标,*/ voidcross(inty1,intx2,intpress) { if(press==1) setfillstyle(1,BLACK); else setfillstyle(1,WHITE); bar(x2-17,y1+5,x2-5,y1+18);/*画矩形区域*/ setfillstyle(1,LIGHTGRAY); bar(x2-16,y1+6,x2-5,y1+18) 第3章课程设计总结 通过这段时间的课程设计,我认识到C语言是一门比较难的课程,需要多花时间上机练习.这次的程序训练培养了我实际分析问题,编程和动手的能力,使我掌握了程序设计的基本技能,提高了我适应实际,实践编程能力,也顺利的完成了自己的设计内容教师工作量计算,让我从中收获很多。 不仅仅是尽力,更从选题到定稿,从理论到实践,在整整两星期的日子里可以说得是苦多于甜,但是可以学到很多很多的东西。 同时不仅可以巩固了以前所学过的知识,而且学到了很多书本上所没有学到过的知识。 在课程设计的期间我去查书,查资料,请教同学的过程就是我提高的过程,久违的认真又体会了一次,尤其感谢老师的谆谆教诲,感谢同学们的积极帮忙,我的程序终于顺利完成了。 很感谢这次的课程设计,它使我更加深刻地体会到多看专业书的重要性。 只有掌握了一定量的专业知识才能得心应手地解决诸多问题;另外,做任何事情都要耐心,不要一遇到困难就退缩;在学习和工作中要时刻谨记“团结”二字,它好比同向成功的铺路石,不可或缺。 人生的道路是曲折的,但是正是因为曲折人生才光彩夺目,在人生的路上,总遇到重重困难,但正是因为困难我们才变的更加坚强。 今后的路还很长,面对困难让我们用行动去征服它吧! 参考资料 [1]梁 翎,李爱齐.C语言程序设计实用技巧与程序实例.上海: 上海科普出版社,1996: 312-315 [2]王士元.C高级实用程序设计.北京: 清华大学出版社,1996.275-280 [3]陈国章.TurboC程序设计技巧与应用实例.天津: 天津科学技术出版社,1995: 158-162 [4]谭浩强.C程序设计.北京: 清华大学出版社,1991: 431-441 [5]谭浩强.C程序设计(第二版).北京: 清华大学出版社,1999: 241-245 [6]林小茶.C语言程
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 教师 工作量 计算
![提示](https://static.bdocx.com/images/bang_tan.gif)