教师排课系统课程设计报告(C++)_第1页
教师排课系统课程设计报告(C++)_第2页
教师排课系统课程设计报告(C++)_第3页
教师排课系统课程设计报告(C++)_第4页
教师排课系统课程设计报告(C++)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 面向对象技术与 C 课程设计任务书 课 程面向对象技术与 C 班级xxxx指导教师xxx 题 目 教师排课系统 完成时间xxxxx 至 xxxxx 主要内容 1 问题描述 每位教师都有教学工作量 教师对他所希望讲授的课程表达为一个期望 值 1 2 n 其中 1 是最高的期望值 课程也有优先级 1 2 n 用 来决定将课程分给教师的顺序 其中 1 是最高的优先级 设计一个程序针对 某些课程给某些教师进行排课 2 基本要求 程序运行时 用户输入教师信息 姓名 教师号 工作量 课程信息 课程名 课程号 周学时 总学时 优先级 教师对所希望讲授课程的期 望值以及教学工作量等相关信息 所有信息应保存在文件中 程序根据课程 的优先级以及教师对课程的期望值进行排课 为了公平起见 程序随机分配 课程 如果 10 门课程都有优先级 1 程序以随机的顺序将这些课程分给教师 如果 10 位教师对某门课程的期望值为 1 程序应从 10 位教师中随机选择一个 最后输出排课情况 即某位老师上某门课程 以及某位老师的工作量 3 测试数据 程序应能实现对不少于 20 门课和 10 个教师的排课 并且使每个教师的 满意度达到最大 不存在工作量不满的教师以及未分配的课等情况 设计报告要求 1 封面 格式附后 2 课程设计任务书 3 课程设计报告 系统总体方案 设计思路和主要步骤 各功能模块和流程图 设计代码 心得体会和参考资料 说明 学生完成课程设计后 提交课程设计报告及软件 要求文字通畅 字 迹工整 也可用以打印 文字不少于 5000 字 并装订成册 上 机 时 星期 周次 一二三四五六日 版面要求 1 题目用黑体三号 段后距 18 磅 或 1 行 居中对齐 2 标题用黑体四号 段前 段后距 6 磅 或 0 3 行 3 正文用小四号宋体 行距为 1 25 倍行距 4 标题按 一 1 顺序编号 2 第 17 周 1 41 41 41 41 4 间安 排 指导时 间地点 上机时间 E520 一 系统总体方案 某学校每位教师都有教学工作量 教师对他所希望讲授的课程表达为一个 期望值 1 2 n 其中 1 是最高的期望值 课程也有优先级 1 2 n 用来决定将课程分给教师的顺序 其中 1 是最高的优先级 设计一个程序针对 某些课程给某些教师进行排课 要求 一 程序运行时 用户输入教师信息 姓名 教师号 工作量 课程信息 课程名 课程号 周学时 总学时 优先级 教师对所希望讲授课程的期望 值以及教学工作量等相关信息 所有信息应保存在文件中 二 程序根据课程的优先级以及教师对课程的期望值进行排课 最后输出排 课情况 即某位老师上某门课程 以及某位老师的工作量 三 可以实现对文件的修改 四 可以在各个界面中实现退出以及进入的循环 五 可以退出本系统 六 程序应能实现对不少于 20 门课和 10 个教师的排课 并且使每个教师的 满意度达到最大 不存在工作量不满的教师以及未分配的课等情况 方法 为了公平起见 程序随机分配课程 如果 10 门课程都有优先级 1 程序以 随机的顺序将这些课程分给教师 如果 10 位教师对某门课程的期望值为 1 程 序应从 10 位教师中随机选择一个 3 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 退出 4 5 3 各功能模块与流程图 说明 以下是对应上面系统功能模块实图的系统流程图 因为制图的不便 故 只将成功完成一次操作的流程给出 而 各个流程中中途如果输入了菜单中没 有的项以及数据保存文件中没有的数据而被强制退出 的流程因为过于复杂 每步都要进行判断 而没有给出 实际情况读者朋友一试便知 在此我们对 此表示深深的歉意 我们以后一定会努力完善我们各方面的工作的 6 开始 输入教 师基本 数据 输入课 程基本 数据 输入教 师期望 度 排课输出排 课结果 帮助输出教 师信息 输出课 程信息 输出教 师期望 度 文件修 改 退出 修改教 师信息 修改课 程信息 修改教 师期望 度信息 结束 各功能模块 命令命令对应函数对应函数功能描述功能描述 1input teacher 输入数据并写入文件 2input course 输入数据并写入文件 3input num 输入数据并写入文件 4arranging 排课 5print 输出排课结果 6print help 帮助 7print teacher 输出文件信息 8print course 输出文件信息 9print num 输出文件信息 10change 修改文件信息 五 程序代码 7 Teacher h 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 姓名 name endl 8 cout 编号 id endl cout 工作量 work load endl Course h 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 9 void course print cout 课程名 course name endl cout 编号 course id endl cout 周学时 week hour endl cout 总学时 total hour endl cout 优先级 N endl Arrange h Arrange h class arrange private int x int y public arrange void x 0 y 0 void set x int a x a void set y int b y b int get x return x int get y return y 排课排课 cpp cpp include include include include include include teacher h include course h 10 include arrange h include using namespace std void input teacher teacher t int n int m 教师基本数据输入 void input course course c int m 课程基本信息输入 void input num int num int n int m 教师对课程满意度输入 void arranging int num teacher t course c arrange a int n int m 排课 void print teacher t course c arrange a int m 输出排课结果 void print help 帮助函数 void print teacher 输出教师信息 void print course 输出课程信息 void print num 输出教师对课程的满意度 void change int num teacher t course c arrange a int n int m 修改文件信息 void change teacher teacher t int n 修改教师信息 void change course course c int m 修改课程信息 void change num teacher t course c int num int n int m 修改 教师对课程满意度 void main int i n m cout 教师排课系统 endl cout n cout m int num new int n 为每一行分配空间 for i 0 i n i num i new int m teacher t course c arrange a t new teacher n c new course m a new arrange m if t NULL c NULL a NULL cout 内存分配失败 endl return cout 1 输入教师基本数据 n cout 2 输入课程基本数据 n 11 cout 3 输入教师对课程满意度 n cout 4 排课 n cout 5 输出排课结果 n cout 6 帮助 n cout 7 输出教师信息 n cout 8 输出课程信息 n cout 9 输出教师对课程满意度 n cout 10 修改文件数据 n cout 0 退出 n cout n 输入你的选择 int ch do cout n n 请选择 n cout 1 输入教师基本数据 n cout 2 输入课程基本数据 n cout 3 输入教师对课程满意度 n cout 4 排课 n cout 5 输出排课结果 n cout 6 帮助 n cout 0 退出 n cout ch switch ch case 1 input teacher t n m break case 2 input course c m break case 3 input num num n m break case 4 arranging num t c a n m break case 5 print t c a m break case 6 print help break case 7 print teacher break case 8 print course break case 9 print num break case 10 change num t c a n m break case 0 break while ch 删除每一行分配的空间 for i 0 i n i delete num i 12 删除行指针数组 delete num delete t delete c delete a 释放内存 void input teacher teacher t int n int m 教师基本数据输入 fstream teachers d teachers txt ios out teachers 姓名 setw 20 编号 setw 20 工作量 endl int i j work id char name 11 nn 11 cout n 请输入教师基本数据 endl while 1 int total 0 for i 0 i n i cout 第 i 1 个教师 n cout id break else cout 编号应为数字 请重新输入 endl cin clear cin ignore cout name for j 0 j 11 j if name j else nn j 1 13 if nn 0 nn 1 nn 2 nn 3 nn 4 nn 5 nn 6 nn 7 nn 8 nn 9 nn 10 1 break else cout 姓名应为字母 请重新输入 endl cin clear cin ignore cout work break else cout 工作量应为数字 请重新输入 m cout 总工作量大于课程数 请重新输入 endl break t i set teacher name id work teachers name setw 20 id setw 20 work m continue teachers close void input course course c int m 课程基本信息输入 fstream courses d courses txt ios out courses 课程名 setw 10 课程号 setw 10 周学时 setw 10 总学时 setw 10 优先级 endl int week hour total hour d1 id i j char name 11 char nn 11 for i 0 i m i cout 第 i 1 门课 n cout id break else cout 课程号应为数字 请重新输入 endl cin clear cin ignore cout name for j 0 j 11 j if name j else nn j 1 if nn 0 nn 1 nn 2 nn 3 nn 4 nn 5 nn 6 nn 7 nn 8 nn 9 nn 10 1 break else cout 课程名应为字母 请重新输入 endl cin clear cin ignore cout week hour break else cout 周学时应为数字 请重新输入 endl cin clear cin ignore 15 cout total hour break else cout 总学时应为数字 请重新输入 endl cin clear cin ignore cout d1 break else cout 优先级应为数字 请重新输入 endl cin clear cin ignore c i set course name id week hour total hour d1 courses name setw 10 id setw 10 week hour setw 10 total hour setw 10 d1 endl courses close void input num int num int n int m 教师对课程满意度输入 fstream nums d hope txt ios out nums setw 4 满意度 setw 6 int nu i j k for k 0 k m k nums 第 k 1 门课程 setw 5 nums endl for i 0 i n i nums 第 i 1 名老师 setw 3 for j 0 j m j cout 第 i 1 位老师对第 j 1 门课程的满意度 nu 16 while 1 if cin nu break else cout 满意度应为数字 请重新输入 endl cin clear cin ignore num i j nu nums nu setw 13 nums endl nums close void arranging int num teacher t course c arrange a int n int m 排课 int h s i j b k 1 min min1 q 0 min c 0 get N srand unsigned time NULL for s 0 s m s if c s get N min min c s get N while h for i 0 i m i if c i get N min 判断课程优先级 min1 num 0 i for j 0 j n j if num j i min1 17 if b n continue else if t b get total t b get work load continue else if num b i min1 判断教师优先级 continue else a q set x b a q set y i q int w t b get total 1 t b set total w k 0 cout 第 q 次排课 endl break if i m 1 min min if q m h 1 else h 0 void print teacher t course c arrange a int m 输出排课结果 int i a1 b1 for i 0 i m i a1 a i get x b1 a i get y cout 第 a1 1 位老师上第 b1 1 门课 endl t a1 print c b1 print void print help 帮助函数 cout 1 输入教师基本数据 n cout 2 输入课程基本数据 n cout 3 输入教师对课程满意度 n cout 4 排课 n cout 5 输出排课结果 n cout 6 帮助 n 18 cout 7 输出教师信息 n cout 8 输出课程信息 n cout 9 输出教师对课程满意度 n cout 10 修改文件数据 n cout 0 退出 n void print teacher 输出教师信息 ifstream fin d teachers txt ios nocreate if fin cout File open error n return char c 80 while fin eof 判断文件是否读结束 fin read c 80 cout write c fin gcount fin close void print course 输出课程信息 ifstream fin d courses txt ios nocreate if fin cout File open error n return char c 80 while fin eof 判断文件是否读结束 fin read c 80 cout write c fin gcount fin close void print num 输出教师对课程的满意度 ifstream fin d hope txt ios nocreate if fin cout File open error n 19 return char c 80 while fin eof 判断文件是否读结束 fin read c 80 cout write c fin gcount fin close void change int num teacher t course c arrange a int n int m 修改文件信息 int ch do cout n n 请选择 n cout 1 修改教师基本数据 n cout 2 修改课程基本数据 n cout 3 修改教师对课程满意度 n cout 0 退出 n cout ch switch ch case 1 change teacher t n break case 2 change course c m break case 3 change num t c num n m break case 0 break while ch void change teacher teacher t int n 修改教师数据 int i aa bb k j ii char na 11 char nn 11 cout ii for i 0 i n i if t i get id ii cout 此教师原信息 endl t i print 20 k i cout 请输入此教师新信息 endl cout aa break else cout 编号应为数字 请重新输入 endl cin clear cin ignore cout na for j 0 j 11 j if na j else nn j 1 if nn 0 nn 1 nn 2 nn 3 nn 4 nn 5 nn 6 nn 7 nn 8 nn 9 nn 10 1 break else cout 姓名应为字母 请重新输入 endl cin clear cin ignore cout bb break else 21 cout 工作量应为数字 请重新输入 endl cin clear cin ignore t k set teacher na aa bb fstream teachers d teachers txt ios out teachers 姓名 setw 20 编号 setw 20 工作量 endl for j 0 j n j if j k teachers na setw 20 aa setw 20 bb endl else teachers t j get name setw 20 t j get id setw 20 t j ge t work load endl teachers close void change course course c int m 修改课程信息 int i aa bb cc dd k j ii char na 11 char nn 11 cout ii for i 0 i m i if c i get course id ii cout 此课程原信息 endl c i print k i cout 请输入此课程新信息 endl cout aa break else cout 课程号应为数字 请重新输入 endl cin clear cin ignore 22 cout na for j 0 j 11 j if na j else nn j 1 if nn 0 nn 1 nn 2 nn 3 nn 4 nn 5 nn 6 nn 7 nn 8 nn 9 nn 10 1 break else cout 课程名应为字母 请重新输入 endl cin clear cin ignore cout bb break else cout 周学时应为数字 请重新输入 endl cin clear cin ignore cout cc break else cout 总学时应为数字 请重新输入 endl cin clear 23 cin ignore cout dd break else cout 优先级应为数字 请重新输入 endl cin clear cin ignore c k set course na aa bb cc dd fstream courses d courses txt ios out courses 课程名 setw 10 课程号 setw 10 周学时 setw 10 总学时 setw 10 优先级 endl for j 0 j m j if j k courses na setw 10 aa setw 10 bb setw 10 cc setw 10 dd endl else courses c j get course name setw 10 c j get course id setw 10 c j get week hour setw 10 c j get total hour setw 10 c j get N endl courses close void change num teacher t course c int num int n int m 修改 教师对课程满意度 int ii jj i j k nn a1 b1 c1 cout ii break else cout 满意度应为数字 请重新输入 endl cin clear 24 cin ignore for i 0 i n i if t i get id ii a1 i cout jj break else cout 满意度应为数字 请重新输入 endl cin clear cin ignore for i 0 i m i if c i get course id jj b1 i cout nn break else cout 满意度应为数字 请重新输入 endl cin clear cin ign

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论