文档库 最新最全的文档下载
当前位置:文档库 › 高校自动排课系统

高校自动排课系统

高校自动排课系统
高校自动排课系统

//简化版高校自动排课系统

//排课任务简化后包含:年级专业(教学班级,如计科13)、课程名称、任课教师、上课地点和时间

//教学班级简化为不分人数,不分专业方向。

//上课教室简化为不分理论课、实验课,不分教室容纳人数,不分是否多媒体。

//上课时段简化为:一周五天,周一到周五,白天上课,上午四节,下午四节,

//1~2(8:00~9:400)、3~4(10:00~11:40)、5~6(14:00~15:40)、7~8(16:00~17:40)

//为了便于处理,将五天的所有上课时段用数字0~19表示

//上课地点和时间组合成一个整数数组(位集,bitset),每20个为1组为一个教室的上课时段安排

//约束条件:1、教学班级的上课时间不能冲突

//2、每个教室不能同时安排多个教学班级上课

//3、任课教师的上课时间不能冲突

//

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

//原始数据文件中的每一行数据的数据结构

struct schedule {

string grade_special; //年级专业

string course; //课程名称

string teacher; //任课教师

string total_hour; //总学时

string teach_hour; //讲课学时

string experiment_hour; //实验学时

string practice_hour; //课程实践学时

string credit; //学分

string week_hour; //周学时

string start_stop; //起止周

string speciality_orientation; //专业方向

string person_num; //人数

};

//排课任务的数据结构

struct arrange {

arrange(string gs, string c, string t, int ct = -1) : grade_special(gs), course(c), teacher(t),

classroom_time(ct) {}

string grade_special; //年级专业

string course; //课程名称

string teacher; //任课教师

//string classroom; //上课地点

//string time; //上课时间

int classroom_time; //上课地点、时间

};

//教师倒排表数据结构,通过教师姓名找到该教师的排课情况

struct teacher_inverted {

teacher_inverted(string tea, int cl = -1, int ar = -1) : teacher(tea), class_loc(cl), arrange_loc(ar) {}

string teacher;

int class_loc;

int arrange_loc;

};

//教室倒排表数据结构,通过教室名称查找该教室的排课情况

struct classroom_inverted {

classroom_inverted(string cr, int cl = -1, int ar = -1) : classroom(cr), class_loc(cl), arrange_loc(ar) {}

string classroom;

int class_loc;

int arrange_loc;

};

