python+mysql实现个人论文管理系统

该博客介绍了如何利用Python的pymysql库连接MySQL数据库,结合wxpython创建可视化界面,构建一个简单的论文管理系统。博主详细展示了数据库建表过程,包括用户表和论文表的结构,并通过流程图解释了系统的主要功能,如登录、管理员和普通用户的权限操作。最后,博主承认系统仍有改进空间,建议使用H5进行更优的可视化设计。
摘要由CSDN通过智能技术生成

1.mysql数据库建表

在mysql数据库里面建立两个表,分别是用户表和论文表。建表的方式有很多,可以直接用sql语句进行建表,也可以在Navicat里面直接建,在Navicat里面可以清楚的看到我们建表的类型和表中的数据。
用户表的数据类型
上图是用户表的数据类型
论文表的数据类型
上图是论文表的数据类型
论文表的样例
上图是论文表的样例
在这里插入图片描述
上图是用户表的样例

2.流程实现展示

本次系统的实现主要用到python的pymysql库来连接mysql数据库,用wxpython库来实现可视化界面,通过自己定义的db.py的类库来实现对数据库的增删改查等基本的功能。主体的程序主要用到类的继承来实现整个流程。

1.登录界面展示
在这里插入图片描述
2.管理员权限进入系统展示
在这里插入图片描述
3.普通用户进入系统展示
在这里插入图片描述

3.代码展示

db.py

#导入pymysql模块
import pymysql

#创建数据库操作类
class Sql_operation(object):
	'''
	数据库操作
	'''
	#用构造函数实现数据库连接,并引入mydb参数,实现调用不同的数据库
	def __init__(self,mydb): 
		#实例变量
		self.mydb = mydb
		#打开数据库连接
		self.db = pymysql.connect(host = "localhost",user = "root",password = "123698745",db = self.mydb,charset = "utf8")
		#创建游标对象
		self.cursor = self.db.cursor()
		
	#定义查看数据表信息函数,并引入table_field、table_name参数,实现查看不同数据表的建表语句
	def FindAll(self,table_name):
		#实例变量
		self.table_name = table_name
		#定义SQL语句
		sql = "select * from %s"%(self.table_name)
		try:
			#执行数据库操作
			self.cursor.execute(sql)
			#处理结果
			data = self.cursor.fetchall()
			return data			
		except Exception as err:
			print("SQL执行错误,原因:",err)

	#定义添加表数据函数
	def InsertUser(self,user_name,user_password):
		id = 2
		self.user_name = user_name
		self.user_password = user_password
		
		sql = "insert into users(id,user_name,user_password)values('%s','%s','%s')"%(int(id),self.user_name,self.user_password)
		try:
			#执行数据库操作
			self.cursor.execute(sql)
			#事务提交
			self.db.commit()
		except Exception as err:
			#事务回滚
			self.db.rollback()
			print("SQL执行错误,原因:",err)
	def Insert(self,stu_name,stu_gender,stu_age,stu_cid,stu_classid,stu_phone,stu_id):
		#实例变量
		self.stu_name = stu_name
		self.stu_gender = stu_gender
		self.stu_age = stu_age
		self.stu_cid = stu_cid
		self.stu_classid = stu_classid
		self.stu_phone = stu_phone
		self.stu_id = stu_id
		#定义SQL语句
		sql = "insert into Paper(Papername,author,date,keyword,abstract,journal,id) values('%s','%s','%s','%s','%s','%s','%d')"%(self.stu_name,self.stu_gender,self.stu_age,self.stu_cid,self.stu_classid,self.stu_phone,int(self.stu_id))
		try:
			#执行数据库操作
			self.cursor.execute(sql)
			#事务提交
			self.db.commit()
		except Exception as err:
			#事务回滚
			self.db.rollback()
			print("SQL执行错误,原因:",err)

	#定义删除表数据函数
	def Del(self,stu_id):
		#实例变量
		self.stu_id = stu_id
		#定义SQL语句
		sql = "delete from Paper where id=%d"%(self.stu_id)
		try:
			#执行数据库操作
			self.cursor.execute(sql)
			#事务提交
			self.db.commit()
		except Exception as err:
			#事务回滚
			self.db.rollback()
			print("SQL执行错误,原因:",err)
	
	#定义修改表数据函数
	def Update(self,id,amend_name,amend_value):
		self.id = id
		self.amend_name = amend_name
		self.amend_value = amend_value
	
		sql = "update Paper set %s=%s where id=%d"%(self.amend_name,self.amend_value,int(self.id)) 
		
		try:
			#执行数据库操作
			self.cursor.execute(sql)
			#事务提交
			self.db.commit()
		except Exception as err:
			#事务回滚
			self.db.rollback()
			print("SQL执行错误,原因:",err)
	#用析构函数实现数据库关闭
	def __del__(self):
		#关闭数据库连接
		self.db.close()


