基于Jsp和MySql的学生成绩管理系统
摘 要
本次课程设计课题为学生成绩管理系统,该学生成绩管理系统主要包括前台用户界面的开发和后台数据库的开发,重点在于后台数据库的开发。要求建立起完整性强、数据一致性和数据安全性好的数据库。在前端用户界面的开发和设计则要求应用程序能提供强大的数据操纵功能,同时也要具备界面友好、使用简单方便等特点。之后需要将数据通过界面操作输入到系统的数据库里面。
本系统主要运用MySQL为后台数据库,web作为前台技术,以eclipse为开发工具,系统实现了老师管理、学生管理、班级管理、课程管理、学生成绩报表等必需的功能,做到操作简单,界面友好,运行比较稳定,可适用于大学院校大学生成绩管理。
关键词 :学生成绩管理 ,java EE,MySQL数据库 ,eclipse
Abstract
This course design topic for the student achievement management system, the student achievement management system mainly includes the development of the foreground user interface and the backstage database, the emphasis is on the development of the background database. It is required to establish a database with strong integrity, data consistency and data security. In the front-end user interface development and design requires that the application program can provide powerful data manipulation function, and also has the characteristics of friendly interface, simple and convenient use. After that, we need to input the data into the database of the system through the interface operation.
This system mainly uses MySQL as the background database, web as the foreground technology and eclipse as the development tool. The system realizes the necessary functions such as teacher management, student management, class management, course management, student score report and so on. It has the advantages of simple operation, friendly interface and stable operation, which can be applied to the management of College Students' scores.
Key words : student achievement management, Java EE, MySQL database, eclipse
第一章 绪论
1.1 研究的背景及意义
随着教育事业的不断发展, 学校的规模不断扩大, 学生数量及其信息量的急剧增加, 有关学生的各种信息处理也随之展开。学生成绩管理信息系统应运而生了,它可用来管理学生信息与提高系统管理工作的效率。学生成绩管理系统把 eclipse(前台开发)与 MYSQL(后台管理)有机地结合,完成学生信息的规范管理、科学统计和快速查询,从而可大大减少该管理上的工作量。
数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据库存储的效率, 保证数据的完整性和一致性。同时,合理的数据结构也将有利于程序的顺利实现。
1.2 系统目标
该系统主要建立一个基于B/S模式的实验室信息管理系统,用户和管理员不需要下载客户端就可以通过浏览器访问学生管理系统,快捷方便,从网页获取当前的学生信息,及时的更新信息,修改信息,保证信息的正确性和时效性,从而更好、更快捷、更便利的管理学 生信息,实现学生信息的直观可视化和及时可靠化,本系统主要针对与系统相关的两类用 户实现信息的管理:
-
对于管理员 :可以登陆到管理员页面,可以方便的进行班级信息管理、成绩信息管理、用户管理和系统管理
-
对于教师 :教师可以通过登录进入普通用户界面以后进行班级信息管理、成绩信息管理和系统管理,但是无法修改其他的用户的信息
-
对于学生 :学生可以通过登录进入普通用户界面以后进行班级信息查询、成绩信息查询
第二章 需求分析
2.1功能需求分析
本课题为学校成绩管理系统,目的在于可以让教师更方便、快捷的增添、删除、修改学生的相关信息,让学生能够更加方便的查询自己的选课及课程成绩情况,并且支持管理员的后台信息管理。
-
用户添加功能 :可以在本系统中添加管理员、教师、学生等不同权限级别的用户
-
用户登录功能 :实现不同权限级别用户的登录
-
后台管理 :实现学生信息管理、教师信息管理、课程信息管理、年级信息管理、班级信息管理等功能
-
成绩管理 :实现成绩录入、成绩统计、报表操作等功能
-
数据库管理 :实现MySQL数据库的初始化操作、数据库备份操作、数据库恢复等功能
根据需求分析得出学生成绩管理系统功能结构图。如图2.1-1所示:
2.2 技术应用
2.2.1 MySQL技术的应用
MySQL 是一种快速易用的 RDBMS,很多企业(不分规模大小)都在使用它来构建自己的数据库。MySQL 由一家瑞典公司 MySQL AB 开发、运营并予以支持。它之所以非常流行,原因在于具备以下这些优点:
-
基于开源许可发布,无需付费即可使用
-
自身的功能非常强大,足以匹敌绝大多数功能强大但却价格昂贵的数据库软件
-
使用业内所熟悉的标准SQL数据库语言
-
可运行于多个操作系统,支持多种语言,包括 PHP、PERL、C、C++ 及 Java 等语言
-
非常迅速,即使面对大型数据集也毫无滞涩
-
非常适用于 PHP 这种 Web 开发者最喜欢使用的语言
-
支持大型数据库,最高可在一个表中容纳 5千多万行。每张表的默认文件大小限制为 4GB,不过如果操作系统支持,你可以将其理论限制增加到 800 万 TB
-
可以自定义。开源 GPL 许可保证了程序员可以自由修改 MySQL,以便适应各自特殊的开发环境
2.2 可行性分析
2.2.1 技术可行性
本系统是以Java EE为基础并结合MySQL语言进行开发的一款学生成绩管理系统。
在Java EE开发方面,小组成员已经有一定的Java EE基础,已经熟练地掌握了web界面创建、easy ui 的使用。
在数据库方面,小组成员使用MySQL关系型数据库来实现学生成绩管理系统中的各种数据的增、删、改、查等操作,严谨的使用MySQL的各种关系型语句并且与web界面相结合。
2.2.2 操作可行性
本学生成绩管理系统采用Java-EE技术实现了浏览器下的GUI界面。小组通过协作共同完成了GUI界面的规划,以及管理员、教师端、学生端等各种不同权限级用户的操作,使得任何用户都可以方便的在WEB界面下通过点击所需要的相关功能来实现相应权限所对应的各种操作。
2.2.3 社会效益可行性
本系统的设计完全基于免费、开源。我们旨在让该系统能够真正的应用到学校对学生成绩的管理当中,任何用户都可以免费的下载、使用并且可以参考、修改本系统的源代码,增加所需要的功能。
2.3 系统分析
本课题为实现更加实用的学生成绩管理系统,对此系统做了详细的系统分析。包括系统的可行性分析和系统功能模块分析等。
2.3.1 软件体系结构
学生成绩管理系统是对学生成绩信息的管理和维护,是以数据为中心的体系结构,依靠数据联通各个部分,使之协调工作。
体系结构示意图
数据流图
为了提高系统安全性,增加了用户身份验证环节。根据该系统的数据关系,整理出了图2.3.1-2所示的数据流图。本数据流图采用了事务分析的方法。
学生成绩管理系统功能思维导图
从软件的整体布局考虑增加了系统初始化模块和菜单显示模块,用以完成系统运行环境的搭建,图3.1-3是对图3.1-2的数据流图进行分析和分解得到的功能思维导图。
2.4 老师模块分析
2.4.1 模块结构
由同组成员根据功能和数据流图可以得出教师服务子系统的软件结构图,如图2.4.1所示。
2.5 学生模块分析
2.5.1 模块结构
由同组成员根据功能和数据流图可以得出学生服务子系统的软件结构图,如图2.5.1所示。
2.6 报表输出模块分析
2.6.1 功能描述
基于HTTP servlet和DAO 方法实现了报表输出功能。可以通过选择某一年级的某一个班级,打印出该班级从入学到现在的所有学生的课程成绩到一个EXCEL表中。
2.6.2 具体实现代码
java
public void exportScore(HttpServletResponse response, Exam exam) {
//获取需要导出的数据
List<Map<String, Object>> list = dao.getScoreList(exam);
//获取考试信息
Exam em = (Exam) dao.getObject(Exam.class, "SELECT name, time FROM exam WHERE id=?", new Object[]{exam.getId()});
//设置文件名
String fileName = em.getName()+".xls";
//定义输出类型
response.setContentType("application/msexcel;charset=utf-8");
//设定输出文件头
try {
response.setHeader("Content-Disposition", "attachment; filename="+URLEncoder.encode(fileName, "UTF-8"));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
//获取导出的课程
List<Object> courseList = getColumn(exam);
//表头长度
int len = 2 + courseList.size();
if(exam.getType() == Exam.EXAM_GRADE_TYPE){
len += 1;
}
//设置excel的列名
String[] headers = new String[len];
headers[0] = "姓名";
headers[1] = "学号";
int index = 2;
for(Object obj : courseList){
Course course = (Course) obj;
headers[index++] = course.getName();
}
if(exam.getType() == Exam.EXAM_GRADE_TYPE){
headers[len-1] = "总分";
}
ExcelTool et = new ExcelTool<>();
//导出
try {
et.exportMapExcel(headers, list, response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
第三章 数据库设计
3.1 概念结构设计
3.1.1 设计思路
概念模型是数据库系统的核心和基础。概念设计阶段的主要任务和目标是根据需求分析的结果找出所有数据实体,画出对应的E-R图。对于较复杂的系统,通常首先要根据各个用户对数据和使用权限的不同画出各自对应的局部E-R图,然后把各个局部E-R综合起来形成系统的整体ER图。所以就针对本系统来说,根据实际业务,首先抽象班级信息管理、成绩管理、用户等实体,再根据业务的需求分析出各个实体所拥有的属性,并以此设计出系统的概念模型。
管理员用户E-R图
教师教授科目及班级E-R图
教师学生E-R图
年级科目E-R图
学生成绩E-R图
学生科目E-R图
全局E-R图
UML E-R图
3.2 逻辑结构设计
3.2.1 设计思路
逻辑设计阶段的主要任务和目标是根据概念设计的结果设计出数据库的逻辑结构模式,包括全局模式和各个外模式。对于本系统来说,管理员在使用本系统时,用账号和密码进行登陆操作,进入系统主页面。本系统包括班级信息管理、成绩信息管理、用户管理和系统管理,普通用户不具有用户管理这个模块。管理员可以通过系统对每个大模块下的小模块进行增、改、删、查等操作。
3.3 物理结构设计
3.3.1 存取方式
数据库结构的物理设计是指对一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,主要是设计表结构。系统数据库设计中,实体对应于表,实体的属性对应于表的列,实体之间的关系成为表的约束。基本上是将逻辑设计中的实体转换成物理设计中的表,而本系统也是如此是通过关系表的形式存取数据。
3.3.2 存储结构
数据库名 :ssms
序号 | 表名 | 标签说明 | 功能说明 |
---|---|---|---|
1 | clazz | 班级表 | 存储班级信息 |
2 | clazz_course_teacher | 班级科目老师表 | 存储老师授课班级及科目的信息 |
3 | course | 科目表 | 存储科目信息 |
4 | escore | 成绩表 | 存储成绩信息 |
5 | exam | 考试表 | 存储考试信息 |
6 | grade | 年级表 | 存储年级信息 |
7 | grade_course | 年级科目表 | 存储年级学习科目信息 |
8 | student | 学生表 | 存储学生信息 |
9 | system | 系统表 | 存储学生信息 |
10 | teacher | 老师表 | 存储老师信息 |
11 | user | 用户表 | 存储用户信息 |
表名:clazz
名 | 类型 | 长度 | 小数点 | 允许空值 |
---|---|---|---|---|
id | int | 11 | 0 | 否 |
name | varchar | 50 | 0 | 是 |
gradeid | int | 11 | 0 | 是 |
表名:clazz_course_teacher
名 | 类型 | 长度 | 小数点 | 允许空值 |
---|---|---|---|---|
id | int | 11 | 0 | 否 |
clazzid | int | 11 | 0 | 是 |
gradeid | int | 11 | 0 | 是 |
courseid | int | 11 | 0 | 是 |
teacherid | int | 11 | 0 | 是 |
表名:course
名 | 类型 | 长度 | 小数点 | 允许空值 |
---|---|---|---|---|
id | int | 11 | 0 | 否 |
name | varchar | 50 | 0 | 是 |
表名:escore
名 | 类型 | 长度 | 小数点 | 允许空值 |
---|---|---|---|---|
id | int | 11 | 0 | 否 |
examid | int | 11 | 0 | 是 |
clazzid | int | 11 | 0 | 是 |
studentid | int | 11 | 0 | 是 |
gradeid | int | 11 | 0 | 是 |
courseid | int | 11 | 0 | 是 |
score | int | 5 | 0 | 是 |
表名:exam
名 | 类型 | 长度 | 小数点 | 允许空值 |
---|---|---|---|---|
id | int | 11 | 0 | 否 |
name | varchar | 50 | 0 | 是 |
time | date | 0 | 0 | 是 |
remark | varchar | 200 | 0 | 是 |
type | tinyint | 2 | 0 | 是 |
gradeid | int | 11 | 0 | 是 |
clazzid | int | 11 | 0 | 是 |
courseid | int | 11 | 0 | 是 |
表名:grade
名 | 类型 | 长度 | 小数点 | 允许空值 |
---|---|---|---|---|
id | int | 11 | 0 | 否 |
name | varchar | 50 | 0 | 是 |
表名:grade_course
名 | 类型 | 长度 | 小数点 | 允许空值 |
---|---|---|---|---|
id | int | 11 | 0 | 否 |
gradeid | int | 11 | 0 | 是 |
courseid | int | 11 | 0 | 是 |
表名:student
名 | 类型 | 长度 | 小数点 | 允许空值 |
---|---|---|---|---|
id | int | 11 | 0 | 否 |
number | varchar | 20 | 0 | 是 |
name | varchar | 20 | 0 | 是 |
sex | varchar | 4 | 0 | 是 |
phone | varchar | 20 | 0 | 是 |
varchar | 20 | 0 | 是 | |
photo | mediumblob | 0 | 0 | 是 |
clazzid | int | 11 | 0 | 是 |
gradeid | int | 11 | 0 | 是 |
表名:system
名 | 类型 | 长度 | 小数点 | 允许空值 |
---|---|---|---|---|
id | int | 11 | 0 | 否 |
schoolName | varchar | 100 | 0 | 是 |
forbidTeacher | tinyint | 2 | 0 | 是 |
forbidStudent | tinyint | 2 | 0 | 是 |
noticeTeacher | varchar | 500 | 0 | 是 |
noticeStudent | varchar | 500 | 0 | 是 |
表名:teacher
名 | 类型 | 长度 | 小数点 | 允许空值 |
---|---|---|---|---|
id | int | 11 | 0 | 否 |
number | varchar | 20 | 0 | 是 |
name | varchar | 20 | 0 | 是 |
sex | varchar | 4 | 0 | 是 |
phone | varchar | 20 | 0 | 是 |
varchar | 20 | 0 | 是 | |
photo | mediumblob | 0 | 0 | 是 |
表名:user
名 | 类型 | 长度 | 小数点 | 允许空值 |
---|---|---|---|---|
id | int | 11 | 0 | 否 |
account | varchar | 30 | 0 | 是 |
password | varchar | 30 | 0 | 是 |
name | varchar | 20 | 0 | 是 |
type | tinyint | 1 | 0 | 是 |
3.4 数据库实施
3.4.1 数据库连接
JDBC是一种用于执行SQL语句的JavaAPI,可为多种数据库提供连接接口。JDBC要先将驱动包mysql-connector-java-5.1.7-bin.jar加入项目。之后利用连接池进行前后端连接。
JDBC连接数据库步骤:
-
第一步 :加载驱动
-
第二步 :连接数据库
-
第三步 :使用语句操作数据库
-
第四步 :关闭数据连接,释放资源
将JDBC加入eclipse项目中,利用数据库连接池进行前后端连接。
连接池代码如下:
xml
<c3p0-config>
<default-config>
<propertyname="driverClass">com.mysql.jdbc.Driver</property>
<propertyname="jdbcUrl">jdbc:mysql://localhost:3306/ssms?characterEncoding=utf-8</property>
<property name="user">root</property>
<property name="password">ftx19981014</property>
</default-config>
</c3p0-config>
3.4.2 连接数据库主要代码
java
public class MysqlTool {
private static ComboPooledDataSource dataSource = null;
private static ThreadLocal<Connection>tl=
new ThreadLocal<Connection>();
static {
dataSource = new ComboPooledDataSource();
}
public static DataSource getDataSource(){
return dataSource;
}
public static Connection getConnection(){
Connection conn = tl.get();
try {
if(conn == null){
conn = dataSource.getConnection();
}
} catch (SQLException e) {
e.printStackTrace();
}
tl.set(conn);
return conn;
}
/*** 开始事务* @throws SQLException*/
public static void startTransaction(){
Connection conn = getConnection();
try {
conn.setAutoCommit(false);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**回滚事务* @throws SQLException*/
public static void rollback(){
Connection conn = getConnection();
try {
conn.rollback();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 提交事务
* @throws SQLException
*/
public static void commit(){
Connection conn = getConnection();
try {
conn.commit();
System.out.println("数据库链接成功!");
} catch (SQLException e) {
System.out.println("数据库链接失败!");
e.printStackTrace();
}
}
/*** 关闭Connection,并移除线程中的连接
*/
public static void closeConnection(){
close(getConnection());
tl.remove();
}
public static void close(Connection conn){
try {
if(conn != null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(Statement stm){
try {
if(stm != null){
stm.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void close(ResultSet rs){
try {
if(rs != null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
第四章 系统实现与测试分析
4.1 系统开发环境
4.1.1 软件运行环境建议
-
操作系统 :Windows 7, Windows 10
-
数据库软件 :Navicat Premium: 用于专业人员管理数据库数据
-
Java环境 :Java EE
4.2 系统实现
界面设计是为了满足系统专业化标准化的需求而产生的对系统的使用界面进行美化优化规范化的设计分支。具体包括框架设计,按钮设计,面板设计,菜单设计,标签设计,图标设计,滚动条及状态栏设计等等。
4.2.1 用户登录界面设计
用户登录界面图如下:
4.2.2 管理员主界面设计
管理员主界面图如下:
4.2.3 老师主界面设计
老师主界面图如下:
4.2.4 学生主界面设计
学生主界面图如下:
4.2.5 添加用户设计
添加用户图如下:
4.2.6 修改用户界面设计
修改用户界面图如下:
4.2.7 增加年级界面设计
增加年级界面图如下:
4.2.8 添加考试界面设计
添加界面图如下:
4.2.9 登记成绩界面设计
登记成绩界面图如下:
4.2.10 查看成绩界面设计
查看成绩界面图如下:
4.2.11 导出成绩界面设计
导出成绩界面图如下:
4.3 测试设计
4.3.1 测试分析
为了发现和报告学生成绩管理系统的错误和缺陷。通过测试,确保本系统的功能、互操作性等符合软件的设计要求,满足用户的使用要求。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便对系统进行升级时进行改进。
4.3.2 用户登录测试要点
-
测试要点 :用户名和密码,以及对应用户的权限是否正常
-
测试过程 :登录系统,观察用户名和密码是否为真,验证码是否正确以及观察用户登录后的界面显示。若为真,进入系统;若为假,提示重新输入用户信息
-
测试结果 :经过实际测试,进入系统后,界面功能显示与用户权限所允许的功能相对应,说明用户登录功能一切正常
4.3.3 修改学习名称及教师学生通知和禁止登录功能测试要点
-
测试要点 :测试所有功能是否正常
-
测试过程 :输入老师学生通知,开启禁止登录功能,然后登录老师学生账号,查看是否显示正常
-
测试结果 :经过实际测试,在测试过程中老师学生通知显示正常,禁止登录功能正常
第五章 总结
在这次学生成绩管理系统数据库课程设计中,通过使用eclipse和MySQL数据库进行系统设计,前端显示采用了web技术进行布局设置和调整,数据库采用的是MySQL数据库5.1版本,并学会使用Java EE通过JDBC驱动连接MySQL数据库,数据库并搭配图形化界面软件Navicat来进行操作数据库,并与前端数据请求进行响应。
通过此次课程设计,使我更加扎实的掌握了有关数据库设计等方面的知识,也巩固了web与Java EE等方面的知识。在系统的设计过程中我们小组虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,同时也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
这次课设提高自己的动手能力并熟悉了数据库的简单操作,体验了一个系统开发的过程,加强了理论与实践结合的能力。
在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,动手实践,就没有弄不懂的知识,收获颇丰。
参考文献
[1] 李运莉.《web数据库应用系统性能优化》.人民邮电出版社,2011年
[2] 王家华.《软件工程》.东北大学出版社,2017年
[3] 魏善沛.《数据库系统概论》. 清华大学出版社,2016年
[4] 库俊国.《基于J2EE技术的Web应用体系研究及实践》.人民邮电出版社,2014年
参考文献
- 基于J2EE的永康市职业技术学校成绩管理系统设计与实现(电子科技大学·楼伟忠)
- 四川职业技术学院学生管理系统设计与开发(电子科技大学·李渊)
- 基于J2EE的学生信息管理系统(电子科技大学·钟海琴)
- 学生选课及成绩管理系统的设计与实现(华北电力大学(河北)·潘利平)
- 基于.net技术的学生成绩管理系统的开发实践(电子科技大学·王瑛)
- 基于JavaEE和Weka的学生成绩管理系统的分析与实现(沈阳师范大学·陈思蒙)
- 在线考试系统的设计与实现(吉林大学·朱雅迪)
- 基于B/S结构的学生成绩管理系统的设计与实现(吉林大学·印明阳)
- 基于JSP的学生信息管理系统的设计与开发(吉林大学·郭政辉)
- 基于Struts的hibernate的课程及成绩管理系统的设计与实现(吉林大学·李晶)
- 基于Internet的学生信息管理系统——学生成绩管理系统(电子科技大学·游应德)
- 基于JSP的学生信息管理系统的设计与开发(吉林大学·郭政辉)
- 基于SSH技术的中学学生成绩信息管理系统的设计与实现(电子科技大学·徐国华)
- 基于统计功能的某职业技术学院成绩管理系统的设计与实现(大连交通大学·尹涛)
- 课程及成绩管理系统的设计与实现(厦门大学·赵超)
本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:代码小屋 ,原文地址:https://bishedaima.com/yuanma/35363.html