Python作业|界面UI版学生管理系统

作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码 

项目编号:KS-Python-001

一,环境介绍

语言环境:Python3.7

数据库:Mysql: mysql5.7

开发工具:IDEA

二,项目简介

主要作为作业使用,基于Python的UI实现一个学生的信息增删改查的管理系统。完成了Python和数据库的连接,并进行了学生信息的添加、条件查询、修改和删除操作。

三,系统展示

四,核心代码展示

# -*- encoding:utf-8 -*-
"""

@文件名:MyUi.py

@文档说明:
"""
# 导入 tkinter 库
from tkinter import *
# 导入tkinter库中的ttk
from tkinter import ttk
# 导入com.zs.dao下的BaseDao模块
from com.zs.dao import BaseDao as bd
# 导入com.zs.entity下的Student实体类
import com.zs.entity.Student as s
# 导入tkinter的对话框
from tkinter import messagebox

# 实例化学生实体类
stu=s.Student()
# 底部容器的右边按钮绑定的方法
# 添加
def insert():
    # 获取输入框的值
    snameValue=snameEntry.get()
    ssexValue=ssexEntry.get()
    sageValue=sageEntry.get()
    if(snameValue=="" or ssexValue=="" or sageValue==""):
        messagebox.showwarning("警告","学生的姓名、性别、年龄不能为空!")
    else:
        print("添加中......")
        sageValue = int(sageEntry.get())
        stu.setSage(sageValue)
        stu.setSname(snameValue)
        stu.setSsex(ssexValue)
        bd.addStudent(stu)
        # 添加之后重新加载表格数据
        fresh()
        clearEntry()
        print("添加成功!")
# 删除
def delete():
    sidValue=sidEntry.get()
    if(sidValue!=""):
        print("删除中......")
        sidValue=int(sidEntry.get())
        stu.setSid(sidValue)
        bd.delStudent(stu)
        # 删除之后刷新数据
        fresh()
        # 清空输入框
        clearEntry()
        print("删除成功!")
    elif(sidValue==""):
        # 用户没有选择任何学生进行删除
        messagebox.showwarning("警告","请选择需要删除的学生")
# 修改
def update():
    sidValue=sidEntry.get()
    if(sidValue!=""):
        print("修改中......")
        sidValue=int(sidEntry.get())
        snameValue = snameEntry.get()
        ssexValue = ssexEntry.get()
        sageValue = int(sageEntry.get())

        stu.setSid(sidValue)
        stu.setSname(snameValue)
        stu.setSsex(ssexValue)
        stu.setSage(sageValue)
        bd.updStudent(stu)
        fresh()
        clearEntry()
        print("修改成功!")
    elif(sidValue==""):
        # 用户没有选择任何学生进行修改
        messagebox.showwarning("警告", "请选择需要修改的学生")


# 查询
def select():
    print("查询中......")
    sidValue= sidEntry.get()
    if(sidValue!=""):
        sidValue = int(sidEntry.get())
    snameValue = snameEntry.get()
    ssexValue = ssexEntry.get()
    sageValue=sageEntry.get()
    if (sageValue!= ""):
        sageValue = int(sageEntry.get())

    stu.setSid(sidValue)
    stu.setSname(snameValue)
    stu.setSsex(ssexValue)
    stu.setSage(sageValue)

    for i in treeView.get_children():
        treeView.delete(i)
    for i in bd.selectStu(stu):
        treeView.insert("", 0, values=(i[0], i[1], i[2], i[3]))
    print("查询成功......")


# 刷新数据的方法
def fresh():
    for i in treeView.get_children():
        treeView.delete(i)
    for i in bd.getAll():
        treeView.insert("", 0, values=(i[0], i[1], i[2], i[3]))

# 表格选中某列的方法
def treeViewSelect(event):
    item = treeView.selection()
    itemValues = treeView.item(item, "values")
    sidValue=itemValues[0]
    snameValue = itemValues[1]
    ssexValue = itemValues[2]
    sageValue = itemValues[3]
    # 默认清空
    clearEntry()
    # 赋值
    sidEntry.insert(0, sidValue)
    snameEntry.insert(0, snameValue)
    ssexEntry.insert(0, ssexValue)
    sageEntry.insert(0, sageValue)

# 清空输入框的值
def clearEntry():
    sidEntry.delete(0, END)
    snameEntry.delete(0, END)
    ssexEntry.delete(0, END)
    sageEntry.delete(0, END)


# 实例化一个新窗口
tk=Tk()

# 设置窗口大小
tk.geometry("600x380")

# 设置窗口的标题
tk.title("学生管理系统\n@znz")

# 在窗口中添加标签
label=Label(tk,text="欢迎使用学生管理系统!",bg="#0078D7",fg="black",font=("宋体",18))

# 标签出现在窗口的位置
label.pack(side=TOP,fill="x")

#在窗口中添加数据展示
# 设置show属性为 headings 即可隐藏首列
treeView=ttk.Treeview(tk,show="headings",column=("sid","sname","ssex","sage"))

#数据列表设置属性
treeView.column("sid",width=150,anchor="center")
treeView.column("sname",width=150,anchor="center")
treeView.column("ssex",width=150,anchor="center")
treeView.column("sage",width=150,anchor="center")


#设置表头
treeView.heading("sid",text="编号")
treeView.heading("sname",text="姓名")
treeView.heading("ssex",text="性别")
treeView.heading("sage",text="年龄")

# 初始化加载表格的数据
fresh()

#实例化底部大容器
bottomFrame=Frame(tk)

#实例化底部大容器中的左右两个容器
leftFrame=Frame(bottomFrame)
rightFrame=Frame(bottomFrame)

# 左边容器
sidLadel=Label(leftFrame,text="编号:")
sidEntry=Entry(leftFrame)

snameLadel=Label(leftFrame,text="姓名:")
snameEntry=Entry(leftFrame)

ssexLadel=Label(leftFrame,text="性别:")
ssexEntry=Entry(leftFrame)

sageLadel=Label(leftFrame,text="年龄:")
sageEntry=Entry(leftFrame)

sidLadel.grid(row=0,column=0)
sidEntry.grid(row=0,column=1)

snameLadel.grid(row=0,column=2)
snameEntry.grid(row=0,column=3)

ssexLadel.grid(row=1,column=0)
ssexEntry.grid(row=1,column=1)

sageLadel.grid(row=1,column=2)
sageEntry.grid(row=1,column=3)

# 右边容器
insertBtn=Button(rightFrame,text="添加",command=insert)
deleteBtn=Button(rightFrame,text="删除",command=delete)
updateBtn=Button(rightFrame,text="修改",command=update)
selectBtn=Button(rightFrame,text="查询",command=select)
insertBtn.grid(row=0,column=0)
deleteBtn.grid(row=0,column=1)
updateBtn.grid(row=1,column=0)
selectBtn.grid(row=1,column=1)

# 底部的【一键清空】按钮
clearButton=Button(text="一键清空",command=clearEntry)

#给TreeView添加点击事件
treeView.bind("<<TreeviewSelect>>",treeViewSelect)

# 显示表的信息
treeView.pack()

# 显示左右容器
leftFrame.pack(side=LEFT)
rightFrame.pack(side=RIGHT)

# 显示底部大容器
bottomFrame.pack()

# 显示底部的【一键清空】按钮
clearButton.pack()

# 获取电脑屏幕的宽度和高度
winWidth=tk.winfo_screenwidth()
winHeight=tk.winfo_screenheight()

# 窗口的宽度
tkWidth = 600
tkHeight = 380

# 居中的px
x = (winWidth-tkWidth) / 2
y = (winHeight-tkHeight) / 2

