python實現簡易工資管理系統(Salary Manage)源碼


一、需求:

1.導入文件讀取員工的信息和工資信息,最后將增加、刪除或修改的員工工資信息寫入原來的文件中

2.能夠實現員工工資信息的增刪改查

3.當增加和修改員工信息時用戶用空格分隔員工姓名和薪資

4.實現退出功能

二、思路

1.首先需要將包含有員工薪資信息的文件讀出來存儲到一個容器里,因為員工姓名和薪資一一對應,因此想到字典的key--->value機制,將員工薪資信息存儲到字典中。

2.寫一個函數讓用戶選擇該如何操作----->add、delete、modify、search(增刪改查)以及退出操作

3.定義四個函數----- >user_add()、user_delete()、user_modify()、user_seach()

三、實現(源碼)

 

 
         
  1 #!/user/bin/env python
  2 #-*-coding:utf-8 -*-
  3 #Author: qinjiaxi
  4 import sys,os,re
  5 operation_list = """
  6 1.增加新員工薪資信息
  7 2.刪除已有員工薪資信息
  8 3.修改已有員工薪資信息
  9 4.查詢已有員工薪資信息
 10 5.退出操作
 11 """
 12 user_dict = {}#空字典用來存儲員工薪資信息
 13 def user_info():
 14     '''定義員工薪資信息函數'''
 15     with open('info.txt','r') as f:
 16         for i in f:
 17             i = i.strip()#去掉每行字符串前后空格和換行以及縮進
 18             user_dict[i.split()[0]] = i.split()[1]#將員工信息以鍵值對key(員工姓名)--->value(員工薪資)的方式存儲在字典中
 19             print('當前員工的姓名:', i.split()[0])
 20 
 21 def user_choice():
 22     '''用戶輸入選擇'''
 23     while True:
 24         print(operation_list)
 25         user_choice = input('請選擇操作編號:')
 26         if user_choice.isdigit():
 27             user_choice = int(user_choice)
 28             if user_choice > 5:
 29                 print('\033[31;1m請輸入正確的操作編號\033[0m')
 30             if user_choice == 1:
 31                 user_info_add()
 32             if user_choice == 2:
 33                 user_info_del()
 34             if user_choice == 3:
 35                 user_info_modify()
 36             if user_choice == 4:
 37                 user_info_search()
 38             if user_choice == 5:
 39                 sys.exit('退出程序')
 40         else:
 41             print('\033[31;1m請輸入正確的操作編號\033[0m')
 42 
 43 def user_info_add():
 44     '''定義增加新員工薪資信息函數'''
 45     while True:
 46         user_info()
 47         add_user = input('請輸入要增加員工的姓名和薪資,並以空格隔開(例如: Qinjiaxi 10000)')
 48         add_user_info = add_user.strip().split()#去掉用戶輸入前后的空格換行以及縮進,並將姓名和工資以列表形式打印
 49         if len(add_user_info) < 2:
 50             print('\033[31;1m請輸入正確的格式\033[0m')
 51         elif not add_user_info[1].isdigit():
 52             print('\033[31;1m請輸入正確的數字\033[0m')
 53         else:
 54             name = add_user_info[0].capitalize()#把用戶名的第一個字母變成大寫
 55             salary = add_user_info[1]
 56             if name in user_dict:#判斷姓名是否在字典中
 57                 print("\033[31;1m您輸入的名字已存在\033[0m")
 58             elif not name.isalpha():#判斷姓名是否是全英文
 59                 print('\033[31;1m請輸入正確的姓名')
 60             else:
 61                 with open('info.txt','a') as f:
 62                     f.write(name + ' ')
 63                     f.write(salary + '\n')
 64                 print('已將\033[31;1m%s\033[0m用戶信息添加成功' % name)
 65                 break
 66 
 67 def user_info_del():
 68     '''定義刪除員工薪資信息函數'''
 69     while True:
 70         user_info()
 71         del_user = input('請輸入要刪除員工的姓名,例如(Qinjiaxi)')
 72         del_user_info = del_user.capitalize()#把首個字母改成大寫,方便用戶輸入
 73         if del_user_info in user_dict:
 74             confirm = input('請確認是否刪除\033[32;1m %s\033[0m用戶信息--->按\033[32;1mN\033[0m退出,按任意鍵確認'% del_user_info)
 75             if confirm.capitalize() != 'N':
 76                 list = []#定義一個空列表用於存儲不需要刪除的員工信息
 77                 with open('info.txt', 'r') as f:
 78                     lines = f.readlines()
 79                     for line in lines:
 80                         if not re.search(del_user_info, line):#判斷哪些員工不需要刪除
 81                             list.append(line)
 82                 with open('info.txt', 'w') as f:
 83                     f.writelines(list)
 84                 print('\033[32;1m%s\033[0m已經刪除' % del_user_info)
 85                 break
 86             else:
 87                 print('\033[32;1m%已取消刪除\033[0m')
 88         else:
 89             print('\033[32;1m該用戶不存在\033[0m')
 90 
 91 def user_info_modify():
 92     '''定義修改員工薪資信息函數'''
 93     while True:
 94         user_info()
 95         modify_user = input('請輸入要修改員工的姓名和薪資,並以空格隔開(例如:Qinjiaxi 10000)')
 96         modify_user_info = modify_user.strip().split()
 97         if len(modify_user_info) < 2:
 98             print('\033[32;1m請輸入正確的格式\033[0m')
 99         elif not modify_user_info[1].isdigit():
100             print('\033[32;1m請輸入正確的數字\033[0m')
101         else:
102             name = modify_user_info[0].capitalize()#姓名
103             salary = modify_user_info[1]#薪資
104             if name in user_dict:
105                 with open('info.txt', 'r') as f:
106                     lines = f.readlines()
107                 with open('info.txt', 'w') as f_w:
108                     for line in lines:
109                         if name in line:
110                             line = line.replace(user_dict[name], salary)#替換薪資
111                         f_w.write(line)
112                 print('已將\033[32;1m%s\033[0m的工資修改為\033[32;1m%s\033[0m元'%(name, salary))
113                 break
114             else:
115                 print('\033[32m;1m您輸入的用戶不存在\033[0m')
116 
117 def user_info_search():
118     '''定義查詢員工薪資信息函數'''
119     while True:
120         user_info()
121         search_user = input('請輸入要查詢的員工姓名(例如:Qinjiaxi)')
122         search_user_info = search_user.capitalize()
123         if search_user_info in user_dict:
124             print('\033[32;1m%s\033[0m工資為\033[32;1m%s\033[0m元' % (search_user_info, user_dict[search_user_info]))
125             break
126         else:
127             print('\033[32;1m您輸入的用戶不存在\033[0m')
128 
129 user_choice()
 
         

 

 
        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM