python基础-对员工信息文件,实现增删改查操作


需求:

     1.可进行模糊查询,语法至少支持下面3种:

         1.select name,age from staff_table where age > 22

         2.select  * from staff_table where dept = IT

         3.查到的信息,打印后,最后面还要显示查到的条数 

     2.可创建新员工纪录,以phone做唯一键,staff_id需自增

     3.可删除指定员工信息纪录,输入员工id,即可删除

     4.可修改员工信息,语法如下:

        1.UPDATE staff_table SET dept= 无 where dept = IT

注意:请输入正确的语句进行查询,否则会报错。

实现代码如下:

  1 #_*_coding:utf-8_*_
  2 import os
  3 def fetch(data):
  4     #查询语法一:select name,age from staff_table where age > 22
  5     #查询语法二:select * from staff_table where dept = IT
  6     data1 = data.split(" ")
  7     directory = ["staff_id", "name", "age", "phone", "dept", "enroll-date"]
  8     if data == ("select name,age from staff_table where age > %s" %(data1[7])):
  9                 with open("xinxi", encoding="utf-8") as f:
 10                     list = []
 11                     list1 = []
 12                     list2 = []
 13                     for line in f:
 14                         i = line.strip().split(",")
 15                         w = i[1]
 16                         e = i[2]
 17                         a = [w, e]
 18                         if e > data1[7]:
 19                             list2.append(a)
 20                     for i in list2:
 21                         print(i)
 22                     print("查询到 %s 条符合的信息" %len(list2))
 23     else:
 24          with open("xinxi", encoding="utf-8") as f:
 25              list = []
 26              for line in f:
 27                  i = line.strip().split(",")
 28                  q = i[0]
 29                  w = i[1]
 30                  e = i[2]
 31                  r = i[3]
 32                  t = i[4]
 33                  y = i[5]
 34                  if data == ("select * from staff_table where %s = %s" % (data1[5], i[(directory.index(data1[5]))])):
 35                          list.append(i)
 36                  else:
 37                      continue
 38              for j in list:
 39                   print('.'.join(j))
 40              print("查询到 %s 条符合的信息" %len(list))
 41              return 0
 42 def add(data):
 43     #添加语法: name,age,phone,dept,enroll-date  (例如:孙凯,22,11111111111,IT,2016-12-12)
 44     data1 = data.split(",")
 45     f=  open("xinxi",encoding="utf-8")
 46     all_list = []
 47     list = []
 48     phone_list = []
 49     for line in f:
 50             i = line.strip().split(",")
 51             q = i[3]
 52             phone_list.append(q)
 53 
 54     if data1[2] in phone_list:
 55                 print("手机号已存在")
 56                 f.close()
 57     else:
 58                 f1 = open("xinxi", "r+", encoding="utf-8")
 59                 for line in f1:
 60                         lines = line.strip().split(",")
 61                         # print(lines)
 62                         list.append(lines)
 63                         i = line.strip().split(",")
 64                 w = str(int(list[-1][0]) + 1)
 65                 data1.insert(0, w)
 66                 print(data1)
 67                 data1 = ','.join(data1)
 68                 f1.write("\n")
 69                 f1.write(data1)
 70                 f1.close()
 71                 print("添加成功!!!")
 72 def remove(data):
 73     #删除语法:delete from staff_table where staff_id = 12
 74    data1 = data.split(" ")
 75    if data == ("delete from staff_table where staff_id = %s" %data1[6]):
 76        with open("xinxi", encoding="utf-8") as f:
 77            list = []
 78            for line in f:
 79                i = line.strip().split(",")
 80                i1 = line.splitlines()
 81                q = i[0]
 82                if data1[6] == q:
 83                    i2 = ','.join(i1)
 84                    print(i2)
 85                    list.append(i)
 86        a = i2
 87        f = open("xinxi", encoding="utf-8")
 88        f1 = open("back", "a+", encoding="utf-8")
 89        for i in f:
 90            if a in i:
 91                i = i.replace(a, "").strip()
 92            f1.write(i)
 93            f1.flush()
 94        f.close()
 95        f1.close()
 96    os.remove("xinxi")
 97    os.rename("back","xinxi")
 98    print("删除成功!!!")
 99    return
100 def change(data):
101     #修改请输入(注意空格和没有引号):UPDATE staff_table SET dept = IT where dept = 运维
102     data1 = data.split(" ")
103     print(data1)
104     # a =','.join(data1[3])
105     # print(a)
106     directory = ["staff_id", "name", "age", "phone", "dept", "enroll-date"]
107     var = int(directory.index(data1[3]))
108     with open("xinxi", encoding="utf-8") as f,\
109           open("back","w",encoding="utf-8")as f1:
110         for line in f:
111             lines = line.strip()
112             print(lines)
113             if  data1[5] in lines:
114                 lines = lines.replace(data1[5],data1[9])
115             f1.write(lines)
116             f1.write("\n")
117             f1.flush()
118     os.remove("xinxi")
119     os.rename("back","xinxi")
120     print("修改成功!!!")
121 
122 if __name__ == "__main__":
123     msg = """
124     1:查询
125     2:添加
126     3:删除
127     4:修改
128     5:退出
129     """
130     msg_dict = {
131         "1": fetch,
132         "2": add,
133         "3": remove,
134         "4": change,
135         "5": exit,
136     }
137     while True:
138         print(msg)
139         choice = input("输入序号>>:")
140         if len(choice) == 0 or choice not in msg_dict: continue
141         if choice =='5':break
142         data = input("请输入数据>>:").strip()
143         msg_dict[choice](data)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM