python学生管理系统可视化_分享一个可视化单机学生信息管理系统

发布于:2023-07-04 ⋅ 阅读:(84) ⋅ 点赞:(0)

跟大家分享一个学生信息管理系统,数据库用的是mysql,数据库信息,需要自己添加,下面是数据库中建立的表和表中的列,可视化界面采用的tkinter。

importpymysql

fromtkinter import*

fromtkinter importttk

#连接数据库host为本地IP,user是创建数据库时添加的用户,db是要连接的数据库

connect_db = pymysql.connect(host='127.0.0.1', user='root', passwd='123', port=3306, db='laolin')

#执行connect_db这个操作

db_denglu = connect_db.cursor()

#创建登录界面

classLoginPage(object):

def __init__(self):

#创建一个窗口

self.window = Tk()

#定义窗口标题名称

self.window.title('登录界面')

#定义窗口大小

self.window.geometry('500x300+500+600')

#定义4个可以工作栏,用于存放我们下面的功能

frame1 = Frame(self.window)

frame2 = Frame(self.window)

frame3 = Frame(self.window)

frame4 = Frame(self.window)

#执行定义

frame1.pack()

frame2.pack()

frame3.pack()

frame4.pack()

label11 = Label(frame1, text='学生管理系统',font=('Arial',20),width=15,height=5)

label1 = Label(frame2,text='用户名')

self.name = StringVar()

entryName = Entry(frame2, textvariable=self.name)

label2 = Label(frame3, text='密码:')

self.passwd = StringVar()

entryPasswd = Entry(frame3, textvariable=self.passwd)

confirm = Button(frame4, text='确认', command=self.confirmButton)

zhuce = Button(frame4, text='注册', command=self.zhuceButton)

label11.grid(row=1,column=1)

label1.grid(row=2, column=1)

entryName.grid(row=2, column=2)

label2.grid(row=3, column=1)

entryPasswd.grid(row=3, column=2)

confirm.grid(row=4, column=1)

zhuce.grid(row=4, column=3)

self.window.mainloop()

defconfirmButton(self):

user_name = self.name.get()

user_passwd = self.passwd.get()

sql = "select name from denglu where name = '%s'" % user_name

username_detect = db_denglu.execute(sql)

ifusername_detect > 0:

sql = "select passwd from denglu where passwd = '%s' and name = '%s'" % (user_passwd, user_name)

userpasswd_detect = db_denglu.execute(sql)

ifuserpasswd_detect != 0:

# print("输入正确,请稍后")

self.window.destroy()

# MainMenu()

app = MainMenu()

app.mainloop()

defzhuceButton(self):

user_name = self.name.get()

user_passwd = self.passwd.get()

sql = "select name from denglu where name = '%s'" % user_name

username_detect = db_denglu.execute(sql)

ifusername_detect == 0:

# print('用户名已存在!')

# else:

sql = "insert into denglu (name,passwd) values('%s','%s')" % (user_name, user_passwd)

db_denglu.execute(sql)

connect_db.commit()

# if userpasswd_detect != 0:

# print("注册成功,请稍后")

# else:

# print('注册失败')

classMainMenu(Tk):

def __init__(self):

super().__init__()

# self.window = Tk()

self.title('学生信息管理系统')

self.canvas = Canvas(self, bg='orange', width=335, height=400)

self.canvas.pack()

# create a menu bar

menubar = Menu(self)

self.config(menu=menubar) # display the menu bar

# create a pull-down menu,and add it to menubar

sysgl = Menu(menubar, tearoff=0)

menubar.add_cascade(label='系统管理', menu=sysgl)

stugl = Menu(menubar, tearoff=0)

menubar.add_cascade(label='学生管理', menu=stugl)

stugl.add_command(label='信息添加', command=self.info_add)

stugl.add_command(label='信息查询',command=self.info_detect)

kechenggl = Menu(menubar, tearoff=0)

menubar.add_cascade(label='课程管理', menu=kechenggl)

chengjigl = Menu(menubar, tearoff=0)

menubar.add_cascade(label='成绩管理', menu=chengjigl)

chengjigl.add_command(label='成绩查询',command=self.course_detect)

chengjigl.add_command(label='成绩维护')

chengjigl.add_command(label='成绩添加',command=self.grade_add)

guanyu = Menu(menubar, tearoff=0)

menubar.add_cascade(label='关于', menu=guanyu)

tuichu = Menu(menubar, tearoff=0)

menubar.add_cascade(label='退出', menu=tuichu, command=self.quit)

tuichu.add_command(label='确认退出', command=self.quit)

# self.window.mainloop()

definfo_add(self):

# self.window.destroy()

inputDialog = Info_add()

