0


Python学生信息管理系统【GUI界面版 + 期末报告书 + 功能实现讲解】

**🥝 课程设计说明: **

GUI 使用的是Python自带的 tkinter 模块,无需配置,Python自带的模块直接导包使用即可,包含了增删改查+保存文件,满足 **90%** 大学生期末课程设计需求!!!运行时在main.py文件右键运行即可

------- 完整文件关注私聊获取 ------

文章目录:


一:页面展示:

🍉 增加信息页面:

13bc92e7966b40ce947e22bf961f7c2a.png

🍉 修改信息页面:

61d41cb576d849229ccc270e22426fc5.png

**🍉 查找信息页面: **

3ab26bfa389d4bb79c4d51dcb8c5afb6.png

** 🍉 修改信息页面:**

0632b8be58794170aecd313d70720533.png

** 🍉 保存文件:**

a80f6af7d034461db60fcebeb09c8b94.jpeg


二:增删改查实现讲解:

🍍 增加信息:

增加操作也分为了两部分:图形化页面实现 功能实现,二者分别放在两个不同的文件中,分部是operation.py文件与UI.py文件,同样各个文件也要先导包才能正常运行使用,我们首先说明一下信息在代码中被存储在了哪里:存储在了名为allstudent的一个列表中:

allstudent = []

接着说明添加操作的operation.py中的实现代码,该函数封装在了operation类里,实现也并不麻烦,首先声明一个列表student用来暂存添加的信息,暂存后点击确认添加后才会将暂存的信息给allstudent列表正式存储起来,再接着保存后才会最终存储到文件中,确保了数据的安全性,在添加中还有一个学号是否存在的判断,输入学号后先判断学号是否为空,是空则直接返回,不是空则先判断allstudent列表中是否有数据,无数据则不存在学号重复的情况,直接就可以添加进去,如果allstudent不为空则判断是否存在,存在则调用tkinter的showerror报错已存在,不存在则加入并调用tkinter的showinfo方法说明添加成功

def addstudent(self, sno, sname, sex, birthday, phone, dorm):
    student = [sno, sname, sex, birthday, phone, dorm]
    x = 0
    if sno == "":
        showerror(title="错误界面", message="学号不能为空!\n加入失败!!!")
        return
    if len(self.allstudent) == 0:
        self.allstudent.append(student)
        showinfo(title="提示界面", message="加入成功!!!")
    else:
        while x < len(self.allstudent):
            if self.allstudent[x][0] != sno:
                x += 1
            else:
                showerror(title="错误界面", message="学号重复!!!\n请重新输入序号!!!")
                break
        else:
            self.allstudent.append(student)
            showinfo(title="提示界面", message="加入成功!!!")

**🍍 删除信息: **

删除操作也分为了两部分:图形化页面实现 功能实现,二者分别放在两个不同的文件中,分部是operation.py文件与UI.py文件,删除的方法放在operation类中,实现过程如下:设置一个标志量x并赋初值为0,如果这个x小于allstudent内的信息总数则继续执行下方代码,如果能将输入的学号匹配到allstuent内的某个学号,则将其所有信息从allstudent中使用del删除掉,如果没有找到则自增,自增到和allstudent数量一样时还没有找到匹配的学号则调用tkinter的showerror方法报错不存在当前学生。

def deletestudnet(self, sno):
    x = 0
    while x < len(self.allstudent):
        if self.allstudent[x][0] == sno:
            del self.allstudent[x]
            showinfo(title="提示界面", message="删除学生成功!!!")
            break
        else:
            x += 1
    else:
        showerror(title="错误界面", message="不存在当前学生!!!")

**🍍 修改信息: **

修改操作也分为了两部分:图形化页面实现 功能实现,二者分别放在两个不同的文件中,分部是operation.py文件与UI.py文件,查找的方法放在operation类中,修改过程如下:首先声明了标志量x赋初值为0,依旧是判断如果x小于allstudent内的信息数量,则继续执行内部判断语句,判断你输入的学号是否为空,为空则直接调用shoeerror方法报错,不为空则将你输入entry框中修改的信息赋值给对应项,然后break退出。

 while x < len(self.allstudent):
        if self.allstudent[x][0] == sno:
                      if sname != "":
                self.allstudent[x][1] = sname
            if sex != "":
                self.allstudent[x][2] = sex
            if birthday != "":
                self.allstudent[x][3] = birthday
            if phone != "":
                self.allstudent[x][4] = phone
            if dorm != "":
                self.allstudent[x][5] = dorm
            showinfo(title="提示界面", message="修改学生信息成功!!!")
            return
        else:
            x += 1
    else:
        showerror(title="错误界面", message="不存在当前学生!!!")

**🍍 查找信息: **

查找操作也分为了两部分:图形化页面实现 功能实现,二者分别放在两个不同的文件中,分部是operation.py文件与UI.py文件,查找的方法放在operation类中,实现过程如下:首先初始化entry2~6的值为‘end’,再同样设置了标志量x,如果其小于allstudent的个数就执行,如果找到了与输入相同的学号信息,则将其文档内对应的各个数据拿来,保存到刚才已经初始化的数据里,因为entry是输入框,所以信息覆盖掉初始化的值后还会显示在输入框中,然后退出当前程序,如果没找到就自增1,直到x和allstudent的数量等价时还没有找到则调用tkinter的showerror方法报错未查询到。

