论 文 摘 要
随着互联网技术的快速发展,人们感受到了网络带给我们的便利。网上学生信息管理系统应运而生,网上学生信息管理系统与传统的学生信息管理方式相比更加节约资源。
本系统采用Navicat、MySQL、JDK等开发工具进行开发,采用浏览器/服务器(B/S)模式架构,开发研究一套基于JSP技术的网上学生信息管理系统。本人在此系统中负责选课模块,通过分析选课模块的需求,建立了此模块的开发模型,分析了应实现的功能特点,构建了系统开发环境和选课模块的功能用例图,并完成了选课模块数据库设计以及选课模块功能设计等工作。其中实现了添加课程及退选课程等功能,让学生有更好的选课体验,让教师有更好的查看课程信息,以及让管理员有更好的管理教师和学生的体验,实现了不同以往的选课流程,即节约了时间,又提升了效率。
关键词:网上学生信息管理系统,选课模块,MySQL
一、前言
(一)项目背景
在当前这个网络发达的时代,互联网已经成为我们日常生活中的必需品,越来越多的领域需要互联网的支持才能更好的提供服务,互联网的益处大大增加,通过网络技术使人们相互交流、团队工作以及共享信息变得十分便捷。网上信息管理系统的产生是因为高校扩招后,在校学生日益增多,对学生的管理需求也越来越大,其中选课模块是必不可少的。如果仍然通过传统的纸上选课方式选课,既浪费大量人力物力,又浪费时间。同时在人为的统计过程中会不可避免的出现错误,因此,通过借助网络系统,让学生只要在电脑中输入自己的个人选课信息来替代有纸化的手工操作成为高效管理的必然趋势。
在这种必然趋势下,选课模块就体现出了极大的便利,所以选课模块因此被设计出来。学生们不用再聚集到一起通过手工操作去选课,免去了浪费时间的烦恼,只需要登录相应的网站便能选到自己喜欢的课程,即便利了学生,也便利了教师。教师也不用再把学生全部组织到一起才能完成选课,而是通过此系统中的选课模块便可查看学生选择的课程,减轻了教师的工作量。该模块的实现能够为学生提供方便的选课功能,也能够提高高校教师对学生和教学管理的效率。对于高校来讲,如果拥有本模块,便能让自己的学校的学生轻易的完成选课,大大提升了工作效率。因此,创建这个模块,最主要的原因就在于为高校、为教师、为学生提供一个更加便利的选课平台,以便更好地完成选课工作。
(二)关键技术
在学生信息管理系统还未普及前,学校都是通过书写在纸张上进行统计信息的工作,此方式略显复杂。尤其在选课方面更是为难,在网上选课还没普及之前,学生只能聚集到班级后进行传统的纸上选课方式进行选课,这虽然能让同学们进行感情联络,但也存在一些缺点。比如:有些同学因为一些原因无法到场选课,因此错过选课机会,无法选到自己心仪的课程,略显遗憾。
1.JavaEE
Java EE是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。Java EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依循Java EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,导致企业内部或外部难以互通的窘境。
2.JSP技术概述
JSP技术所开发的web应用程序是基于Java的,它拥有Java跨平台的特性,以及业务代码分离,组件重用,继承Java Servlet功能和预编译功能。JSP的工作方式是请求、应答模式,客户端发出HTTP请求,JSP收到请求后进行处理,并返回处理结果。在一个JSP文件首次被请求时,JSP引擎首先把这个JSP文件转换成一个Servlet,而该引擎本身也是一个Servlet。
3.JDBC概述
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
二、需求分析
(一)可行性分析
(二)网页功能分析
1.前台功能分析
学生通过登录账号进入系统就能浏览此系统的页面,进入页面后就能进行选课,若课程已经选过就不能再次选择同样的课程,若没有选过就能选择此课程,此时课程选择成功的页面就会显示出来。还可以退选已选择的课程。详细操作如下:
登录:已有账号的学生进行登录操作
选课:选择课程
添加选课信息:添加自己未选择的课程
退选选课信息:将不想添加的课程进行退选
退出登录:退出登录并回到登录主页
管理员通过登录账号进入系统就能浏览此系统的页面,可以分配教师所教授的课程以及对课程信息进行添加、删除、修改操作。详细操作如下:
登录:管理员进行登录操作
分配课程信息:对教师需要教授的课程进行分配
管理课程信息:对学生的课程信息进行增加、删除、查询、修改操作
退出登录:退出登录并回到登录主页
四、网站整体设计
(一)网站层次结构

图7 系统功能模块图
(二)目录层次结构图
五、网页的实现
(一)主页的实现
(二)学生添加选课的页面
学生添加选课时的页面也受许多限制,当一些课程已经达到人数上限时此同学便不可再选择;当某门课程该同学已经选择过时,此门课程也不可再次被选。

