基于Java(Jsp+Sevlet)+MySql 实现的(Web)成绩管理系统

1 概述

1.1 开发背景

随着学生数量的日渐增多,学生教务系统的数据量也不断增加,这无疑大大增加了教务系统的负担。如果能把负责学生成绩管理的模块独立出来形成一个独立的系统,便可以有效降低教务系统的数据量,不仅可以方便管理员对于所有学生的信息进行系统的管理,而且便于教师对学生成绩进行查询和修改,学生也可以查询自己的成绩。一个好的学生管理系统,正好可以满足当前的市场需求,提高工作效率,并取得一定的经济效益。本系统的创建就是为了减少人力、物力、时间的耗费。这些优点能够极大地提高学生成绩管理的效率。因此,开发一套合适的、兼容性好的系统是很有必要的。

1.2 开发目标

在规定的时间和经济范围内,交付一个基于JSP/SEVLET的成绩管理系统,该系统具备一下要求:

  1. 有良好的前端展示,符合商业化的要求,同时便于用户操作,可以轻松上手;
  2. 具有可靠性,系统不同角色分配的权限合理,不泄露用户信息;
  3. 可以批量录入信息,实现对信息的增删改查;
  4. 反应迅速,能及时给出反馈;

1.3 设计原则

为了保持良好的用户体验,设计系统的时候需要遵循以下通用原则:

1、设计适当的表示导引。在用户浏览网站的时候,随时告知访问者他们身处何处,想要找的东西在哪里,如何找到想要找的东西。

2、设定期望并做出反馈。当用户提交表单,点击链接的时候,成功与否都需要网页及时给出反馈,保证用户不会因为久久得不到回复而对网站不信任。

3、设计要基于人机工程学。无论是字体、字号、字色、字间距的选择还是按钮的放置位置,按钮的数量等,这些都要考虑到用户的身体,即手、目、耳等。

4、考虑标准,保持一致。设计网站切不可因为如何好看如何设计,一定要保持前后风格一致。

5、考虑辨识。用户不喜记忆,所以网站设计一定要具有记忆,访问前后不能靠用户去辨识记忆。

6、考虑用户水平不一样。我们遵循的原则是做最简单的网站,然后再在其基础上添加特殊的功能和属性。

2 关键技术分析

2.1 前端

2.1.1 前端界面优化

为了保证良好的用户体验,我们以HTML语言与CSS样式表为基础制作页面,js进行页面与组件间的逻辑实现。在界面美化上,我们保证所有页面风格一致,并具有自适应性的功能,可以随着分辨率的大小和设备的大小而变化,同时,也注意了不同代码在浏览器兼容性上的问题,所以在相应CSS文件里添加了不同浏览器所需的备用样式。在配色和布局上参考了一些优秀网站的设计,保证良好的交互性。

2.1.2 前端技术

前端主要使用html、css、js等基本技术,此外还用到bootstrap、jQuery、jstl等技术使得前端交互性增强。页面布局多采用相对布局,放大或缩小页面,页面内容分仍保持相对位置。

Frame框架:用于实现页面的局部加载和刷新。

jQuery技术:为了可以直接在某条记录上动态修改数据(即直接在当前页面修改而不是重新打开一个修改数据的页面),采用了jQuery技术,实现了在记录原位置直接修改数据。

Echarts:为了使数据可视化,我们采用了百度的Echart图表技术http://echarts.baidu.com/,将数据如学生的成绩、课程的及格率等以条形统计图、动态水球图的形式展现,使得教师可以方便直观地分析学生的成绩情况(各分数段的人数,及格率等)。

Ajax:AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。AJAX 通过在后台与服务器进行少量数据交换,使网页实现异步更新。这意味着可以在不重载整个页面的情况下,对网页的某些部分进行更新。传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个页面。

JSON: JavaScript Object Notation(JavaScript 对象表示法)

JSON 是存储和交换文本信息的语法。类似 XML,比 XML 更小、更快,更易解析,是一种轻量级的数据传输方式。

2.2 后端

2.2.1 数据访问方式(DAO)

