From b4dd92683866ef121910a96052ac03b3b5c28068 Mon Sep 17 00:00:00 2001 From: jisyoona <664501563@qq.com> Date: Mon, 11 Sep 2023 16:20:20 +0800 Subject: [PATCH] updata models --- EduSystemServer/Student/urls.py | 6 +- EduSystemServer/Student/views.py | 124 ++++++++++++++++++++++++++++++- EduSystemServer/course/models.py | 4 +- 3 files changed, 130 insertions(+), 4 deletions(-) diff --git a/EduSystemServer/Student/urls.py b/EduSystemServer/Student/urls.py index 56d8191..3b08799 100644 --- a/EduSystemServer/Student/urls.py +++ b/EduSystemServer/Student/urls.py @@ -4,5 +4,9 @@ from .views import * urlpatterns = [ path("", studnets), - path("selectCourse", get_select_course_by_id) + path("selectCourse", get_select_course_by_id), + path("selectGrade/", search_grade), + path("changeInfo/", change_info), + path("chooseCourse/", choose_course), + path("deleteCourse/",delete_course) ] \ No newline at end of file diff --git a/EduSystemServer/Student/views.py b/EduSystemServer/Student/views.py index 252a674..54a43d0 100644 --- a/EduSystemServer/Student/views.py +++ b/EduSystemServer/Student/views.py @@ -4,6 +4,7 @@ from django.http import HttpRequest from django.http import JsonResponse from EduSystemServer.utils import ResponseUtil from .models import Student +from teacher.models import Teacher from course.models import SC, Course from django.views.decorators.csrf import csrf_exempt from django.http import QueryDict @@ -99,7 +100,8 @@ def studnets(request): return JsonResponse(ResponseUtil.ok(data, "修改成功!")) -def search_grade(request): +# 查询成绩 +def search_grade(request): # 获取SID,返回该同学的所有成绩 if request.method == "GET": sid = request.GET.get('sid') cid = SC.objects.filter(sid_id=sid).values() @@ -117,5 +119,125 @@ def search_grade(request): return JsonResponse(ResponseUtil.ok(data_list, "成绩查询成功!")) +# 修改信息 +@csrf_exempt +def change_info(request): + if request.method == "GET": + sid = request.GET.get('sid') + info = Student.objects.filter(sid=sid).values() + data = { + '学生编号': sid, + '用户账号': info[0]['username'], + '用户密码': info[0]['password'], + '姓名': info[0]['name'], + '性别': info[0]['sex'], + '年级': info[0]['grade'], + '班级': info[0]['class_name'], + '专业': info[0]['major'], + } + return JsonResponse(ResponseUtil.ok(data, "个人信息查询成功!")) + elif request.method == "POST": + sid = request.GET.get('sid') + stu_info = Student.objects.get(sid=sid) + username = request.POST.get('username') or stu_info.username + password = request.POST.get('password') or stu_info.password + name = request.POST.get('name') or stu_info.name + sex = request.POST.get('sex') or stu_info.sex + grade = request.POST.get('grade') or stu_info.grade + class_name = request.POST.get('class_name') or stu_info.class_name + major = request.POST.get('major') or stu_info.major + Student.objects.filter(sid=sid).update(username=username, password=password, name=name, sex=sex, grade=grade, + class_name=class_name, major=major) + data = { + '学生编号': sid, + '用户账号': username, + '用户密码': password, + '姓名': name, + '性别': sex, + '年级': grade, + '班级': class_name, + '专业': major, + } + return JsonResponse(ResponseUtil.ok(data, "学生信息修改成功!")) + + +# 选课 +@csrf_exempt +def choose_course(request): + if request.method == "GET": # 将所有课程信息返回 + course_list = [] + course = Course.objects.all().values() + for i in range(len(course)): + teacher = Teacher.objects.filter(tid=course[i]['tid_id']).values('name') + data = { + '课程编号': course[i]['cid'], + '课程名称': course[i]['name'], + '课程类型': course[i]['type'], + '课程学分': course[i]['credit'], + '教师': teacher[0]['name'], + } + course_list.append(data) + return JsonResponse(ResponseUtil.ok(course_list, "课程查询成功!")) + elif request.method == "POST": # 将选择的课程添加到选课表 + sid = request.GET.get('sid') + cid = request.POST.get('cid_id') + try: + SC.objects.create(sid_id=sid, cid_id=cid) + course = Course.objects.filter(cid=cid).values() + teacher = Teacher.objects.filter(tid=course[0]['tid_id']).values('name') + data = { + '课程编号': cid, + '课程名称': course[0]['name'], + '课程类型': course[0]['type'], + '课程学分': course[0]['credit'], + '教师': teacher[0]['name'], + } + return JsonResponse(ResponseUtil.ok(data, "选课成功!")) + except: + return JsonResponse(ResponseUtil.error("选课失败!")) + + +# 退课 +@csrf_exempt +def delete_course(request): + if request.method == "GET": # 返回用户所有选择的课程 + sid = request.GET.get('sid') + course_list = [] + try: + cid = SC.objects.filter(sid_id=sid).values('cid_id') # 通过选课表找到学生选的所有课程 + for i in range(len(cid)): + course = Course.objects.filter(cid=cid[i]['cid_id']).values() # 在课程表中找课程详细信息 + teacher = Teacher.objects.filter(tid=course[0]['tid_id']).values('name') + data = { + '课程编号': course[0]['cid'], + '课程名称': course[0]['name'], + '课程类型': course[0]['type'], + '课程学分': course[0]['credit'], + '教师': teacher[0]['name'], + } + course_list.append(data) + return JsonResponse(ResponseUtil.ok(course_list, "课程查询成功!")) + except: + return JsonResponse(ResponseUtil.error('你还没有选课!')) + elif request.method == "POST": # 将用户选择的课程删除 + sid = request.GET.get('sid') + cid = request.POST.get('cid') + try: + course = Course.objects.filter(cid=cid).values() # 在课程表中找课程详细信息 + teacher = Teacher.objects.filter(tid=course[0]['tid_id']).values('name') + data = { + '课程编号': course[0]['cid'], + '课程名称': course[0]['name'], + '课程类型': course[0]['type'], + '课程学分': course[0]['credit'], + '教师': teacher[0]['name'], + } + SC.objects.filter(sid_id=sid, cid_id=cid).delete() + return JsonResponse(ResponseUtil.ok(data, "退课成功!")) + except: + JsonResponse(ResponseUtil.error('退课失败!')) + + + def get_select_course_by_id(request): pass diff --git a/EduSystemServer/course/models.py b/EduSystemServer/course/models.py index e308645..247a6ab 100644 --- a/EduSystemServer/course/models.py +++ b/EduSystemServer/course/models.py @@ -25,8 +25,8 @@ class Course(models.Model): class SC(models.Model): sid = models.ForeignKey(Student, to_field="sid", on_delete=models.CASCADE, name="sid") cid = models.ForeignKey(Course, to_field="cid", on_delete=models.CASCADE, name="cid") - middle_grade = models.IntegerField(name="middle_grade") - end_grade = models.IntegerField(name="end_grade") + middle_grade = models.IntegerField(name="middle_grade", blank=True, null=True) + end_grade = models.IntegerField(name="end_grade", blank=True, null=True) def to_dict(self): return {"sid": self.sid, "cid": self.cid, "middle_grade": self.middle_grade, "end_grade": self.end_grade}