V
主页
基于Qt实现学习课程计划的辅助编排系统(完善版)
发布人
第1题 学习课程计划的辅助编排系统 【问题描述】 以某计算机学院专业课及专业选修课为背景,实现课程计划的辅助编排。学生在一个学期可以同时选学多门课程,同一学期内的各门课程之间必须不能存在“先修课”与“后续课”的次序关系。通过辅助编排系统制定课程计划,使学生可以按照规划完成课程的学习任务。 构造课程的有向无环图,弧表示课程之间必须遵循的优先次序关系。通过扩展已有的拓扑排序算法,进行课程计划的辅助制订,将所列课程划分为子集(不同学期的课程计划),使任意两门有次序关系的课程分属于不同的子集,每个子集中包含的顶点对应着同一学期开设的课程,称这种扩展拓扑排序的划分结果为“拓扑子集的划分”,其结果可以辅助完成教学计划的编排和选课。 【基本要求】 (1)调研有关计算机专业应该开设的课程,以此建立构造课程的有向无环图,求解拓扑子集划分的参考解。 (2)可以对拓扑子集划分的结果进行调整。一般情况下,直接的课程编排结果可能过于“密集”(某学期内总课时过多,使学生的负担难以承受),有必要对所求的课程与学期的编排表进行人为的调整,即适度拉长修业的时间,得到既满足课程之间的次序关系,又不使学生负担过重(限制每学期的学分总数)。最终形成满意的学期与课程编排表,以供参考。 (3)建立有向无环图以及课程编排结果应当配以图形界面;子集划分结果的人工调整也应提供友好的界面支持。 【实现提示】 有些课程之间存在前驱和后继的约束关系,如果一个学生一学期只学一门课程的话,可以按拓扑有序的顺序安排学习计划,就会拖长修业的时间。实际上,一个学期中可以同时学习多门课程,只要这些课程之间不存在优先次序的约束关系即可。 “制订课程学习计划”是将有向无环图中的顶点集划分成若干互不相交的子集S1,S2,…,Sm,使得任意两个有弧相连的顶点分属不同的子集,并且,若〈j,k〉是一条从顶点j到顶点k的有向弧,jSp ,k Sq,则子集的序号必有p<q。每个子集Si (i=1,2,…,m)中的顶点为同一学期中开设的课程。 例如根据一个简单的优先关系模型,所得出的划分实例如下: c1: 程序设计 c2: 离散数学 c3: 数据结构 c4: 汇编语言 c5: 语言设计与分析 c6: 计算机原理 c7: 编译原理 c8: 操作系统 c9: 高等数学 c10: 线性代数 c11: 普通物理 c12: 数值分析 “拓扑子集的划分”结果: S1={ 程序设计,高等数学}; S2={ 离散数学,汇编语言,线性代数,普通物理}; S3={ 数据结构,计算机原理,数值分析}; S4={ 语言设计与分析,操作系统 } S5={ 编译原理 } 拓扑子集划分的算法是拓扑排序算法的拓展,可以设置两个栈来处理子集的划分。一个栈用来存放当前入度为零的顶点,另一个栈则用来存放新产生的入度为零的顶点,作备用栈。交替使用这两个栈,当第一个栈退空时,启用备用栈作为当前栈,而那退空的栈就充当备用栈,继续存放新产生的入度为零的顶点。事实上,同一个栈里存放的顶点即属于同一个子集,也就是可在同一个学期开设的课程。 注意:若对每学期的课程加上总学时的限制,则要将某些课程向后调整,这会连带其后继课程安排的再变化。 最终结果以图形方式显示,显示出每个学期的可行开课方案。 【测试数据】 调研计算机学院开设的有关专业课和专业选修课情况,设计一个理想的课程清单,梳理各门课之间的优先关系,核定每学期可以承受的总学时数,以此为测试的原始数据(总门数不少于20门,每学期学时数上限定为280,1学分合16学时)。 【功能扩展】 直接求得的拓扑子集划分方案,每学期课时量总和往往大于学校要求的学期课时数,这就需要把某些课程调整到后续学期。某门课向后调整,有可能引出新的制约冲突,需要再次启动划分算法得出合情理的划分方案。 图形界面显示与人工调整的界面处理需要一定的技巧,如:可以由用户自由选择同一学期内的感兴趣的课程;灵活设置一些参数,如:每学期学时数的上限值,并根据其调整选课计划。 原始数据的输入可以通过适当的界面,输入有向弧的顶点对的办法来完成。实际的数据应能以文件的形式存储,以备再次启动本辅助编排系统时导入。 【检查计划】 第一次检查 1.问题需求分析,系统的基本功能设计 2.数据结构设计 3.程序结构原型 第二次检查 使用自带的数据,演示程序的功能(代码,测试数据) 第三次检查 1.文档齐全 2.根据测试数据,运行程序;演示时适当地讲解,并且回答问题 3.扩展功能的演示
打开封面
下载高清视频
观看高清视频
视频下载器
基于Qt实现学习课程计划的辅助编排系统
C语言实现背单词系统
QT实现无人零售系统(本人第一个QT项目),让你了解QT桌面开发的细节
基于Qt实现地铁售票与乘车引导系统
基于MFC实现智慧教学管理软件系统
期末大作业、C++、Qt学生信息管理系统
基于MFC实现的计算器
基于Qt实现日历节日管理小软件
C语言实现文本文件加密解密系统
基于Qt实现篮球联赛个人技术数据处理系统
基于QT实现的银行系统
基于C++MFC实现城市道路出行路线辅助系统
2024已上新QT音视频-嵌入式音视频-Android音视频-流媒体音视频学习路线以及保姆级教程(C++音视频开发)
【C语言100例题】趣味编程C语言,100例题拿下C语言!
C语言实现排班系统
基于C/C++MFC实现ATM仿真软件
一个很变态,但可以让你快速学会C++的方法,整整300集,全程干货无废话,带你速通C++!
国外油管上高质量《数据结构》教程,Google顶尖程序员亲授,完全深度详细讲解。【中英字幕】
C语言实现模拟汽车客运公司售票系统
基于Qt实现图书室管理系统
基于C++MFC实现城市道路交叉口交通控制仿真系统
基于Qt实现人生重开模拟器
2024最新版C++ Qt开发公开课教程(完整版)
耗时一个月!终于把数据结构与算法做成动画片了,一周刷爆LeetCode,2024最新版,学完即就业!拿走不谢,学不会我退出IT圈!
C语言实现基于角色管理的简易家谱管理系统
C语言实现手机通信录系统
C语言实现基于Huffman编码的文件压缩与解压程序
C语言实现基于二叉树(孩子兄弟表示法)的家谱信息管理系统
膜拜!清华大佬竟把C++讲的如此通俗易懂!(2024版)草履虫都能听懂!这么好的课程还没人看?我不更!!
C++MFC校园导航系统
C语言实现驾驶员理论课程模拟考试与学习系统
基于MFC实现十六进制计算器
C语言实现泊车管理系统
算法速成-分支限界法解决01背包问题
基于C++MFC实现时钟小程序
基于Qt实现汽车客运公司售票系统
2024版Linux内核源码分析(强烈推荐收藏!)
基于Qt实现篮球联赛管理系统
C语言实现智能实验室预约系统
C语言实现运动会积分流程管理系统