DAO (DataAccessObjects 数据存取对象)是指位于业务逻辑和持久化数据之间实现对持久化数据的访问。通俗来讲,就是将数据库操作都封装起来。

DAO 模式提供了访问关系型数据库系统所需操作的接口,将数据访问和业务逻辑分离对上层提供面向对象的数据访问接口。

DAO 模式的优势就在于它实现了两次隔离。

1、隔离了数据访问代码和业务逻辑代码。业务逻辑代码直接调用DAO方法即可,完全感觉不到数据库表的存在。分工明确,数据访问层代码变化不影响业务逻辑代码,这符合单一职能原则,降低了藕合性,提高了可复用性。

2、隔离了不同数据库实现。采用面向接口编程,如果底层数据库变化,如由 MySQL 变成 Oracle 只要增加 DAO 接口的新实现类即可,原有 MySQL 实现不用修改。这符合"开-闭"原则。该原则降低了代码的藕合性,提高了代码扩展性和系统的可移植性。

2.2.2 后端逻辑处理

使用了三层架构(web层、service层和dao层)

图2-1 项目结构图

Controller层:(也叫web层)Controller层负责具体的业务模块流程的控制,在此层里面要调用Serice层的接口来控制业务流程。

Service层:Service层主要负责业务模块的逻辑应用设计。调用DAO层存取数据。

DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后定义此接口的实现类,然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰。

图2-2 处理请求的业务逻辑流程图

该三层架构的优点:

1、开发人员可以只关注整个结构中的其中某一层;

2、可以很容易的用新的实现来替换原有层次的实现;

3、可以降低层与层之间的依赖;

4、有利于标准化;

5、利于各层逻辑的复用。

6、结构更加的明确

7、在后期维护的时候,极大地降低了维护成本和维护时间

2.3 数据库

2.3.1 数据库的连接

该系统采用mysql数据库,连接数据库用到jdbc数据库驱动。当系统比较庞大时,可以使用数据库连接池如c3p0、DBCP等。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

2.3.2 数据库的设计

该系统使用关系型数据库,建表时采用关系模型的数据结构,每个实体对应一张表,联系若有属性,也可对应一张表,如学生实体对应一张学生表,课程对应一张课程表,课程和学生之间是学习的关系,他们会产生一个属性-分数,因此也应该有一张学生课程表。

设置表的主键、外键以及表之间的级联关系。如:成绩表中的学生必须是学生表中存在的学生,当删除学生表中某一个学生时,若两张表是级联删除关系时,成绩表中该学生的信息自动删除。更新时也一样。这样避免了后端逻辑实现的复杂性。

2.4 服务器

使用Tomcat服务器。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

2.5 文件上传

2.5.1 图片上传

用到的工具:

对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件。这个common-fileupload上传组件的jar包可以去apache官网上面下载common-fileupload是依赖于common-io这个包的。

图片的储存(存取图片的相对路径而不是图片):

如果直接将图片以二进制流的形式存到数据库中,既浪费时间有浪费空间,因而我们采用的方式是将图片的相对路径存到数据库中,这样极大地提高了访问数据库的速度,同时提高了数据库的空间利用率。

2.5.2 批量导入数据(上传读取Excel)

用到的工具:

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

JXL只能对Excel进行操作,属于比较老的框架,它只支持到Excel 95-2000的版本。现在已经停止更新和维护。
POI是apache的项目,可对微软的Word,Excel,ppt进行操作,包括office2003和2007,Excl2003和2007。poi现在一直有更新。所以现在主流使用POI。

2.6 安全机制

2.6.1 登录验证

该系统有学生、教师和管理员三种不同身份的用户,系统分别为设置权限等级,当某用户登录时,系统会检索他们的等级,让他们访问对应的操作页面,学生进入学生系统模块,教师进入教师系统模块,管理员进入管理员系统模块。

2.6.1 Filter技术

用户可以通过url访问系统资源,对于一些敏感保密的资源需要有保护机制,因此采用filter技术。

Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

同时,为了防止页面出现乱码,该系统中添加了编码过滤器。

