教师排课系统课程设计报告(C++)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象技术与C++课程设计任务书
一.系统总体方案:
某学校每位教师都有教学工作量,教师对他所希望讲授的课程表达为一个期望值,1,2…,n,其中1是最高的期望值。课程也有优先级,1,2…,n,用来决定将课程分给教师的顺序,其中1是最高的优先级。设计一个程序针对某些课程给某些教师进行排课。
要求:
(一)程序运行时,用户输入教师信息(姓名、教师号、工作量)、课程信息(课程名、课程号、周学时、总学时、优先级),教师对所希望讲授课程的期望值以及教学工作量等相关信息,所有信息应保存在文件中。
(二)程序根据课程的优先级以及教师对课程的期望值进行排课。最后输出排课情况,即某位老师上某门课程,以及某位老师的工作量。
(三)可以实现对文件的修改。
(四)可以在各个界面中实现退出以及进入的循环。
(五)可以退出本系统。
(六)程序应能实现对不少于20门课和10个教师的排课,并且使每个教师的满意度达到最大,不存在工作量不满的教师以及未分配的课等情况。
方法:
为了公平起见,程序随机分配课程,如果10门课程都有优先级1,程序以随机的顺序将这些课程分给教师,如果10位教师对某门课程的期望值为1,程序应从10位教师中随机选择一个。
2.设计思路和主要步骤:
我们使用面向对象程序设计方法的思路进行分析,得出了整个系统应该涉及三个类的信息和操作,分别是教师类,课程类,排课类。各类信息以文件方式的储存以及实现各种功能和界面的实现是在main函数中体现。
(一)教师类 teacher:包括私有数据成员姓名 name,编号 id ,工作量work_load ,已有工作量 total(方便判断是否排满课)。成员函数包括设置和得到私有成员值的成员函数与输出教师信息的成员函数。
(2)课程类 course:私有成员有课程名 course_name,课程号 course_id,周课时 week_hour,总课时 total_hour,优先度 N。
(3)由于考虑到这应该是一个完整的排系统,加上我们希望这个系统的界面能够做到清晰、明了,我们经讨论后决定采用一个总操作界面,一个分操作界面。
总操作界面应该包括(分别对应 1.输入教师信息 2.输入课程信息 3输入教师对课程期望度 4.排课 5.输出排课结果 6.显示操作菜单 7.输出教师文件信息 8.输出课程文件信息 9.输出教师期望度文件信息 10.修改文件信息 0.退出)
修改文件信息界面中又因该包括 1.修改教师文件 2.修改课程文件 3.修改教师期望度信息 0.退出
3.各功能模块与流程图:
说明:以下是对应上面系统功能模块实图的系统流程图,因为制图的不便,故只将成功完成一次操作的流程给出,而“各个流程中中途如果输入了菜单中没有的项以及数据保存文件中没有的数据而被强制退出”的流程因为过于复杂(每步都要进行判断)而没有给出,实际情况读者朋友一试便知。在此我们对此表示深深的歉意,我们以后一定会努力完善我们各方面的工作的。
各功能模块:
(五)程序代码:
Teacher.h:
#include
#include
class teacher
{
private:
char name[11];
int id;
int work_load;
int total;
public:
teacher();
void set_teacher(char *pn,int i,int w);
void set_total(int t)
{
total=t;
}
char *get_name()
{return name;}
int get_id()
{return id;}
int get_work_load()
{return work_load;}
int get_total()
{return total;}
void print();
};
teacher::teacher()
{
strcpy(name,"无");
id=0;
work_load=0;
total=0;
}
void teacher::set_teacher(char *pn,int i,int w) {
strcpy(name,pn);
id=i;
work_load=w;
}
void teacher::print()
{
cout<<"姓名:"< cout<<"编号:"< cout<<"工作量:"< } Course.h: #include class course { private: char course_name[15]; int course_id; int week_hour; int total_hour; int N; public: course(void); void set_course(char *pname,int i,int w,int t,int n); char *get_course_name() {return course_name;} int get_course_id() {return course_id;} int get_week_hour() {return week_hour;} int get_total_hour() {return total_hour;} int get_N() {return N;} void print(); }; course::course(void) { strcpy(course_name,"无"); course_id=0; week_hour=0; total_hour=0; N=0; } void course::set_course(char *pname,int i,int w,int t,int n) { strcpy(course_name,pname); course_id=i; week_hour=w; total_hour=t; N=n;