int main(int argc, char** argv) {

if (argc != 3) {

cout << "程序调用格式错误!\n调用格式:csp 排课计划文件可用教室文件\n";

return 0;

}

ifstream infile(argv[1]);

vector plan;

string s;

getline(infile, s);

while (getline(infile, s)) {

schedule sch;

istringstream record(s);

record >> sch.grade_special >> sch.course >> sch.teacher >> sch.total_hour >> sch.teach_hour

>> sch.experiment_hour >> sch.practice_hour >> sch.credit >> sch.week_hour >> sch.start_stop

>> sch.speciality_orientation >> sch.person_num;

plan.push_back(sch);

}

infile.close();

vector> arranges; //整个系的排课安排

vector arr; //一个班的排课安排

string gs(""); //教学班级

for (auto it = plan.begin(); it != plan.end(); ++it) {

if (gs != it->grade_special) {

if (!arr.empty()) {

arranges.push_back(arr); //教学计划按教学班级顺序排列

arr.clear();

}

gs = it->grade_special;

}

arr.push_back(arrange(it->grade_special, it->course, it->teacher));

}

arranges.push_back(arr);

vector> teachers; //教师数组

for (unsigned i = 0; i < arranges.size(); ++i) {

for (unsigned j = 0; j < arranges[i].size(); ++j) {

string tea = arranges[i][j].teacher;

if (tea == "未定") continue;

unsigned k = 0;

for (; k < teachers.size(); ++k) {

if (teachers[k][0].teacher == tea) {

teachers[k].push_back(teacher_inverted(tea, i, j));

break;

}

}

if (k == teachers.size()) {

vector ti; //一个教师的排课信息倒排表

ti.push_back(teacher_inverted(tea, i, j));

teachers.push_back(ti);

}

}

}

const int N = 256;

bitset ct; //教室时段的分配状况

infile.open(argv[2]);;

vector classrooms; //教室数组

while (getline(infile, s)) {

classrooms.push_back(s);

}

infile.close();

unsigned arrange_num = plan.size(); //待排课数目

unsigned class_num = arranges.size(); //教学班级数目

unsigned classroom_num = classrooms.size(); //教室数目

uniform_int_distribution u(0, classroom_num * 20 - 1); //为教室时段分配随机数

default_random_engine e(time(0));

vector class_loc(class_num, 0); //教学班级已分配状况

unsigned class_cur = 0; //待分配的教学班级序号,轮流为每个班级排课,一次安排一个班的一门课

for (unsigned n = 0; n < arrange_num; ++n) {

unsigned k = u(e);

//如果某个班级的排课任务已经分配完成,则选择下一个班级继续排课

while (class_loc[class_cur] == arranges[class_cur].size()) {

class_cur = (class_cur + 1) % class_num;

}

//找到待排课任务的对应教师

string tea = arranges[class_cur][class_loc[class_cur]].teacher;

unsigned i = 0;

for (; i < teachers.size(); ++i) {

if (tea == teachers[i][0].teacher) break;

}

//找出与该教师无时间冲突的时段

do {

do {

while (ct.test(k)) { k = (k + 1) % (classroom_num * 20); }

unsigned m = 0;

for (; m < class_loc[class_cur]; ++m) {

if (arranges[class_cur][m].classroom_time % 20 == k % 20) break;

}

if (m == class_loc[class_cur]) break; //如果与前面已安排的该班级时间无冲突,则k可用

k = (k + 1) % (classroom_num * 20); //如果有冲突则检查下一个教室时段是否可用

} while (1);

if (i == teachers.size()) break; //教师未定

unsigned j = 0;

for (; j < teachers[i].size(); ++j) {

int m = arranges[teachers[i][j].class_loc][teachers[i][j].arrange_loc].classroom_time;

if (m != -1 && (m % 20 == k % 20)) break;

}

if (j == teachers[i].size()) break; //如果与该教师的时间无冲突,则k可用

k = (k + 1) % (classroom_num * 20); //如果有冲突则检查下一个教室时段是否可用

} while (1);

//排课

arranges[class_cur][class_loc[class_cur]].classroom_time = k;

ct.set(k);

//将当前班级的排课号+1

++class_loc[class_cur];

//将待排课班级号+1

class_cur = (class_cur + 1) % class_num;

}

loop: //输出

cout << "\t\t高校自动排课系统\n";

cout << "选择查询条件:1. 按班级2. 按教师3. 按教室\n";

cout << "请输入查询序号:(输入-1退出系统)";

unsigned choice = 0;

cin >> choice;

if (-1 == choice) {

cout << "正常退出系统\n";

return 0;

}

else if (1 == choice) {

unsigned i = 0, j = 0;

for (; i < arranges.size(); ++i) {

cout << i << ". " << arranges[i][0].grade_special << "\t";

if ((i + 1) % 4 == 0) cout << "\n";

}

cout << "\n";

do {

cout << "\n请输入待查询班级的序号:(输入-1结束查询)";

cin >> i;

if (i == -1) {

break;

}

else if (i >= arranges.size()) {

cout << "非法选择\n";

continue;

}

int class_table[4][5];

for (unsigned m = 0; m < 4; ++m)

for (unsigned n = 0; n < 5; ++n)

class_table[m][n] = -1;

for (j = 0; j < arranges[i].size(); ++j) {

unsigned m = arranges[i][j].classroom_time % 20;

class_table[m / 5][m % 5] = j;

}

string time_slot[4] = { "8:00-9:40", "10:00-11:40", "14:00-15:40", "16:00-17:40" };

cout << setiosflags(ios_base::left);

cout << setw(54) << " " << arranges[i][0].grade_special << "班级课程表\n";

cout << "============================================================================== ======================================================\n";

cout << setw(12) << " " << setw(24) << "星期一" << setw(24) << "星期二" << setw(24) << "星期三" << setw(24) << "星期四" << setw(24) << "星期五" << "\n";

for (unsigned m = 0; m < 4; ++m) {

if (m % 2 == 0)

cout << "============================================================================== ======================================================\n";

else

cout << "------------------------------------------------------------------------------------------------------------------------------------\n";

for (unsigned m1 = 0; m1 < 3; ++m1) {

if (m1 == 1)

cout << setw(12) << time_slot[m];

else

cout << setw(12) << "";

for (unsigned n = 0; n < 5; ++n) {

if (class_table[m][n] != -1) {

j = class_table[m][n];

if (m1 == 0)

cout << setw(24) << arranges[i][j].course;

else if (m1 == 1)

cout << setw(24) << classrooms[arranges[i][j].classroom_time / 20];

else

cout << setw(24) << arranges[i][j].teacher;

}

else

cout << setw(24) << " ";

}

cout << "\n";

}

}

cout << "============================================================================== ======================================================\n";

cout << resetiosflags(ios_base::left);

} while (1);

}

else if (2 == choice) {

unsigned i = 0, j = 0;

for (; i < teachers.size(); ++i) {

cout << i << ". " << teachers[i][0].teacher << "\t";

if ((i + 1) % 4 == 0) cout << "\n";

}

cout << "\n";

do {

cout << "\n请输入待查询教师的序号:(输入-1结束查询)";

cin >> i;

if (i == -1) {

break;

}

else if (i >= teachers.size()) {

cout << "非法选择\n";

continue;

}

int class_table[4][5];

for (unsigned m = 0; m < 4; ++m)

for (unsigned n = 0; n < 5; ++n)

class_table[m][n] = -1;

for (j = 0; j < teachers[i].size(); ++j) {

unsigned m = arranges[teachers[i][j].class_loc][teachers[i][j].arrange_loc].classroom_time / 20;

class_table[m / 5][m % 5] = j;

}

string time_slot[4] = { "8:00-9:40", "10:00-11:40", "14:00-15:40", "16:00-17:40" };

cout << setiosflags(ios_base::left);

cout << setw(54) << " " << teachers[i][0].teacher << "老师课程表\n";

cout << "============================================================================== ======================================================\n";

cout << setw(12) << " " << setw(24) << "星期一" << setw(24) << "星期二" << setw(24) << "星期三" << setw(24) << "星期四" << setw(24) << "星期五" << "\n";

for (unsigned m = 0; m < 4; ++m) {

if (m % 2 == 0)

cout << "============================================================================== ======================================================\n";

else

cout << "------------------------------------------------------------------------------------------------------------------------------------\n";

for (unsigned m1 = 0; m1 < 3; ++m1) {

if (m1 == 1)

cout << setw(12) << time_slot[m];

else

cout << setw(12) << "";

for (unsigned n = 0; n < 5; ++n) {

if (class_table[m][n] != -1) {

j = class_table[m][n];

if (m1 == 0)

cout << setw(24) << arranges[teachers[i][j].class_loc][teachers[i][j].arrange_loc].course;

else if (m1 == 1)

cout << setw(24) << classrooms[arranges[teachers[i][j].class_loc][teachers[i][j].arrange_loc].classroom_time / 20];

else

cout << setw(24) << arranges[teachers[i][j].class_loc][teachers[i][j].arrange_loc].grade_special;

}

else

cout << setw(24) << " ";

}

cout << "\n";

}

}

cout << "============================================================================== ======================================================\n";

cout << resetiosflags(ios_base::left);

} while (1);

} else if (3 == choice) {

vector> classroomes;

for (unsigned i = 0; i < classrooms.size(); ++i) {

classroom_inverted cr(classrooms[i]);

vector crs;

crs.push_back(cr);

classroomes.push_back(crs);

}

unsigned i = 0, j = 0;

for (i = 0; i < arranges.size(); ++i) {

for (j = 0; j < arranges[i].size(); ++j) {

unsigned m = arranges[i][j].classroom_time;

if (classroomes[m / 20][0].class_loc == -1) {

classroomes[m / 20][0].class_loc = i;

classroomes[m / 20][0].arrange_loc = j;

}

else {

classroomes[m / 20].push_back(classroom_inverted(classroomes[m / 20][0].classroom, i, j));

}

}

}

for (i = 0; i < classrooms.size(); ++i) {

cout << i << ". " << classrooms[i] << "\t";

if ((i + 1) % 4 == 0) cout << "\n";

}

cout << "\n";

do {

cout << "\n请输入待查询教室的序号:(输入-1结束查询)";

cin >> i;

if (i == -1) {

break;

}

else if (i >= classrooms.size()) {

cout << "非法选择\n";

continue;

}

int class_table[4][5];

for (unsigned m = 0; m < 4; ++m)

for (unsigned n = 0; n < 5; ++n)

class_table[m][n] = -1;

for (j = 0; j < classroomes[i].size(); ++j) {

unsigned m = arranges[classroomes[i][j].class_loc][classroomes[i][j].arrange_loc].classroom_time % 20;

class_table[m / 5][m % 5] = j;

}

string time_slot[4] = { "8:00-9:40", "10:00-11:40", "14:00-15:40", "16:00-17:40" };

cout << setiosflags(ios_base::left);

cout << setw(54) << " " << classrooms[i] << "教室课程表\n";

cout << "============================================================================== ======================================================\n";

cout << setw(12) << " " << setw(24) << "星期一" << setw(24) << "星期二" << setw(24) << "星期三" << setw(24) << "星期四" << setw(24) << "星期五" << "\n";

for (unsigned m = 0; m < 4; ++m) {

if (m % 2 == 0)

cout << "============================================================================== ======================================================\n";

else

cout << "------------------------------------------------------------------------------------------------------------------------------------\n";

for (unsigned m1 = 0; m1 < 3; ++m1) {

if (m1 == 1)

cout << setw(12) << time_slot[m];

else

cout << setw(12) << "";

for (unsigned n = 0; n < 5; ++n) {

if (class_table[m][n] != -1) {

j = class_table[m][n];

if (m1 == 0)

cout << setw(24) << arranges[classroomes[i][j].class_loc][classroomes[i][j].arrange_loc].course;

else if (m1 == 1)

cout << setw(24) << arranges[classroomes[i][j].class_loc][classroomes[i][j].arrange_loc].teacher;

else

cout << setw(24) << arranges[classroomes[i][j].class_loc][classroomes[i][j].arrange_loc].grade_special;

}

else

cout << setw(24) << " ";

}

cout << "\n";

}

}

cout << "============================================================================== ======================================================\n";

cout << resetiosflags(ios_base::left);

} while (1);

}

else {

cout << "非法选择\n";

}

goto loop;

}

