Python开发第xxx篇函数练习题-----员工信息表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python开发第xxx篇函数练习题-----员工信息表相关的知识,希望对你有一定的参考价值。

文件存储格式如下:

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来修改列名对应的值为“新的值”

 

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

     其他需求尽量用函数实现

 

 

技术分享
  1 sos=True
  2 def krapper(flot):
  3     def inner(*args,**kwargs):
  4         global sos
  5         while sos:
  6             x=input(说账号:)
  7             y=input(说密码:)
  8             with open(user,encoding=utf-8) as files:
  9                 for line in files:
 10                     val=line.strip().split(|)
 11                     if val[0]==x and int(val[1])==int(y):
 12                         print(登录成功)
 13                         sos=False
 14                         break
 15                 else:
 16                     print(错啦,再来)
 17         ret=flot(*args,**kwargs)
 18         return ret
 19     return inner
 20 # 此程序为初始的登录功能项,能链接到各个分功能
 21 @krapper
 22 def MySQL():
 23     print(请选择执行的《功能项》||查询||、||修改||、||创建||、||删除||)
 24     choice = input(>>>)
 25     if choice == 查询:
 26         select()
 27     elif choice == 修改:
 28         revise()
 29     elif choice == 创建:
 30         appd()
 31     elif choice == 删除:
 32         cut()
 33 # 此程序为具有查询功能的函数
 34 @krapper
 35 def select():
 36     print("""‘select name,age where age>22    例如:> < ‘
 37 ‘select * where job=IT    
 38 ‘select * where phone like 133  例如:‘abc’in ‘1232abcahj’‘
 39 ‘退出操作请直接输入||q||,返回《功能项》请直接输||回程||
 40 """)
 41     stop = True
 42     while stop:
 43         search = input(请按照上述格式所述方法输入内容:)
 44         if search==q:
 45             stop=False
 46         elif search==回程:
 47             MySQL()
 48         else:
 49             dic={id:0,name:1,age:2,phone:3,job:4}
 50             show_list=[]
 51             handle=search.strip().split(where)  #[‘...name,age‘,‘age>22‘]
 52             with open(员工信息表,r,encoding=utf-8) as files_1:
 53                 for line in files_1:
 54                     line_x=line.strip().split(,) #[1,name,age,phone,job]
 55                     if > in handle[1]:
 56                         handle_1=handle[1].strip().split(>)  #[‘age‘,‘22]
 57                         handle_2=handle[0].replace(select,‘‘).strip().split(,)  #[‘name‘,‘age‘]
 58                         if int(line_x[dic[handle_1[0]]]) > int(handle_1[1]) :
 59                             show_list.append((line_x[dic[handle_2[0]]],line_x[dic[handle_2[1]]]),)
 60                     elif < in handle[1]:
 61                         handle_1=handle[1].strip().split(<)  #[‘age‘,‘25]
 62                         handle_2=handle[0].replace(select,‘‘).strip().split(,)  #[‘name‘,‘age‘]
 63                         if int(line_x[dic[handle_1[0]]]) < int(handle_1[1]) :
 64                             show_list.append((line_x[dic[handle_2[0]]],line_x[dic[handle_2[1]]]),)
 65                     elif = in handle[1]:
 66                         handle_1=handle[1].strip().split(=)  #[‘job‘,‘IT‘]
 67                         if line_x[dic[handle_1[0]]] == handle_1[1] :
 68                             show_list.append(line_x)
 69                     elif likein handle[1]:
 70                         handle_1 = handle[1].strip().split(like)  # [‘phone‘,‘133‘]
 71                         if handle_1[1].strip() in line_x[dic[handle_1[0].strip()]]:
 72                             show_list.append(line_x)
 73                 else:
 74                     print(查询成功,龙龙好帅)
 75                     print(show_list)
 76     return
 77 # 此程序为具有修改功能的函数
 78 @krapper
 79 def revise():
 80     dic = {id: 0, name: 1, age: 2, phone: 3, job: 4}
 81     print(""">>>请选择示例中的一个元素来识别要修改员工的信息:
 82     >>>示例:id=xx,name=xx,age=xx,phone=xx,job=xx;xx为要输入内容
 83     >>>输入||q||,退出操作;输入||回程||返回《功能项》
 84     >>>正确输入格式为:name=xx,想替换的内容phone=yy,替换后的内容zz
 85     >>>既:name=xx,phone=yy,zz
 86     """)
 87     stop = True
 88     while stop:
 89         print(输入q,退出操作)
 90         x = input(输入想替换的内容:)
 91         if x == q:
 92             stop = False
 93         elif x==回程:
 94             MySQL()
 95         else:
 96             lis_cut = x.strip().split(,)  # [name=xx,phone=yy,zz]
 97             lis_cut_1 = lis_cut[0].split(=)  # [name,xx]
 98             lis_cut_2 = lis_cut[1].split(=)  # [phone,yy]
 99             with open(员工信息表, r, encoding=utf-8) as files_r:
