python编写的学生信息管理系统(GUI界面+mysql数据库

实现了增删改查和另存(txt的形式)

有需要的可以自行下载

可以先观看教学视频再决定是否下载

注意:输入数据库的用户名和密码就可以直接登录!!!
不需要手动建立数据库和表,由程序自动建立!!!

下载地址:
https://download.csdn.net/download/qq_52889967/19480747

教学视频:
https://v.qq.com/x/page/q3257bz3n3w.html

java实现聊天室:
https://blog.csdn.net/qq_52889967/article/details/118553306

java学生成绩管理系统:
https://blog.csdn.net/qq_52889967/article/details/118581246

运行结果:

用户名和密码为你自己的数据库的用户名和密码!!!



数据库信息:

注意 :输入数据库的用户名和密码就可以直接运行!!!
不用再自己手动建立数据库和表!!!

本人使用的是MySQL5.7版本的数据库
数据库端口号为:3306
数据库连接名是:root
数据库用户名是:root
数据库名称是:mydatabase
建立的表是:student

在运行代码前请先确定编程软件(本人使用的是pycharm)是否安装PyMySQL

PyMySQL 安装方法

转载:
:https://www.runoob.com/python3/python3-mysql.html

部分源码展示:

from tkinter import *
from tkinter.messagebox import *from Database import Databaseclass StudentUI:def __init__(self):# 数据库的用户名和密码,从self.entry_1和self.entry_2中获得self.user = Noneself.password = None# # 建立列表用于清除函数的参数传送self.list_1 = []self.root = Tk()self.root.resizable(0, 0)  # 禁止调节大小self.screen_width = self.root.winfo_screenwidth()  # 获得屏幕宽度self.screen_height = self.root.winfo_screenheight()  # 获得屏幕高度# 容器,添加各种组件self.frame_1 = Frame(self.root)# # 以place的形式添加到root中self.frame_1.place(x=0, y=0)# 用户名和密码的文本框, show="*",防止密码泄露self.entry_1 = Entry(self.frame_1, bd=5)self.entry_2 = Entry(self.frame_1, bd=5, show="*")# 学生信息管理系统主界面def init_1(self):# 设置窗口标题self.root.title("学生信息管理系统")# 设置窗口大小self.root.geometry("800x600")# self.root.minsize(800, 600)# 添加菜单menuber = Menu(self.root)# tearoff=0是关闭第一行虚线menu_1 = Menu(menuber, tearoff=0)menuber.add_cascade(label="文件", menu=menu_1)menu_2 = Menu(menuber,  tearoff=0)menuber.add_cascade(label="功能", menu=menu_2)menu_3 = Menu(menuber,  tearoff=0)menuber.add_cascade(label="帮助", menu=menu_3)# 添加菜单项menu_1.add_cascade(label="另存为", command=lambda: Database.savestudent(Database, self.user, self.password))menu_2.add_cascade(label="添加学生", command=self.addstudent)menu_2.add_cascade(label="删除学生", command=self.deletestudent)menu_2.add_cascade(label="修改学生", command=self.updatestudent)menu_2.add_cascade(label="查询学生", command=self.selectstudent)menu_2.add_cascade(label="输出学生", command=self.showallstudent)menu_3.add_cascade(label="关于", command=self.about)# 将菜单加入rootself.root["menu"] = menuber# 进入事件循环self.root.mainloop()# 关于信息@staticmethoddef about():showinfo(title="关于", message="en~~~~\n好像没啥可以说的....\n告辞(00)")# 登录界面def login_1(self):self.root.title("登录界面")# 设置窗口大小self.root.geometry("200x140+%d+%d" % (self.screen_width / 4, self.screen_height / 7))# 在root_2中添加登录信息label_1 = Label(self.frame_1, text="用户名:")label_2 = Label(self.frame_1, text="密码:")# label_3为美化界面所用label_3 = Label(self.frame_1, text="")label_4 = Label(self.frame_1, text="")# 以网格布局的形式加入到root_2中label_1.grid(row=1, column=0)self.entry_1.grid(row=1, column=1)label_3.grid(row=2, column=0)label_2.grid(row=3, column=0)self.entry_2.grid(row=3, column=1)label_4.grid(row=4, column=0)# 添加用户名和密码的文本框self.list_1.append(self.entry_1)self.list_1.append(self.entry_2)# 添加按钮button_1 = Button(self.frame_1, text="登录", command=lambda: self.login_2())button_2 = Button(self.frame_1, text="清除", command=lambda: self.clearentry())button_1.grid(row=5, column=0)button_2.grid(row=5, column=1)self.root.mainloop()# 添加学生def addstudent(self):# 清空frame_1的组件,防止组件重叠for widget in self.frame_1.winfo_children():widget.destroy()# 清空list_1self.list_1.clear()# 在容器frame中添加学生的各种信息label_1 = Label(self.frame_1, text="学号:")label_2 = Label(self.frame_1, text="姓名:")label_3 = Label(self.frame_1, text="性别:")label_4 = Label(self.frame_1, text="出生日期:")label_5 = Label(self.frame_1, text="电话:")label_6 = Label(self.frame_1, text="宿舍号:")entry_1 = Entry(self.frame_1, bd=5)entry_2 = Entry(self.frame_1, bd=5)entry_3 = Entry(self.frame_1, bd=5)entry_4 = Entry(self.frame_1, bd=5)entry_5 = Entry(self.frame_1, bd=5)entry_6 = Entry(self.frame_1, bd=5)# 以网格布局的形式加入到frame中label_1.grid(row=0, column=0)entry_1.grid(row=0, column=1)label_2.grid(row=1, column=0)entry_2.grid(row=1, column=1)label_3.grid(row=2, column=0)entry_3.grid(row=2, column=1)label_4.grid(row=3, column=0)entry_4.grid(row=3, column=1)label_5.grid(row=4, column=0)entry_5.grid(row=4, column=1)label_6.grid(row=5, column=0)entry_6.grid(row=5, column=1)# 将文本框添加到列表中self.list_1.append(entry_1)self.list_1.append(entry_2)self.list_1.append(entry_3)self.list_1.append(entry_4)self.list_1.append(entry_5)self.list_1.append(entry_6)# 添加按钮# tkinter要求由按钮(或者其它的插件)触发的控制器函数不能含有参数# 若要给函数传递参数,需要在函数前添加lambda:(匿名函数)button_1 = Button(self.frame_1, text="提交",command=lambda: Database.addstudent(Database, self.user,self.password, entry_1.get(), entry_2.get(),entry_3.get(), entry_4.get(), entry_5.get(), entry_6.get()))button_2 = Button(self.frame_1, text="清除", command=lambda: self.clearentry())button_1.grid(row=6, column=0)button_2.grid(row=6, column=1)# 输出全部学生def showallstudent(self):# 清空frame_1的组件,防止组件重叠for widget in self.frame_1.winfo_children():widget.destroy()# 滚动条初始化(scrollBar为垂直滚动条,scrollBarx为水平滚动条)scrollBar = Scrollbar(self.frame_1)scrollBarx = Scrollbar(self.frame_1, orient=HORIZONTAL)# 靠右,充满Y轴scrollBar.pack(side=RIGHT, fill=Y)# 靠下,充满X轴scrollBarx.pack(side=BOTTOM, fill=X)lb = Listbox(self.frame_1, width=111, height=32,)lb.pack()# 而当用户操纵滚动条的时候,自动调用 Treeview 组件的 yview()与xview() 方法# 即滚动条与页面内容的位置同步scrollBar.config(command=lb.yview)scrollBarx.config(command=lb.xview)# 调用数据库方法Database.showstudent(Database, self.user, self.password, lb)
from tkinter import ENDimport pymysql
from tkinter.messagebox import *class Database:db = Nonecursor = None# 连接数据库def condatabase(self, user, password):# 打开数据库连接try:self.db = pymysql.connect(host="localhost", user=user, password=password, database="mydatabase")# 使用 cursor() 方法创建一个游标对象 cursorself.cursor = self.db.cursor()return Trueexcept:return False# 加入学生def addstudent(self, user, password, sno, sname, sex, birthday, phone, dorm):self.condatabase(self, user, password)# 检查学号是否重复,是的话函数结束if self.determinestudent(self, user, password, sno):returnsql = "insert into student values" \"(%s,%s,%s,%s,%s,%s)" % (repr(sno), repr(sname), repr(sex), repr(birthday), repr(phone), repr(dorm))try:# 使用 execute()  方法执行 SQL,在每次运行sql之前,ping一次,如果连接断开就重连。self.db.ping(reconnect=True)self.cursor.execute(sql)self.db.commit()# 消息提示showinfo(title="提示界面", message="添加学生信息成功!!!")except:showerror(title="错误界面", message="数据库异常!!!\n加入失败!!!")self.db.rollback()# 关闭数据库连接self.db.close()# 另存学生信息def savestudent(self, user, password):# 以追加的形式添加dataFile = open("D:\\text.txt", "w")self.condatabase(self, user, password)sql = "select * from student"try:# 在每次运行sql之前,ping一次,如果连接断开就重连。self.db.ping(reconnect=True)self.cursor.execute(sql)student = self.cursor.fetchall()for row in student:dataFile.write("学号:" + row[0] + "  姓名:" + row[1] + " 性别:" + row[2] + "  年龄" + row[3] + "  电话:" + row[4] + "  宿舍号:" + row[5]+"\n")showinfo(title="提示界面", message="保存学生信息成功!!!\n保存路径如下:\nD:\\\\text.txt")except:self.db.rollback()showerror(title="错误界面", message="保存失败!!!")self.db.close()dataFile.close()# 判断学号重复def determinestudent(self, user, password, sno):self.condatabase(self, user, password)sql = "select * from student where sno = %s" % repr(sno)try:# 在每次运行sql之前,ping一次,如果连接断开就重连。self.db.ping(reconnect=True)self.cursor.execute(sql)row = self.cursor.fetchone()if row is not None:showerror(title="错误界面", message="学号重复!!!")self.db.rollback()return Trueexcept:self.db.rollback()return Falseself.db.close()

python学生信息管理系统(GUI界面+mysql数据库)相关推荐

  1. java学生信息管理系统(GUI+mysql数据库)

    java学生信息管理系统+GUI界面布局+mysql数据库 代码已经更新!,重新设计了UI界面,代码之间的逻辑更加清晰 新的代码不需要手动建立数据库和表,全部由程序自动执行 用户名和密码为你数据库的用 ...

  2. java计算机毕业设计学生学籍信息管理系统源码+mysql数据库+lw文档+系统+调试部署

    java计算机毕业设计学生学籍信息管理系统源码+mysql数据库+lw文档+系统+调试部署 java计算机毕业设计学生学籍信息管理系统源码+mysql数据库+lw文档+系统+调试部署 本源码技术栈: ...

  3. java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计html5健身房信息管理系统源码+mysql数据库+系统+lw文档+部署 本源码技 ...

  4. java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文档 ...

  5. 计算机毕业设计Java印染公司信息管理系统(系统+程序+mysql数据库+Lw文档)

    计算机毕业设计Java印染公司信息管理系统(系统+程序+mysql数据库+Lw文档) 计算机毕业设计Java印染公司信息管理系统(系统+程序+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B ...

  6. java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文档+部署1

    java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文档+部署1 java计算机毕业设计Web医学院校大学生就业信息管理系统源码+mysql数据库+系统+lw文 ...

  7. java计算机毕业设计建筑公司工程信息管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计建筑公司工程信息管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计建筑公司工程信息管理系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: ...

  8. java计算机毕业设计WEBOA办公信息管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计WEBOA办公信息管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计WEBOA办公信息管理系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈 ...

  9. java计算机毕业设计高校学生体温管理系统源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计高校学生体温管理系统源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计高校学生体温管理系统源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构 ...

最新文章

  1. 谈谈C++继承中的重载,覆盖和隐藏
  2. 购买使用vps建站(3)
  3. UNITY2018.3 在editor下运行时new memoryprofiler显示 shader占用内存很大的问题在安卓上并没有看到...
  4. Android 取得 ListView中每一个Item项目的值
  5. 人工机器:Jetson Nano 安装Qt5
  6. socket php验证客户端验证,用Socket发送电子邮件(利用需要验证的SMTP服务器)_php基础...
  7. USACO-Section1.6 Prime Palindromes(素数和回文数)
  8. 批处理中的使用问题记录
  9. win 2008 R2 域服务器策略同步异常解决方案。
  10. linux下的screen工具配置(针对 string escape)
  11. 《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(10)--- 接受器 - 连接器...
  12. java servlet,action,struts,struts2输出流中文编码问题
  13. 下载mooc视频字幕
  14. JAVA图书馆管理系统各个项目链接
  15. 微博营销普遍遇到的误区
  16. 2021.6.27-参加青少年人工智能编程水平测试C++四级(通过)
  17. android圆角glide,使用Glide加载圆角矩形图片、圆形图片
  18. 通读《构建之法》之后的问题
  19. dump在计算机中的意义
  20. 钱多多的编程语言晋升路

热门文章

  1. Python爬虫--IP代理池的构建
  2. The real Jane Austen(真实的简.奥斯丁)
  3. 原本好好的程序,怎么电脑重启后就打不开了?
  4. [技术文档] 关于航顺芯片MCU的各种ID说明
  5. 基于python实现FPS(最远距离采样)
  6. linux 邮件内容换行,linux----回车换行
  7. 什么是TCP/IP?-四张图解释TCP/IP四层协议模型
  8. 好用PC端软件分享,来看看有没有你的心头好
  9. 类似问卷网的调查问卷页面
  10. Intel Realsense API 汇总-----Python