1. 程式人生 > >員工信息管理系統

員工信息管理系統

readme 年齡 admin password pass pda opera dig pri

   README

一、作業

現要求你寫一個簡單的員工信息增刪改查程序,需求如下:

技術分享圖片

當然此表你在文件存儲時可以這樣表示

1,Alex Li,22,13651054608,IT,2013-04-01
2,Jack Wang,28,13451024608,HR,2015-01-07
3,Rain Wang,21,13451054608,IT,2017-04-01
4,Mack Qiao,44,15653354208,Sales,2016-02-01
5,Rachel Chen,23,13351024606,IT,2013-03-16
6,Eric Liu,19,18531054602,Marketing,2012-12-01
7,Chao Zhang,21,13235324334,Administration,2011-08-08
8,Kevin Chen,22,13151054603,Sales,2013-04-01
9,Shit Wen,20,13351024602,IT,2017-07-03
10,Shanshan Du,26,13698424612,Operation,2017-07-02

1.可進行模糊查詢,語法至少支持下面3種查詢語法:

find name,age from staff_table where age > 22

find * from staff_table where dept = "IT"

find * from staff_table where enroll_date like "2013"

2.可創建新員工紀錄,以phone做唯一鍵(即不允許表裏有手機號重復的情況),staff_id需自增

語法: add staff_table Alex Li,25,134435344,IT,2015-10-29

3.可刪除指定員工信息紀錄,輸入員工id,即可刪除

語法: del from staff where  id=3

4.可修改員工信息,語法如下:

UPDATE staff_table SET dept="Market" WHERE  dept = "IT" 把所有dept=IT的紀錄的dept改成Market
UPDATE staff_table SET age=25 WHERE  name = "Alex Li"  把name=Alex Li的紀錄的年齡改成25

5.以上每條語名執行完畢後,要顯示這條語句影響了多少條紀錄。 比如查詢語句 就顯示 查詢出了多少條、修改語句就顯示修改了多少條等。

註意:以上需求,要充分使用函數,請盡你的最大限度來減少重復代碼!

二、程序目錄結構


├──員工管信息管理系統

├—— README

├── staff_table # 員工信息表數據

├—— staff.py # 主程序

三、程序效果圖

技術分享圖片

四、功能驗證

