Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >员工信息表程序

员工信息表程序

作者头像
用户1679793
发布于 2018-04-28 01:51:11
发布于 2018-04-28 01:51:11
1K00
代码可运行
举报
运行总次数:0
代码可运行

1.需求

(1).工信息表程序,实现增删改查操作: (2).可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 select * from staff_table where dept = "IT" select * from staff_table where enroll_date like "2013" (3).查到的信息,打印后,最后面还要显示查到的条数 (4).可创建新员工纪录,以phone做唯一键,staff_id需自增 (5).可删除指定员工信息纪录,输入员工id,即可删除 (6).可修改员工信息,语法如下:   UPDATE staff_table SET dept = "Market" where dept = "IT" 注意:以上需求,要充分使用函数,请尽你的最大限度来减少重复代码

2..简易流程图

3.程序目录结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
├── backup                                    ---->        备份员工数据目录
│   ├── __init__.py
│   └── staff_table2017-08-03 18-58-17
├── bin                                       ----->         执行程序目录
│   ├── __init__.py
│   └── main.py                            ---->         员工信息主程序
├── db                                        ---->           数据保存目录
│   ├── __init__.py
│   └── staff_table                        ---->           员工信息表
├── __init__.py
├── README

4.bin目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding:utf-8
#Author:ZhiWenwei
import os
import time
import shutil
staff_table_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + r'/db/staff_table'  #获取员工信息文件绝对路径
print(staff_table_path)
backup_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + '/backup/'  #备份路径
'''定义一个能备份文件的装饰器,在修改原文件前先进行备份'''
def bakcup(func):
    def bk(*args,**kwargs):
        shutil.copy(staff_table_path,backup_dir + 'staff_table' + time.strftime("%Y-%m-%d %H-%M-%S"))
        func(*args,**kwargs)
    return bk
'''查询员工信息'''
def search():
    user_search = input("请输入查询语句:").strip()
    user_search_list = user_search.split(' ') #拆分为列表
    search_info = [] #搜索结果放此列表
    with open(staff_table_path,'r',encoding='utf-8') as f:
        for line in f:
            user_info = line.strip().split(',') #循环出员工信息并拆分为列表
            conditional = '%s %s %s' %(user_info[2],user_search_list[6],user_search_list[7]) #将条件字符串写入变量
            if user_search_list[6] == '=': #判断是等号就替换
                conditional =conditional.replace('=','==')
            if user_search_list[5] == 'age' and user_info[0].isdigit() and eval(conditional):#判断年龄和员工账户
                print(type(conditional))
                search_info.append([user_info[1],user_info[2]])
            elif user_search_list[5] == 'dept'and user_info[4] in user_search_list[7]: #判断员工职位条件
                search_info.append(user_info)
            elif user_search_list[5] == 'enroll_date' and user_info[5][0:4] in user_search_list[7]: #判断日期
                search_info.append(user_info)
        if not search_info:
            print("\033[36;1m没有找到你要搜索的员工!\033[0m\n")
        else:
            print("\033[35;1m找到以下员工信息!\033[0m\n")
            for i in search_info:
                print(' | '.join(i))
            print("\n\033[35;1m一共找到 %d 条信息\033[0m" % len(search_info))
    return search_info
'''添加员工信息'''
@bakcup
def add():
    user_add = input("请输入添加员工信息的语句:").strip()
    add_list = user_add.split(',') #拆分为列表
    phone = [] #电话列表
    with open(staff_table_path,'r+',encoding='utf-8') as f:
        user_id = 0 #员工id初始变量值
        for line in f:
            user_info = line.strip().split(',') #拆分为列表
            phone.append(user_info[3])
            if user_info[0].isdigit() and user_id < int(user_info[0]):#判断员工id
                user_id = int(user_info[0]) #这里取文件最后一个员工的id号,如果没有则user_id为0
        if add_list[2] not in phone: #判断电话是否唯一
            f.write('\n' + str(user_id + 1) + ',' + ','.join(add_list))
            print("\033[35;1m员工 %s 的信息已经添加成功!\033[0m\n" % add_list[0])
        else:
            print("\033[35;1m你要添加员工的phone已经存在!\033[0m\n")
'''删除员工信息'''
@bakcup
def delete():
    user_del = input("请输入你要删除的员工id号:").strip()
    flag = False
    with open(staff_table_path,'r',encoding='utf-8') as f,\
        open(staff_table_path + '_new','w',encoding='utf-8') as f2:
        for line in f:
            line = line.split(',')
            if line[0] == user_del:
                username = line[1] #定义删除的员工名,给后面输出提示
                line = ''
            elif line[0].isdigit() and int(user_del) < int(line[0]): #删除的员工后面的id减1
                line[0] = str(int(line[0]) - 1)
                flag = True
            f2.write(','.join(line)) #把列表里面的各个元素以逗号分开后连接成整个元素并写到文件中
    if flag == True:
        os.remove(staff_table_path)
        os.rename(staff_table_path + '_new',staff_table_path)
        print("\033[35;1m员工 %s 对应的id %s 已经删除\033[0m" %(username,user_del) )
    else:
        print("\033[36;1m你查找的员工信息不存在\033[0m")