自动排课系统设计与实现论文

摘要:制定一个学校的排课计划是一项非常耗时且相当辛苦的工作,而且它还得由有学校排课工作经验或者这方面知识的人才能做好。在一所高校时一个课程表的制定是一个难题,因为在有关课程表的问题上有很多的限制条件得考虑,还有大量的数据空间被挖掘,即便你的输入数据量并不是实际意义上的大批量。 课程编排系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以自动课程编排系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 本系统经过测试,运行稳定,可投入使用。 关键字:排课管理,VB,数据库

Abstract:Formulates a school platoon class plan is an item consumes extremely when also the quite laborious work, moreover it also must by have the school row of class work experience or this aspect knowledge talented person can complete. When a university a class schedule formulation is a difficult problem, because has the very many limiting condition in the related class schedule question to result in the consideration, but also has the massive data space to excavate, even if your input data quantity is not in the practical significance mass. The curriculum arranges the system is a school essential part, Its content said regarding the school policy-maker and the superintendent all very important, Therefore the automatic curriculum arranges the system to be supposed to be able to provide the sufficient information and the quick inquiry method for the user. But the people have since always used the traditional artificial way management document file, this management way has many shortcomings, For example: The efficiency low, the secrecy is bad, Moreover the time one is long, Will produce the massive documents and the data, This regarding the search, the renewal and the maintenance has all brought many difficulties. Along with science and technology unceasing enhancement, The computer science is mature day after day, Its formidable function had profoundly known for the people, t entered the human society each domain and is playing the more and more vital role. This system after the test, the movement is stable, may put into the use. Key words: Curriculum management, VB, database

强智高校教务网络管理系统简介

第一章强智高校教务网络管理系统简介第一节软件发布说明 第二节系统特色 第三节系统组成 第四节硬件环境 第五节软件环境 第六节网络环境 第二章软件安装、卸载及运行 第一节外部环境的安装 第二节教务系统的安装 第三节教务系统的卸载 第四节教务系统的运行 第三章软件基本操作说明 第一节批量处理

第二节报表打印 第三节取消拦截弹出窗口 第四章教务系统基础数据初始化第一节分校信息 第二节院系信息 第三节专业信息 第四节教学功能区信息 第五节教学楼信息 第六节教室信息 第七节班级信息 第八节教研室信息 第九节课程信息 第十节学年学期信息 第五章学籍管理 第一节学生管理基本流程

第二节学生基本信息管理2.1 招生数据转入 2.2 编班编学号 第三节学籍注册管理 3.1 报到管理 3.2 注册管理 第四节奖励处分管理 第五节学籍异动 5.1 校内异动 5.2 校外异动 第六节其它辅助信息管理6.1 基本信息维护 6.2 简历信息维护 6.3 家庭信息维护 6.4 奖贷信息维护 6.5 毕业信息维护

第六章教师资源管理第一节基本信息管理 基本信息填报 基本信息审核 基本信息统计

第二节辅助信息管理职称变动 学历变动 工作变动 个人经历 学术交流 教师培训 转入任课统计 教学情况 奖励情况 项目管理 编译专著 论文发表 考核情况 双师评定 师德档案

证书管理 第七章教学计划管理第一节教学计划制定基本流程第二节教学计划制定 2.1 设置专业各学期周数分配2.2必修课程计划的录入 2.3实践教学环节课程的录入2.4选修课课程计划录入 2.5专业方向计划录入 第三节教学计划审核 第四节教学计划审批 第五节教学计划查询 第六节教学计划导出打印 第七节教学计划微调 第八节专业学分统计

自动排课系统的设计与实现[1]

