这学期学了python,结果学的还是很浅,然后就写了个简单的大作业,学习一下。这是个简单的操作系统,然后设计了一个简单的界面,还是有很多粗糙的地方,后面还是需要好好学习,好好干,继续学。
import os
import re
import numpy as np
from tkinter import *
root=Tk()
root.title('列车查询系统')
root.geometry('500x240')
tralist =[]
s=''
class Train: #定义一个列车类
def __init__(self):
self.forname = ''
self.ID =''
self.lastname = ''
self.time = 0.0
self.price = 0
self.seating = 0
def Init(tralist): #初始化函数
print ("初始化......")
file_object = open('train.txt', 'r')
for line in file_object:
tra = Train()
line = line.strip("\n")
s = line.split(" ")
tra.ID = s[0]
tra.forname = s[1]
tra.lastname = s[2]
tra.time = s[3]
tra.price = s[4]
tra.seating = s[5]
tralist.append(tra)
file_object.close()
print ("初始化成功!")
class SEA():
def Search_f(self):
roob=Toplevel(root)
roob.title('列车信息查询')
roob.geometry('650x150')
lb4 = Label(roob, text='请输入列车车次')
lb4.place(relx=0.2, rely=0.1, relwidth=0.4, relheight=0.2)
d_text=StringVar()
d_text.set("")
self.inp4 = Entry(roob,textvariable =d_text)
self.inp4.place(relx=0.6, rely=0.1, relwidth=0.2, relheight=0.2)
self.bt=Button(roob,text="查询",command=self.Search)
self.bt.place(relx=0.1, rely=0.3, relwidth=0.2, relheight=0.2)
self.btClose=Button(roob,text='关闭',command=roob.destroy)
self.btClose.place(relx=0.5, rely=0.3, relwidth=0.2, relheight=0.2)
self.txt = Text(roob)
self.txt.place(relx=0.1, rely=0.6, relwidth=0.8, relheight=0.2)
def Search(self):
ID=self.inp4.get()
if self.searchByID(tralist, ID) == False:
self.txt.delete(1.0,END)
self.txt.insert(END,'没有该列车信息!' )
self.inp4.delete(0, END)
return
self.txt.delete(1.0,END)
self.txt.insert(END,"{0:^6}\t{1:{6}^6}\t{2:{6}^6}\t{3:{6}^6}\t{4:{6}^6}\t{5:{6}^6}".format("车次","起点","终点","时间","票价","座位数",chr(12288)))
for item in tralist:
if item.ID == ID:
self.txt.insert(END,"{0:^8}\t{1:{6}^6}\t{2:{6}^6}\t{3:^12}\t{4:^12}\t{5:^8}".format(item.ID,item.forname,item.lastname,item.time,item.price,item.seating,chr(12288)))
self.inp4.delete(0, END)
break
def searchByID(self,tralist,ID):
for item in tralist:
if item.ID == ID:
return True
return False
class CHA():
def Change_f(self):
roob=Toplevel(root)
roob.title('列车信息修改')
roob.geometry('600x240')
lb = Label(roob, text='请输入列车车次')
lb.place(relx=0.1, rely=0, relwidth=0.4, relheight=0.1)
d_text=StringVar()
d_text.set("")
self.inp = Entry(roob,textvariable =d_text)
self.inp.place(relx=0.5, rely=0, relwidth=0.2, relheight=0.1)
self.bt=Button(roob,text="查询",command=self.sal)
self.bt.place(relx=0.8, rely=0, relwidth=0.2, relheight=0.1)
self.txt = Text(roob)
self.txt.place(relx=0.1, rely=0.1, relwidth=0.8, relheight=0.1)
lb1 = Label(roob, text='请输入列车的车次')
lb1.place(relx=0.1, rely=0.2, relwidth=0.5, relheight=0.1)
a_text=StringVar()
a_text.set("")
self.inp1 = Entry(roob,textvariable =a_text)
self.inp1.place(relx=0.6, rely=0.2, relwidth=0.3, relheight=0.1)
lb2 = Label(roob, text='请输入列车的起点')
lb2.place(relx=0.1, rely=0.3, relwidth=0.5, relheight=0.1)
b_text=StringVar()
b_text.set("")
self.inp2 = Entry(roob,textvariable =b_text)
self.inp2.place(relx=0.6, rely=0.3, relwidth=0.3, relheight=0.1)
lb3 = Label(roob, text='请输入列车的终点')
lb3.place(relx=0.1, rely=0.4, relwidth=0.5, relheight=0.1)
c_text=StringVar()
c_text.set("")
self.inp3 = Entry(roob,textvariable =c_text)
self.inp3.place(relx=0.6, rely=0.4, relwidth=0.3, relheight=0.1)
lb4 = Label(roob, text='请输入列车的时间')
lb4.place(relx=0.1, rely=0.5, relwidth=0.5, relheight=0.1)
d_text=StringVar()
d_text.set("")
self.inp4 = Entry(roob,textvariable =d_text)
self.inp4.place(relx=0.6, rely=0.5, relwidth=0.3, relheight=0.1)
lb5 = Label(roob, text='请输入列车的票价')
lb5.place(relx=0.1, rely=0.6, relwidth=0.5, relheight=0.1)
e_text=StringVar()
e_text.set("")
self.inp5 = Entry(roob,textvariable =e_text)
self.inp5.place(relx=0.6, rely=0.6, relwidth=0.3, relheight=0.1)
lb6 = Label(roob, text='请输入列车的座位数')
lb6.place(relx=0.1, rely=0.7, relwidth=0.5, relheight=0.1)
f_text=StringVar()
f_text.set("")
self.inp6 = Entry(roob,textvariable =f_text)
self.inp6.place(relx=0.6, rely=0.7, relwidth=0.3, relheight=0.1)
self.bt1=Button(roob,text="清空数据",command=self.Delete)
self.bt1.place(relx=0.1, rely=0.9, relwidth=0.1, relheight=0.1)
self.bt2=Button(roob,text="修改",command=self.Change)
self.bt2.place(relx=0.7, rely=0.8, relwidth=0.2, relheight=0.1)
self.btClose=Button(roob,text='关闭',command=roob.destroy)
self.btClose.place(relx=0.7, rely=0.9, relwidth=0.2, relheight=0.1)
self.txt1 = Text(roob)
self.txt1.place(relx=0.1, rely=0.8, relwidth=0.4, relheight=0.1)
def sal(self):
ID=self.inp.get()
if self.searchByID(tralist, ID) == False:
self.txt.delete(1.0,END)
self.txt.insert(END,'没有该列车信息!' )
self.inp.delete(0, END)
return
self.txt.delete(1.0,END)
for item in tralist:
if item.ID == ID:
self.txt.insert(END,"{0:^8}\t{1:{6}^6}\t{2:{6}^6}\t{3:^12}\t{4:^12}\t{5:^8}".format(item.ID,item.forname,item.lastname,item.time,item.price,item.seating,chr(12288)))
break
def searchByID(self,tralist,ID):
for item in tralist:
if item.ID == ID:
return True
return False
def Delete(self):
self.inp1.delete(0, END)
self.inp2.delete(0, END)
self.inp3.delete(0, END)
self.inp4.delete(0, END)
self.inp5.delete(0, END)
self.inp6.delete(0, END)
def Change(self):
ID=self.inp.get()
for item in tralist:
if item.ID == ID:
tralist.remove(item)
file_object = open("train.txt", "w")
for tra in tralist:
file_object.write(tra.ID)
file_object.write(" ")
file_object.write(tra.forname)
file_object.write(" ")
file_object.write(tra.lastname)
file_object.write(" ")
file_object.write(str(tra.time))
file_object.write(" ")
file_object.write(str(tra.price))
file_object.write(" ")
file_object.write(str(tra.seating))
file_object.write("\n")
file_object.close()
tra = Train()
tra.ID=str(self.inp1.get())
tra.forname=str(self.inp2.get())
tra.lastname=str(self.inp3.get())
tra.time=str(self.inp4.get())
tra.price=str(self.inp5.get())
tra.seating=str(self.inp6.get())
self.Add(tralist,tra)
print(tra.ID)
def Add(self,tralist,tra):
if self.searchByID(tralist, tra.ID) == True:
self.txt1.delete(1.0,END)
self.txt1.insert(END,'车次重复,修改失败' )
return
tralist.append(tra)
file_object = open("train.txt", "a")
file_object.write(tra.ID)
file_object.write(" ")
file_object.write(tra.forname)
file_object.write(" ")
file_object.write(tra.lastname)
file_object.write(" ")
file_object.write(tra.time)
file_object.write(" ")
file_object.write(tra.price)
file_object.write(" ")
file_object.write(tra.seating)
file_object.write("\n")
file_object.close()
self.txt1.delete(1.0,END)
self.txt1.insert(END,'修改成功' )
return
class DIS():
def display(self):
roob=Toplevel(root)
roob.title('列车信息显示')
roob.geometry('600x300')
self.txt = Text(roob)
self.txt.place(relwidth=1, relheight=1)
self.txt.insert(END,"{0:^6}\t{1:{6}^6}\t{2:{6}^6}\t{3:{6}^6}\t{4:{6}^6}\t{5:{6}^6}\n".format("车次","起点","终点","时间","票价","座位数",chr(12288)))
size = os.path.getsize('train.txt')
if size == 0:
self.txt.insert(END,'没有车次信息')
return
self.Sort(tralist)
for item in tralist:
self.txt.insert(END,"{0:^8}\t{1:{6}^6}\t{2:{6}^6}\t{3:^12}\t{4:^12}\t{5:^8}\n".format(item.ID,item.forname,item.lastname,item.time,item.price,item.seating,chr(12288)))
def Sort(self,tralist):
tra = []
time_count = []
for li in tralist:
temp = []
temp.append(li.ID)
temp.append(li.forname)
temp.append(li.lastname)
temp.append(float(li.time))
temp.append(int(li.price))
temp.append(int(li.seating))
time_count.append(float(li.time))
tra.append(temp)
self.insertSort(time_count,tralist)
def insertSort(self,a, tralist):
for i in range(len(a)-1):
for j in range(i+1,len(a)):
if a[i]>a[j]:
temp = tralist[i]
tralist[i] = tralist[j]
tralist[j] = temp
class DEL():
def Del_f(self):
roob=Toplevel(root)
roob.title('列车信息删除')
roob.geometry('400x160')
lb4 = Label(roob, text='请输入列车车次')
lb4.place(relx=0.1, rely=0.2, relwidth=0.4, relheight=0.2)
d_text=StringVar()
d_text.set("")
self.inp4 = Entry(roob,textvariable =d_text)
self.inp4.place(relx=0.6, rely=0.2, relwidth=0.3, relheight=0.2)
self.bt=Button(roob,text="删除",command=self.Del)
self.bt.place(relx=0.6, rely=0.5, relwidth=0.3, relheight=0.2)
self.btClose=Button(roob,text='关闭',command=roob.destroy)
self.btClose.place(relx=0.6, rely=0.7, relwidth=0.3, relheight=0.2)
self.txt = Text(roob)
self.txt.place(relx=0.1, rely=0.6, relwidth=0.4, relheight=0.2)
def searchByID(self,tralist,ID):
for item in tralist:
if item.ID == ID:
return True
return False
def Del(self):
ID=self.inp4.get()
if self.searchByID(tralist, ID) == False:
self.txt.delete(1.0,END)
self.txt.insert(END,'没有该列车信息!' )
self.inp4.delete(0, END)
return
for item in tralist:
if item.ID == ID:
tralist.remove(item)
self.txt.delete(1.0,END)
self.txt.insert(END,'删除成功!' )
self.inp4.delete(0, END)
break
file_object = open("train.txt", "w")
for tra in tralist:
file_object.write(tra.ID)
file_object.write(" ")
file_object.write(tra.forname)
file_object.write(" ")
file_object.write(tra.lastname)
file_object.write(" ")
file_object.write(str(tra.time))
file_object.write(" ")
file_object.write(str(tra.price))
file_object.write(" ")
file_object.write(str(tra.seating))
file_object.write("\n")
file_object.close()
class ADD:
def Add_f(self):
roob=Toplevel(root)
roob.title('列车信息输入')
roob.geometry('500x240')
lb1 = Label(roob, text='请输入列车的车次')
lb1.place(relx=0.1, rely=0.1, relwidth=0.5, relheight=0.1)
a_text=StringVar()
a_text.set("")
self.inp1 = Entry(roob,textvariable =a_text)
self.inp1.place(relx=0.6, rely=0.1, relwidth=0.3, relheight=0.1)
lb2 = Label(roob, text='请输入列车的起点')
lb2.place(relx=0.1, rely=0.2, relwidth=0.5, relheight=0.1)
b_text=StringVar()
b_text.set("")
self.inp2 = Entry(roob,textvariable =b_text)
self.inp2.place(relx=0.6, rely=0.2, relwidth=0.3, relheight=0.1)
lb3 = Label(roob, text='请输入列车的终点')
lb3.place(relx=0.1, rely=0.3, relwidth=0.5, relheight=0.1)
c_text=StringVar()
c_text.set("")
self.inp3 = Entry(roob,textvariable =c_text)
self.inp3.place(relx=0.6, rely=0.3, relwidth=0.3, relheight=0.1)
lb4 = Label(roob, text='请输入列车的时间')
lb4.place(relx=0.1, rely=0.4, relwidth=0.5, relheight=0.1)
d_text=StringVar()
d_text.set("")
self.inp4 = Entry(roob,textvariable =d_text)
self.inp4.place(relx=0.6, rely=0.4, relwidth=0.3, relheight=0.1)
lb5 = Label(roob, text='请输入列车的票价')
lb5.place(relx=0.1, rely=0.5, relwidth=0.5, relheight=0.1)
e_text=StringVar()
e_text.set("")
self.inp5 = Entry(roob,textvariable =e_text)
self.inp5.place(relx=0.6, rely=0.5, relwidth=0.3, relheight=0.1)
lb6 = Label(roob, text='请输入列车的座位数')
lb6.place(relx=0.1, rely=0.6, relwidth=0.5, relheight=0.1)
f_text=StringVar()
f_text.set("")
self.inp6 = Entry(roob,textvariable =f_text)
self.inp6.place(relx=0.6, rely=0.6, relwidth=0.3, relheight=0.1)
self.bt1=Button(roob,text="清空数据",command=self.Delete)
self.bt1.place(relx=0.1, rely=0.9, relwidth=0.1, relheight=0.1)
self.bt=Button(roob,text="添加",command=lambda:self.Add(a_text,b_text,c_text,d_text,e_text,f_text))
self.bt.place(relx=0.7, rely=0.8, relwidth=0.2, relheight=0.1)
self.btClose=Button(roob,text='关闭',command=roob.destroy)
self.btClose.place(relx=0.7, rely=0.9, relwidth=0.2, relheight=0.1)
self.txt = Text(roob)
self.txt.place(relx=0.1, rely=0.8, relwidth=0.4, relheight=0.1)
def Delete(self):
self.inp1.delete(0, END)
self.inp2.delete(0, END)
self.inp3.delete(0, END)
self.inp4.delete(0, END)
self.inp5.delete(0, END)
self.inp6.delete(0, END)
def Add(self,ID,forname,lastname,time,price,seating):
tra = Train()
tra.ID=str(ID.get())
tra.forname=str(forname.get())
tra.lastname=str(lastname.get())
tra.time=str(time.get())
tra.price=str(price.get())
tra.seating=str(seating.get())
print(tra.ID,tra.forname,tra.lastname,tra.time,tra.price,tra.seating)
if self.searchByID(tralist, tra.ID) == True:
self.txt.delete(1.0,END)
self.txt.insert(END,'车次重复,保存失败' )
return
tralist.append(tra)
file_object = open("train.txt", "a")
file_object.write(tra.ID)
file_object.write(" ")
file_object.write(tra.forname)
file_object.write(" ")
file_object.write(tra.lastname)
file_object.write(" ")
file_object.write(tra.time)
file_object.write(" ")
file_object.write(tra.price)
file_object.write(" ")
file_object.write(tra.seating)
file_object.write("\n")
file_object.close()
self.txt.delete(1.0,END)
self.txt.insert(END,'保存成功' )
return
def searchByID(self,tralist,ID):
for item in tralist:
if item.ID == ID:
return True
return False
def main(): #主函数 该程序的入口函数
#root=Toplevel(rooa)
b.destroy()
root.title('列车查询系统')
root.geometry('500x240')
root.colors='#d3fbfb'
add=ADD()
bt1=Button(root,text="添加数据",command=add.Add_f)
bt1.place(relx=0.3, rely=0.2, relwidth=0.3, relheight=0.1)
dela=DEL()
bt2=Button(root,text="删除数据",command=dela.Del_f)
bt2.place(relx=0.3, rely=0.3, relwidth=0.3, relheight=0.1)
sea=SEA()
bt6=Button(root,text="列车查询",command=sea.Search_f)
bt6.place(relx=0.3, rely=0.4, relwidth=0.3, relheight=0.1)
dis=DIS()
bt3=Button(root,text="列车显示",command=dis.display)
bt3.place(relx=0.3, rely=0.5, relwidth=0.3, relheight=0.1)
cha=CHA()
bt4=Button(root,text="修改数据",command=cha.Change_f)
bt4.place(relx=0.3, rely=0.6, relwidth=0.3, relheight=0.1)
bt5=Button(root,text="退出系统",command=root.destroy)
bt5.place(relx=0.3, rely=0.7, relwidth=0.3, relheight=0.1)
Init(tralist)
b=Button(root,text="欢迎使用列车管理系统",bg='#d3fbfb',fg='red',font=('华文新魏',32),relief=SUNKEN,command=main,width=500,height=240)
b.pack()
root.mainloop()