基于JavaEE的学生信息管理(选课)系统论文

此论文已被B站UP codercode侵权

侵权视频链接:https://www.bilibili.com/video/BV1qb4y197N3?from=search&seid=5092258142108768482
侵权视频链接2: https://www.bilibili.com/video/BV15p4y1h73P?from=search&seid=5092258142108768482
侵权文章:http://blog.codercode.cn/#/home/goodDetail?goodId=1003

本篇论文为毕业设计论文,源码已开源,相关博文:基于SSM的学生信息管理系统(选课)

摘要

当前,高校学生人数在不断增多,课程种类以及专业班级也紧随着其不断增长,对此学生信息的管理将会是一个很值得重视的问题。学生信息管理系统将优化人工统计,人工计算过程,简化人工操作,对学生信息、课程信息进行严谨而准确的录入与修改。新系统将带来高效、高效的学术信息系统。学生和工作人员详细资料的简明文件将极大地改进其对及时决策的支持。该系统还将大大促进我们各种机构和个人组织对信息时代的良好认识,从而打破不断使用手工和陈旧系统的丑陋局面。它促进了对数据库驱动的web页面的编码、脚本编制和托管的深入研究、原则、规则和协议。它还将有助于加快信息处理和反馈,它也激发和关注我们的高等院校在使用现代通信系统中获得的设施。
学生信息管理系统处理各种学生信息、学术报告、学校信息、课程信息、课程设置、批号信息以及其他资源相关信息。它跟踪学生从课程开始到课程选课完成的所有细节,可以用于所有的报告目的,跟踪选课、课程安排、即将到来的学期课程细节、学分学时细节、选课结果、学生名单统计等,所有这些都可以作为将来的参考。
关键词:学生信息管理;课程管理;选课;退选

Abstract

At present, the number of students in colleges and universities is increasing, and the types of courses and classes of majors are also growing with it. Therefore, the management of student information will be a very important issue. The student information management system will optimize the manual statistics and calculation process, simplify the manual operation, and input and modify the student information and course information in a precise and accurate way. The new system will bring an efficient and efficient academic information system. Concise documentation of student and staff details will greatly improve support for timely decision-making. The system will also go a long way towards promoting a better understanding of the information age among our institutions and individual organizations, thus breaking the ugly pattern of constant manual and antiquated systems. It facilitates in-depth research, principles, rules, and protocols for coding, scripting, and hosting database-driven web pages. It will also help speed up information processing and feedback, and it will inspire and focus on the facilities our institutions of higher learning have acquired using modern communications systems.
The student information management system processed various student information, academic reports, school information, course information, course setting, batch number information and other resource-related information. It tracked all the details from the beginning of the course to the completion of the course selection, and could be used for all reporting purposes, tracked course selection, course arrangement, upcoming semester course details, credit hour details, course selection results, student list statistics, etc., all of which can be used for future reference.
Key Words:student information management; course management; course selection; exit course

第一章 绪论

1.1 设计背景

随着高校规模的不断扩大和高校数量的增多,当前教育事业发展也如火如荼,使得学生数量急剧增加,对此,关于学生的信息、档案份量也随之增多。不同专业不同班级学生的统计分析工作将是一个值得重视的问题,面对巨大信息工作量,为了能够为高校学生信息管理提供一种更加高效实用的管理手段,为学生信息的统计、存储、计算、分析、存档提供一种更加快捷安全的信息平台,并且能够减少大量的人工操作,以及在人工操作中由于人为因素而引起的数据错误,保证学生信息数据的完整性和安全新,使教师等管理人员能够轻松、方便、正确地完成各项工作,为学生管理工作服务。其中学生课程也种类繁多,必修、选修课程计算学分、成绩,为了方便教师对课程的安排、教师对学生成绩的统计录入、学生自由选课,以及避免课程安排的教室、时间冲突。

1.2 目的和意义

学生信息管理系统将实现学生选课、退选,学生信息管理,课程信息管理等功能,以适应当前以及未来各高校的教务管理分支。该系统由设计到最终发布到服务器并公开,成功可以通过网站来访问。本次设计目的主要运用所学知识,来实现自己从学校到社会的过渡,发现自己的不足以及锻炼自己解决问题的能力。

1.3 国内外进展

学生管理是现在各个大学的主要管理工作之一,设计到学生、教师、管理员等多方面,在学分制的展开和深入,选课将成为各高校最重要的流程之一。随着学生人数增加以及社会发展,学生信息的日常管理和课程的管理工作日趋繁重,迫切需要可靠、稳定、拥有多并发、操作简单、功能强大的学生管理系统。

1.3.1 国外进展

在国外高校一般具有大规模的技术团队来提供技术支持和服务支持,其软件系统以及应用系统较为完善,具有完整的信息化体系。

1.3.2 国内进展

国内研究现状相比国外会稍有不足,学生资料与课程资料相对独立,以管理员为主体,依托于校园网来集中管理。目前高校也基本实现无纸化、综合化的信息管理。

