教师工作量管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C语言程序设计》
课程设计报告
题目:教师工作量管理系统
学院:理学院
专业:物理学
班级:1423701
学号:************
*名:***
指导老师:***
2015年12月12日
错误!未定义书签。
一、课程设计题目 (3)
二、课程设计要求 (3)
三、设计思路 (3)
四、流程图 (6)
五、 C语言源代码 (7)
六、执行效果 (11)
七、总结 (13)
一、课程设计题目:教师工作量管理系统
二、课程设计要求:
a)使用C语言编写。
b)能够正常运行,拥有系统界面。
c)能正常进行操作从开始到结束。
d)用户操作方便
三、设计思路:
A. 系统介绍:
(1)输入教师教学信息,包括教师号、姓名、所授课程、班级数目、理论课时、实验课时。
(2)插入教师授课信息。
(3)教师工作量计算:
①
②
任务总课时之和。
(4)完整的教师信息显示。
B. 实现思路:
本程序主要由四个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其它函数来实现要求的所有功能。下面分别进行说明。
1、输入教师教学信息函数
在教师信息文件(student.dat)不存在的情况下,首先由程序创建一个新文件,并将录入的教师信息写入该文件当中;具体的程序段如下:
{FILE *fp;
int n,i;
struct student stu[N];
if((fp=fopen("d:\\student.txt","w"))!=NULL)
{
printf("\n请输入要添加的教师信息数量,按回车键确认:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{ printf("\n\n请输入第%d个教师的教师号、姓名、所授课程、班级数目、理论课时、实验课时,用空格分开,并按回车键确认:\n",i); scanf("%s%s%s%d%f%f",stu[i].num,stu[i].name,stu[i].kecheng,&stu[i].shumu,&stu[ i].lilun,&stu[i].shiyan);
fprintf(fp,"\n%s %s %s %d %f %f",stu[i].num,stu[i].name,stu[i].kecheng,stu[i].shum
u,stu[i].lilun,stu[i].shiyan);
}
}
fclose(fp);
}
2、插入教师授课信息函数
该函数的核心内容是对教师信息的补充,且保证与源文件数据格式一直,并保证数据的完整性。具体程序段如下:
void contine()
{ FILE *fp;
fp=fopen("d:\\student.txt","a");
struct student stu[N];
{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",stu[i].num,stu[i].name,stu[i].kecheng,&stu[i].shumu,&stu[ i].lilun,&stu[i].shiyan);
fprintf(fp,"\n%s %s %s %d %f %f",stu[i].num,stu[i].name,stu[i].kecheng,stu[i].shum u,stu[i].lilun,stu[i].shiyan);
}
}
fclose(fp);
}
3、教师工作量计算函数
通过switch语句判断教师所教的班级数目的不同,乘以不同的基数进而进行计算。同时显示出教师的所有信息。具体的程序段如下:
void show()
{ struct student stu[N];
int i,n;double s[20];
reads(stu,&n);
printf("\n************************教师信息显示*************************\n");
printf("\n序号教师号姓名所授课程班级数目理论课时实验课时工作量");
for(i=0;i<=n+1;i++)
{ switch(stu[i].shumu)
{ case 2: s[i]=1.5*(stu[i].lilun+stu[i].shiyan);break;
case 3: s[i]=2.0*(stu[i].lilun+stu[i].shiyan);break;
default:s[i]=2.5*(stu[i].lilun+stu[i].shiyan);
}
}
for(i=0;i printf("\n%3d%6s%8s%8s%8d%10.2f%9.2f%9.2f\n",i+1,stu[i].num,stu[i].name,stu[i ].kecheng,stu[i].shumu,stu[i].lilun,stu[i].shiyan,s[i]); getch(); } } 4、更改教师信息函数 可以实现对教师记录中除教师号以外的信息进行修改,进而修改其中的部分信息,具体的程序段如下: void change() {struct student stu[N],temp; int n,i; FILE *fp; printf("\n请输入要更改信息的教师号,按回车键确认:"); scanf("%s",temp.num); reads(stu,&n); for(i=0;i if(strcmp(temp.num,stu[i].num)==0) break; if(i>=n) {printf("无此教师信息!"); return; } printf("\n请输入更改后教师的姓名、所授课程、班级数目、理论课时、实验课时,加空格,按回车键确认:\n"); scanf("%s%s%d%f%f",,temp.kecheng,&temp.shumu,&temp.lilun,&tem p.shiyan); stu[i]=temp; if((fp=fopen("d:\\student.txt","w"))==NULL) {printf("打开文件失败!"); return; } for(i=0;i fprintf(fp,"\n%s %s %s %d %f %f",stu[i].num,stu[i].name,stu[i].kecheng,stu[i].shum u,stu[i].lilun,stu[i].shiyan); fclose(fp);