python项目练习——14.学生管理系统

这个项目可以让用户管理学生的信息,包括学生的姓名、年龄、成绩等,并提供添加、编辑、删除、查询等功能。这个项目涉及到数据库操作、用户界面设计、数据验证等方面的技术。

代码示例:

import tkinter as tk  # 导入 Tkinter 库
import sqlite3  # 导入 sqlite3 库

class StudentManagementApp:
    def __init__(self, master):
        self.master = master
        self.master.title('学生管理系统')

        # 连接到数据库
        self.conn = sqlite3.connect('students.db')
        self.cursor = self.conn.cursor()
        self.create_table()

        # 创建界面组件
        self.label_name = tk.Label(master, text='姓名:')
        self.label_name.grid(row=0, column=0)
        self.entry_name = tk.Entry(master)
        self.entry_name.grid(row=0, column=1)

        self.label_age = tk.Label(master, text='年龄:')
        self.label_age.grid(row=1, column=0)
        self.entry_age = tk.Entry(master)
        self.entry_age.grid(row=1, column=1)

        self.label_score = tk.Label(master, text='成绩:')
        self.label_score.grid(row=2, column=0)
        self.entry_score = tk.Entry(master)
        self.entry_score.grid(row=2, column=1)

        self.btn_add = tk.Button(master, text='添加', command=self.add_student)
        self.btn_add.grid(row=3, column=0, columnspan=2)

        self.btn_display = tk.Button(master, text='显示全部', command=self.display_students)
        self.btn_display.grid(row=4, column=0, columnspan=2)

        self.textbox = tk.Text(master)
        self.textbox.grid(row=5, column=0, columnspan=2)

    def create_table(self):
        # 创建学生表
        self.cursor.execute('''CREATE TABLE IF NOT EXISTS students (
                                id INTEGER PRIMARY KEY AUTOINCREMENT,
                                name TEXT NOT NULL,
                                age INTEGER,
                                score REAL
                              )''')
        self.conn.commit()

    def add_student(self):
        name = self.entry_name.get()
        age = self.entry_age.get()
        score = self.entry_score.get()

        if name and age and score:
            # 插入学生数据到数据库
            self.cursor.execute('INSERT INTO students (name, age, score) VALUES (?, ?, ?)', (name, age, score))
            self.conn.commit()

    def display_students(self):
        # 查询所有学生数据并显示在文本框中
        self.textbox.delete('1.0', tk.END)
        self.cursor.execute('SELECT * FROM students')
        students = self.cursor.fetchall()
        for student in students:
            self.textbox.insert(tk.END, f'ID: {student[0]}, 姓名: {student[1]}, 年龄: {student[2]}, 成绩: {student[3]}\n')

if __name__ == '__main__':
    root = tk.Tk()  # 创建主窗口
    app = StudentManagementApp(root)  # 创建学生管理系统应用程序实例
    root.mainloop()  # 运行主事件循环
 

 代码逻辑分析:

使用 Tkinter 库创建了一个简单的图形界面学生管理系统应用程序。用户可以在输入框中输入学生的姓名、年龄、成绩,点击添加按钮将学生信息添加到数据库中,并点击显示全部按钮可以查看所有学生的信息。学生信息存储在 SQLite 数据库中,通过 sqlite3 模块进行数据库操作。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/793511.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django之关系模型的序列化

一、关系模型的序列化-多查1 1.1、模型准备 from django.db import models# Create your models here. class Classes(models.Model):name = models.CharField(max_length=20, verbose_name=班级)class Student(models.Model):SEX_CHOICES = ((1,男)), (2, 女)name = models.C…

【HTML】制作一个简单的三角形动态图形

目录 前言 开始 HTML部分 CSS部分 效果图 总结 前言 无需多言,本文将详细介绍一段HTML和CSS代码,具体内容如下: 开始 首先新建文件夹,创建两个文本文档,其中HTML的文件名改为[index.html],CSS的文件名…

【Python的第三方库】flask

1. Flask是什么? 基于python的web后端开发轻量级框架; 基于MVT设计模式即Models,Views,Templates(html模板语言) 2.中文文档: https://dormousehole.readthedocs.io/en/2.1.2/index.html 3.依赖3个库: Jinja2 模版&#xff1…

集成swagger2的时候swagger-ui.html页面的v2/api-docs接口报404

集成swagger2的时候swagger-ui.html页面的v2/api-docs接口报404 尝试网上说的权限、包版本不一致、资源路径映射问题,发现都没有问题。 单独访问v2/api-docs接口的时候报 Swagger2Controller Unable to find specification for group 查看相关代码: …

【Unity灶台】食品加工系统模型搭建

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

pwn学习笔记(7)--堆相关源码

