Laundary System 项目实战用 Python 类实现洗衣服务客户管理与计费系统【免费下载链接】PythonMy Python Examples项目地址: https://gitcode.com/gh_mirrors/py/Python本文以仓库 Laundary System/README.md 为核心结合其配套源码 Laundary System/code.py 展开。你将掌握一个典型「面向对象计费系统」的完整设计从客户信息录入、唯一客户 ID 分配到按布料类型、品牌溢价、季节折扣三级规则动态计算洗衣费用再到依据费用高低自动推算衣物归还日期。读完即可独立复现一个可交互运行、支持连续多客户录入的洗衣服务 CLI 程序并理解其中每个计费参数的真实取值与源码级实现细节。一、项目与文档定位Laundary System洗衣服务系统是仓库gh_mirrors/py/Python中一个轻量级的 Python 演示项目目录下仅有两个文件Laundary System/README.md项目文档定义了LaundryService类的职责、方法签名与使用示例Laundary System/code.py完整可运行的实现源码包含类定义、计费逻辑与交互主循环。从源码结构看该项目是一个面向教学的最小可运行示例它用单个类封装了「客户建模 费用计算 结果输出」三个职责非常适合用来理解 Python 类设计、参数传递、条件分支与循环交互的基本模式。README 明确说明该类用于管理客户详细信息并为布料与服装清洁服务计算收费。二、类结构与核心方法继承文档骨架README 定义的LaundryService类包含四个公开方法源码 code.py 与文档描述一一对应方法职责源码位置__init__(...)初始化客户实例并分配唯一客户 IDcode.pycustomerDetails()打印客户全部详情code.pycalculateCharge()按布料/品牌/季节计算费用并返回数值code.pyfinalDetails()组合调用上述两方法输出总费用与归还日期code.py1. 构造函数__init__def __init__(self, Name_of_customer, Contact_of_customer, Email, Type_of_cloth, Branded, Season, id):按 README 的说明各参数的含义与类型如下name字符串客户姓名contact数值整数客户联系电话email字符串字母数字客户邮箱地址cloth_type字符串送洗衣物类型可取Cotton棉、Silk丝、Woolen毛、Polyester涤纶四值之一branded布尔0 或 1标记衣物是否为品牌货season字符串送洗季节取Summer夏季或Winter冬季id唯一客户 ID注意README 的方法签名为 6 个参数而实际源码 code.py 在构造时额外传入了一个自动递增的全局id这一点在第六节会专门对比说明。构造函数将这些入参原样保存为实例属性self.Name_of_customer等供后续方法使用。2. 客户详情输出customerDetails()该方法依次打印客户 ID、姓名、联系电话、邮箱与布料类型并做了一次数据类型转换if self.Branded 1: a True else: a False print(Branded, a)即源码中的Branded属性以整数1/0表示打印时被转换为布尔值True/False使输出更符合阅读习惯。3. 费用计算calculateCharge()返回值为数值型总清洗费用单位卢比 Rupees计费规则为三级递进计算详见第三节。4. 汇总输出finalDetails()def finalDetails(self): self.customerDetails() print(Final charge:, end) if self.calculateCharge() 200: print(to be return in 4 days) else: print(to be return in 7 days)内部先调用customerDetails()打印客户信息再调用calculateCharge()计算费用并根据费用阈值决定归还周期总费用 200 卢比→ 衣物4 天后归还否则≤ 200→ 衣物7 天后归还。三、计费规则深度解析源码级证据calculateCharge()是系统的核心code.py 的实现将收费拆解为三个递进层次第一层按布料类型确定基础价if self.Type_of_cloth Cotton: a 50.0 elif self.Type_of_cloth Silk: a 30.0 elif self.Type_of_cloth Woolen: a 90.0 elif self.Type_of_cloth Polyester: a 20.0布料类型Type_of_cloth基础价卢比Cotton棉50.0Silk丝30.0Woolen毛90.0Polyester涤纶20.0注意如果输入不属于上述四种字符串变量a保持初始值0后续计算将基于 0 展开因此输入必须严格匹配文档约定的四种类型之一大小写敏感。第二层品牌溢价if self.Branded 1: a 1.5 * a当Branded 1品牌衣物时基础价乘以1.5即加收 50% 品牌溢价否则价格不变。第三层季节系数if self.Season Winter: a 0.5 * a else: a 2 * a冬季Winter费用打5 折×0.5非冬季源码中即Summer或其他任何值费用翻倍×2。因此最终费用的完整公式为总费用 基础价按布料 × 品牌系数品牌为 1.5否则 1 × 季节系数Winter 为 0.5否则 2计费组合速查表布料品牌季节计算过程总费用Woolen否Summer90 × 2180Woolen是Summer90 × 1.5 × 22702004 天归还Woolen是Winter90 × 1.5 × 0.567.5Cotton是Summer50 × 1.5 × 2150Silk否Summer30 × 260Polyester否Winter20 × 0.510从上表可以看出由于品牌溢价×1.5与夏季翻倍×2叠加只有高单价衣物如 Woolen在品牌 非冬季组合下才会触发「 200 → 4 天归还」的快通道其余常见组合均落入 7 天归还的常规周期。四、参数输入与完整使用流程方式一按 README 示例手动构造对象README 给出的交互式用法如下注意其构造调用为 6 参数版本与仓库源码存在差异见第六节# Example usage: name input(Enter customer name: ) contact int(input(Enter contact number: )) email input(Enter email address: ) cloth_type input(Enter cloth type (Cotton/Silk/Woolen/Polyester): ) branded bool(int(input(Is the cloth branded? (Enter 0 for No, 1 for Yes): ))) season input(Enter season (Summer/Winter): ) customer LaundryService(name, contact, email, cloth_type, branded, season) customer.finalDetails()方式二直接运行仓库源码内置多客户循环直接执行 Laundary System/code.py 即可进入系统内置的主循环code.pypython Laundary System/code.py运行后系统会依次提示输入姓名 → 联系电话 → 邮箱 → 布料类型 → 是否品牌Branded ?→ 季节然后自动完成 ID 分配、费用计算与结果打印随后询问Do you want to continue(Y/N):输入Y继续录入下一位客户全局id自增 1保证每位客户 ID 唯一输入N打印Thanks for visiting!并退出程序输入其他值提示Select valid option循环继续注意此时不会重新录入数据而是回到continue分支——从源码看该分支会重新进入while True的下一轮输入属于一个轻微的输出提示与流程不匹配点。一次典型会话的输出效果如下以 品牌毛料、夏季 为例The Specific Details of customer: customer ID: 1 customer name: Rohit customer contact no. : 9876543210 customer email: rohitexample.com type of cloth Woolen Branded True Final charge:270.0to be return in 4 days其中Final charge:与费用数值之间没有换行、数值与归还提示之间也没有分隔符这是 code.py 中print(Final charge:, end)与calculateCharge()内部print(a)叠加造成的输出格式特点复现时可按需优化排版。五、归还周期规则的边界说明finalDetails()的判定条件是严格大于 200if self.calculateCharge() 200: print(to be return in 4 days) else: print(to be return in 7 days)即恰好等于 200 卢比时仍走 7 天归还分支。由于源码的计费结果均为 0.5 的倍数×0.5、×1.5、×2 的组合实际很难出现恰好 200 的情况但理解这一严格比较语义有助于后续改造例如改为。六、README 与源码的差异对比复现前必读在按 README 示例编写代码时有三处与仓库实际源码不一致需要特别留意构造参数数量不同README 示例调用LaundryService(name, contact, email, cloth_type, branded, season)6 参数而源码构造函数实际声明了 7 个形参含id主循环中也是以LaundryService(name, contact, email, cloth, brand, season, id)code.py7 参数方式调用。若完全照抄 README 示例会因缺少id而抛出TypeError需要补传或给形参设置默认值。布尔输入的转换方式不同README 示例采用bool(int(input(...)))先转整数再转布尔输入0得到False源码主循环则直接bool(input(Branded ? ))code.py此时任何非空字符串包括0都会被转换为True而True 1成立导致输入0也被当作品牌衣物计费。若要复现文档语义应改为 README 的bool(int(...))写法。方法与参数的命名风格文档使用小写蛇形风格name、cloth_type源码使用首字母大写的混合风格Name_of_customer、Type_of_cloth功能上等价阅读源码时注意对应关系。七、扩展思路在理解核心实现后可基于现有类结构做以下低成本改进仅作思路不修改仓库健壮性为构造函数参数提供默认值如idNone自动生成使 6 参数调用也可工作输入校验对布料类型、季节做白名单校验非法输入时重新提示避免a停留在 0 导致免费清洗错误处理用try/except包裹int(input(...))防止非数字输入导致程序崩溃数据持久化目前客户信息仅打印到控制台可将其追加写入 CSV/JSON 文件形成完整的订单台账输出格式化使用 f-string 修复Final charge:与数值粘连的排版问题。八、总结Laundary System 是一个麻雀虽小、五脏俱全的 Python 类设计范例README 清晰地描述了类的四方法骨架与全部参数语义而配套源码则给出了「基础价 → 品牌溢价 → 季节折扣」三级计费链的完整实现并附带一个支持连续多客户录入、自动递增客户 ID 的交互主循环。对照两者学习既能掌握LaundryService这一核心类的调用方式与计费规则也能直观体会到文档与实现之间可能存在的细微差异非常适合作为理解 Python 面向对象编程与 CLI 交互程序设计的入门案例。【免费下载链接】PythonMy Python Examples项目地址: https://gitcode.com/gh_mirrors/py/Python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考