Coder Social home page Coder Social logo

courseselect2's Introduction

CourseSelect

此github项目为国科大研究生课程(高级软件工程)的课程作业,由李嘉禛和刘旭在原有选课系统样本的基础上进行更新改进完成,增添了部分功能,在完成改进的过程中,小组成员对Ruby on Rail这一web应用开发框架有了更好的认识。
此项目部署至阿里云服务器,可以访问 http://47.94.149.173/ 进行浏览,由于域名需要申请备案,暂时无法启用(micreven.top)。

原有功能功能:

  • 多角色登陆(学生,老师,管理员)
  • 学生动态选课,退课
  • 老师动态增加,删除课程
  • 老师对课程下的学生添加、修改成绩
  • 权限控制:老师和学生只能看到自己相关课程信息

新增功能:

  • 选课单功能
  • 选课时间冲突检测功能
  • 邮件通知功能
  • 自主选择是否将某一门课设置为学位课
  • 学分统计(总学分、学位课学分)
  • 课表生成
  • 教师添加自己的学生
  • 教师为自己的学生推荐课程

新增功能说明:

  • 选课单功能

在原有的系统中,学生点击课程选择便会将课程加入到自己的已选课程中,同时需要对数据库Grades进行更新,在访客量很大时可能会造成系统压力过大。添加了选课单功能后,学生将想要选择的课程先加入选课单,在调整好所有的课程后,可以一次性提交。这样既方便学生规划自己一个学期的选课又能缓解系统压力。通过建立submit_courses这一临时表存储用户准备选择的课程,在用户确认好所有想要选择的课程后可以一次性提交,完成加入课程到已选课程。

功能截图如下:

  • 选课时间冲突检测功能

在原有的系统中,如果先后选择存在时间冲突的课程是被允许的,这显然不符合实际要求。所以,我们增添了时间冲突检测的功能,在提交选课单给系统的时候,会将选课内的课程以及已经选择的课程进行比较,看是否存在时间上的冲突,如果不存在则能够成功提交选课单,否则系统将会提示存在选课冲突,提醒学生进行检查。

判断规则:当上课周数存在重叠、每周上课的天次相同、一天内上课的具体时间存在重叠的情况,会提示选课时间冲突,否则不进行提示;

将当前用户已经选择的课程和选课单中准备提交的课程都存储到一个课程数组中,采用两次循环嵌套的方法,依次将每一门课程与其他未比较过的课程进行上述判断规则的比较,若存在冲突则在用户提交课程的时候会给出提示,否则选课单中的课程可以进行提交。

功能截图如下:

可以看到在图一中,由于选课单中存在时间冲突的课程所以提交失败,而在选课单二中课程符合时间要求则可以成功提交,提交后页面跳转到已选课程页面中。

  • 邮件通知功能

为了使用户在对课程进行操作后得到通知,以便用户确认自己的操作已经生效,我们增添了邮件通知功能。在老师创建新课程、删除不再开课的课程时成功的操作将会往老师注册时提供的邮箱中发送提醒邮件;在学生提交选课单、退选课程的时,成功的操作将会往学生邮箱中发送邮件;以此来让用户确认自己的操作已经生效。

产生邮件通知的情景有:

当老师成功申请课程;
当老师删除一门课程;
当学生成功提交选课单;
当学生成功退课;

注:由于目前没有实现每个学生的绑定邮箱的自动注册功能,所以通知邮件统一发送至[email protected]邮箱,若想要验证此功能正确性,可以对此邮箱进行登录,密码为:2017e8018661131,请勿擅自修改密码,谢谢合作!

功能截图如下:

可以看到在老师申请课程成功、学生成功退课的时候都会在邮箱有收到通知邮件以确保操作成功。

  • 自主选择是否将某一门课设置为学位课

学生在选择课程时,应根据自己的意愿,自主的设置是否将该门课程设置为自己的学位课。在选课时,当点击学位课按钮时,会将该门课设置为自己的学位课,当点击非学位课按钮时,会将该门课设置为自己的非学位课。

功能截图如下:

  • 学分统计(总学分、学位课学分)

在已选课程中,希望对自己已选课程的学分进行统计,其中包括总共已选课程的总学分,和其中学位课多少学分。当选择课程为学位课时,两个分数均会加上该门相应的学分,当选择的课程为非学位课时,只在总学分上加上相应的课程学分。

功能截图如下:

  • 课表生成

选课结束后,会自动生成一张已选课程的课表,可以通过查看课表功能,进行查看

功能截图如下:

  • 教师添加自己的学生

由于学校的选课系统不希望所有人都可以注册,因此将添加学生即注册学生的功能交个老师,这样还方便建立老师与学生之间的映射关系。

功能截图如下:

注册学生

查看已注册的学生

  • 教师为自己的学生推荐课程

学生在选课时,希望得到老师对于选课的意见。该功能老师会为自己的学生选择一些推荐课程,推荐的课程在其学生选课时会在一个单独的表单里出现。老师通过点击加入课程,加入的课程在点击已推荐课程后可以进行查看。

功能截图如下:

选择要推荐的课程

查看已推荐的课程

学生登录后进行选课的界面(包括了推荐课程)

如果教师不拥有学生的话,则无法进行推荐课程,也无法查看已建议课程.此时点击建议课程,进入推荐课程后,点击推荐课程会显示

此时点击已建议课程,会显示

部署简介:

项目在阿里云服务器上采用passenger+nginx框架进行部署,下面对部署过程进行简单介绍。

1.服务器ruby on rail环境配置

在服务器中配置与本地相同的开发环境;
ps:注意ruby版本的差别,可以用rvm list 查看现在使用的ruby版本;

2.配置passenger+nginx环境

Nginx是HTTP服务器,运行nginx类似于本地开启rails server,才能实现网站的访问,首先安装passenger:
gem install passenger

接着通过source编译的方式安装nginx:
rvmsudo passenger-install-install-nginx-module

最后配置nginx配置文件,将root目录设置为自己的项目public文件夹的地址。
(详细的配置过程可以参阅https://ruby-china.org/topics/32851 )

3.运行nginx服务器

启动nginx服务器,便能够通过本地服务器地址访问到我们的工程啦!http://47.94.149.173/
sudo /opt/nginx/sbin/nginx

courseselect2's People

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.