1.4 本文工作主要内容

  1. 系统中保证时效性和准确性,随时通过网页操作对系统数据库进行管理,使学生信息处于最新状态,保证其数据的完成性,方便管理员能够对学生信息进行准确的分析。例如在选课过程中,尽量降低数据延迟,能够及时返回到页面最新选课结果,成绩及时录入查询,为学生教师提供方便。
  2. 减轻人工操作强度、提高工作效率。该系统存在是为了在高校中学生管理工作依托于计算机发挥其强大功能,随信息时代而发展。让教师、管理人员从繁琐大量的手工信息录入中解放出来,将不易传播的纸张文案整理变成灵活的网站在线操作。并充分利用网络优势,加快学校内部学生、课程信息和文档的发布、传送和获取,改善和优化管理人员的工作,使各个部门之间的工作联系紧密、井然有序、清楚明晰,减轻工作负担,提高工作效率,增加学生管理的透明度。
  3. 降低管理成本,由于网站系统管理,将会使教师、管理人员在日常工作时减少纸质文档的使用,避免了以前日常管理中的浪费现象。
  4. 规范化管理,该系统采用了网站在线统计、分析学生信息,原有的信息在网站录入时需要准确无误,减轻后续管理的压力,要求教师和管理员在提供、录入数据时确保其正确性,将信息错误率降到最低,从而提高工作效率,保证学生数据的准确性,实现学生信息规范化管理。

第二章 需求分析

2.1 可行性分析

从技术、经济、操作、法律方面分析其可行性,确保该系统的开发时可行的。

2.1.1 技术可行性

该系统主要基于javaEE编写的B/S接口的web系统,主要用到SpringMVCMyBatis框架,使用SpringMVC提供了方便的功能结构实现,提高了开发效率。而mybatis作为当下主流的orm框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了传统 JDBC代码中,手动设置mysql连接以及相关参数配置,以及获取结果的大量置取方法。在MyBatis 中通过配置映射类,使其方法对应XMLsql映射文件,来配置sql语句的查询、插入、修改、删除等操作,它可以将pojo类,也就是实体类作为输入、输出的参数来作为sql语句的条件或者输出结果。在映射文件中,采用#{}来代替了原始JDBC中的PreparedStatement,更加有效的避免了sql注入等安全问题。mybatis开发简单,与spring组合也非常方便。在数据库方面选择搭建主从复制实现读写分离,来提高系统性能。总体来说技术难度较小。

2.1.2 经济可行性

该系统基本都是开源的语言、工具、数据库等,其完全免费,对计算机硬件要求较小,自行研发的系统,成本低廉,对于服务器方面的维护和支持价格也较低。

2.1.3 操作可行性

在技术支持上,会构成较为美观的页面,对输入操作的约束条件较强,即发生错误会很小,实现与用户交互的良好体验,操作简便,并附有操作说明。

2.1.4 法律可行性

该系统使用开源工具编写,自主研发,不会侵犯他人、集体、国家利益,尊重版权,遵守国家法律法规,因此具有法律可行性。

2.2 用例图

2.2.1管理员流程

管理员可根据搜索条件来查询学生、教师、课程,并对其信息进行管理,最终操作结果存放在数据库中。

图2. 1 管理员流程图

2.2.3教师用户用例图

教师信息由管理员添加,教师可使用本站功能,包过登录、修改个人密码、安排已有课程、查看代课所选情况等。最终管理结果都将存入数据库中。

图2. 2 教师用例图

2.2.4学生用户用例图

学生由管理员添加,学生访问本站的功能包过:登录、个人信息修改检查、查看课程,自由选课、查看选课结果、退选等。最终管理结果都将存入数据库中。

图2. 3 学生用例图

2.3 功能需求

主要分为三个用户:管理员、教师、学生

2.3.1 管理员功能需求

管理员通过特定用户名和密码来输入信息,单选框来选择管理员身份信息,登录之后进入相应角色的操作界面。
选择指定查询条件,查询相应教师信息,并分页显示。可以添加一个新的教师信息,教师工号作为教师身份唯一标识。 还可以修改教师的信息,除教师编号外。同样拥有删除一个教师的所有信息的功能。查询学生、课程信息时同教师信息查询一样,也拥有删除功能。在添加时,通过下拉框来选择学院、专业等。

2.3.2 教师功能需求

教师登录后可以查询教师自己的所有信息,并修改登录密码。
教师通过指定条件查询课程表,并自由选择自己需要教学的课程。对该课程代理,记录详细信息:上课班级名、上课时间、上课教师、学分、学时、限选人数等。添加完成后可查询教师本人代理的课程,并修改教师本人所代课的时间地点等详细信息。在课程安排列表页,可对其进行删除。最后教师可查看自己课程的学生名单。

2.3.3 学生功能需求

学生登录后可查看个人信息并修改自己的密码。查询课程进行选择,在选择过程中可查看上课时间和地点的安排,并提示是否选课。查看相应课程目前所选的人数以及限选人数。学生可查看自己已选课程的信息,即课程表,能够看到上课时间和上课地点等详情。最后可以根据查询条件来退选已选的课程。

2.4 性能需求

  1. 可靠性
    在错误操作或程序异常时会有相应提示或相关解决办法
  2. 安全性
    应拥有身份验证,必须登录相关用户才能进行其操作。

第三章 开发工具

3.1 环境方面

