人事管理系统介绍:
1.展示页面:
    ①首页:
    ==========欢迎来到简历管理系统v2.1.1==========
                1.管理员登录
                2.专员登录
                3.退出
    ②管理员操作页面    
    ==========欢迎来到简历管理系统v2.1.1==========
                1.查看专员信息
                2.添加专员
                3.退出
    ③专员操作页面
    ==========欢迎来到简历管理系统v2.1.1==========
                1.查看简历
                2.添加简历
                3.退出
2.功能介绍:
    ①。管理员可以查看数据库中所有专员信息:ID 名字
        可以根据名字查看属于该名字操作的简历的简历信息
    ②。管理员可以添加专员账户

    ③。专员可以新建简历
    ④。专员查看自己操作的简历

数据库介绍:
    用户表user_t:
        id_ 主键自增长
        user_reg 账号
        user_pwd 密码
        user_name 姓名
        user_parent 父节点,所属上级,关联用户id
        user_roleId 角色id,关联角色表

    角色表role_t:
        id_ 主键自增长
        role_name 角色名

    简历表resum_t:
        id_ 主键自增长
        resume_user_name 姓名
        resume_user_sex 性别
        resume_user_phone 电话
        resume_user_email 邮箱
        resume_user_skill 专业
        resume_user_graduationTime 毕业时间
        resume_user_graduationSchool 毕业学校
        resume_user_interviewTime 面试时间
        resume_user_remarks 备注
        resume_operation_userId 操作人关联user表的id
        resume_operationTime 操作时间

