模拟一个学生成绩管理系统 具体内容: 1. 随机生成40名学生的信息,包括姓名、学号。随机生成五门课的成绩,并且这些课程学分不同。存储为CSV格式的文件。 2. 读取这些学生的成绩文件,为每位学生生成一份成绩报告单。 3. 为每门课程的老师生成一份成绩分析表,包含学生成绩分布直方图、不及格名单等。
时间: 2024-02-25 16:55:35 浏览: 83
好的,我来为您模拟一个学生成绩管理系统。
首先,我们需要生成40名学生的信息和五门课的成绩,并将其存储为CSV格式的文件。这可以通过Python的random模块来实现。
```python
import random
import csv
# 生成学生信息和成绩
students = []
for i in range(40):
name = "Student " + str(i+1)
id = "2021" + str(random.randint(100000,999999))
score1 = random.randint(60,100)
score2 = random.randint(60,100)
score3 = random.randint(60,100)
score4 = random.randint(60,100)
score5 = random.randint(60,100)
students.append([name, id, score1, score2, score3, score4, score5])
# 将学生信息和成绩存储为CSV格式的文件
with open("students.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["Name", "ID", "Score1", "Score2", "Score3", "Score4", "Score5"])
writer.writerows(students)
```
接下来,我们需要读取这些学生的成绩文件,并为每位学生生成一份成绩报告单。这可以通过Python的pandas模块来实现。
```python
import pandas as pd
# 读取学生信息和成绩文件
students_df = pd.read_csv("students.csv")
# 计算每位学生的总成绩和平均成绩
students_df["Total"] = students_df["Score1"] + students_df["Score2"] + students_df["Score3"] + students_df["Score4"] + students_df["Score5"]
students_df["Average"] = students_df["Total"] / 5
# 生成每位学生的成绩报告单
for i, row in students_df.iterrows():
name = row["Name"]
id = row["ID"]
total = row["Total"]
average = row["Average"]
report = f"Name: {name}\nID: {id}\nTotal Score: {total}\nAverage Score: {average}\n"
print(report)
```
最后,我们需要为每门课程的老师生成一份成绩分析表,包含学生成绩分布直方图、不及格名单等。这可以通过Python的matplotlib和numpy模块来实现。
```python
import matplotlib.pyplot as plt
import numpy as np
# 计算每门课程的平均成绩和不及格人数
average_scores = []
fail_counts = []
for i in range(5):
course_scores = students_df[f"Score{i+1}"]
average_score = course_scores.mean()
average_scores.append(average_score)
fail_count = len(course_scores[course_scores < 60])
fail_counts.append(fail_count)
# 生成每门课程的成绩分析表
for i in range(5):
course_name = f"Course {i+1}"
average_score = average_scores[i]
fail_count = fail_counts[i]
pass_count = len(students_df) - fail_count
pass_rate = pass_count / len(students_df)
print(f"{course_name}:\nAverage Score: {average_score}\nFail Count: {fail_count}\nPass Rate: {pass_rate}\n")
# 生成学生成绩分布直方图
course_scores = students_df[f"Score{i+1}"]
plt.hist(course_scores, bins=np.arange(60, 101, 5), edgecolor="black")
plt.xlabel("Score")
plt.ylabel("Count")
plt.title(f"{course_name} Scores Distribution")
plt.show()
# 生成不及格名单
fail_students = students_df[students_df[f"Score{i+1}"] < 60]
print(fail_students[["Name", "ID"]])
```
以上就是一个简单的学生成绩管理系统的实现。希望能够帮到您!
阅读全文