先来先服务算法

先来先服务算法就好比现实生活中的排队,谁先来谁先得到服务,直到资源用尽为止。先登陆选课系统的学生拥有优先选课权,完成选课后结果直接计入选课结果表。当一门选修课的报名人数满员时,该门课程的选课自动结束。该算法其实就是按照选课的先后顺序直接决定选课的结果,先登陆系统的学生可以优先选到自己满意的课程。而事实上无论那所学校所开设的选修课都有热门和冷门之分,学生为了能够选到自己所中意的课程和老师,会在选课系统开放之初便同时登陆服务器上网选课,使得短时间内访问量达到顶峰,使系统负荷承受极大的压力,严重的甚至会造成系统崩溃。例如,一所大学的学生超过 1 万人,假使其中有 1/3 的学生同时进行上网选课,那么服务器同时的访问量瞬间就会达到三千多人次。目前网卡的性能速率一般能达到 100MbpS,假设实际可以利用的带宽为 IMbps, 当 3 千人同时登录访问时需要网络带宽大于 3000Mbps,而由于网络带宽严重受限,国家骨干光纤网络只支持千兆以太网,因此如此突发的高峰访问目前网络将无法负荷。这使得该系统无论在硬件还是软件方面都无法达到要求。

从选课原则和系统性能上看,这种选课算法的公平性较差。公选课以学生的兴趣爱好为出发点,目的在于拓宽学生知识面,使学生得到多方面发展的机会。因此,每个学生对于自己所选择的课程都是自己感兴趣的或者是斟酌考虑后想选择的课程。先来先服务的选课算法造成选课较晚的学生无法选到自己的目标课程,但是为了完成学分,只得另行选择甚至应付修完一些不感兴趣的课程,长期下去可能会影响学生的学习积极性,违背公开选课的初衷,也失去了意义。

从以上分析可知,这种选课算法原理简单,系统也很容易实现。但是其缺点也同样明显:依赖于该算法的系统,对于硬件配置要求较高,而且系统的稳定性受到选课人员数和开设课程数的影响。如果课程数目较多,选课人员较少,同时网络的硬件配置较高,则系统可以保持平稳运行。但是目前选课实际中,每个大学所开设的选修课都是有限的,如果选课人数过多,必然引发高峰访问,系统运行的安全性无法保障。所以该算法对系统的性能要求比较高。另外该算法生成选课结果的不公平性,对学生的选课积极性带来消极影响,不适于规模较大的学校推广使用。

专业优先算法

专业优先算法的核心主要是在于把选课过程分成了预选和筛选两个阶段。预选的时候,系统对于每门课的选课人数完全开放,不设上限,每门课的所有选课学生都是待定处理。对于选课人数少于最大限度人数的课程,将所有选择该门课程的学生全部选中,写入每个学生的课表。对于选课人数多于最大限度人数的课程进行下一步的筛选。筛选过程中,根据学生的专业和年级设置不同的优先级,与本门课程相关专业的优先级要高于其他专业,高年级的优先级高于低年级。这种算法所导致的选课结果主要与所学专业相关。该算法鼓励学生选择与所学专业相关的课程。由此带来的缺点就是学生最有可能选择本专业的相关课程,而打消了学生跨系跨专业选课的意愿和积极性,与选课机制的最初目的:为了扩宽学生知识面、活跃思维、发展个性相冲突。因此,从某种程度上讲,公平性、合理性方面还存在一些缺点。

从实现的角度来说,供选择的课程数和学生的专业数直接决定了该算法的复杂程度。举个例子,有一门公选课程《生物化工工艺》,限选人数为 300 人,预选阶段选修人数有 500 人,因此需要对这 500 人进行筛选。根据定义的筛选原则,化工系16 的同学具有优先选择权,假如筛选出 120 人符合条件,对剩余 180 个名额选定需重新制定分配原则,增加了算法的复杂度。一般的本科院校每学期所开设的公选课都达到了上百门,若对每门课程都制定相应的筛选和再分配原则,这在系统设计上过于复杂,也大大增加了成本。同时,也大大增加了对课程进行添加、调整、删除等操作的难度,使得系统维护的难度大大增加。

