技术栈概述

  • 后端框架: 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导入任务

如果需要完整源码或更详细的实现步骤,可进一步分析具体需求场景。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