zoukankan      html  css  js  c++  java
  • 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('33[31;1m请输入正确的操作编号33[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('33[31;1m请输入正确的操作编号33[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('33[31;1m请输入正确的格式33[0m')
     51         elif not add_user_info[1].isdigit():
     52             print('33[31;1m请输入正确的数字33[0m')
     53         else:
     54             name = add_user_info[0].capitalize()#把用户名的第一个字母变成大写
     55             salary = add_user_info[1]
     56             if name in user_dict:#判断姓名是否在字典中
     57                 print("33[31;1m您输入的名字已存在33[0m")
     58             elif not name.isalpha():#判断姓名是否是全英文
     59                 print('33[31;1m请输入正确的姓名')
     60             else:
     61                 with open('info.txt','a') as f:
     62                     f.write(name + ' ')
     63                     f.write(salary + '
    ')
     64                 print('已将33[31;1m%s33[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('请确认是否删除33[32;1m %s33[0m用户信息--->按33[32;1mN33[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('33[32;1m%s33[0m已经删除' % del_user_info)
     85                 break
     86             else:
     87                 print('33[32;1m%已取消删除33[0m')
     88         else:
     89             print('33[32;1m该用户不存在33[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('33[32;1m请输入正确的格式33[0m')
     99         elif not modify_user_info[1].isdigit():
    100             print('33[32;1m请输入正确的数字33[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('已将33[32;1m%s33[0m的工资修改为33[32;1m%s33[0m元'%(name, salary))
    113                 break
    114             else:
    115                 print('33[32m;1m您输入的用户不存在33[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('33[32;1m%s33[0m工资为33[32;1m%s33[0m元' % (search_user_info, user_dict[search_user_info]))
    125             break
    126         else:
    127             print('33[32;1m您输入的用户不存在33[0m')
    128 
    129 user_choice()
    
    
    
    
    
  • 相关阅读:
    结构体数组
    怎样在Linux下通过ldapsearch查询活动文件夹的内容
    Phalcon之 表单(Forms)
    Java模式(适配器模式)
    人类智商一般在多少左右?爱因斯坦的智商是多少?
    SQL中declare申明变量
    apache2.2 虚拟主机配置
    项目实施阶段该做好哪些方面的工作
    HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth之全然具体解释
    ExtJs自学教程(1):一切从API開始
  • 原文地址:https://www.cnblogs.com/qinlangsky/p/9487406.html
Copyright © 2011-2022 走看看