# 学生成绩管理系统
# 一、开发环境及所用知识体系
## 1.1 开发工具
开发平台:Windows
开发工具:netBeans+mySql
应用服务器:Apache Tomcat 7.0
# 二、系统需求
## 2.1 系统总体需求说明
学生成绩管理系统主要用于学校学生成绩信息管理,能实现学生、老师、院系、班级、课程的增删改查操作,同时学生能进行选课和退课操作,老师能对学生的成绩录入和修改操作。
## 2.2 系统流程图
![](https://www.writebug.com/myres/static/uploads/2021/12/25/45699857737df099fc2257caa3a6d3be.writebug)
## 2.3 功能结构图
![](https://www.writebug.com/myres/static/uploads/2021/12/25/21436e60bf8c5857b9d4833075e0fe97.writebug)
# 三、技术选型
## 3.1 所使用技术的简要介绍
**JSP**
JSP 全名为 Java Server Pages,中文名叫 Java 服务器页面,其根本是一个简化的设计,它是由 Sun Microsystems 公司倡导、许多公司参与一起建立的一种技术标准。JSP 技术有点类似 ASP 技术,它是在传统的 HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入 Java(Scriptlet)和 JSP 标记(tag),从而形成 JSP 文件,后缀名为(*.jsp)。 用 JSP 开发的 Web 应用是的,既能在 Linux 下运行,也能在其他上运行。
**JDBC**
Java 中连接数据库的技术是 JDBC,Ja 程序通过 JDBC 与数据库相连,执行查询、提取数据等操作。Sun 公司还开发了 JDBC-ODBC bridge,利用此技术 Java 程序可以访问带有 ODBC 驱动程序的数据库,目前大多数都带有 ODBC 驱动程序,所以 Java 程序能访问诸如 Oracle、Sybase、MS SQL Server 和 MS Access 等数据库。
**JavaBean**
JavaBean 是一种 Java 语言写成的可重用组件。为写成 JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他 Java 类可以通过自身机制发现和操作这些 JavaBean 属性。 换句话说,JavaBean 就是一个 Java 类,只不过这个类要按上面提到的一些规则来写,比如必须是公共的,无参构造的等,按这些规则写了之后,这个 JavaBean 可以在程序里被方便的重用,使开发效率提高。
**Servlet**
Servlet(Server Applet)是 Java Servlet 的简称,称为小服务程序或服务连接器,用 Java 编写的服务器端程序。主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类。一般情况下,人们将 Servlet 理解为后者。Servlet 运行于支持 Java 的应用服务器中。从原理上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器。
**CSS**
层叠样式表(Cascading Style Sheets)是一种用来表现(标准通用标记语言的一个应用)或 XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS 不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。CSS 为 HTML 标记语言提供了一种样式描述,定义了其中元素的显示方式。CSS 在 Web 设计领域是一个突破。利用它可以实现修改一个小的样式更新与之相关的所有页面元素。
**Spring MVC**
![](https://www.writebug.com/myres/static/uploads/2021/12/25/5e51b69cb891805cab4b0af6b1825059.writebug)
# 四、功能模块
## 4.1 学生信息维护
### 4.1.1 数据库设计
![](https://www.writebug.com/myres/static/uploads/2021/12/25/74f9dd0920ddd13ed44260589d20fa91.writebug)
学生表包含学号、密码、姓名、性别、所在院系和所在班级。其中 Id 为主键。
![](https://www.writebug.com/myres/static/uploads/2021/12/25/3d501a6269ee9720d2d06c55138e2b51.writebug)
### 4.1.2 模块功能及流程图
学生信息维护这一板块主要用于学生信息的增、删、改、查操作。
- 表示层:(JSP、HTML、CSS 主要就是界面的展示)
- 控制层:(Contoller)控制界面跳转、实现函数的调用,调用 service 层
- 业务层:(Service)调用 DAO 层,实现解耦合目的
- 持久层:(DAO)也叫数据访问层,实现对数据库的一系列 CURD 操作
![](https://www.writebug.com/myres/static/uploads/2021/12/25/81759e320207ddc3ac50b22c09667c89.writebug)
图 4-1:学生信息流程图
### 4.1.3 程序层次结构
**MVC 结构**
M 是 Model(模型),主要完成系统的逻辑处理;V 是 View(视图),主要完成于用户的交互;C 是 Controller(控制器),主要建立模型与视图之间的关联。
**模型**:具有处理功能,有一个或多个 JavaBean 对象,用于存储数据,Javabean 主要提供简单的 set()方法和 get()方法,在这些方法中不涉及对数据的具体处理细节。
![](https://www.writebug.com/myres/static/uploads/2021/12/25/e8eb44b8118652035671f18115c0054a.writebug)
**控制器**:一个或多个 Servlet 对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储到 JavaBean 中,然后 Servlet 使用重定向方式请求视图中的某个 JSP 页面更新显示,即让该 JSP 页面通过使用 JavaBean 标记显示控制器存储在 JavaBean 中的数据。
![](https://www.writebug.com/myres/static/uploads/2021/12/25/93ec49087a3ec6b053b3d4d7d83379f8.writebug)
**视图**:一个或多个 JSP 页面,为模型提供数据显示,JSP 页面主要使用 HTML 标记和 JavaBean 来显示数据。
![](https://www.writebug.com/myres/static/uploads/2021/12/25/89686f583634f6575a20dcb4cbdb2737.writebug)
首先是 JSP 层通过 form 表单提交,进入 controller 层,然后 controller 层调用 service 层,service 层调用 dao 层,进行数据库的增删改查操作。
**添加操作**:
JSP 页面表单提交给 Controller 层 preAdd 映射下的 preAdd()函数,返回 studentInfoAdd.jsp 页面,用户输入相关数据后,表单提交给 Controller 层 Add 映射下的 Addstudent()函数,addStudent()函数调用 getStudent()函数,getStudent()调用 service 层的 AddStudent()函数,service 层调用 dao 层的 saveStudent()函数,获取导数据后传给 service 层,service 层传给 controller 层,controller 层返回 studentInfoProject.jsp 页面,进行显示。
**修改操作**:
JSP 表单提交给 Controller 层的 getStuById()函数,然后跳转到 StudentInfoUpdate.jsp 页面,用户输入要修改的数据,表单提交给 Controller 层 updateStu 映射下的 updateStu()函数,updateStu ()调用 service 层的 updateStu ()函数,service 层调用 dao 层的 updateStu ()函数,获取导数据后传给 service 层,service 层传给 controller 层,controller 层调用 getStudent()函数,返回 studentInfoProject.jsp 页面,进行显示。
**查询操作**:
JSP 表单提交给 Controller 层 findStudent 映射下的 findStudent ()函数,调用 service 层的 findStudent ()函数,service 层调用 dao 层的 getStudent ()函数,获取导数据后传给 service 层,service 层传给 controller 层,controller 层调用 findStudent ()函数,返回 studentInfoProject.jsp 页面,进行显示。
**删除操作**:
JSP 表单提交给 Controller 层 deleteStu 映射下的 deleteStu ()函数,调用 service 层的 deleteStu ()函数,service 层调用 dao 层的 deleteStu ()函数,获取导数据后传给 service 层,service 层传给 controller 层,controller 层调用 getStudent ()函数,返回 studentInfoProject.jsp 页面,进行显示。
### 4.1.4 程