# 学生管理系统 **Repository Path**: zrt-cmd/student-management-system ## Basic Information - **Project Name**: 学生管理系统 - **Description**: 小学期项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-05 - **Last Updated**: 2026-07-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智慧星学生管理系统 基于 Django 3.0.4 开发的学生成绩管理系统,支持老师后台管理、学生前台查询。 ## 技术栈 | 类别 | 技术 | |------|------| | 后端框架 | Django 3.0.4 | | 数据库 | MySQL 8.0 | | Python 驱动 | PyMySQL | | Excel 处理 | openpyxl | | 前端 | Bootstrap + jQuery | ## 项目结构 ``` stu_project/ ├── config/ # Django 配置目录(settings/urls/wsgi) ├── teacher/ # 老师模块(模型+后台管理) ├── student/ # 学生模块(模型+后台管理+前台视图+表单) ├── score/ # 成绩模块(模型+后台管理) ├── uploadfile/ # 文件上传模块(Excel 批量导入) ├── utils/ # 公共工具(base_models 基类) ├── static/ # 静态资源(CSS/JS/图片) ├── templates/ # 前台 HTML 模板 ├── uploads/ # 上传文件存储目录 ├── manage.py # Django 管理入口 └── venv/ # Python 虚拟环境 ``` ## 数据模型 ``` Teacher(老师)──1:N──→ Student(学生)──1:N──→ Score(成绩) │ │ │ └──1:1──→ auth_user(学生登录账号) │ └──1:1──→ auth_user(老师登录账号) │ └──1:N──→ FileUpload(上传文件) ``` - `CreateUpdateMixin`(抽象基类):所有模型共享 `status`、`created_at`、`updated_at` 字段 - 删除为逻辑删除(status=False),外键使用级联删除 --- ## 环境搭建 ### 前提条件 - Python 3.6+ - Docker(运行 MySQL) ### 第一步:启动 MySQL ```bash docker run -d \ --name mysql-stu \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=123456 \ -e MYSQL_DATABASE=student_system \ mysql:8.0 ``` ### 第二步:创建虚拟环境 ```bash python3 -m venv venv source venv/bin/activate # Linux/Mac # 或 venv\Scripts\activate # Windows ``` ### 第三步:安装依赖 ```bash pip install Django==3.0.4 openpyxl pymysql ``` ### 第四步:数据库迁移 ```bash python manage.py makemigrations python manage.py migrate ``` 迁移完成后 MySQL 中会生成 14 张表(10 张系统表 + 4 张业务表)。 ### 第五步:创建超级管理员 ```bash python manage.py createsuperuser ``` 按提示输入用户名、邮箱、密码。 ### 第六步:启动项目 ```bash python manage.py runserver ``` 访问 http://127.0.0.1:8000/ 看到登录页面即成功。 --- ## 使用教程 ### 角色与账号体系 | 角色 | 登录入口 | 用户名 | 初始密码 | 权限 | |------|----------|--------|----------|------| | 超级管理员 | `/admin` | 自定义(如 admin) | 自定义 | 全部模块 + 创建老师 | | 老师 | `/admin` | 邮箱(自动生成) | `t123456` | 学生管理 + 成绩管理 + 文件上传 | | 学生 | `/`(前台) | 学号(自动生成) | `123456` | 查看个人成绩 + 修改密码 | > 老师和学生的登录账号由系统在后台添加数据时自动创建,无需手动注册。 --- ### 一、超级管理员操作 #### 1. 登录后台 访问 http://127.0.0.1:8000/admin/ ,用超级管理员账号登录。 #### 2. 创建老师 左侧菜单 → **老师信息** → **增加**,填写: - 姓名、邮箱、班级名称、性别、手机号 保存后系统自动: - 以邮箱作为用户名创建后台登录账号 - 密码为 `t123456`(在 `config/settings.py` 中配置) #### 3. 创建权限组(可选但推荐) 1. 左侧菜单 → **认证和授权** → **组** → **增加** 2. 组名填 `老师` 3. 权限选择:`student | 学生信息`、`score | 成绩信息`、`upload file | 上传文件` 的所有权限 4. 左侧菜单 → **认证和授权** → **用户**,将老师用户加入该组 > ⚠️ 设置权限组后,老师登录只能看到学生、成绩、文件管理三个模块,无法看到"老师信息"模块。 --- ### 二、老师操作 #### 1. 登录后台 访问 http://127.0.0.1:8000/admin/ ,使用**邮箱**和初始密码 **`t123456`** 登录。 > 💡 建议使用浏览器无痕模式(Chrome: `Ctrl+Shift+N`),避免与管理员 session 冲突。 #### 2. 手动添加学生 左侧菜单 → **学生信息** → **增加**,填写学号、姓名、性别、电话、出生日期。 保存后系统自动: - 以学号为用户名创建学生登录账号 - 密码为 `123456` - 将当前老师设为学生所属老师 #### 3. 手动添加成绩 左侧菜单 → **成绩信息** → **增加**,选择考试名称、学生、分数。 #### 4. 批量上传学生(Excel) 左侧菜单 → **上传文件** → **增加**: 1. 选择文件类型为"学生信息" 2. 上传 Excel 文件(`.xls` / `.xlsx`) Excel 格式(不含标题行): | 学号 | 姓名 | 性别 | 出生日期 | 联系电话 | |------|------|------|----------|----------| | 2024001 | 张三 | 男 | 2000-01-01 | 13800000001 | | 2024002 | 李四 | 女 | 2000-02-01 | 13800000002 | 系统会自动: - 创建学生登录账号(学号 / `123456`) - 跳过重复学号并提示过滤条数 - 将学生绑定到当前老师 #### 5. 批量上传成绩(Excel) 上传文件,选择"成绩信息"类型: | 考试名称 | 学号 | 分数 | |----------|------|------| | 期中考试 | 2024001 | 85.5 | | 期中考试 | 2024002 | 92.0 | 系统会按学号查找学生,跳过无匹配或重复的科目记录。 --- ### 三、学生操作 #### 1. 登录前台 访问 http://127.0.0.1:8000/ ,输入**学号**和密码 **`123456`** 登录。 #### 2. 查看成绩 登录后首页直接展示个人所有成绩列表,点击可查看单科详情。 #### 3. 修改密码 登录后点击导航栏"修改密码",输入原密码和新密码即可。 #### 4. 退出登录 点击导航栏"退出登录"返回登录页。 --- ## 配置说明 关键配置位于 `config/settings.py`: ```python # 初始密码 TEACHRE_INIT_PASSWORD = 't123456' # 老师账号初始密码 STUDENT_INIT_PASSWORD = '123456' # 学生账号初始密码 # 登录 URL(未登录时自动跳转) LOGIN_URL = '/login/' # 语言/时区 LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'Asia/Shanghai' # 文件上传 MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads') ``` --- ## 常见问题 **Q: 添加学生时出现外键约束错误?** > 需要用**老师账号**登录后台添加学生,不能用超级管理员直接添加。学生必须关联到一位老师。 **Q: 老师登录后看不到任何管理模块?** > 超级管理员还没有将老师加入"老师"权限组。去"认证和授权 → 用户"中将老师加入对应组。 **Q: 学生登录提示"学号不存在"?** > 学号不是随意填的,需要在后台先由老师添加学生记录,系统才会为学生创建账号。 **Q: Excel 上传后没有反应?** > 确保文件格式为 `.xls` 或 `.xlsx`,且数据从第 1 行开始(无标题行)。检查学号列是否有空值。 **Q: MySQL 连接失败?** > 确认 Docker 容器正在运行:`docker ps | grep mysql-stu`。如果容器停止了:`docker start mysql-stu`。