Python员工信息管理系统V2(python系列21)

前言:在python系列19,我们使用MVC架构初步完成员工信息管理系统,今天我们使用封装,继承,多态让我们的程序有隐藏的魅力,更加灵活,有扩展性。

实现的功能和python系列19一模一样,所以这里就不再展示功能与需求了,直接使用模块化,私有化,多态来更好的实现员工信息管理系统。

1.设计模型

员工信息管理系统设计模型
usl模块->StaffView类
    __display_menu() 显示菜单
    __select_menu() 选择菜单
    __input_staff() 录入员工信息 -> 调用StaffController类add_staff()
    __display_staff() 显示员工信息 -> 调用StaffModel类__str__方法
    __delete_staff() 删除员工信息 -> 调用StaffController类delete_staff()
    __modify_staff() 修改员工信息 -> 调用StaffController类modify_staff()
    main() 程序入口

bll模块->StaffController类
    __init__() 容器初始化
    add_staff() 添加员工 返回值:bool
    delete_staff() 删除员工 返回值:bool
    modify_staff() 修改员工 返回值:bool
dtl模块->StaffModel类
    __init__() 初始化,员工编号->staff_number、员工名称name、部门编号number、薪资wages
    __str__() 打印员工信息
    __eq__() 重写__eq__方法,通过名字判断两个员工是否相等,为了实现list.remove()方法

1.dtl

class StaffModel:def __init__(self, name="", staff_number=0, number=0, wages=0.0):self.name = nameself.staff_number = staff_numberself.number = numberself.wages = wagesdef __str__(self):return f"name:{self.name}, staff_number:{self.staff_number}, number:{self.number}, wages:{self.wages}"def __lt__(self, other):return self.name < other.namedef __eq__(self, other):return self.name == other.name

2.bll

from dtl import StaffModelclass StaffController:def __init__(self):self.list_staff = []def add_staff(self, staff: StaffModel):self.list_staff.append(staff)return Truedef delete_staff(self, staff_name):staff = StaffModel(staff_name)if staff in self.list_staff:self.list_staff.remove(staff)return Truereturn Falsedef modifying_staff(self, staff: StaffModel):for item in self.list_staff:if item.name == staff.name:item.__dict__ = staff.__dict__return Truereturn False

3.usl

from bll import StaffController
from dtl import StaffModelclass StaffView:def __init__(self):self.__staffController = StaffController()@staticmethoddef __display_menu():print("1. 录入员工信息")print("2. 显示员工信息")print("3. 修改员工信息")print("4. 删除员工信息")def __select_menu(self):num = input("请选择操作:")if num == "1":self.__input_staff()elif num == "2":self.__show_staff()elif num == "3":self.__modify_staff()elif num == "4":self.__delete_staff()else:print("输入错误,请重新输入!")def __input_staff(self):staff = StaffModel(input("请输入员工姓名:"),input("请输入员工工号:"),input("请输入员工职位:"),input("请输入员工薪资:"))print("添加成功!") if self.__staffController.add_staff(staff) else print("添加失败!")def __show_staff(self):for item in self.__staffController.list_staff:print(item)def __modify_staff(self):staff = StaffModel(input("请输入员工姓名:"),input("请输入员工新工号:"),input("请输入员工新职位:"),input("请输入员工新薪资:"))print("修改成功!") if self.__staffController.modifying_staff(staff) else print("修改失败!")def __delete_staff(self):print("修改成功!") if self.__staffController.delete_staff(input("请输入员工姓名:")) else print("修改失败!")def main(self):while True:self.__display_menu()self.__select_menu()

4.main

from usl import StaffViewif __name__ == '__main__':view = StaffView()view.main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/221236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Springboot+Libreoffice集成开发

简介 LibreOffice 是一款功能强大的办公软件&#xff0c;默认使用开放文档格式 (OpenDocument Format , ODF), 并支持 *.docx, *.xlsx, *.pptx 等其他格式。 它包含了 Writer, Calc, Impress, Draw, Base 以及 Math 等组件&#xff0c;可用于处理文本文档、电子表格、演示文稿、…

