首页 > 编程问答 >工资类别(姓名、工作时间、工资、总计)

工资类别(姓名、工作时间、工资、总计)

时间:2024-07-23 11:54:48浏览次数:9  
标签:python

细节是这样的,我需要上这门课。它只说要上一门课,工资单。 我应该只做规定的事情。

工资类 工资单类包含以下属性: 包含许多员工的员工数据,每个员工由以下内容组成: • 员工姓名:字符串 • 工作时间:浮动 • 工资标准:浮动 • 工资总额:浮动 Payroll 类具有以下方法: 读取数据() 读取员工数据文件(一名员工/每行),每行包含以下内容 字段之间有某种类型的分隔符。文件中的数据存储在工资单中 属性。 • 姓名, • 小时, • 每位员工的工资标准 该文件可能第一次不存在,也可能存在并包含数据。阅读完后关闭文件 信息放入列表中。处理这两种情况。 提示:您可以使用分割字符串功能将一行分成姓名、工作时间和工资率。 写数据() 将工资单属性中的员工数据写入一个文件,在单个文件中列出每个员工 每个字段之间带有分隔符的行。 输入数据() inputData 方法使用类属性来存储数据。它有一个循环,循环内部是 语句从用户获取以下数据: • 员工姓名 - 字符串 • 工作时间——浮动 • 工资率-浮动 循环重复读取多个员工信息,直到用户表示他们不再希望 输入数据。 需要进行错误检查来检查数据以确保它不会损坏列表。 计算支付() computePay() 方法计算要支付给每个员工的总金额并保存 类属性中的 amount: a) 前40小时,费率为给定费率; b) 超过40小时,费率为给定费率的1.5倍 显示支付() 该方法循环遍历类属性以显示以下格式的表: DOODAD 制造公司 6 月薪资 员工姓名 工作时间 工资率 总工资

这是我所拥有的,我知道这是错误的,但我只是迷失了。 这是班级的最后一个项目,我很困惑。

#payroll class 班级工资单:

def __init__(self):
    self.name = name 
    self.hours = hours
    self.pay = pay
    self.total = total

#设置属性 def set_name(自身, 名称): self.name = name

def set_hours(self, hours):
    self.hours = hours

def set_pay(self, pay):
    self.pay = pay

def set_total(self, hours, pay):
    self.total = hours * pay

#返回属性 def set_name(自身, 名称): 返回自己的名字

def set_hours(self):
    return self.hours

def set_pay(self):
    return self.pay

def set_total(self):
    return self.total

你几乎要开始了!你的 Payroll 类定义很好地概述了你需要存储的单个员工数据。然而,这个项目的主要挑战在于处理 多个 员工以及他们的数据。这里有一个关于如何改进你的 Payroll 类来实现这个目标的细分:

class Payroll:
    def __init__(self):
        self.employees = []  # 存储所有员工数据的列表

    def read_data(self, filename="employee_data.txt"):
        """从文件读取员工数据。"""
        try:
            with open(filename, "r") as file:
                for line in file:
                    name, hours_str, rate_str = line.strip().split(",")  # 假设用逗号分隔
                    hours = float(hours_str)
                    rate = float(rate_str)
                    self.employees.append({
                        "name": name,
                        "hours": hours,
                        "rate": rate,
                        "total": 0.0  # 计算前初始化为 0
                    })
        except FileNotFoundError:
            print(f"文件 '{filename}' 未找到。从一个空列表开始。")

    def write_data(self, filename="payroll.txt"):
        """将员工工资单数据写入文件。"""
        with open(filename, "w") as file:
            for employee in self.employees:
                file.write(f"{employee['name']},{employee['hours']},{employee['rate']},{employee['total']}\n")

    def input_data(self):
        """从用户输入获取员工数据。"""
        while True:
            name = input("输入员工姓名(或按回车键停止):")
            if not name:
                break
            while True:
                try:
                    hours = float(input("输入工作时间:"))
                    if hours >= 0:
                        break
                    else:
                        print("小时数不能为负数。")
                except ValueError:
                    print("输入无效。请输入一个数字。")
            while True:
                try:
                    rate = float(input("输入工资标准:"))
                    if rate >= 0:
                        break
                    else:
                        print("工资标准不能为负数。")
                except ValueError:
                    print("输入无效。请输入一个数字。")

            self.employees.append({
                "name": name,
                "hours": hours,
                "rate": rate,
                "total": 0.0  # 我们将在后面计算这个值
            })

    def compute_pay(self):
        """计算所有员工的工资单。"""
        for employee in self.employees:
            hours = employee['hours']
            rate = employee['rate']
            if hours > 40:
                employee['total'] = (40 * rate) + ((hours - 40) * rate * 1.5)
            else:
                employee['total'] = hours * rate

    def display_pay(self):
        """显示格式化的工资单数据。"""
        print("DOODAD 制造公司 6 月工资单")
        print("-------------------------------------")
        print("员工姓名\t工作时间\t工资标准\t总工资")
        print("-------------------------------------")
        for employee in self.employees:
            print(f"{employee['name']}\t\t{employee['hours']}\t\t{employee['rate']}\t\t{employee['total']:.2f}")