目录 摘要............................................................................................................................. I 第1章绪论 (1) 1.1系统开发背景 (1) 1.2国内外的研究现状 (1) 1.3系统解决的主要问题 (3) 1.4本文的主要工作 (3) 1.5本文的组织结构 (3) 第2章需求分析 (5) 2.1系统概述 (5) 2.1.1总体业务描述 (5) 2.1.2系统的目标和解决的问题 (5) 2.1.3系统的开发模式 (7) 2.2系统需求问题描述 (9) 2.2.1功能性需求 (9) 2.3.2系统非功能性需求 (12) 第3章系统构架设计 (14) 3.1构架的目标和约束 (14) 3.2构架设计 (15) 3.2.1系统总体架构 (15) 3.2.2系统功能构架 (16) 3.2.3系统技术构架 (17) 3.2.4系统安全构架 (18) 第4章系统详细设计 (20) 4.1 系统建模 (20) 4.2 系统数据库设计 (24) 4.2.1生成数据库表 (24) 4.2.2数据分析 (32) 4.2.3数据库管理技术 (34) 第5章计算机排课系统的实现 (35) 5.1系统总体实现 (35) 5.1.1数据录入模块的设计与实现 (38) 5.1.2报表模块的设计与实现 (43) 5.1.3用户管理模块的设计与实现 (45) 5.2教学计划的关键实现 (48) 5.2.1算法描述 (49) 5.2.2教学计划算法过程 (49) 5.3排课算法的关键实现 (51) 第6章总结与展望 (66) i

排课管理系统

毕业设计 <<排课管理系统>> 院系______ 专业______ 班级______ 姓名______ 日期年月日

目录 摘要I ABSTRACT II 第一章引言 1 1.1 背景1 1.1.1教师管理系统 1 1.2开发教师管理系统的目的和原则 3 1.3开发环境介绍 3 1.3.1 开发平台 4 1.3.2数据库设计工具——ACCESS数据库管理系统 7 第二章系统设计 9 2.1 系统分析9 2.2 系统流程和操作方式设计11 第三章系统界面设计12 3.1系统界面设计以及代码分析12 第四章数据库的设计30 4.1数据库设计30 4.2 数据库概念和发展30 4.3系统测试与评价38

总结39 致谢40 参考文献41 摘要 20世纪以来,社会生产力迅速发展,科学技术突飞猛进,人们进行信息交流的深度与广度不断增加,信息量急剧增长,传统的信息处理与决策的手段已不能适应社会的需要,信息的重要性和信息处理问题的紧迫性空前提高了,面对着日益复杂和不断发展,变化的社会环境,特别是企业间日趋剧烈的竞争形势,一个人、一个企业要在现代社会中求生存,求发展,必须具备足够的信息和强有力的信息收集与处理手段。 对于一个学校来说,大量教师课程安排难于通过传统的方法进行管理;这就迫切需要利用计算机技术来帮助学校管理者来处理教师课程安排的日常管理,合理安排课程,防止课程冲突.排课管理系统可以很好的解决以上问题.排课管理系统是管理信息系统的一个典型用例. 管理信息系统是一个集信息技术、经济管理理论、统计学与运筹学、数据库技术为一体的综合性系统,是一个资金技术密集型、劳动密集型、智力密集型的项目。我国拥有广阔的市场和丰富的人才资源,有几十年的技术积累和经验积累,有一定的后发优势。管理信息系统的创新工作既不能妄自菲薄,更不能夜郎自大。要抓住当前网络经济兴起的有利时机,以实现我国信息技术和信息产业的跨越式发展,更好地发挥信息产业对国民经济增长的拉动作用。 开发学校排课管理系统的过程就是要实现数据处理方式由人工管理向计算机管理的转变,它在计算机技术和教师管理实践活动两者之间架设桥梁。 关键字:排课管理,管理信息系统,数据库,计算机管理

智能排课系统3复习过程

综合实验报告 题目:智能排课系统 学生姓名: 专业:信息管理与信息系统 班级:信管1002班 学号: 1002100206

一、概述 (一)开发背景 随着信息技术的飞速发展,各个行业的信息化势在必行。正所谓“科学技术是第一生产力”,科技的进步大大地提高了生产率。然而,在高校这个知识密集的地方,如何才能提高办学效率,更好地完成教学任务,跟上社会发展步伐,这是一个摆在教学工作者面前的一个迫切的问题。应用信息化来改造传统的教学管理模式是一个重要途径。 近几年来,随着各高校办公自动化工作的推进,教务管理自动化也被摆上了日程。在教务工作中占有很大比重的一项就是每学期的课程排定工作。由于教工、教室和设备的相对紧张,如何进行合理地安排和分配,从而充分利用教学资源是我们不得不面对的问题。而人工进行排课不仅任务重,效率低,而且易出错,难于维护,想要排出一张各方面都满意的课表非常困难。并且随着高校规模的扩大手工排课的难度和工作量呈几何级数增长。 排课系统正是为了减轻教务人员的工作量,实现教务工作自动化,解决排课这一老大难问题的教务办公软件。尤其针对高校的排课一直都没有很好的解决方法,但是此问题又是每个学校在每个学期都会碰到的必要行政作业。本文在相关理论的指导下,在分析以往一些排课软件的基础上,提出一个高校通用排课系统的设计方法,并对一些具体的问题给出相应解决方案。但是,由于技术、经验的有限和数据量过大,目前我们很难做出一个满足所有需要的排课系统。因为它不仅要考虑到教室冲突问题和教师冲突问题,还要考虑到分段课、单双周课时的资源利用问题;另外由于高校的教学特点,还要处理合班课、分班课、体育课与选修课等特殊课程。针对这些问题,在此专门对数据库设计作了一些探索,并于架构的选择和模块的划分上经过精心调整,在菜单的设计上也体现了人性化的操作。该设计贴近用户需求,功能完整,架构合理,并用大量的框图模型体现了系统的规划。 (二)项目的任务及意义 当今学校内部没有完善的高校排课系统,管理水平差,学校课程不能得到合理分配。迫切需要提高现代化管理水平、管理质量和管理高校课程。高校排课系统的初步现代化的开发和使用,能够大大提高学校管理者的工作效率,节省成本提高经济效益。它把从事教务管理的人员从繁重的手工操作中解脱出来,用更多精力从事创造性的管理活动和其它重要的活动中去,从而达到节省人力、物力,财力的目标;它能使决策、计划和其它管理活动更加科学、精确、灵活。 本软件主要是适用于高等学校教务部门的办公软件,运用此软件,可以免去工作人员繁忙而枯燥的手工排课过程,直接通过计算机进行排课。 业务范围涉及到课程、上课班级/实验班级/上机班级、任课指导老师/周次/节次、教学场地(教室,实验室,机房等)等相关因素。 二、系统规划 (一)需求分析 自动课程编排系统需要满足来自三方面的需求,这三个方面分别是学生、教师和管理员。学生的需求是查询院系的课程情况及学生信息的修改;教师对选课系统自动排课情况进行操作,同时形成自动排课查看确认;选课管理员的功能最为复杂,包括对学生、教师、选课进行管理和统计,及系统状态的查看、维护并生成选课报表。学生可以直接查看选课情况,学

