项目实训(选课系统)
详细设计说明书
1.引言
1.1编写目的
为使得学生选课系统的功能实现流畅清晰,在详细设计说明书里对选课系统的具体实现给出了说明。系统从学生、教师以及管理员三大方面进行了设计,基本实现了学生的在线信息查询和选课功能、教师查询选课学生和任课课程相关信息功能以及管理员对老师、学生、课程等信息的管理等功能。说明书从功能、性能、算法、程序逻辑、接口、存储几个方面对程序进行了详细的分析,展现了选课系统的可操作性和扩展性。
本文档供项目主管部门、指导老师、设计人员、开发人员参考。
1.2项目背景
随着无纸化办公的普遍实现,信息的自动处理以及网络式的信息交互方式已经被人们广泛应用。让计算机来管理学生的信息是现在各个高校都在积极进行的工作之一,也是高校教学管理工作的重要内容之一。网上选课与传统的选课方式相比更加节约资源,增加了学生选课自主权。
学生选课系统作为一种现代化的教学技术,越来越受到人们的重视,是一个学校不可或缺的部分,学生选课系统就是为了管理好选课信息而设计的。学生选课系统的将使选课管理工作规范化、系统化、程序化,避免选课管理的随意性,提高信息处理的速度和准确性,能够准确、及时、有效的查询和修改学生选课情况。与传统的选课方式相比,网上选课系统利用局域网为学生选课带来了极大的便捷。学生在公共机房,或者宿舍的个人电脑上便可以通过校园网络来选课。在选课期间内,学生能够使用选课系统灵活的修改自已的选课情况,大大提高了学校选课工作的效率。教务处的教师则可以通过选课系统的管理员系统来管理学生的选课情况,使得学生选课工作达到系统化和自动化,大大提高了学校的工作效率,为广大师生及相关人员节省了极多的时间。
项目的委托单位、开发单位和主管部门以及该软件系统与其他系统的关系:
项目的委托单位:西南财经大学
开发单位:在线选课系统小分队
主管部门:经济信息工程学院
本软件系统的名称:学生在线选课系统
与其他系统的关系:本项目采用用户/服务器原理,客户端的程序是建立在Windows上 的系统网站,后台数据库系统由MySQL 数据库支持。
1.3定义
(1) MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
(2) Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
(3) JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。
(4) PC(全称Personal Computer)即个人计算机或者个人电脑的意思。
(5) Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
1.4参考资料
- [1]耿祥义、张跃平著.JSP实用教程(第三版) .北京:清华大学出版社,2015.
- [2]耿祥义、张跃平著. Java 2 实用教程(第5版).北京:清华大学出版社,2017.
- [3]李振坤.梁海健.孙延海.基于知识库的学生选课系统的设计与实现.计算机应用研究,2005.
- [4]蒋治学.JSP技术及其在动态网页开发中的应用分析[J] .浙江水利水电学院报,2013,32(02).75-77.
- [5]刘小飞、李明杰.基于JSP和Servlet架构的新闻频道系统[J].电脑知识与技术,2020,16(12):82-83.
2.总体设计
2.1需求概述
1.对功能的需求:
学生选课系统需要满足来自三方面的需求,这三个方面分别是学生、教师和管理员。学生的在线信息查询和选课功能、教师查询选课学生和任课课程相关信息功能以及管理员对老师、学生、课程等信息的管理等需求。不管是教师、管理员还是老师,只有在数据库中存在,才能登录访问相关页面,如学生启动本系统后,系统提示输入学生学号、密码以及验证码,若数据库中有该学生,则进入选课系统主控操作界面,否则显示账号密码错误,无法进入相关页面。
2.对性能的需求:
本系统所需数据简单,基本不存在精度问题,在时间特征上要求本系统对于事务的处理有较高的响应,如数据库的更新操作等响应时间应限定在一定范围之内。
3.输入输出的需求:
该系统为教学管理系统的一个模块,因此它的输入数据由总系统的其它模块提供,其输出数据一部分可显示给用户,另一部分作为其它子模块的输入。
2.2软件结构
本项目使用Netbeans和Navicat for MySQL两个软件。
图1 软件结构图
3.程序描述
3.1功能
选课管理系统的功能模块分为四个部分:登录功能、学生功能,教师功能、管理员功能。
1. 登录功能的实现:
用户可以在登录界面选择管理员、教师、学生三种身份进行登录。登录时需要输入对应的用户ID、密码、验证码。若密码或用户ID错误,界面将提示“管理员账号或密码错误”的错误信息;若验证码输入错误,界面将提示“验证码错误”的错误信息并刷新验证码。
用户的用户ID、密码、验证码都输入正确后,将跳转到相应身份的功能页面。
输入 |
处理 |
输出 |
用户的登录信息 |
在数据库中匹配相应的用户信息。 |
匹配失败:用户ID或密码错误 匹配成功:跳转至相应的功能界面。 |
表1 登录功能IPO图
2. 学生功能的实现:
(1) 个人信息查询
学生登录后可以查询自己的学号、学生姓名、密码、班级、关联手机号、性别、出生年月日、评论这几个方面的基本个人信息。学生的个人信息存储在t_student表中。个人信息查询界面不能修改已经录入的个人信息。
选课
学生可以选择选课界面提供的若干门课程,勾选完毕,点击提交按钮,所选择的课程将被添加进入已选课程中。选课界面有如下三个特殊功能:
- 学分上限功能。若学生将要选择的课程学分和已经选择的课程学分总和超过规定的修读学分上限,则界面弹出“学分超过上限”弹窗。
- 时间冲突功能。若学生选择的几门课程中存在时间冲突,或选择的课程与已选课程存在时间冲突,则界面弹出“时间冲突”弹窗。
- 先行课功能。若学生选择的课程中存在课程的先行课未被修读的情况,则界面弹出“未修读先行课”弹窗。
(2) 查看已选课程
学生“学生功能”下拉列表中选择“查看已选课程”,可以查看自己已经选择修读的全部课程。
(3) 取消已选课程
若学生想退选某门课程,可以在“查看已选课程”的选择框中选择“取消已选择课程”。确认取消后,该门课程将从已选课程界面消失,重新被放入选课界面。
输入 |
处理 |
输出 |
学生信息查询请求 |
在数据库中匹配相应的学生信息 |
学生个人信息 |
所选课程 |
|
|
已选课程查询请求 |
在数据库中匹配相应学生的已选课程信息 |
输出学生的全部已选课程 |
取消已选课程请求 |
在数据库中删除相应学生的已选课程信息 |
更新已选课程界面,去除取消的已选课程。 |
表2 学生功能IPO图
3.教师功能的实现:
(1) 查看信息
教师在“查看信息”下拉列表中选择“查看个人信息”,可以查看自己的教师编号、姓名、密码、关联手机号、雇佣日期及评论这几个方面的基本信息。教师的个人信息存储在t_teacher表中。个人信息查询界面不能修改已经录入的个人信息。
(2) 查看选课学生
教师进入“查看选课学生”界面,可以查看到选择其担任课程的相关学生信息。还可以通过学号、姓名等查询选课的学生信息。
(3) 查看任课课程
教师进入“查看任课课程”界面,可以查看到其担任课程的课程编号、课程名称、课程对应学分、开课时间、开课地点这几个方面的基本信息。
输入 |
处理 |
输出 |
教师信息查询请求 |
在数据库中匹配相应的教师信息 |
教师个人信息 |
查询选课学生请求 |
在数据库中匹配相应学生的选课课程信息 |
输出全部学生的选课课程 |
查看任课课程请求 |
在数据库中匹配相应任课课程的课程信息 |
输出全部的任课课程 |
表3 教师功能IPO图
4. 管理员功能的实现:
管理员信息管理
(1) 查看个人信息
登陆管理员界面后,在“管理员信息管理”下拉列表中选择“查看个人信息”进入管理员信息页面,可以查看自己的管理员账号、真实姓名、密码、年龄、成绩、入职时间、简介等管理员基本个人信息。管理员的个人信息存储在t_admin表中。管理员信息页面不能修改已录入的个人信息。
(2) 添加新的管理员
在“管理员信息管理”下拉列表中选择“添加新的管理员”进入管理员信息录入界面,通过填写管理员账号、真实姓名、密码、年龄等基本个人信息并点击“注册”按钮添加新的管理员。各管理员基本信息的填写具有格式规范,如管理员账号需由4至10位字母或数字组成,每个管理员账号不能重复,密码需由6至16位字母或数字组成,且必须与确认密码文本框中的内容一致等,此外各基本信息不能为空,否则无法添加成功。
学生信息管理
(1) 添加学生
在“学生信息管理”下拉列表中选择“添加学生”进入学生信息录入页面,通过在相应的文本框、下拉列表及单选按钮中填写或选择相应的学生姓名、密码、班级、性别、关联手机号、出生年月日、评论等学生基本个人信息并点击“提交”按钮添加新的学生。各基本信息的填写同样具有相应的格式规范,否则无法添加成功。
(2) 查询学生
在查询学生信息页面可以获取所有学生的学号(由学生信息录入数据库的时间顺序自动生成)、姓名、性别、班级等学生基本个人信息,可以通过学生列表中的“操作”框进行相应的删除及修改操作。此外本页面设置按条件查询学生信息功能,用户可以通过输入学号、姓名、性别、班级等学生基本个人信息查询指定学生基本信息从而进行相关删除和修改操作。学生的个人信息存储在t_student表中。
课程信息管理
(1) 添加课程
在“课程信息管理”下拉列表中选择“添加课程”进入课程信息录入页面通过添加课程名称、课程学分、上课时间、上课地点等基本课程信息并点击“保存”按钮添加新的课程。各基本信息的填写须遵循相应的格式规范,否则无法添加成功。
(2) 查询课程
在查询课程页面可以获取所有课程的课程编号(由课程信息录入数据库的时间顺序自动生成)、课程名称、课程学分、上课时间、任课教师的等基本课程信息,可以通过课程列表中的“操作”框进行删除课程操作。此外本页设有按条件查询课程信息功能,通过选择课程名称、任课教师两个基本课程信息可以获取符合条件的课程并进行相应的删除操作。课程基本信息存储在t_course表中。
教师信息管理
(1) 添加教师
在“教师信息管理”下拉列表中选择“添加教师”进入教师信息录入界面,通过填写教师姓名、教师密码、联系方式、入职时间、简介等教师基本信息并点击“提交”按钮添加新的教师信息。各教师基本信息的填写需要遵循相应的格式规范且不能为空,否则无法添加成功。
(2) 查询教师
在教师信息查询页面可以获取所有教师的教师编号(由教师信息录入数据库的时间顺序自动生成)、教师姓名、密码、联系方式、雇佣时间等教师基本信息,可以通过教师列表中的“操作”框进行删除及修改教师信息操作。教师的个人信息存储在t_teacher表中。
输入 |
处理 |
输出 |
管理员信息查询请求 |
在数据库中匹配相应的管理员信息 |
当前登陆用户的管理员信息 |
添加新的管理员请求 |
1.检查用户输入的管理员信息是否符合相应的格式规范; 2.将符合要求的管理员信息添加至对应的数据库表中 |
1.若各基本管理员信息填写格式有误,则在对应的文本框或下拉列表后提示相关错误信息; 2.若各基本管理员信息填写正确,点击“注册”按钮后跳转至addright.jsp,提示添加成功 |
添加学生请求 |
1.检查用户输入的学生信息是否符合相应的格式规范; 2.将符合要求的学生信息添加至对应的数据库表中 |
1.若各基本学生信息填写格式有误,则在对应的文本框或下拉列表后提示相关错误信息; 2.若各基本学生信息填写正确,点击“提交”按钮后跳转至addright.jsp,提示添加成功 |
查询所有学生信息请求 |
在数据库中查找所有的学生信息记录 |
所有学生信息 |
按条件查询学生信息请求 |
根据用户输入的条件,在数据库中匹配符合条件信息的学生信息记录 |
符合条件的学生信息 |
删除学生信息请求 |
在对应的数据库表中删除相应的学生信息记录 |
更新学生信息界面,去除删除的学生信息 |
修改学生信息请求 |
在数据库中修改相应的学生信息记录 |
更新学生信息界面,显示修改后的学生信息 |
添加课程请求 |
1.检查用户输入的课程信息是否符合相应的格式规范; 2.将符合要求的学生信息添加至对应的数据库表中 |
1.若各基本课程信息填写格式有误,则在对应的文本框或下拉列表后提示相关错误信息; 2.若各基本课程信息填写正确,点击“保存”按钮后跳转至addright.jsp,提示添加成功 |
查询所有课程信息请求 |
在对应的数据库表中查找所有的课程信息记录 |
所有课程信息 |
按条件查询课程信息请求 |
根据用户输入的条件,在数据库中匹配符合条件信息的课程信息记录 |
符合条件的课程信息 |
删除课程信息请求 |
在对应的数据库表中删除相应的课程信息记录 |
更新课程信息界面,去除删除的课程信息 |
添加教师请求 |
1.检查用户输入的教师信息是否符合相应的格式规范; 2.将符合要求的教师信息添加至对应的数据库表中 |
1.若各基本教师信息填写格式有误,则在对应的文本框或下拉列表后提示相关错误信息; 2.若各基本教师信息填写正确,点击“提交”按钮后跳转至addright.jsp,提示添加成功 |
获取所有教师信息请求 |
在对应的数据库表中查找所有的教师信息记录 |
所有教师信息 |
删除教师信息请求 |
在对应的数据库表中删除相应的教师信息记录 |
更新教师信息界面,去除删除的教师信息 |
修改教师信息请求 |
在数据库中修改相应的教师信息记录 |
更新教师信息界面,显示修改后的教师信息 |
表4 管理员功能IPO图
3.2性能
1. 数据精确度
选课管理系统的数据主要分为以下几个数据表:t_admin, t_class, t_course, t_sc, t_student, t_tc, t_teacher.由于数据量不大,且所有数据都为项目手动创建和输入,因此数据精确,没有噪音和偏差。
在数据的类型方面,本项目的数据分为:int, varchar, date, bigint, decimal几个数据类型。所有的数据类型都赋予了符合实际应用的数据长度,数据的精确度得到了保证。本项目不涉及数据间的运算,因此数据的精确度是恒定的,不会出现损失。
数据类型 |
数据位数 |
备注:部分数据类型允许空值、部分数据类型保留两位小数。 |
int |
1-10 |
|
varchar |
2-20 |
|
date |
0 |
|
bigint |
11 |
|
decimal |
5 |
表5 数据精确度
2. 时间特性
(1) 响应时间
本项目并未连接公共的服务器,且数据量较小,总体响应时间较快。
在用户提交登录请求后,程序的响应时间最慢,约为1秒左右。在实现响应功能时响应时间较快,不足1秒。
(2) 更新处理时间
由系统的运行状态决定,大部分更新处理在1秒以内完成。
(3) 数据转换与传输时间
由于数据量较小,数据类型也较少,能够在5秒内完成数据传输。
(4) 运行时间
界面跳转、运行迅速,在3秒内可完成运行。
3. 适应性
当需求与功能发生某些变化时,该程序的基本操作、数据结构、运行环境等等基本不会发生变化,只是对系统的数据库的文件和记录进行响应的修改,就可以满足需求和功能。因此,程序的适应性较强。
3.3输入项目
1. 管理员模块
(1) 添加新的管理员
来源:登陆管理员界面,在“管理员信息管理”下拉列表中选择“添加新的管理员”进入管理员信息录入界面,有当前登陆系统的管理员用户输入。
名称 |
标识符 |
类型 |
描述 |
管理员账号 |
userid |
varchar |
4至10位用户名,由字母或数字组成,作为管理员信息的标识符,不允许重复且不能为空 |
真实姓名 |
username |
varchar |
管理员真实姓名,由2至4位汉字组成 |
密码 |
password |
varcher |
6至16位密码,由字母或数字组成,为管理员登陆选课系统的登录密码 |
年龄 |
age |
int |
长度为4,为1至99之间的整数,管理员真实年龄 |
成绩 |
score |
decimal |
管理员工作质量综合评分,长度为5,小数类型 |
入职时间 |
enterdate |
date |
管理员入职时间,具有固定的格式规范 |
简介 |
introduction |
varchar |
管理员信息简介,长度500 |
表6 添加新管理员过程中的输入
(2) 添加学生
来源:在“学生信息管理”下拉列表中选择“添加学生”进入学生信息录入页面,由当前登陆系统的管理员用户输入。
名称 |
标识符 |
类型 |
描述 |
学生编号 |
sno |
int |
长度为4,作为学生信息的标识符,不允许重复且不能为空,在录入学生信息时根据学生信息录入数据库的时间顺序自动生成 |
学生姓名 |
sname |
varchar |
长度20,由2至4位汉字组成 |
密码 |
password |
varchar |
6至16位密码,由字母或数字组成,为学生登陆选课系统所需填写的密码 |
班级 |
classno |
int |
学生班级编号,由四位数字组成 |
性别 |
sex |
varchar |
学生性别 |
关联手机号 |
phone |
bigint |
学生手机号,由11位0至9之间的整数组成 |
出生年月日 |
birthday |
date |
学生出生年月日,固定格式为XXXX-XX-XX |
评论 |
remark |
varchar |
学生在校表现综合评价,分为优秀、良好、合格、差劲四种级别 |
表7 添加学生过程中的输入
(3) 添加课程
来源:在“课程信息管理”下拉列表中选择“添加课程”进入课程信息录入页面,由当前登陆系统的管理员用户输入。
名称 |
标识符 |
类型 |
描述 |
课程编号 |
cno |
int |
长度为4,作为课程信息的标识符,不允许重复且不能为空,在录入课程信息时根据课程信息录入数据库的时间顺序自动生成 |
课程名称 |
cname |
varchar |
长度20,录入的课程名称,不允许为空 |
课程学分 |
credit |
int |
长度为1,课程对应学分,1至9之间的整数组成 |
上课时间 |
ctime |
varchar |
长度20,一般格式为周X第X节 |
上课地点 |
cplace |
varchar |
长度20,由数字、字母或汉字组成 |
表8 添加课程过程中的输入
(4) 添加教师
来源:在“教师信息管理”下拉列表中选择“添加教师”进入教师信息录入页面,由当前登陆系统的管理员用户输入。
名称 |
标识符 |
类型 |
描述 |
教师编号 |
tno |
int |
长度为4,作为教师信息的标识符,不允许重复且不能为空,在录入教师信息时根据教师信息录入数据库的时间顺序自动生成 |
教师名称 |
tname |
varchar |
2至4位汉字组成 |
教师密码 |
password |
varchar |
6至16位密码,由字母或数字组成,为教师登陆选课系统所需填写的密码 |
联系方式 |
phone |
bigint |
教师手机号,由11位0至9之间的整数组成 |
入职时间 |
hiredate |
date |
教师入职时间,具有固定的格式规范 |
简介 |
introduction |
varchar |
教师信息简介,长度500 |
表9 添加教师过程中的输入
2. 学生模块
(1) 选课
来源:登陆学生界面,在“学生功能”下拉列表中选择“选课”进入可选课程页面,可选课程列表中具有课程编号、课程名称、课程学分、上课时间、地点及任课教师等基本信息,勾选需要选择的课程并点击提交按钮可将当前登录学生用户的学生编号、选择的课程编号、任课教师编号三者建立联系,组成新的记录,存入数据库的t_sc表中。
3. 教师模块
无
3.4输出项目
1. 管理员模块
(1) 查看个人信息
登陆管理员界面,在“管理员信息管理”下拉列表中选择“查看个人信息”,系统将在数据库中查找并输出当前登陆用户基本信息,输出信息的名称、标识符、类型及描述同管理员模块输入项目中添加新的管理员中的输入信息。
(2) 查询学生
查询学生界面的输出项目分为两种,分别为输出所有学生信息及输出符合指定条件的学生信息,输出信息的名称、标识符、类型及描述同管理员模块输入项目中添加学生中的输入信息。
(3) 查询课程
查询课程界面的输出项目分为两种,分别为输出所有课程信息及输出符合指定条件的课程信息,输出信息的名称、标识符、类型及描述同管理员模块输入项目中添加课程中的输入信息。
(4) 查询教师
登陆管理员界面,在“教师信息管理”下拉列表中选择“查询教师”,系统将在数据库中查找并输出所有教师信息,输出信息的名称、标识符、类型及描述同管理员模块输入项目中添加教师中的输入信息。
2. 学生模块
(1) 查看个人信息
登陆学生界面,在“学生功能”下拉列表中选择“查看个人信息”,系统将在数据库中查找并输出当前登陆用户基本信息,输出信息的名称、标识符、类型及描述同输入项目中管理员模块添加学生中的输入信息。
(2) 查看已选课程
登陆学生界面,在“学生功能”下拉列表中选择“查看已选课程”,系统将根据t_sc表在数据库中查找并输出当前登陆用户已选课程的基本信息,输出信息的名称、标识符、类型及描述同输入项目中管理员模块的课程编号、课程名称、课程学分、上课时间、上课地点、任课教师及教师联系方式等输入信息。
3. 教师模块
(1) 查看个人信息
登陆教师界面,在“查看信息”下拉列表中选择“查看个人信息”,系统将在数据库中查找并输出当前登陆用户基本信息,输出信息的名称、标识符、类型及描述同输入项目中管理员模块的添加教师中的输入信息。
(2) 查看选课学生
登陆教师界面,在“查看已选学生”下拉列表中选择“查看选课学生”,系统将根据当前登陆用户的教师编号在数据库表t_sc中查找并输出对应的学生及课程信息,输出信息的名称、标识符、类型及描述同输入项目中管理员模块的学生编号、学生名称、课程编号、课程名称、上课时间、上课地点等输入信息。
(3) 查看任课教程
登陆教师界面,在“查看任课课程”下拉列表中选择“查看任课课程”,系统将在数据库中查找并输出当前登陆用户担任课程信息,输出信息的名称、标识符、类型及描述同输入项目中管理员模块的课程编号、课程名称、课程学分、开课时间、开课地点等输入信息。
3.5算法与程序逻辑
项目开发的总架构图如下:
图2 总架构图
1. 登录功能:
用户在login.jsp页面输入个人信息,login.jsp将用户输入的数据提交给服务器。LoginServlet.java文件对用户的输入数据进行处理,匹配用户的角色身份。如果用户输入数据正确,则重定向到index.jsp页面。index.jsp页面根据匹配到的用户身份使用frame框架分割,分别在子页面top.jsp, left.jsp, right.jsp中跳转到相对应用户身份的功能界面。
图3 登录流程图
2. 学生功能:
(1) 查询个人信息
教师在index.jsp页面的子页面left.jsp所显示的下拉列表中选择“查看个人信息”,left.jsp通过超链接跳转到queryStudent.jsp。后台程序LoginServlet.java获取学生的id,通过调用StudentDaoImpl.java从数据库中获取学生信息加入创建的student对象。LoginServlet.java将student对象通过session传递到queryTeacher.jsp,显示学生的个人信息。
图4 显示学生个人信息流程图
(1) 选课
学生在courseSelectList.jsp界面进行选课。StudentCourseTeacherDaoImpl.java连接数据库获得可以选择的课程相关信息后,将信息加入Course.java创立的course类,再通过CourseServlet.java将信息传递至courseSelectList.jsp页面,使得学生可以在jsp页面上选择自己的可选课程。学生提交选择后,将选课信息发送至CourseServlet.java,CourseServlet.java通过调用StudentCourseTeacherDaoImpl.java中的方法将选课信息添加至数据库。
在StudentCourseTeacherDaoImpl.java中累计求和计算学生所选课程的总学分,若总学分超过学分上限,则不将这部分课程添加至数据库。生成弹窗,提醒学生“所选学分超过上限”。
在StudentCourseTeacherDaoImpl.java中通过字符串匹配比较所选课程的上课时间,若上课时间存在冲突,则不将这部分课程添加至数据库。生成弹窗,提醒学生“上课时间冲突”。
首先对课程进行编码,某个课程的先行课在数值上比该课程编码多100。在StudentCourseTeacherDaoImpl.java中通过字符串匹配比较所选课程的课程编码,若未修读先行课,则不将这部分课程添加至数据库。生成弹窗,提醒学生“未修读先行课”。
图5 学生选课流程图
(2) 查看已选课程
学生在courseSelectedList.jsp中查看已经成功选择的课程。StudentCourseTeacherDaoImpl.java连接数据库获得可以已经选择的课程相关信息,Course.java将jsp页面要显示的课程相关信息整合封装,CourseServlet.java将信息传递至courseSelectedList.jsp页面,使得学生可以在jsp页面上查看自己的已经选择的课程。
(3) 取消已选课程
学生在courseSelectedList.jsp中可以取消已经成功选择的课程。courseSelectedList.jsp调用在StudentCourseTeacherDaoImpl.java中删除课程的方法。StudentCourseTeacherDaoImpl.java对数据库更新,删除学生选择的已选课程。
图6 学生删除课程流程图
3. 教师功能:
(1) 查看个人信息
教师在index.jsp页面的子页面left.jsp所显示的下拉列表中选择“查看个人信息”,left.jsp通过超链接跳转到queryTeacher.jsp。后台程序LoginServlet.java获取教师的id,通过调用TeacherDaoImpl.java从数据库中获取教师信息加入创建的teacher对象。LoginServlet.java将teacher对象通过session传递到queryTeacher.jsp,显示教师的个人信息。
图7 教师查看个人信息流程图
(2) 查看任课课程
教师在queryAssumeCourse.jsp中查看需要教授的全部的课程。TeacherServlet.java调用TeacherDaoImpl.java程序连接数据库获得需要教授的课程相关信息,将其加入Course.java创立的course类中。TeacherServlet.java课程信息整合入session,传递给queryAssumeCourse.jsp页面,使得教师可以在jsp页面上查看自己的需要教授的课程。
查看选课信息的操作同上。
图8 教师查看任课课程流程图
4. 管理员模块:
(1) 查看个人信息
管理员在index.jsp页面的子页面left.jsp所显示的下拉列表中选择“查看个人信息”,left.jsp通过超链接跳转到queryAdmin.jsp。后台程序LoginServlet.java获取管理员的账号,通过调用AdminDaoImpl.java从数据库中获取教师信息加入创建的admin对象。LoginServlet.java将admin对象通过session传递到queryAdmin.jsp,显示管理员的个人信息。
图9 管理员查看个人信息流程图
(2) 添加新的管理员、添加学生、添加课程、添加教师(以添加新的管理员为例)
管理员在addAdmin.jsp页面添加新的管理员,将表单信息传递给AdminServlet.java中的addAdmin方法处理,addAdmin方法将管理员填写的信息封装成Admin类,通过AdminDaoImpl.java中的方法将管理员信息添加至数据库。
图10 添加学生流程图
(3) 查询学生、查询课程、查询教师(以查询学生为例)
管理员可在queryAllStudent.jsp页面查询学生信息。StudentServlet.java通过调用StudentDaoImpl.java中的方法连接数据库,访问表t_student中的数据,将得到的学生信息封装成一个个Student类,并返回给StudentServlet.java。最后StudentServlet.java将信息传递给queryAllStudent.jsp页面,从而显示全部学生信息。
图11 查询学生流程图
(4) 多条件模糊查询学生信息、多条件模糊查询课程信息(以多条件模糊查询学生信息为例)
管理员可在queryAllStudent.jsp页面填写学生姓名、学号、性别、班级等信息查询学生信息,StudentServlet.java将表单信息封装成CriteriaStudent类并调用StudentDaoImpl.java中的方法getForListWithCriteriaStudent连接数据库,并获取CriteriaStudent中各个字段,根据不为空的字段信息按条件查询数据库,将符合条件的记录封装成Student类返回给StudentServlet.java。最后StudentServlet.java将信息传递给queryAllStudent.jsp页面,从而显示符合条件的学生信息。
图12 多条件模糊查询学生信息流程图
(5) 删除学生信息,课程信息、教师信息(以删除学生信息为例)
管理员在quaryAllStudent.jsp中可以删除已存在的学生信息。quaryAllStudent.jsp将对应学生学号sno传递给StudentServlet.java,StudentServlet.java调用StudentDaoImpl.java中删除学生信息的方法delete对数据库进行更新,删除学生学号sno对应的记录。
图13 删除学生信息流程图
(6) 修改学生信息,课程信息、教师信息(以修改学生信息为例)
管理员在updateStudent.jsp中可以修改已存在的学生信息。在quaryAllStudent.jsp点击修改按钮,将对应的将对应的学生学号sno传递给StudentDaoImpl.java中的findById方法处理,根据学生学号在数据库中查询对应学生记录,将得到的学生记录封装成student类并通过session传递到updateStudent.jsp,管理员在updateStudent.jsp修改学生信息,通过StudentDaoImpl.java中的update方法更新数据库的学生信息。
图14 修改学生信息流程图
3.6接口
1. 外部接口:
本项目硬件接口为键盘和鼠标,支持x86系统系列PC机、服务器、工作栈。软件接口为JDBC,程序通过调用此接口与数据库连接,对数据进行查询,删改等操作。
2. 内部接口:
本项目有主要6个内部接口,分别为管理管理员的接口、管理课程的接口、管理学生选课的接口、管理学生的接口、管理教师任课的接口、管理教师的接口。
管理管理员的接口实现查询指定的管理员、添加新管理员两个基本功能。
管理课程的接口实现添加课程、获取所有课程信息两个基本功能。
管理学生选课的接口实现增加学生选课记录、查看指定学生已选择的课程、获取当前学生的可选课程、取消某个学生的选课信息、教师查询选择其课程的学生信息。
管理学生的接口实现添加学生、查询所有学生信息、删除学生、根据学号查询学生、修改学生信息、多模糊条件查询学生等功能。
管理教师任课的接口实现查询所有老师已经分配的课程信息、取消分配给老师的课程的功能。
管理教师的接口实现添加老师、查询所有老师、根据教师编号查询或删除教师、查询教师任课信息等功能。
3.7存储分配
本项目使用的数据既有基本数据类型,又有引用数据类型class、interface、array。在各个功能模块,首先定义接口,再创建类,穿插数组来实现功能。程序主要使用内存的堆和栈来存储数据。运行时约占50-60MB的内存。
3.8限制条件
1. 对于用户权限有明显规定,用户不能实现超过权限的功能。如学生不能实现管理员的相关操作。
2. 数据库的内容都是手动输入,数据量比较小,缺少大规模模拟的准确性。
3. 未搭载公共服务器,用户只能单机运行该项目。每个用户都维护一个数据库,该用户对数据库的修改不影响其他服务器上用户的数据库。
4. 一些复杂的功能比如分时间段选课、预约退课难以实现。
3.9测试要点
测试 1:系统操作登录测试
测试 2:学生个人信息查询测试
测试 3:学生选课功能测试
测试 4:教师个人信息查询测试
测试 5:教师查询学生信息功能
测试 6:教师查询任课课程功能
测试 7:管理员个人信息查询测试
测试 8:管理员添加课程、学生、管理员以及教师功能
测试 9:管理员获取并修改课程、学生和教师信息功能