开发Python学生成绩管理系统:使用Tkinter和文本文件
在这篇文章中,我们将一步步地创建一个简单的学生成绩管理系统。这个系统将使用Python的Tkinter库来构建图形用户界面(GUI),并将学生的成绩数据存储在文本文件中。系统将包含登录、增加、删除、修改和查询学生成绩的功能。
1. 选择GUI框架
对于本项目,我们选择使用Python内置的GUI库Tkinter。Tkinter轻量级且易于使用,非常适合初学者和小型项目。
2. 设计GUI界面
我们的系统将包括以下几个界面:
- 登录界面:用于用户登录。
- 主界面:显示学生成绩列表,并提供增加、删除、修改和查询成绩的选项。
3. 实现功能
3.1 登录功能
登录界面允许用户输入用户名和密码进行登录。这里我们简化处理,不连接数据库,仅作为示例展示。
3.2 增删改查功能
- 增加成绩:允许用户输入学生信息和成绩,并将其添加到系统中。
- 删除成绩:允许用户删除指定的学生成绩。
- 修改成绩:允许用户修改已有的学生成绩信息。
- 查询成绩:允许用户查询特定学生的成绩。
4. 存储数据
我们将使用CSV格式的文本文件来存储学生的姓名和成绩等信息。
5. 代码实现
接下来是我们的Python代码实现:
import tkinter as tk from tkinter import messagebox, simpledialog import csv import os # 学生成绩管理系统类 class GradeSystem(tk.Tk): def __init__(self): super().__init__() self.title("学生成绩管理系统") self.geometry("500x300") self.filename = "grades.csv" self.data = [] self.load_data() self.create_widgets() def create_widgets(self): # 登录按钮 self.login_button = tk.Button(self, text="登录", command=self.login) self.login_button.pack() # 显示成绩的列表框 self.grade_list = tk.Listbox(self) self.grade_list.pack(fill=tk.BOTH, expand=True) self.update_grade_list() # 增删改查按钮 self.add_button = tk.Button(self, text="添加成绩", command=self.add_grade) self.add_button.pack(side=tk.LEFT) self.delete_button = tk.Button(self, text="删除成绩", command=self.delete_grade) self.delete_button.pack(side=tk.LEFT) self.edit_button = tk.Button(self, text="修改成绩", command=self.edit_grade) self.edit_button.pack(side=tk.LEFT) self.search_button = tk.Button(self, text="查询成绩", command=self.search_grades) self.search_button.pack(side=tk.LEFT) def login(self): # 简单的登录对话框 username = simpledialog.askstring("登录", "输入用户名:") password = simpledialog.askstring("登录", "输入密码:", show='*') if username == "admin" and password == "admin": messagebox.showinfo("登录", "登录成功") else: messagebox.showerror("登录", "用户名或密码错误") def add_grade(self): # 添加成绩 student = simpledialog.askstring("添加成绩", "输入学生姓名:") grade = simpledialog.askstring("添加成绩", "输入学生成绩:") if student and grade: self.data.append([student, grade]) self.update_grade_list() self.save_data() def delete_grade(self): # 删除选中的成绩 selected = self.grade_list.curselection() if selected: del self.data[selected[0]] self.update_grade_list() self.save_data() def edit_grade(self): # 修改选中的成绩 selected = self.grade_list.curselection() if selected: student, grade = self.data[selected[0]] new_grade = simpledialog.askstring("修改成绩", f"输入{student}的新成绩:") if new_grade: self.data[selected[0]] = [student, new_grade] self.update_grade_list() self.save_data() def search_grades(self): # 查询成绩 student = simpledialog.askstring("查询成绩", "输入学生姓名:") if student: found = [f"{s[0]}: {s[1]}" for s in self.data if s[0] == student] messagebox.showinfo("查询结果", "\n".join(found) if found else "未找到该学生的成绩") def update_grade_list(self): # 更新列表框内容 self.grade_list.delete(0, tk.END) for student, grade in self.data: self.grade_list.insert(tk.END, f"{student}: {grade}") def load_data(self): # 从文件加载数据 if os.path.exists(self.filename): with open(self.filename, newline='') as file: self.data = list(csv.reader(file)) def save_data(self): # 保存数据到文件 with open(self.filename, 'w', newline='') as file: writer = csv.writer(file) writer.writerows(self.data) if __name__ == "__main__": app = GradeSystem() app.mainloop()
功能说明
登录功能:提供简单的登录对话框,用户需输入用户名和密码(在这个示例中,预设的用户名和密码均为“admin”)。
增加成绩:允许用户输入学生姓名和成绩,然后将其添加到系统中。
删除成绩:允许用户从列表中选择一个学生成绩并删除。
修改成绩:允许用户修改选中学生的成绩。
查询成绩:允许用户输入学生姓名来查询成绩。
数据存储:使用CSV格式的文件存储数据。