#coding = utf-8
import pymysql
import time
#展示页面
def printinfo(info1,info2):
print('''==========欢迎来到管理系统v2.1.1==========
1.%s
2.%s
3.退出
'''% (info1, info2))
a = input("请以数字形式输入您的操作:")
return a
#链接数据库
def connectsql():
conn = pymysql.connect(
host = '192.168.1.110',
port = 3306,
user = 'root',
passwd = 'root',
db = 'recruitdb',
charset ='utf8'
)
cor = conn.cursor()
#返回游标
return conn, cor
#登录操作
def login(a, acor, aconn):
a1 = int(a)
lcor = acor
lconn = aconn
req = input('请输入账号:')
passwd = input('请输入用户密码:')
id = 0
user_reg = ''
user_pwd = ''
user_name = ''
user_parent = 0
user_roleId = 0
#定义一个旗帜,判断是否登录成功
flag = False
#查询管理员(专员)数据 a1 = 1为管理员 2 为专员
sql = lcor.execute('select * from user_t where user_roleId = %d'% a1 )
info = lcor.fetchmany(sql)
for f,g,h,j,k,l in info:
if req == g and passwd == h :
flag = True
id = f
user_reg = g
user_pwd = h
user_name = j
user_parent = k
user_roleId = l
aconn.commit()
return [flag, id, user_reg, user_pwd, user_name, user_parent, user_roleId] class People(object):
def __init__(self,cor,aconn, id, name):
self.cor = cor
self.conn = aconn
self.id = id
self.name = name def add_resume(self):
self.r_name = input('姓名:')
self.r_sex = input('性别:')
self.r_phone = input('联系方式:')
self.r_email = input('邮箱:')
self.r_skill = input('技能方向:')
#毕业时间
self.time1 = input('毕业时间(yyyy-mm-dd):')
self.timeStruct1 = time.strptime(self.time1, "%Y-%m-%d")
self.timeStamp1 = int(time.mktime(self.timeStruct1))
self.r_graduationTime = time.strftime('%Y-%m-%d',time.localtime(self.timeStamp1)) self.r_graduationSchool = input('毕业院校:')
#面试时间
self.time2 = input('面试时间(yyyy-mm-dd hh:mm:ss):')
self.timeStruct2 = time.strptime(self.time2, "%Y-%m-%d %H:%M:%S")
self.timeStamp2 = int(time.mktime(self.timeStruct2))
self.r_interviewTime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(self.timeStamp2))
print('创建人:%s'% self.name)
print('操作人:%s'% self.name)
#操作时间,获取当前时间
self.r_operationTime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) self.cor.execute('insert into resume_t(resume_user_name,resume_user_sex,\
resume_user_phone,resume_user_email,resume_user_skill,\
resume_user_graduationTime,resume_user_graduationSchool,\
resume_user_interviewTime,resume_user_remarks,resume_operation_userId,resume_operationTime)\
values ("%s","%s","%s","%s","%s","%s","%s","%s","%s",%d,"%s")'\
%(self.r_name,self.r_sex,self.r_phone,self.r_email,self.r_skill,self.r_graduationTime,\
self.r_graduationSchool,self.r_interviewTime,self.name,self.id,self.r_operationTime))
self.conn.commit() #数据提交给数据库
self.conn.close()
print('插入成功!') def search_resume(self):
self.k = input("请选择1.电话,邮箱查询 2.模糊查询:")
if self.k == '1':
self.sel = input('请选择你需要进行查询的方式(1-电话号码,2-邮箱):')
if self.sel == '1':
self.sql = self.cor.execute('select resume_user_phone from resume_t')
self.all_phone = self.cor.fetchmany(self.sql)
self.l = []
for self.i in self.all_phone:
self.l.append(self.i[0])
self.phone = input('请输入电话号码:')
if self.phone in self.l:
self.sql_phone = self.cor.execute('select * from resume_t where resume_user_phone\
= "%s"'%self.phone)
self.info = self.cor.fetchmany(self.sql_phone)
for self.res in self.info:
print('姓名:%s'%self.res[1])
print('性别:%s'%self.res[2])
print('联系方式:%s'%self.res[3])
print('邮箱:%s'%self.res[4])
print('技能方向:%s'%self.res[5])
print('毕业时间:%s'%self.res[6])
print('毕业院校:%s'%(self.res[7]))
print('面试时间:%s'%(self.res[8]))
print('创建人:%s'%(self.res[9]))
print('操作员:%s'%(self.name))
print('操作时间:%s'%(self.res[11]))
else:
print('没有该电话号码的简历')
elif self.sel == '2':
self.sql = self.cor.execute('select resume_user_phone from resume_t')
self.all_email = self.cor.fetchmany(self.sql)
self.l = []
for self.i in self.all_email:
self.l.append(self.i[0])
self.email = input('请输入邮箱:')
if self.email in self.l:
self.sql_email = self.cor.execute('select * from resume_t where \
resume_user_email = "%s"'%self.email)
self.info = self.cor.fetchmany(self.sql_email)
for self.res in self.info:
print('姓名:%s'%self.res[1])
print('性别:%s'%self.res[2])
print('联系方式:%s'%self.res[3])
print('邮箱:%s'%self.res[4])
print('技能方向:%s'%self.res[5])
print('毕业时间:%s'%self.res[6])
print('毕业院校:%s'%(self.res[7]))
print('面试时间:%s'%(self.res[8]))
print('创建人:%s'%(self.res[9]))
print('操作员:%s'%(self.name))
print('操作时间:%s'%(self.res[11]))
else:
print('没有该邮箱的简历') if self.k == '2':
choose = input('选择要进行模糊查询的字段(1-姓名,2-技能方向,3-毕业院校):')
if choose == '1':
self.key = input('输入姓名关键字:')
self.arg = '%'+self.key+'%'
self.sql = self.cor.execute('select * from resume_t where resume_user_name like "%s"'%self.arg)
self.info = self.cor.fetchmany(self.sql)
if self.info is not None:
for self.res in self.info:
print('姓名:%s'%self.res[1])
print('性别:%s'%self.res[2])
print('联系方式:%s'%self.res[3])
print('邮箱:%s'%self.res[4])
print('技能方向:%s'%self.res[5])
print('毕业时间:%s'%self.res[6])
print('毕业院校:%s'%self.res[7])
print('面试时间:%s'%self.res[8])
print('创建人:%s'%self.res[9])
print('操作员:%s'%(self.name))
print('操作时间:%s'%self.res[11])
else:
print('没有该姓名的简历')
elif choose == '2':
self.key = input('输入技能方向关键字:')
self.arg = '%'+self.key+'%'
self.sql = self.cor.execute('select * from resume_t where resume_user_skill like "%s"'%self.arg)
self.info = self.cor.fetchmany(self.sql)
if self.info is not None:
for self.res in self.info:
print('姓名:%s'%self.res[1])
print('性别:%s'%self.res[2])
print('联系方式:%s'%self.res[3])
print('邮箱:%s'%self.res[4])
print('技能方向:%s'%self.res[5])
print('毕业时间:%s'%self.res[6])
print('毕业院校:%s'%self.res[7])
print('面试时间:%s'%self.res[8])
print('创建人:%s'%self.res[9])
print('操作员:%s'%(self.name))
print('操作时间:%s'%self.res[11])
else:
print('没有该姓名的简历')
elif choose == '3':
self.key = input('输入毕业院校关键字:')
self.arg = '%'+self.key+'%'
self.sql = self.cor.execute('select * from resume_t where resume_user_graduationSchool like "%s"'%self.arg)
self.info = self.cor.fetchmany(self.sql)
if self.info is not None:
for self.res in self.info:
print('姓名:%s'%self.res[1])
print('性别:%s'%self.res[2])
print('联系方式:%s'%self.res[3])
print('邮箱:%s'%self.res[4])
print('技能方向:%s'%self.res[5])
print('毕业时间:%s'%self.res[6])
print('毕业院校:%s'%self.res[7])
print('面试时间:%s'%self.res[8])
print('创建人:%s'%self.res[9])
print('操作员:%s'%(self.name))
print('操作时间:%s'%self.res[11])
else:
print('没有该毕业院校的简历') class Admin(object):
def __init__(self, cor, aconn, id, name ):
self.cor = cor
self.conn = aconn
self.id = id
self.name = name def adduser(self):
self.user_reg = input('请输入账号:')
self.user_reg = input('请输入密码:')
self.user_reg = input('请输入姓名:')
self.cor.execute('insert into user_t(id_, user_reg, user_pwd, user_name, user_parent, user_roleId) values(NULL, "%s", "%s", "%s",NULL ,2)'%(self.user_reg,self.user_reg,self.user_reg))
self.conn.commit() def search(self):
sql = self.cor.execute('select id_, user_name from user_t where user_roleId = 2')
info = self.cor.fetchmany(sql)
for i in info:
print('id:%d 名字:%s' % i)
self.a = input('请输入想要查看员工所操作简历的员工名字:')
self.sql = self.cor.execute('select * from resume_t where resume_user_remarks = "%s"'% self.a)
self.info = self.cor.fetchmany(sql)
for self.i in self.info:
print('ID: %d, 姓名:%s,性别:%s,联系方式:%s,邮箱:%s,技能方向:%s,毕业时间:%s,毕业院校:%s,面试时间:%s,创建人:%s,操作员:%d,操作时间:%s'% self.i) def action(a, cor, conn):
acor = cor
aconn = conn
if a == '1':
#登录
infoList = login(a, acor, conn)
if infoList[0]:
b = printinfo('查看专员信息','添加专员')
admin = Admin(acor,aconn, infoList[1],infoList[4])
if b == '1':
admin.search()
elif b == '2':
admin.adduser()
else:
print('已成功退到登录页面!') else:
print('登录失败!') if a == '2':
#登录
infoList = login(a, acor,aconn)
if infoList[0]:
#登录后的展示页面
b = printinfo('查看简历','新建简历')
user = People(acor,aconn, infoList[1],infoList[4])
if b == '1':
user.search_resume()
elif b == '2':
user.add_resume()
else:
print('已成功退到登录页面!') else:
print('登录失败!') while True:
#链接数据库
conn,cor = connectsql()
#页面展示
a = printinfo('管理员登录', '专员登录')
#用户操作
action(a, cor, conn)
if a == '3':
break
cor.close()
conn.close()