tk.geometry("%dx%d+%d+%d" %(tkWidth,tkHeight,x,y))
# 进入消息循环
tk.mainloop()



# -*- encoding:utf-8 -*-
"""

@文件名:BaseDao.py
@文档说明:连接数据库和关闭数据库的方法
"""
import pymysql
import com.zs.entity.Student as student

s = student.Student()


# 1.查询所有学生信息
def getAll():
    connect = pymysql.connect(host="localhost", user="root", passwd="root", db="zs")
    cursor = connect.cursor()
    cursor.execute("select * from Student")
    data = cursor.fetchall()
    connect.close()
    return data


# 根据学生姓名查询学生信息
def getStudentBySname(s):
    connect = pymysql.connect(host="localhost", user="root", passwd="root", db="zs")
    cursor = connect.cursor()
    sql = "select *  from Student where sname='%s'" % (s.getSname())
    cursor.execute(sql)
    data = cursor.fetchall()
    connect.close()
    return data


# 根据sid查询单个学生信息
def getStudentBySid(s):
    connect = pymysql.connect(host="localhost", user="root", passwd="root", db="zs")
    cursor = connect.cursor()
    sql = "select *  from Student where sid=%d" % (s.getSid())
    cursor.execute(sql)
    data = cursor.fetchone()
    connect.close()
    return data


# 添加学生信息
def addStudent(s):
    connect = pymysql.connect(host="localhost", user="root", passwd="root", db="zs")
    cursor = connect.cursor()
    sql = "insert into Student values(null,'%s','%s','%d')" % (s.getSname(), s.getSsex(), s.getSage())
    cursor.execute(sql)
    connect.commit()
    connect.close()


# 删除学生信息
def delStudent(s):
    connect = pymysql.connect(host="localhost", user="root", passwd="root", db="zs")
    cursor = connect.cursor()
    sql = "delete from Student where sid=%d" % (s.getSid())
    cursor.execute(sql)
    connect.commit()
    connect.close()


# 修改学生信息
def updStudent(s):
    connect = pymysql.connect(host="localhost", user="root", passwd="root", db="zs")
    cursor = connect.cursor()
    sql = "update Student set sname='%s',ssex='%s',sage=%d where sid=%d" % (
    s.getSname(), s.getSsex(), s.getSage(), s.getSid())
    cursor.execute(sql)
    connect.commit()
    connect.close()

# 根据查询条件查询学生信息
def selectStu(s):
    connect = pymysql.connect(host="localhost", user="root", passwd="root", db="zs")
    cursor = connect.cursor()
    sql = "select * from Student where 1=1"
    if(s.getSid()!=""):
        sql=sql+" and sid=%d"%(s.getSid())
    if(s.getSname()!=""):
        sql=sql+" and sname like '%%%s%%'"%(s.getSname())
    if(s.getSsex()!=""):
        sql=sql+" and ssex='%s'"%(s.getSsex())
    if(s.getSage()!=""):
        sql=sql+" and sage=%d"%(s.getSage())
    cursor.execute(sql)
    data = cursor.fetchall()
    connect.close()
    return data


# 测试查询所有学生信息
# d=getAll()
# print(d)

# 测试查询单个学生信息
# stu = student.Student()
# stu.setSname("小明")
# sd = getStudentBySname(stu)
# print(sd)

# 测试添加学生信息
# s= student.Student()
# s.setSname("小明")
# s.setSsex("男")
# s.setSage(19)
# addStudent(s)

# 测试删除学生信息
# stu = student.Student()
# stu.setSid(9)
# delStudent(stu)

# 测试修改
# s= student.Student()
# s.setSid(15)
# s.setSname("小d")
# s.setSsex("男")
# s.setSage(19)
# updStudent(s)

# 测试根据查询条件查询学生信息
# stu = student.Student()
# stu.setSname("s")
# print(stu.getSname()!="")

五,项目总结

猜你喜欢

转载自blog.csdn.net/whirlwind526/article/details/131055406