课程设计用c++设计一个排课程序.docx
- 文档编号:29636059
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:47
- 大小:62.26KB
课程设计用c++设计一个排课程序.docx
《课程设计用c++设计一个排课程序.docx》由会员分享,可在线阅读,更多相关《课程设计用c++设计一个排课程序.docx(47页珍藏版)》请在冰豆网上搜索。
课程设计用c++设计一个排课程序
课程设计论文
题目:
用c++设计一个排课程序
学院:
专业名称:
电子科学与技术
班级学号:
学生姓名:
指导教师:
2013年6月
1
一、课题背景.3
1.1选题的意义4
二、课题要求.4
2.1设计功能要求4
2.2报告要求5
三、系统总体方案:
5
3.1方案描述5
3.3各功能模块:
6
四、源程序代码7
五、测试数据及结果24
六、总结.25
参考书籍.26
致谢.26
2
摘要:
随着社会经济的迅速发展和科学技术的全面进步,计算机
事业的飞速发展,以计算机与通信技术为基础的信息系统正处于
蓬勃发展的时期。
随着经济文化水平的显著提高,人们对生活质
量及工作环境的要求也越来越高。
如何通过计算机为我们完成更
多的事情,进而达到办公自动化和优化日常工作的目的,也就成
了一个大众化的课题。
作为计算机应用的一部分,使用计算机对信
息进行管理,具有与手工管理所无法比拟的优点.例如:
检索迅速、查
找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
关键词:
计算机c++程序语言排课系统
一、课题背景
1.1实际应用的需要
近几年来,随着各高校办公自动化工作的推进,教务管理自动化也被摆上了日程。
在教务工作中占有很大比重的一项就是每学期的课程排定工作。
由于教工、教室和设备的相对紧张,如何进行合理地安排和分配,从而充分利用教学资源是我们不得不面对的问题。
而人工进行排课不仅任务重,效率低,而且易出错,难于维护,想要排出一张各方面都满意的课表非常困难。
并且随着高校规模的扩大手工排课的难度和工作量呈几何级数增长。
学校教务的管理作为高校教育信息化工作中的一项重要工作,如何构建一个具有开放性、实用性和灵活性的平台,是一个值得探讨
3
的课题。
其中,作为学校教务重点环节之一的排课系统也尤为重要。
1.1选题的意义
排课系统正是为了减轻教务人员的工作量,实现教务工作自动化,解决排课这一老大难问题的教务办公软件。
尤其针对高校的排课一直都没有很好的解决方法,但是此问题又是每个学校在每个学期都会碰到的必要行政作业。
本文在相关理论的指导下,在分析以往一些排课软件的基础上,提出一个高校通用排课系统的设计方法,并对一些具体的问题给出相应解决方案。
但是,由于技术、经验的有限和数据量过大,目前我们很难做出一个满足所有需要的排课系统。
因为它不仅要考虑到教室冲突问题和教师冲突问题,还要考虑到分段课、单双周课时的资源利用问题;另外由于高校的教学特点,还要处理合班课、分班课、体育课与选修课等特殊课程。
针对这些问题,在此专门对数据库设计作了一些探索,并于架构的选择和模块的划分上经过精心调整,在菜单的设计上也体现了人性化的操作。
该设计贴近用户需求,功能完整,架构合理,并用大量的框图模型体现了系统的规划。
该系统实现上机时间的安排,课程的安排,教室的安排,以及它们之间的不冲突和资源的高效利用;这更切合学院教学需要,降低了排课管理工作的工作量和节省了时间,同时课程安排完成后,学院可迅速获得课表情况信息,为教学工作带来方便。
本系统界面友好,操作简单,使用方便。
二、课题要求
2.1设计功能要求
程序运行时,用户输入教师信息(姓名、教师号、工作量)、课程信息(课程名、课程号、周学时、总学时、优先级)、教师对所希望讲授课程的期望值以及教学工作量等相关信息,所有信息应保存在文件中,程序根据课程的优先级以及教师对课程的期
望值进行排课。
为了公平起见,程序随机分配课程,如果10门课
4
程都有优先级,程序以随机的顺序将这些课程分给教师,如果10位教师对某门课程的期望值为1,程序应从10位教师中随机选择一个。
最后输出排课情况,即某位老师上某门课程,以及某位老师
的工作量。
测试数据:
程序应能实现对不少于20门课和10个教师的排课,并且使每个教师的满意度达到最大,不存在工作量不满的教师以及未分配的课等情况。
2.2报告要求
1.封面
2.课程设计报告:
3.⑴系统总体方案
⑵设计思路和主要步骤
⑶各功能模块和流程图
⑷设计代码
⑸心得体会和参考资料
三、系统总体方案:
3.1方案描述
某学校每位教师都有教学工作量,教师对他所希望讲授的课程表达为一个期望值,1,2,,n,其中1是最高的期望值。
课程也有优先级,1,2,,n,用来决定将课程分给教师的顺序,其中1是高的优先级。
设计一个程序针对某些课程给某些教师进行排课。
要求:
(一)程序运行时,用户输入教师信息(姓名、教师号、工作量)、课程信息(课程名、课程号、周学时、总学时、优先级),教师对所希望讲授课程的期望值以及教学工作量等相关信息,所有信息应保存在文件中。
(二)程序根据课程的优先级以及教师对课程的期望值进行排
5
课。
最后输出排课情况,即某位老师上某门课程,以及某位老师的工作量。
(三)可以实现对文件的修改。
(四)可以在各个界面中实现退出以及进入的循环。
(五)可以退出本系统。
(六)程序应能实现对不少于20门课和10个教师的排课,并且使每个教师的满意度达到最大,不存在工作量不满的教师以及未分配的课等情况。
3.2系统设计框图:
3.3各功能模块:
命令
对应函数
功能描述
1
input_teacher
输入数据并写入文件
2
input_course
输入数据并写入文件
3
input_num
输入数据并写入文件
4
arranging
排课
5
输出排课结果
6
6
print_help
帮助
7
print_teacher
输出文件信息
8
print_course
输出文件信息
9
print_num
输出文件信息
10
change
修改文件信息
四、源程序代码
Teacher.h:
#include
#include
classteacher
{private:
charname[11];
intid;
intwork_load;
inttotal;
public:
teacher();
voidset_teacher(char*pn,inti,intw);
voidset_total(intt)
{total=t;}
char*get_name()
{returnname;}
intget_id()
{returnid;}
intget_work_load()
{returnwork_load;}
intget_total()
{returntotal;}
voidprint();
};
teacher:
:
teacher()
{strcpy(name,"无");
7
id=0;
work_load=0;
total=0;}
voidteacher:
:
set_teacher(char*pn,inti,intw)
{strcpy(name,pn);id=i;
work_load=w;}
voidteacher:
:
print()
{cout<<"姓名:
"< cout<<"编号: "< cout<<"工作量: "< } Course.h: #include classcourse {private: charcourse_name[15]; intcourse_id; intweek_hour; inttotal_hour; intN; public: course(void); voidset_course(char*pname,inti,intw,intt,intn) char*get_course_name() {returncourse_name;} intget_course_id() {returncourse_id;} intget_week_hour() {returnweek_hour;} intget_total_hour() {returntotal_hour;} intget_N() {returnN;} voidprint(); }; course: : course(void) {strcpy(course_name,"无"); 8 course_id=0; week_hour=0; total_hour=0; N=0;} voidcourse: : set_course(char*pname,inti,intw,intt,intn) {strcpy(course_name,pname);course_id=i; week_hour=w; total_hour=t; N=n;} voidcourse: : print() {cout<<"课程名: "< "< cout<<"周学时: "< cout<<"总学时: "< cout<<"优先级: "< voidcourse: : print() {cout<<"课程名: "< "< "< "< "< } {x=0;y=0;} voidset_x(inta) {x=a;} voidset_y(intb) {y=b;} intget_x() {returnx;} intget_y() {returny;} }; 排课.cpp: #include 9 course_id=0; week_hour=0; total_hour=0; N=0;} voidcourse: : set_course(char*pname,inti,intw,intt,in tn) {strcpy(course_name,pname);course_id=i; week_hour=w; total_hour=t; N=n;} voidcourse: : print() {cout<<"课程名: "< "< cout<<"周学时: "< cout<<"总学时: "< cout<<"优先级: "< voidcourse: : print() {cout<<"课程名: "< cout<<"编号: "< cout<<"周学时: "< cout<<"总学时: "< cout<<"优先级: "< } {x=0;y=0;} voidset_x(inta) {x=a;} voidset_y(intb) {y=b;} intget_x() {returnx;} intget_y() {returny;} }; 排课.cpp: #include 9 课程名: "< "< 周学时: "< 总学时: "< 优先级: "< course_id=0; week_hour=0; total_hour=0; N=0;} voidcourse: : set_course(char*pname,inti,intw,intt,in tn) {strcpy(course_name,pname);course_id=i; week_hour=w; total_hour=t; N=n;} voidcourse: : print() {cout<<"课程名: "< "< cout<<"周学时: "< cout<<"总学时: "< cout<<"优先级: "< voidcourse: : print() {cout<<" cout<<" cout<<" cout<<" cout<<" } {x=0;y=0;} voidset_x(inta) {x=a;} voidset_y(intb) {y=b;} intget_x() {returnx;} intget_y() {returny;} }; 排课.cpp: #include 9 course_id=0; week_hour=0; total_hour=0; N=0;} voidcourse: : set_course(char*pname,inti,intw,intt,in tn) {strcpy(course_name,pname);course_id=i; week_hour=w; total_hour=t; N=n;} voidcourse: : print() {cout<<"课程名: "< "< cout<<"周学时: "< cout<<"总学时: "< cout<<"优先级: "< voidcourse: : print() {cout<<"课程名: "< cout<<"编号: "< cout<<"周学时: "< cout<<"总学时: "< cout<<"优先级: "< } {x=0;y=0;} voidset_x(inta) {x=a;} voidset_y(intb) {y=b;} intget_x() {returnx;} intget_y() {returny;} }; 排课.cpp: #include 9 course_id=0; week_hour=0; total_hour=0; N=0;} voidcourse: : set_course(char*pname,inti,intw,intt,in tn) {strcpy(course_name,pname);course_id=i; week_hour=w; total_hour=t; N=n;} voidcourse: : print() {cout<<"课程名: "< "< cout<<"周学时: "< cout<<"总学时: "< cout<<"优先级: "< voidcourse: : print() {cout<<"课程名: "< cout<<"编号: "< cout<<"周学时: "< cout<<"总学时: "< cout<<"优先级: "< } {x=0;y=0;} voidset_x(inta) {x=a;} voidset_y(intb) {y=b;} intget_x() {returnx;} intget_y() {returny;} }; 排课.cpp: #include 9 course_id=0; week_hour=0; total_hour=0; N=0;} voidcourse: : set_course(char*pname,inti,intw,intt,in tn) {strcpy(course_name,pname);course_id=i; week_hour=w; total_hour=t; N=n;} voidcourse: : print() {cout<<"课程名: "< "< cout<<"周学时: "< cout<<"总学时: "< cout<<"优先级: "< voidcourse: : print() {cout<<"课程名: "< cout<<"编号: "< cout<<"周学时: "< cout<<"总学时: "< cout<<"优先级: "< } {x=0;y=0;} voidset_x(inta) {x=a;} voidset_y(intb) {y=b;} intget_x() {returnx;} intget_y() {returny;} }; 排课.cpp: #include 9 course_id=0; week_hour=0; total_hour=0; N=0;} voidcourse: : set_course(char*pname,inti,intw,intt,in tn) {strcpy(course_name,pname);course_id=i; week_hour=w; total_hour=t; N=n;} voidcourse: : print() {cout<<"课程名: "< "< cout<<"周学时: "< cout<<"总学时: "< cout<<"优先级: "< voidcourse: : print() {cout<<"课程名: "< cout<<"编号: "< cout<<"周学时: "< cout<<"总学时: "< cout<<"优先级: "< } {x=0;y=0;} voidset_x(inta) {x=a;} voidset_y(intb) {y=b;} intget_x() {returnx;} intget_y() {returny;} }; 排课.cpp: #include 9 course_id=0; week_hour=0; total_hour=0; N=0;} voidcourse: : set_course(char*pname,inti,intw,intt,in tn) {strcpy(course_name,pname);course_id=i; week_hour=w; total_hour=t; N=n;} voidcourse: : print() {cout<<"课程名: "< "< cout<<"周学时: "< cout<<"总学时: "< cout<<"优先级: "< voidcourse: : print() {cout<<"课程名: "< cout<<"编号: "< cout<<"周学时: "< cout<<"总学时: "< cout<<"优先级: "< } {x=0;y=0;} voidset_x(inta) {x=a;} voidset_y(intb) {y=b;} intget_x() {returnx;} intget_y() {returny;} }; 排课.cpp: #include 9 course_id=0; week_hour=0; total_hour=0; N=0;} voidcourse: : set_course(char*pname,inti,intw,intt,in tn) {strcpy(course_name,pname);course_id=i; week_hour=w; total_hour=t; N=n;} voi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 c+ 设计 一个 课程
![提示](https://static.bdocx.com/images/bang_tan.gif)