# 学生课题提交系统 **Repository Path**: iskender/keti ## Basic Information - **Project Name**: 学生课题提交系统 - **Description**: 高中生研究性学习课程提交课题系统 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: iskender - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-17 - **Last Updated**: 2025-11-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 学生课题提交系统 ## 项目概述 学生课题提交系统是一个基于PHP和MySQL的Web应用,用于管理学生课题提交和查看。 **版本:** 1.0.0 **技术栈:** PHP 8.4.7 + MySQL 9.3.0 ## 目录结构 ``` yanjiu/ ├── api/ # API接口目录 │ └── get_projects.php # 获取课题列表API ├── assets/ # 静态资源目录 │ ├── css/ # CSS样式文件 │ │ ├── admin.css # 后台管理页面样式 │ │ ├── login.css # 登录页面样式 │ │ ├── styles.css # 学生提交页面样式 │ │ └── view_project.css # 课题详情页面样式 │ └── js/ # JavaScript文件 │ ├── carousel.js # 轮播功能脚本 │ └── form.js # 表单处理脚本 ├── includes/ # 公共函数库 │ ├── constants.php # 项目常量配置 │ ├── functions.php # 通用函数库 │ └── validation.php # 数据验证函数 ├── admin/ # 后台管理目录 │ └── index.php # 后台管理页面 ├── auth.php # 认证中间件 ├── config.php # 数据库配置 ├── database.sql # 数据库结构 ├── export.php # Excel导出功能 ├── index.php # 学生提交页面 ├── login.php # 登录页面 ├── logout.php # 登出功能 ├── submit.php # 表单提交处理 └── view_project.php # 课题详情查看 ``` ## 功能模块 ### 1. 学生提交模块 (index.php) - **左侧区域**: 课题提交表单 - 课题信息:课题名称、指导教师 - 团队信息:组长、组员(至少2名) - **右侧区域**: 已提交课题展示 - 自动滚动跑马灯效果 - 显示班级和课题名称 ### 2. 后台管理模块 (admin/index.php) - 课题列表查看 - 搜索和筛选功能 - Excel数据导出 - 课题详情查看 ### 3. 认证模块 - 管理员登录 (login.php) - 会话管理和超时控制 - 安全登出 (logout.php) ## 数据库设计 ### projects表(课题表) | 字段 | 类型 | 说明 | |------|------|------| | id | INT | 主键 | | project_name | VARCHAR(255) | 课题名称 | | leader_student_id | VARCHAR(50) | 组长学号 | | leader_name | VARCHAR(100) | 组长姓名 | | teacher_name | VARCHAR(100) | 指导教师 | | created_at | TIMESTAMP | 创建时间 | ### project_members表(组员表) | 字段 | 类型 | 说明 | |------|------|------| | id | INT | 主键 | | project_id | INT | 课题ID(外键) | | student_id | VARCHAR(50) | 组员学号 | | member_name | VARCHAR(100) | 组员姓名 | | created_at | TIMESTAMP | 创建时间 | ## 业务规则 ### 验证规则 - 学号格式:6位纯数字 - 最少组员:2名 - 学号唯一性:组长和组员学号不能重复 - 必填字段:课题名称、指导教师、组长信息、组员信息 ### 安全机制 - CSRF令牌保护 - 密码加密存储 - SQL注入防护(PDO预处理) - XSS防护(输出转义) - 会话超时控制(30分钟) ## 安装和部署 ### 1. 环境要求 - PHP >= 8.0 - MySQL >= 5.7 - PDO扩展 ### 2. 数据库配置 ```bash # 导入数据库结构 mysql -u root < database.sql # 修改config.php中的数据库连接信息 ``` ### 3. 启动服务 ### 4. 访问系统 - 学生提交页面: index.php - 后台管理页面: admin/index.php - 默认管理员账号: admin / admin123 ## API文档 ### GET /api/get_projects.php 获取所有已提交的课题列表 **响应格式:** ```json { "status": "success", "data": [ { "id": 1, "project_name": "AI分析系统", "leader_student_id": "250101", "created_at": "2025-11-17 10:30:00" } ], "count": 1 } ``` ## 维护说明 ### 代码规范 - 使用PHPDoc注释 - 函数命名采用snake_case - 常量使用大写字母和下划线 - 统一使用UTF-8编码 ### 配置文件 - `config.php`: 数据库连接配置 - `includes/constants.php`: 业务规则和消息配置 ### 公共函数库 - `includes/functions.php`: 通用辅助函数 - `includes/validation.php`: 数据验证函数 ### 扩展指南 1. 新增字段:按照 includes/constants.php 中定义的流程 2. 新增API:在api/目录创建文件,使用标准响应格式 3. 样式修改:在assets/css/目录添加样式文件 ## 技术特性 - **左右分栏布局**: Grid布局实现响应式设计 - **跑马灯效果**: CSS动画实现无缝滚动 - **Ajax提交**: Fetch API实现无刷新体验 - **模态框提示**: 友好的用户交互反馈 - **Excel导出**: HTML表格转Excel格式 ## 许可证 MIT License ## 联系方式 如有问题,请联系开发作者。