垃圾回收 (GC) 在 .NET Core 中是如何工作的?

提起GC大家肯定不陌生&#xff0c;但是让大家是说一下GC是怎么运行的&#xff0c;可能大多数人都不太清楚&#xff0c;这也很正常&#xff0c;因为GC这东西在.NET基本不用开发者关注&#xff0c;它是依靠程序自动判断来释放托管堆的&#xff0c;我们基本不需要主动调用Collect(…

【论文阅读】O’Reach: Even Faster Reachability in Large Graphs

Hanauer K, Schulz C, Trummer J. O’reach: Even faster reachability in large graphs[J]. ACM Journal of Experimental Algorithmics, 2022, 27: 1-27. Abstract 计算机科学中最基本的问题之一是可达性问题&#xff1a;给定一个有向图和两个顶点s和t&#xff0c;s可以通过…

C++进阶学习:map和set的实现

我们知道set和map的底层其实是红黑树&#xff0c;在学习完红黑树这个数据结构之后&#xff0c;我们开始简单模拟实现一下这两个STL容器 目录 1.set和map的泛型编程思想 2.红黑树的结构 2.1.迭代器的实现 2.2.迭代器的 operator 2.3.迭代器的代码 2.4.set和map迭…

资产管理系统部署及库存告警

1.需求&#xff1a;对电脑&#xff0c;办公设备&#xff0c;耗材等做资产盘点和整理&#xff0c;并对库存预警。 2.选型&#xff1a;snipeit 3.部署 #!/bin/bash docker run -d -p 80:80 --name"snipeit" --env-filesnipeit.env --mount sourcesnipe-vol,dst/var/l…

鸿蒙OS应用开发之文本输入组件

前面学习了按钮组件的输入方式,它只能响应触摸输入,或者点击输入,而不能实现文本的输入,虽然它是主流的操作方式,但是很多时候还是需要文本的输入。比如登录邮箱需要输入用户帐号和密码,网上购物需要输入地址和电话号码等等。应用对这样的需求,就需要使用文本输入组件,…

【算法系列篇】递归、搜索和回溯(三)

文章目录 前言什么是二叉树剪枝1. 二叉树剪枝1.1 题目要求1.2 做题思路1.3 代码实现 2. 验证二叉搜索树2.1 题目要求2.2 做题思路2.3 代码实现 3. 二叉搜索树中第k小的元素3.1 题目要求3.2 做题思路3.3 代码实现 4. 二叉树的所有路径4.1 题目要求4.2 做题思路4.3 代码实现 前言…

(八)数组和函数实践:扫雷游戏

目录 1. 扫雷游戏分析和设计 1.1 扫雷游戏的功能说明 1.2 游戏的分析和设计 1.2.1 数据结构的分析 1.2.2 文件结构设计 2. 扫雷游戏的代码实现 3. 如何生成用户版本 4. 完整的排雷程序 1. 扫雷游戏分析和设计 1.1 扫雷游戏的功能说明 1&#xff09;使用控制台实现经典…

数据结构和算法-栈

数据结构和算法-栈 文章目录 数据结构和算法-栈1. 栈的介绍2. 栈的应用场景3. 栈的快速入门3.1 用数组模拟栈3.2 课堂作业-用链表模拟栈 4. 栈实现综合计算器4.1 课堂作业-加入小括号5. 栈的三种表达式-**前缀、中缀、后缀表达式(逆波兰表达式)**5.1 前缀表达式(波兰表达式)5.1…

中低压MOS 适用于电子烟等产品—— 较小的开关损耗 过流能力好

工作原理&#xff1a; 当用户在吸嘴处抽吸时&#xff0c;气流经过进气孔&#xff0c;穿 过电路板上方的咪头&#xff0c;咪头即产生电信号&#xff0c;驱 动芯片板&#xff0c;让电池供电给雾化芯&#xff0c;雾化芯中的 发热丝将电能转化成热能&#xff0c;当温度达到雾化液…

LeetCode-2487. 从链表中移除节点【栈 递归 链表 单调栈】