self.wait_window(inputDialog) # 这一句很重要!!!

definfo_detect(self):

inputDialog = Info_detect()

self.wait_window(inputDialog)

defcourse_detect(self):

inputDialog = Course_detect()

self.wait_window(inputDialog)

defgrade_add(self):

inputDialog = Grade_add()

self.wait_window(inputDialog)

classInfo_add(Toplevel):

def __init__(self):

super().__init__()

print(123)

# self.window = Tk()

self.title('添加学生信息')

self.studentid = StringVar()

self.studentname = StringVar()

self.zhuanye = StringVar()

self.age = IntVar()

frame1 = Frame(self)

frame2 = Frame(self)

frame3 = Frame(self)

frame1.pack()

frame2.pack()

frame3.pack()

label1 = Label(frame1, text='学号:')

entryId = Entry(frame1, textvariable=self.studentid)

label2 = Label(frame1, text='姓名:')

entryName = Entry(frame1, textvariable=self.studentname)

label3 = Label(frame2, text='专业:')

entryZhuanye = Entry(frame2, textvariable=self.zhuanye)

label4 = Label(frame2, text='年龄:')

entryAge = Entry(frame2, textvariable=self.age)

add_confirm = Button(frame3, text='确认', command=self.add_confirmButton)

add_quxiao = Button(frame3, text='取消')

label1.grid(row=1, column=1)

entryId.grid(row=1, column=2)

label2.grid(row=1, column=3)

entryName.grid(row=1, column=4)

label3.grid(row=2, column=1)

entryZhuanye.grid(row=2, column=2)

label4.grid(row=2, column=3)

entryAge.grid(row=2, column=4)

add_confirm.grid(row=3, column=1)

add_quxiao.grid(row=3, column=2)

# self.window.mainloop()

defadd_confirmButton(self):

stu_id = self.studentid.get()

print(stu_id, "-------")

stu_na = self.studentname.get()

stu_zy = self.zhuanye.get()

stu_age = self.age.get()

sql = "insert into stu_info values('%s','%s','%s','%d')" % (stu_id, stu_na, stu_zy, stu_age)

db_denglu.execute(sql)

connect_db.commit()

classInfo_detect(Toplevel):

def __init__(self):

super().__init__()

#self.window = Tk()

self.title('查询学生信息')

self.stu_id = StringVar()

self.studentname = StringVar()

frame1 = Frame(self)

frame2 = Frame(self)

self.frame_center = Frame(self)

frame1.pack()

frame2.pack()

self.frame_center.pack()

label1 = Label(frame1, text='学号:')

entryId = Entry(frame1, textvariable=self.stu_id)

detect_confirm = Button(frame1, text='查询', command=self.detect_confirmButton)

back_confirm = Button(frame1, text='返回', command=self.get_data)

# 定义中心列表区域

self.tree = ttk.Treeview(self.frame_center, show="headings", height=18, columns=("a", "b", "c", "d", "e"))

self.vbar = ttk.Scrollbar(self.frame_center, orient=VERTICAL, command=self.tree.yview)

# 定义树形结构与滚动条

self.tree.configure(yscrollcommand=self.vbar.set)

# 表格的标题

self.tree.column("a", width=130, anchor="center")

self.tree.column("b", width=130, anchor="center")

self.tree.column("c", width=200, anchor="center")

self.tree.column("d", width=80, anchor="center")

self.tree.column("e", width=100, anchor="center")

self.tree.heading("a", text="学号")

self.tree.heading("b", text="姓名")

self.tree.heading("c", text="专业")

self.tree.heading("d", text="年龄")

self.tree.heading("e", text="备注")

# 调用方法获取表格内容插入

self.tree.grid(row=0, column=0, sticky=NSEW)

self.vbar.grid(row=0, column=1, sticky=NS)

label1.grid(row=1, column=1)

entryId.grid(row=1, column=2)

detect_confirm.grid(row=1, column=3)

back_confirm.grid(row=1, column=4)

self.get_data()

defget_data(self):

x = self.tree.get_children()

foritem inx:

self.tree.delete(item)

sql="select * from stu_info;"

db_denglu.execute(sql)

result=db_denglu.fetchall()

fori inrange(len(result)):

self.tree.insert("", "end", values=(result[i][0],result[i][1],result[i][2],result[i][3]))

defdetect_confirmButton(self):

stu_id = self.stu_id.get()

ss="stu_id = %s" % stu_id

x=self.tree.get_children()

foritem inx:

self.tree.delete(item)

ifss != "":

sql = "select * from stu_info where %s;" % ss

db_denglu.execute(sql)

result = db_denglu.fetchall()

self.tree.insert("","end",values=(result[0][0],result[0][1],result[0][2],result[0][3]))