本系统运用java语言编写,为web项目,及需要环境如下:

  1. JDK 1.8
    运用目前市场主流java版本,其功能较新,比起之前版本拥有多种新特性,比如lambda表达式、stream流、引用方法等,提高了开发效率与代码的可读性。
  2. TOMCAT 9.0
    目前主流的web服务器有WebLogic、WebSphere、JBOSS、Tomcat等,通过多方面考虑,该系统选择Tomcat,其主要优点有免费、开源、更新快、跨平台等,其属于轻量级应用服务器,适合中小型web系统,安装轻便,易维护。
    Tomcat是目前流行的Web 应用服务器。它采用自己的类加载机制,来编译运行java web项目,有着可靠的日志输出与错误提示,可灵活修改配置文件来配置域名和端口信息,与nginx可实现负载均衡。
  3. ECLIPSE 4.8
    Eclipse为java编写工具,其功能强大,在eclipse与idea中,此系统选择eclipse,在开发、编写、查错、编译、帮助等各方面非常方便,提高了开发效率。
  4. git
    在项目编写中将项目挂在github中,使用git对远程仓库进行版本控制、代码存储,保证代码不会意外丢失。

3.2 数据库方面

本系统使用MySQL数据库作数据存储。MySQL是关系型数据库,适合中小型项目也企业应用,存储方便,功能强大,在web开发方便,MySQL在网站总占了大份地位,虽然一些功能和大型应用时不如oracle,但其是免费开源的数据库,并相比oracle更加轻便,光启动项便略胜oracle。本次学生信息管理系统目前只是一个小型个人开发项目,使用MySQL是我认为最好的选择。

  1. 版本
    使用MySQL8.0.15版本,在MySQL官网中,有这样一句话“up to 2x faster than mysql 5.7”,其说明比5.7版本快2倍,在MySQL8后sql可以使用函数表达式,使连表sql编写更为方便。
  2. 可视化工具
    该系统选择Navicat 12 for MySQL作为连接工具。
    Navicat是主要面向MySQL的数据库管理工具,提供了较为美观的图形化界面,并且功能强大,为MySQL数据库管理降低了很大的成本和人力。个人还是喜欢他的命名行功能,可以运行存储sql语句、触发器、存储过程,并且可以通过个人选择运行指定语句,并给出美观的数据展现。它为开发人员和数据库管理人员提供了极大的便利,提高了系统的开发效率。

3.3 部署方面

  1. 程序部署
    程序部署在阿里云的centos7服务器上,打包为war包,放在tomcat下,设置tomcat配置文件server.xml来实现动态加载和错误处理。通过配置tomcat绑定已解析的域名,配置nginx实现80端口转发。最终可通过域名访问到该项目。
  2. 数据库部署
    MySQL数据库配置在两台centos7服务器上,通过配置两个mysql数据的主从复制集,从库同步主库数据,在java程序中实现读写分离,优化性能。

第四章 总体设计

4.1系统流程设计

首先网站进去是登录界面,一个用户名输入框,一个密码输入框,下方选择角色:学生、教师、管理员,选择对应的角色,输入其账号密码进行登录。登录成功后跳转相应角色对应主界面,可以对其拥有的相关操作权限进行信息管理。

图4. 1 系统流程总图

图4. 1 系统流程总图

4.2.1 学生界面功能结构

学生登录后,可修改自己的密码,保证安全。学生可查询所有课程,可以指定条件,查询课程的学分、学时、代课老师、课程简介、上课时间地点等信息,根据个人需求来选择课程。
选课完成后可查看选课结果,还可以根据自已选课程进行退选。

图4. 2 学生功能结构图

4.2.2 教师界面功能结构

教师登录后,亦可修改自己密码,查看自己信息,查看管理关已添加的所有课程,然后选择课程,对课程进行安排,包括上课时间、上课地点、学时、学分、限选人数等。安排完成便成功代理该课程,可查看自己所代课程,可取消课程的安排。教师还可查询自己课程的选课情况,包括选课总人数、所选学时列表详细信息、查询具体班级学生等。

图4. 3 教师功能结构图

4.3 E-R图

以下给出数据库中实体对应的E-R图。

图4. 4 学生信息管理系统E-R图
## 4.4 运行设计 通过maven编写项目,jar包通过maven管理,运行在tomcat下,开发时通过配置eclipse的tomcat点击整个项目名进行程序运行调试,部署时将其打包为jar包,放在服务器中tomcat下的webapp文件夹下,其tomcat自动解压编译运行。 ## 4.4 出错处理设计 在开发中尽量约束每一个输入框,使错误异常几率降到最低。若发生异常信息或程序错误,将会跳转到相应界面,提示解决办法。在开发过程中用到logback,来输入日志和debug信息,方便及时展现输入输出信息,提高开发效率。 账号密码处理:账号密码输入错误将会跳转到提示界面,然后手动返回登录界面重新登录;输入为空则不能点击登录。 添加学生、教师、课程处理:在学号、教师编号、课程编号处只能输入指定位数的数字,输入后会在不刷新界面的情况下提示是否可用;在名字只能输入汉字。 充分利用java的异常处理机制,抛出和处理可能发生的异常。 ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9vc3MuZnV6dWkubmV0L2ltZy8yMDIwMDYwNTAwNDUxMS5wbmc?x-oss-process=image/format,png)
图4. 5 java异常类层次结构图

