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

课程设计说明:

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

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

 

文章目录:

 一:页面展示

增加信息页面

修改信息页面

查找信息页面

 修改信息页面

 二:增删改查实现讲解

增加信息

删除信息

修改信息

查找信息

  三:部分代码:

增删改查功能代码


一:页面展示: 

增加信息页面:

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

修改信息页面:

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

查找信息页面: 

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

  修改信息页面:

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

  保存文件:

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


二:增删改查实现讲解:

增加信息:

   增加操作也分为了两部分:图形化页面实现 功能实现,二者分别放在两个不同的文件中,分部是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,pycharm)