| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 609 人关注过本帖
标题:大家进来帮一下忙....关于排课的
只看楼主 加入收藏
lol3721987
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-5-7
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
大家进来帮一下忙....关于排课的
题目是这样的..:


问题描述
每位教师都有教学工作量,教师对他所希望讲授的课程表达为一个期望值,1,2…,n,其中1位最高的期望值。课程也有优先级,1,2…,n,用来决定将课程分给教师的顺序,其中1时最高的优先级。设计一个程序针对某些课程给某些教师进行排课。
基本要求
程序运行时,用户输入教师信息(姓名、教师号、工作量)、课程信息(课程名、课程号、周学时、总学时、优先级)、教师对所希望讲授课程的期望值以及教学工作量等相关信息,所有信息应保存在文件中,程序根据课程的优先级以及教师对课程的期望值进行排课。为了公平起见,程序随机分配课程,如果10门课程都有优先级1,程序以随机的顺序将这些课程分给教师,如果10位教师对某门课程的期望值为1,程序应从10位教师中随机选择一个。最后输出排课情况,即某位老师上某门课程,以及某位老师的工作量。
测试数据
程序应能实现对不少于20门课和10个教师的排课,并且使每个教师的满意度达到最大,不存在工作量不满的教师以及未分配的课等情况。
实现提示
可定义一个教师类存放教师信息,所有教师的信息可以用链表存储;定义一个课程类存放课程信息,所有课程的信息可以用链表存储;定义一个排课类进行排课,排课类可以访问课程和教师信息。



我做了一点做不下去了..5555

#include<iostream>
#include<fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
////////////教师类..
class Teacher
{
public:
char name[10];
int num;
int worknum;
public:
Teacher()
{
static int i=0;
++i;
cout<<"请输入第"<<i<<"个老师的姓名"<<endl;
cin>>name;
cout<<"教师号"<<endl;
cin>>num;
cout<<"工作量"<<endl;
cin>>worknum;
}
void get(ofstream fout)//get函数,参数是文件流对象fout
{  
    fout.write((char*) this,sizeof(*this)); //读取文件

}
    friend void getdata(Teacher t[],int n,ofstream &f);//友员函数getdata,参数是teacher类对象,整型,和文件流对象的引用

};
    void getdata(Teacher t[],int n,ofstream &fout)//函数getdata,参数是teacher类对象,整型,和文件流对象
{
        for(int i=0;i<n;i++)
        fout.write((char *)&t[i],sizeof(t[i]));//输出teacher所有对象
}
class Subjust
{
public:
char name[10];
int kechenghao;
int zhouxueshi;
int zongxueshi;
int youxianji;
int qiwangzhi;
public:
Subjust()
{
static int i=0;
++i;
cout<<"请输入第"<<i<<"门课的课程名字"<<endl;
cin>>name;
cout<<"课程号"<<endl;
cin>>kechenghao;
cout<<"周学时"<<endl;
cin>>zhouxueshi;
cout<<"总学时"<<endl;
cin>>zongxueshi;
cout<<"优先级"<<endl;
cin>>youxianji;
cout<<"期望值"<<endl;
cin>>qiwangzhi;
}
void get(ofstream fout)
{
 fout.write((char*) this,sizeof(*this));
}

friend void getdata(Subjust b[],int n,ofstream &f);
};
void getdata(Subjust b[],int n,ofstream &fout)
{
for(int i=0;i<n;i++)
fout.write((char *)&b[i],sizeof(b[i]));
}
int main()
{
Teacher t[3];
Subjust b[3];
cout<<"给老师分科后"<<endl;

ofstream fout;//二进制形式存储
fout.open("Teacher.txt",ios::binary);
getdata(t,3,fout);
getdata(b,3,fout);
int a[3];
    int temp;
    int i;
    srand((unsigned)time(0));
    for ( i = 0;i < 3;i++)
    {
    temp = 0 + rand() % 3;
    for (int j = 0;j <= i;j++)
     while (temp == a[j])
    {
        temp = 0 + rand() % 3;
        j = 0;
    }
    a[i] = temp;
    }
    for(i=0;i<3;i++)
    {
        cout<<"第"<<i+1<<"个老师的名字     所教的课程        课时"<<endl;
        cout<<'\t'<<t[i].name<<"\t\t"<<b[a[i]].name<<"\t\t"<<b[a[i]].zongxueshi<<endl;
    }
fout.close();
return 0;
}



主函数那里我是乱来的....主要是那个排课类不会弄...高人帮忙啊...
搜索更多相关主题的帖子: 工作量 期望值 优先级 姓名 教学 
2010-12-08 10:48
lol3721987
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-5-7
收藏
得分:0 
链表我也想了下....不过也是不会调用....T T
2010-12-08 11:04
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:20 
要链表  我写过一个  你可以参考一下 或者直接用
链表类.rar (1.9 KB)

                                         
===========深入<----------------->浅出============
2010-12-09 15:26
西单小六
Rank: 1
等 级:新手上路
帖 子:11
专家分:1
注 册:2011-12-12
收藏
得分:0 
努力
2011-12-21 17:02
快速回复:大家进来帮一下忙....关于排课的
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020907 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved