Skip to content

校园通行码预约管理系统 - Java Web 课程设计

License

Notifications You must be signed in to change notification settings

cui-gu/campus-access-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎓 校园通行码预约管理系统

Campus Access Code Appointment Management System

一个基于 Java Web 的校园访客预约管理系统

支持公务预约和社会预约两种模式,提供完整的后台管理功能

Java MySQL License

功能介绍快速开始技术栈文档


👋 写在前面

💡 嗨!这是我的 Web 应用开发课程设计作业。

作为一个还在学习路上的学生,代码水平有限,可能有很多不完善的地方 🙈

如果你也在做类似的课设,或者想学习 Java Web 开发,希望这个项目能给你一些参考和帮助!能帮到大家我会特别开心 😊

📦 项目包含

  • 完整的源代码 - 包含前端和后端实现
  • 数据库脚本 - 所有表结构的 SQL 文件
  • 详细文档 - 技术报告、使用说明、课程设计报告(在 docs/ 目录)[想提前看界面效果的伙伴可以到docs文件夹下的pdf里查看]
  • 部署指南 - 从环境配置到运行的完整步骤

🌟 如果这个项目对你有帮助

  • 给个 Star 支持一下
  • 🔀 Fork 后自己改改玩玩
  • 🐛 提 Issue 指出问题或建议
  • 💬 一起交流 学习心得

📋 项目简介

本系统是一个 Web 应用开发课程设计项目,旨在为校园访客管理提供数字化解决方案。

系统实现了 访客预约、审核、通行码生成 等核心功能,采用 Java Web 技术栈开发。


✨ 主要功能

👥 访客端功能

功能 说明
🏢 公务预约 校外人员公务访问预约,需填写接待人信息
👤 社会预约 普通访客预约入校
🔍 预约查询 通过身份证号查询预约状态
📱 通行码生成 审核通过后自动生成二维码通行凭证

🛡️ 管理端功能

功能 说明
预约审核 审核公务预约和社会预约申请
🚫 黑名单管理 管理禁止入校人员名单
🏛️ 部门管理 管理校内部门信息
👮 权限管理 多级管理员权限控制(超级管理员、部门管理员)
📝 操作日志 记录所有管理操作,支持日志查询和统计
📊 数据统计 预约数据可视化展示

🛠️ 技术栈

后端技术

  • Java 23
  • 🌐 Jakarta EE 11
    • Servlet
    • JSP
    • JSTL
  • 🗄️ MySQL 8.0
  • 🔗 HikariCP
  • 📦 Maven

前端技术

  • 🎨 Bootstrap 5.3
  • 💻 jQuery
  • 🎭 Font Awesome
  • Animate.css

其他技术

  • 📱 ZXing (二维码)
  • 🔐 SM4 (国密加密)
  • 📋 Logback (日志)
  • 📄 Gson (JSON)

📦 环境要求

环境 版本要求
JDK 23 或更高版本
📦 Maven 3.6+
🗄️ MySQL 8.0+
🚀 Tomcat 10.1+ (支持 Jakarta EE 11)
🌐 浏览器 Chrome/Firefox/Edge 最新版本

🚀 快速开始

💡 提示:完整的部署步骤如下,跟着做就能跑起来!

📥 1. 克隆项目

git clone <repository-url>
cd <project-directory>

🗄️ 2. 配置数据库

📌 创建数据库

CREATE DATABASE webstore CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

📌 导入数据表

按顺序执行 sql脚本/sql脚本/ 目录下的 SQL 文件:

mysql -u root -p webstore < sql脚本/sql脚本/admins.sql
mysql -u root -p webstore < sql脚本/sql脚本/departments.sql
mysql -u root -p webstore < sql脚本/sql脚本/official_users.sql
mysql -u root -p webstore < sql脚本/sql脚本/social_users.sql
mysql -u root -p webstore < sql脚本/sql脚本/official_appointments.sql
mysql -u root -p webstore < sql脚本/sql脚本/social_appointments.sql
mysql -u root -p webstore < sql脚本/sql脚本/official_companions.sql
mysql -u root -p webstore < sql脚本/sql脚本/social_companions.sql
mysql -u root -p webstore < sql脚本/sql脚本/blacklist.sql
mysql -u root -p webstore < sql脚本/sql脚本/operation_log.sql

⚙️ 3. 配置数据库连接

⚠️ 重要:这一步必须做,否则无法连接数据库!

复制配置文件模板并修改数据库密码:

cd 项目工程源代码/web/src/main/webapp/META-INF/
cp context.xml.example context.xml

编辑 context.xml 文件,修改数据库连接信息:

<Resource
    name="jdbc/webstoreDS"
    username="root"
    password="YOUR_DATABASE_PASSWORD"
    ...
/>

🔒 安全提示context.xml 文件已添加到 .gitignore,不会被提交到 Git 仓库。

🔨 4. 编译项目

cd 项目工程源代码/web
mvn clean package

🚀 5. 部署运行

💡 方式一:使用 IDE(推荐)

  1. 使用 IntelliJ IDEA 或 Eclipse 导入 Maven 项目
  2. 配置 Tomcat 10.1+ 服务器
  3. 部署并运行项目

💡 方式二:手动部署

  1. 将生成的 target/web-1.0-SNAPSHOT.war 复制到 Tomcat 的 webapps 目录
  2. 启动 Tomcat
  3. 访问 http://localhost:8080/web-1.0-SNAPSHOT/

🌐 6. 访问系统

入口 地址
🏠 访客端首页 http://localhost:8080/web-1.0-SNAPSHOT/
🔐 管理员登录 http://localhost:8080/web-1.0-SNAPSHOT/platform/login.jsp

👤 创建管理员账号

默认管理员账号需要在数据库中手动创建,或通过 SQL 插入:

INSERT INTO admins (name, nickname, password, role, socialRight, officalRight) 
VALUES ('[管理员姓名]', 'admin', '[密码]', 'superAdmin', 1, 1);

📁 项目结构

.
├── docs/                             # 📚 项目文档
│   ├── 技术报告.pdf                  # 技术实现报告
│   ├── 系统使用说明.pdf              # 用户使用手册
│   └── 课程设计报告.pdf              # 完整课设报告
├── sql脚本/                          # 数据库脚本
│   └── sql脚本/                      # SQL 建表脚本
├── 项目工程源代码/
│   └── web/                          # Web 应用主目录
│       ├── src/
│       │   ├── main/
│       │   │   ├── java/
│       │   │   │   └── com/
│       │   │   │       ├── platform/  # 管理端代码
│       │   │   │       │   ├── controller/  # 控制器
│       │   │   │       │   ├── Dao/         # 数据访问层
│       │   │   │       │   └── model/       # 数据模型
│       │   │   │       └── user/      # 访客端代码
│       │   │   │           ├── servlet/     # Servlet
│       │   │   │           ├── Dao/         # 数据访问层
│       │   │   │           ├── model/       # 数据模型
│       │   │   │           └── Util/        # 工具类
│       │   │   ├── resources/        # 配置文件
│       │   │   └── webapp/           # Web 资源
│       │   │       ├── platform/     # 管理端页面
│       │   │       ├── user/         # 访客端页面
│       │   │       └── META-INF/     # 配置文件
│       │   └── test/                 # 测试代码
│       └── pom.xml                   # Maven 配置
└── README.md                         # 本文件

💡 提示docs/ 目录下有完整的技术报告、使用说明和课程设计报告,如果你也在做类似的课设,可以参考文档的写作思路和格式。


🔒 安全说明

🛡️ 隐私保护:本项目已做好安全处理

  • ✅ 数据库密码等敏感信息已通过 .gitignore 排除,不会提交到版本库
  • ✅ 建议在生产环境中使用环境变量管理敏感配置
  • ✅ 身份证号等敏感数据在数据库中应进行加密存储(当前版本支持 SM4 加密)

💭 一些碎碎念

💬 开发心得

这是我第一次做比较完整的 Web 项目,从需求分析到编码实现,踩了不少坑,也学到了很多东西

代码可能不够优雅,架构也不够完美,但每一行都是认真写的。如果你发现了 bug 或者有更好的实现方式,非常欢迎提 Issue 或 PR 告诉我!

🙏 特别感谢在开发过程中帮助过我的老师和同学们


🔍 已知的不足与改进空间

📝 坦诚说明:作为一个学习项目,系统还有很多可以改进的地方

作为初学者的作品,我深知这个项目还有许多不完善之处。在此诚恳地列出一些已知的问题,也希望能给其他同学一些参考和警示:

🔐 安全方面

问题 说明 改进建议
🔒 加密不完整 对身份证号进行了 SM4 加密,但电话号码等敏感信息未加密 建议对所有个人敏感信息统一加密处理
数据验证不足 未对身份证号格式进行严格校验(如校验位验证) 可以添加身份证号合法性验证算法
📱 手机号验证 手机号只做了简单的格式检查 建议增加运营商号段验证
🔑 密码强度 密码策略较为简单 可以增加密码强度要求和加盐哈希

🏗️ 架构方面

问题 说明
📦 代码复用 部分 DAO 层代码存在重复
🎯 异常处理 异常处理不够细致,有些地方只是简单打印日志
🔄 事务管理 部分复杂操作的事务管理可以更完善
📊 SQL 注入 虽然使用了 PreparedStatement,但部分动态 SQL 拼接需要更谨慎

🎨 前端方面

问题 说明
📱 移动端适配 响应式设计还不够完善
无障碍访问 缺少无障碍功能支持
性能优化 前端资源可以进一步压缩和优化

💡 功能方面

  • 缺少预约时间冲突检测
  • 没有实现邮件/短信通知功能
  • 数据导出功能比较基础
  • 缺少数据备份和恢复机制

🎯 为什么要列出这些问题?

  1. 学习态度:承认不足是进步的第一步
  2. 帮助他人:让其他同学知道这些坑,避免重复踩坑
  3. 欢迎指导:希望有经验的开发者能给予指点
  4. 持续改进:这些都是未来可以优化的方向

💪 如果你有好的解决方案,非常欢迎提 PR 或 Issue 讨论!

我们一起学习,一起进步!


📚 相关文档

📂 完整的课设文档都在 docs/ 目录下

文档 内容
📘 技术报告.pdf 详细的技术实现说明,包括系统架构、数据库设计、关键技术等
📗 系统使用说明.pdf 面向用户的操作手册,包含访客端和管理端的使用指南
课程设计课报告.pdf 完整的课程设计报告,包括需求分析、设计、实现、测试等

💡 提示:如果你也在写课设报告,可以参考这些文档的结构和内容组织方式。


📄 许可证

本项目采用 MIT 许可证,仅用于学习和教学目的。

⚠️ 学术诚信提醒

  • ✅ 欢迎学习和参考
  • ✅ 可以 Fork 后自己修改
  • ❌ 请不要直接抄袭作为自己的作业提交哦~ 😉

🤝 贡献

虽方然这只是个课设项目,但欢迎大家一起改进!

方式 说明
🐛 发现 Bug 请提 Issue
💡 改进建议 欢迎提 Pull Request
觉得有帮助 给个 Star 鼓励一下吧!
💬 交流学习 在 Issue 里分享你的心得

📞 联系方式

  • 📧 有问题?通过 GitHub Issues 联系我
  • 💬 想交流?在 Issue 里聊聊学习心得
  • 🌟 喜欢项目?给个 Star 就是最大的支持!

🎉 如果这个项目对你有帮助,请给个 ⭐ Star 支持一下!

让我们一起学习进步 💪


Made with ❤️ by a student who loves coding

Happy Coding! 🚀