这个学生课外活动成果统计系统主要使用了HTML、CSS、JavaScript和PHP四种编程语言和数据库MYSQL来完成。通过这个统计系统能够对学生的课外活动成果进行统计、整理,通过这种方式可以大大减少一些统计部门的工作,并且可以保证数据的完整性、一致性与安全性。
首先,这个系统简单地设计成了学生端和管理员端,学生端主要有修改自己的一些信息和查询信息的功能,管理员端则还具备了修改数据的功能,包括添加数据、更新数据和删除数据,能够利用这些功能直接地操作统计的数据。
然后,这个系统也包含了登录和注册功能。使用登录功能就可以很好地通过用户名和密码登录到对应的学生端或者是管理员端。同时,有登录就需要有注册,注册功能是通过提供一些信息,然后也可以注册学生账号或者是管理员账号。
以上就是这个系统的简要介绍。
- .vscode:我使用的是vscode来完成的,所以有一些vscode配置文件保留在这里,可以忽略这个文件夹。
- html:HTML页面保存位置,除了我将index.html提取到项目最前端。
- img:图片保存位置,这里只有一张普通武汉科技大学logo和一张去除背景的武汉科技大学logo
- php:php保存位置
- page:主要页面保存位置,这个文件夹中的文件都符合一定的命名规则,就不一一赘述,以personal_center_page/main_info.php为例。personal_center_page是页面的主要分类,personal_center就是个人中心下的所有页面,其他的也是相同的。文件夹下面的文件就是对应各个页面,main_info.php就是个人中心下的个人信息页面,但这是管理员端下的,如果是学生端下的,则页面会添加后缀_student,例如main_info_student.php。
- config.php:一些配置信息,便于其他文件进行通用。
- db-inc.php:数据库操作的一些函数。这个文件也因为所有需要操作数据库的文件都包含了,在后期我想添加一个URL检查功能,就利用这个特点,将URL检查功能添加到这个文件里面。当然这是个投机取巧的方法。
- enroll.php:实现注册功能。
- init.php:将整个数据库以特定的数据进行初始化。
- login.php:实现登录功能。
- main_change_info_php.php:实现个人信息修改功能。
- 另外三个是实现过程中用于测试的残留文件。
- script:JavaScript保存位置
- exit.js:退出系统。
- getUrlParam.js:使用获取当前URL。
- init.js:初始化功能。
- main_info.js:在页面上添加个人信息。
- myFunction.js:一些整合的函数。
- style:css保存位置
- fa:icon图标需要的部分css。
- main_info.css:系统的css文件。
- main.css:登录、注册界面的css文件。
- reset.css:重置样式css文件。
- README.md:仓库概述。
- index.html:统计系统的初始页面。
- 首先安装wampserver集成环境,减少一些配置问题,只关注代码问题
- wampserver官网:https://www.wampserver.com/
- wampserver安装:https://sourceforge.net/projects/wampserver/files/
- 将仓库克隆到
wampserver/www
目录下 - 开启wampserver服务
- 先输入URL:http://localhost:80/database-course-design/php/init.php 进行MYSQL初始化 (端口号默认是80,如果没有修改可以不用填写,否则就填写对应端口号)
- 然后输入URL:http://localhost:80/database-course-design 进入系统 (端口号部分与上相同)
随着当今大学生参加的课外活动越来越多,获得过的课外活动成果也越来越多,在实际工作中,如何提高统计这些数据的效率,如何统计可以更加方便、快捷,如何统计可以保证数据准确无误,如何在需要的时候更加快速地查找到精确数据,这些都是当今社会面临的很重要的问题。而建立一个学生课外活动成果统计系统,就是一个能够很好地解决这些问题的方法。
同时要解决以上这些问题,至少需要以下功能:
- 需要很好地呈现数据,系统要求有良好的人机界面
- 系统面向不同用户,不同用户的界面应该要求不同
- 原始数据增、删、查、改方便,支持多条件操作
- 显示出来的数据,具有合理性,便于查看
- 数据计算自动完成
- 数据在操作过程中,稳定性好
-
课外活动成果统计表(achievement)
属性名 含义 类型 说明 team_id 团队号 BIGINT 主键,不能为空,同时参照于团队表(team)的id属性 activity_id 课外活动编号 BIGINT 主键,不能为空,同时参照于课外活动表(activity)的id属性 time 完成时间 DATE 格式为“YYYY-MM-DD” teacher_id 指导老师编号 BIGINT 外键,不能为空,同时参照于指导老师表(teacher)的id属性 academy 报送学院 VARCHAR(30) 不能为空 -
课外活动表(activity)
属性名 含义 类型 说明 id 课外活动编号 BIGINT 主键,不能为空 name 课外活动名称 VARCHAR(100) 不能为空 -
管理员表(admin)
属性名 含义 类型 说明 id 管理员账号 VARCHAR(30) 主键,不能为空 password 管理员密码 VARCHAR(30) 不能为空,默认为password -
学生表(student)
属性名 含义 类型 说明 id 学号 BIGINT 主键,不能为空 name 学生姓名 VARCHAR(20) 不能为空 sex 学生性别 CHAR(1) 不能为空,并且只能是'男'或'女' age 学生年龄 INT 不能为空,并且大于0,小于120 -
学生账号表(student_account)
属性名 含义 类型 说明 id 学号 BIGINT 主键,不能为空,并且参照于学生表(student)的id属性 password 学生密码 VARCHAR(30) 不能为空,默认为password -
组队信息表(student_team)
属性名 含义 类型 说明 id 组队编号 INT 主键,不能为空,每次自增1 student_id 学号 BIGINT 主键,不能为空,并且参照于学生表(student)的id属性 team_id 团队编号 BIGINT 主键,不能为空,并且参照于团队表(team)的id属性 -
指导老师表(teacher)
属性名 含义 类型 说明 id 指导老师编号 BIGINT 主键,不能为空 name 指导老师姓名 VARCHAR(20) 不能为空 sex 指导老师性别 CHAR(1) 不能为空,并且只能是'男'或'女' age 指导老师年龄 INT 不能为空,并且大于0,小于120 -
团队表(team)
属性名 含义 类型 说明 id 团队编号 BIGINT 主键,不能为空 name 团队名 VARCHAR(30) 不能为空 num 团队人数 INT 不能为空 slogan 团队口号 VARCHAR(100) 不能为空
- 采用学生端和管理员端两端等方式,提供数据的安全性保护。
- 使用在增删改查操作前先满足数据是否合理等基本要求,以及增加一些触发器等方式,提供数据的完整性检查,将数据控制在有效的范围内,并保持数据之间满足一定的关系。
- 选用MySQL 的 InnoDB 存储引擎,其存储引擎采用两段锁协议,会根据隔离级别在需要的时候自动加锁,并且所有的锁都是在同一时刻被释放,满足数据库并发控制的情况。
- 在遇到一些特殊的数据库破坏的情况,可以使用管理员端的恢复数据的功能进行恢复。
- 登录:直接在登录界面输入对应的账号密码,并且无论是学生账号还是管理员账号,都可以在登录界面进行登录,后台会根据账号类型,进行页面的切换,学生账号进入学生端,管理员账号进入管理员端。
- 注册
- 注册学生账号 注册学生账号至少需要用户名,姓名,性别和年龄,密码不填写的话,默认为password,如果注册失败,会给出相应的提示信息,例如“注册失败,请更换用户名重试”等提示信息。
- 注册管理员账号 注册管理员账号只需要用户名和密码,密码不填写,默认也是password,错误提示信息与注册学生账号时类似。
查询操作有查询学生,查询老师,查询团队,查询活动,查询成果和查询组队信息六个功能,每个查询功能操作类似,将以其中一个进行描述。
例如查询学生信息,可以通过学号,姓名,性别,年龄四个中的任意组合都可以查询到对应的学生信息。
提交按钮则是提交给后台,查询对应的信息,如果查询到相应的结果,则会以表格的形式呈现。重置按钮可以将输入框中的数据全部清除。
表格内容也会相对于查找的要求进行相应的优化,例如在查询团队的时候,输入对应的团队号查询后,在输出查询结果的时候,会将对应的团队名一起输出。
更新操作有更新学生信息,更新老师信息,更新团队信息,更新活动信息,更新成果信息,更新组队信息六个功能,每个更新功能操作也类似,将以其中一个进行描述。
例如更新学生信息操作,首先通过第一个表单,学号,姓名,性别和年龄的任意组合确定需要更新的信息,在通过新学号,新姓名,新性别和新年龄的任意组合进行更新,当更新成功与否,都会有相应的信息提示出来。
提交按钮和重置按钮与查询操作中的相同,将不再赘述。
添加操作包括添加学生信息、添加老师信息、添加团队信息、添加活动信息、添加成果信息和添加组队信息。
以添加学生信息为例,输入想要添加的对应的学号,姓名,性别和年龄,然后系统进行验证,然后再进行添加操作,添加的成功与否也会有相应的信息提示出来。
删除操作包括删除学生信息、删除老师信息、删除团队信息、删除活动信息、删除成果信息和删除组队信息。
以删除学生信息为例,输入想要删除的对应的学号,姓名,性别和年龄的任意组合,锁定数据库中的数据,进行删除操作,删除的成功与否也会有相应的信息提示出来。
在管理员端的个人信息界面,提供数据库格式化的操作,可以将数据恢复到前一段时间的状态。
使用SQL语句以及表名变量,直接创建表,以及一些属性,和属性的一些要求(不能为空、属性类型、主键、外键等)。
使用SQL语句以及表名变量,给表插入数据。
指定创建一个触发器的名称,在什么情况下,以及是语句型还是行型,然后再给出定义,这个触发器需要做哪些工作。
先在学生账号表中,查找是否与之匹配的信息,如果有,则登录到学生端,如果没有,再去查找管理员账号中查找,如果有,则登录到管理员端,如果没有就提示登录失败信息。
以注册为例,先检查学号是否为数字,以及名字长度是否符合规范,性别是不是只有男或女,还有年龄是否在指定范围内,只有都通过才能注册,否则输出对应的提示信息。
将注册输入框中的数据获取出来,进行插入账号表操作,如果插入成功,则跳转登录界面,如果失败,输出相应的提示信息。
检测登录名中是否是管理员,如果是,则跳转管理端,否则跳转到学生端。
采用字符串拼接的方式,配合变量,可以整合出一套特定的select语句,无论是where部分,还是完成的select语句,然后再进行数据库查询,如果有结果,则输出对应表格信息,否则输出相应提示信息。
采用字符串拼接的方式,配合变量,可以整合出一套特定的update语句,无论是where部分,还是完整的update语句,然后再进行数据库更新,如果有成功,则输出更新成功信息,否则输出相应提示信息。
采用字符串拼接的方式,配合变量,可以整合出一套特定的insert语句,无论是where部分,还是完整的insert语句,然后再进行数据库插入,如果有成功,则输出插入成功信息,否则输出相应提示信息。
采用字符串拼接的方式,配合变量,可以整合出一套特定的delete语句,无论是where部分,还是完整的delete语句,然后再进行数据库删除,如果有成功,则输出删除成功信息,否则输出相应提示信息。
根据输入框中的数据,采用特定编号的形式,避免产生很多种组合,而需要特定地去输出相应的内容,大大减少了重复代码量,以及提高了开发效率。
登录系统需要有用户名和密码,利用这两个点进行检查URL是否合理,然后还需要避免其中一些操作会变动URL,只有两个条件都满足,才说明系统URL是合理的。
使用JavaScript检查URL中的姓名以及账号,然后操作DOM,修改界面中的部分信息,达到获取当前登录的信息,也保证了在系统中操作的合理性以及完善性。