Python玩转数据库:学生管理器

        Python玩转数据库,今天我们来做一个基于Python的学生管理器(功能类似班级优化大师),废话不多说直接上代码:

import sqlite3
import easygui
import copy
students = sqlite3.connect("students.db")
plus = sqlite3.connect("createdPlus.db")
students.execute("""CREATE TABLE IF NOT EXISTS students(ID INT UNIQUE,NAME TEXT,SCORE INT)""")
plus.execute("""CREATE TABLE IF NOT EXISTS created(NAME TEXT,SCORE INT)""")
def addStudents():
    data = easygui.multenterbox("请输入学生信息:","录入",fields=["学号","姓名"])
    while data:
        data[0] = int(data[0])
        data.append(0)
        students.execute("INSERT INTO students VALUES(?,?,?)",data)
        students.commit()
        data = easygui.multenterbox("请输入学生信息:","录入",fields=["学号","姓名"])
def check():
    data = students.execute("SELECT * FROM students").fetchall()
    names = [i[1] for i in data]
    cache = dict()
    for i in range(len(data)):
        cache[names[i]] = list(data[i])
    data = copy.deepcopy(cache)
    reply = easygui.buttonbox("请选择你要查看的人:","选择",choices=names+['退出'])
    while reply != '退出':
        easygui.msgbox(data[reply][0]+'\n'+data[reply][1]+'\n'+data[reply][2],"信息")
        reply = easygui.buttonbox("请选择你要查看的人:","选择",choices=names+['退出'])
def searchByName(name):
    data = students.execute(f"SELECT * FROM students WHERE NAME = '{name}'").fetchone()
    if data == ():
        return "没有找到这个学生的信息"
    else:
        return data[0]+'\n'+data[1]+'\n'+data[2]
def createNewPlus():
    data = tuple(easygui.multenterbox("请输入此点评的名称和分值:","录入",fields=["名字","分数"]))
    plus.execute("INSERT INTO created VALUES(?,?)",data)
    plus.commit()
    easygui.msgbox("录入成功!","提示")
def send():
    names = students.execute("SELECT NAME FROM students").fetchall()
    names = [i[0] for i in names]
    name = easygui.buttonbox("请选择发送点评的人:","发送点评",choices=names+['退出'])
    if name == '退出':
        return None
    else:
        pluses = plus.execute("SELECT * FROM created").fetchall()
        plusname = [i[0] for i in pluses]
        duiying = {i[0]:i[1] for i in pluses}
        if pluses == []:
            return "没有创建点评呢"
        else:
            selected = easygui.buttonbox("请选择发送的点评:","发送点评",choices=plusname+['退出'])
            if selected == '退出':
                return None
            else:
                score = students.execute(f"SELECT SCORE FROM students WHERE NAME = '{name}'").fetchone()[0]
                students.execute(f"UPDATE students SET SCORE = {score+duiying[selected]} WHERE NAME = '{name}'")
                students.commit()
                return "发送成功!"
def mainloop():
    choices = ["查看学生信息","批量添加学生","通过名称搜索","创建新点评","发送点评"]
    choice = ''
    while choice != '退出':
        choice = easygui.buttonbox("欢迎来到学生管理器:","TIANYI PRODUCT",choices=["查看学生信息","批量添加学生","通过名称搜索","创建新点评","发送点评","退出"])
        if choice == choices[0]:
            try:
                check()
            except:
                easygui.msgbox("还没有录入任何信息!","提示")
        elif choice == choices[1]:
            addStudents()
        elif choice == choices[2]:
            name = easygui.enterbox("输入要查找人的名字:","输入")
            if name == None:
                continue
            easygui.msgbox(searchByName(name),"提示",ok_button='好的')
        elif choice == choices[3]:
            createNewPlus()
        elif choice == choices[4]:
            easygui.msgbox(send(),"提示")
        else:
            continue
mainloop()
students.close()
plus.close()

        EXE我放云盘需要的自取:

        链接:https://pan.baidu.com/s/17mXSN37wX2oitJ02NNXXDw?pwd=ta7h

        以上就是我给大家带来的代码,谢谢大家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值