python员工信息管理_python员工信息管理

这是一个使用Python编写的员工信息管理系统,具备搜索、添加、修改和删除员工信息的功能。系统通过用户输入验证权限,对数据文件进行读写操作,并实现了数据排序。用户可以按ID、用户名、职位或电话号码搜索员工,添加新员工记录,修改现有记录,或删除指定记录。
摘要由CSDN通过智能技术生成

#!/usr/bin/env python

from sys import exit

from os import system

from getpass import getpass

data_file = 'staff_list.txt'

data = open(data_file).readlines()

# define user and password

_user = 'root'

_passwd = 'zl'

# define _search, _add method

def _search(key):

result = []

for line in data:

newline = line.strip().split()

if key in newline:

result.append(line)

return result

def _add(values):

n = 0

for line in values:

data.append(line)

if line in data:

n += 1

while True:

username = raw_input('\033[32;1mPlease Enter your username:\033[0m')

if not username:

print '\033[31;1mNot allow empty for username!\033[0m'

continue

elif username == _user:

while True:

passwd = getpass('\033[32;1mEnter Password:\033[0m')

if not passwd:

print '\033[31;1mNot allow empty for password, try again!'

continue

elif passwd and passwd == _passwd:

print 'Hi, \033[35;1m%s\033[0m, Welcome to back!' % username

## start search,add,modify,delete

while True:

select = "Operation options:\n\t1. Search\n\t2. Add\n\t3. Modify\n\t4. Delete\n You can press 'q' to exit.\n>"

user_select = raw_input(select)

if user_select.lower() == 'q':

print '\033[32;1msystem exiting...\033[0m'

exit()

## 1. search

elif user_select == '1':

while True:

search_key = raw_input("\033[32;1mEnter something to search, press 'q' to quit: \

\033[0m\nYou can enter ID, UserName, Job or PhoneNumber.\n>").strip()

if search_key == 'q':

print '\033[32;1mexiting search mode...\033[0m'

break

# call _search function to get search result

search_result = _search(search_key)

if search_result:

print '\033[36;1mSearched item:\033[0m'

for ret in search_result:

print ret,

else:

print '\033[31;1mNot matched.\033[0m'

## 2. add items

elif user_select == '2':

add_prompt = "\033[32;1mInput format reference, press 'q' to exit: \

\033[0m \nID  UserName  Job  PhoneNumber\n>"

while True:

add_input = raw_input(add_prompt).strip()

if add_input == 'q':

print '\033[32;1mexiting add mode...\033[0m'

break

add_input_list = add_input.split()

if len(add_input_list) == 4:

input_id, input_user, input_job, input_tel = add_input_list

else:

print '\033[31;1mID, UserName, Job or PhoneNumber parameter is incorrect.\033[0m'

continue

# Determine whether there ID

for line in data:

newline = line.strip().split()

if input_id == newline[0]:

print "\033[31;1mThe ID '%s' already exists, please re-enter.\033[0m" % input_id

break

else:

if input_id and input_user and input_job and input_tel:

# add input_line to data

user_line = "\t".join(add_input_list)+"\n"

data.append(user_line)

if user_line in data:

print '\033[35;1mSuccessfully added an records.\033[0m'

# write data to file

open(data_file, 'w').writelines(data)

# sort data_file

cmd = 'sort -n staff_list.txt >tmp_staff.txt; cat tmp_staff.txt > staff_list.txt; rm -f tmp_staff.txt'

system(cmd)

## 3. modify items

elif user_select == '3':

modify_prompt = "\033[32;1mWhat you want to modify, press 'q' to exit:\033[0m \

\nUserName, Job=IT or UserName, Phone=123456789\n>"

while True:

modify_input = raw_input(modify_prompt).strip()

if modify_input == 'q':

print '\033[32;1mexiting modify mode...\033[0m'

break

name, modify_item = [ s.strip() for s in modify_input.split(',')]

#print 'name=%s, modify_item=%s' % (name, modify_item)

item_key, item_value = modify_item.split('=')

#print 'item_key=%s, item_value=%s' %(item_key, item_value)

fina_data = []

for dataline in data:

newline = dataline.split()

username = newline[1]

#print username, job, phone

if username == name:

if item_key == 'Job':

newline[2] = item_value

elif item_key == 'Phone':

newline[3] = item_value

#print newline

this_line = ''

for s_item in newline:

this_line += s_item+'\t'

this_line = this_line.strip()+"\n"

fina_data.append(this_line)

else:

fina_data.append(dataline)

# write in file

try:

fp = open(data_file, 'w')

for fina_line in fina_data:

print fina_line,

fp.write(fina_line)

except IOError, err:

print 'Error:', err

else:

fp.close()

## 4. delete items

elif user_select == '4':

while True:

del_prompt = "\033[32;1mEnter the delete option, press 'q' to exit: \

\033[0m\neg: ID=1 or UserName=Jack or PhoneNumber=11223344\n>"

del_input = raw_input(del_prompt).strip()

if del_input == 'q':

'\033[32;1mexiting delete mode...\033[0m'

break

del_k, del_v = del_input.split('=')

print del_k, del_v

for del_line in data:

new_deline = del_line.split()

if del_v in new_deline:

confirm = raw_input("You select fowing line to delete:\n%s\n\033[33;1mAre you sure[yes/no]?\033[0m" % del_line)

if confirm == 'yes':

data.remove(del_line)

print '\033[35;1mSuccess delelted.\033[0m'

# write in file

try:

fp = open(data_file, 'w')

for lines in data:

fp.write(lines)

except IOError, err:

print 'Error:', err

else:

fp.close()

else:

print '\033[31;1mWrong password, try again!\033[0m'

continue

else:

print '\033[31;1mA valid username, Please re-enter!\033[0m'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值