第5章 详细设计

5.1数据库表设计

共设计七个表,学生表、教师表、管理员表、课程表、课程安排表、选课表、成绩表。

5.1.1 数据表字段设计

  • 表5.1 管理员表admin

管理员表中只拥有两个字段,账号和密码,因为管理员权限最大,没有提供相应注册功能,以账号作为主键。

列名类型约束备注
AnameVarchar(16)主键账号
ApasswordVarchar(16)密码
  • 表5.2 学生表Student
列名类型约束备注
SidChar(12)非空、主键学号
SnameVarchar(8)非空姓名
SidcardChar(18)非空身份证
SsexChar(2)男女性别
SpasswordVarchar(12)非空密码
SageChar(2)年龄
ClassrVarchar(15)班级
professionVarchar(15)专业
CollegeVarchar(15)学院
  • 表5.3 教师表Teacher

教师表中以教师编号为主键,记录教师的简单身份信息和个人简介。用到的mysql引擎为innodb。

列名类型约束备注
TidChar(4)主键工号
TnameVarchar(8)姓名
TpasswordVarchar(12)密码
TsexChar(2)男女性别
IntroductionVarchar(100)简介
  • 表5.4 课程表course

课程表中以4位的课程号为主键,用于存放课程的基本信息,其中类型比较重要。用到的mysql引擎为innodb。

列名类型约束备注
CidChar(4)主键课程号
CnamevarChar(15)课程名
CintroductionVarchar(100)简介
TypeVarchar(15)类型(选修,必修)
BelongcollVarchar(15)所属学院
BelongproVarchar(15)所属专业
  • 表5.5 课程安排表courseplan

课程安排表用于为每一门课程添加具体的信息,包括上课时间、上课地点、代课教师、学分、限选人数等。课程编号为课程表中的主键,在该表中为外键,教师编号为教师表的主键,在该表中是关联的外键,使得有较强约束性和完成性。

列名类型约束备注
CourseclassVarchar(12)主键开课班级
CoursetimeVarchar(12)上课时间
CourseweekVarchar(12)上课周
CidChar(4)外键课程号
TidChar(4)外键教师编号
ClassroomVarchar(6)上课教室
creditsInt(11)学分
periodInt(11)学时
TotalnumInt(11)总人数
  • 表5.6 选课表SC

该表为一个关联表,sid为学生表唯一主键,cid为课程表唯一主键,将学生与课程两者信息相关联,来完成选课记录。SID和CID是联合唯一的。该表拥有自增主键ID,引擎为innodb。

列名类型约束备注
IdvarChar(4)自动增长、主键用于传值
SidChar(12)外键学生学号
CidChar(4)外键课程编号
  • 成绩表grade

该表为成绩学分统计表,每门课每个学生都将有一条数据,在教师结课时录入成绩,根据成绩计算所获学分,大于等于六十分可获得该门课的学分,小于六十分则所获学分为零。

列名类型约束备注
IdChar(4)自动增长、主键用于传值
SidChar(12)学生学号
CidChar(4)课程编号
gradeInt(3)所获成绩
creditsInt(11)所获学分

5.1.2 数据表索引设计

在mysql数据库中,索引能够非常有效地提高搜索效率,曾经测试一百万条数据的联表查询中,增加索引只需要十秒,而不加索引,查询时间将会是几个小时。
索引的本质是高效获取已经排序的数据结构,它存放在文件中,通常有HASH和BTREE两种结构。
在该系统中,采用BTREE结构来设计索引,因为在mysql中,非叶子节点不存储数据,这样索引加指针共14b,每个页16kb,这样能够增加容量,例如三层BTREE,(16000/16)*(16000/16)*data。B+Tree节点的大小设为等于一个页,每次新建节点直接申请一个页的空间,这样保证一个节点物理上也存储在一个页里,就实现了一个节点的载入只需要一次I/O。
在学生表中,给它的班级字段加了普通索引,因为在诸多查询中,班级条件最为频繁,基本是以班级为一个小集体;教师表中给姓名加索引;课程表中类型(必修、选修)和课程名称加普通索引;在课程安排表中会课程编号和教师编号加普通索引等。
在索引设计过程中,通过EXPLAIN来分析select的sql语句,使分析结果的type趋近于ref。

5.2数据库性能设计

学生人数在实际中会有很多,考虑到数据库的压力,该系统将在两个服务器上搭建MySQL主从。
MySQL主从复制功能方便数据多处备份,实现了数据库的扩展,以防数据的丢失,提高数据存储的安全性。通过搭建其主从复制,为方便在开发中使用读写分离,以优化数据库的负载性能。在主从复制中,拥有一主多从,本系统因为成本原因,只提供一主一从,两个数据库通过异步的方式更新数据库的变化,主库中,只提供能写功能,即插入、修改、删除在主库中执行,而从库提供能读功能,因为在实际应用中,读的次数,即查询,相比写操作,会有大批量请求,通过读写分离来优化数据库。
主库和从库中复制的基础是二进制日志文件,首先主库将启用二进制日志,在其操作时,都会以“事件”的方式记录在二进制日志文件中。从库将会通过I/O线程与主库进行通信,监控主库的二进制日志文件中的数据变化,如若发生变化,将会把变化复制到自己的中继日志中,通过sql线程执行到自己的数据库中,保证数据和主库中的数据一致,即实现了主从复制。
首先在主服务器中的MySQL配置文件中配置唯一的server-id值,然后通过命令SHOW MASTER STATUS 开启二进制日志文件,记录文件名以及位置,创建一个MySQL用户,用来主库与从库的通信,赋予相应权限。
在从库中进行同步设置:

