基于SSH框架和MySQL开发的学生成绩管理系统

攻城狮0829

发布日期: 2020-10-15 12:04:32 浏览量: 60
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、软件需求说明

1.1 概述

本采用软件工程方法对学生成绩管理系统进行了需求分析,包括系统目标、功能性需求、数据需求。

1.2 系统目标

1.2.1 总体目标

该软件的主要功能是,可以选择多门课程学习,课程类别是必修课或选修课,每门课程由一位专业教师授课,学期末教师给出学生成绩,成绩由平时成绩、实验成绩、理论成绩组成。成绩可以是数值(小于等于100分)或非数值(优、良、中、及格、不及格)。

主要功能:

  • 实现学生基本情况的录入、修改、删除等基本操作

  • 实现课程基本情况的录入、修改、删除等基本操作

  • 实现成绩基本情况的录入、修改、删除等基本操作

  • 用户更改密码

  • 退出系统

1.2.2 具体目标

  • 学生基本情况录入模块:主要功能用来对学生的基本信息进行收集和录入。在学生信息保存在系统中的前提下,成绩录入需要输入学生资料,比如班级、学号、姓名

  • 课程基本情况录入模块:主要功能用来对课程的基本信息进行收集和录入。在课程信息保存在系统中的前提下,成绩录入需要输入课程资料,比如课程号、学时、学分

  • 成绩基本情况录入模块:主要功能用来对学生的成绩进行收集和录入。在准确录入学生资料后,就可以对该学生的各科成绩进行录入

  • 按学生学号查找并显示学生资料模块:主要功能是用来查找学生资料。在系统保存了某学生资料的前提下,想要查找该学生资料,可以输入该学生姓名,这样系统就会显示该学生资料信息

  • 按课程号查找并显示学生资料模块:主要功能是用来查找课程资料。在系统保存了某课程资料的前提下,想要查找该课程资料,可以输入该课程号,这样系统就会显示该课程信息

  • 修改删除该学生资料模块:主要功能是用来删除学生资料,在系统保存学生资料的前提下,想删除某学生的资料,可以输入学生姓名,系统查找该学生资料后,就可以删除了。由于学生辍学,毕业等原因,及时对系统进行更新,删除一些没用的信息,可以使系统更加优化

  • 修改删除课程资料模块:主要功能是用来修改删除课程资料,在系统保存课程资料的前提下,想修改删除某课程的资料,可以直接点击删除,系统查找该课程资料后,就可以删除了

  • 删除成绩资料模块:主要功能是用来删除成绩资料,在系统保存课程资料的前提下,想删除某项成绩的资料,可以直接点击删除,系统查找该项成绩后,就可以删除了

  • 用户更改密码:主要功能是用来对管理员用户提供密码修改操作

1.3 业务流程

当信息在软件中移动时,将被一系列“变换”所修改。数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何的具体物理元素,它只是描绘信息在软件中流动和被处理的情况。数据流图只需要考虑系统必须完成的基本逻辑功能,完全不考虑怎样具体的实现这些功能。

根据系统功能描述,对系统画数据流图如下:

1.4 功能需求用例图

用例图描述的事外部行为者所理解的系统功能,应用于需求分析阶段,它的建立是系统开发者和用户反复讨论的结果,描述了开发者和用户对需求规格所达成的共识。首先,它描述了对目标系统的功能需求;其次,它把系统看做黑盒子,从外部行为者的角度来理解系统;第三,它驱动了需求分析之后各阶段的开发工作。用例图是进行需求分析和建立系统功能模型的强有力工具。

根据对系统的需求分析,作系统的功能需求用例图如下:

1.5 数据需求

数据需求包含:数据对象及其属性,数据对象是对软件必须理解的复合信息的表示;属性定义了数据对象的性质。

学生的概念模型

成绩信息的概念模型

1.6 环境需求

开发运行环境:eclipse、tomcat、jdk、mysql、浏览器。

二、软件概要设计

本系统根据学生成绩管理的需要,而建立一个“学生成绩管理系统”,以方便对成绩的各项管理操作。本系统能对成绩进行输入和输出;能按姓名对学生进行排序,并显示学生资料、成绩等,不过得以系统输入学生资料、成绩为前提;能添加学生成绩资料;能根据学生的姓名来查询该学生的成绩资料,并修改或是删除该学生信息;能够从文件中读取学生信息,并且添加到系统中;能把对系统所进行的操作进行保存,以及时更新系统中的数据。

2.1 类设计接口设计

项目整体采用接口编程,将所有对象的方法分别抽象封装与接口中,实现了操作的统一性。创建包结构,建立如下:

2.2 功能模块设计

根据系统设计的说明及要求来设计,从而设计了几大功能模块,有学生信息的管理、课程信息的管理、成绩信息的管理、可分别对其进行录入和查询工作。

部分系统功能模块图如下:

2.3 业务流程

