zoukankan      html  css  js  c++  java
  • 学生信息管理系统

    from tkinter import *
    from tkinter import ttk
    from tkinter import messagebox
    from tkinter import filedialog
    import pickle
    
    win=Tk()
    win.title('学生信息管理系统')
    win.geometry('520x590+400+200')
    
    ListTemp=[]
    
    
    f1 = LabelFrame(win,text='信息管理')
    f1.grid(row=0,column=0,padx=10,pady=10)
    
    Label(f1,text='学生姓名').grid(row=0,column=0,padx=10,pady=10)
    Label(f1,text='学生年龄').grid(row=0,column=2,padx=10,pady=10)
    Label(f1,text='数学成绩').grid(row=1,column=0,padx=10,pady=10)
    Label(f1,text='语文成绩').grid(row=1,column=2,padx=10,pady=10)
    Label(f1,text='现住城市').grid(row=2,column=2,padx=10,pady=10)
    
    name=StringVar()
    Entry(f1,textvariable=name,width=20).grid(row=0,column=1,padx=10,pady=10)
    age=StringVar()
    Entry(f1,textvariable=age,width=20).grid(row=0,column=3,padx=10,pady=10)
    math=StringVar()
    Entry(f1,textvariable=math,width=20).grid(row=1,column=1,padx=10,pady=10)
    chinese=StringVar()
    Entry(f1,textvariable=chinese,width=20).grid(row=1,column=3,padx=10,pady=10)
    
    v = IntVar()
    v.set(1)
    Radiobutton(f1,text='男生',variable=v,value=1).grid(row=2,column=0,padx=10,pady=10)
    Radiobutton(f1,text='女生',variable=v,value=2).grid(row=2,column=1,padx=10,pady=10)
    
    city=StringVar()
    c = ttk.Combobox(f1,textvariable=city,width=15)
    c.grid(row=2,column=3,padx=10,pady=10)
    c['values'] = ('北京市','上海市','深圳市')
    c['state'] = 'readonly'
    c.current(0)
    
    f2 = LabelFrame(win,text='信息查询')
    f2.grid(row=1,column=0,padx=10,pady=10,sticky=W+E)
    
    
    
    
    
    ch=StringVar()
    ch.set('输入学生姓名')
    Button(f2,text='查询',width=10).grid(row=0,column=4,padx=10,pady=10)
    Entry(f2,textvariable=ch,width=15).grid(row=0,column=5,padx=10,pady=10)
    
    f3 = LabelFrame(win,text='学生情况明细',font=(None ,10),padx=5,pady=5)
    f3.grid(row=3,column = 0,padx=10,pady=1)
    tree = ttk.Treeview(f3,show='headings',columns=('name','age','sex','city','math','chinese'))
    
    tree.column('name',width=80,anchor='center')
    tree.heading('name',text='姓名')
    tree.column('age',width=60,anchor='center')
    tree.heading('age',text='年龄')
    tree.column('sex',width=80,anchor='center')
    tree.heading('sex',text='性别')
    tree.column('city',width=80,anchor='center')
    tree.heading('city',text='现住城市')
    tree.column('math',width=80,anchor='center')
    tree.heading('math',text='数学成绩')
    tree.column('chinese',width=80,anchor='center')
    tree.heading('chinese',text='语文成绩')
    
    
    
    
    #加滚动条
    vbar = Scrollbar(f3, orient=VERTICAL)
    vbar.config(command = tree.yview)
    tree.configure(yscrollcommand=vbar.set)
    tree.grid(row=3)
    vbar.grid(row=3, column=1,sticky=NS)
    
    tree.grid()
    
    f4 = LabelFrame(win,padx=5,pady=5)
    f4.grid(row=5,column = 0,padx=10,pady=1,sticky=W+E)
    
    #添加学生
    def addDate():
        if name.get()=='' or age.get()=='' or math.get()=='' or chinese.get()=='':
            messagebox.showinfo('提示','数据不完整')
            return
        sname = name.get()
        sage = age.get()
        smath = math.get()
        schinese = chinese.get()
        ssex = v.get()
        if ssex==1:
            ssex=''
        else:
            ssex=''
        scity = city.get()
        tree.insert('',END,values=(sname,sage,ssex,schinese,smath,scity))
        messagebox.showinfo('提示','添加成功')
    #修改学生
    def modDate():
        try:
            i = tree.selection()
            t = tree.item(i,'values')
            name.set(t[0])
            age.set(t[1])
            math.set(t[2])
            chinese.set(t[2])
        except:
            messagebox.showinfo('提示','请先选中要修改的学生')
            return
        r = messagebox.askyesno('提示','确定要修改此学生吗?')
        if r==True:
            tree.delete(i)
        
    #删除学生
    def delDate():
        try:
            i = tree.selection()
        except:
            messagebox.showinfo('提示','请先选中要删除的学生')
            return
        r = messagebox.askyesno('提示','确定要删除此学生吗?')
        if r==True:
            tree.delete(i)
            messagebox.showinfo('提示','删除成功')
        
    #重置表单
    def clearDate():
        name.set('')
        age.set('')
        math.set('')
        chinese.set('')
    
    
    Button(f2,text='添加',width=5,command=addDate).grid(row=0,column=0,padx=10,pady=10)
    Button(f2,text='修改',width=5,command=modDate).grid(row=0,column=1,padx=10,pady=10)
    Button(f2,text='删除',width=5,command=delDate).grid(row=0,column=2,padx=10,pady=10)
    Button(f2,text='重置',width=5,command=clearDate).grid(row=0,column=3,padx=10,pady=10)
    
    stuList=[]
    #保存数据
    def saveDate():
        itemList=[]
        items = tree.get_children()
        for i in items:
            stuList.append(list(tree.item(i,'values')))
        fileName = filedialog.asksaveasfilename(defaultextension='.txt')
        r = messagebox.askyesno('提示','确定更新数据吗')
        if r==True:
            with open(fileName,'wb') as file:
                pickle.dump(stuList,file)
            #tree.delete(i)
            messagebox.showinfo('提示','保存成功')       
        
        
            
    #读取数据
    def readDate():
        fileName = filedialog.askopenfilename()
        with open(fileName,'rb') as file:
            s = pickle.load(file)
        for i in s:
            tree.insert('',END,values=(i[0],i[1],i[2],i[3],i[4],i[5]))
    #自定义项
    def zhidingyi():
        pass
    #退出程序
    def exitDate():
        win.destroy()
    
    Button(f4,text='读取数据',width=12,anchor='center',command=readDate).grid(row=0,column=0,padx=10,pady=10)
    Button(f4,text='保存数据',width=12,anchor='center',command=saveDate).grid(row=0,column=1,padx=10,pady=10)
    Button(f4,text='自定义项',width=12,anchor='center').grid(row=0,column=2,padx=10,pady=10)
    Button(f4,text='退出程序',width=12,anchor='center',command=exitDate).grid(row=0,column=3,padx=10,pady=10)
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    win.mainloop()
  • 相关阅读:
    JS 心得总结
    zk 隐藏网页文件后缀
    zk label控件内容换行
    ZK 代码自动提示
    zk 获取session,request,servletContext,response
    zk回车事件
    zk jquery的使用
    zk listbox 点击列标题实现排序功能
    Django框架学习----视图与模板(最新文章实现)
    Django框架学习----视图与模板(分页功能)
  • 原文地址:https://www.cnblogs.com/wumac/p/6722971.html
Copyright © 2011-2022 走看看