change master to master_host='94.191.88.237', master_user='wwze', master_password='wish', \
master_log_file='mysql-bin.000002', master_log_pos=885, master_connect_retry=30;

其中master_host为主库所在服务器的ip地址,master_user为创建的用于同步的MySQL用户,master_log_file为二进制日志文件名,master_log_pos为二进制文件位置。
同步设置完成后通过命令start slave开启同步,最后通过命令show slave status\G查看同步结果。

5.3 模块设计以及界面设计

5.3.1 登录模块

登录页面将对登录用户进行密码校验和角色选择。在整个系统中采用particles.js动态梨子背景插件。

图5.2 登录界面
整体采用bootstrap前端框架样式。 主标题下是一个轮播图,通过bootstrap的carousel-inner样式实现,第一张图为模态框,模态框中包含的是一个新的jsp页面,主要写出系统使用说明和注意事项,其他三张为超链接。 登录逻辑主要通过JavaScript实现,通过JavaScript选择不同的登录角色,并提交url给对应的控制层,在控制层类中,接受到请求后,验证身份信息和角色信息,最后执行跳转,响应界面。

5.4.2 管理员模块

在输入正确的账号密码后,将会跳转到管理员界面。该界面运用了time.js插件,来实现动态实际变化,展现时间为当前时间。

图5.3 管理员操作界面
  • 学生、教师、课程管理功能:
    以教师为例,描述出具体实现过程和业务逻辑。
    展现出教师列表,并可通过指定条件查询,每一个条件都有拥有一个特定的name,输入响应条件后,通过查询按钮,提交表单给控制层,控制层利用springmvc的注解形式,通过@RequestMapping与表单url、method一一对应,使请求能够准确找到对应类及方法。
    在想用控制层类中,利用spring的自动注入功能,将需要用的服务层接口注入,在方法类调用服务层实现类的方法,完成查询业务逻辑,最后将查询结果存放在List中,并将List通过request.setAttribute存入request中,返回给指定界面。
    在查询界面中利用JSTL的foreach标签和EL表达式,获取到request中的list来遍历渲染到表格。
    在表格中的最后两个单元格分别存放了修改和删除按钮。按钮通过a标签定义href来指定url和参数,点击将像控制层发送请求,找到对应的方法并处理参数,调用service,通过id查询出唯一教师数据,将该数据存放与request中,最后return到修改界面,修改界面将request中的实体属性值回显到输入框。删除同理进入控制层类,调用service的删除逻辑,删除数据库中对应数据,最后渲染界面。

图5.4 教师管理界面
  • 学生、教师、课程添加功能:
    以添加学生为例,描述业务逻辑。
    与修改界面相似,在性别方便采用单选框,班级、专业、学院采用联动下拉框,在JavaScript中定义了三维数组,通过function来遍历数组,然后指定name值,用onchange给下拉框绑点事件,及学院下拉栏改变时,将清空专业和班级下拉栏的元素,然后获取option中value值的索引,通过索引去三维数组中找到对应的专业,同理班级将通过专业的索引来确定具体值。如图5.5.
  • 学分查询
    通过指定条件查询学生的所获总学分,用于一些判定。通过联合student和grade表,利用sum函数查询每列数据中学分(credits)字段的总值,通过控制层处理之后,将需要展现的数据赋给List,再将该List放在request中,前端bootstrap表格通过el表达式和jstl标签循环List,实现数据渲染。
图5.5 学生添加界面

5.4.3 教师模块

在教师身份验证成功后,将会跳转到教师操作界面。

图5.6 教师操作界面
  • 添加教学课程功能:
    首先查询出目前全部课程,可指定查询条件,查询过程和条件选择与上述教师查询相似。拥有选择按钮,点击之后向找到具体的控制层,调用业务逻辑,返回到课程安排页。在课程安排,利用input的checkbox复选框来选择上课时间,还对其、地点、学时、学分、限选人数进行输入提交。
图5.7 课程查询图

图5.8 课程代理安排图
  • 管理教学课程功能:
    对自己所教学的课程进行管理,包括查看、修改、删除等。实现逻辑与上述基本相思,但该页每一条数据时在mapper中通过三表联查最后得出需要的属性,set到实体类中,一个实体类便是一行数据,最后在控制层将实体存放在List中,有request请求到前台页面,对List进行遍历渲染[5]
图5.9 教学课程管理图
* 查询选课名单功能: 可查询自己教学课程的选课进展,可查询具体学生信息。点击查询名单后,在该按钮的url中拥有课程编号等参数,发送到控制层后,控制层调用service接口,来找出选课表中的所有学号,再通过学号查询出学生列表。