connect_db.commit()

classCourse_detect(Toplevel):

def __init__(self):

super().__init__()

#self.window = Tk()

self.title('学生成绩查询')

self.studentid = StringVar()

self.course_name = StringVar()

frame1 = Frame(self)

frame2 = Frame(self)

self.frame_center = Frame(self)

frame1.pack()

frame2.pack()

self.frame_center.pack()

label1 = Label(frame1, text='学号:')

entryId = Entry(frame1, textvariable=self.studentid)

label2 = Label(frame1, text='课程编号:')

entryCourse = Entry(frame1, textvariable=self.course_name)

detect_confirm = Button(frame1, text='查询', command=self.detect_confirmButton)

# 定义中心列表区域

self.tree = ttk.Treeview(self.frame_center, show="headings", height=18, columns=("a", "b", "c", "d", "e"))

self.vbar = ttk.Scrollbar(self.frame_center, orient=VERTICAL, command=self.tree.yview)

# 定义树形结构与滚动条

self.tree.configure(yscrollcommand=self.vbar.set)

# 表格的标题

self.tree.column("a", width=130, anchor="center")

self.tree.column("b", width=130, anchor="center")

self.tree.column("c", width=200, anchor="center")

self.tree.column("d", width=80, anchor="center")

self.tree.column("e", width=100, anchor="center")

self.tree.heading("a", text="学号")

self.tree.heading("b", text="姓名")

self.tree.heading("c", text="课程")

self.tree.heading("d", text="成绩")

self.tree.heading("e", text="备注")

# 调用方法获取表格内容插入

self.tree.grid(row=0, column=0, sticky=NSEW)

self.vbar.grid(row=0, column=1, sticky=NS)

label1.grid(row=1, column=1)

entryId.grid(row=1, column=2)

label2.grid(row=1, column=3)

entryCourse.grid(row=1, column=4)

detect_confirm.grid(row=1, column=5)

defdetect_confirmButton(self):

studentid = self.studentid.get()

courseid = self.course_name.get()

courseid = int(courseid)

x=self.tree.get_children()

foritem inx:

self.tree.delete(item)

ifstudentid != "" andcourseid !="":

sql="select * from course_grade where studentid=%s and courseid=%d" %(studentid,courseid)

db_denglu.execute(sql)

result = db_denglu.fetchall()

self.tree.insert("","end",values=(result[0][0],result[0][4],result[0][1],result[0][2]))

connect_db.commit()

classGrade_add(Toplevel):

def __init__(self):

super().__init__()

# self.window = Tk()

self.title('添加学生成绩')

self.studentid = StringVar()

self.course = StringVar()

self.grade = IntVar()

self.courseid = IntVar()

self.stu_name = StringVar()

frame1 = Frame(self)

frame2 = Frame(self)

frame3 = Frame(self)

frame1.pack()

frame2.pack()

frame3.pack()

label1 = Label(frame1, text='学号:')

entryId = Entry(frame1, textvariable=self.studentid)

label2 = Label(frame1, text='姓名:')

entryName = Entry(frame1, textvariable=self.stu_name)

label3 = Label(frame2, text='课程:')

entryKecheng = Entry(frame2, textvariable=self.course)

label4 = Label(frame2, text='课程编号:')

entryCourseid = Entry(frame2, textvariable=self.courseid)

label5 = Label(frame2, text='成绩:')

entryGrade = Entry(frame2, textvariable=self.grade)

add_confirm = Button(frame3, text='确认', command=self.add_confirmButton)

add_quxiao = Button(frame3, text='取消')

label1.grid(row=1, column=1)

entryId.grid(row=1, column=2)

label2.grid(row=1, column=3)

entryName.grid(row=1, column=4)

label3.grid(row=2, column=1)

entryKecheng.grid(row=2, column=2)

label4.grid(row=2, column=3)

entryCourseid.grid(row=2, column=4)

label5.grid(row=2, column=5)

entryGrade.grid(row=2, column=6)

add_confirm.grid(row=3, column=1)

add_quxiao.grid(row=3, column=2)

# self.window.mainloop()

defadd_confirmButton(self):

stu_id = self.studentid.get()

stu_na = self.stu_name.get()

stu_kc = self.course.get()

stu_kcid = self.courseid.get()

stu_kcid = int(stu_kcid)

stu_grade = self.grade.get()

stu_grade = int(stu_grade)

sql = "insert into course_grade values('%s','%s','%d','%d','%s')" % (stu_id, stu_kc, stu_grade, stu_kcid,stu_na)

db_denglu.execute(sql)

connect_db.commit()

if__name__ == '__main__':

LoginPage()


网站公告

今日签到

点亮在社区的每一天
去签到

热门文章