精华内容
下载资源
问答
  • Python学生管理系统GUI编程项目
    2022-05-02 20:14:40

    目录

    1.系统功能及其界面化效果

    2.程序代码


    1.系统功能及其界面化效果

    1.1学生信息开发与设计   

    包括:Python的基本字符串相关操作、Python序列对象(列表、元组、dict等)、Python选择语句、循环语句、函数和其他相关设计。

    实现学生信息的增添以及学生身份判断功能

    1.2界面化效果处理

    2.程序代码(关注私信me取得另一半哦~)

    import tkinter
    import tkinter.messagebox
    import tkinter as tk
    import tkinter.ttk
    from tkinter import*
    
    #Enter what we need
    def action():
        pass
    #Instantiate TK class
    root=Tk()
    #250x100 defines width and height. Note that x is not *, + lower right
    root.geometry('430x500+500+200')
    #Do not widen or heighten
    root.resizable(False,False)
    #set the name of the title
    root.title('Student Information-ljl')
    #Text layout
    Label(root,text='Name:',font=('黑体',15)).grid()
    Label(root,text='Grade:',font=('黑体',15)).place(x=0,y=40)
    Label(root,text='Class:',font=('黑体',15)).place(x=200,y=40)
    Label(root,text='Sex:',font=('黑体',15)).place(x=0,y=80)
    
    #Add button click event handler( add and deleteSelection)
    def addInformation():
        name = entryName.get()
        grade = comboGrade.get()
        classSelected=comboClass.get()
        result='Name:'+name
        result=result+';Grade:'+grade
        result=result+';Class:'+classSelected
        result=result+';Sex:'+('Man'if v.get() else'Woman')
        result=result+';Monitor:'+('Yes'if monitor.get() else 'No')
        #Insert information at the top of the list box
        listboxStudents.insert(0,result)
        varName.set('')
    def deleteSelection():
        #Gets the current selection of the list box
        selection = listboxStudents.curselection()
        listboxStudents.delete(selection)

    更多相关内容
  • 设计一个GUI界面的系统,模拟图书管理,一个面向学生和学校管理员的系统,图书信息以txt文件存在本地。 管理员:查询图书 增加图书 删除图书 学生:借阅图书 归还图书 任何一个操作都会将所更新的图书...
  • Python编写的学生成绩管理系统具有可视化界面
  • python编写的学生信息管理系统GUI界面。实现了增删改查的基本功能和保存为TXT文件,详情请看我的博客 https://blog.csdn.net/qq_52889967/article/details/118967084
  • 主要介绍了Python实现GUI学生信息管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Python实现GUI学生信息管理系统.doc
  • python实现的学生信息管理系统设计源代码【GUI界面版】 python实现的学生信息管理系统GUI界面版Python学生信息管理系统设计源代码 设计一个GUI界面的学生信息管理系统,方便保存学生的部分信息。 有五类功能: 1、...
  • 设计一个GUI界面的学生信息管理系统,方便保存学生的部分信息。 有五类功能: 1、 增加学生信息:输入姓名、学号、年龄、手机号 2、 修改学生信息:输入新的姓名、学号、年龄、手机号 3、 删除学生信息:以学号为...
  • python写的学生信息管理系统GUI界面+mysql数据库,实现了增删改查等基本功能,详情请看我的博客
  • 设计“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能。 数据包括人名、工作单位、电话号码和E-mail地址可对记录中的姓名和电话号码进行修改、可增加或删除记录、可显示所有保存的记录、可按人名...
  • python实现的学生信息管理系统GUI界面版Python学生信息管理系统设计源代码 设计一个GUI界面的学生信息管理系统,方便保存学生的部分信息。 有五类功能: 1、增加学生信息:输入姓名、学号、年龄、手机号 2、修改...
  • 图书馆管理系统是一个基于 GUI 的桌面应用程序,它是用 python 制作的。 描述 图书馆管理系统是一个使用python的桌面应用程序。它有一个 sqlite3 数据库,可以将数据存储到本地数据库中,不需要任何额外的软件。它...
  • Python实现员工管理系统GUI

    千次阅读 2021-04-01 16:40:27
    Pyside2 +pymysql 完成员工管理系统GUI 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、前期准备二、使用步骤1.引入库2.读入数据总结 前言 当今世界应用计算机已经变得十分...

    Python实现员工管理系统GUI


    前言

    当今世界应用计算机已经变得十分普遍了,如同汽车一样已经普及到各家各户。在许多工作行业各自的领域上,行内竞争十分关键,谁掌握的知识多,信息量大,处理数据的速度快,谁就能在激烈的行内竞争中立于不败之地。越来越多的企业管理员意识到了信息管理的重要性,所以说信息化是当今世界发展的主流。因此,一个良好的员工管理系统对企业而言必不可少,可以方便地对整个企业的各个员工进行统计和管理,有效地减少了传统管理时间、精力的浪费。本课题是设计一个基于python+mysql的员工档案管理系统,可以有效对公司、工厂的员工进行管理。


    一、功能介绍


    功能描述
    1、登录功能:用户可以两种类型的账号,有管理员账号和员工账号,管理员的权限更高,可以实现对数据的增删改查等操作,而员工账号的权限受到一定约束,如有加班,部门管理功能不让其访问等。

    2、员工_员工信息管理::员工根据自己账号登录时只允许修改自己的姓名,性别,年龄,婚姻状况,学历,密码。

    3、员工打卡:员工进入界面后,一个签到按钮和一个签退按钮;管理员进入界面后,会看到各个员工的打卡信息,可以根据实际情况对打卡信息进行增删改。

    4、管理员_员工信息管理:管理员根据账号登录时可对员工任意信息进行增删查改,包括工资,部门号,职称等,在查方面使用多条件查询的方式。

    5、部门职称管理:管理员才可以进入,实现对部门和职称的增删改查,当企业新增一个部门时,管理员可以点击部门表中的增加创建一个新的部门,当企业不要某个部门时,管理员可以进行删除操作;当企业新增一个职称时,管理员可以点击职称表中的增加创建一个新的职称,当企业不要某个职称时,管理员可以进行删除操作。

    6、考勤信息管理:管理员进入界面后,对员工的日常打卡信息进行增删查改。

    7、加班信息管理:管理员进入后可根据员工加班类型、时间,添加其加班信息。

    8、统计查询:管理员会直接看到整个公司以及各个部门的详细情况。

    9、报表打印:对统计查询的结果进行导出打印输出展示。

    二、前期准备

    开发环境:python3.7 + mysql5.7
    开发软件:SublimeText3 + Prenium Navicat12

    三、创建数据库

    1.概念模型

    在这里插入图片描述

    2.关系模型

    employee(id,name,sex,age,marriged,education,employed_time,job_id,department_id)
    employee_login(id,employee_id,password)
    admin_login(id,password)
    attendance(id,on_time,off_time,type,signal,employee_id)
    department(id,name)
    job(id,name,fees)
    overtime(id,type,date,times,employee_id)
    salary(id,earlys,lates,date,employee_id)

    3.具体设计

    1)不使用外键,有利于对业务逻辑的实现。更多原因可以查看链接:一文搞懂MySQL索引
    2)添加一定的索引:例如employee_id,因为后面大部分的等值查询需要用到,提高查找的效率。

    四、界面ui

    使用QT designer进行快速的控件可视化开发,主要使用到的控件有:

    QLabel
    QPushButton
    QMessageBox
    QComboBox
    QTableWidget

    详细使用说明文档请看:白月黑羽教python

    五、接口功能

    1.引入库

    import PySide2
    import Pymysql
    import xlwt
    import json
    

    2.登录功能

    :这里用的代码重复度较高,可以考虑用一个登录类来写,区别一下身份就可以。

    class EmployeePage:
    	#员工登陆
    	def __init__(self,employee_name,employee_pass):
    		self.employee_name = employee_name
    		self.employee_pass = employee_pass
    		self.database = 'cdhlr'
    		self.databasepass = '666'
    	def login(self):
    		username = None
    		password = None
    		# 连接database
    		db = pymysql.connect(
    		    host="localhost",
    		    user="root",
    		    password=self.databsepass,
    		    database=self.database,
    		    charset="utf8")  
    		cursor = db.cursor()  # 使用cursor()方法获取操作游标
    		sql = "SELECT * FROM employee_login WHERE employee_id = '%s'" % (self.employee_name)  # SQL 查询语句
    		try:
    		# 执行SQL语句
    			cursor.execute(sql)
    			# 获取所有记录列表
    			results = cursor.fetchall()
    			for row in results:
    				username = row[1]
    				password = row[2]
    		except:
    			print("Error: unable to fecth data")
    			########('警告!', '用户名或密码不正确!')
    		db.close()  # 关闭数据库连接
     
    		if self.employee_pass == password:
    			return 1
    		else:
    			return 0
    class AdminPage:
    	#管理员登陆
    	def __init__(self,admin_username,admin_pass):
    		self.admin_username = admin_username
    		self.admin_pass = admin_pass
    		self.database = 'cdhlr'
    		self.databasepass = '666'
    	def login(self):
    		username = None
    		password = None
    		# 数据库操作 查询管理员表
    		# 连接database
    		db = pymysql.connect(
    		    host="localhost",
    		    user="root",
    		    password=self.databasepass,
    		    database=self.database,
    		    charset="utf8")  
    		cursor = db.cursor()  # 使用cursor()方法获取操作游标
    		sql = "SELECT * FROM admin_login WHERE id = '%s'" % (self.admin_username)  # SQL 查询语句
    		try:
    		# 执行SQL语句
    			cursor.execute(sql)
    			# 获取所有记录列表
    			results = cursor.fetchall()
    			for row in results:
    				username = row[0]
    				password = row[1]
    		except:
    			return "Error: unable to fecth data"
    			########('警告!', '用户名或密码不正确!')
    		db.close()  # 关闭数据库连接
     
    		if self.admin_pass == password:
    			return 1
    		else:
    			return 0
    

    UI处理:

    class Login():
    	def __init__(self):
    		super().__init__()
    		
    		self.ui = QUiLoader().load("login.ui")
    		# self.ui.setWindowIcon(QIcon("../ui/icon2.jpg"))
    		self.ui.button0.clicked.connect(self.handle0)
    		self.ui.username.returnPressed.connect(self.handle0)
    		self.ui.password.returnPressed.connect(self.handle0)
    		
    	def handle0(self):
    		username = self.ui.username.text().strip()
    		password = self.ui.password.text().strip()
    		role = self.ui.role.currentText()
    		if role == "管理员":
    			admin = AdminPage.AdminPage(username,password)
    			check = admin.login()
    			if check==0:
    				QMessageBox.critical(
    					self.ui,
    					'错误',
    					'用户名或密码错误!')
    			else :
    				global admin1
    				admin1=adm.Admin()
    				admin1.show()
    				self.ui.close()
    
    		else:
    			employee = EmployeePage.EmployeePage(username,password)
    			check = employee.login()
    			print(check)
    			if check==0:
    				QMessageBox.critical(
    					self.ui,
    					'错误',
    					'用户名或密码错误!')
    			if check==1:
    				global yuangong1
    				
    				gerenxinxi = Employee.Employee(int(username))
    				gerenxinxi1 = json.loads(gerenxinxi.query_self_all())
    				# print(gerenxinxi1[0]['id'])
    				yuangong1=yuangong.YuanGong(username,gerenxinxi1)
    				yuangong1.ui.id.setText(str(gerenxinxi1[0]['id']))
    				yuangong1.ui.label_3.setText(gerenxinxi1[0]['name'])
    				yuangong1.ui.bumen.setText(gerenxinxi1[0]['depature_id'])
    				yuangong1.ui.sex.setText(gerenxinxi1[0]['sex'])
    				yuangong1.ui.age.setText(str(gerenxinxi1[0]['age']))
    				yuangong1.ui.marriged.setText(gerenxinxi1[0]['marriged'])
    				yuangong1.ui.education.setText(gerenxinxi1[0]['education'])
    				yuangong1.ui.gongzi.setText(gerenxinxi1[0]['salary'])
    				yuangong1.ui.job.setText(gerenxinxi1[0]['job'])
    				yuangong1.ui.job_date.setText(gerenxinxi1[0]['employed_time'])
    				yuangong1.ui.show()
    				self.ui.close()	
    
    if __name__ == '__main__':
    	app = QApplication.instance()
    	if app is None: 
    		app = QApplication(sys.argv)
    	login1=Login()
    	login1.ui.show()
    	#yuan=yuangong.YuanGong()
    
    	app.exec_() 
    

    3.打卡功能

    :上班和下班基本同理,需要判断今天是否打过卡,区分一下上下午打卡,打卡进行考勤记录。

    class Employee(object):
    	def __init__(self,userId):
    		self.userId = userId
    		self.database_pass = "666"
    		self.database = 'cdhlr'
    		
    	def execut_cud_sql(self,sql,data):
    		# 连接database
    		conn = pymysql.connect(
    		    host="localhost",
    		    user="root",password=self.database_pass,
    		    database=self.database,
    		    charset="utf8")
    		# 得到一个可以执行SQL语句的光标对象
    		cur = conn.cursor()  # 执行完毕返回的结果集默认以元组显示
    		try:
    			#执行sql语句
    			cur.execute(sql,data)
    			#提交
    			conn.commit()
    		except Exception as e:
    			conn.rollback()#失败回滚
    		finally:
    			cur.close()#关闭游标
    			conn.close()#关闭连接
    			
    	def execut_queryall_sql(self,sql,data):
    		# 连接database
    		conn = pymysql.connect(
    		    host="localhost",
    		    user="root",password=self.database_pass,
    		    database="cdhlr",
    		    charset="utf8")
    		# 得到一个可以执行SQL语句的光标对象
    		cur = conn.cursor()  # 执行完毕返回的结果集默认以元组显示
    		try:
    			#执行sql语句
    			cur.execute(sql,data)
    			result = cur.fetchall()	
    		except :
    			return False
    		finally:
    			cur.close()#关闭游标
    			conn.close()#关闭连接
    		return result		
    			
    	def insert_ontime(self,ontime_type):
    		#上班打卡
    		#ontime_type(0:上午,1:下午)
    		#先查本天是否已经打过卡
    		sql1='select ontime from attendence where employee_id=%s and type=%s order by ontime desc'
    		res = self.execut_queryone_sql(sql1,[self.userId,ontime_type])
    		#如果没有打过卡,打卡成功
    		if res == None:
    			sql='insert into attendence(ontime,daka_signal,type,employee_id) values (now(),"0",%s,%s);'
    			data=[ontime_type,self.userId]
    			self.execut_cud_sql(sql,data)
    			sql3 = 'select id from salary where employee_id=%s and month(time)=month(curdate());'
    			res2 = self.execut_queryall_sql(sql3,self.userId)
    			#判断是否在salary表中该员工本月是否有记录,如果没有就添加一条记录
    			if res2 == ():
    				sql4 = 'insert into salary(employee_id,time,lates,earlys) values (%s,date(curdate()),0,0)'
    				self.execut_cud_sql(sql4,self.userId)
    			if int(time.strftime("%H", time.localtime()))>=9 and ontime_type==0:
    				#如果早上上班超过9点则迟到
    				sql2 = 'update salary set lates=lates+1 where employee_id=%s and month(time)=month(curdate()); '
    				self.execut_cud_sql(sql2,self.userId)
    			if int(time.strftime("%H", time.localtime()))>=14 and ontime_type==1:
    				#如果下午上班超过14点则迟到
    				sql2 = 'update salary set lates=lates+1 where employee_id=%s and month(time)=month(curdate()); '
    				self.execut_cud_sql(sql2,self.userId)
    			return True
    		#如果已经打过卡,返回False	
    		elif res[0].strftime("%Y-%m-%d") == datetime.datetime.now().strftime('%Y-%m-%d'):
    			return False	
    

    4.员工多条件查询功能

    在这里插入图片描述
    通过等值连接将员工,部门,职称进行联表查询,并且融合了mysql和python的语法,对多条件查询进行了or的赋值判断,在python中的formate()函数将对应查询的表单值进行赋予给了对应位置上,在mysql中查询时,对未查询的条件会执行or后面的条件,即” “=” “,空=空的情况使得不会发生报错,因此实现多条件的查询。

    5.导出报表功能

    	def daochu(self):
    		filePath = QFileDialog.getSaveFileName(
                self.ui,             # 父窗口对象
                "选择保存路径", # 标题
                "C:\\Users\\Administrator\\Desktop\\data.xls",        # 起始目录
                "xls (*.xls)" # 选择类型过滤项,过滤内容在括号中
            )
    		print(filePath[0])
    		excle_path =filePath[0]
    		# 创建一个Workbook模块
    		data = xlwt.Workbook(encoding='utf-8')
    		# 创建一个表格,cell_overwrite_ok=True 为不覆盖表,默认为False
    		sheet = data.add_sheet('员工信息',cell_overwrite_ok=False)
    		# 写入坐标为(0,0)内容为职位
    		sheet.write(0,0,'工号')
    		sheet.write(0,1,'姓名')
    		sheet.write(0,2,'部门')
    		sheet.write(0,3,'性别')
    		sheet.write(0,4,'职称')
    		sheet.write(0,5,'年龄')
    		sheet.write(0,6,'学历')
    		sheet.write(0,7,'工资')
    		sheet.write(0,8,'结婚情况')
    		sheet.write(0,9,'入职时间')
    		# 写入坐标为(1,0)内容为软件测试工程师
    		rowcount = self.ui.table.rowCount()
    		print(rowcount)
    		for i in range(1,rowcount+1):
    			for j in range(0,10):
    				sheet.write(i,j,self.ui.table.item(i-1,j).text())		
    		# 保存到excel中
    		data.save(excle_path)
    

    六、结果展示

    1.登录界面

    在这里插入图片描述

    2.员工界面

    在这里插入图片描述

    3.管理员界面

    在这里插入图片描述

    4.条件查询

    5.部门职业管理界面

    在这里插入图片描述

    6.员工考勤管理界面

    在这里插入图片描述

    7.工资报表

    在这里插入图片描述

    8.公司详情

    在这里插入图片描述


    总结

    提高了动手编程的能力、发现问题的能力、解决问题的能力,培养了独立思考的思维方式,受益良多。例如,使用多表连接进行查询时,内连接的等值条件要记得写,否则会变成笛卡尔积导致数据繁多;在做范围查询的时候,采用if语句判断是否有改变,如果不改变就id = id,而不是id = 具体的值;需要用时间查询时,若用time.gmtime(),得到的是格林威治0时区的时间,用datetime.now()才能得到本地时间;不要总是想着去修改数据库,而是在动手做接口前就想好数据库的建立,一旦修改数据库,对后端逻辑又会有很大的改变等等。

    展开全文
  • 入门级别的图书管理系统,有数据库文件,有简单界面,可以实现图书信息的增加、修改、删除和查看,很简单,有两个主要界面
  • 自己的Python课设,水平有限但是是原创。可以拿来学习或者应付作业。
  • https://blog.csdn.net/u012156341/article/details/89486070 本篇博客相关代码下载
  • 基于Python3 tkinterGUI界面实现读取存储本地Excel文件进行增删改查的学生信息管理系统的可执行exe文件,openpyxl实现对Excel文件的增删改查及存储至本地文件。界面展示效果下载后用Python开发工具运行即可展示,可...
  • Python综合应用——宿舍管理系统,供大家参考,具体内容如下/p> 通过对 python 的函数,变量的应用,编写简单的关系系统 实现功能: 1.新增学生 2.显示全部学生信息 3.搜索学生 可按照学生姓名,班级,学号,宿舍号...
  • Python+GUI学生信息管理系统.zip,学生信息管理系统(python+GUI).zip,基于Python开发的学生信息管理系统源码。 Python+GUI学生信息管理系统.zip,学生信息管理系统(python+GUI).zip,基于Python开发的学生信息管理...
  • 主要介绍了python学生信息管理系统的实现代码,代码简单,复制即可使用,需要的朋友可以参考下
  • python实现图书管理系统(带gui)

    千次阅读 2022-01-20 14:37:05
    利用python实现了简单的图书管理系统

    0. 简介

    这是这学期一门关于python的课程的大作业,我用了pyqt5来做界面,实现了一个简单的图书管理系统,其功能包括图书信息和读者信息的增删查找,源代码放在最后。

    1.实现思路与基本架构

    该项目的实现主要经过了以下几步:

    step1 界面设计

    首先设计各个模块的位置以及界面的安排。经过考虑,我设计了四个模块,分别是图书信息维护、读者信息维护、图书信息查询、读者信息查询。
    图书信息维护模块包含了图书信息的添加,有从文件中添加和自己手动添加两种方式。读者信息维护也同理。
    而图书信息查询模块则是输入要查询的图书信息,在图书馆中进行图书的查阅,输出图书的各种信息。读者信息查询也是一样的。

    step2 数据结构设计

    为了便于之后的操作,数据结构我设置的比较精细。大体来说,整个主程序(不包括界面部分)使用了三个类,分别是Library类、reader类和book类。具体的数据结构框架如下图。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

    step3 相关函数接口编写

    在定义完数据结构后,需要对Library类定义一些方法,便于后面与图形界面的交互操作。这里我写了一些操作接口,包含drop_reader(),search_book()等操作。

    step4 整合界面

    这一步需要将之前写的界面和主程序进行整合,并定义槽函数,将主程序的函数与界面连接起来,完成图形化交互。

    2. 程序运行逻辑

    程序的运行流程如下:

    step1

    利用pickle模块从数据中实例化Library类,并实例化My_window类。

    step2

    用户在主菜单中点击相应的模块跳转到对应的frame

    step3

    在每个功能区等待用户输入数据,输入数据完成点击button触发对应的事件函数,并进行相应的数据操作。

    step4

    点击“退出系统”按键后,利用pickle模块将图书馆实例保存到数据文件中,下一次打开程序时会自动读取。

    3. 操作说明

    3.1 图书信息维护界面

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

    该界面可以实现图书信息的批量读取以及单条信息的添加。
    如果要批量读取图书信息,只需将文件放入路径下的/data文件夹,并输入对应文件名,点击导入即可。
    文件格式如下:

    三体 978 重庆出版社 2008 刘慈欣
    昆虫记 546 商务印书馆 2012 法布尔
    童年 277 商务印书馆 2014 高尔基
    电磁学 3-43 中国科学技术大学出版社 2017 叶邦角
    量子力学学习指导 413 中国科学技术大学出版社 2019 张鹏飞
    固体物理学 4834 高等教育出版社 1988 黄昆
    

    如果需要添加单条读者信息,只需要在对应输入框内写好图书信息,点击添加图书即可。

    3.2 读者信息维护界面

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述
    操作方式同上。
    读者信息文件格式如下:

    张三 13728574382 是
    安义 15709122812 是
    黄文 938123882 否
    王子 289871912 是
    何云零 13827005831 否
    

    3.3 图书信息查询界面

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传在这里插入图片描述

    该页面可以实现图书信息的查询,图书的借阅、入库、出库、删除、修改
    在输入要查询的图书信息后,如果输入的信息正确,将会显示查找到的图书,并附带有一定的操作。

    在这里插入图片描述

    点击对应按钮可以对图书进行相应的操作。

    3.4 读者信息查询界面

    在这里插入图片描述

    该界面可以实现读者借阅记录的查询,读者信息的修改以及删除

    用法同上。

    源代码:https://gitee.com/ignorejjj/book/tree/master

    展开全文
  • 主要介绍了python实现员工管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • python实现GUI界面的购物商城,商城上顾客可以购买任意东西,平台上分为两个身份,一个身份是售货员,一个身份是顾客,售货员负责进货,顾客负责买东西。 功能: 售货员->增加商品到仓库里、从仓库里删除商品 顾客->...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,751
精华内容 14,700
关键字:

python管理系统gui