Python数据库 学生管理系统

学生管理系统包含字段:姓名、性别、学号、年龄、手机号
需要搭建GUI界面使用函数、文件、数据库等概念实现学生信息的增删查改(CRUD)操作

参考代码

#-*- coding:utf-8 -*-
from tkinter import *
import openpyxl
data = []
try:
    wb = openpyxl.load_workbook(r"data.xlsx")
    ws = wb.active
    for r in list(ws.rows)[1:]:
        data.append({'sno': r[0].value, 'name': r[1].value, 'age': int(r[2].value), 'score': float(r[3].value)})
except IOError:
    pass

top = Tk()
top.title("成绩管理")
top.geometry("400x500+400+50")

def createFun():
    addw = Toplevel(top)
    addw.title("添加成绩")
    addw.geometry("200x200+300+300")
    Label(addw, text="学号").grid(row=0, column=0)
    Label(addw, text="姓名").grid(row=1, column=0)
    Label(addw, text="年龄").grid(row=2, column=0)
    Label(addw, text="成绩").grid(row=3, column=0)
    sno = Entry(addw)
    sno.grid(row=0, column=1)
    name = Entry(addw)
    name.grid(row=1, column=1)
    age = Entry(addw)
    age.grid(row=2, column=1)
    score = Entry(addw)
    score.grid(row=3, column=1)
    def cFun():
        data.append({'sno': sno.get(), 'name': name.get(), 'age': int(age.get()), 'score': float(score.get())})
        addw.destroy()
        upde()
    def qFun():
        addw.destroy()

    Button(addw, text ="确定", command = cFun).grid(row=4, column=0)
    Button(addw, text ="取消", command = qFun).grid(row=4, column=1)
    addw.transient(top)
    addw.focus()
    addw.grab_set()
    top.wait_window(addw)


def quitFun():
    top.quit()

buttbox = Frame(top)
buttbox.pack( side = TOP, fill = X )
Button(buttbox, text ="添加", command = createFun).pack(side = LEFT)
Button(buttbox, text ="退出", command = quitFun).pack(side = LEFT)

fra = Frame(top)
def upde():
    global fra
    fra.destroy()
    fra = Frame(top)
    fra.pack( side = LEFT, fill = BOTH )
    Label(fra, text="学号").grid(row=0, column=0)
    Label(fra, text="姓名").grid(row=0, column=1)
    Label(fra, text="年龄").grid(row=0, column=2)
    Label(fra, text="成绩").grid(row=0, column=3)
    def delFun(i):
        del data[i]
        upde()
    for i in range(len(data)):
        Label(fra, text=data[i]["sno"]).grid(row=i+1, column=0)
        Label(fra, text=data[i]["name"]).grid(row=i+1, column=1)
        Label(fra, text=data[i]["age"]).grid(row=i+1, column=2)
        Label(fra, text=data[i]["score"]).grid(row=i+1, column=3)
        Button(fra, text ="删除", command = lambda i=i: delFun(i)).grid(row=i+1, column=4)


upde()
top.mainloop()
# 写入文件
if len(data)>0:
    wb = openpyxl.Workbook()
    ws=wb.active
    ws.title ="成绩单"
    ws.append(list(data[0].keys()))
    for each in data:
        ws.append(list(each.values()))
    wb.save(r"data.xlsx")

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

我有,不过这个悬赏金额太低

可以适当提高悬赏金额,我可以帮你实现😯

打发要饭的呢

  • 数据库可以用Python 自带的模块sqlite3。也可以就用excel,csv来管理。

  • 界面如果不是商用可以用PyQT5