LeetCode-2487. 从链表中移除节点【栈 递归 链表 单调栈】 题目描述&#xff1a;解题思路一&#xff1a;可以将链表转为数组&#xff0c;然后从后往前遍历&#xff0c;遇到大于等于当前元素的就入栈&#xff0c;最终栈里面的元素即是最终的答案。解题思路二&#xff1a;递归&am…

【一步到位】汽车过户全攻略:轻松搞定,告别繁琐流程

校长车行是一家昆明二手车代办公司&#xff0c;今天我们要聊一聊一个让很多人头疼的问题——汽车过户。相信很多朋友在购买二手车或者需要将车辆转让给他人时&#xff0c;都会遇到这个繁琐的流程。那么&#xff0c;如何才能轻松搞定汽车过户呢&#xff1f;接下来&#xff0c;就…

(0-1)分布

假设离散型随机变量X只可能取到0、1两个值&#xff0c;它的分布律为&#xff1a; &#xff0c;其中&#xff0c; 那么称X服从参数为p的0-1分布&#xff0c;也叫两点分布。 其实上面公式就是将下面两个式子写在一起&#xff1a;

【Hive_02】查询语法

1、基础语法2、基本查询&#xff08;Select…From&#xff09;2.1 全表和特定列查询2.2 列别名2.3 Limit语句2.4 Where语句2.5 关系运算函数2.6 逻辑运算函数2.7 聚合函数 3、分组3.1 Group By语句3.2 Having语句3.3 Join语句&#xff08;1&#xff09;等值与不等值Join&#x…

SUPER-ADAM: Faster and Universal Framework of Adaptive Gradients

这周看了啥&#xff1a; 本周主要来看看别人是如何证明收敛的&#xff0c;围绕算法SUPER-ADAM 的更新过程和论文后面的证明&#xff0c;&#xff08;这篇证明比上周的亲切多了&#xff0c;我哭死&#xff09;仔细看了证明每一步的推导&#xff08;至于作者如何想出的&#xff…

verilog基础语法之比较器

逻辑运算符以及逻辑电路概述 逻辑运算符常用于条件判断语句&#xff0c;输出为布尔值True/False。逻辑运算符是基于比较器构造的。比较器电路是产生逻辑比较的本质&#xff1b;比较器电路的复杂度与位宽和比较类型相关&#xff1b;一般情况下可以先构造基本比较器&#xff0c;…

原生Html 引入element UI + vue3 表单校验设置

效果&#xff1a; 提交时&#xff0c;检验结果展示 html源码 <!DOCTYPE html> <html> <!--带搜索输入框下拉弹窗 --> <head><meta charset"UTF-8"><!-- import Vue before Element --><script src"../js/vue3.3.8/vu…

iOS IDFV特点

从AppStore下载的APP的表现 在 AppStore 下载的APP具有以下特征&#xff1a; 同一厂商&#xff08;即同一个开发者帐号&#xff09;在一个iOS设备上的APP的IDFV相同&#xff1b;同一厂商在不同iOS设备上的APP的IDFV不同&#xff1b;不同厂商在同一iOS设备上的APP的IDFV不同&a…

短视频电商模式,是否会成为未来电商的主流?

我是电商珠珠 随着电商的发展&#xff0c;短视频也逐渐开拓电商市场。其中最热门的短视频APP-抖音在19年的时候&#xff0c;发展起了自己的电商平台-抖音小店。 它的兴趣电商模式&#xff0c;区别于传统电商&#xff0c;实现了既可以让用户搜索下单&#xff0c;又可以在刷视频…

jmeter,通过Ant插件生成html报告,展示接口详细信息

一、下载Ant 下载地址&#xff1a;Apache Ant - 二进制发行版 二、安装 1、Ant环境变量 解压Ant目录&#xff1b;配置系统环境变量&#xff0c;添加ANT_PATH&#xff0c;值为D:\Software\Ant_plugIn\apache-ant-1.10.14配置系统环境变量Path&#xff0c;添加Ant路径 %ANT_H…