图5.10 选课名单图
  • 管理本人信息功能:
    查看自己信息,并可以修改密码。
  • 结课功能
    教师可对自己教学的课程进行结课,并录入学生成绩,通过表格展现在页面中,每一条数据为一个学生,用input输入框和button按钮来实现成绩录入。点击录入按钮,将隐藏表单中的学号和课程编号,以及成绩,一同通过post方式请求发给控制层,控制层进行成绩处理,通过if判断,如果成绩大于等于六十分则录入该课程的学分,如果小于六十分则录入0,其中首先要通过传过来的课程编号来查出课程的学分。已录入成绩的课无法在安排课程页中查询出来。

5.4.4 学生模块

学生身份验证成功后可跳转到学生操作界面。

图5.11 学生操作界面图
  • 选课功能:
    • 可以查询目前全部已添加的课程,并可以通过指定课程编号、课程名、所属专业、课程类型等条件来查询。实现逻辑与上述查询相似。已结的课程无法查询出来,即无法选课。
    • 对查询出来的课程进行选择,通过课程编号Cid来确定唯一的课程安排表,通过课程安排表查询代课教师信息,展现到前端页面显示。最后再次确认是否选课。
图5.12 学生选课图
  • 查看选课结果功能:
    查看本人选课的结果,通过session中唯一的学号Sid来查询选课表,通过选课表获取到课程编号,由课程编号再次去查询具体详情,最后展现到前端页面。主要sql:
select courseplan.courseclass,course.cname,courseplan.courseclass,courseplan.coursetime,courseplan.courseweek,courseplan.classroom,courseplan.credits,courseplan.period,teacher.tname
from 
sc,courseplan,course,teacher 
where 
sc.cid =courseplan.cid and sc.cid = course.cid  and courseplan.tid= teacher.tid and sc.sid= #{sid}

用表格展现具体的课程表,包括上课时间、地点、代课教师等信息显。若选择了目前没有被代理课程的课程则无法在此页面查出,只能在退选中查看其课程名。

图5.13 选课结果图
  • 退选功能:
    以表格形式展现出本人已选课程的名称,点击退选按钮发送url到控制层,控制层调用service的删除功能,删除数据库中选课表数据,将成功退选该课程。
  • 管理本人信息功能:
    通过session中的Sid,查出本人信息并修改密码。通过联合student和grade表查出学生基本信息数据和总学分数据,最后渲染到bootstrap表格中,总学分通过sql中的sum()函数来计算,sid作为where条件查询。
  • 查看已修课程
    展现本人已经修完的课程,包括课程名、课程成绩和所获学分情况。通过查询grade表中数据来渲染到前端界面。

5.4.5 分页

在该系统的所有查询显示页面,都利用了分页,主要运用mybatis的PageHelper分页插件和bootstrap分页样式。
首先在配置文件中定义了PageHelper插件,指定interceptor拦截器。然后在控制层中,通过PageHelper.startPage(no, 5);来设置分页相关参数,no为从第几条开始,默认为1,也就是点击第二页,将会更换开始条数,5为每页显示的数量。PageInfo page = new PageInfo(list, 5); 紧接着将List放入,list为存放查询结果。最后通过model.addAttribute把page放在model中返回到界面,前端界面进行再一步的处理[6]
在jsp页面中,主要是通过JSTL的foreach标签来遍历控制层返回的page,页数按钮用a标签定义,在href中用EL表达式传入page相关参数发送给控制台进行数据处理,再次返回将是指定页的五条数据。

5.5 开发结构及关系

5.5 开发结构及关系

该系统开发类结构共分为七层
(1)实体层
Pojo为名的包,里面存放实体类,实体类中拥有与数据表相对应的实体属性和置取方法。
(2)映射层
Mapper为名的包,也可以称作Dao层,用于与数据库做交互
(3)服务接口层
Service为名的包,存放一些服务接口类。
(4)服务实现层
在service下的impl为名的包,实现了service层的接口,提供了具体实现方法,主要调用mapper方法,实现具体业务。
(5)控制层
Handler为名的包,主要实现前端请求具体url相对应的控制方法,调用服务层接口,来控制业务流程,将结果返回给前端界面。
(6)拦截器层
通过springmvc配置了一些具体的拦截器,为了拦截请求,例如未登录的用户不能通过url直接访问,而学生、教师、管理员三者不能访问彼此的页面,也就没有彼此的权限,实现了操作功能控制。
(7)读写分离
读写分离中通过定义一个枚举类,主要定义动态数据源,说明写操作的入口和读操作的入口,当方式select查询是,将会由读入口进入,当方式insert、update相关操作时,则会从写入口进入。

5.5.2 配置文件

