课设——参赛队伍管理功能及部分GUI设计源码

class TeamInfo:
        def __init__(self, number, work, school, category, competitor, teacher):
            self.number = number
            self.work = work
            self.school = school
            self.category = category
            self.competitor = competitor
            self.teacher = teacher

class MyTable():
    def __init__(self, master):
        xscroll = Scrollbar(master, orient=HORIZONTAL)
        yscroll = Scrollbar(master, orient=VERTICAL)
        xscroll.pack(side=BOTTOM, fill=X)
        yscroll.pack(side=RIGHT, fill=Y)
        self.table = ttk.Treeview(master=master,
                                  columns=tablecolumns,
                                  height=15,
                                  show='headings',
                                  xscrollcommand=xscroll.set,
                                  yscrollcommand=yscroll.set)
        self.table.pack()
        xscroll.config(command=self.table.xview)
        yscroll.config(command=self.table.yview)
        for i in range(len(tablecolumns)):
            self.table.heading(column=tablecolumns[i], text=tablecolumns[i], anchor=CENTER)
            self.table.column(column=tablecolumns[i], anchor=CENTER, width=150, stretch=True)
        self.table.column(column=tablecolumns[1], anchor=CENTER, width=380, stretch=True)
        with open("team.txt", "r", encoding="utf-8") as file:
            messages = file.readlines()
        for message in messages[1:]:
            ateam = message.replace("\t", "").strip().split("#")
            self.table.insert('', END, values=ateam)
            management[ateam[0]] = TeamInfo(ateam[0], ateam[1], ateam[2], ateam[3], ateam[4], ateam[5])

    def add_info(self):
        tablevalues2 = list()
        tablevalues2.append(entry1.get())
        tablevalues2.append(entry2.get())
        tablevalues2.append(entry3.get())
        tablevalues2.append(entry4.get())
        tablevalues2.append(entry5.get())
        tablevalues2.append(entry6.get())
        self.table.insert('', END, values=tablevalues2)
        management[entry1.get()] = TeamInfo(entry1.get(),
                                            entry2.get(),
                                            entry3.get(),
                                            entry4.get(),
                                            entry5.get(),
                                            entry6.get())
        self.table.selection_set(self.table.get_children()[-1])
        messagebox.showinfo(title="提示", message="已添加!")

    def delete_info(self):
        if entry1.get() in management.keys():
            index = list(management.keys()).index(entry1.get())
            self.table.delete(self.table.get_children()[index])
            del management[entry1.get()]
            messagebox.showinfo(title="提示", message="已删除!")
        else:
            messagebox.showerror("提示", "该编号不存在!")

    def change_info(self):
        tablevalues1 = list()
        tablevalues1.append(entry1.get())
        tablevalues1.append(entry2.get())
        tablevalues1.append(entry3.get())
        tablevalues1.append(entry4.get())
        tablevalues1.append(entry5.get())
        tablevalues1.append(entry6.get())
        dex = list(management.keys()).index(entry1.get())
        self.table.item(self.table.get_children()[dex], values=tablevalues1)
        management[entry1.get()] = TeamInfo(entry1.get(),
                                            entry2.get(),
                                            entry3.get(),
                                            entry4.get(),
                                            entry5.get(),
                                            entry6.get())
        messagebox.showinfo("提示", "修改成功!")


def clear_entry():
    entry1.delete(0, "end")
    entry2.delete(0, "end")
    entry3.delete(0, "end")
    entry4.delete(0, "end")
    entry5.delete(0, "end")
    entry6.delete(0, "end")


def query_window():
    if messagebox.askyesno("提示", "是否保存所有对信息的修改?"):
        with open("team.txt", "w", encoding="utf-8") as file:
            file.write("参赛队编号\t#\t参赛作品名称\t#\t参赛学校\t#\t赛事类别\t#\t参赛者\t#\t指导老师\n")
            for i in management.keys():
                file.write(management[i].number + "\t")
                file.write("#\t" + management[i].work + "\t")
                file.write("#\t" + management[i].school + "\t")
                file.write("#\t" + management[i].category + "\t")
                file.write("#\t" + management[i].competitor + "\t")
                file.write("#\t" + management[i].teacher + "\n")
    root.destroy()


def build_menu(menu_bar):
    main_menu = Menu(menu_bar)
    main_menu.add_command(label="管理")
    submenu1 = Menu(main_menu,activebackground="pink",tearoff=False)
    submenu1.add_command(label="查询叫号",command=lambda:build_toplevel1(menu_bar))
    submenu1.add_command(label="模拟叫号",command=build_toplevel2)
    submenu2 = Menu(main_menu,activebackground="pink",tearoff=False)
    submenu2.add_command(label="查询目的地信息", command=lambda: build_toplevel6(menu_bar))
    submenu2.add_command(label="导航目的地", command=lambda: build_toplevel5(menu_bar))
    main_menu.add_cascade(label="叫号",menu=submenu1)
    main_menu.add_command(label="查询",command=lambda: build_toplevel4(menu_bar))
    main_menu.add_cascade(label="目的地",menu=submenu2)
    menu_bar.config(menu=main_menu)


root = Tk()
build_menu(root)
upframe = Frame(root)
downframe = Frame(root)
leftframe = Frame(downframe)
rightframe = Frame(downframe)
upframe.pack(side="top")
downframe.pack()
leftframe.pack(side="left")
rightframe.pack(side="right")
root.title("计设大赛赛事管理系统")
root.geometry('800x650+350+100')
mytable = MyTable(upframe)
for i, j in enumerate(tablecolumns):
    Label(leftframe, text=j).grid(row=i)
entry1 = Entry(leftframe)
entry2 = Entry(leftframe)
entry3 = Entry(leftframe)
entry4 = Entry(leftframe)
entry5 = Entry(leftframe)
entry6 = Entry(leftframe)
entry1.grid(row=0, column=1, padx=20, pady=5)
entry2.grid(row=1, column=1, padx=20, pady=5)
entry3.grid(row=2, column=1, padx=20, pady=5)
entry4.grid(row=3, column=1, padx=20, pady=5)
entry5.grid(row=4, column=1, padx=20, pady=5)
entry6.grid(row=5, column=1, padx=20, pady=5)
button1 = Button(rightframe, text="由编号查询团队信息", command=search_team)
button2 = Button(rightframe, text="增添参赛团队信息", command=mytable.add_info)
button3 = Button(rightframe, text="由编号删除团队信息", command=mytable.delete_info)
button4 = Button(rightframe, text="一键清空输入框", command=clear_entry)
button5 = Button(rightframe, text="修改参赛团队信息", command=mytable.change_info)
button1.pack(anchor="w", padx=20, pady=5)
button2.pack(anchor="w", padx=20, pady=5)
button3.pack(anchor="w", padx=20, pady=5)
button4.pack(anchor="w", padx=20, pady=5)
button5.pack(anchor="w", padx=20, pady=5)
root.protocol('WM_DELETE_WINDOW', query_window)
root.mainloop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值