




已阅读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 修改文件信息 五 程序代码 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 精品文档 7欢迎下载 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 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 精品文档 8欢迎下载 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 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 精品文档 9欢迎下载 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 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 修改 精品文档 10欢迎下载 教师对课程满意度 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 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 精品文档 11欢迎下载 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 删除行指针数组 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 精品文档 12欢迎下载 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 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 精品文档 14欢迎下载 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 cout total hour break else cout 总学时应为数字 请重新输入 endl cin clear cin ignore cout d1 break else cout 优先级应为数字 请重新输入 endl cin clear 精品文档 15欢迎下载 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 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 排课 精品文档 16欢迎下载 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 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 精品文档 17欢迎下载 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 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 精品文档 18欢迎下载 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 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 精品文档 19欢迎下载 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 k i cout 请输入此教师新信息 endl cout aa break else cout 编号应为数字 请重新输入 endl cin clear cin ignore cout na for j 0 j 11 j 精品文档 20欢迎下载 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 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 精品文档 21欢迎下载 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 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 精品文档 22欢迎下载 cout 课程名应为字母 请重新输入 endl cin clear cin ignore cout bb break else cout 周学时应为数字 请重新输入 endl cin clear cin ignore cout cc break else cout 总学时应为数字 请重新输入 endl cin clear 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 精品文档 23欢迎下载 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 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 精品文档 24欢迎下载 if c i get course id jj b1 i cout nn break else cout 满意度应为数字 请重新输入 endl cin clear cin ignore fstream nums d hope txt ios out nums setw 4 满意度 setw 6 for k
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏宿迁豫智文化产业发展有限公司招聘工作人员拟聘考前自测高频考点模拟试题及答案详解(有一套)
- 2025年吉林工商学院公开招聘博士人才(3号)(24人)模拟试卷及答案详解(名师系列)
- 2025呼伦贝尔莫力达瓦达斡尔族自治旗卫生健康系统校园引进人才考前自测高频考点模拟试题含答案详解
- 2025湖南湘西自治州事业单位(医卫类)引进高层次急需紧缺人才考试考前自测高频考点模拟试题及完整答案详解一套
- 2025年上半年浙江湖州市交通投资集团有限公司招聘笔试题库历年考点版附带答案详解
- 2025广东佛山市顺德区公办中小学招聘教师92人(编制)考前自测高频考点模拟试题及答案详解1套
- 2025湖北咸宁市通城县城市发展建设投资(集团)有限公司招聘考前自测高频考点模拟试题有完整答案详解
- 2025年丽水庆元县卫生健康事业单位公开招聘专业技术人员11人考前自测高频考点模拟试题附答案详解
- 2025年河北唐山东方学校小学部招聘教师考前自测高频考点模拟试题及答案详解(名师系列)
- 2025北京市通州区马驹桥镇招考20人模拟试卷及答案详解(新)
- 消防水池挖槽施工方案
- 2025至2030中国血液辐照器行业项目调研及市场前景预测评估报告
- 九上第19课:法国大革命和拿破仑帝国-
- 医院电梯司机安全培训课件
- 云南省烟草公司2025秋招网申-申论题模板及答案
- 高一地理第一次月考卷02【测试范围:必修一第1~2章】(考试版)
- 2024年中国农业银行浙江省分行招聘真题
- 污水处理厂二次污染防治方案
- 广东省上进联考2025-2026学年新高三秋季入学摸底考试生物(含答案)
- 2025年沼液还田协议书
- 物业管理服务项目(某法院)方案投标文件(技术方案)
评论
0/150
提交评论