'''修改员工信息'''
@bakcup
def alter():
    user_alter = input("请输入你要修改的员工信息语句:").strip()
    altre_list = user_alter.split(' ')
    flag = False
    user_list = []
    with open(staff_table_path, 'r', encoding='utf-8') as f, \
            open(staff_table_path + '_new', 'w', encoding='utf-8') as f2:
        for line in f:
            user_info = line.strip().split(',')
            if user_info[4] in altre_list[9]:
                user_info[4] = altre_list[5].strip('"')
                user_list.append(user_info)
                flag = True
            print(user_info[4])
            f2.write(','.join(user_info) + '\n') #把列表里面的各个元素以逗号分开后连接成整个元素并写到文件中
    if flag == True:
        os.remove(staff_table_path)
        os.rename(staff_table_path + '_new',staff_table_path)
        print("\033[35;1m员工信息已经修改\n %s\033[0m" %user_list)
    else:
        print("你输入修改员工信息语句无效")
while True:
    print("""\t \033[31;1m1.查询员工信息
    2.添加员工信息
    3.修改员工信息
    4.删除员工信息
    5.退出\033[0m""")
    main_dict = {'1':search,'2':add,'3':alter,'4':delete}
    user_choose = input("\033[39;1m请输入你要操作的选项号:\033[0m").strip()
    if user_choose in main_dict.keys():
        main_dict[user_choose]() #执行输入号码对应的函数
    elif user_choose == '5':
        exit("\033[35;1m已退出程序,欢迎下次使用\033[0m")
    else:
        print("\033[36;1m输入格式无效\033[0m")

5.db目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
staff_id,name,age,phone,dept,enroll-date
1,zhiww,29,18898564892,IT,2013-02-12
2,wangying,12,100861343251,IT,2008-02-12
3,zhoujielun,29,110,IT,2008-02-12
4,zhangsan,36,100861221,HR,2008-02-12
5,zhoujielun,29,114550,IT,2007-02-12
6,alex,25,13798708765,IT,2015-06-15
7,chen,29,1889856413,IT,2013-02-12
8,zjlun,25,13569856669,HR,2008-02-12

总结:每个功能用一个函数的实现!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-08-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python3 员工信息表
  动机在潜意识里,总是正面的。潜意识从来不会伤害自己,只会误会的以为某行为可以满足该动机,而又不知道有其他做法的可能。
py3study
2020/01/16
6030
python3 员工信息表
Python编程 模拟SQL语句 实现对员工信息的增删改查
一、问题描述 用 Python 模拟 sql 语句,实现对员工信息的增删改查。 封装函数,传入参数:文件路径和 sql 命令。 模拟 sql 语句实现对员工信息的现增删改查,并打印结果。 二、Python编程 导入需要的依赖库 # -*- coding: UTF-8 -*- """ @Author :叶庭云 @file :实训第二次作业 @function :封装函数 根据输入的文件路径和sql命令 模拟sql语句实现对员工信息的现增删改查 """ import re
叶庭云
2021/12/07
6260
Python编程 模拟SQL语句 实现对员工信息的增删改查
python流程控制语句案例练习
   最近玩python,为了更好的学习其中的流程控制语句,自己写了一个查询员工信息和更新信息的脚本,此脚本仅供练习使用。大拿可绕行!
