# 学生课外活动成果统计系统
## 简要介绍
这个学生课外活动成果统计系统主要使用了HTML、CSS、JavaScript和PHP四种编程语言和数据库MYSQL来完成。通过这个统计系统能够对学生的课外活动成果进行统计、整理,通过这种方式可以大大减少一些统计部门的工作,并且可以保证数据的完整性、一致性与安全性。
首先,这个系统简单地设计成了学生端和管理员端,学生端主要有修改自己的一些信息和查询信息的功能,管理员端则还具备了修改数据的功能,包括添加数据、更新数据和删除数据,能够利用这些功能直接地操作统计的数据。
然后,这个系统也包含了登录和注册功能。使用登录功能就可以很好地通过用户名和密码登录到对应的学生端或者是管理员端。同时,有登录就需要有注册,注册功能是通过提供一些信息,然后也可以注册学生账号或者是管理员账号。
以上就是这个系统的简要介绍。
## 仓库结构
1. .vscode:我使用的是vscode来完成的,所以有一些vscode配置文件保留在这里,可以忽略这个文件夹。
2. html:HTML页面保存位置,除了我将index.html提取到项目最前端。
3. img:图片保存位置,这里只有一张普通武汉科技大学logo和一张去除背景的武汉科技大学logo
4. php:php保存位置
1. page:主要页面保存位置,这个文件夹中的文件都符合一定的命名规则,就不一一赘述,以personal_center_page/main_info.php为例。personal_center_page是页面的主要分类,personal_center就是个人中心下的所有页面,其他的也是相同的。文件夹下面的文件就是对应各个页面,main_info.php就是个人中心下的个人信息页面,但这是管理员端下的,如果是学生端下的,则页面会添加后缀_student,例如main_info_student.php。
2. config.php:一些配置信息,便于其他文件进行通用。
3. db-inc.php:数据库操作的一些函数。这个文件也因为所有需要操作数据库的文件都包含了,在后期我想添加一个URL检查功能,就利用这个特点,将URL检查功能添加到这个文件里面。当然这是个投机取巧的方法。
4. enroll.php:实现注册功能。
5. init.php:将整个数据库以特定的数据进行初始化。
6. login.php:实现登录功能。
7. main_change_info_php.php:实现个人信息修改功能。
8. 另外三个是实现过程中用于测试的残留文件。
5. script:JavaScript保存位置
1. exit.js:退出系统。
2. getUrlParam.js:使用获取当前URL。
3. init.js:初始化功能。
4. main_info.js:在页面上添加个人信息。
5. myFunction.js:一些整合的函数。
6. style:css保存位置
1. fa:icon图标需要的部分css。
2. main_info.css:系统的css文件。
3. main.css:登录、注册界面的css文件。
4. reset.css:重置样式css文件。
8. <span>README.md</span>:仓库概述。
9. index.html:统计系统的初始页面。
## 系统使用
1. 首先安装wampserver集成环境,减少一些配置问题,只关注代码问题
1. wampserver官网:https://www.wampserver.com/
2. wampserver安装:https://sourceforge.net/projects/wampserver/files/
2. 将仓库克隆到`wampserver/www`目录下
3. 开启wampserver服务
4. 先输入URL:http://localhost:80/database-course-design/php/init.php 进行MYSQL初始化 (端口号默认是80,如果没有修改可以不用填写,否则就填写对应端口号)
5. 然后输入URL:http://localhost:80/database-course-design 进入系统 (端口号部分与上相同)
## 需求分析
随着当今大学生参加的课外活动越来越多,获得过的课外活动成果也越来越多,在实际工作中,如何提高统计这些数据的效率,如何统计可以更加方便、快捷,如何统计可以保证数据准确无误,如何在需要的时候更加快速地查找到精确数据,这些都是当今社会面临的很重要的问题。而建立一个学生课外活动成果统计系统,就是一个能够很好地解决这些问题的方法。
同时要解决以上这些问题,至少需要以下功能:
1. 需要很好地呈现数据,系统要求有良好的人机界面
2. 系统面向不同用户,不同用户的界面应该要求不同
3. 原始数据增、删、查、改方便,支持多条件操作
4. 显示出来的数据,具有合理性,便于查看
5. 数据计算自动完成
6. 数据在操作过程中,稳定性好
## 概念结构设计
![img](https://gitee.com/ruanxinwei/image/raw/master/RIP/20210504202833.png)
## 逻辑结构设计
1. 课外活动成果统计表(achievement)
| 属性名 | 含义 | 类型 | 说明 |
| :---------: | :----------: | :-----------: | :------------------------------------------------------: |
| team_id | 团队号 | BIGINT | 主键,不能为空,同时参照于团队表(team)的id属性 |
| activity_id | 课外活动编号 | BIGINT | 主键,不能为空,同时参照于课外活动表(activity)的id属性 |
| time | 完成时间 | DATE | 格式为“YYYY-MM-DD” |
| teacher_id | 指导老师编号 | BIGINT | 外键,不能为空,同时参照于指导老师表(teacher)的id属性 |
| academy | 报送学院 | VARCHAR(30) | 不能为空 |
2. 课外活动表(activity)
| 属性名 | 含义 | 类型 | 说明 |
| :----: | :----------: | :------------: | :------------: |
| id | 课外活动编号 | BIGINT | 主键,不能为空 |
| name | 课外活动名称 | VARCHAR(100) | 不能为空 |
3. 管理员表(admin)
| 属性名 | 含义 | 类型 | 说明 |
| :------: | :--------: | :-----------: | :----------------------: |
| id | 管理员账号 | VARCHAR(30) | 主键,不能为空 |
| password | 管理员密码 | VARCHAR(30) | 不能为空,默认为password |
4. 学生表(student)
| 属性名 | 含义 | 类型 | 说明 |
| :----: | :------: | :-----------: | :----------------------------: |
| id | 学号 | BIGINT | 主键,不能为空 |
| name | 学生姓名 | VARCHAR(20) | 不能为空 |
| sex | 学生性别 | CHAR(1) | 不能为空,并且只能是'男'或'女' |
| age | 学生年龄 | INT | 不能为空,并且大于0,小于120 |
5. 学生账号表(student_account)
| 属性名 | 含义 | 类型 | 说明 |
| :------: | :--------: | :-----------: | :----------------------: |
| id | 学号 | BIGINT | 主键,不能为空,并且参照于学生表(student)的id属性|
| password| 学生密码 | VARCHAR(30)| 不能为空,默认为password|
6. 组队信息表(student_team)
| 属性名 | 含义 | 类型 | 说明 |
| :------: | :--------: | :-----------: | :----------------------: |
| id | 组队编号 | INT| 主键,不能为空,每次自增1|
| student_id| 学号 | BIGINT| 主键,不能为空,并且参照于学生表(student)的id属性|
|team_id | 团队编号 | BIGINT| 主键,不能为空,并且参照于团队表(team)的id属性|
7. 指导老师表(teacher)
| 属性名 | 含义 | 类型 | 说明 |
| :-