课程设计说明:
GUI 使用的是Python自带的 tkinter 模块,无需配置,Python自带的模块直接导包使用即可,包含了增删改查+保存文件,满足 90% 大学生期末课程设计需求!!!运行时在main.py文件右键运行即可
------- 完整文件关注私聊获取 ------
一:页面展示
增加信息页面
修改信息页面
查找信息页面
修改信息页面
二:增删改查实现讲解
增加信息
删除信息
修改信息
查找信息
三:部分代码:
增删改查功能代码
增加信息:
增加操作也分为了两部分:图形化页面实现 功能实现,二者分别放在两个不同的文件中,分部是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")