高校自动排课系统毕业设计

自动排课系统 摘要:制定一个学校的排课计划是一项非常耗时且相当辛苦的工作,而且它还得由有学校排课工作经验或者这方面知识的人才能做好。在一所高校时一个课程表的制定是一个难题,因为在有关课程表的问题上有很多的限制条件得考虑,还有大量的数据空间被挖掘,即便你的输入数据量并不是实际意义上的大批量。 课程编排系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以自动课程编排系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 本系统经过测试,运行稳定,可投入使用。 关键字:排课管理,VB,数据库

Abstract:Formulates a school platoon class plan is an item consumes extremely when also the quite laborious work, moreover it also must by have the school row of class work experience or this aspect knowledge talented person can complete. When a university a class schedule formulation is a difficult problem, because has the very many limiting condition in the related class schedule question to result in the consideration, but also has the massive data space to excavate, even if your input data quantity is not in the practical significance mass. The curriculum arranges the system is a school essential part, Its content said regarding the school policy-maker and the superintendent all very important, Therefore the automatic curriculum arranges the system to be supposed to be able to provide the sufficient information and the quick inquiry method for the user. But the people have since always used the traditional artificial way management document file, this management way has many shortcomings, For example: The efficiency low, the secrecy is bad, Moreover the time one is long, Will produce the massive documents and the data, This regarding the search, the renewal and the maintenance has all brought many difficulties. Along with science and technology unceasing enhancement, The computer science is mature day after day, Its formidable function had profoundly known for the people, t entered the human society each domain and is playing the more and more vital role. This system after the test, the movement is stable, may put into the use. Key words: Curriculum management, VB, database

基于SSM的高校排课系统的研究与应用

基于SSM的高校排课系统的研究与应用中文摘要基于 SSM的高校排课系统的研究与应用 中文摘要 排课管理是高校教学管理中十分重要又相当复杂的工作,它涉及的范围广、限制条件多,属于多因素的组合规划问题,通过科学、合理的编排课表,对稳定教学秩序、提高教学质量具有重要作用。排课系统是一个提供教学计划、教学任务和排课等功能的管理平台,是高校数字化校园建设的重要组成部分。 本课题设计并实现了基于J2EE的Web轻量级开发框架SSM(Struts2、Spring、MyBatis)的高校排课系统。首先,描述了系统设计的相关理论及SSM开发框架的实现原理;然后,对系统的需求进行分析,包括业务流程分析、数据流程分析以及功能性需求和非功能性需求分析;其次,对系统进行总体设计,包括系统架构的设计、系统功能模块的设计和数据库的设计;最后,描述了系统主要功能模块的详细设计与实现。 本课题设计并实现的排课系统满足了排课工作的基本需求,达到了预期的效果。 基于 SSM框架的排课系统具有扩展性好、易维护等特点,将为同类高校排课系统的建设提供有效的参考。 关键词:排课系统,J2EE,SSM框架,数字化校园

Abstract Research and Design of Course Scheduling System Based on SSM Research and Design of Course Scheduling System Based on SSM Abstract Course arrangement is a very important and complex task of university teachingmanagement; it involves a wide range of restrictions and belongs to the multi-factorportfolio planning problem. Arranging course scientifically and rationally has an importantrole to improvement the quality of teaching and stabilizes the teaching order. Coursescheduling system provides us with a management platform including functions ofteaching plan, task management and course arrangement. The purpose of the thesis is to design and implement a university Course SchedulingSystem based on J2EE Web lightweight development framework SSM (Struts2, Spring,and MyBatis). Firstly, the thesis describes the theory of the system design andimplementation principle of the SSM development framework. Secondly, it describes theoverall system design, including the design of the system architecture, the design of thesystem function modules, and the design of the database. Lastly, it describes the detaileddesign and implementation of the system's main function modules. The designed and implemented course scheduling system has meet work needs andreaches the desired effect. The system based on SSM framework has characteristics ofgood expansibility and easy maintenance, its design and implementation provides a usefulreference for other similar Course Scheduling System. Keywords: Course Scheduling System, J2EE, SSM framework, digital campus

课程设计(自动排课系统)

2008~2009学年度《WEB 程序设计》 课程设计 班级:05网络3班 学号:090205338 姓名:周秋艳 2008年12月17日

基于WEB的高校教师排课系统 一、用户需求分析(10分) 学校教务的管理作为高校教育信息化工作中的一项重要工作,如何构建一个具有开放性、实用性和灵活性的平台,是一个值得探讨的课题。其中,作为学校教务重点环节之一的排课系统也尤为重要。 先前,在统筹安排各班级上课的时间需要人工实现,而且经常会出现同时有多个班级要使用教室的冲突。既耗时又耗精力,随着计算机技术的不断发展,计算机技术在各领域的充分完美应用,以学校的教务管理为该系统的应用背景,开发一个教室智能排课系统。 此系统开发主要包括后台数据库的建立和前端应用程序的开发两个方面。系统采用Visual Basic 6.0开发工具和SQL Server 2000作为后台数据库开发的应用软件。该系统实现上机时间的安排,课程的安排,教室的安排,以及它们之间的不冲突和资源的高效利用;这更切合学院教学需要,降低了排课管理工作的工作量和节省了时间,同时课程安排完成后,学院可迅速获得课表情况信息,为教学工作带来方便。本系统界面友好,操作简单,使用方便。 二、系统总体设计(15分) 1.系统功能描述 1.1 基本信息管理:教师、教室、班级、课程、教学任务等数据的输入、编辑功能; 1.2 数据处理:自动排课、课表修改、删除功能;

