C语言课程设计报告书
课程名称: C语言课程设计
课题名称: 院教师工作量计算系统
班级:
学号:
姓名:
指导老师:
成绩:
2010年6月
一、课程设计目的
1. 通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
2. 通过课程设计,进一步掌握C语言中有关重要的数据结构,诸如:数组、结构数组、链表、数据文件…等在程序开发中的应用。
3. 通过课程设计,锻炼与提高程序开发和调试能力,要求程序可读性好、调试能力强。
4. 通过课程设计,增加 C语言知识的运用能力和自主学习能力,能独立设计和实现一个中小型系统。
二、课题设计内容
以高校某学院工作量考核办法为背景,设计与开发一个高校教师教学工作量管理系统,提供教师教学工作量的录入、查找与计算功能。主要功能要求如下:
(1)工作量信息录入:教师一个教学任务的信息为:教师编号(不重复)、姓名、职称、课程名称、授课班级、小课班级数目、理论课时、实验课时、教学任务总课时。提供录入界面供用户输入数据,并以合理数据结构,诸如:结构数组或数据文件的形式加以保存。
(2)工作量计算:以教师为单位,计算出该教师一个学年的总工作量。计算公式如下:
a. 教学任务总课时。计算方法如下表:
小班班级数目
单个教学任务总课时
2
1.5*(理论课时+实验课时)
3
2*(理论课时+实验课时)
>=4
2.5*(理论课时+实验课时)
b. 一个学年总的教学工作量=所有单个教学任务总课时之和*职称系数。其中:正教授系数=1.2;副教授系统=1.1;其他职称系数=1。
(3)查找:能查找一个教师年度工作量明细、查找某教师年度总作量。
(4)超时费计算:统计该院年度工作量超过200学时的所有教师,以单价20元标准计算出其超时费,并显示出发放报表。
(5)进一步考虑信息的编辑功能,能插入、修改、删除教师授课教学信息。
(6)系统以菜单方式工作,界面应清晰直观,便于用户操作。
三、系统总体设计
主函数
数据录入
计算工作量
保存数据
查找数据
计算超时费
插入数据
修改数据
删除数据
菜单函数
退出
1. 主函数 main()
功能:设计字体和背景的颜色,调用菜单函数;
2. 菜单函数 menu()
功能:调出可视化的菜单外观界面,提供用户选择的入口,进入其他模块进行相关处理;
3. 信息输入函数 enter()
功能:录入需查询教师的相关信息(结构数组形式);
4. 信息保存函数 save()
功能:将录入的教师信息保存至文件;
5. 工作量计算函数 count()
功能:计算该教师一个学年的总工作量;
6. 查找函数 search()
功能:调用相关模块,对指定的信息项进行查询;
7. 超时费计算函数 covex()
功能:统计、计算教师一年度的超时费,并显示出发放报表;
8. 插入函数 insert()
功能:插入教师授课教学信息;
9. 修改函数 alter()
功能:对教师信息进行修改;
10. 删除函数()
功能:删除不需要的信息。
四、系统详细设计
(一)数据结构设计
(1)教师信息的定义
struct teacher /* 定义结构数组名*/
{ int numberofteacher; /*教师编号*/
char name[80]; /*教师姓名*/
char professionaltitle; /*职称*/
char nameofcourse; /*课程名称*/
char nameofclasses; /*授课班级*/
int numberofsmallclasses; /*小班班级数目*/
int theoreticperiods; /*理论课时*/
int experimentalperiods; /*实验课时*/
int totalperiods; /*教学任务总课时*/
}tea[N];
(2)菜单的设计
menu()
{int choice;
clrscr(); /*清屏*/
printf("\n\t\t*************************MENU*************************\n");
printf("\n\t\t 1.Enter new data");/*输入模块*/
printf("\n\t\t 3.Save data");/*保存数据*/
printf("\n\t\t 2.Count load");/*计算工作量*/
printf("\n\t\t 4.Search data");/*查找数据*/
printf("\n\t\t 5.Count overtime expenses");/*计算超时费*/
printf("\n\t\t 6.Insert data");/*插入数据*/
printf("\n\t\t 7.Alter data");/*修改数据*/
printf("\n\t\t 8.Delete data");/*删除数据*/
printf("\n\t\t 9.Exit");/*退出*/
printf("\n\t\t******************************************************\n");
while(1)
{choice=Menuselect();
if(choice<0||choice>9)
printf("Input ERROR!"); printf("\n");
switch(choice);
{case 1:enter();break;
case 2:save();break;
case 3:count();break;
case 4:search();break;
case 5:covex();break;
case 6:insert();break;
case 7:alter();break;
case 8:delete();break;
case 9:exit(0);}
}
int Menuselect() /*输入选择相关功能的菜单*/
{int i;
printf("please type in your choice:");
scanf("%d",&i);
printf("\n");
return(i);
}
(二)模口接块的设计
程序主要是通过选择菜单manu()接入各个模块,用switch语句调用各个模块,通过break分开各个模块,进行所要操作的选择,也主要通过调用manu()菜单返回,再进行其他选项的选择。
1. 菜单函数
通过菜单函数完成与其他模块的连接和退出,其运行程序见(一)中“菜单的设计”项,此处不再累述。
2. 信息的输入 enter()
通过case 1进入,信息录入成功后调用menu()函数,先对输入的信息进行保存。
3. 信息保存 save()
在manu()中,通过case 2调用save(),以文件形式对其进行保存;
4. 计算工作量 covex()
通过case3进入该函数,计算出教师年度工作量再返回主菜单。
5. 查找信息 search()
通过case4输入某教师姓名,查找该教师所有信息。
6. 计算超时费 covex()
case5:进入计算超时费模块,进行操作,再返回主菜单。
7. 插入数据 insert()
case6:补充插入一些数据,返回主菜单。
8. 修改数据 alter()
case7:修改电脑中的数据,返回主菜单。
9. 删除数据 delete()
case8:删除不需要的数据,返回主菜单。
(三)流程图
1.主要模块流程图
:
Start
菜单选择项是否小于0或大于9
主函数
定义全局变量liang量
主要选择菜单
否
输入错误
是
数据录入
保存数据
计算工作量
查找数据
计算超时费
插入数据
修改数据
删除数据
退出
2.主要选择菜单流程图
是
是
输入choice
菜单选择项是否小于0或大于9
输入错误
1??
根据所选项接入子函数
定义变量,输入相关信息
3.信息保存函数流程图
判断可否打开文件
是
否
i=0
i< n
保存教师的信息
i++
是
否
不能打开文件
关闭文件
4.工作量计算函数
定义变量
输出小班数目
小班数
目=2
=2
是
A=1.5
否
小班数目=3
A=2.5
A=2
否
是
职称系数=1.0
单个教学任务总课时=A*(理论课时+实验课时)
职称=
副教授
=2
否
是
职称= 正 教授
职称系数=1.2
否
是
职称系数=1.1
年度总工作量=所有单个教学任务总课时之和*职称系数
(五)删除函数
将内存中的数据重新存入二进制文件夹中
结束
k++
是
否
是
是
intj=0,d=0,k=0;char name[80];work (*p)
打开文件
从文件中读出数据,记录数据块数J
输入教师姓名
开始
k<=j
否
q[k].name=name
否
output(&q[k])
d=k
d<=k
q[d]=q[d+1]
d++
五、运行结果
(一)主菜单截图
(二)信息录入界面截图
(三)信息保存至文件成功截图
(四)查找到的总工作量信息截图
(五)超时费显示报表截图
展开阅读全文