100                 with open(员工信息表_bak, w, encoding=utf-8) as files_w:
101                     for line in files_r:
102                         line_lis = line.strip().split(,)
103                         if line_lis[1] == lis_cut_1[1]:
104                             line_r = line.replace(str(line_lis[dic[lis_cut_2[0]]]), str(lis_cut[2]))
105                             files_w.write(line_r)
106                         else:
107                             files_w.write(line)
108             import os
109             os.remove(员工信息表)
110             os.rename(员工信息表_bak, 员工信息表)
111             print(修改成功,龙龙巨帅)
112     return
113 # 此程序为具有添加功能的函数
114 @krapper
115 def appd():
116     stop = True
117     while stop:
118         print(""">>>按照此顺序和方法输入增加信息
119 >>>示例:name,age,phone,job
120 >>>示例:xxxx,yyy,zzzzz,ooo
121 """)
122         inner = input(>>>)
123         if inner == q :
124             stop = False
125         elif inner==回程:
126             MySQL()
127         else:
128             with open(员工信息表, r, encoding=utf-8) as files_r:
129                 with open(员工信息表, a, encoding=utf-8) as files_a:
130                     start=0
131                     for line in files_r:
132                         start+=1
133                     else:
134                         line_add=\n+ str(start+1)+str(,)+str(inner)
135                         files_a.write(line_add)
136                         print(添加成功,龙龙超级帅)
137     return
138 # 此程序为具有删除功能的函数,可实现序号更新
139 @krapper
140 def cut():
141     print(""">>>请选择示例中的两个元素来识别要删除的员工信息:
142     >>>示例:name=xx,age=xx,phone=xx,job=xx
143     >>>其中,xx为要输入内容
144     """)
145     dic = {name: 0, age: 1, phone: 2, job: 3}
146     stop = True
147     while stop:
148         cutting = input(>>>请输入您想删除的内容,输入q则退出操作)
149         if cutting == q:
150             stop = False
151         elif cutting==回程:
152             MySQL()
153         else:
154             lis_cut = cutting.strip().split(,)  # [name=xx,age=xx]
155             lis_cut_1 = lis_cut[0].split(=)  # [name,xx]
156             lis_cut_2 = lis_cut[1].split(=)  # [age,xx]
157             with open(员工信息表, r, encoding=utf-8) as files_r:
158                 with open(员工信息表_bak, w, encoding=utf-8) as files_w:
159                     start = 0
160                     for line in files_r:
161                         line_r = line.strip().split(,)
162                         line_r.remove(line_r[0])
163                         if line_r[dic[lis_cut_1[0]]] == lis_cut_1[1] and line_r[dic[lis_cut_2[0]]] == lis_cut_2[1]:
164                             continue
165                         else:
166                             start += 1
167                             line_all = str(start) + , + str(line_r[0]) + , + str(line_r[1]) + , + str(
168                                 line_r[2]) + , + str(line_r[3]) + \n
169                             files_w.write(line_all)
170             import os
171             os.remove(员工信息表)
172             os.rename(员工信息表_bak, 员工信息表)
173             print(删除成功,龙龙无敌帅)
174     return
175 # 此处的mysql()后期可指向固定位置,对文件做各种操作,具有简单数据库功能
176 MySQL()
View Code

 

以上是关于Python开发第xxx篇函数练习题-----员工信息表的主要内容,如果未能解决你的问题,请参考以下文章

Python开发第xxx篇----闭包函数

Python开发第XXX篇:Python 函数----

Python开发第XXX篇----函数 -名称空间与作用域

Python开发第xxx篇文件操作----复习

Python开发第XXX篇 基本文件操作----和永久存储

Python开发第xxx篇__斐波那契数列------最大公约数