Optimize code structure to improve code readability and maintainability.

This commit is contained in:
NianBroken
2024-05-06 20:46:28 +08:00 Unverified
parent 91344e99ab
commit c492f86356
6 changed files with 72 additions and 69 deletions
-6
View File
@@ -36,12 +36,6 @@
6. 显示未公布成绩的课程,即已选课但尚未出成绩的课程。
7. 显示异常的课程,即已出成绩但用户未选课的课程。
## 未来的计划
1. 重写[详细使用方法](https://github.com/NianBroken/ZFCheckScores/blob/main/DetailedUsage.md "详细使用方法")。
2. 增加显示学分,如 当前学分:54 / 280。
3. 代码重构。
## 使用方法
### 1. [Fork](https://github.com/NianBroken/ZFCheckScores/fork "Fork") 本仓库
+54 -51
View File
@@ -1,60 +1,63 @@
def get_grade(student_client, output_type="none"):
# 获取成绩信息
grade_data = student_client.get_grade("").get("data", {})
grade_data = student_client.get_grade().get("data", {})
grade = grade_data.get("courses", [])
# 遍历 grade 中的每个字典,将 title 中的中文括号替换为英文括号
for course_data_grade in grade:
course_data_grade["title"] = (
course_data_grade["title"].replace("", "(").replace("", ")")
# 成绩不为空时
if grade:
# 遍历 grade 中的每个字典,将 title 中的中文括号替换为英文括号
for course_data_grade in grade:
course_data_grade["title"] = (
course_data_grade["title"].replace("", "(").replace("", ")")
)
# 按照提交时间降序排序
sorted_grade = sorted(grade, key=lambda x: x["submission_time"], reverse=True)
# 学分总和
total_credit = sum(float(course["credit"]) for course in grade)
# 学分绩点总和
total_xfjd = sum(float(course["xfjd"]) for course in grade)
# (百分制成绩*学分)的总和
sum_of_percentage_grades_multiplied_by_credits = sum(
float(course["percentage_grades"]) * float(course["credit"])
for course in grade
)
# 按照提交时间降序排序
sorted_grade = sorted(grade, key=lambda x: x["submission_time"], reverse=True)
# GPA计算 (学分*绩点)的总和/学分总和
gpa = "{:.2f}".format(total_xfjd / total_credit)
# 学分总和
total_credit = sum(float(course["credit"]) for course in grade)
# 学分绩点总和
total_xfjd = sum(float(course["xfjd"]) for course in grade)
# (百分制成绩*学分)的总和
sum_of_percentage_grades_multiplied_by_credits = sum(
float(course["percentage_grades"]) * float(course["credit"]) for course in grade
)
# GPA计算 (学分*绩点)的总和/学分总和
gpa = "{:.2f}".format(total_xfjd / total_credit)
# 百分制GPA计算 (百分制成绩*学分)的总和/学分总和
percentage_gpa = "{:.2f}".format(
sum_of_percentage_grades_multiplied_by_credits / total_credit
)
# 初始化输出成绩信息字符串
integrated_grade_info = "成绩信息:"
# 遍历前8条成绩信息
for _, course in enumerate(sorted_grade[:8]):
# 整合成绩信息
integrated_grade_info += (
f"\n"
f"教学班ID{course['class_id']}\n"
f"课程名称:{course['title']}\n"
f"任课教师:{course['teacher']}\n"
f"成绩:{course['grade']}\n"
f"提交时间:{course['submission_time']}\n"
f"提交人姓名:{course['name_of_submitter']}\n"
f"------"
# 百分制GPA计算 (百分制成绩*学分)的总和/学分总和
percentage_gpa = "{:.2f}".format(
sum_of_percentage_grades_multiplied_by_credits / total_credit
)
if output_type == "grade":
return grade
elif output_type == "gpa":
return gpa
elif output_type == "percentage_gpa":
return percentage_gpa
elif output_type == "integrated_grade_info":
return integrated_grade_info
else:
return "获取成绩:参数缺失"
# 初始化输出成绩信息字符串
integrated_grade_info = "成绩信息:"
# 遍历前8条成绩信息
for _, course in enumerate(sorted_grade[:8]):
# 整合成绩信息
integrated_grade_info += (
f"\n"
f"教学班ID{course['class_id']}\n"
f"课程名称:{course['title']}\n"
f"任课教师:{course['teacher']}\n"
f"成绩:{course['grade']}\n"
f"提交时间:{course['submission_time']}\n"
f"提交人姓名:{course['name_of_submitter']}\n"
f"------"
)
if output_type == "grade":
return grade
elif output_type == "gpa":
return gpa
elif output_type == "percentage_gpa":
return percentage_gpa
elif output_type == "integrated_grade_info":
return integrated_grade_info
else:
return "获取成绩:参数缺失"
+9 -7
View File
@@ -14,17 +14,19 @@ def get_info(student_client, output_type="none"):
)
grade = get_grade(student_client, output_type="grade")
gpa = get_grade(student_client, output_type="gpa")
percentage_gpa = get_grade(student_client, output_type="percentage_gpa")
if grade:
gpa = get_grade(student_client, output_type="gpa")
percentage_gpa = get_grade(student_client, output_type="percentage_gpa")
# 整合个人信息
gpa_info = f"\n当前GPA{gpa}\n" f"当前百分制GPA{percentage_gpa}\n" f"------"
integrated_info = f"{info}{gpa_info}"
if output_type == "info":
return info
elif output_type == "integrated_info":
return integrated_info
if output_type == "info":
return info
elif output_type == "integrated_info":
return integrated_info
else:
return "获取个人信息:参数缺失"
else:
return "获取个人信息:参数缺失"
return info
+2 -3
View File
@@ -2,7 +2,6 @@ from get_grade import get_grade
def get_selected_courses(student_client):
# 获取成绩信息
grade = get_grade(student_client, output_type="grade")
@@ -18,13 +17,13 @@ def get_selected_courses(student_client):
abnormal_courses_by_semester = {}
# 获取成绩列表中的class_id集合
grade_class_ids = {course["class_id"] for course in grade}
grade_class_ids = {course["class_id"] for course in grade} if grade else ""
# 初始化输出内容
selected_courses_filtering = ""
# 遍历selected_courses和grade中的每个课程
for course in selected_courses + grade:
for course in selected_courses + (grade or []):
# 获取课程的class_id和学年学期
yearsemester_id = course["class_name"].split("(")[1].split(")")[0]
year, semester, seq = yearsemester_id.split("-")
+6 -1
View File
@@ -8,6 +8,7 @@ from get_info import get_info
from get_grade import get_grade
from get_selected_courses import get_selected_courses
from pushplus import send_message
from datetime import datetime
# MD5加密
@@ -47,6 +48,9 @@ run_count = 2
# 初始化运行日志
run_log = ""
# 当前时间
current_time = "------\n" + datetime.now().strftime("%Y-%m-%d %H:%M:%S:%f")[:-3]
# 登录
student_client = login(url, username, password)
@@ -98,6 +102,7 @@ for _ in range(run_count):
with open(grade_file_path, "w") as grade_file:
grade_file.truncate()
# 获取整合后的成绩信息
integrated_grade_info = get_grade(
student_client, output_type="integrated_grade_info"
)
@@ -155,7 +160,7 @@ integrated_send_info = (
f"{integrated_info}\n"
f"{integrated_grade_info}\n"
f"{selected_courses_filtering}\n"
f"{workflow_info}"
f"{workflow_info if github_actions else current_time}"
)
# 整合首次运行时需要使用到的所有信息
+1 -1
View File
@@ -1 +1 @@
4400f1a0083a801243f628f53a270491
048a6883262c441ad3095f05f2892187