zoukankan      html  css  js  c++  java
  • 5_python之路之员工管理系统

    python之路之员工管理系统

     

    1.程序说明:Readme.cmd

    1.程序文件:info_management.py user_info
    
    2.程序文件说明:info_management.py-主程序    user_info-存放员工数据
    
    3.python版本:python-3.5.3
    
    4.程序使用:将info_management.py和user_info放到同一目录下,执行python info_management.py
    
    5.程序解析:
    
        【0.增加员工信息】此处以名字name作为主键 增加输入格式,以-隔开:名字-年龄-电话-职位    (直接对文件的操作)
        【1.删除员工信息】直接输入员工的id即可删除 (直接对文件的操作)
        【2.修改员工信息】输入员工名字,修改原内容,新内容 格式:员工名字 修改原内容 新内容        (直接对文件的操作)
        【3.查询员工信息】使用动态代码对字典格式实现多种操作查询    (字典,exec)
        【4.退出员工系统】
    
    6.程序执行结果:请亲自动手执行或者查看我的博客
    
    7.程序博客地址:http://www.cnblogs.com/chenjw-note/p/7866737.html

    2.程序代码:info_management.py

    #!/usr/bin/env python
    # _*_ coding: utf-8 _*_
    # author:chenjianwen
    # email:1071179133@qq.com
    import json,time,re,os
    
    user_info = {}
    print_out = 'print(user_info[name]["id"],user_info[name]["name"],user_info[name]["age"],user_info[name]["phone"],user_info[name]["dept"],user_info[name]["enroll_date"])'
    count = 0
    
    ##读取文件,把用户信息生成字典格式
    def read_file_to_info():
        with open('user_info','r') as f_r:
            for line in f_r:
                line = line.rstrip('
    ')    ##去除空行
                if line:
                    line = line.strip()
                    id = line.split(' ')[0]
                    name = line.split(' ')[1]
                    age = line.split(' ')[2]
                    phone = line.split(' ')[3]
                    dept = line.split(' ')[4]
                    enroll_date = line.split(' ')[5]
                    #global user_info
                    user_info[name] = {
                            'id':'%s'%id,
                            'name':'%s'%name,
                            'age':'%s'%age,
                            'phone':'%s'%phone,
                            'dept':'%s'%dept,
                            'enroll_date':'%s'%enroll_date
                            }
    
    ##写入文件函数
    def write_file(*args,**kwargs):
        with open('user_info', 'a+') as f_w:
            f_w.write(*args,**kwargs)
    
    ##查询函数1
    def select_info_number(key,parallel,number):
        cmd = 'if int(user_info[name]["%s"]) %s %s:%s;global count;count = count + 1'%(key,parallel,number,print_out)
        start_time = time.time()
        for name in user_info:
            exec(cmd)
        end_time = time.time()
        use_time = end_time - start_time
        print("%s row in set (%s sec)"%(count,use_time))
        return True
    
    ##查询函数2
    def select_info_message(message,parallel,key):
        cmd = 'if "%s" %s user_info[name]["%s"]:%s;global count;count = count + 1'%(message,parallel,key,print_out)
        start_time = time.time()
        for name in user_info:
            exec(cmd)
        end_time = time.time()
        use_time = end_time - start_time
        print("%s row in set (%s sec)" %(count,use_time))
        return True
    
    ##增加函数
    def add_person_info():
        #print(user_info)
        id = len(user_info) + 1
        print("此处以名字name作为主键")
        pinfo = input("输入员工:名字-年龄-电话-职位:")
        name, age, phone, dept = pinfo.split('-')[0],pinfo.split('-')[1],pinfo.split('-')[2],pinfo.split('-')[3]
        enroll_date = time.strftime("%Y-%m-%d")
        if name in user_info:
            print("该员工已存在..")
            exit()
        else:
            data = '
    %s %s %s %s %s %s'%(id,name,age,phone,dept,enroll_date)
            write_file(data)
        read_file_to_info()
        return True
    
    ##删除函数
    def del_person_info():
        id = input("请输入删除的员工id:")
        f_r = open('user_info', mode='r', encoding='utf-8')
        f_w = open('user_info1', mode='w+', encoding='utf-8')
        for line in f_r:
            line = line.strip()
            if line.split(' ')[0] == id:
                pass
            else:
                f_w.write(line + '
    ')
        f_r.close()
        f_w.close()
        os.remove('user_info')
        os.rename('user_info1', 'user_info')
        read_file_to_info()
        return True
    
    ##修改函数
    def replace_person_info():
        message = input("请输入:员工名字 修改原内容 新内容:")
        name = message.split(' ')[0]
        old_dept = message.split(' ')[1]
        new_dept = message.split(' ')[2]
    
        f_r = open('user_info',mode='r',encoding='utf-8')
        f_w = open('user_info1', mode='w+', encoding='utf-8')
        for line in f_r:
            line = line.strip()
            if name in line:
                line = line.replace(old_dept,new_dept)
            f_w.write(line + '
    ')
        f_r.close()
        f_w.close()
        os.remove('user_info')
        os.rename('user_info1', 'user_info')
        read_file_to_info()
        return True
    
    if __name__ == '__main__':
        while True:
            read_file_to_info()
            ops = ['增加员工信息','删除员工信息','修改员工信息','查询员工信息','退出员工系统']
            for key,i in enumerate(ops):
                print("【%s.%s】"%(key,i),end='   ')
            print()
            ops_key = int(input("请输入你需要的操作序号:"))
            if ops_key == 0:
                if add_person_info():
                    print("执行成功!")
                    continue
                else:
                    print('执行失败!')
                    continue
            elif ops_key == 1:
                if del_person_info():
                    print("执行成功!")
                    continue
                else:
                    print('执行失败!')
                    continue
            elif ops_key == 2:
                if replace_person_info():
                    print("执行成功!")
                    continue
                else:
                    print('执行失败!')
                    continue
            elif ops_key == 3:
                print("请输入你的查询语句:【格式:key action(>,<,==,in) 值,例如:age > 22 或 phone in 1365】:")
                print("目前可使用的key有:name,enroll_date,age,id,phone,dept")
                select_message = input("请输入你的查询语句:")
                key = select_message.split(' ')[0]
                parallel = select_message.split(' ')[1]
                message = select_message.split(' ')[2]
    
                if parallel == '==':
                    if select_info_message(message, parallel, key):
                count = 0
    print("执行成功!") continue else: print('执行失败!') continue elif not re.findall('[a-zA-Z]+',parallel): if select_info_number(key, parallel, message):
                count = 0
    print("执行成功!") continue else: print('执行失败!') continue else: if select_info_message(message, parallel, key):
                count = 0
    print("执行成功!") continue else: print('执行失败!') continue elif ops_key == 4: print("退出系统成功!") exit() else: print("你的输入有误,请重新输入...")

    3.程序附件-数据库:user_info

    1 admin 22 136510 IT 2017-04-01
    2 jiwn1 23 136510 op 2017-04-01
    3 jiwn2 23 188250 ops 2017-11-20
    4 jiwn3 23 188250 ops 2017-11-20
    5 jiwn4 23 188250 IIIIIIIIITTTTTTTTT 2017-11-20
    6 jiwn5 24 188250 OPS 2017-11-20
    7 jiwn6 25 188262 OPS 2017-11-20
    8 chenjianwen01 22 188262 IT 2017-11-20

    4.程序执行输出

  • 相关阅读:
    CodeForces-1100C NN and the Optical Illusion 简单数学
    HDU-3038 How Many Answers Are Wrong 并查集
    POJ-1321 棋盘问题 DFS
    POJ-1651 Multiplication Puzzle 区间DP
    HDU-2037 今年暑假不AC 贪心
    排序算法的总结
    UVa-679 Dropping Balls 二叉树
    Coursera机器学习——Recommender System测验
    页面置换算法及例题
    这篇最新MySQL面试题请查收
  • 原文地址:https://www.cnblogs.com/chenjw-note/p/7866737.html
Copyright © 2011-2022 走看看