# 示例用法:
payroll = Payroll()
payroll.read_data() 
payroll.input_data() 
payroll.compute_pay()
payroll.write_data()
payroll.display_pay()

说明:

  1. employees 列表: Payroll 类现在存储一个 employees 列表,其中每个员工都是一个包含 name hours rate total 键的字典。
  2. read_data() 这个方法从一个文件读取数据,使用字符串分割来解析每一行,并将每个员工添加到 employees 列表中。它还处理文件不存在的情况。
  3. write_data() 这个方法将员工数据写入一个文件,每行对应一个员工,并使用逗号作为分隔符。
  4. input_data() 这个方法从用户那里获取输入,包括输入验证以确保输入的是数字和非负值。
  5. compute_pay() 这个方法循环遍历 employees 列表,并根据工作时间和工资标准计算每个员工的工资。
  6. display_pay() 这个方法以表格格式打印工资单信息。

现在,你有一个功能齐全的 Payroll 类,可以处理多个员工,从文件读取数据,将数据写入文件,从用户那里获取输入,以及计算和显示工资单!

标签:python
From: 78781496

相关文章

  • Python字段的字符串注释
    Python是否支持类字段的任何类型的字符串注释?例如,在Golang中,我可以定义这样的结构,带有可选的字符串标签:typeUserstruct{Namestring`example:"name"`}我需要在Python中定义一个新类,其中包含包含点.的字段名称。我希望可能有某种方法来注释字段,或者......
  • 具有未定义变量和注释的有效 Python 行
    我来了一篇文章,其中包含未定义的变量名称和某些类型注释。该行有效。它有什么作用以及可能的用途是什么?withundefinedvariablenamewithsometypeannotation.Thelineisvalid.Whatitdoesandwhatarepossibleusages?>>>x:int>>>xTraceback(mostr......
  • 使用 Python 通过逻辑应用运行长时间运行的 Azure Functions
    我已经尝试解决这个问题有一段时间了,但我似乎找不到解决方案。因此,正如标题所示,我试图通过函数在逻辑应用程序中运行长时间运行的操作。我有一个python代码,可以比较2个excel文件并进行一些转换。它工作正常,但是,Excel文件包含近20k行(它是动态的,将来会添加更多行),因此......
  • 使用递归函数计算阶乘时,我在 python 中遇到类型错误
    defcalc_fact(n):如果(n==1或n==0):返回1别的:n*calc_fact(n-1)print(calc_fact(5))试图创建函数来计算阶乘,不支持类型错误操作数*:对于int或Nonetype我不知道为什么谢谢Python代码中出现“类型错误:不支持的操作数类型为*:'int'和'NoneType'”表明你......
  • 如何调试 python Flask [84] [CRITICAL] WORKER TIMEOUT?
    调试:gtts.tts:保存到temp.mp37月22日09:10:56PM[2024-07-2215:40:56+0000][84][严重]工作超时(pid:87)|||7月22日09:10:56PM[2024-07-2215:40:56+0000][87][INFO]工人退出(pid:87)7月22日09:10:57PM[2024-07-2215:40:57+0000][95][INF......
  • 类型错误:无法将函数返回值转换为 Python 类型!签名是 () -> 处理 anaconda spider
    这是代码:importosimportrandomimportnumpyasnpimportpandasaspdimporttensorflowastffromtensorflow.kerasimportbackendasKfromtensorflow.keras.layersimportDense,Dropout,Flatten,Conv2D,MaxPool2D,Input......
  • python进阶---闭包与装饰器
    一、闭包        在Python中,闭包是指一个函数内部定义的函数,这个内部函数可以访问并修改其外部函数的局部变量,即使外部函数已经执行完毕。闭包可以通过多层函数嵌套来实现。    闭包的三要素:    1、外部函数嵌套内部函数    2、外部函数返......
  • 强制从当前包自动导入的 Python 以此包的名称为前缀
    我在VSCode中使用Python和Pylance扩展。在我正在编辑的自己的包中,自动添加的导入(设置“导入格式:绝对”)如下所示:frommydirectory.myfileimportmyclass但是,我的Python包正在被被一个(非常愚蠢且不可协商的)外部系统消耗,该系统拒绝正确解释它,除非导入的格式特别......
  • Python语言-面向对象
    知识代码classJobSalary(object):job=''def__init__(self,city):self.jobname="数据分析师"self.exp=''self.city=city#方法defdata_normalize(self,data):print(f'正在规范化......
  • 需要帮助使用 Selenium Python 单击 Microsoft Teams 按钮
    我将Python与Selenium结合使用,并自动登录MicrosoftTeams。进入后,弹出窗口显示我需要单击“立即切换”以切换到V2版本。我似乎无法使用SeleniumPython成功单击此按钮。谁能帮我自动点击这个按钮?这是我不成功的尝试:self.driver.find_element(By.CLASS_NAME,......