zoukankan      html  css  js  c++  java
  • s9.16作业,员工信息表

    转载https://blog.csdn.net/qq_35883464/article/details/83151464

    实现员工信息表
    文件存储格式如下:
    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来修改列名对应的值为“新的值”

    注意:要想操作员工信息表,必须先登录,登陆认证需要用装饰器完成
    其他需求尽量用函数实现
    ---------------------
    作者:陈宸-研究僧
    来源:CSDN
    原文:https://blog.csdn.net/qq_35883464/article/details/83151464
    版权声明:本文为博主原创文章,转载请附上博文链接!

    # 读取文件——
    def get_line(filename):
        with open(filename,'r',encoding='utf-8') as f:
            for line in f:
                line = line.strip()
                line_lst = line.split(',')
                yield line_lst
     
    # 员工信息表
     
    dic = {'name':1,'id':0,'age':2,'phone':3,'job':4}
     
    def condition_filter(condition):
        '''条件_筛选'''
        condition = condition.strip()
        if '>' in condition:
            col,val = condition.split('>')
            val = val.strip()
            col = col.strip()
            g = get_line('userinfo')
            for line_lst in g:
                if int(line_lst[dic[col]]) > int(val):
                    yield line_lst
     
        if '<' in condition:
            col,val = condition.split('<')
            val = val.strip()
            col = col.strip()
            g = get_line('userinfo')
            for line_lst in g:
                if int(line_lst[dic[col]]) < int(val):
                    yield line_lst
     
        if '=' in condition:
            col,val = condition.split('=')
            val = val.strip()
            col = col.strip()
            g = get_line('userinfo')
            for line_lst in g:
                if int(line_lst[dic[col]]) == int(val):
                    yield line_lst
     
        else:
            print('没有符合条件的员工')
     
     
    def views(view_lst,staff_g):         # view_list = ['name','age']
        '''展示符合条件的员工信息'''
        if '*' in view_lst:
            view_lst = dic.keys()
        for staff_info in staff_g:    # staff_info已经拿到了正确的员工信息,是列表[1,Alex,22,13651054608,IT]
            for i in view_lst:
                print(staff_info[dic[i]],end=' ')
            print(' ')
     
     
    #接受用户信息——
    ret = input('输入要搜索的员工信息:')
    # ret = 'select age,name where age > 22'
    view,condition = ret.split('where')
    view = view.replace('select','').strip()
    view_lst = view.split(',')
    # print(view_lst,condition)
    g = condition_filter(condition)
    views(view_lst,g)
    --------------------- 
    作者:陈宸-研究僧 
    来源:CSDN 
    原文:https://blog.csdn.net/qq_35883464/article/details/83151464 
    版权声明:本文为博主原创文章,转载请附上博文链接!
  • 相关阅读:
    Mongodb 与 MySQL对比
    MongoDB的真正性能-实战百万用户
    走进科学之揭开神秘的"零拷贝"!
    对于 Netty ByteBuf 的零拷贝(Zero Copy) 的理解
    <Netty>(入门篇)TIP黏包/拆包问题原因及换行的初步解决之道
    MSSQL复制功能实现与Oracle数据库同步
    SQLServer与Oracle的数据同步(触发器trigger)
    ORACLE和SQL SERVER的数据同步常用方法
    MS SQL SERVER: msdb.dbo.MSdatatype_mappings & msdb.dbo.sysdatatypemappings
    FORM 错误:此责任无可用函数。 更改责任或与您的系统管理员联系。
  • 原文地址:https://www.cnblogs.com/saolv/p/10027550.html
Copyright © 2011-2022 走看看