从以上分析结果可以看出,对于小范围的专业选课,可以使用专业优先算法,但是对于全校公共选修的的情况,专业优先算法并不适用。

按名额分配比例的算法

该算法的实现过程是:首先在排课阶段规定好每门课的选课人数上限,然后按照每个系的学生人数比例,分配给不同的系不同的名额。而在每个系内部,则可以按照前面讲过的先来先服务算法,或者继续按班级人数分配名额的算法。按名额分配比例算法把大矛盾转化为小矛盾,这样做使得每个院系最后的选课结果直接取决于院系内部所采用的选课算法。这并没有从根本上解决问题。

另外每个院系的教学计划不同,而每个系的教学要求,从很大程度上决定学生的选课意向。另外学生们往往倾向于选择较为新鲜的课程,这就造成了各个院系学生有不同的选课倾向,而按名额比例分配算法这种类似于平均主义的算法无法满足众多学生的要求。

该算法一方面具体实现起来比较复杂,教学管理人员需要在每学年开设课程之前,做好各课程和人数项统计、分配名额等前期工作,否则无法匹配系统的设计,增加了很多工作量;另一方面该算法在很大程度上无法保证选课的公平性,所以不适用于网络选课。

按志愿分级筛选算法

该算法是同样把选课阶段分为预选和筛选两个过程,这点与专业优先算法相同,但它的实现原理却与专业优先算法有本质的区别,更类似于高考录取过程。在预选阶段,系统允许每个学生选择多种类型和专业的课程,同时自行设置不同的优先级,即可以上报三个志愿。系统在对每门课程进行处理时,优先处理第一志愿,如果第一志愿的人数少于该门课程的限选人数,则无需进一步处理,全部人员均满足条件;如果第一志愿上报人数超出人员要求上限,此时为了筛选出多余的人员,采用权重算法进行处理。第一志愿处理完毕后处理第二志愿。处理第二志愿的方法是,若某课程的第一志愿人数已达到最大限选人数,那么这门课程选课结束,不在参与下面的过程;若第一志愿人数未达到最大限选人数,那么将第一志愿不足的人数作为大二志愿最大限选人数,按照处理第一志愿的方法继续处理。第三志愿处理方法以此类推。

由于该算法是在后台按照志愿一级一级的处理,所以选课的先后顺序与选课结果无关。在预选期间,每个学生都有相同的几率选中课程。当选课人数超出限选人数时,采用权重算法决定,选课结果是相对公平的。

该算法原理简单,对硬件要求不高,系统实现也较容易。该系统的日常操作和维护也很简单。按志愿分级筛选算法作为目前网络选课的一种主流算法,运算速度快,系统稳定性好,选课结果也相对比较公平。