1.3 数据输出:桌面查询教师、教室、班级课程表,报表打印教师、 教室、班级课程表; 1.4 帮助:指导用户使用该系统及其他相关说明。 2 系统功能设计 分析目前市场上流行的各种排课软件,它们都具有比较完善的功能,但在真正的排课算法上都会有些问题,因为排课算法最关键的问题是如何解决各式各样的冲突。在做需求分析的过程中,通过调查得知目前排课人员对排课算法的主要要求有: 2.1 怎样的合班组合能避免冲突? 目前采取的方式是相同或相近的专业的班级组合。 2.2 什么地方有空能排课? 对教室和班级而言是查空,对教师而言是有无排课需求。 2.3 有两个以上的空哪一个更好? 是要考虑离散和平衡问题。 2.4 排课前如何考虑教师宏观利用问题? 例如:多媒体大班课:大学英语、高等数学尽量排在上午, 思想道德修养、马克思主义哲学原理等尽量排在下午。 2.5 对于数量巨大的信息,系统仍具有较快的响应速度和较小的 系统开销。 三、系统功能模块分析(25分) 详细分析各功能模块之间的关系,以及各功能模块下的子模块构成。

CRP排课管理系统

CRP模型 CRP系统包括学籍管理、成绩管理、排课管理、考试管理、教师管理、备品管理、系统维护和系统登陆平台。对于每一个子系统,都对应相应的模型,即各种各样的UML图。由于篇幅所限和各子系统具有相同的结构特征,这里只介绍的排课管理子系统的各种模型的建立。 CRP排课管理子系统是为了解决中小学繁杂的排课任务而设计开发的,其基本的要求是要实现排课的半自动或自动化,排出的课程表必须合理,实用。 在这里,结合RRUP过程来介绍各个排课管理系统在实际开发中使用UML 表示的各个模型。 1.1 需求模型 我们使用用例模型来表示需求阶段的系统模型,用例模型主要有用例图组成,从该子系统开始到子系统最终的发布,每一个迭代其用例模型都不相同;在CRP系统的开发过程中,随着迭代的不断进行,用例模型也在不断地发生变化,由于篇幅所限,本文只给出第一次迭代确定的用例模型和现今最后一次迭代所确定的用例模型。 RRUP过程的第一步,就是找出系统的功能需求和非功能需求,并建立相应的需求模型(用例模型)。 通过需求分析,确定了排课管理的功能需求,其需求简要概括如下: ?排课信息设置:包括科目信息,上课时间,科目和教师限制信息,班级 排课信息,排课管理系统根据这些排课信息和限制信息对系统进行自动 排课。 ?自动排课和手工排课:对于用户设定了排课信息之后,系统能够自动对 课表进行安排,而且能够手工对安排完的课表进行调整,在排课过过程 当中,能够对不合理的排课结果给用户进行提示。 ?课表报表和课表查询,给出全校教师,班级课表;在课表查询中,用户 可以选择不同的教师,班级,科目,系统根据用户的选择给出相应的课 表。 需求描述是整个系统在初始阶段的开端,RRUP中,不赞成使用文档对需求进行描述,而是使用用例图和用例模型对系统建立整个需求模型。

高校排课系统开题报告

青岛农业大学 毕业论文(设计)开题报告 题目:青岛农业大学排课系统的设计与实现 姓名: 学院:理学与信息科学学院 专业:计算机科学与技术 班级: 学号: 指导教师: 2013 年 3 月 18 日

说明 一、有关说明 毕业论文(设计)题目确定后,学生应尽快征求导师意见,讨论题意与整个毕业论文(或设计)的工作计划,然后根据课题要求查阅、收集有关资料并编写研究提纲,主要由以下几个部分构成: 1.研究(或设计)的目的与意义。应说明此项研究(或设计)在生产实践上或对某些技术进行改革带来的经济、生态与社会效益。有的课题过去曾进行过,但缺乏研究,现在可以在理论上做些探讨,说明其对科学发展的意义。 2.国内外同类研究(或同类设计)的概况综述。在广泛查阅有关文献后,对该类课题研究(或设计)已取得的成就与尚存在的问题进行简要综述,只对本人所承担的课题或设计部分的已有成果与存在问题有条理地进行阐述,并提出自己对一些问题的看法。 3.课题研究(或设计)的内容。要具体写出将在哪些方面开展研究,要重点突出。研究的主要内容应是物所能及、力所能及、能按时完成的,并要考虑与其它同学的互助、合作。 4.研究(或设计)方法。科学的研究方法或切合实际的具有新意的设计方法,是获得高质量研究成果或高水平设计成就的关键。因此,在开始实践前,学生必须熟悉研究(或设计)方法,以避免蛮干造成返工,或得不到成果,甚至于写不出毕业论文或完不成设计任务。 5.实施计划。要在研究提纲中按研究(或设计)内容落实具体时间与地点,有计划地进行工作。 二、注意事项 1.开题报告的撰写完成,意味着毕业论文(设计)工作已经开始,学生已对整个毕业论文(设计)工作有了周密的思考,是完成毕业论文(设计)关键的环节。在开题报告的编写中指导教师只可提示,不可包办代替。 2.无开题报告者,不准申请答辩。 3.本表要用计算机填写,签字要手写,一式三份,本人、导师、所在学院(要原件)各一份。 4.学生可根据内容的多少调整表格的大小。

高校实验课排课系统的设计与研究

高校实验课排课系统的设计与研究 【摘要】为了充分利用实验室资源,提高实验室工作效率,本文设计了一个高校实验室排课系统。该系统利用Visual Basic作为开发语言,集高校实验课教学安排、实验课排课、实验室预约管理和实验课课表查询等功能为一体。系统实现了将专任教师、教授课程、上课地点这三个因素与上课时间的匹配问题,极大地优化了高校实验室资源分配。中国论文网/8/view-12933355.htm 【关键词】实验室;排课系统;Visual Basic 1 研究背景及现状 排课是高校实现教学任务顺利进行的前提。目前大学生数量与日剧增,高