py3study
2020/01/15
4190
Python操作文件模拟SQL语句功能
一、要求 当然此表你在文件存储时可以这样表示 1,li,22,18230393840,IT,2013-06-01 现需要对这个员工信息文件,实现增删改查操作 1. 可进行模糊查询,语法至少支持下面3种: 1. select name,age from staff_table where age > 22 2. select * from staff_table where dept = "IT" 3. select * from staff_table where enroll_
py3study
2020/01/10
1.7K0
[PYTHON]简单的文件增删改查处理
快一个月木有更新了,在这段时间内,博主除了忙工作外,就一直在研究python编程,据圈内朋友闲聊,python应该是未来一个运维攻城狮除了shell以外必备的LINUX脚本语言,所以就硬着头皮,按照老男孩的python视频讲座,把自己的研究成果贴出来,目前还没学完,期待老男孩的讲座更加给力些。
py3study
2020/01/09
5230
python练习题-员工信息表
周末大作业:实现员工信息表 文件存储格式如下: id,name,age,phone,job 1,Alex,22,13651054608,IT 2,Egon,23,13304320533,Tearcher 3,nezha,25,1333235322,IT
10JQKA
2019/10/23
7770
【19】Python工资管理系统
实验名称:工资管理系统 实验要求: Alex 100000 Rain 80000 Egon 50000 Yuan 30000 -----以上是info.txt文件----- 实现效果: 从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件。 效果演示:
py3study
2020/01/07
1.5K0
python 装饰器构造优酷视频登录程序
功能: 1.用户3次登录,全部失败后,返回菜单 2.用户必须登录才可以看电影 3.用户注册,注册普通用户和VIP用户 4.已经存在的用户,不允许重复注册 4.VIP用户可以看所有电影,普通用户不能看后缀有VIP的电影 5.可以随时返回主菜单 完整代码如下: #!/usr/bin/env python # coding: utf-8 __author__ = 'www.py3study.com' import time,os,sys ''' 本脚本运行会自动创建用户列表文件user_list.txt 看
py3study
2018/08/02
5910
python 文件操作练习
主要目的:悉文件列表的增、删、改操作…… # python 3.6 文件打开操作练习 #  date:2017-12-26 # _*_ coding:utf-8 _*_ import os,sys def find():     find_name = input("请输入要查询的员工姓名:").strip().upper()     flag=False     with open("info.txt",'r',encoding='utf-8') as f1:         for line in
py3study
2020/01/12
4410
Python—蜕变的必经之路(从脚本到应用程序)
这个周总算度过去了,这一个周的时间都在做ATM的一个作业,这个题目是写一个应用程序,而不是写一个简单的脚本代码。对于入门选手来讲,这个还是挺难的,之前一直就是一个文档搞定所有功能,而应用程序是要组织框架的,要有入口程序、有配置文件、核心文件文件、数据库、日志、使用说明等等。反正第一眼我是极度懵逼的,不过好在已经顺利渡劫,不然我也不会用3个英文词语来开头本篇文章了
Ed_Frey
2019/07/04
1.4K0
Python—蜕变的必经之路(从脚本到应用程序)
Python语句
>>> range(1, 11, 2) #起始写了表示从起始开始,后面的11不包含,2表示步长值
py3study
2020/01/10
1K0
【18】Python半成品购物车
''' 程序需求: 1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2、允许用户根据商品编号购买商品 3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4、可随时退出,退出时,打印已购买商品和余额 5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示 6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买(未实现) 7、允许查询之前的消费记录
py3study
2020/01/07
6340
【18】Python半成品购物车
Python学习day1作业总结
1. 用户输入帐号密码进行登陆   2. 用户信息保存在文件内   3. 用户密码输入错误三次后锁定用户  
py3study
2020/01/08
5120
Python-day3作业-haprox
from collections import defaultdict,OrderedDict
py3study
2020/01/08
4150
Python入门之实现简单的购物车功能
Talk is cheap,Let's do this! product_list = [ ['Iphone7 Plus', 6500], ['Iphone8 ', 8200], ['MacBook Pro', 12000], ['Python Book', 99], ['Coffee', 33], ['Bike', 666], ['pen', 2] ] shopping_cart = [] f = open('user.txt', 'r') loc
Jetpropelledsnake21
2018/05/03
1.2K0
Python_Nginx
利用 Python 实现 Nginx 启动/重启等一些操作 程序主文件 Nginx.py #!/usr/bin/python # _*_coding:utf-8_*_ # __author__ = 'yulong' # Good memory than rotten written import subprocess import sys import os import ConfigParser class Nginx(object):     conf = ConfigParser.ConfigPa
py3study
2020/01/13
8140
python---基础之模块,列表,元组,字典
1、 模块 写模块的时候尽量不要和系统自带的模块的名字相同 调用模块的时候,会先在当前目录下查找是否有这个模块,然后再会如python的环境变量中查找 a.模块1:sys 代码如下: 1 import
coders
2018/01/04
1.2K0
python---基础之模块,列表,元组,字典
ubuntu下查找脚本
写了一个查找包装。少敲点命令。 代码: import subprocess, os, sys import getopt import re def cmd(cmdstr): ps = subprocess.Popen(cmdstr, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True) while True: data = ps.stdout.readline() if data == b
超级大猪
2019/11/22
4720
python 多用户在线的FTP程序
    移动和重命名: mv filename/dirname filename/dirname
py3study
2020/01/09
3K0
python面向过程编程小程序 -ATM(里面用了终端打印)
06.09自我总结 1.文件摆放 ├── xxxx │ ├── run.py │ └── fil_mode.py │ └── data_time.py │ └── loading.py │ └── data_time.py │ └── register.py │ └── login.py │ └── top_up.py │ └── balance_enquiry.py │ └── shopping.py │ └── freeze.py 2.运行文件 1.run r
小小咸鱼YwY
2019/07/24
5420
python面向过程编程小程序 -ATM(里面用了终端打印)
相关推荐
python3 员工信息表
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验