在该系统中,使用了过滤器,防止用户直接通过URL地址栏直接进入该系统,实现原理是,在过滤器中添加一个判断,判断用户的身份信息是否在session中,只有通过登录身份验证正确时,用户的身份才会添加到session,否则session中无该用户信息,过滤器将阻止非法访问。

2.7 Junit4单元测试

开发过程中采用Junit4单元测试技术,分别测试各个子功能模块的功能。

在项目开发中,主要来测试DAO层(数据持久层)的数据的查询增删改功能,确保和数据库实现正确的数据存取功能。

public class UserDaoTest {
   
   
    @Test
    public void selectUser() throws Exception {
   
   
        UserDao userDao = DaoFactory.getUserDaoInstance();
        System.out.println(userDao.selectUser("123", "124"));
    }

    @Test
    public void insertUser() throws Exception {
   
   
        User user = new User("41612197", "123", "3");
        UserDao userDao = DaoFactory.getUserDaoInstance();
        userDao.insertUser(user);
    }

3 系统需求分析

3.1 可行性分析

本节主要从经济可行性、技术可行性、操作可行性和法律可行性进行分析。

3.1.1 经济可行性

从经济可行性分析来讲,环境拥有建立该系统所需的网络设备及软件,具备了开发Web平台系统的基本条件;系统投资成本低,回报率高;人力资源方面消耗量少;而且,系统的生存周期短、系统工作负荷量不是很大、处理速度要求快。无论从横向还是纵向相比,本系统都是可以实行的。在线购物系统的设计和开发不仅是电子商务领域的重要组成部分,也是管理信息系统应用的主要方向之一。

经以上分析,该系统可行。

3.1.2 技术可行性

从技术可行性来讲,本系统是基于jsp的Web开发的,jsp 是在前段和后端分离下产生的框架技术,已经被大家公认为经典的框架。而且,Java 语言技术也具有卓越的通用性、高效性、平台移植性和安全性,比较适合这个系统的开发和应用。

在软件方面,考虑到系统实施的可行性,选择了现今比较流行的开发工具intelijidea进行开发管理平台的设计,使用MySQL数据库存储数据。

在硬件方面,系统只需要一台内存4G,硬盘在500.0G的品牌机或兼容机。

经以上分析,该系统可行。

3.1.3 操作可行性

本系统界面友好、整洁,操作简易,并配有相关说明,学习方便,管理人员对开发此应用系统的态度确定。

经过以上分析,该系统可行。

3.1.4 法律可行性

考虑到使用到的软件产品的版权问题,软件服务器所使用的软件,应该尽量使用正版软件。如果正版软件价格高得难以接受,可以采用一些能满足系统运行的免费软件来替代。开发阶段可以使用试用版软件来替代,但正式发布时建议操作系统采用正版软件。

该平台是作为课程设计,与商业无关,又因为是自主开发设计,因此不会构成侵权,在法律上可行。

3.2 功能模块需求分析

本节主要通过系统的主功能模块划分以及系统用例图来分析系统需求。

3.2.1 主要功能模块划分

学生成绩管理系统分为三个模块:学生模块、教师模块和管理员模块。

学生模块的功能:个人信息的查询,部分信息的修改,本人成绩的查询

教师模块的功能:个人信息的查询,成绩的录入、修改、查看和分析

管理员模块的功能:对学生、教师、班级、课程的增删改查,课程的安排,系统用户的添加和删除,为学生分配班级等。

对于各功能的详细介绍,如表3-1所示:

3.2.2 系统用例图

根据3.2.1的主功能模块分析,学生成绩管理系统包括三个参与者:学生、教师、管理员。根据不同身份的用户和系统的交互活动不同,可以画出如下用例

图:

图3-1 学生信息管理系统用例图

3.3 非功能性需求分析

3.3.1系统的安全性

通常在描述学生成绩管理系统安全性时,越是薄弱的部分,则往往越会受到攻击的影响。因为在攻击者在对系统进行攻击行为时,无论其出于何种目的,往往会找出该系统最易攻击的环节,从而沿阻力最小的路径行动。

通常我们在使用系统的时候,都会经登录,输入所需的用户名及对应密码。为防止偷窥造成的密码泄露,而在对外显示时都会以“*”作为输入字符的代号。用户在登录时所使用的账号必须是数据库中已存的,且所输入的账号密码必须与数据库中存储的账号密码一致,否则都会造成登陆失败。无论是管理员还是学生或教师,为了报障学生信息系统的安全性,都必须要经过登陆方能进入系统。

3.3.2 系统的可靠性

为了防止用户的非法操作,系统通常会对不同用户提供不同的服务,并对其设置不同的操作权限。管理员可以使用基于Web的学生成绩管理系统甚至所有功能,性能可靠稳定。

3.3.3 系统的易实用性和可扩展性

一个完善的操作系统应具备以下特点:为保证系统界面具有操作简单,界面的设计以美观大方为主;系统还应该具备展示学生信息的功能,从而方便用户进行学生课程信息的浏览或比较;为方便教师分类查找,系统应该对学生的课程分类采取规范管理;为方便教师进行修改确认行为,我们队每个用户的使用权限加以完善;让学生及教师对系统内的信息修改具有自己可以操作的部分。除此之外,还有管理员的信息查询、访问次数的信息查询、成绩排行公示等功能,此外,为了方便管理者管理与教师进行成绩更新学生信息,还设置并完善的后台管理功能。

4 系统概要设计

4.1 系统概述

学生信息管理系统主要包括三大模块:学生模块、教师模块和管理员模块。学生模块的功能有:查看和修改个人信息,查看成绩。教师模块的功能有:查看和修改个人资料,录入学生成绩、查看学生成绩、成绩的统计与分析。管理员模块的功能有:学生信息管理、教师信息管理、课程信息管理、班级信息管理(班级的查询增删)、安排课程、系统用户管理等。

4.2 系统结构图

图4-1 学生成绩管理系统结构图

4.3 系统结构分析

学生成绩管理系统分为学生、教师和管理员三大模块。每个模块有分为几个子功能模块。这些子模块分别实现了不同的功能,学生模块的查询成绩功能,教师模块的个人信息管理、成绩的查询录入功能、系统统计分析成绩功能,管理员的学生信息管理、教师信息管理、基本信息管理和系统用户信息管理。

学生登录后可进行的操作:

