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实现地铁售票与乘车引导系统
基于C++MFC实现城市道路出行路线辅助系统
基于Qt实现的商店存货管理系统
基于Qt实现日历节日管理小软件
基于Qt实现电话号码录入查询及修改系统
基于Qt实现人生重开模拟器
C语言实现模拟校园卡消费记录查询系统
基于C++MFC实现时钟小程序
C语言实现模拟汽车客运公司售票系统
基于Qt实现篮球联赛管理系统
基于C++和QT的图书信息管理系统
基于MFC实现的计算器
C语言实现驾驶员理论课程模拟考试与学习系统
基于QT实现的银行系统
C语言实现排班系统
C++MFC校园导航系统
C语言实现背单词系统
基于C++MFC实现模拟时钟程序
基于C/C++MFC实现ATM仿真软件
C语言实现手机通信录系统
基于C++和Qt的学生选课系统
Qt银行定期储蓄管理系统
C语言实现基于角色管理的简易家谱管理系统
C语言实现考试管理系统
C语言实现基于Huffman编码的文件压缩与解压程序
【C/C++游戏合集】大学计算机专业必做项目(附源码+视频讲解)一步步带你从零做出一个小游戏,真正的保姆级教程~
C语言实现基于二叉树(孩子兄弟表示法)的家谱信息管理系统
C语言实现运动会积分流程管理系统
【2024最新Qt项目合集】超全Qt5/Qt6实战项目(附源码课件)详细视频教程-适用于 qt毕设 qt课设 qt练手项目-带你轻松学习Qt~
C语言C++MFC模拟电影院售票系统
C语言实现ATM仿真软件
C语言实现智能交通预约系统
C语言实现上网计费系统模拟系统
基于C++MFC实现年历及时钟图形化显示系统
基于C++和QT的哈希表演示程序
基于MFC实现同学基本资料管理系统
C语言实现南邮图书馆管理系统