开发Python学生成绩管理系统:使用Tkinter和文本文件

简介: 开发Python学生成绩管理系统:使用Tkinter和文本文件

开发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格式的文件存储数据。

相关文章
|
11天前
|
机器学习/深度学习 存储 算法
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
|
1月前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
56 7
|
4天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
23 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
4天前
|
人工智能 测试技术 数据处理
通义灵码 2.0 体验报告:Deepseek 加持下的 Python 开发之旅
通义灵码 2.0 体验报告:Deepseek 加持下的 Python 开发之旅
57 11
|
1月前
|
前端开发 搜索推荐 编译器
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
111 34
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
|
8天前
|
API Python
python泛微e9接口开发
通过POST请求向指定IP的API注册设备以获取`secrit`和`spk`。请求需包含`appid`、`loginid`、`pwd`等头信息。响应中包含状态码、消息及`secrit`(注意拼写)、`secret`和`spk`字段。示例代码使用`curl`命令发送请求,成功后返回相关信息。
30 5
|
21天前
|
监控 网络安全 开发者
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
51 20
|
27天前
|
存储 数据采集 数据处理
如何在Python中高效地读写大型文件?
大家好,我是V哥。上一篇介绍了Python文件读写操作,今天聊聊如何高效处理大型文件。主要方法包括:逐行读取、分块读取、内存映射(mmap)、pandas分块处理CSV、numpy处理二进制文件、itertools迭代处理及linecache逐行读取。这些方法能有效节省内存,提升效率。关注威哥爱编程,学习更多Python技巧。
|
28天前
|
存储 JSON 对象存储
如何使用 Python 进行文件读写操作?
大家好,我是V哥。本文介绍Python中文件读写操作的方法,包括文件读取、写入、追加、二进制模式、JSON、CSV和Pandas模块的使用,以及对象序列化与反序列化。通过这些方法,你可以根据不同的文件类型和需求,灵活选择合适的方式进行操作。希望对正在学习Python的小伙伴们有所帮助。欢迎关注威哥爱编程,全栈路上我们并肩前行。
|
2月前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
333 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南

热门文章

最新文章

推荐镜像

更多