该系统通过maven构建,在resource中创建了四个文件夹,存放不同的配置文件:
(1)config.log包
该文件夹类存放了logback的配置文件,logback主要用于在控制台输入日志信息,方便开发bug解决、信息查看、结果分析,提高了开发效率。
(2)config.,mybatis包
该文件夹类存放ORM框架mybatis的配置文件,因为该系统与spring相结合,所以该配置中仅仅提供了分页配置。
(3)config.spring包
该文件夹中存放了spring的主配置文件和springmvc的配置文件。
① 主配置文件applicationContext.xml
在该配置文件中,配置了数据库源,与java类包中读写分离相对应,通过druid连接池配置了主库的信息和从库的信息,其中还配置了服务扫描器,用于扫描service层的java类,同样配置了mapper层的扫描器,用于使mapper层java文件相对应的xml配置。
② SpringMVC.xml
Springmvc作为控制层的主要框架,其功能强大,在配置文件中,首先配置了请求的前缀和后缀,也就是视图解析器。然后开启了注解方式,最后配置拦截器,与java类包中拦截器层相对应,配置管理员、教师、学生各需要拦截的url路径以及对应的bean类。
(4)mapper包
此包中是和java类包中mapper相对应的xml映射文件,通过调用mybatis中的select、insert、update等标签,嵌套具体的sql语句,来实现与数据库中资源的交互,并返回操作结果。

5.5.3 test类包

在maven中,也有test的一个类包。其中主要有些用于测试的类,在系统开发时,将主要创建一些服务层对应的测试类,来测试服务层中业务逻辑方法,分析业务逻辑和调用结果,若测试无误方可在控制层中调用。

5.5.4 webapp

在该文件夹下,将是html界面或者jsp文件,其中包含一些JavaScript、jquery、bootstrap等前端框架文件,webapp也可以称为视图层,主要为前端页面的设计美化和渲染,提供良好的操作性和视觉效果。在WEB-INF中,是极为重要的web配置文件,说明spring主配置文件位置以及配置springMVC的核心——前端控制器。

第6章 测试

6.1 单元测试

在系统开发过程中,采用junit实现来进行单元测试,主要测试业务逻辑层的功能。测试成功将在控制台打印结果,显示绿色。测试失败在控制台打印程序异常、错误,显示红色。

  1. 登录功能测试:
    在测试类中引用junit的jar包,调用服务层的登录逻辑方法。
  2. 指定条件查询功能测试
    调用服务层的select相关方法,主要测试学生、课程、教师、选课结果的功能是否正常。
  3. 选课功能测试
    调用服务层的选课方法,主要是对选课表的插入和更新进行测试。
    最后系统的全部功能通过单元测试,功能正常可用。

6.2 模块测试

此系统分为管理员、教师、学生的登录模块,查询课程、学生、教师模块,学生选课模块,查询选课结果模块,学生退选模块,教师安排课程模块,查询教学课程模块,查询选课名单模块,管理员管理学生模块,管理员管理教师模块,管理员管理课程模块等。

  • 表6.1 模块测试表
序号功能名称测试内容测试结果
002查询模块检测整个系统中分页查询功能是否可用正常
003选课模块检查学生是否可以选课正常
004选课结果模块查询选课结果是否正常正常
005学生退选模块测试学生退选功能是否可用正常
006教师安排课程模块检测教师是否能正常代理课程正常
007查询教学课程模块检测教师是否能够查询本人的教学课程正常
008查询选课名单模块检测教师是否能够查询课程的选课学生详情正常
009管理员管理学生模块测试管理员对学生的添加、修改、删除。正常
010管理员管理教师模块测试管理员对教师的增删改正常
011管理员管理课程模块测试管理员对课程的添加、修改、删除。正常

6.3 测试用例和测试结果

以添加学生信息为例,采用等价类划分方法以及边界值分析方法设计测试用例 输入域要求如下:

  1. 学号为12位数字
  2. 姓名只能为四个以内汉字
  3. 身份证号为18位数字
  4. 密码最低为六位,不能为空格和汉字
  5. 年龄为2位数字
  • 表6.2 等价类表
输入条件有效等价类无效等价类
学生学号字符类型数字(1)除数字外其他字符(2)
学生学号字符数12位(3)小于12(4)大于12(5)
学生姓名字符类型汉字(6)除汉字外其他字符(8)
学生姓名字符数4位以内(9)大于4(10)不输入(7)
身份证号字符类型数字(11)除数字外其他字符(12)
身份证号字符数18位(13)大于18(14)小于18(15)
密码字符类型除空格、汉字外的字符(16)空格或者汉字(17)
密码字符数6-16位(18)小于16(19)大于16(20)
年龄字符类型数字(21)除数字歪其他字符(22)
年龄字符数2位(23)大于2(24)小于2(25)

在等价类中共有25个标号,为逾期结果和等价类设置序号,方便测试用例的引用。
第一列为数据数据类型,第二列为正常结果,第三列为不符合实际的结果。

  • 表6.3 测试用例表
输入数据预期结果覆盖等价类
学生账号:201500004000正确(1)(3)
学生账号:20150000002报错:学号必须是12位(1)(4)
学生账号:2015000000222报错:无法输入第十三位(1)(5)
学生账号:Wer222222222报错:无法输入字母(2)(3)
姓名:扶醉正确(6)(9)
姓名:欧阳前序签报错:第五位无法输入(6)(10)
姓名:ww报错:无法输入(8)(9)
身份证号:140000199609116666正确(11)(13)
身份证号:1400001996091666报错:身份证号必须18位(11)(15)
身份证号:140000199609166666报错:第19位无法输入(11)(14)
身份证号:ww000019960916666报错:前两位无法输入(12)(13)
密码:111111正确(16)(18)
密码:11111报错:密码必须大于六位(16)(19)
年龄:22正确(21) (23)
年龄:122报错:第三位无法输入(21) (24)
年龄:2报错:请输入正确的年龄(21) (25)
年龄:w2报错:第一位无法输入(22) (23)