当信息在软件中移动时,将被一系列“变换”所修改。数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。在数据流图中没有任何的具体物理元素,它只是描绘信息在软件中流动和被处理的情况。数据流图只需要考虑系统必须完成的基本逻辑功能,完全不考虑怎样具体的实现这些功能。

根据系统功能描述,对系统画数据流图如下:

2.4 数据库设计

数据库设计是将各种实体及其属性联系在一起的设计,用E-R图来表示。E-R图比较接近人的习惯思维方式,使用简单的图形符号表达系统分析员对问题域的理解,不熟悉计算机的用户也能理解它,E-R图可作为用户与分析员之间有效的交流工具。

根据系统描述,作系统E-R图如下:

三、详细设计

3.1 hibernate部分

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。

即Hibernate是一个持久层的ORM框架。

ORM:Object Relational Mapping(对象关系映射)。指的是将一个Java中的对象与关系型数据库中的表建立一种映射关系,从而操作对象就可以操作数据库中的表。

Hibernate可以理解为是一个中间件,它负责把Java程序的SQL语句接收过来并发送到数据库,而数据库返回来的信息由Hibernate接收后直接生成一个对象传给Java。

3.1.1下载Hibernate的开发环境解压Hibernate

Hibernate下载地址:https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/

把hibernate-3.2.0.ga\hibernate-3.2\lib下的所有jar包加上。

  • documentation:Hibernate开发的文档

  • lib:Hibernate开发包

    • required:Hibernate开发的必须的依赖包
    • optional:Hibernate开发的可选的jar包
  • project:Hibernate提供的项目

3.1.3 创建项目,引入jar包

  • 数据库驱动包

  • Hibernate开发的必须的jar包

  • Hibernate引入日志记录包