main2.py

#导入wx模块
import wx
import wx.grid
from db import Sql_operation
import os
#import pymysql



class UserLogin(wx.Frame):
	
	#初始化登录界面
	def __init__(self,*args,**kw):
		# ensure the parent's __init__ is called
		super(UserLogin,self).__init__(*args, **kw)
		#设置窗口屏幕居中
		self.Center()
		#创建窗口
		self.pnl = wx.Panel(self)
		#调用登录界面函数
		self.LoginInterface()

	def LoginInterface(self):
		#创建垂直方向box布局管理器
		vbox = wx.BoxSizer(wx.VERTICAL)
		#################################################################################
		#创建logo静态文本,设置字体属性
		logo = wx.StaticText(self.pnl,label="论文管理系统")
		font = logo.GetFont()
		font.PointSize += 30
		font = font.Bold()
		logo.SetFont(font)
		#添加logo静态文本到vbox布局管理器
		vbox.Add(logo,proportion=0,flag=wx.FIXED_MINSIZE | wx.TOP | wx.CENTER,border=180)
		#################################################################################
		#创建静态框
		sb_username = wx.StaticBox(self.pnl,label="用户名")
		sb_password = wx.StaticBox(self.pnl,label="密  码")		
		#创建水平方向box布局管理器
		hsbox_username = wx.StaticBoxSizer(sb_username,wx.HORIZONTAL)
		hsbox_password = wx.StaticBoxSizer(sb_password,wx.HORIZONTAL)
		#创建用户名、密码输入框
		self.user_name = wx.TextCtrl(self.pnl,size=(210,25))
		self.user_password = wx.TextCtrl(self.pnl,size=(210,25))
		#添加用户名和密码输入框到hsbox布局管理器
		hsbox_username.Add(self.user_name,0,wx.EXPAND | wx.BOTTOM,5)
		hsbox_password.Add(self.user_password,0,wx.EXPAND | wx.BOTTOM,5)
		#将水平box添加到垂直box
		vbox.Add(hsbox_username,proportion=0,flag=wx.CENTER)
		vbox.Add(hsbox_password,proportion=0,flag=wx.CENTER)
		#################################################################################
		#创建水平方向box布局管理器
		hbox = wx.BoxSizer()
		#创建登录按钮、绑定事件处理
		login_button = wx.Button(self.pnl,label="登录",size=(80,25))
		regis_button = wx.Button(self.pnl,label="注册",size=(80,25))
		login_button.Bind(wx.EVT_BUTTON,self.LoginButton)
		regis_button.Bind(wx.EVT_BUTTON,self.RegisButton)
		#添加登录按钮到hbox布局管理器
		hbox.Add(login_button,0,flag=wx.EXPAND | wx.TOP,border=5)
		hbox.Add(regis_button,0,flag=wx.EXPAND | wx.TOP,border=5)
		
		#将水平box添加到垂直box
		vbox.Add(hbox,proportion=0,flag=wx.CENTER)
		#################################################################################
		#设置面板的布局管理器vbox		
		self.pnl.SetSizer(vbox)		

	def RegisBu
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值