{"id":13748562,"url":"https://github.com/KuroChan1998/Student-Information-Administration-System","last_synced_at":"2025-05-09T11:30:50.394Z","repository":{"id":48161415,"uuid":"184764677","full_name":"KuroChan1998/Student-Information-Administration-System","owner":"KuroChan1998","description":"大学生信息管理系统——初学路上自己摸索实践的项目。科v学p上n网，优惠链接→https://panel3.touhou.tel/auth/register?code=ff27c26f6c","archived":false,"fork":false,"pushed_at":"2023-04-17T19:08:19.000Z","size":41845,"stargazers_count":120,"open_issues_count":5,"forks_count":47,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-15T23:30:26.655Z","etag":null,"topics":["intellij","layui","log4j","maven","mybatis","mysql","redis","spring","spring-mvc","tomcat"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KuroChan1998.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-03T13:59:11.000Z","updated_at":"2024-11-10T15:02:16.000Z","dependencies_parsed_at":"2022-08-27T19:21:42.741Z","dependency_job_id":null,"html_url":"https://github.com/KuroChan1998/Student-Information-Administration-System","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KuroChan1998%2FStudent-Information-Administration-System","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KuroChan1998%2FStudent-Information-Administration-System/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KuroChan1998%2FStudent-Information-Administration-System/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KuroChan1998%2FStudent-Information-Administration-System/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KuroChan1998","download_url":"https://codeload.github.com/KuroChan1998/Student-Information-Administration-System/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253240350,"owners_count":21876593,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["intellij","layui","log4j","maven","mybatis","mysql","redis","spring","spring-mvc","tomcat"],"created_at":"2024-08-03T07:00:44.282Z","updated_at":"2025-05-09T11:30:48.235Z","avatar_url":"https://github.com/KuroChan1998.png","language":"Java","funding_links":[],"categories":["资源清单"],"sub_categories":["Course Design on Application Software"],"readme":"## Brief Introduction\n这个项目是一个大学生信息管理系统,提供用户级别的登录注册资料管理,信息查询,信息修改（管理员权利），简单的数据可视化分析等功能，也有基本的安全性保障\n\n* SpringBoot+Mybatis分支：[https://github.com/KuroChan1998/Student-Information-Administration-System/tree/Sb_M](https://github.com/KuroChan1998/Student-Information-Administration-System/tree/Sb_M)\n* SpringBoot+Mybatis+Dubbo+Zookeeper分支：[https://github.com/KuroChan1998/Student-Information-Administration-System/tree/Sb_M_D_Z](https://github.com/KuroChan1998/Student-Information-Administration-System/tree/Sb_M_D_Z)\n\n## Release Notes\n\n对`Redis`和`SpringAOP`不太熟的初学者，下载[v1.1.0](https://pan.baidu.com/s/1yHjrk7gAycHRFapU_Waf4g)版本足够学习或完成课设了~([更多历史版本](#update_history))\n\n### v1.3.0 - 2019.10.14 (Current Version)\n\n*版本1.3.0，提升安全性，解决部分安全隐患 :*\n\n- 前端layUi数据表格，增加“筛选列”、“打印”、“导出”上方工具条。\n- 新增CsrfInterceptor拦截器，对修改请求进行CsrfToken的校验，有效防止CSRF攻击\n- 对注册用户信息后端服务层，强化在aop方法中对输入身份属性的校验，对“管理员”字段进行过滤，并抛出异常，防止攻击者拦截请求JSON数据进行修改以获得非法权限；对修改用户信息后端控制层，强化在UserController对应方法中对原身份属性和修改后身份属性的校验，对“管理员”字段进行过滤，防止攻击者拦截请求JSON数据进行修改以获得非法权限。\n- 感谢@[Mydearbaby](https://github.com/Mydearbaby)发现的[邮箱验证码绕过安全漏洞](https://github.com/KuroChan1998/Student-Information-Administration-System/issues/3)，在服务端发送验证码时新增一个标志位false，仅当服务端校验正确后才将此标志置true，可以有效避免攻击者拦截请求JSON数据进行修改以绕开验证码。\n\n\n\n\n\n## Technologies Used\n### 前端\n* 前端框架 : `layui`\n* 数据可视化框架 : `echarts`\n\n### 后端\n* IOC容器 : `Spring`\n* MVC框架 : `SpringMVC`\n* ORM框架 : `Mybatis`\n* 缓存技术：`Redis`\n* 数据库：`Mysql`\n* 日志框架 : `Log4j`\n\n## Project Structure\n```\n├─database                          // 数据库相关文件\n│  ├─design\t\t\t\t                  // 数据库设计\n│  │  └─1\n│  └─sql                            // 数据库初始化脚本文件\n├─git_screenshot                    // 存放README.md 中的图片\n├─src                               // 项目源代码目录\n│  ├─main                           //源代码目录\n│  │  ├─java\n│  │  │  └─com\n│  │  │      └─jzy          // java代码目录\n│  │  │          ├─controller       // 控制层\n│  │  │          ├─dao              // 持久层\n│  │  │          ├─dto              // 传输对象\n│  │  │          ├─entity           // 实体类\n│  │  │          ├─exception        // 自定义异常类\n│  │  │          ├─interceptor      // 拦截器\n│  │  │          ├─log              // 日志管理\n│  │  │          ├─service          // 服务层\n│  │  │          │  └─impl          // 服务层接口实现\n│  │  │          └─util             // 工具方法\n│  │  ├─resources                   // 资源文件目录\n│  │  │  └─com\n│  │  │      └─jzy\n│  │  │          └─mapper           // mybatis对dao接口的xml实现\n│  │  └─webapp                      // tomcat前端文件目录\n│  │      ├─static                  // 静态资源\n│  │      │  ├─custom               // 自定义静态资源\n│  │      │  └─plugins              // 插件类静态资源\n│  │      └─WEB-INF\n│  │          └─page                // jsp页面目录 \n│  └─test                           // 测试代码目录\n├─README.md                         // help\n├─ISSUES.md                         // 问题大全\n└─pom.xml                           // maven依赖\n```\n\n\n## Quick Start\n### 1 : 项目开发环境\n- IDE : `IntelliJ IDEA 2018.1.7`\n- 项目构建工具 : `Maven 3.x`\n- 数据库 : `Mysql 8.0.13`\n- Redis：`Redis server 3.2.100`\n- JDK版本 : `jdk 1.8`\n- Tomcat版本 : `Tomcat 8.x`\n\n\n### 2 : 项目的初始构建\n1. *在你的Mysql中，运行我提供的database/sql/init.sql 文件（注意mysql版本与sql脚本中部分代码的兼容性）, 成功会创建名为mydatabase2的数据库，以及user、student、teacher、class、major、college、title、grade八个表*\n\n*数据库物理模型如下 :*\n\n![Snipaste_2019-07-17_09-48-36](git_screenshot/Snipaste_2019-07-17_09-48-36.jpg)\n\n2. *进入src/main/resources修改dbconfig.properties配置文件,把数据库主机、端口、用户名和密码，改为你本地的*\n\n   ```properties\n   #mysql\n   jdbc.driver=com.mysql.cj.jdbc.Driver\n   #你的mysql连接url，localhost(本机)，端口：3306（默认），数据库：mydatabase2（上一步完成创建）\n   jdbc.url=jdbc:mysql://localhost:3306/mydatabase2?useUnicode=true\u0026characterEncoding=utf8\u0026serverTimezone=GMT%2B8\u0026useSSL=false\n   #你的mysql用户名\n   jdbc.username=root\n   #你的mysql密码\n   jdbc.password=123\n   ```\n\n3. *进入src/main/resources修改redis.properties配置文件,把数据库主机、端口、用户名和密码，改为你本地的*\n\n   ```properties\n   #你的redis主机地址\n   redis.host=localhost\n   #你的redis端口\n   redis.port=6379\n   #你的redis密码\n   redis.password=123\n   ```\n\n4. *进入src/main/resources查看log4j.properties，如果有必要可以修改日志输出路径，目前在D盘下，你可选择不修改跳过此步*\n\n5. *使用 IntelliJ IDEA 导入项目，选择Maven项目选项，一路点击next，即可将项目所需依赖导入（若依赖下载速度较慢，请参考百度更改国内镜像）。若有无法引入的依赖，可能是因为maven版本不同或是该依赖已过时不存在于现有maven仓库中，请前往maven官网映入最新的该类型依赖*\n\n![Snipaste_2019-07-17_08-47-37](git_screenshot/Snipaste_2019-07-17_08-47-37.jpg)\n\n![Snipaste_2019-07-17_08-49-48](git_screenshot/Snipaste_2019-07-17_08-49-48.jpg)\n\n5. *在 IntelliJ IDEA 中，配置我们的 Tomcat， 然后把使用Maven构建好的项目添加到Tomcat中，操作比较简单，相关方法可以参考百度*\n\n6. *运行项目，进入用户登录页面*\n\n![Snipaste_2019-05-04_08-02-50](git_screenshot/Snipaste_2019-05-04_08-02-50.jpg)\n\n\n7. *登录账户/密码(你也可以自行注册一个账户登录哟)*\n  - 管理员账户：000000000000/admin1\n  - 学生账户：516030910429/123456\n  - 教师账户：1000000001/123456\n\n### 3：项目的打包\n\n* 在配置好maven的环境变量的前提下，在项目根目录下cmd打开命令行，输入 `mvn clean package`，即可在target/目录下得到相应war包。\n\n* 将war手动部署到tomcat的webapp目录下（手动部署的方式可以参考百度，这里不详述），也可得到第二步一样的运行结果。\n\n\n\n## Detailed Functions\n### 用户服务\n* 登录：如上文图所示\n\n* 注册\n\n  ![Snipaste_2019-05-04_08-11-21](git_screenshot/Snipaste_2019-05-04_08-11-21.jpg)\n\n* 忘记密码后的重置密码（含发送邮箱验证码）\n\n  ![Snipaste_2019-05-04_08-12-27](git_screenshot/Snipaste_2019-05-04_08-12-27.jpg)\n\n* 登录进入主页\n\n  ![Snipaste_2019-09-12_10-35-03](git_screenshot/Snipaste_2019-09-12_10-35-03.jpg)\n\n* 修改基本资料\n\n  ![Snipaste_2019-07-04_08-19-12](git_screenshot/Snipaste_2019-07-04_08-19-12.jpg)\n\n* 修改密码\n\n  ![Snipaste_2019-07-17_09-23-03](git_screenshot/Snipaste_2019-07-17_09-23-03.jpg)\n\n* 修改绑定邮箱\n\n  ![Snipaste_2019-07-17_09-30-38](git_screenshot/Snipaste_2019-07-17_09-30-38.jpg)\n\n\n### 信息查询\n* 学生信息查询\n\n  * 查询所有信息\n\n    ![Snipaste_2019-07-17_09-31-05](git_screenshot/Snipaste_2019-07-17_09-31-05.jpg)\n\n  * 根据登录用户的用户名（应以学号注册）查询当前个人的学籍信息，若注册时未以真实学号注册，则无法查询到。\n\n    ![Snipaste_2019-07-17_09-32-12](git_screenshot/Snipaste_2019-07-17_09-32-12.jpg)\n\n  * 模糊查询搜索\n\n    ![Snipaste_2019-07-17_09-32-47](git_screenshot/Snipaste_2019-07-17_09-32-47.jpg)\n\n* 教师信息查询：类似学生信息查询，图略\n\n* 班级信息查询：类似学生信息查询，图略\n\n* 专业\u0026学院信息查询：类似学生信息查询，图略\n\n\n### 信息修改\n* 学生信息修改\n\n  * 此功能必须以管理员用户身份登录，否则会跳转至异常页面\n\n    ![Snipaste_2019-05-04_08-32-13](git_screenshot/Snipaste_2019-05-04_08-32-13.jpg)\n\n  * 编辑信息\n\n    ![Snipaste_2019-07-17_09-33-51](git_screenshot/Snipaste_2019-07-17_09-33-51.jpg)\n\n  * 添加\n\n    ![Snipaste_2019-07-17_09-34-24](git_screenshot/Snipaste_2019-07-17_09-34-24.jpg)\n\n  * 单条、多条删除\n\n    ![Snipaste_2019-07-17_09-34-56](git_screenshot/Snipaste_2019-07-17_09-34-56.jpg)\n\n* 教师信息修改：类似学生信息修改，图略\n\n* 班级信息修改：类似学生信息修改，图略\n\n* 专业\u0026学院信息修改：类似学生信息修改，图略\n\n\n### 拓展功能\n* 学生男女比可视化\n\n![Snipaste_2019-07-17_09-36-37](git_screenshot/Snipaste_2019-07-17_09-36-37.jpg)\n\n* 学生人数比可视化\n\n![Snipaste_2019-07-17_09-37-17](git_screenshot/Snipaste_2019-07-17_09-37-17.jpg)\n\n![Snipaste_2019-07-26_17-10-43](git_screenshot/Snipaste_2019-07-26_17-10-43.jpg)\n\n* 师资力量可视化\n\n  ![Snipaste_2019-07-26_17-12-36](git_screenshot/Snipaste_2019-07-26_17-12-36.jpg)\n\n## \u003cspan id='update_history'\u003eUpdate History\u003c/span\u003e\n\n### v1.2.0 - 2019.9.12\n\n*版本1.2.0，更新如下内容 :*\n\n- 修复了前端编辑添加弹窗在不同分辨率客户机上的显示大小问题\n- 新增Redis技术，用以缓存用户名密码，用户错误登录次数限制，邮箱验证码等等\n- 新增连续输错用户名密码超过一定次数后的限制时间\n- 更改了邮箱验证码有效时间的实现方式，由服务端java实现改为redis过期时间实现\n- 提升了服务端的安全性和新增异常处理机制，用aop实现入参的校验，对不合法的请求及其参数值用日志记录，并抛出异常\n- 优化了util包等源代码的结构，增强了可拓展性\n\nDownload: [https://github.com/KuroChan1998/Student-Information-Administration-System/tree/v1.2.0](https://github.com/KuroChan1998/Student-Information-Administration-System/tree/v1.2.0)\n\n### v1.1.0 - 2019.7.27\n\n*版本1.1.0，更新如下内容 :*\n\n- 优化数据表结构，对原有的表的部分字段进行了修改，并增加了title和grade两个表\n- 优化sql语句效率\n- 优化前端查询界面及查询方式，使其更加全面，对用户友好\n- 更新登录界面记住密码的cookie设置\n- 更新邮箱验证码服务，增加了验证码有效时间\n- 优化源代码结构，增强了规范性和可拓展性\n\nDownload: [https://pan.baidu.com/s/1yHjrk7gAycHRFapU_Waf4g](https://pan.baidu.com/s/1yHjrk7gAycHRFapU_Waf4g)\n\n### v1.0.0 - 2019.5.19\n\n*StuInfoAdmin-v1.0.0 的一切准备工作似乎都已到位。发布之弦，一触即发。*\n*不枉近百个日日夜夜与之为伴。因小而大，因弱而强。*\n\n*无论它能走多远，抑或如何支撑？至少我曾倾注全心，无怨无悔*\n\nDownload: [https://pan.baidu.com/s/1piVQnIFdz_BIoszIEzAJwQ](https://pan.baidu.com/s/1piVQnIFdz_BIoszIEzAJwQ)\n\n## Contact me\n\n- qq: 929703621\n- wechat: Jzy_bb_1998\n- e-mail: 929703621@qq.com\n- soul: despacito\n\n欢迎提出意见与建议~","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKuroChan1998%2FStudent-Information-Administration-System","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FKuroChan1998%2FStudent-Information-Administration-System","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FKuroChan1998%2FStudent-Information-Administration-System/lists"}