3.1.4 创建表以学生表为例以及创建实体类

  1. DROP TABLE IF EXISTS `student`;
  2. CREATE TABLE `student` (
  3. `studentId` varchar(6) NOT NULL,
  4. `name` varchar(50) DEFAULT NULL,
  5. `sex` tinyint(4) DEFAULT NULL,
  6. `birthDate` datetime DEFAULT NULL,
  7. `totalCredits` int(11) DEFAULT NULL,
  8. `other` text,
  9. `photo` tinyblob,
  10. `majorId` int(11) DEFAULT NULL,
  11. PRIMARY KEY (`studentId`),
  12. KEY `FK8FFE823B983098DD` (`majorId`),
  13. CONSTRAINT `FK8FFE823B983098DD` FOREIGN KEY (`majorId`) REFERENCES `major` (`id`)
  14. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  1. public class Student implements java.io.Serializable {
  2. private String studentId;
  3. private Major major;
  4. private String name;
  5. private Byte sex;
  6. private Date birthDate;
  7. private Integer totalCredits;
  8. private String other;
  9. private byte[] photo;
  10. ..........}

3.1.5 创建映射文件

映射需要通过XML的配置文件来完成,这个配置文件可以任意命名。尽量统一命名规范(类名.hbm.xml),详细见源码。

3.1.6 创建Hibernate的核心配置文件

Hibernate的核心配置文件的名称:hibernate.cfg.xml

3.2 Hibernate的查询方式:HQL检索

HQL查询:Hibernate Query Language,Hibernate的查询语言,是一种面向对象的方式的查询语言,语法类似SQL。通过session.createQuery(),用于接收一个HQL进行查询方式。

3.2.1 HQL的多表查询

  • 连接查询

    • 交叉连接:笛卡尔积 select * from A,B;
    • 内连接:inner join (inner 可以省略)
    • 隐式内连接:select * from A,B where A.id = B.aid;
    • 显示内连接:select * from A inner join B on A.id = B.aid;
  • 外连接

    • 左外连接:left outer join(outer 可以省略)
      select * from A left outer join B on A.id= B.aid;
    • 右外连接:right outer join(outer 可以省略)
      select * from A right outer join B on A.id = B.aid

3.3 SSH整合

3.3.1创建web项目,引入jar包

  • Struts2的jar包
    struts-2.3.24\apps\struts2-blank\WEB-INF\lib*.jar
    详细说明:
    Struts2的注解开发包:struts2-convention-plugin-2.3.24.jar
    Struts2的整合AJAX的开发包:struts2-json-plugin-2.3.24.jar
    Struts2的整合Spring的开发包:struts2-spring-plugin-2.3.24.jar

  • Hibernate的jar包
    Hibernate的开发的必须的包: hibernate-release-5.0.7.Final\lib\required*.jar

  • MySQL驱动

  • 日志记录

  • Spring的jar包:IOC的开发、AOP的开发、JDBC模板的开发、事务管理、整合web项目的开发、整合单元测试的开发、整合hibernate的开发

3.3.2 引入配置文件

  • Struts的配置文件

    • web.xml:配置Struts2的核心过滤器,配置Spring的核心监听器
    • struts.xml:建立
  • Hibernate的配置文件

    • hibernate.cfg.xml
    • *.hbm.xml映射文件
  • Spring的配置文件

    • web.xml
    • applicationContext.xml
  • 日志记录

    • log4j.properties

3.3.3 创建包结构及相关类

3.3.4 Spring整合Struts2

Action由Struts2自身创建的。

  • 编写Action

  • 配置Action,范例如下,在struts.xml中配置

  1. <bean id="loginDao" class="edu.ccut.computer.software.dao.imp.LoginDaoImp">
  2. <property name="sessionFactory">
  3. <ref bean="sessionFactory" />
  4. </property>
  5. </bean>
  • 在Action中引入Service
    进行Spring和Struts2的整合:引入struts-spring-plugin.jar。让Action按照名称自动注入Service:将Service交给Spring管理

四、数据库设计

学生成绩表,用于存储录入的学生成绩

列名 数据类型 长度 默认值
studentId char 6 ‘’
courseId Char 3 ‘’
score int 6,1 0.0
credit Int 6 0

登陆表,用于记录用户登录信息

列名 数据类型 长度 默认值
Id Int 11
username Varchar 8 ‘’
password Varchar 100 ‘’

课程表,用于存储课程信息

列名 数据类型 长度 默认值
courseId char 3 ‘’
courseName VarChar 50
courseDate smalint 3
student Int 11 0
credit Int 6 0

学生-课程表,用于存储学生选课信息

列名 数据类型 长度 默认值
studentId char 6 ‘’
courseId Char 3 ‘’
score int 11
credit int 11

学生表,用于存储学生基本信息

列名 数据类型 长度 默认值
studentId char 6 ‘’
name Char 50 ‘’
sex Bit 1
birthDate Datetime
major Int 11 0
points Int 11 0
other Varchar 500
photo Blob

专业表,用于存储学生专业信息

列名 数据类型 长度 默认值
majorId Int 11
majorName varChar 50 ‘’
Number Int 11 0
teacher Varchar 50 ‘’

五、关键代码

5.1 hibernate.hbm.xml配置文件

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7. <!-- 连接数据库的基本参数 -->
  8. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  9. <property name="hibernate.connection.url">jdbc:mysql:///ssh_system</property>
  10. <property name="hibernate.connection.username">root</property>
  11. <property name="hibernate.connection.password">root</property>
  12. <!-- 配置hibernate的方言 -->
  13. <property name="hibernate.dialect">org.hibernate.dialect.MySQDialect</property>
  14. <!-- 可选配置 -->
  15. <!-- 打印以及格式化sql语句 -->
  16. <property name="hibernate.show_sql">true</property>
  17. <property name="hibernate.format_sql">true</property>
  18. <!-- 自动建表 -->
  19. <property name="hibernate.hbm2ddl.auto">create</property>
  20. <!-- 连接映射文件 -->
  21. <mappingresource="edu/ccut/computer/software/model/Course.hbm.xml"></mapping>
  22. <mapping resource="edu/ccut/computer/software/model/Login.hbm.xml"></mapping>
  23. <mapping resource="edu/ccut/computer/software/model/Major.hbm.xml"></mapping>
  24. <mapping resource="edu/ccut/computer/software/model/Score.hbm.xml"></mapping>
  25. <mappingresource="edu/ccut/computer/software/model/Student.hbm.xml"></mapping>
  26. </session-factory>
  27. </hibernate-configuration>

5.2 applicationContext.xml配置文件

  1. <?namel version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  4. <hibernate-mapping>
  5. <class name="edu.ccut.computer.software.model.Student" table="student" >
  6. <id name="studentId" type="java.lang.String">
  7. <column name="studentId" length="6" />
  8. <generator class="assigned" />
  9. </id>
  10. <property name="name" type="java.lang.String">
  11. <column name="name" length="50" />
  12. </property>
  13. <property name="sex" type="java.lang.Byte">
  14. <column name="sex" />
  15. </property>
  16. <property name="birthDate" type="java.util.Date">
  17. <column name="birthDate" length="23" />
  18. </property>
  19. <property name="totalCredits" type="java.lang.Integer">
  20. <column name="totalCredits" />
  21. </property>
  22. <property name="other" type="java.lang.String">
  23. <column name="other" length="500" />
  24. </property>
  25. <property name="photo">
  26. <column name="photo" />
  27. </property>
  28. <many-to-one name="major"
  29. class="edu.ccut.computer.software.model.Major" fetch="select" lazy="false">
  30. <column name="majorId" />
  31. </many-to-one>
  32. </class>
  33. </hibernate-mapping>

六、软件使用说明

登录系统

查询所有学生信息

查看学生详细信息

修改学生详细信息

查询所有课程

修改课程详细信息

录入课程信息

查看所有学生的所有成绩

查询依据学号查询单个学生成绩信息

录入学生成绩

修改登录用户密码

上传的附件 cloud_download 基于SSH开发的学生成绩管理系统.rar ( 23.96mb, 2次下载 )
error_outline 下载需要13点积分

发送私信

47
文章数
12
评论数
最近文章
eject