# 基于PHP和MySQL数据库实现的学生成绩管理系统
# 一、项目介绍
## 1.1 课程设计的题目
学生成绩管理系统
## 1.2 系统的总体功能描述
### 1.2.1 基本要求
学校希望建立一个学生成绩在线公布系统,对学生成绩信息进行存储、管理和发布,并能通过分类、查询、统计等操作从数据库中获取有效信息,在方便学生了解自己各科考试成绩的同时,各院系可对学生成绩有直接和明确的掌握。
### 1.2.2 基本功能
- 系统设置:考试科目、等级分值等参数的设置、权限设置、更改密码等
- 学生查询:通过学号和密码,学生可查询每学期各科成绩
- 成绩录入:提供学生成绩的添加功能,并能从表格和其他数据库文件中导入信息
- 信息更新:提供学生成绩信息的删除和修改和功能
- 信息统计:按院系、专业、班级分类汇总、统计。可查询学生的成绩分布,不及格人数,最低分、最高分和平均分
- 信息打印:主要提供成绩的分类打印功能
### 1.2.1 登录功能
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/51088d8455c37acb0cb3319f78976af8.writebug)
输入管理员,老师,学生的id和密码会登录到不同界面,与之对应有不用的功能和权限。
### 1.2.2 管理员功能
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/641057a8283347b0bb7dce05eaa644d0.writebug)
**添加考试**
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/f17f98b2e0d5019b1b42705340d04d8c.writebug)
在输入框输入需要添加的考试科目,点击添加,完成添加考试科目内容
**删除分数**
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/6c464cba0b45642f4d149c6c43dc9ae4.writebug)
输入要删除分数的名字和对应的科目,点击删除即可删除分数
**修改分数**
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/2fde4eb5fb44bae4ef0365ebfc2abf6c.writebug)
输入需要需改分数的姓名和对应的科目对应的新成绩,点击修改完成修改分数功能
**修改密码**
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/9f900d61ce4e5a008c45b389ed7f1018.writebug)
管理员可以修改任何id的密码
## 1.3 开发工具
本系统后台数据库采用MySQL 数据库,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高;前台sublime text作为主要开发工具,使用B/S模式,开发简单。
## 1.4 开发环境
- 编辑器:Sublime Text
- 系统开发语言:HTML + CSS + PHP
- 数据库:MySQL
# 二、需求分析
## 2.1 概括描述
随着在校大学生人数的不断增加,教务系统的数据量也不断的上涨。学校工作繁杂、资料重多,虽然各类管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。因此,开发一套适和大众的、兼容性好的系统是很有必要的。
## 2.2 用户特点
本系统有管理员,老师,学生。系统的管理员主要是对学生信息以及学生成绩进行一些操作。这些操作包括对学生信息的添加、对学生成绩的录入以及对学生成绩进行分析等。老师对学生成绩的录入,自己密码的修改,学生查询自己的成绩和统计自己的成绩,修改自己密码。
## 2.3 可行性分析
目前,随着办公信息化的开展,高校的扩招,新生入学以及期末考试结束后,学校都需要对一些繁琐的流程进行管理,通过一个基于B/S架构的管理系统,可以很好的将这一个过程进行化繁为简。此项目具有普遍性,能够应用于很多学校。因此,该类型系统可以大量投入使用。
## 2.4 数据项
管理员id,密码,老师id,密码,学生id密码,考试科目,考试成绩
## 2.5 数据结构
- 管理员:权限最高,管理员ID,管理员登录密码
- 老师:老师ID,老师登录密码
- 学生:学生ID,学生密码,学生考试科目,考试成绩
## 2.6数据存储
管理员ID,管理员登录密码,老师ID,老师登录密码,学生ID,学生密码,学生考试科目,考试成绩
# 三、数据库概念结构设计
## 3.1 局部ER图
- 管理员(ID,密码)
- 老师(ID,密码)
- 学生(ID,密码,科目,成绩)
# 四、数据库逻辑结构设计
## 4.1 关系模式
- 管理员(ID,密码)
- 老师(ID,密码)
- 学生(ID,密码,科目,成绩)
## 4.2 存储过程
信息->数据库
## 4.3 触发器
建立触发器以实现分数删除功能,当删除一个学生的分数时将此学生的相关信息全部删除。
## 4.4视图
这部分主要是考虑使用方便性和效率问题,主要借助视图手段实现。
## 4.5索引
使用经典存取方法,建立索引:
- 学生成绩经常用到而且按其排序,在学生成绩名称属性建立索引。
- 用户ID是本软件的重要的数据,在ID属性建立索引。
# 五、应用系统功能结构图
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/0e3e6e697e6f6f21856d818448ea4fbe.writebug)
# 六、各功能模块程序流程图及其说明
## 6.1 添加考试
输入框获取用户输入的考试科目,通过post方法发送到服务器,添加到数据库
## 6.2 删除模块
输入框获取用户输入要删除的分数,通过post方法发送到服务器,MqSQL数据库匹配对应的分数,然后删除
## 6.3 修改密码模块
通过更新数据库达到修改密码的功能
## 6.4 查询模块
查询对应的分数,使用对应的MySQL语句
# 七、程序源代码及其说明
## 7.1 登录
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/e78e89640321ddc91b401a7a5a80654c.writebug)
## 7.2 查询
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/0c7fe7c83cd60cedbe83dc23ffec5202.writebug)
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/2849f012363382002f1bc8cb9a5e29af.writebug)
## 7.3 服务器端对数据库的读取和写入操作
采用JDBC进行数据库的连接与操作。
## 7.4 客户端与服务器端的通信
采用Socket进行通信。
## 7.5 系统主界面
**管理员主界面**
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/1392f0a49e0b31fe9fb1299752d8d433.writebug)
**学生主界面**
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/1828350f4f3a9f517c376354ac0f0201.writebug)
**教师主界面**
![](http://www.write-bug.com/myres/static/uploads/2021/10/19/cbf823fc679eb5ba82c2cb5158ef8ac9.writebug)
# 八、总结
课程设计中遇到的主要问题和解决方法;创新和得意之处;课程设计中存在的不足,需进一步改进的设想;课程设计的感想和心得体会。
## 8.1 主要问题和解决方法
界面的排版问题,还有用户输入的数据怎样传给数据库和php处理。
排版问题使用css的定位解决,绝对定位能让控件定位到我想要的地方。数据传输使用post方法,在php要使用\_POST+name接受控件输入的内容。
## 8.2 创新和得意之处
系统界面简单单调,但是功能齐全,开发容易,使用XAMPP集合环境,不需要单独安装数据库和web服务器,使用起来方便简单。
## 8.3 不足之处
功能过域简单,更加复杂的功能没有实现,系统存在SQL注入等安全问题,界面也不够美观,进一步的学习和研究,学习更多css、html、php、mysql,进一步掌握安全问题,维护更好的网站。
## 8.4 心得体会
在这次课程设计中,重点是要掌握数据库设计方法。数据库设计特点:三分技术,七分管理,十二分基础数据。在数据库建设中不仅涉及技术,还设计管理。要建设好一个数据库应用系统,开发技术固然重要,但