600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > python员工管理系统课程设计报告_python--员工信息管理系统编译及思路

python员工管理系统课程设计报告_python--员工信息管理系统编译及思路

时间:2023-03-27 17:49:13

相关推荐

python员工管理系统课程设计报告_python--员工信息管理系统编译及思路

员工管理系统,顾名思义,应该具有增删查改功能。拿到需求后,应该按照一定的流程依次编写,最后达到程序的统一和兼容。

系统需求如下:

文件存储格式如下:

id,name,age,phone,job

1,Alex,22,13651054608,IT

2,Egon,23,13304320533,Tearcher

3,nezha,25,1333235322,IT

现在需要对这个员工信息文件进行增删改查。

基础必做:

a.可以进行查询,支持三种语法:

select 列名1,列名2,… where 列名条件

支持:大于小于等于,还要支持模糊查找。

示例:

select name,age where age>22 #> <

select * where job=IT # =

select * where phone like 133 #看起来像 ‘abc’in ‘1232abcahj’

#充分的利用函数

#文件处理 字符串处理

#str #where split

进阶选做:

b.可创建新员工记录,id要顺序增加

c.可删除指定员工记录,直接输入员工id即可

d.修改员工信息

语法:set 列名=“新的值” where 条件

#先用where查找对应人的信息,再使用set来修改列名对应的值为“新的值”

注意:要想操作员工信息表,必须先登录,登陆认证需要用装饰器完成

其他需求尽量用函数实现

-----------------------------------------------------------------------------------------------------------------------

这样我们拿到了需求,首先应该按照需求来设计流程,然后按照流程再编写程序。首先应该想到的就是查询功能的实现。

代码如下:

def cha():

f = open('员工信息',encoding='utf-8') #打开文件,编码格式utf-8,文件名员工信息,存储格式按需求

def chaxun(a):

xinxi,tiaojian=a.split('where') #将获取到的内容进行分割,分割标志是'where',分割原因就是由where分别可以分割出条件和信息

xinxi = xinxi.strip().strip('select') #将信息去空格去掉select 这样可以得到查询的信息了

if '*'in xinxi and 'job'in tiaojian: #如果得到的信息中含有*而且条件中含有job

j,d=tiaojian.strip().split('=') #那么条件按等号分割,将条件d分割出来

d = d.strip()

for line in f: #循环每一行内容

i = line.strip().split(',') #内容去空格,按照逗号分割

#print(line)

job = i[4] #job在第五位

if job==d: #拿出第五位数据对比,如果相等

print(line) #打印这行数据,就是查询的,因为前面的循环循环打印所有符合条件的数据

else:

continue

elif '*'in xinxi and 'phone'in tiaojian: #如果*在信息中,然后phone 在条件中

j, d = tiaojian.strip().split('like') #按照like将条件分割

d = d.strip()

for line in f:

i = line.strip().split(',')

# print(line)

phone = i[3] #phone在数据第四位

if d in phone: #如果分割出的条件在phone数据中

print(line) #打印这条数据

else:

continue

else:

for line in f: #如果不在两个条件中,进入第三个语法

i = line.strip().split(',')

age = i[2] #age数据在第三位

age = int(age) #将age数据变成int整型,才能继续接下来的判断

if eval(tiaojian): #用eval直接将条件信息转化成可以用的条件,就可以直接调用之前int的age

print(line) #打印查询到的年龄数据

else:

continue

chaxun_shuru=input('请输入查询语法') #input让用户键入条件

v = chaxun(chaxun_shuru)

return v

if n==1: #主界面中要用到的启动条件

cha()

---------------------------------------------------------------------------------------------------------------------------------

查询部分的代码写完了,就可以注释了,因为这样编写其他部分代码的时候会妨碍运行,接下来按照客户需求,编写创建新员工信息部分的代码

代码如下:

def chuang():

f = open('员工信息',encoding='utf-8',mode='r') #同上,首先要处理员工信息的文件首先要调用文件数据

def cha():

print('请输入要创建的员工记录格式如Alex,22,13651054608,IT'

'name,age,phone,job')

yuangong = input('输入:') #用户按照创建格式来输入创建的员工信息

i=1 #先设定一个变量值为1

li=[] #设定一个空列表

print(f)

for lin in f:

i+=1 #每次读取了一行文件中的数据,i就+1

li.append(i) #将加的1放进列表中

i =li[-1]+1 #最后得出了一个列表li,最后一位+1就是下一位的ID

i = str(i) #将i变成字符串才可以跟字符串一起添加到信息中

if '\n'not in lin: #如果这行数据中没有\n的话

y = ('\n'+i+','+yuangong) #就将i和用户输入的员工信息还有前置的\n一起加入到数据中 ps:做这行的目的不是多余的,因为添加的数据,前面有\n下次添加就会隔一行

