1、67教师工作量管理系统沈 阳 航 空 工 业 学 院 课程设计学 号 200704033067 班 级 7403302 姓 名 王秀龙 指导教师 王 晓 岩 2009 年 3 月 5 日沈阳航空工业学院课程设计任务书院系:航空宇航工程学院 专业:飞行器设计与工程 班级:7403302学号:200704033067 题目:教师工作量管理系统一、课程设计时间200809第2学期第1周,共计1周,20学时。二、课程设计内容计算每个老师在一个学期中所教课程的总工作量(教师的信息为:教师号、姓名、所授课程、班级数目、理论课时、实验课时、单个教学任务总课时)。三、课程设计要求(1)输入教师教学信息,包括教
2、师号、姓名、所授课程、班级数目、理论课时、实验课时。(2)插入教师授课信息。(3)教师工作量计算: 计算单个教学任务总课时。计算原则如下表:班级数目单个教学任务总课时21.5*(理论课时+实验课时)32*(理论课时+实验课时)=42.5*(理论课时+实验课时) 计算一个教师一个学期总的教学工作量。总的教学工作量等于所有单个教学任务总课时之和。(4)完整的教师信息显示。四、指导教师和学生签字指导教师:_ 学生签名:_五、说明书成绩六、教师评语目录一、需求分析 1二、程序流程图 2三、核心技术的实现说明及相应程序段 4四、课设总结 8五、参考文献 9六、源程序 9一、需求分析经过对程序设计题目的分
3、析可知,整个程序的设计实现大致分为六个模块,其中每一个模块对应一个函数,它们的功能分别是:添加教师数据函数,删除数据函数,排序函数,成绩查询函数,更改教师数据函数以及显示教师信息函数。在这些函数当中,前四个函数的实现严格按照题目的要求,而后面的两个函数属于附加功能。1、输入教师教学信息函数 主要实现程序最初运行时教师数据的录入;2、插入教师授课信息 实现的功能是教师信息的追加;3、教师工作量计算函数 按照题目的具体要求实现的是对不同教师工作量的计算;4、更改教师信息函数 可以实现对教师记录中除教师号以外的信息进行修改;除上面介绍的功能之外,程序还具有退出功能,可以在程序的一次运行当中循环执行所
4、有的功能,并根据需要终止程序的执行。每一个教师记录都包含教师号、姓名、所授课程、班级数目、理论课时、实验课时,在程序当中,将教师记录类型定义为结构体类型,添加以及追加的教师信息直接写入d盘的student.dat文件中,其它函数每次对教师记录的访问,其数据来源都是student.dat文件,这样做不但可以保证教师数据的一致性,而且可以对教师数据进行永久保存,保证每次运行程序都可以采用原来的数据。二、程序流程图1、程序总体结构图图1程序总体结构图2、具体功能框图(1)添加教师数据函数add图2 添加教师数据函数(2)工作量计算与显示show图3工作量计算与显示三、核心技术的实现说明及相应程序段本
5、程序主要由四个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。下面分别进行说明。1、输入教师教学信息函数 在教师信息文件(student.dat)不存在的情况下,首先由程序创建一个新文件,并将录入的教师信息写入该文件当中;具体的程序段如下:FILE *fp; int n,i; struct student stuN; if(fp=fopen(d:student.txt,w)!=NULL) printf(n请输入要添加的教师信息数量,按回车键确认:); scanf(%d,&n); for(i=1;i=n;i+) printf(nn请输入第%d个教师的教师号、姓
6、名、所授课程、班级数目、理论课时、实验课时,用空格分开,并按回车键确认:n,i); scanf(%s%s%s%d%f%f,stui.num,stui.name,stui.kecheng,&stui.shumu,&stui.lilun,&stui.shiyan); fprintf(fp,n%s %s %s %d %f %f,stui.num,stui.name,stui.kecheng,stui.shumu,stui.lilun,stui.shiyan); fclose(fp); 2、插入教师授课信息函数该函数的核心内容是对教师信息的补充,且保证与源文件数据格式一直,并保证数据的完整性。具体程序
7、段如下:void contine() FILE *fp; fp=fopen(d:student.txt,a); struct student stuN; int n,i,p; reads(stu,&n); printf(请输入要添加的教师信息数量,按回车键确认:); scanf(%d,&p); for(i=n+1;i=n+p;i+) printf(n请输入第%d个教师的教师号、姓名、所授课程、班级数目、理论课时、实验课时,用空格分开,并按回车键确认:n,i); scanf(%s%s%s%d%f%f,stui.num,stui.name,stui.kecheng,&stui.shumu,&stu
8、i.lilun,&stui.shiyan); fprintf(fp,n%s %s %s %d %f %f,stui.num,stui.name,stui.kecheng,stui.shumu,stui.lilun,stui.shiyan); fclose(fp); 3、教师工作量计算函数通过switch语句判断教师所教的班级数目的不同,乘以不同的基数进而进行计算。同时显示出教师的所有信息。具体的程序段如下:void show() struct student stuN; int i,n;float s20; reads(stu,&n); printf(n*教师信息显示*n); printf(n
9、序号 教师号 姓名 所授课程 班级数目 理论课时 实验课时 工作量); for(i=0;i=n+1;i+) switch(stui.shumu) case 2: si=1.5*(stui.lilun+stui.shiyan);break; case 3: si=2.0*(stui.lilun+stui.shiyan);break; default:si=2.5*(stui.lilun+stui.shiyan); for(i=0;in;i+) printf(n%3d%6s%8s%8s%8d%10.2f%9.2f%9.2fn,i+1,stui.num,stui.name,stui.kecheng,
10、stui.shumu,stui.lilun,stui.shiyan,si); getch(); 4、更改教师信息函数 可以实现对教师记录中除教师号以外的信息进行修改,进而修改其中的部分信息,具体的程序段如下:void change()struct student stuN,temp; int n,i; FILE *fp; printf(n请输入要更改信息的教师号,按回车键确认:); scanf(%s,temp.num); reads(stu,&n); for(i=0;i=n) printf(无此教师信息!); return; printf(n请输入更改后教师的姓名、所授课程、班级数目、理论课时
11、、实验课时,加空格,按回车键确认:n); scanf(%s%s%d%f%f,temp.name,temp.kecheng,&temp.shumu,&temp.lilun,&temp.shiyan); stui=temp; if(fp=fopen(d:student.txt,w)=NULL) printf(打开文件失败!); return; for(i=0;in;i+) fprintf(fp,n%s %s %s %d %f %f,stui.num,stui.name,stui.kecheng,stui.shumu,stui.lilun,stui.shiyan); fclose(fp); prin
12、tf(修改教师信息成功!n);四、课设总结在这次课程设计的过程中,我学习到了很多,也领悟到了很多。这次是大学中的第一次课程设计,再指导老师的指导下,在自己的不懈努力下,最终完成了自己的设计课题。在以前的学习中,由于时间的限制,对于子程序的作用并没有很好的认识。这次的课设,虽然3次的调用并不是很多,但是使我深深的认识到了调用子程序的简便性,很多本来需要繁琐嵌套或循环的地方可以单独在子程序中编写,然后简单的调用就可以达到效果,让我不需要再大量的重复编写,并且程序显得干净,有条理。通过这次课程设计,我可以单独的完成一些简单的程序,特别是我比以前能更好的使用指针并且能更好的了解文件并能够熟练掌握循环结
13、构的使用。首先对于指针我形成了两点认识:(1)指针是c语言功能强大的主要表现,指针的一般手段是通过复量名词间变量。(2)对于文件我了解最深的则是文本文件。它是先内存单元的数据转换成文本形式,然后将文本数据输出到外存的文件。除此之外我也对模块化程序设计方法有了进一步了解。我相信在这次c语言课程设计中我所学到的东西会为我在以后学习计算机的道路中打下坚实的基础,让我对计算机编程更为感兴趣。五、参考文献1 谭浩强C程序设计北京:清华大学出版社,20052 刘成等C语言程序设计实验指导与习题集北京:中国铁道出版社,2006六、源程序#include#include#include#include#def
14、ine N 20int m;struct studentchar num20; char name10; char kecheng20; int shumu; float lilun; float shiyan;void menu();void reads(struct student stuN,int *n);void add();void contine();void show();void change();void main() int n; while(1) menu(); printf(n请输入您要选择的操作序号,按回车键确认:); scanf(%d,&n); switch(n)
15、case 1: add();break; case 2: contine();break; case 3: show();break; case 4: change();break; case 5: exit(0); default: printf(输入错误,请输入列表中存在的序号!n ); void menu()printf(*n); printf(* 您好欢迎您登录教师工作量管理系统 *n); printf(*n); printf(*n); printf(* 教师信息管理系统 *n); printf(n 1 添加教师数据 ); printf(n 2 插入授课信息 ); printf(n 3
16、 工作量计算与显示); printf(n 4 更改教师信息 ); printf(n 5 退出 n); void reads(struct student stuN,int *n) FILE *fp; int i=0; if(fp=fopen(d:student.txt,r)=NULL) printf(文件打开失败!n); return; else for(i=0;!feof(fp);i+) fscanf(fp,%s%s%s%d%f%f,stui.num,stui.name,stui.kecheng,&stui.shumu,&stui.lilun,&stui.shiyan); *n=i;m=i;
17、 fclose(fp);void add()FILE *fp; int n,i; struct student stuN; if(fp=fopen(d:student.txt,w)!=NULL) printf(n请输入要添加的教师信息数量,按回车键确认:); scanf(%d,&n); for(i=1;i=n;i+) printf(nn请输入第%d个教师的教师号、姓名、所授课程、班级数目、理论课时、实验课时,用空格分开,并按回车键确认:n,i); scanf(%s%s%s%d%f%f,stui.num,stui.name,stui.kecheng,&stui.shumu,&stui.lilun
18、,&stui.shiyan); fprintf(fp,n%s %s %s %d %f %f,stui.num,stui.name,stui.kecheng,stui.shumu,stui.lilun,stui.shiyan); fclose(fp);void show() struct student stuN; int i,n;float s20; reads(stu,&n); printf(n*教师信息显示*n); printf(n序号 教师号 姓名 所授课程 班级数目 理论课时 实验课时 工作量); for(i=0;i=n+1;i+) switch(stui.shumu) case 2:
19、 si=1.5*(stui.lilun+stui.shiyan);break; case 3: si=2.0*(stui.lilun+stui.shiyan);break; default:si=2.5*(stui.lilun+stui.shiyan); for(i=0;in;i+) printf(n%3d%6s%8s%8s%8d%10.2f%9.2f%9.2fn,i+1,stui.num,stui.name,stui.kecheng,stui.shumu,stui.lilun,stui.shiyan,si); getch();void contine() FILE *fp; fp=fopen
20、(d:student.txt,a); struct student stuN; int n,i,p; reads(stu,&n); printf(请输入要添加的教师信息数量,按回车键确认:); scanf(%d,&p); for(i=n+1;i=n+p;i+) printf(n请输入第%d个教师的教师号、姓名、所授课程、班级数目、理论课时、实验课时,用空格分开,并按回车键确认:n,i); scanf(%s%s%s%d%f%f,stui.num,stui.name,stui.kecheng,&stui.shumu,&stui.lilun,&stui.shiyan); fprintf(fp,n%s
21、 %s %s %d %f %f,stui.num,stui.name,stui.kecheng,stui.shumu,stui.lilun,stui.shiyan); fclose(fp);void change()struct student stuN,temp; int n,i; FILE *fp; printf(n请输入要更改信息的教师号,按回车键确认:); scanf(%s,temp.num); reads(stu,&n); for(i=0;i=n) printf(无此教师信息!); return; printf(n请输入更改后教师的姓名、所授课程、班级数目、理论课时、实验课时,加空格
22、,按回车键确认:n); scanf(%s%s%d%f%f,temp.name,temp.kecheng,&temp.shumu,&temp.lilun,&temp.shiyan); stui=temp; if(fp=fopen(d:student.txt,w)=NULL) printf(打开文件失败!); return; for(i=0;in;i+) fprintf(fp,n%s %s %s %d %f %f,stui.num,stui.name,stui.kecheng,stui.shumu,stui.lilun,stui.shiyan); fclose(fp); printf(修改教师信息成功!n);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1