已知一个班同学的平时成绩和考试成绩数据表(详见文件),请统计处该班级学生的作业平均分和考试平均分,并将平均分绘制成曲线图,并在界面上输出。
要求:点击界面按钮,读入文件数据,并输出图形。(说明:读取的文件格式可以自行改变,可以使用文本文件)
考核:
1、文件读写基本技能。
2、基本的窗口界面、图形界面编程。
1. 定义基本的控件
btn = QPushButton(self)
btn.setText("打开文件")
btn.resize(120, 30)
btn.move(130, 0)
btn.setStyleSheet('background-color:green;font-size:20px;')
btn2 = QPushButton(self)
btn2.setText("分析数据")
btn2.resize(120, 30)
btn2.move(350, 0)
btn2.setStyleSheet('background-color:green;font-size:20px;')
# 用于显示表格
self.model = QStandardItemModel(41, 5)
self.tableview = QTableView(self)
# 关联QTableView控件和Model
self.tableview.setModel(self.model)
self.tableview.move(50, 30)
self.tableview.resize(500, 400)
self.label = QLabel(self)
self.label.move(50, 30)
self.label.resize(500, 400)
2. 按钮事件处理之读取表格
btn.clicked.connect(self.open_xlsx)
2.1 打开任意xlsx,获取文件名
xlsx_name, _ = QFileDialog.getOpenFileName(None, "Open Excel File", "", "*.xlsx")
print(xlsx_name, type(xlsx_name))
2.2 通过pandas读取表格,将数据处理并存入列表
# 创建对象
df = pd.read_excel(xlsx_name, sheet_name='Sheet1')
nrows = df.shape[0] # 行
ncols = df.columns.size # 列
print(nrows, ncols)
for i in range(nrows):
stu = {
'id': '', 'name': '', 'phone': '', 'nomal_score': '', 'final_score': ''}
stu['id'] = df.iloc[i, 1]
stu['name'] = df.iloc[i, 2]
stu['phone'] = df.iloc[i, 3]
stu['final_score'] = df.iloc[i, 17]
sum = 0
for j in range(

本博客介绍了一个基于Python和PyQt5的学生成绩管理系统,能够从Excel文件中读取学生成绩数据,计算平均分,并通过matplotlib绘制成绩曲线图进行直观展示。
最低0.47元/天 解锁文章
9607

被折叠的 条评论
为什么被折叠?



