急求C++课程设计 排课程序

zhangweisb 2010-07-04 10:24:25


8. 设计一个排课程序

问题描述

每位教师都有教学工作量,教师对他所希望讲授的课程表达为一个期望值,1,2…,n,其中1位最高的期望值。课程也有优先级,1,2…,n,用来决定将课程分给教师的顺序,其中1时最高的优先级。设计一个程序针对某些课程给某些教师进行排课。

基本要求

程序运行时,用户输入教师信息(姓名、教师号、工作量)、课程信息(课程名、课程号、周学时、总学时、优先级)、教师对所希望讲授课程的期望值以及教学工作量等相关信息,所有信息应保存在文件中,程序根据课程的优先级以及教师对课程的期望值进行排课。为了公平起见,程序随机分配课程,如果10门课程都有优先级1,程序以随机的顺序将这些课程分给教师,如果10位教师对某门课程的期望值为1,程序应从10位教师中随机选择一个。最后输出排课情况,即某位老师上某门课程,以及某位老师的工作量。

测试数据

程序应能实现对不少于20门课和10个教师的排课,并且使每个教师的满意度达到最大,不存在工作量不满的教师以及未分配的课等情况。

实现提示

可定义一个教师类存放教师信息,所有教师的信息可以用链表存储;定义一个课程类存放课程信息,所有课程的信息可以用链表存储;定义一个排课类进行排课,排课类可以访问课程和教师信息。

选作内容

对两个同类班级安排一学期(20周)的课程,程序应能处理某些限制,如一个老师不能同时给两个班上课。
...全文
432 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Anwys159 2010-11-24
  • 打赏
  • 举报
回复
渴求啊!
a62368229s 2010-11-10
  • 打赏
  • 举报
回复
同求中同求中同求中同求中同求中同求中同求中
Baesky 2010-07-05
  • 打赏
  • 举报
回复
当年我的毕设。。。用的遗传算法 不过我用C#做的。。。。
djjlove_2008 2010-07-04
  • 打赏
  • 举报
回复
djjlove_2008 2010-07-04
  • 打赏
  • 举报
回复
我的想法是……
1.首先把最难弄的老师排上,就是说她教的班多,限制多。(这步的实际操作就是把排课顺序按照班数排序)
2.随机安排课(当然要根据人类习惯,您总不能让他一天上七节课),安排方式为先满足部分人需求(当然不太公平),然后剩下的补空
3.这剩下的部分人可能因为班级的关系出现重课的问题,没有关系,先把他安排上去,用repeat循环逐层更改被冲突对象的课节(最后可以选把美术音乐等老师,他们安排到下午的话上午比较好换)

提供个算法。

假设一天最多有M节课,一周有七天,建立数组 Course[7][M],初值赋0。

判断是否能选课的函数,伪代码:

canChoose(int day,int start,int end)
{
for(i=start;i<=end;i++)
{
if(Course[day][i] !=0)
return false;
}
return true;
}
选择该时段开课
choose(int day,int start,int end)
{

for(i=start;i<=end;i++)
{
Course[day][i] ==1;

}

}

例:
排课开始,星期三第3节到5节

courseManager()
{
if(canChoose(3,3,5))
choose(3,3,5);
}
hengshan 2010-07-04
  • 打赏
  • 举报
回复
自己做一个嘛,好好学习一下。很有意思的

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