python作业员工信息表程序(第四周)

作业需求:

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. 可创建新员工纪录,以phone做唯一键,staff_id需自增

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

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

  UPDATE staff_table SET dept="Market" where dept = "IT"

6. 注意:以上需求,要充分使用函数,请尽你的最大限度来减少重复代码

 

思路解析:

1. 将原始员工信息记录到文件

2. 读取文件并添加到列表,进行添加删除更新操作,并写入到文件中

 

程序核心代码:

peopledb

1,Jack Wang,30,43304320533,INS,2015-05-03

2,Alex Li,22,23651054608,IT,2013-04-01

员工信息表.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: Colin Yao
"""python 员工信息表操作"""
import sys
import os


def select1():
    '''
    查看文件函数
    :return: 
    '''
    with open('peopledb', 'r', encoding='utf-8') as f:
        line = f.readlines()
        for i in line:
            print(i)
def select():
    '''
    查询函数
    :return: 
    '''
    msg = '''
    请输入或复制查询命令例如:

        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_date like "2013"
    '''
    print(msg)
    user_choice_input = input(">>>:")
    user_choice_input1 = user_choice_input.split(' ')
    if user_choice_input == 'select name,age from staff_table where age > %s' % (user_choice_input1[7]):
        with open('peopledb', 'r+', encoding='utf-8') as f:
            list1 = []
            count = 0
            for line in f:
                i = line.strip().split(',')
                if i[2] > user_choice_input1[7]:
                    list1.append(i)
            for s in list1:
                count = count + 1
            for j in list1:
                print(j)
            print('满足条件的个数为>>:%s' % (count))
    elif user_choice_input == ('select * from staff_table where dept = %s' % (user_choice_input1[7])):
        with open('peopledb', 'r+', encoding='utf-8') as f:
            list2 = []
            count = 0
            for line in f:
                i1 = line.strip().split(',')
                if i1[4] == eval(user_choice_input1[7]):
                    list2.append(i1)
            for s1 in list2:
                count = count + 1
                # print(list1)
            for j1 in list2:
                print(j1)
            print('满足条件的个数为>>:%s' % (count))
    elif user_choice_input == ('select * from staff_table where enroll_date like %s' % (user_choice_input1[7])):
        with open('peopledb', 'r+', encoding='utf-8') as f:
            list3 = []
            list4 = []
            count = 0
            for line in f:
                i = line.strip().split(',')
                list3.append(i)
            for j in list3:
                m = j[5].split('-')
                if m[0] == eval(user_choice_input1[7]):
                    list4.append(j)
            for s in list4:
                count = count + 1
                if count < 1:
                    print("没有找到类似的条目:")
                    pass
                else:
                    pass
            for j in list4:
                print(j)
            print('满足条件的条数为>>:%s' % (count))
    return ()


def alter():
    '''
    添加函数
    :return: 
    '''
    msg = '''

    1)添加命令如下:Jack Wang,30,13304320533,HR,2015-05-03

    '''
    print(msg)
    user_choice_input = input("请输入命令>>>:")
    user_choice_input1 = user_choice_input.split(',')
    with open('peopledb', 'r+', encoding='utf-8') as f:
        list = []
        for line in f:
            s2 = line.strip().split(',')
            m = s2[3]
            list.append(m)
        if user_choice_input1[2] in list:
            print('这条记录已经存在')
            main()
        else:
            my_index = str(len(list) + 1)
            user_choice_input1.insert(0, my_index)
            user_choice_input1 = ','.join(user_choice_input1)
        f.write('\n')
        f.write(user_choice_input1)
        f.close()
        print("记录添加完成", '\n')
        select1()
    return ()


def delect():
    '''
    删除函数
    :return: 
    '''
    print("请输入删除命令例如: 输入用户ID 既可以从staff_table里删除")
    msg = '''
        1)按1 删除、直接删除ID即可
        2)按2或者q退出
        3)按任意返回上一层
    '''
    print(msg)
    user_choice_input = input("请输入命令>>>: ")
    if user_choice_input == '1':
        print("现有的用户为:")
        select1()
        print('\n')
        user_choice_input1 = input("请输入需要删除的用户ID:")
        user_choice_input2 = user_choice_input1[0]
        f = open('peopledb', 'r+', encoding='utf-8')
        f1 = open('new_peopledb', 'w+', encoding='utf-8')
        for line in f:
            i = line.strip().split(',')
            i1 = i[0]
            if user_choice_input2 != i1:
                i = ','.join(i)
                f1.write(i)
                f1.write('\n')
            else:
                continue
        f.close()
        f1.close()
        os.remove('peopledb')
        os.rename('new_peopledb', 'peopledb')
        print('\n')
        select1()
    elif user_choice_input == '2' or 'q':
        sys.exit()
    return ()


def update():
    '''
    更新函数
    :return: 
    '''
    msg = '''
    1)这里第一个等号按照没有空格的格式划分
    2)命令范例:UPDATE staff_table SET dept="INS" where dept = "HR"
    '''
    print(msg)
    user_choice_input = input("请输入命令>>>:")
    user_choice_input1 = user_choice_input.split(' ')
    dept = user_choice_input1[3].split('=')
    dept_new = dept[1]
    dept_old = user_choice_input1[7]
    if user_choice_input == ('UPDATE staff_table SET dept=%s where dept = %s' % (dept_new, dept_old)):
        dept_new1 = eval(dept_new)
        dept_old1 = eval(dept_old)
        f = open('peopledb', 'r+', encoding='utf-8')
        f1 = open('new_peopledb', 'w+', encoding='utf-8')
        for line in f:
            i = line.strip().split(',')
            dept_change = i[4]
            if dept_change == dept_old1:
                i[4] = eval(dept_new)
            i = ','.join(i)
            f1.write(i)
            f1.write('\n')
        f.close()
        f1.close()
        os.remove('peopledb')
        os.rename('new_peopledb', 'peopledb')
        print('\n')
        select1()
        pass
    return ()


def main():
    '''
    交互程序
    :return: 
    '''
    print("员工信息表操作作业练习")
    msg = '''
        1)查询
        2)添加
        3)删除
        4)更新
        5) 退出
      '''
    exit_flag = False
    while not exit_flag:
        print(msg)
        user_choice = input("请选择>>:")
        if user_choice == '1':
            select()
        elif user_choice == '2':
            alter()
        elif user_choice == '3':
            delect()
        elif user_choice == '4':
            update()
        elif user_choice == '5' or 'q':
            sys.exit()
        else:
            print("您的选择有误、请重新输入")


main()

 

转载于:https://www.cnblogs.com/sean-yao/p/7967810.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值