python 会员信息管理系统2.0

问题介绍

综合案例实现:会员管理系统设计与实现-V3

利用所学习的知识点 ,结合会员管理系统的分析与实现, 了解面向对象开发过程中类内部功能的分析方法,系统讲解 Python语法、控制结构、四种典型序列 ,函数定义以及面向对象语法和模块的应用。(使用面向对象的思想)

面向对象编程思想完成会员管理系统的开发, 具体要求如下。
(1)系统功能:添加会员、删除会员、修改会员信息 ,查询会员信息、显示所有会员信息及退出系统等功能。
该系统从角色分析来看,可以分为: 会员和管理系统。 为了方便维护代码,一般一个角色一个程序文件。--(会员模块--10分,管理系统模块中,添加会员--30分、删除会员--10分、修改会员信息--10分 ,查询会员信息--10分、显示所有会员信息--10分及退出系统--10分,总共90分)

(2)系统设计。
项目要有主程序入口,习惯为main.py或者自定义py程序。--(10分)

按要求踩点给分(截图截不全的可酌情扣分)

其中具体要求为:

一:会员当中包含姓名、性别、手机号等基本信息。

二:管理系统包含系统功能各个的具体定义。主要实现添加删除修改查询显示所有信息等功能。(使用实例方法、静态方法)

显示功能菜单、用户输入功能序号,然后根据用户输入的功能序号执行不同的功能。

(1)添加功能:通过用户输入会员姓名、性别、手机号,将会员添加到系统中,打印添加此会员的信息添加成功,而且打印添加过的会员列表信息。(提示思路:用户输入姓名、性别、手机号,然后创建该会员对象,最后将该会员添加到列表中)

(2)删除功能:用户输入目标会员姓名,如果会员存在则删除会员。(提示思路:用户输入目标会员姓名,然后遍历会员数据列表,如果用户输入的会员姓名存在则删除,否则提示该会员不存在,查无此人)

(3)修改功能:用户输入目标会员姓名,如果会员存在则修改该会员信息。(提示思路:首先用户输入目标会员姓名;然后遍历会员姓名数据列表,如果用户输入的会员姓名存在则修改会员的姓名、性别、手机号,否则提示该会员不存在。)

(4)查询功能:用户输入目标会员姓名,如果会员存在则打印该会员信息。(提示思路:首先用户输入目标会员姓名,然后遍历会员数据列表,如果用户输入的会员姓名存在则打印会员信息,否则提示该会员不存在。)

(5)显示全部会员信息功能:显示所有会员信息,通过遍历会员数据列表,打印所有会员信息。

三:在main.py启动管理系统。(利用模块导入功能import)

代码展示

# member.pyclass Member:def __init__(self, name, gender, phone):self.name = nameself.gender = genderself.phone = phonedef __str__(self):return f"姓名:{self.name},性别:{self.gender},手机号:{self.phone}"
# system.py
from member import Memberclass MemberSystem:def __init__(self):self.members = []def add_member(self, name, gender, phone):member = Member(name, gender, phone)self.members.append(member)print("会员添加成功!")self.display_all_members()def delete_member(self, name):for member in self.members:if member.name == name:self.members.remove(member)print("会员删除成功!")returnprint("查无此人!")def modify_member(self, name, new_name, new_gender, new_phone):for member in self.members:if member.name == name:member.name = new_namemember.gender = new_gendermember.phone = new_phoneprint("会员信息修改成功!")returnprint("查无此人!")def search_member(self, name):for member in self.members:if member.name == name:print(member)returnprint("查无此人!")def display_all_members(self):print("所有会员信息:")for member in self.members:print(member)def exit_system(self):print("退出系统,谢谢使用!")exit()@staticmethoddef display_menu():print("===== 会员管理系统 =====")print("1. 添加会员")print("2. 删除会员")print("3. 修改会员信息")print("4. 查询会员信息")print("5. 显示所有会员信息")print("6. 退出系统")def run(self):while True:self.display_menu()choice = input("请输入功能序号:")if choice == '1':name = input("请输入会员姓名:")gender = input("请输入会员性别:")phone = input("请输入会员手机号:")self.add_member(name, gender, phone)elif choice == '2':name = input("请输入要删除的会员姓名:")self.delete_member(name)elif choice == '3':name = input("请输入要修改的会员姓名:")new_name = input("请输入新的会员姓名:")new_gender = input("请输入新的会员性别:")new_phone = input("请输入新的会员手机号:")self.modify_member(name, new_name, new_gender, new_phone)elif choice == '4':name = input("请输入要查询的会员姓名:")self.search_member(name)elif choice == '5':self.display_all_members()elif choice == '6':self.exit_system()else:print("输入有误,请重新输入!")
# main.py
from system import MemberSystemif __name__ == "__main__":system = MemberSystem()system.run()

部分解释

1. 会员类 Member (member.py)

  • Member 类包含了会员的基本信息:姓名、性别、手机号。
  • __init__ 方法用于初始化会员对象的属性。
  • __str__ 方法用于返回会员对象的字符串表示,方便打印会员信息

 2. 管理系统类 MemberSystem (system.py)

  • MemberSystem 类包含了会员管理系统的各项功能。
  • __init__ 方法用于初始化会员列表,存储所有会员对象。
  • add_member(self, name, gender, phone):添加会员信息到系统中,并打印添加成功信息。
  • delete_member(self, name):根据会员姓名删除会员信息。
  • modify_member(self, name, new_name, new_gender, new_phone):根据会员姓名修改会员信息。
  • search_member(self, name):根据会员姓名查询会员信息。
  • display_all_members(self):显示所有会员信息。
  • exit_system(self):退出系统。
  • display_menu(self):显示系统功能菜单。
  • run(self):启动系统,接受用户输入的功能序号,并执行相应功能

 3. 主程序入口 main.py

main.py 是整个程序的入口,通过导入 MemberSystem 类来启动会员管理系统

补充

`@staticmethod` 是 Python 中的一个装饰器(Decorator)。当一个方法被 `@staticmethod` 装饰时,它就成为了一个静态方法。静态方法不需要访问类的实例(即不需要 `self` 参数),因此可以在不创建类实例的情况下调用。

在上面的代码中,`display_menu` 方法被 `@staticmethod` 装饰,这意味着你可以通过类名直接调用该方法,而不需要创建 `MemberSystem` 类的实例。例如:

```python
MemberSystem.display_menu()
```

这样就能够显示会员管理系统的菜单,而不需要先创建 `MemberSystem` 对象。

可以通过添加以下代码对会员姓名,电话号码的输入进行限制

def add_member(self, name, gender, phone):# 验证手机号格式是否正确if not phone.isdigit() or len(phone) != 11:print("手机号格式不正确,请输入11位数字!")return# 验证姓名是否为空if not name:print("姓名不能为空!")return# 验证姓名是否已存在for member in self.members:if member.name == name:print("姓名已存在,请重新输入!")return# 添加会员member = Member(name, gender, phone)self.members.append(member)print("会员添加成功!")self.display_all_members()

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

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

相关文章

【RealSense】Ubuntu20.04 安装 Intel RealSense ROS 并使用 D435i 测试

【RealSense】Ubuntu20.04 安装 Intel RealSense ROS 并使用 D435i 测试 1 本机环境2 安装流程3 存在的 bug3.1 Resource not found: rgbd_launch 1 本机环境 Ubuntu20.04ROS Noetic 2 安装流程 参考文档: Link 安装 Intel RealSense™ SDK 2.0,参考上一篇文章: L…

Go语言map、slice、channel底层实现(go面试)

slice 切片是一个引用类型,其底层实现是一个结构体,包含以下字段: ptr:一个指向底层数组的指针,指针指向数组的第一个元素。 len:切片当前包含的元素数量。 cap:切片的容量,即底层…

『研学倒计时』日本《极致产品力》顾问式研学再出发!

信心行动》共建中国食品行业风向标 2024年,信心比黄金还重要! 深度学习日本就是最佳路线。过去五年,许多中国企业开始研究与借鉴日本,元气森林、东方树叶、奈雪的茶、RIO鸡尾酒、蒟蒻果冻、丸美美妆、花印、名创优品.….从日本“失去的20年”中吸收逆势增长经验。 一、研学背…

快速列表quicklist

目录 为什么使用快速列表quicklist 对比双向链表 对比压缩列表ziplist quicklist结构 节点结构quicklistNode quicklist 管理ziplist信息的结构quicklistEntry 迭代器结构quicklistIter quicklist的API 1.创建快速列表 2.创建快速列表节点 3.头插quicklistPushHead …

【Python】控制台进度条

