基于Web的学生成绩管理系统

源码及论文下载:
http://www.byamd.xyz/tag/java/

摘 要

本次课程设计课题为学生成绩管理系统,该学生成绩管理系统主要包括前台用户界面的开发和后台数据库的开发,重点在于后台数据库的开发。要求建立起完整性强、数据一致性和数据安全性好的数据库。在前端用户界面的开发和设计则要求应用程序能提供强大的数据操纵功能,同时也要具备界面友好、使用简单方便等特点。之后需要将数据通过界面操作输入到系统的数据库里面。

本系统主要运用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研究的背景及意义

1.1.1选题的背景

随着教育事业的不断发展, 学校的规模不断扩大, 学生数量及其信息量的急剧增加, 有关学生的各种信息处理也随之展开。学生成绩管理信息系统应运而生了,它可用来管理学生信息与提高系统管理工作的效率。学生成绩管理系统把 eclipse(前台开发)与 MYSQL(后台管理)有机地结合,完成学生信息的规范管理、科学统计和快速查询,从而可大大减少该管理上的工作量。

数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。 合理的数据库结构设计可以提高数据库存储的效率, 保证数据的完整性和一致性。同时,合理的数据结构也将有利于程序的顺利实现。

1.2系统目标

该系统主要建立一个基于B/S模式的实验室信息管理系统,用户和管理员不需要下载客户端就可以通过浏览器访问学生管理系统,快捷方便,从网页获取当前的学生信息,及时的更新信息,修改信息,保证信息的正确性和时效性,从而更好、更快捷、更便利的管理学 生信息,实现学生信息的直观可视化和及时可靠化,本系统主要针对与系统相关的两类用 户实现信息的管理:

1.对于管理员:可以登陆到管理员页面,可以方便的进行班级信息管理、成绩信息管理、用户管理和系统管理。

2.对于教师:教师可以通过登录进入普通用户界面以后进行班级信息管理、成绩信息管理和系统管理,但是无法修改其他的用户的信息。

3.对于学生:学生可以通过登录进入普通用户界面以后进行班级信息查询、成绩信息查询。

1.3组员分工

题目 学生成绩管理系统
项目组成员 个人项目描述 自我评定
1、前台web页面搭建及页面设计2、负责通过jdbc实现前后端链接调用3、使用navicat工具对数据库具体实施
1、对学生成绩管理系统进行需求分析和具体系统功能设计2、构建思维导图、数据库表结构、视图文件,E-R图3、数据系统测试与维护4、使用navicat工具对数据库具体实施。

注:排名不分先后

**
**

第二章 需求分析

2.1功能需求分析

本课题为学校成绩管理系统,目的在于可以让教师更方便、快捷的增添、删除、修改学生的相关信息,让学生能够更加方便的查询自己的选课及课程成绩情况,并且支持管理员的后台信息管理。

(1)用户添加功能,可以在本系统中添加管理员、教师、学生等不同权限级别的用户。

(2)用户登录功能,实现不同权限级别用户的登录。

(3)后台管理,实现学生信息管理、教师信息管理、课程信息管理、年级信息管理、班级信息管理等功能。

(4)成绩管理,实现成绩录入、成绩统计、报表操作等功能。

(5)数据库管理,实现MySQL数据库的初始化操作、数据库备份操作、数据库恢复等功能。

根据需求分析得出学生成绩管理系统功能结构图。如图2.1-1所示:

图2.1-1 学生成绩管理系统功能结构图

2.2 技术应用

2.2.1 MySQL技术的应用

MySQL 是一种快速易用的 RDBMS,很多企业(不分规模大小)都在使用它来构建自己的数据库。MySQL 由一家瑞典公司 MySQL AB 开发、运营并予以支持。它之所以非常流行,原因在于具备以下这些优点:

(1)基于开源许可发布,无需付费即可使用。

(2)自身的功能非常强大,足以匹敌绝大多数功能强大但却价格昂贵的数据库软件。

(3)使用业内所熟悉的标准SQL数据库语言。

(4)可运行于多个操作系统,支持多种语言,包括 PHP、PERL、C、C++ 及 Java 等语言。

(5)非常迅速,即使面对大型数据集也毫无滞涩。

(6)非常适用于 PHP 这种 Web 开发者最喜欢使用的语言。

(7)支持大型数据库,最高可在一个表中容纳 5千多万行。每张表的默认文件大小限制为 4GB,不过如果操作系统支持,你可以将其理论限制增加到 800 万 TB。

(8)可以自定义。开源 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.1体系结构示意图

图2.3.1-1 学生成绩管理系统的体系结构示意图

2.3.1.2 数据流图

为了提高系统安全性,增加了用户身份验证环节。根据该系统的数据关系,整理出了图2.3.1-2所示的数据流图。本数据流图采用了事务分析的方法。

图2.3.1-2 学生成绩管理系统数据流图

2.3.1.3 学生成绩管理系统功能思维导图

从软件的整体布局考虑增加了系统初始化模块和菜单显示模块,用以完成系统运行环境的搭建,图3.1-3是对图3.1-2的数据流图进行分析和分解得到的功能思维导图。

基于Web的学生成绩管理系统_第1张图片

图2.3.1-3 学生成绩管理系统功能思维导图

2.4老师模块分析

2.4.1模块结构