相关源码: 1. chunk 相关源码: ​ 对于用户来说,只需要确保malloc()函数返回的内存不会发生溢出,并且在不用的时候使用free() 函数将其释放,以后也不再做任何操作即可。而对于glibc来说’它要在用户第一次调用malloc…

【接口】HTTP(3) |GET和POST两种基本请求方法有什么区别

在我面试时,在我招人面试别人时,10次能遇到7次这个问题,我听过我也说回答过: Get: 一般对于从服务器取数据的请求可以设置为get方式 Get方式在传递参数的时候,一般都会把参数直接拼接在url上 Get请求方法…

4.4总结

这两天学习了线段树和树状数组,今晚上学长还在进行JDBC和MYSQL的教学,也收获到了一些东西 树状数组与完全二叉数结构上大致相同,但是完全二叉树每个节点只能存储单个数,而树状数组存储的是数组的范围。 从头结点开始为一整个数组…

Linux之实现Apache服务器监控、数据库定时备份及通过使用Shell脚本发送邮件

目录 一、Apache服务器监控 为什么要用到服务监控? 实现Apache服务器监控 二、数据库备份 为什么要用到数据库备份? 实现数据库备份 三、Shell脚本发送邮件 为什么要用使用Shell脚本发送邮件? 实现Shell脚本发送邮件 一、Apache服务器…

file 文件

1. File表示什么? File对象表示路径,可以是文件、也可以是文件夹。这个路径可以是存在的,也可以是不存在的 2.绝对路径和相对路径是什么意思? 绝对路径是带盘符的。 相对路径是不带盘符的,默认到当前项目下去找。 3.File三种构…

计算机中英文术语对照表

计算机中英文术语对照表 分类 编程技术 win: Windows 操作系统;mac: macOS(操作系统)。 英文(English)中文一(港台地区)中文二Abstract摘要;抽象的摘要;抽象的Abstract…

大数据分析_PySpark中类Pandas的df.loc操作(行列定位)

大数据分析_PySpark中类Pandas的df.loc操作(行列定位) 在 PySpark 3.0.3 中, 虽然没有直接类似于 Pandas 中 df.loc 的函数, 但可以通过使用 PySpark 的 select 和 filter 操作来达到类似的功能。 select 用于选择列, 而 filter 用于按条件筛选行。 下面是一个简单的例子, 演…

Spring声明式事务以及事务传播行为

Spring声明式事务以及事务传播行为 Spring声明式事务1.编程式事务2.使用AOP改造编程式事务3.Spring声明式事务 事务传播行为 如果对数据库事务不太熟悉,可以阅读上一篇博客简单回顾一下:MySQL事务以及并发访问隔离级别 Spring声明式事务 事务一般添加到…

VSCODE使用VSIX安装扩展

VSCode安装扩展特别慢,使用命令行安装告别龟速: code --install-extension当然,我这个是在WSL 的linux上安装的,Windows一样的。 VSCode扩展商店网页链接:https://marketplace.visualstudio.com/vscode

号卡极团分销管理系统 index.php SQL注入漏洞复现

0x01 产品简介 号卡极团分销管理系统,同步对接多平台,同步订单信息,支持敢探号一键上架,首页多套UI+商品下单页多套模板,订单查询支持实时物流信息、支持代理商自定义域名、泛域名绑定,内置敢探号、172平台、号氪云平台第三方接口以及号卡网同系统对接! 0x02 漏洞概述…

二十、Rust AOP 切面增强

用过 java spring 的同学,应该会对 AspectJ 的 前置、后置、环绕 增强 念念不忘,巧了 rust 也有类似能力,稍显不同的是,为了向 “零成本抽象” 靠齐,Rust 的 “增强” 是在编译期 完成的。 编译期生成,则离…

数字信号处理实验---FFT分析

一、题目: 二、实验要求: 1、绘制图形时,尽量选用已经提供的函数。 2、所有的图形,需要加上横坐标、纵坐标以及标题的说明。 3、将设计的程序保存为脚本文件,在实验报告中,需写出程序语句。 4、Matlab程…

ECC升级S/4HANA“沙箱模拟方案包“:更适用于升级环境复杂、体量大的客户

“作为一家业务体量大的公司,分支机构众多、数据复杂,想从ECC升级会有什么风险?”面对技术更新换代、公司业务不断扩展、网络安全问题的日益突出,将ECC升级到S/4HANA是企业的当务之急。为解决客户的顾虑,无论是对于历史…

51单片机入门_江协科技_19~20_OB记录的笔记

19. 串口通讯 19.1. 串口介绍: •串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信。 •单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的…

设计模式总结-建造者模式

建造者模式 模式动机模式定义模式结构模式分析建造者模式实例与解析实例:KFC套餐 模式动机 无论是在现实世界中还是在软件系统中,都存在一些复杂的对象,它们拥有多个组成部分,如汽车,它包括车轮、方向盘、发送机等各种…