图12 学生添加选课时的页面
实现添加选课功能的主要代码如下:
private void addSelectedCourse(HttpServletRequest request,
HttpServletResponse response) throws IOException {
// TODO Auto-generated method stub
int studentId = request.getParameter("studentid") == null ? 0 : Integer.parseInt(request.getParameter("studentid").toString());
int courseId = request.getParameter("courseid") == null ? 0 : Integer.parseInt(request.getParameter("courseid").toString());
CourseDao courseDao = new CourseDao();
String msg = "success";
if(courseDao.isFull(courseId)){
msg = "courseFull";
response.getWriter().write(msg);
courseDao.closeCon();
return;
}
SelectedCourseDao selectedCourseDao = new SelectedCourseDao();
if(selectedCourseDao.isSelected(studentId, courseId)){
msg = "courseSelected";
response.getWriter().write(msg);
selectedCourseDao.closeCon();
return;
}
SelectedCourse selectedCourse = new SelectedCourse();
selectedCourse.setStudentId(studentId);
selectedCourse.setCourseId(courseId);
if(selectedCourseDao.addSelectedCourse(selectedCourse)){
msg = "success";
}
courseDao.updateCourseSelectedNum(courseId, 1);
courseDao.closeCon();
selectedCourseDao.closeCon();
response.getWriter().write(msg);
}
本段代码表示的是学生登录系统之后,便能看到选课页面,并进行添加选课,当此门课程超过规定人数时,会有提示框显示此课程不能被添加。当某门课程已经添加过时,也会有提示框显示已选过此门课程。通过这些代码就可以判断学生是否能成功添加课程。
(三)学生查看所选课程信息的页面
学生查看所选课程信息页面是当学生登录之后能快速方便的查看到自己应上的课程以及上课时间。效果图如下:

实现查看课程信息功能的主要代码如下:
private void getCourseList(HttpServletRequest request,
HttpServletResponse response) {
// TODO Auto-generated method stub
String name = request.getParameter("name");
int teacherId = request.getParameter("teacherid") == null ? 0 : Integer.parseInt(request.getParameter("teacherid").toString());
Integer currentPage = request.getParameter("page") == null ? 1 : Integer.parseInt(request.getParameter("page"));
Integer pageSize = request.getParameter("rows") == null ? 999 : Integer.parseInt(request.getParameter("rows"));
Course course = new Course();
course.setName(name);
course.setTeacherId(teacherId);
CourseDao courseDao = new CourseDao();
List<Course> courseList = courseDao.getCourseList(course, new Page(currentPage, pageSize));
int total = courseDao.getCourseListTotal(course);
courseDao.closeCon();
response.setCharacterEncoding("UTF-8");
Map<String, Object> ret = new HashMap<String, Object>();
ret.put("total", total);
ret.put("rows", courseList);
try {
String from = request.getParameter("from");
if("combox".equals(from)){
response.getWriter().write(JSONArray.fromObject(courseList).toString());
}else{
response.getWriter().write(JSONObject.fromObject(ret).toString());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
本段代码表示的是学生查看所选课程信息的流程,此模块是为了方便学生能快速便捷的看到自己所选的课程以及课程的各项相关信息。
总结和展望
这是第一次完成一个系统的一个模块的全部设计,虽然在编写的过程中有许多自己不懂的地方,但在校外指导教师以及校内指导教师的指导下、查阅相关资料以及同学的帮助下,逐步解决了所有的问题。本系统以Java Web技术为基础,使用MySQL数据库,以及Navicat等工具,构建了一个网上选课模块。本模块已经完成了基本设计,并完成了模块开发与模块测试。虽然基本的功能已经实现,但还有待补充,还有许多应该提升的地方,仍然需要去学习,去探究。对于这个模块,还有很多不完美的地方,比如学生应该分选修课程子模块和必修课程子模块,所以在接下来的日子里,我依旧会在此项目上下功夫,争取能将它完善的更好。
总的来说,这次毕业设计的完成运用了许多课程的所学的内容,也因此提升了我编写代码的速度以及质量,并对编写代码技术有了更深刻的了解。通过此次经验,我相信会对我以后的工作打下坚实的基础。
致谢
在项目已经基本完成的情况下,此时此刻感触颇深,也体会到了编写系统的不易,在完成此项目的过程中虽然有些困难和阻碍,但通过自己的努力,以及老师和同学的帮助下一一克服,并因此在此过程中我要十分感谢校内指导教师对我的辅导,她严谨认真,对每一处的细节都把控的十分严格,让我有很大的收获。包括我要感谢校外指导老师,他在我们的编码过程中给了我们很大的帮助,他工作认真,知识阅历丰富,帮了许多我们不会的问题。更要感谢周围同学们对我的帮助,她们给我提供了许多宝贵的意见和指导,正是有她们的帮助我才能顺利完成此次模块的设计与实现。
此次项目的设计也让我体会到了编码工程师工作的不易,所以以后我一定会更加努力,不辜负老师和家人对我的期望,就算在前进的道路上有很多困难,我相信有过此次经历,我也会更加成熟,在解决问题方面会考虑的更加全面,一步一步迈向成功。
参考文献
[1]姜峰.高校教学管理系统的设计与实现.北京工业大学.2016
[2]刘红伟.基于B/S模式的学生业务管理系统的设计与实现.湖北工业大学.2016
[3]周昶君.云南国土资源职业学院学生信息管理系统的研究与分析.云南大学.2016
[4]诸晓毅.九江职业大学学生信息管理系统的设计与实现.电子科技大学.2016
[5]陈健颖.民办高校学生信息管理系统的设计与实现.江西财经大学.2017
[6]杨洁.学生信息管理系统的研究.南昌大学.2018
[7]江金娜.高校成人教育学生信息管理系统的分析与设计.广东工业大学.2019
[8]许红叶.高校贫困生管理信息系统设计与研究.西北大学.2019