在Python开发中,有时需要向用户展示一个任务的进度,以提供更好的交互体验。下面我将展示如何使用Python来创建一个简单的控制台进度条。 效果: 代码: import time import sys def print_progress_bar(completed, total, length…

STM32 定时器外部时钟与循迹模块

1、上篇文章介绍了定时器使用内部时钟信号计数,实现计数、更新中断等功能。 2、可不可以利用定时器对来自外部的信号进行计数?也就是对输入io的信号计数? 3、可以 1、定时器外部时钟 STM32的通用定时器和高级定时器都将外部信号引入…

【Algorithms 4】算法(第4版)学习笔记 24 - 5.5 数据压缩

文章目录 前言参考目录学习笔记1:介绍2:游程编码 run-length encoding2.1:介绍2.2:Java 实现3:霍夫曼压缩 Huffman compression3.1:变长前缀码 variable-length codes3.1.1:介绍3.1.2&#xff1…

Nginx 基础应用实战 01 课程大纲与安装部署

Nginx 基础应用实战 01 目录 Nginx基础 版本区别与安装基础知识 Nginx安装部署http协议基础域名与dns 核心功能与应用场景 网站静态资源访问虚拟主机反向代理服务负载均衡rewrite软防火墙Tengine的扩展模块 实战:构建一个可供大家访问的静态网站 高级使用 核心配置…

【IC前端虚拟项目】验证环境方案思路和文档组织

【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客 对于mvu的验证环境,从功能角度就可以分析出需要搭建哪些部分,再看一下mvu的周围环境哈: 很明显验证环境必然要包括几个部分: 1.模拟idu发送指令; 2.模拟ram/ddr读写数据; 3.rm模拟mvu的行为; …

无缝集成:使用Spring Boot和Vue实现头像上传与回显功能

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

查询category的id存在于项目表中category_id_list的json array字段中

表category 表project 查询category的id存在于项目表中category_id_list的json array字段中。

Cmake学习笔记3

视频学习地址08-重命名和安装共享库_哔哩哔哩_bilibili 1、同时创建动态连接和静态连接库 SET_TARGET_PROPERTIES 这条指令可以用来设置输出的名称,对于动态库,还可以用来指定动态库版本和API版本 SET(LIBHELLO_SRC hello.cpp)ADD_LIBRARY(hello_sta…

4.11Qt

完善网络聊天室客户端实现 工程文件 QT core gui network 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpSocket> #include<QMessageBox>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEcl…

前端三剑客 —— JavaScript (第九节)

目录 内容回顾&#xff1a; 1.事件解除 2. Ajax jQuery选择器 回顾CSS选择器 CSS选择 1.基本选择器 2.包含选择器 3.伪类选择器 4.伪元素选择器 5.属性选择器 jQuery 库 jQuery 动画 系统动画 自定义动画 常见API操作 内容回顾&#xff1a; 1.事件解除 如果是使…

头歌-机器学习 第9次实验 随机森林

第1关&#xff1a;Bagging 任务描述 本关任务&#xff1a;补充 python 代码&#xff0c;完成 BaggingClassifier 类中的 fit 和 predict 函数。请不要修改 Begin-End 段之外的代码。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 什么是 Bagging&#xf…

李廉洋;4.11#黄金,WTI原油#行情走势分析策略。

美国银行预计&#xff0c;在今天召开的欧洲央行会议上不会有重大的政策变化&#xff0c;但欧洲央行正逐渐接近开始降息&#xff0c;尽管它采取的是一种谨慎的、依赖数据的方式。虽然欧洲央行对降息轨迹的信心不断增强&#xff0c;但降息的具体速度和幅度仍未公布&#xff0c;而…

QT系列教程(2) 创建项目和编译

新建Qt Widgets应用 我们启动qt creator 创建项目&#xff0c;选择Qt Widgets应用 接下来选择项目目录&#xff0c;项目名字就叫helloworld 构建系统选择qmake 我们创建一个名字为HelloDialog的类&#xff0c;继承于QDialog 构建套件选择你们安装的就行了&#xff0c;我这里选…

【LeetCode刷题记录】560. 和为 K 的子数组

560 和为 K 的子数组 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,1], k 2 输出&#xff1a;2 示例 2&#xff1a; 输入&#xf…

负载均衡原理和负载均衡算法代码案例

由于在这个文本环境中无法直接绘制图形&#xff0c;我将尽量使用文字描述来详细解释负载均衡原理和算法&#xff0c;并提供一个简单的代码案例。但请注意&#xff0c;真正理解负载均衡和算法的工作最好通过查看图形化表示和可视化工具。 负载均衡原理 负载均衡是通过在网络架…

【leetcode面试经典150题】22. Z 字形变换(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…