parent
980153cc5b
commit
d86381333f
@ -0,0 +1,339 @@
|
|||||||
|
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import tkinter as tk
|
||||||
|
|
||||||
|
|
||||||
|
LIST = []
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def writeTxt_wMode(studentList):
|
||||||
|
|
||||||
|
with open("test.txt", "w", encoding="utf-8") as f:
|
||||||
|
for i in range(0, len(studentList)):
|
||||||
|
DICT = studentList[i]
|
||||||
|
|
||||||
|
if i == len(studentList) - 1:
|
||||||
|
f.write("{0}\t{1}\t{2}".format(DICT["name"], DICT["sex"], DICT["phone"]))
|
||||||
|
else:
|
||||||
|
f.write("{0}\t{1}\t{2}\n".format(DICT["name"], DICT["sex"], DICT["phone"]))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def readTxt() -> list:
|
||||||
|
emptyList1 = []
|
||||||
|
emptyList2 = []
|
||||||
|
|
||||||
|
|
||||||
|
f = open("./test.txt", 'r', encoding='UTF-8')
|
||||||
|
|
||||||
|
|
||||||
|
for i in f:
|
||||||
|
a = str(i)
|
||||||
|
b = a.replace('\n', '')
|
||||||
|
emptyList1.append(b.split("\t"))
|
||||||
|
|
||||||
|
|
||||||
|
while len(emptyList2) < len(emptyList1):
|
||||||
|
for j in range(0, len(emptyList1)):
|
||||||
|
name = emptyList1[j][0]
|
||||||
|
sex = emptyList1[j][1]
|
||||||
|
phone = emptyList1[j][2]
|
||||||
|
|
||||||
|
Dict = {"name": name, "sex": sex, "phone": phone}
|
||||||
|
|
||||||
|
emptyList2.append(Dict)
|
||||||
|
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
|
||||||
|
return emptyList2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def checkPhoneNumber_Boolean(phone):
|
||||||
|
if phone.isdigit():
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
result.set("电话号码输入不是纯数字")
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def trim(strings):
|
||||||
|
|
||||||
|
while strings[:1] == ' ':
|
||||||
|
strings = strings[1:]
|
||||||
|
|
||||||
|
while strings[-1:] == ' ':
|
||||||
|
strings = strings[:-1]
|
||||||
|
|
||||||
|
return strings
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def checkTheSameName(enterName):
|
||||||
|
flagList = [] # 存的是名字的索引
|
||||||
|
List = []
|
||||||
|
returnList = []
|
||||||
|
date = 1
|
||||||
|
|
||||||
|
for i in range(0, len(LIST)):
|
||||||
|
if LIST[i]["name"] == enterName:
|
||||||
|
|
||||||
|
flagList.append(int(i))
|
||||||
|
|
||||||
|
if len(flagList) == 1:
|
||||||
|
|
||||||
|
return date # 返回1表示不重名
|
||||||
|
|
||||||
|
if len(flagList) > 1:
|
||||||
|
for i in flagList:
|
||||||
|
List.append(LIST[i])
|
||||||
|
|
||||||
|
|
||||||
|
returnList.append(List)
|
||||||
|
returnList.append(flagList)
|
||||||
|
return returnList # 第一个元素是列表,第二个元素是存储重复名字的索引的 列表
|
||||||
|
|
||||||
|
|
||||||
|
# 定义方法显示所有重复的学生信息
|
||||||
|
def show_ofTheSameName(list_ofTheSameName):
|
||||||
|
|
||||||
|
str_out = ""
|
||||||
|
|
||||||
|
str_out += "出现同名,同名学生信息显示如下:\n"
|
||||||
|
|
||||||
|
|
||||||
|
str_out += ("{:^9}".format("学生序号") +
|
||||||
|
"{:^9}".format("学生姓名") +
|
||||||
|
"{:^9}".format("学生性别") +
|
||||||
|
"{:^11}".format("电话号码") +
|
||||||
|
"\n")
|
||||||
|
|
||||||
|
for i in range(0, len(list_ofTheSameName)):
|
||||||
|
|
||||||
|
str_out += ("{:<11}".format(i + 1, chr(12288)) +
|
||||||
|
"{:<11}".format(list_ofTheSameName[i].get("name"), chr(12288)) +
|
||||||
|
"{:^9}".format(list_ofTheSameName[i].get("sex"), chr(12288)) +
|
||||||
|
"{:>15}".format(list_ofTheSameName[i].get("phone"), chr(12288)) +
|
||||||
|
"\n")
|
||||||
|
|
||||||
|
str_out += "\n请在上方输入详细学生信息,进行精准删除"
|
||||||
|
result.set(str_out)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def delete_Gui_StudentMessage():
|
||||||
|
textName.set("")
|
||||||
|
textSex.set("")
|
||||||
|
textPhone.set("")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def addStudentsMessage():
|
||||||
|
|
||||||
|
name = textName.get()
|
||||||
|
|
||||||
|
if not name:
|
||||||
|
result.set("学生姓名不能为空")
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
if trim(name) == "":
|
||||||
|
result.set("学生姓名不能为空")
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
sex = textSex.get()
|
||||||
|
if sex == "男" or sex == "女":
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
|
||||||
|
result.set("性别输入格式有误")
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
phone = textPhone.get()
|
||||||
|
|
||||||
|
resultBoolean = checkPhoneNumber_Boolean(phone)
|
||||||
|
if resultBoolean:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
return
|
||||||
|
|
||||||
|
Dict = {"name": name, "sex": sex, "phone": phone}
|
||||||
|
LIST.append(Dict)
|
||||||
|
result.set("学生已添加")
|
||||||
|
|
||||||
|
delete_Gui_StudentMessage()
|
||||||
|
|
||||||
|
writeTxt_wMode(LIST)
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
# 2、删除学生信息
|
||||||
|
def deleteMessage() -> list:
|
||||||
|
# 定义信号位
|
||||||
|
flag = True
|
||||||
|
|
||||||
|
enterName = textName.get()
|
||||||
|
|
||||||
|
for i in range(0, len(LIST)):
|
||||||
|
if LIST[i]["name"] == enterName:
|
||||||
|
flag = False
|
||||||
|
break
|
||||||
|
|
||||||
|
if flag:
|
||||||
|
result.set("学生不存在")
|
||||||
|
|
||||||
|
return LIST
|
||||||
|
|
||||||
|
# 开始遍历查找
|
||||||
|
accept = checkTheSameName(enterName) # 接收查找同名方法的返回值
|
||||||
|
|
||||||
|
if accept == 1:
|
||||||
|
for i in range(0, len(LIST)):
|
||||||
|
if LIST[i]["name"] == enterName:
|
||||||
|
del LIST[i]
|
||||||
|
result.set("删除成功")
|
||||||
|
writeTxt_wMode(LIST)
|
||||||
|
delete_Gui_StudentMessage()
|
||||||
|
# 删除成功直接返回,结束该方法
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
|
||||||
|
show_ofTheSameName(accept[0])
|
||||||
|
for i in range(0, len(LIST)):
|
||||||
|
if LIST[i]["name"] == textName.get():
|
||||||
|
if LIST[i]["sex"] == textSex.get():
|
||||||
|
if LIST[i]["phone"] == textPhone.get():
|
||||||
|
del LIST[i]
|
||||||
|
result.set("删除成功")
|
||||||
|
writeTxt_wMode(LIST)
|
||||||
|
delete_Gui_StudentMessage()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
# 3、修改学生信息
|
||||||
|
def change():
|
||||||
|
if LIST is None:
|
||||||
|
result.set("没有信息,无法修改")
|
||||||
|
return None
|
||||||
|
if len(LIST) == 0:
|
||||||
|
result.set("没有信息,无法修改")
|
||||||
|
return None
|
||||||
|
if len(LIST) != 0:
|
||||||
|
inputName = textName.get()
|
||||||
|
for i in range(0, len(LIST)):
|
||||||
|
if LIST[i]["name"] == inputName:
|
||||||
|
LIST[i]["sex"] = textSex.get()
|
||||||
|
LIST[i]["phone"] = textSex.get()
|
||||||
|
writeTxt_wMode(LIST)
|
||||||
|
result.set("修改成功")
|
||||||
|
|
||||||
|
delete_Gui_StudentMessage()
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
# 4、显示所有学生信息
|
||||||
|
def show():
|
||||||
|
|
||||||
|
str_out = ""
|
||||||
|
|
||||||
|
if LIST is None:
|
||||||
|
result.set("无学生信息")
|
||||||
|
return
|
||||||
|
if len(LIST) == 0:
|
||||||
|
result.set("无学生信息")
|
||||||
|
return
|
||||||
|
|
||||||
|
if len(LIST) != 0:
|
||||||
|
str_out += "学生信息如下:\n"
|
||||||
|
|
||||||
|
|
||||||
|
str_out += ("{:^9}".format("学生序号") +
|
||||||
|
"{:^9}".format("学生姓名") +
|
||||||
|
"{:^9}".format("学生性别") +
|
||||||
|
"{:^11}".format("电话号码") +
|
||||||
|
"\n")
|
||||||
|
|
||||||
|
for i in range(0, len(LIST)):
|
||||||
|
|
||||||
|
str_out += ("{:<11}".format(i + 1, chr(12288)) +
|
||||||
|
"{:<11}".format(LIST[i].get("name"), chr(12288)) +
|
||||||
|
"{:^9}".format(LIST[i].get("sex"), chr(12288)) +
|
||||||
|
"{:>15}".format(LIST[i].get("phone"), chr(12288)) +
|
||||||
|
"\n")
|
||||||
|
|
||||||
|
result.set(str_out)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
try:
|
||||||
|
for i in readTxt():
|
||||||
|
LIST.append(i)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
# 以下代码全部为gui界面的初始化
|
||||||
|
|
||||||
|
|
||||||
|
window = tk.Tk()
|
||||||
|
|
||||||
|
window.title('学生信息管理系统 ')
|
||||||
|
|
||||||
|
window.geometry('500x650')
|
||||||
|
|
||||||
|
|
||||||
|
result = tk.StringVar()
|
||||||
|
result.set(" ")
|
||||||
|
topLine_school = tk.Label(window, text="湖南工业大学科技学院", font=('宋体', 13), width=20).place(x=150, y=10,anchor='nw')
|
||||||
|
|
||||||
|
|
||||||
|
textName = tk.StringVar()
|
||||||
|
textName.set("")
|
||||||
|
labelLine1 = tk.Label(window, text="姓 名:", font=('Arial', 15), width=10).place(x=75, y=50, anchor='nw')
|
||||||
|
entryLine1 = tk.Entry(window, show=None, font=('宋体', 15), textvariable=textName, width=20)
|
||||||
|
entryLine1.place(x=190, y=50, anchor='nw') # 显示成明文形式
|
||||||
|
|
||||||
|
|
||||||
|
textSex = tk.StringVar()
|
||||||
|
textSex.set("")
|
||||||
|
labelLine2 = tk.Label(window, text="性 别:", font=('Arial', 15), width=10)
|
||||||
|
labelLine2.place(x=75, y=100, anchor='nw')
|
||||||
|
entryLine2 = tk.Entry(window, show=None, font=('Arial', 15), textvariable=textSex, width=18)
|
||||||
|
entryLine2.place(x=190, y=100, anchor='nw')
|
||||||
|
|
||||||
|
|
||||||
|
textPhone = tk.StringVar()
|
||||||
|
textPhone.set("")
|
||||||
|
labelLine3 = tk.Label(window, text="电 话:", font=('Arial', 15), width=10).place(x=75, y=150, anchor='nw')
|
||||||
|
entryLine3 = tk.Entry(window, show=None, font=('Arial', 15), textvariable=textPhone, width=18)
|
||||||
|
entryLine3.place(x=190, y=150, anchor='nw')
|
||||||
|
|
||||||
|
|
||||||
|
button1_add = tk.Button(window, text='添 加', bg='silver', font=('Arial', 12), command=addStudentsMessage,
|
||||||
|
width=8)
|
||||||
|
button1_add.place(x=40, y=220, anchor='nw')
|
||||||
|
|
||||||
|
button2_delete = tk.Button(window, text='删 除', bg='silver', font=('Arial', 12), command=deleteMessage, width=8)
|
||||||
|
button2_delete.place(x=150, y=220, anchor='nw')
|
||||||
|
|
||||||
|
button3_change = tk.Button(window, text='修 改', bg='silver', font=('Arial', 12), command=change, width=8)
|
||||||
|
button3_change.place(x=260, y=220, anchor='nw')
|
||||||
|
|
||||||
|
button4_show = tk.Button(window, text='显 示', bg='silver', font=('Arial', 12), command=show, width=8)
|
||||||
|
button4_show.place(x=370, y=220, anchor='nw')
|
||||||
|
|
||||||
|
labelLine_Name = tk.Label(window, text="@Author:", font=('宋体', 13), width=10).place(x=130, y=260, anchor='nw')
|
||||||
|
labelLine_myID = tk.Label(window, text="陈浩", font=('宋体', 13), width=10).place(x=250, y=260, anchor='nw')
|
||||||
|
|
||||||
|
show_result = tk.Label(window, bg="white", fg="black", font=("宋体", 12), bd='0', anchor='nw', textvariable=result)
|
||||||
|
show_result.place(x="25", y="300", width="450", height="300")
|
||||||
|
|
||||||
|
window.mainloop()
|
Loading…
Reference in new issue