由同组成员根据功能和数据流图可以得出教师服务子系统的软件结构图,如图2.4.1所示

图2.4.1教师服务系统软件结构图

2.5学生模块分析

2.5.1模块结构

由同组成员根据功能和数据流图可以得出学生服务子系统的软件结构图,如图2.5.1所示

图2.5.1学生服务系统软件结构图

2.6报表输出模块分析

2.6.1功能描述

基于HTTP servlet和DAO 方法实现了报表输出功能。可以通过选择某一年级的某一个班级,打印出该班级从入学到现在的所有学生的课程成绩到一个EXCEL表中。

2.6.2具体实现代码

public void exportScore(HttpServletResponse response, Exam exam) {

​ //获取需要导出的数据

​ List> 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 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图。所以就针对本系统来说,根据实际业务,首先抽象班级信息管理、成绩管理、用户等实体,再根据业务的需求分析出各个实体所拥有的属性,并以此设计出系统的概念模型。

3.1.1.1 管理员用户E-R图

图 3.1.1-1管理员用户E-R图

3.1.1.2 教师教授科目及班级E-R图

图3.1.1-2教师科目班级E-R图

3.1.1.3 教师学生E-R图

图3.1.1-3教师学生E-R图

3.1.1.4 年级科目E-R图

图3.1.1-4年级科目E-R图

3.1.1.5 学生成绩E-R图

图3.1.1-5学生成绩E-R图

3.1.1.6 学生科目E-R图

图3.1.1-6学生科目E-R图

3.1.1.7 全局E-R图

图3.1.1-7全局E-R图

3.1.1.8 UML E-R图

基于Web的学生成绩管理系统_第2张图片

图3.1.1-8UML 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
qq 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
qq 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项目中,利用数据库连接池进行前后端连接。

基于Web的学生成绩管理系统_第3张图片

图3.4.1mysql-connector-java-5.1.7-bin.jar

连接池代码如下:

com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/ssms?characterEncoding=utf-8

​ root

​ ftx19981014

3.4.2连接数据库主要代码

public class MysqlTool {

​ private static ComboPooledDataSource dataSource = null;

​ private static ThreadLocaltl=

new ThreadLocal();

​ 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软件运行环境建议

(1)操作系统:Windows 7, Windows 10,

(2)数据库软件:Navicat Premium: 用于专业人员管理数据库数据

(3)Java环境:Java EE

4.2系统实现

学生成绩管理系统界面设计

界面设计是为了满足系统专业化标准化的需求而产生的对系统的使用界面进行美化优化规范化的设计分支。具体包括框架设计,按钮设计,面板设计,菜单设计,标签设计,图标设计,滚动条及状态栏设计等等。

4.2.1用户登录界面设计

用户登录界面图如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CzG8j8Ui-1612610048274)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5Cwps16-1612606992289.png)]基于Web的学生成绩管理系统_第4张图片

图4.2-1用户登录界面设计图

4.2.2管理员主界面设计

管理员主界面图如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2800vVt8-1612610048282)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5Cwps18.png)]基于Web的学生成绩管理系统_第5张图片

图4.2-2管理员主界面设计图

4.2.3老师主界面设计

老师主界面图如下:

img基于Web的学生成绩管理系统_第6张图片

图4.2-3老师主界面设计图

4.2.4学生主界面设计

学生主界面图如下:

img基于Web的学生成绩管理系统_第7张图片

图4.2-4学生主界面设计图

4.2.5添加用户设计

添加用户图如下:

图4.2-5添加用户设计图

4.2.6修改用户界面设计

修改用户界面图如下:

图4.2-6修改用户界面设计图

4.2.7增加年级界面设计

增加年级界面图如下:

图4.2-7增加年级界面设计图

4.2.8添加考试界面设计

添加界面图如下:

图4.2-8添加考试界面设计图

4.2.9登记成绩界面设计

登记成绩界面图如下:

图4.2-9登记成绩界面设计图

4.2.10查看成绩界面设计

查看成绩界面图如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W9PFQUPb-1612610048315)(E:%5Ccode%5C8%E5%9B%BE%E7%89%87%5Cimages%5Cwps29-1612606992290.png)]

图4.2-10查看成绩界面设计图

4.2.11导出成绩界面设计

导出成绩界面图如下:

基于Web的学生成绩管理系统_第8张图片

图4.2-11导出成绩界面设计图

4.3测试设计

4.3.1测试分析

为了发现和报告学生成绩管理系统的错误和缺陷。通过测试,确保本系统的功能、互操作性等符合软件的设计要求,满足用户的使用要求。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便对系统进行升级时进行改进。

4.3.2用户登录测试要点

(1)测试要点:用户名和密码,以及对应用户的权限是否正常。

(2)测试过程:登录系统,观察用户名和密码是否为真,验证码是否正确以及观察用户登录后的界面显示。若为真,进入系统;若为假,提示重新输入用户信息。

(3)测试结果:经过实际测试,进入系统后,界面功能显示与用户权限所允许的功能相对应,说明用户登录功能一切正常。

4.3.3修改学习名称及教师学生通知和禁止登录功能测试要点

(1)测试要点:测试所有功能是否正常。

(2)测试过程:输入老师学生通知,开启禁止登录功能,然后登录老师学生账号,查看是否显示正常。

(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年

你可能感兴趣的:(java毕设资料,java基础,数据库,java)