老男孩第九期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

进阶选做:
b.可创建新员工记录,id要顺序增加
c.可删除指定员工记录,直接输入员工id即可
d.修改员工信息
语法:set 列名=“新的值” where 条件
#先用where查找对应人的信息,再使用set来修改列名对应的值为“新的值”

注意:要想操作员工信息表,必须先登录,登陆认证需要用装饰器完成
其他需求尽量用函数实现

  • 我的代码

自学了7天的一点小成果,没有找到作业讲解,所以花了半天的时间磕磕绊绊从头写到尾,不清楚实际作业的完成度是什么样子的,大家看个热闹了.
另外进阶阶段还在弄,第一次写这么多代码,留个纪念哈哈!
另外祝自己加油,继续好好学习!

import re

def judge(s):

    if '>' in s:
        s1 = s.split('>')
        if s1[0] > s1[1]:
            return True
        else:
            return False

    if '<' in s:
        s1 = s.split('<')
        if s1[0] < s1[1]:
            return True
        else:
            return False

    if '=' in s:
        s1 = s.split('=')
        if s1[0] == s1[1]:
            return True
        else:
            return False


def select(info, condition):
    # print(info)
    # print(condition)
    with open('员工信息', encoding='utf-8') as f:
        for line in f:
            list = []
            line1 = line.split(',')
            if 'age' in condition:
                c1 = condition.replace('age',line1[2])
                if judge(c1):
                    if info == '*':
                        list = line1
                    if 'id' in info:
                        list.append(line1[0])
                    if 'name' in info:
                        list.append(line1[1])
                    if 'age' in info:
                        list.append(line1[2])
                    if 'phone' in info:
                        list.append(line1[3])
                    if 'job' in info:
                        list.append(line1[4].rstrip('\n'))
                    print(' '.join(list).rstrip())

            if 'job' in condition:
                c1 = condition.replace('job', line1[4].rstrip('\n'))
                if judge(c1):
                    if info == '*':
                        list = line1
                    if 'id' in info:
                        list.append(line1[0])
                    if 'name' in info:
                        list.append(line1[1])
                    if 'age' in info:
                        list.append(line1[2])
                    if 'phone' in info:
                        list.append(line1[3])
                    if 'job' in info:
                        list.append(line1[4].rstrip('\n'))
                    print(' '.join(list).rstrip())

            if 'phone' in condition:
                phone_number = re.sub('\D', '', condition)
                if phone_number in line1[3]:
                    if info == '*':
                        list = line1
                    if 'id' in info:
                        list.append(line1[0])
                    if 'name' in info:
                        list.append(line1[1])
                    if 'age' in info:
                        list.append(line1[2])
                    if 'phone' in info:
                        list.append(line1[3])
                    if 'job' in info:
                        list.append(line1[4].rstrip('\n'))
                    print(' '.join(list).rstrip())
    return


while 1:
    content = input('>>>')
    content = content.strip(' ')  #去掉前后多余空格
    if 'quit' in content:       #quit退出
        break
    elif content.startswith('select') == 0 or 'where' not in content:
        print('输入有误')       #开头必须是select,且文中要有where
        continue
    print('输入内容:%s'%content)

    '''
    下面要取出select和where之间内容
    '''
    info = content[6:content.find('where')].strip(' ')
    print('要执行的内容:{}'.format(info))

    '''
    下面要提取出where之后的信息
    '''
    condition = content[content.find('where')+5:].strip(' ')
    print('要执行的方法:%s'%condition)

    select(info, condition)

你可能感兴趣的:(python学习)