1、用戶登錄驗證 (用戶名:admin 密碼:123456

驗證目的:當用戶未登錄時,調用增刪改查功能時,都需要身份驗證

 技術分享圖片

2、增加員工信息

增加員工時,staff_id 自增,phone 不可重復

技術分享圖片

技術分享圖片

3、刪除員工信息

現在刪除剛才增加的員工信息,staff_id 為刪除條件,刪除後,staff_id 自動排序

技術分享圖片

4、修改員工信息

修改方式:

只有agedept能被修改,修改語句如下(請任選以下修改語句):

a、UPDATE staff_table SET dept="Market" WHERE dept = "IT"

 技術分享圖片

b、UPDATE staff_table SET age=25 WHERE name = "Alex Li"

技術分享圖片

5、查詢員工信息

本系統支持以下三種查詢方法(查詢條件分別為:agedeptenroll_date):

a、find name,age from staff_table where age > 22

技術分享圖片

b、find * from staff_table where dept = "IT"

技術分享圖片

c、find * from staff_table where enroll_date like "2013"

技術分享圖片

六、程序代碼:

import sys

status_flag = False  # 標記用戶登錄狀態 0代表為登錄,1代表已登錄

# 打印菜單
def menu():
    info = ‘‘‘
    ==========員工信息表==========

    1、增加員工信息
    2、刪除員工信息
    3、修改員工信息
    4、查詢員工信息
    5、退出
    =============================
    ‘‘‘
    print(info)

# 用戶登錄驗證器
def login(func):
    def inner():
        global status_flag     # 聲明全局變量
        if status_flag:
            func()
        else:
            user = admin
            passwd = 123456
            print("請先登錄管理員賬戶!")
            username = input("用戶名: ")
            password = input("密碼:")
            if username == user and password == passwd:
                print("Welcome!", username)
                status_flag = True
                func()
            else:
                print("Logon failure!")
                sys.exit(1)
    return inner

#將文件信息轉換成[[],[]...]形式的列表
def change():
    staff_list = []
    with open(staff_table,r,encoding=utf-8) as staff_f:
        for i in staff_f:
            i = i.strip(\n).split(,)
            staff_list.append(i)
    return staff_list

#更新文件信息
def update_file(staff_list):
    with open(staff_table, w,encoding=utf-8) as staff_f:
        for i in staff_list:
            i = ,.join(i)+\n
            staff_f.write(i)

#增加函數
@login
def add():
    print(=*=*20)
    print("添加的內容格式請按照: Alex Li,25,13651054608,IT,2015-10-29")
    print(=*=*20)
    staff_list = change()
    addInfo = input("add staff_table ").strip()
    addInfo_list = addInfo.split(,)
    if len(addInfo_list) == 5:
        phone_list = []
        for i in staff_list:
            phone_list.append(i[3])
        if addInfo_list[2] in phone_list:
            print("phone 號碼已存在,此次添加無效!")
        else:
            max_id = int(staff_list[-1][0])
            add_id = max_id + 1
            addInfo_list.insert(0,add_id)
            addInfo_list[0] = str(addInfo_list[0])
            staff_list.append(addInfo_list)
            update_file(staff_list)
            print("以下員工信息已添加成功!")
            print(,.join(addInfo_list))
    else:
        print("%s為無效的輸入!"%addInfo)

#刪除函數
@login
def delete():
    print(=*= * 20)
    print("請輸入您想要刪除員工的staff_id")
    staff_list = change()
    ID = input("del from staff where  id = ").strip()
    if ID.isdigit():
        ID = int(ID)
        del_list = []
        max_id = int(staff_list[-1][0])  # 獲取最後一行數據的序號
        if ID <= max_id:
            for i,k in enumerate(staff_list):
                if int(k[0]) == ID:
                    del_list.append(k)
                    del staff_list[i]
            if len(del_list) == 0:
                print("staff_ID為%d的員工不存在..."%ID)
            else:
                print("以下員工已被刪除成功!")
                for i in del_list:
                    i[0] = str(i[0])
                    print(,.join(i))
                update_file(staff_list)
        else:
            print("staff_id:%d 不存在!"%ID)
    else:
        print("%s為無效的輸入..."%ID)

#修改函數
@login
def update():
    update_info = ‘‘‘
    =*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*=
    只有age和dept能被修改,修改語句如下(請任選以下修改語句):
    1、UPDATE staff_table SET dept="Market" WHERE  dept = "IT" 
    2、UPDATE staff_table SET age=25 WHERE  name = "Alex Li"  
    ‘‘‘
    print(update_info)
    staff_list = change()
    update_choice = input("您想根據什麽修改信息?(name or dept):").strip()
    if update_choice == dept:
        old_dept = input("請輸入修改條件dept:").strip()
        new_dept = input("請輸入修改之後dept的值:").strip()
        updateDept_list = []
        for i in staff_list:
            if i[4] == old_dept:
                i[4] = new_dept
                updateDept_list.append(i)
        if len(updateDept_list) > 0:
            print("以下信息已經修改成功!")
            for i in updateDept_list:
                print(,.join(i))
            update_file(staff_list)
        else:
            print("%s不存在!"%old_dept)
    elif update_choice == name:
        Name = input("請輸入修改條件name的值:").strip()
        new_age = input("請輸入修改後的age:").strip()
        updateAge_list = []
        for i,k in  enumerate(staff_list):
            if k[1] == Name:
                staff_list[i][2] = new_age
                updateAge_list.append(k)
        if len(updateAge_list) > 0:
            print("以下信息已經修改成功!")
            for i in updateAge_list:
                print(,.join(i))
            update_file(staff_list)
        else:
            print("%s不存在!"%Name)
    else:
        print("%s為無效的輸入..."%update_choice)

#查詢函數
@login
def find():
    find_info = ‘‘‘
    =*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*==*=
    本系統支持以下三種查詢方法(查詢條件分別為:age、dept、enroll_date):
    1、find name,age from staff_table where age > 22
    2、find * from staff_table where dept = "IT"
    3、find * from staff_table where enroll_date like "2013"    
    ‘‘‘
    print(find_info)
    staff_list = change()
    find_choice = input("您想使用哪種方法查詢員工信息(請填寫查詢條件):").strip()
    if find_choice == age:
        find_age = input("find name,age from staff_table where age > ").strip()
        if find_age.isdigit():
            find_age = int(find_age)
            findAge_list = []
            for i in staff_list:
                i[2] = int(i[2])
                if i[2] > find_age:
                    findAge_list.append(i)
            if len(findAge_list) > 0:
                print("符合條件的信息如下:")
                for i in findAge_list:
                    print("%s,%s"%(i[1],i[2]))
            else:
                print("無age大於%s的員工信息!"%find_age)
        else:
            print("%s非數字,輸入無效!"%find_age)
    elif find_choice == dept:
        find_dept = input("find * from staff_table where dept = ")
        findDept_list = []
        for i in staff_list:
            if i[4] == find_dept:
                findDept_list.append(i)
        if len(findDept_list) > 0:
            print("符合條件的信息如下:")
            for i in findDept_list:
                print(,.join(i))
        else:
            print("無dept為%s的員工信息!" % find_dept)
    elif find_choice == enroll_date:
        findEnroll_date = input("find * from staff_table where enroll_date like ")
        findEnroll_date_list = []
        for i in staff_list:
            i_date = i[5]
            i_date = i_date.split(-)[0]
            if i_date == findEnroll_date:
                findEnroll_date_list.append(i)
        if len(findEnroll_date_list) > 0:
            print("符合條件的信息如下:")
            for i in findEnroll_date_list:
                print(,.join(i))
        else:
            print("Enroll_date為%s 的信息不存在!"%findEnroll_date)
    else:
        print("%s為無效的輸入!"%find_choice)

def main():
    while True:
        menu()
        choice = input("請選擇:").strip()
        if choice == 1:
            add()
        elif choice == 2:
            delete()
        elif choice == 3:
            update()
        elif choice == 4:
            find()
        elif choice == 5:
            sys.exit("logout......")
        else:
            print("無效的輸入!")

main()

員工信息管理系統