学生信息管理系统
项目简介
这是一个基于Django框架和MySQL 8数据库开发的学生信息管理系统。系统提供了完整的学生信息管理功能,包括学生注册登录、信息查看编辑,以及管理员对学生和班级的全面管理功能。
技术栈
- 后端框架: Django 4.2+
- 数据库: MySQL 8.0
- 前端技术: HTML5, CSS3, JavaScript
- Python版本: Python 3.8+
核心功能
学生端功能
- 用户注册: 学生可以自主注册账号,填写个人信息
- 用户登录: 使用用户名和密码登录系统
- 查看信息: 查看自己的完整个人信息
- 编辑信息: 编辑和更新自己的个人信息(学号不可修改)
管理员功能
-
学生管理
- 查看所有学生列表
- 按班级筛选学生
- 搜索学生(支持学号、姓名、电话搜索)
- 添加新学生
- 编辑学生信息
- 删除学生
-
班级管理
- 查看所有班级列表
- 添加新班级
- 编辑班级信息
- 删除班级
-
数据统计
- 查看学生总数
- 查看班级总数
- 快捷操作面板
项目特点
1. 权限分离设计
系统采用了严格的权限分离机制:
- 学生用户只能查看和编辑自己的信息
- 管理员拥有完整的系统管理权限
- 登录后根据用户类型自动跳转到对应的界面
2. 统一的界面设计
所有页面采用统一的设计风格:
- 配色方案: 使用紫色渐变主题色(#667eea - #764ba2)
- 布局结构: 完整的Header导航栏 + 主内容区域 + Footer页脚
- 响应式设计: 支持PC端和移动端自适应
- 一致的表单样式: 所有表单页面保持统一的视觉风格
3. 独立的页面结构
- 列表页面和编辑页面完全分离
- 添加、编辑功能使用独立页面,不与列表页面混合
- 清晰的页面导航和面包屑路径
4. 本地静态资源
- 所有CSS和JavaScript文件都存储在本地
- 不依赖任何在线CDN资源
- 确保系统可以在离线环境下正常运行
5. 完整的中文支持
- 所有界面文案使用中文
- 数据库字段注释使用中文
- 错误提示和成功消息使用中文
项目结构
djangostus/
├── student_system/ # Django项目配置目录
│ ├── __init__.py
│ ├── settings.py # 项目配置文件
│ ├── urls.py # 主URL配置
│ ├── wsgi.py
│ └── asgi.py
├── students/ # 学生管理应用
│ ├── __init__.py
│ ├── models.py # 数据模型(学生、班级)
│ ├── views.py # 视图函数
│ ├── urls.py # 应用URL配置
│ ├── admin.py # 后台管理配置
│ └── apps.py
├── templates/ # HTML模板目录
│ ├── base.html # 基础模板
│ ├── login.html # 登录页面
│ ├── register.html # 注册页面
│ ├── student/ # 学生端模板
│ │ ├── dashboard.html
│ │ └── edit.html
│ └── admin/ # 管理员端模板
│ ├── dashboard.html
│ ├── student_list.html
│ ├── student_add.html
│ ├── student_edit.html
│ ├── class_list.html
│ ├── class_add.html
│ └── class_edit.html
├── static/ # 静态资源目录
│ ├── css/
│ │ └── style.css # 主样式文件
│ └── js/
│ └── main.js # 主JavaScript文件
├── init_database.sql # 数据库初始化SQL脚本
├── manage.py # Django管理脚本
└── README.md # 项目文档
安装部署
1. 环境准备
确保已安装以下软件:
- Python 3.8+
- MySQL 8.0
- pip包管理器
2. 安装依赖
pip install django==4.2
pip install pymysql
注意:Windows系统推荐使用pymysql,已在项目中配置好,无需额外设置。
3. 数据库配置
3.1 导入SQL脚本
使用MySQL客户端或命令行导入数据库初始化脚本:
mysql -u root -p < init_database.sql
或者在MySQL命令行中执行:
source /path/to/init_database.sql
3.2 修改数据库连接配置
编辑student_system/settings.py文件,修改数据库连接信息:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'student_info_system',
'USER': 'root',
'PASSWORD': '你的MySQL密码',
'HOST': 'localhost',
'PORT': '3306',
}
}
4. 运行Django迁移
python manage.py migrate
5. 创建管理员账号
python manage.py createsuperuser
按提示输入管理员用户名、邮箱和密码。建议使用:
- 用户名: admin
- 密码: admin123(或其他安全密码)
6. 启动开发服务器
python manage.py runserver
访问 http://127.0.0.1:8000 即可使用系统。
使用说明
管理员登录
- 访问 http://127.0.0.1:8000/login/
- 使用创建的管理员账号登录
- 登录后自动跳转到管理员控制台
学生注册和登录
- 访问 http://127.0.0.1:8000/register/
- 填写注册信息(学号、姓名、性别等)
- 注册成功后使用用户名和密码登录
- 登录后可以查看和编辑自己的信息
数据库设计
班级表 (class)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 主键,自增 |
| class_name | VARCHAR(50) | 班级名称,唯一 |
| grade | VARCHAR(20) | 年级 |
| description | TEXT | 班级描述 |
| created_at | DATETIME | 创建时间 |
| updated_at | DATETIME | 更新时间 |
学生表 (student)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 主键,自增 |
| user_id | INT | 关联用户ID,唯一 |
| student_id | VARCHAR(20) | 学号,唯一 |
| name | VARCHAR(50) | 姓名 |
| gender | VARCHAR(1) | 性别(M/F) |
| birth_date | DATE | 出生日期 |
| class_info_id | BIGINT | 班级ID,外键 |
| phone | VARCHAR(20) | 联系电话 |
| VARCHAR(254) | 邮箱 | |
| address | TEXT | 家庭住址 |
| created_at | DATETIME | 创建时间 |
| updated_at | DATETIME | 更新时间 |
代码特点
1. MVC架构清晰
- Models: 使用Django ORM定义数据模型,包含完整的字段验证和关系定义
- Views: 视图函数职责单一,逻辑清晰,易于维护
- Templates: 模板继承结构合理,代码复用性高
2. 安全性考虑
- 使用Django内置的用户认证系统
- CSRF保护机制
- 密码加密存储
- SQL注入防护(使用ORM)
- XSS攻击防护(模板自动转义)
3. 用户体验优化
- 友好的错误提示信息
- 表单验证反馈
- 操作成功提示
- 删除操作二次确认
- 响应式设计适配移动端
4. 代码规范
- 遵循PEP 8 Python编码规范
- 函数和类都有清晰的文档字符串
- 变量命名语义化
- 代码注释适当
功能截图说明
登录页面
- 简洁的登录表单
- 支持跳转到注册页面
学生注册页面
- 完整的信息填写表单
- 实时表单验证
- 班级下拉选择
学生端界面
- 个人信息展示卡片
- 信息编辑页面
- 统一的导航栏
管理员端界面
-
数据统计仪表板
-
学生列表(支持筛选和搜索)
-
班级管理列表
-
添加/编辑表单页面