def selectstudent(self, sno, entry_2, entry_3, entry_4, entry_5, entry_6):
    entry_2.delete(0, 'end')
    entry_3.delete(0, 'end')
    entry_4.delete(0, 'end')
    entry_5.delete(0, 'end')
    entry_6.delete(0, 'end')
    x = 0
    while x < len(self.allstudent):
        if self.allstudent[x][0] == sno:
            entry_2.insert(0, self.allstudent[x][1])
            entry_3.insert(0, self.allstudent[x][2])
            entry_4.insert(0, self.allstudent[x][3])
            entry_5.insert(0, self.allstudent[x][4])
            entry_6.insert(0, self.allstudent[x][5])
            break
        else:
            x += 1
    else:
        showerror(title="错误界面", message="未查询到当前学生!!!")

三:部分代码:

🍈 增删改查功能代码:

from tkinter import END
from tkinter.messagebox import showerror, showinfo

class Operation:
    allstudent = []
    # 添加学生
    def addstudent(self, sno, sname, sex, birthday, phone, dorm):
        student = [sno, sname, sex, birthday, phone, dorm]
        x = 0
        if sno == "":
            showerror(title="错误界面", message="学号不能为空!\n加入失败!!!")
            return
        if len(self.allstudent) == 0:
            self.allstudent.append(student)
            showinfo(title="提示界面", message="加入成功!!!")
        else:
            while x < len(self.allstudent):
                if self.allstudent[x][0] != sno:
                    x += 1
                else:
                    showerror(title="错误界面", message="学号重复!!!\n请重新输入序号!!!")
                    break
            else:
                self.allstudent.append(student)
                showinfo(title="提示界面", message="加入成功!!!")

    #     删除学生
    def deletestudnet(self, sno):
        x = 0
        while x < len(self.allstudent):
            if self.allstudent[x][0] == sno:
                del self.allstudent[x]
                showinfo(title="提示界面", message="删除学生成功!!!")
                break
            else:
                x += 1
        else:
            showerror(title="错误界面", message="不存在当前学生!!!")

    # 查询学生
    def selectstudent(self, sno, entry_2, entry_3, entry_4, entry_5, entry_6):
        entry_2.delete(0, 'end')
        entry_3.delete(0, 'end')
        entry_4.delete(0, 'end')
        entry_5.delete(0, 'end')
        entry_6.delete(0, 'end')
        x = 0
        while x < len(self.allstudent):
            if self.allstudent[x][0] == sno:
                entry_2.insert(0, self.allstudent[x][1])
                entry_3.insert(0, self.allstudent[x][2])
                entry_4.insert(0, self.allstudent[x][3])
                entry_5.insert(0, self.allstudent[x][4])
                entry_6.insert(0, self.allstudent[x][5])
                break
            else:
                x += 1
        else:
            showerror(title="错误界面", message="未查询到当前学生!!!")

    # 修改学生
    def changestudent(self, sno, sname, sex, birthday, phone, dorm):
        x = 0
        while x < len(self.allstudent):
            if self.allstudent[x][0] == sno:
                # 如果姓名不为空
                if sname != "":
                    self.allstudent[x][1] = sname
                if sex != "":
                    self.allstudent[x][2] = sex
                if birthday != "":
                    self.allstudent[x][3] = birthday
                if phone != "":
                    self.allstudent[x][4] = phone
                if dorm != "":
                    self.allstudent[x][5] = dorm
                showinfo(title="提示界面", message="修改学生信息成功!!!")
                return
            else:
                x += 1
        else:
            showerror(title="错误界面", message="不存在当前学生!!!")

    # 输出学生
    def showstudent(self, lb):
        for i in range(len(self.allstudent)):
            lb.insert(END, "学号:%s  姓名:%s  性别:%s  年龄:%s  电话:%s  宿舍号:%s" %
                      (self.allstudent[i][0], self.allstudent[i][1], self.allstudent[i][2],
                       self.allstudent[i][3], self.allstudent[i][4], self.allstudent[i][5]))

    # 另存学生信息
    def savestudent(self):
        # 以追加的形式添加
        dataFile = open("D:\\text.txt", "w")
        for row in self.allstudent:
            dataFile.write(
                    "学号:" + row[0] + "  姓名:" + row[1] + " 性别:" + row[2] + "  年龄" + row[3] + "  电话:" +
                    row[4] + "  宿舍号:" + row[5] + "\n")
        showinfo(title="提示界面", message="保存学生信息成功!!!\n保存路径如下:\nD:\\\\text.txt")
标签: python 开发语言 ui

本文转载自: https://blog.csdn.net/weixin_52212950/article/details/125178731
版权归原作者 卡卡西最近怎么样 所有, 如有侵权,请联系我们删除。

“Python学生信息管理系统【GUI界面版 + 期末报告书 + 功能实现讲解】”的评论:

还没有评论