基于python+django+Mysql的学生信息管理系统
后端框架数据库: MySQL前端模板: Django模板引擎(HTML/CSS/JavaScript)部署工具: 可选Nginx + Gunicorn(本地开发可用Django内置服务器)
·
技术栈概述
- 后端框架: Python + Django
- 数据库: MySQL
- 前端模板: Django模板引擎(HTML/CSS/JavaScript)
- 部署工具: 可选Nginx + Gunicorn(本地开发可用Django内置服务器)
功能模块设计
学生信息管理
- 学生信息增删改查(学号、姓名、性别、班级、联系方式等)
- 支持Excel导入导出
- 分页与模糊搜索(按姓名、学号筛选)
教师信息管理
- 教师信息维护(工号、姓名、所属院系、职称)
- 教师授课班级关联
课程与成绩管理
- 课程信息维护(课程代码、名称、学分、授课教师)
- 成绩录入与统计(支持按课程/班级查看平均分、最高分)
用户权限控制
- 角色划分:管理员(全权限)、教师(管理课程/成绩)、学生(查看个人信息/成绩)
- 登录验证与Session管理
数据库设计(MySQL)
核心表结构
表1: Student
CREATE TABLE Student (
student_id VARCHAR(20) PRIMARY KEY,
name VARCHAR(50) NOT NULL,
gender ENUM('Male', 'Female'),
class_name VARCHAR(50),
phone VARCHAR(15),
email VARCHAR(100)
);
表2: Teacher
CREATE TABLE Teacher (
teacher_id VARCHAR(20) PRIMARY KEY,
name VARCHAR(50) NOT NULL,
department VARCHAR(100),
title VARCHAR(50)
);
表3: Course
CREATE TABLE Course (
course_id VARCHAR(20) PRIMARY KEY,
name VARCHAR(100) NOT NULL,
credit INT,
teacher_id VARCHAR(20),
FOREIGN KEY (teacher_id) REFERENCES Teacher(teacher_id)
);
表4: Score
CREATE TABLE Score (
id INT AUTO_INCREMENT PRIMARY KEY,
student_id VARCHAR(20),
course_id VARCHAR(20),
score DECIMAL(5,2),
FOREIGN KEY (student_id) REFERENCES Student(student_id),
FOREIGN KEY (course_id) REFERENCES Course(course_id)
);
系统关键代码示例
学生信息查询(Django View)
from django.shortcuts import render
from .models import Student
def student_list(request):
keyword = request.GET.get('keyword', '')
students = Student.objects.filter(name__icontains=keyword).order_by('student_id')
return render(request, 'student/list.html', {'students': students})
成绩录入逻辑
from django.views.decorators.http import require_POST
from django.http import JsonResponse
@require_POST
def add_score(request):
student_id = request.POST.get('student_id')
course_id = request.POST.get('course_id')
score_value = request.POST.get('score')
Score.objects.update_or_create(
student_id=student_id,
course_id=course_id,
defaults={'score': score_value}
)
return JsonResponse({'status': 'success'})
测试设计
单元测试(Django TestCase)
from django.test import TestCase
from .models import Student
class StudentModelTest(TestCase):
def test_create_student(self):
student = Student.objects.create(
student_id='2023001',
name='张三',
gender='Male',
class_name='CS101'
)
self.assertEqual(student.name, '张三')
接口测试(使用Postman)
- 测试接口:
/api/score/add/ - 请求方法: POST
- 参数:
student_id=2023001&course_id=MATH101&score=85 - 预期响应:
{"status": "success"}
性能测试建议
- 使用Locust模拟并发用户(如100并发录入成绩)
- 监控数据库查询时间(Django Debug Toolbar)
部署与扩展
- 生产部署: Nginx反向代理 + Gunicorn启动Django
- 扩展功能: 可集成Redis缓存学生查询结果,或Celery异步处理Excel导入任务
如果需要完整源码或更详细的实现步骤,可进一步分析具体需求场景。













更多推荐
所有评论(0)