分析:本次功能测试的是添加学生信息时输入框的信息,对其字符类型和字符数量进行了限制,并且有相关错误操作提示信息。测试输入的数据,得到结果正确。

结论

这次毕业论文的结束,意外这大学生涯的结束,大学四年的我学习到了诸多编程语言和专业技能,在毕业设计中,用java编写了简约的学生信息管理系统,收获很大。
在这次毕业设计中,我运用java的springmvc和mybatis后端框架,结合bootstrap样式框架,独自从零开始到最后成功部署完成,涉及诸多知识面,在开发过程中不断学习,接触到了以前从没有接触的前端框架,如今也能熟练运用,一改之前无样式的前端页面。设计结构分明,将自己学习一年之久的SSM框架成功利用在该系统中,加深了自己对springMVC的原理理解,在开发过程中全部请求使用了RESTful风格架构,使增删改查更加明确,可读写增强。对ORM框架mybatis已加深了熟练度,能够独自手写配置文件和映射关系。开发过程中努力让自己的代码变得完善和规范,拥有统一的缩进、换行格式,拥有适量注释,命名方面也全都采用驼峰命名,极大增强了程序的可读性,方便以后测试和新增功能。在程序设计中遵循六大设计原则,对修改关闭,对增加开放;实体与实体之间没有联系,提高了扩展性;dao层和service层都有自己的接口类,符合依赖倒置原则等,提高了该系统的开发效率,降低了耦合度,对以后功能扩展也提供了方便。在开发过程中,将代码存放在了github上,利用git连接自己的github仓库,实现良好的版本控制,每一次git提交都附有提交说明,在代码出错或代码意外丢失可以回退和找回原有代码,减少一些电脑硬件给系统开发造成的困难。在远程仓库中实现了开源,项目功能虽然简约,但也是自己几个月以来码出的成果。git的使用为以后自己在企业中奠定开发基础。
最后通过查资料和询问老师同学,将完成的maven项目部署在了云服务器中,在部署过程中也花费了大量时间,mysql、nginx、tomcat等通过多次重装配置,最后成功部署并绑定域名,自己也有了一份小的成就感。
在开发过程中,遇到的问题和bug也是层出不穷的,本着不放弃的决心,想起莫言曾说,“当你的才华还撑不起你的野心的时候,你就应该静下心来学习”,在去除内心的烦躁后将问题一一解决,知识得到了很大的扩展。
这次毕业设计和论文,是我从学校到社会的见证者,也是最重要的过渡。

参考文献

  • [1] 辛甜. 基于B/S结构的学生信息管理系统的设计与实现[J]. 信息技术与信息化,2015,(9):125-127.
  • [2] 孙婕. 基于Web的连云港开放大学学生信息管理系统的设计与实现[J]. 淮海工学院学报(自然科学版),2016,(2):29-32.
  • [3] 刘龙泽. 基于UML学生选课系统的分析与设计[J]. 山东工业技术,2015,(23):229.
  • [4] 石敏力. 学生选课系统的研究与设计[J]. 数字技术与应用,2016,(1):176-176.
  • [5] 魏志军,周肖树,路良刚. 基于Java EE多层框架的实时监测系统设计与实现[J]. 电子设计工程,2018,(11).
  • [6] 周萍,赵娜,李慕. Bootstrap框架在响应式Web设计中的应用[J]. 软件导刊,2017,(6):135-137.
  • 16
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
学生信息管理系统是一个基于JavaEE技术开发的管理系统,主要用于管理学生的基本信息、成绩、课程安排等相关数据。 该系统基于JavaEE平台开发,采用了分层架构,包括表现层、业务逻辑层和数据访问层。表现层采用了JSP、Servlet等技术实现页面展示和用户交互,通过前端页面实现学生信息的录入、查询和修改等操作;业务逻辑层实现了系统的业务逻辑,包括学生信息管理、成绩管理、课程安排等功能;数据访问层采用了JDBC、Hibernate等技术实现与数据库的交互,实现数据的存储和检索。 学生信息管理系统的主要功能包括学生基本信息管理、成绩管理、课程安排管理和用户权限管理等。学生基本信息管理主要包括学生个人信息的录入和查询,成绩管理实现了学生成绩的录入、查询和统计分析,课程安排管理实现了学生课程的安排和查询,用户权限管理实现了用户信息管理和权限的分配。 通过学生信息管理系统,学校管理者可以方便地管理学生信息,包括学生基本信息、成绩和课程安排等,实现了信息的集中管理和统一展示。同时,学生也可以通过系统查询个人信息,方便快捷地了解自己的成绩和课程安排情况。 总的来说,基于JavaEE学生信息管理系统为学校提供了一个高效、便捷的信息管理平台,提升了学校管理效率和服务质量,也方便了学生对自己信息管理和了解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客时代

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值