校开设课程更加多元化,排课的难度变得越来远大。实验中心作为高校教学环境中重要的一环,其排课也面临着诸多问题[1]。传统手动排课多采用实验员制作表格的方式,专任教师到实验员处预约实验课程时间及地点,由实验员统一调度分配。当确定好实验课上课地点时,再由实验员通知专任教师。这种方法工作量巨大,繁琐,而且无法对整个实验中心的教室资源做整体分配,造成资源浪费。人工排课出现错误的几率极大,一旦出错,将导致实验教学任务无法顺利进行,无法维持正常的教学秩序,造成教学事故,影响教学质量[2]。 目前,已存在一些排课系统,如基于贪婪算法的排课系统[3],基于遗传算法的排课系统,人工智能排课系统[4]。这些排课系统都是针对高校基础课程的排课系统。实验课与理论课相比,具有实验课时少,上课时间零散,需按照实验项目授课等特殊性,因此,目前针对基础课的排课系统并不适用于实验课排

课。 本文针对实验课课程的特殊性,设计了一个排课系统。该系统将专任教师、教授课程、上课地点这三个因素与上课时间相匹配,充分地利用了实验室资源,实现了资源分配的最优化,极大地提高了实验室工作效率,调高了实验教学质量。 2 实验课排课系统的设计与实现 2.1 实验课排课系统的功能分析 高校实验课排课管理分为高校教务处、二级学院和实验中心三个层次。高校教务处负责下发每个学期的实验教学任务,二级学院负责审核和实验教学任务,实验中心负责实验课排课的具体安排和调度。根据高校实验课排课的管理模式,该排课系统主要分为以下几个模块:系统管理模块、教学任务准备模块、实验课程排课模块、实验室预约管理模块、实验课表查询模块、实验课工作量统计模块和冲突预警模块。各模块功能如下:

学生排课系统分析及设计说明书

1研究背景 课程表是一个学校日常教学工作和其他各项活动的指挥调度表。它不仅是学生和教师上课的依据,对学校其他工作的统一安排也有直接影响。高校排课工作是执行教学计划、实现学校培养目标的重要一环,是学校教学教务管理工作中最基本而又非常重要的一项,它是学校建立稳定的教学秩序的最根本的保证,是学校贯彻教育方针、培养合格人才的具体体现,并对学生的学习效果和课堂的教学质量有直接的影响。它不仅可以从侧面反映出学校领导的办学思想,也能体现出学校教育教学管理的能力和水平。 课程表是地方高校开展教学活动的指令性文件。在地方高校的传统排课方式下,课表编排主要是靠手工完成的,排课人员需要花费大量的时间和精力,并且容易出错,同时手工操作也不能满足资源需求的经常变化。 当前地方高校普遍利用计算机进行自动排课,不但能使教务人员从繁杂的排课任务中解脱出来,提高教务管理工作效率,而且能改善教学管理质量,合理、高效地利用有限的教学资源,使学校的各种教学活动、教学管理及其它相关的工作能够有序、规范地进行,维持正常的教学秩序,同时对推动教务管理的信息化起到非常重要的作用。由此出现了众多的计算机排课软件。 但是当前地方高校再采用计算机进行排课过程中,大多采用传统方法进行程序设计,把程序作为系统核心。系统中所使用的排课数据主要考虑了一般性排课原则,而对于不同学校的特点考虑不足,特别是学生层次的关注度不够。并且数据与程序结合过于紧密,程序的修改维护有很大难度,不便于系统扩充和升级,因此限制了系统的通用性。而且在发生特殊情形下,只能依赖于人工调整,虽然有很多地方高校先后购买过多个排课软件,但都不能圆满地解决课表编排的问题,造成了大量的浪费。同时课表编排问题涉及教师、教室、学生、课程及教学时间等多种因素的组合规划,具有规模大、约束条件复杂以及不断变化等特点,根据上文的分析,缺乏人性化,没有对学校内的学生进行考虑是问题存在的原因。 2排课系统分析 2.1 排课系统业务描述 排课是每个学期都必须面临的一件繁重的日常教务工作,是为下学期教学工作能顺利组织实施的一个前提条件。排课管理是高校每个学期教学教务管理工作的一个主要内容,是整个综合教学教务管理系统中必不可少的部分。排课也是一项复杂而精细的工作,需要考虑的因素很多,涉及到方方面面,归纳起来主要有五方面相互作用、相互关联的因素,即课程、教师、时间、班级以及教室。如何把各要素科学、规范、高效地进行优化组合,以保证教学秩序的稳定,促进教学质量的提高,这是每所高校都面临的课题。本论文以昆明理工大学排课为背景,对校院两级排课进行设计。 2.2排课业务流程 学院先制定各个专业的教学计划,根据教学计划的要求、实际招生人数、教师资源情况等,上报每学期要开设的课程,教务处审核学院上报的开课计划,审核通过后,根据学院上报的开课计划,将教室资源进行分配到各学院或者作为公用教室,由教务处对公共课程(包括公共英语、马列课、公共体育、计算机基础、高等数学等)进行分组分班处理,并对各公共课程教学班安排时间和教室,然后对各个专业的开课计划设置开始排课标志,由各学院在分配到各学院使用的教室资源中安排本学院专业课的上课时间和教室。其业务流程如下图所示: 2.3 排课原则 课程、时间、教师、班级、教室是排课的五大基本要素,排课实际上是对这五个组成要素进行优化组合,使之符合教育、教学规律,符合学生身心发展。编排者必须对这五要素的信息有较全面的了解: (1)课程包括课程名称、课程性质(如:学科基础课、专业必修课、专业选修课、公共必修课、通识教育课、实验课、实践课等)、总学时、理论学时、实验(实践)学时、周学时以及课程的授课方式(如:多媒体教学、普通教学、双语教学等)。 (2)时间包括每个学期的教学周数、每周上课的天数、每天上课的节次等。 (3)教师包校内教师和外聘教师,公共课和专业课教师,教师的所在院系、职称、学历、进修情况等。(4)班级:所在院系、年级、专业、班级人数。 (5)各校区教室的楼房信息,如:所在校区、门牌号、所在楼层、教室容量、教室类型、所属部分情况。

基于遗传算法的自动排课系统毕业设计