else: 而且添加数据按行来读ID,删除了的话还空了一行这样有bug,没\n就在上一条末尾了

y=(i+','+yuangong) #如果有的话直接添加数据不用加\n

f.close()

f1 = open('员工信息', encoding='utf-8', mode='a')

f1.write(y)

f1.close()

cha()

if n==2:

chuang()

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

编写完了创建功能,接下来就要完成客户需要的删除功能。同样,要按照ID删的话,思路要清晰,要想尽办法获取到信息中的ID,然后再想办法怎么调用这个ID来处理数据

def shan():

import os

f=open('员工信息',encoding='utf-8',mode='r')

v = f.readlines() #v接收到的是文件中每行的信息

f.close()

y = input('请输入要删除的员工ID') #用户输入要删除的员工ID

for item in v: #for循环得到的文件数据

if item:

if item[0] ==y: #如果循环的数据中含有用户要删除的ID

o=v.index(item) #那么用o来接收,用index来查找这一行数据的索引

v[o]=v[o].lstrip('\n') #索引取出,按照v来取出这个值去掉左侧的\n否则删除的时候是不会删除\n的

del v[o] #删除这条数据

f1=open('员工信息2',encoding='utf-8',mode='w')

f1.writelines(v) #新建文件写入除了删掉的数据的所有数据

f1.close()

os.remove('员工信息') #移除旧的文件

os.rename('员工信息2','员工信息') #将新文件名改成旧文件,做成更新状态

f3=open('员工信息2',encoding='utf-8',mode='w') #再创建一个同名新文件,以备下次使用

f3.close()

if n==3:

shan()

-------------------------------------------------------------------------------------------------------------------------------------------------------

删除员工信息写完了,主要的工作就是寻找关键ID,然后写入新文件删除旧文件,以及创建一个下次使用的新文件。接下来编写最后一项功能,修改员工信息的功能。

代码如下:

def gai():

import os

j=input('请输入想要修改的信息,语法为set 列名 =新的值 where 条件') #让用户按键规则输入修改信息

lieming,tiaojian=j.strip().split('where') #按照where分割用户输入的信息

tiaojian=tiaojian.strip()

lieming,zhi=lieming.strip().split('=') #按照等号分割列名,取出列名和值,列名是要修改的内容属性,值是修改后的新值

zhi=zhi.strip()

zhi=str(zhi) #将值的数据类型改为字符串

lieming= lieming.strip().lstrip('set') #将列名去掉左侧的set

lieming=lieming.strip()

f=open('员工信息',encoding='utf-8',mode='r')

v=f.readlines()

for line in v:

x=v.index(line) #用x接受line的索引值

if tiaojian in line: #如果条件值在line数据中

if lieming in 'name': #如果用户输入的列名是name的话

line=line.replace(tiaojian,zhi) #将这一行数据中用replace方法将条件值替换成修改新值

v[x]=line #将这一行新的数据按照索引值替换v中的原数据

elif lieming in 'age':

line = line.replace(tiaojian, zhi)

v[x] = line

elif lieming in 'phone':

line = line.replace(tiaojian, zhi)

v[x] = line

elif lieming in 'job':

line = line.replace(tiaojian, zhi)

v[x] = line

f.close()

f2=open('员工信息2',encoding='utf-8',mode='w')

f2.writelines(v)

f2.close()

os.remove('员工信息')

os.rename('员工信息2','员工信息')

f3=open('员工信息2',encoding='utf-8',mode='w')

f3.close()

if n==4:

gai()

-----------------------------------------------------------------------------------------------------------------------------------------------

写完了所有功能的程序,分别写完后接下来就是整合,想要用户循环使用的话,那就要加上循环加上退出。

代码如下放在开头包含所有功能函数:

while True:

print('员工信息管理系统')

print('1.查找员工信息')

print('2.创建新员工记录')

print('3.删除指定员工记录')

print('4.修改员工信息')

print('5.退出')

n = input('请输入功能序号')

n=int(n)

让用户按照功能序号进行功能选择,还包含了退出功能

所有功能及循环都完成了,那么久要用装饰器来装饰一下,只用登录一次的登录系统

----------------------------------------------------------------------------------------------------------------------------------------------

flag = False

def login(func):

def inner(*args,**kwargs):

global flag

while True:

if not flag:

a = input('username:')

b = input('password')

with open('用户登录',encoding='utf-8') as f:

for line in f:

name,pwd=line.strip().split('|')

if name == a and pwd ==b:

print('登录成功')

flag = True

if flag:

res=func(*args,**kwargs)

return res

return inner

用法在前面的博客有说明

用语法糖将装饰器添加到所有函数中,这样,员工信息管理系统就完成了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。