  1. 查看个人资料(包括姓名、学号、照片、年级、联系方式和住址等)
  2. 修改个人资料
  3. 查询分数

教师登陆后可进行的操作:

  1. 查看个人资料(包括姓名、工号、照片、学位、职位等)
  2. 修改个人资料
  3. 录入学生成绩(可以批量导入)
  4. 修改成绩
  5. 查询学生成绩(可以根据课程名查询,也可以根据学号查询)
  6. 成绩分析统计查询(系统统计分析每门课各个成绩段分布的人数,课程的及格率等,以条形图)

管理员登陆后可进行的操作:

  1. 管理学生信息(学生的添加删除等,可以批量导入)
  2. 管理教师信息(教师的添加删除)
  3. 基本信息管理(课程添加删除、班级添加删除、课程安排)
  4. 系统用户信息管理(添加或删除系统用户,信息包括用户名、密码和权限等)

4.4 数据库的设计与实现

本系统采用mysql数据库,系统数据库名为ccs.数据库中有10张表。下面分别介绍不同的表。

4.4.1 数据表的概述

系统中包括:学生表(student)、教师表(teacher)、班级表(class)、课程表(course)、成绩表(score)、学生班级(student_class)、教师课程(teacher_class)、教师班级(teacher_class)、课程安排表(course_arrange)、系统用户表(user)

4.4.2 数据表的结构

1.student(学生表)

学生表主要存取学生的学号、姓名、性别、年龄、专业、入学年份、电话、地址、照片,表结构如表4-1所示:

表4-1 student的结构

序号 字段名 类型 长度(字符) 描述
1 studentId int 11 学生编号
2 studentName varchar 255 学生姓名
3 sex varchar 255 性别
4 age int 20 年龄
5 major varchar 255 ``专业
6 yearSchool int 255
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

神仙别闹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值