摘要 随着科学技术和社会信息技术的不断提高,计算机科学的日渐成熟,其强大的功能已为人们深刻认识,它在人类社会的各个领域发挥着越来越重要的作用,给人们的生活带来了极大的便利,成为推动社会发展的首要技术动力。排课是学校教学管理中十分重要、又相当复杂的工作之一。解决好教学工作中的排课问题对整个教学计划的进行,有着十分重要的意义。首先对排课的已有算法作了相关的调查研究,决定采用遗传算法。通过设计实现基于遗传算法的自动排课系统,研究了遗传算法在排课系统中的应用。 关键词:遗传算法、自动排课、Java。

Abstract Along with science technical and community information technical increases continuously, calculator science is gradually mature, its mighty function has behaved deep cognition, and it has entered the human social each realm erupts to flick the more and more important function, bringing our life biggest of convenience. Curriculum arrangement is an important and complicated working in school,so solving the problem is of great importance for teaching programming.Investigated and studied the algorithm existed, determine that adoptgenetic algorithm. ThroughDesign Implementation theAuto CourseArrangementManagement System Base onGenetic Algorithm, researched the application of genetic algorithmin theCourseArrangementManagement System. Keywords: Genetic Algorithm Auto Course Arrangement ManagementJava.

高效智能排课系统

目录 摘要 (1) 引言 (1) 1.绪论 (1) 1.1课题背景 (1) 1.2国内外研究的现状 (2) 1.3课题设计的意义 (2) 1.4设计方法 (2) 2.系统需求分析 (3) 2.1编程的环境的选择 (3) 2.2系统功能需求分析 (3) 2.3系统模块和流程图 (3) 3.数据库设计与系统功能的设计 (7) 3.1数据库的逻辑实现 (7) 3.2数据库的创建 (7) 3.3系统整体功能的设计 (8) 3.4系统登陆界面的设计 (9)

摘要:本论文的主要工作是设计并实现高效的智能排课系统。使用计算机自动实现课程的查询、教师的查询以及教室的查询,并且能够自动生成课程表。高校智能排课系统平台采用Windows 7操作系统,数据库主要采用SQL Server 2005,并采用Java语言实现编程。本系统运用管理员、教师、学生三级授权方式,快速的实现排课的功能,大大提高了排课的工作效率。 关键词:SQL Server;Java;智能排课 引言 随着计算机科学技术的高速发展,计算机意境成为我们学习和工作中不可缺少的重要部分,它被应用于很多领域,它已经成为了人们生活中不可缺少的一部分,我们生活的各个方面都有它的存在。这是因为计算机具有以下几个特点:第一,计算机可以为人们的工作和生活提供方面;其次,使用计算机可以节省许多的纸质文件、节省了大量的存储空间;第三,计算机可以缩短人们的工作时间;第四,计算机可以对文档进行加密,让文件更安全等等。就排课工作而言,我国各个高校使用传统手动排课的管理方法,就是一件很复杂的工作,这篇论文充分利用了计算机的特点,使用Java语言开发一个相对便利的高校排课系统。 1.绪论 1.1课题背景 排课管理系统是各个大学中不可缺少的重要组成部分,它的内容的优劣对于学校的学生、老师、决策者和管理者来说都是至关重要的。智能排课管理系统必须能够做到为用户提供及时准确的课程信息、快捷的课程查询手段、快速的生成课程表的这三项基本功能。然而,一直以来各个学校都使用着最为传统的人工管理方式进行排课,这种传统的人工排课方法不但但是效率低、保密性差的特点,并且很难进行修改。再加上时间长了之后,会产生大量的课程文件和课程数据,如果人们要查找课程信息或者修改课程信息就需要查找大量的文件。现代社会,计算机技术不断的在发展,也不断的在成熟,使用计算机进行智能排课,具有着人工排课无法相比较优点。例如:查询课程信息方便、存储课程容量大、保存时

学生排课选课管理系统

管理信息系统课程设计 课题名称:学生排课选课管理系统学生姓名:111 2011111 学院:11院 专业年级:11级信管1班 指导教师:刘昭老师 完成日期:2014/1/4

学生排课选课管理系统 学生:骆天阳 指导教师:刘昭 [摘要]选排课系统功能的设计上,学生选排课系统可以分为登录、排课和选课3个子系统。登录子系统区分排课者(也即系统的管理者)、教师和学生这三者的不同身份,给出不同的权限,在页面中根据身份判断其相应具有的功能来使用这套系统。排课子系统主要供排课者使用,排课者可以在这里进行一切与排课有关的活动。选课系统主要供学生选课使用,在这里可以进行与选课有关的活动;教师可在教师反馈系统中对排课者提出反馈意见,供排课者在排课时可参考使用。学生选排课系统使用Delphi 7平台开发。在数据库上考虑到快捷、有效,同时考虑到多台服务器共同使用同一个数据库的情况,这里选择SQL Server 2008作为数据库服务器。 [关键词]Delphi 7学生排课学生选课SQL Server

目录 第一章任务书 (4) 1.1 题目及要求 (4) 1.2 设计时间 (4) 1.3 其他相关内容 (4) 1.4 设计资料 (4) 1.5 工作内容 (5) 1.5.1 系统可行性分析和需求分析 (5) 1.5.2 系统数据库设计 (5) 1.5.3 系统总体设计与详细设计 (5) 1.5.4 系统测试 (5) 第二章系统开发可行性分析 (6) 2.1技术可行性 (6) 2.2经济可行性 (6) 2.3操作可行性 (6) 第三章开发运行环境 (7) 3.1系统开发和运行环境 (7) 3.1.1系统开发环境 (7) 3.1.2系统运行环境 (7) 3.2开发工具介绍 (7) 3.2.1 Delphi 7 (7) 3.2.2 Microsoft SQL Server 2008 (8) 第四章需求分析 (9) 4.1引言 (9) 4.2编写目的 (9) 4.3研究背景 (9) 4.4系统描述 (10) 4.5系统需求分析 (10) 第五章数据库分析与设计 (11) 5.1编写目的 (11) 5.2逻辑模型的建立 (11) 5.2.1 数据流图 (11) 5.3数据字典 (12) 5.3.1系统数据表及其用途 (12) 5.4概念设计 (13) 5.4.1系统实体关系图 (13) 5.5数据库设计 (13) 5.6局部 E-R图 (16) 第六章系统设计 (20) 6.1系统功能 (20)

相关文档
相关文档 最新文档