Python 练习 人事管理的更多相关文章

  1. 我的第一个python web开发框架(38)——管理员管理功能

    后台管理员的管理功能,它主要用来管理后台的登录账号,绑定权限,当然如果想将后台管理扩展成企业相关管理系统,比如用于公司人事管理,在这个基础上进行适当扩展就可以了. 我们先看看界面效果(也可以看着数据字 ...

  2. 我的第一个python web开发框架(35)——权限数据库结构设计

    接下来要做的是权限系统的数据库结构设计,在上一章我们了解了权限系统是通过什么来管理好权限的,我们选用其中比较常用的权限系统来实现当前项目管理要求. 下面是我们选择的权限系统关系模型: 从以上关系可以看 ...

  3. python面向对象学习笔记(一)

    粘贴一些自学过程中的笔记大纲,源文本在pycharm里面写的,有点乱整理一下,部分内容有待补充,书写不一定100%正确,全当数据备份了. 1.面向对象的特性 #你写代码时什么使用面向对象 #处理比较复 ...

  4. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  5. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  6. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  7. JavaScript之父Brendan Eich,Clojure 创建者Rich Hickey,Python创建者Van Rossum等编程大牛对程序员的职业建议

    软件开发是现时很火的职业.据美国劳动局发布的一项统计数据显示,从2014年至2024年,美国就业市场对开发人员的需求量将增长17%,而这个增长率比起所有职业的平均需求量高出了7%.很多人年轻人会选择编 ...

  8. 可爱的豆子——使用Beans思想让Python代码更易维护

    title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...

  9. 使用Python保存屏幕截图(不使用PIL)

    起因 在极客学院讲授<使用Python编写远程控制程序>的课程中,涉及到查看被控制电脑屏幕截图的功能. 如果使用PIL,这个需求只需要三行代码: from PIL import Image ...

随机推荐

  1. PyTorch模型读写、参数初始化、Finetune

    使用了一段时间PyTorch,感觉爱不释手(0-0),听说现在已经有C++接口.在应用过程中不可避免需要使用Finetune/参数初始化/模型加载等. 模型保存/加载 1.所有模型参数 训练过程中,有 ...

  2. 势流理论笔记:03 Hess-Smith积分方法

    书接上回势流理论笔记:02 直接法与间接法 Hess-Smith方法 采用面向对象编程的思路,\(Matlab\)程序脚本,实现以下功能: 输入面元(四边形面元顶点坐标) 输出系数矩阵\([H][M] ...

  3. Java程序的种类

    Java程序的种类 Application:Java应用程序,是可以由Java解释器直接运行的程序. Applet:即Java小应用程序,是可随网页下载到客户端由浏览器解释执行的Java程序. Ser ...

  4. 1-Java继承中多态情况特性下变量,方法,静态方法的访问

    在Java继承下,多态特性下类成员访问情况 /* 在继承中,变量时静态的绑定的,非静态方法是动态的绑定的,静态方法是静态绑定的 */ class Parent{ int number = 11; pu ...

  5. 利用水文分析方法提取山脊线和山谷线(ArcPy实现)

    一.背景 作为地形特征线的山脊线.山谷线对地形.地貌具有一定的控制作用.它们与山顶点.谷底点以及鞍部点等一起构成了地形起伏变化的骨架结构.同时由于山脊线具有分水性,山谷线具有合水性特征,使得它们在地形 ...

  6. MySQL8 根据某属性查询字段排名由自定义变量到rank()的变动

    在mysql8 之前的版本,因为没有rank()方法的存在,所以在对字段进行排名时,使用的是自定义自变量的方法,比如: select id,name,@rank=@rank+1 as ranks fr ...

  7. 题解 「SCOI2016」萌萌哒

    link Description 一个长度为 $ n $ 的大数,用 $ S_1S_2S_3 \ldots S_n $表示,其中 $ S_i $ 表示数的第 $ i $ 位,$ S_1 $ 是数的最高 ...

  8. 2021-06-27 & 2021-06-28 集训题解

    西克 题目传送门 Description Solution 跟 2021年省选A卷D2T1 一模一样,懒得讲了 不过这个题似乎有点卡空间,所以卡不过去 Code #include <bits/s ...

  9. 试题 算法训练 最大最小公倍数 java题解

    资源限制 时间限制:1.0s   内存限制:256.0MB 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少. 输入格式 输入一个正整数N. 输出格式 输出一个整数 ...

  10. Redis 深入

    1.缓存更新 一般来说缓存的更新有两种情况: 先删除缓存,再更新数据库. 先更新数据库,再删除缓存. 这两种情况在业界,大家对其都有自己的看法.具体怎么使用还得看各自的取舍.当然肯定会有人问为什么要删 ...