网上选课系统算法了解相关推荐

  1. 网上选课系统的设计与实现(ASP.NET)

    目 录 1 绪 论 1 1.1 研究的背景及意义 1 1.1.1 选题的背景 1 1.1.2 国内外研究现状 1 1.1.3 研究的意义 2 1.2 系统目标 2 2 需求分析 3 2.1 功能需求 ...

  2. C#毕业设计——基于C#+asp.net+SQL Server的动态口令认证网上选课系统设计与实现(毕业论文+程序源码)——网上选课系统

    基于C#+asp.net+SQL Server的动态口令认证网上选课系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+SQL Server的动态口令认证网上选课系统 ...

  3. 选课系统html页面设计,网上选课系统的设计与实现(代码)..doc

    网上选课系统的设计与实现(代码). 网上选课系统的设计与实现(代码) 目录 摘要1 ABSTRACT2 第一章 引言3 1.1课题背景及意义3 1.2开发工具的选用及介绍3 1.3 课题的可行性分析5 ...

  4. mysql -ss -e_课内资源 - 基于ssm框架和mysql的网上选课系统

    一.需求分析 1.1 业务需求 随着社会的发展,学生的人数和课程种类急速增加,传统的选课管理模式已经无法满足当前的实际需求,为此我们开发了学生选课管理系统.本人结合学生选课管理的实际需要,完成了对学生 ...

  5. 基于asp.net的网上选课系统的设计与实现

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye 网上选课系统的设计与实现 摘  要 随着教育改革的力度的加大,能够使用信息化手段来处理日常工作显 ...

  6. 基于JSP技术的学生网上选课系统的设计与实现

    摘   要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用.学生选课系统作为一种现代化的教学技术,已越来越受到人们的重视, ...

  7. asp毕业设计——基于asp+sqlserver的网上选课系统设计与实现(毕业论文+程序源码)——网上选课系统

    基于asp+sqlserver的网上选课系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于asp+sqlserver的网上选课系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦 ...

  8. 网上选课系统java工程_基于jsp的网上选课系统-JavaEE实现网上选课系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的网上选课系统, 该项目可用各类java课程设计大作业中, 网上选课系统的系统架构分为前后台两部分, 最终实现在线上 ...

  9. php选课系统,GitHub - kidaze/CourseSelectionSystem: 基于PHP的简易网上选课系统,实现管理员、老师、学生三种身份不同需求的php简易网上选课系统。...

    CourseSelectionSystem 基于PHP的网上选课系统 针对选课系统,我主要使用了phpmyadmin + Dreamweaver完成了大部分工作 这是php老师发布的要求: " ...

  10. 网上选课系统的需求分析

    项目:网上选课系统 团队:小狗狗们 成员:曲承玉.荆彩虹.丁胜男 N(need) 1性能需求 根据用户对本系统的要求,确定系统在响应时间.可靠性.安全等方面有较高的性能要求. 2 系统的界面要求如下: ...

最新文章

  1. 手动排除fbiytty和vcxlcph病毒的干扰
  2. Using the URLconf defined in catsui.urls, Django tried these URL patterns, in this order:
  3. 【Linux】crontab命令详解
  4. xcode于Archive当产生安装包遇到ld: library not found for -lPods
  5. 山羊与汽车游戏的实验算法
  6. linux下sublime安装目录在那,linux下sublime text 3安装到配置
  7. 小兔的棋盘(HDU-2067)
  8. PyTorch 1.7 发布:支持 CUDA 11、FFT 新 API、及 Windows 分布式训练
  9. 绘制Python代码的UML图
  10. day6面向对象--继承、多态
  11. 埃及金字塔之谜最完美的解释
  12. PR(Adobe Premiere Pro)软件基础知识
  13. 使用Vue指令实现下拉菜单效果
  14. Android 暗黑模式
  15. HDU 5810(伯努利实验、多校7、规律)
  16. 学习笔记——数据的度量
  17. linux升级wine1.7,Wine 1.7.55 发布下载
  18. 自动驾驶技术-环境感知篇:激光雷达、毫米波雷达、超声波雷达相关技术介绍
  19. 【经典】非你莫属的名句二
  20. OpenGL学习: 投影矩阵和视口变换矩阵(math-projection and viewport matrix)

热门文章

  1. 免费将自己的网站升级成HTTPS
  2. Android搭建无线调试环境
  3. Windows11安装Android子系统——安装篇
  4. 用python制作3d动图_怎样用Python制作好玩的GIF动图
  5. 隐藏文件的查看(Win/Linux/macOS)
  6. JavaScript高级程序设计[美]Nicholas C.Zakas著 读书笔记(一)
  7. CSDN如何修改用户名(CSDN ID)、用户昵称以及自定义博客域名等
  8. Ubuntu下载anaconda教程(全过程)
  9. html 导航栏颜色代码,CSS实现五颜六色按钮组成的导航条效果代码
  10. 大话西游片尾曲-一生所爱(世界是巨大的枷锁,你不得不重复自己或是别人的生活)