初识python-名片管理系统v1.0
一、项目说明
本项目分享一个简单的名片管理系统,主要是通过实现简单的功能,来学习python基础。
具体功能有:新建名片、显示全部名片、查询、修改、删除名片
通过对名片的增删改查,来快速看懂python语法吧!
二、功能梳理
用户功能抽象如下,见名知其意,这里就不多说啦~

主要包含两个文件:cardMain.py和cardTool.py。cardMain.py调用cardTool.py中的函数,
功能虽然简单,但还是分两个文件写,这样代码的可读性和可维护性高!

(图中涉及的参数,后续看代码)
三、代码
1、cardMain.py
# 导入自定义工具包cardTool
import cardTool while True:
# 使用工具包中的工具,使用方法:模块名.函数名()
cardTool.show_menu() # 获取用户的输入选择
op = input("请输入您的选择:") # 根据用户的输入进行调用不同函数
if op in ["1", "2", "3"]:
if op == "1":
print("用户指令1:新建名片")
cardTool.create_card()
elif op == "2":
print("用户指令2:显示全部")
cardTool.show_all_card()
else:
print("用户指令3:查询名片")
cardTool.search_card()
elif op == "0":
print("即将退出!")
break
else:
print(op, "为非法指令,请重新输入!")
print("")
2、cardTool.py
import re
# 全局变量card_list:列表嵌套字典,有默认五条原始“死”数据
card_list = [
{'name': '张三', 'phone': '12345678901', 'QQ': '10000001', 'email': 'zhangsan@qq.com', },
{'name': '张四', 'phone': '12345678902', 'QQ': '10000002', 'email': 'zhangsi@qq.com', },
{'name': '李四', 'phone': '12345678903', 'QQ': '10000003', 'email': 'lisi@qq.com', },
{'name': '李五', 'phone': '12345678904', 'QQ': '10000004', 'email': 'liwu@qq.com', },
{'name': '王五', 'phone': '12345678905', 'QQ': '10000005', 'email': 'wangwu@qq.com', },
] # 1、显示菜单函数
def show_menu():
"""
当前函数为显示菜单的函数
:return:
"""
print("*" * 50)
print("欢迎使用【名片管理系统】 v1.0")
print("")
print("1. 新建名片")
print("2. 显示全部")
print("3. 查询名片")
print("")
print("0. 退出系统")
print("*" * 50) # 2、新建名片函数
def create_card():
"""
这里是往card_list中插入数据
:return:
"""
print("调用cardTool中的:新建名片")
name = input("请输入姓名:")
phone = input("请输入电话号码:")
qq = input("请输入QQ:")
email = input("请输入email:") temp_dict = {
'name': name,
'phone': phone,
'QQ': qq,
'email': email
} card_list.append(temp_dict)
print(card_list)
pass # pass是占位符,起到完善语法结构的作用,不输出任何内容,但也占用资源 # 3、显示全部名片函数
def show_all_card():
"""
这里展示card_list中的所有数据
:return:
"""
if len(card_list) == 0:
print("当前不存在数据,请先添加数据")
return
print("-" * 50)
print("姓名".ljust(5), "电话".ljust(12), "QQ".ljust(12), "email", sep="\t\t")
for item in card_list:
# todo:排版不好兼容性较差
print(item.get('name').ljust(5), item.get('phone').ljust(12),
item.get('QQ').ljust(12), item.get('email'), sep="\t\t")
print("-" * 50)
pass # pass是占位符,起到完善语法结构的作用,不输出任何内容 # 4、查询名片函数
def search_card():
"""
这里支持简单的姓名模糊匹配查询的操作
:return:
"""
find_name = input("请输入要查询的姓名:")
# 定义正则表达式的匹配模式
pattern = '.*' + find_name + '.*'
temp_list = []
for item in card_list:
# 使用re,需要先导入re包:import re
# 这里根据正则表达式pattern,去匹配用户查询的姓名
obj = re.findall(pattern, item.get('name'))
# 注意:返回的obj的数据类型是字典,而temp_list定义的是列表
# 在将obj插入到temp_list时,应用append方法,而不能用extend方法
if len(obj) > 0:
temp_list.append(item)
if temp_list.__len__() == 0:
print('抱歉,未查询到相关数据,')
else:
print("-" * 50)
print("姓名".ljust(5), "电话".ljust(12), "QQ".ljust(12), "email", sep="\t\t")
for temp_item in temp_list:
print(temp_item.get('name').ljust(5), temp_item.get('phone').ljust(12),
temp_item.get('QQ').ljust(12), temp_item.get('email'), sep="\t\t")
print("-" * 50)
# 当查询结果只有一条时,调用处理名片函数deal_card()
if temp_list.__len__() == 1:
deal_card(temp_list[0])
pass # pass是占位符,起到完善语法结构的作用,不输出任何内容 # 5、处理名片函数,传入的temp_list,是需要修改的数据
def deal_card(temp_list):
"""
这里做简单的修改和删除名片的操作
:return:
"""
while True:
op = input("[1.修改 2.删除 3.返回上一级] 请输入要执行的操作序号:")
if op not in ["1", "2", "3"]:
print("非法序号,请重新输入!")
else:
if op == '1':
print("修改【" + temp_list.get('name') + '】中:')
temp_list['name'] = input_diy(temp_list.get('name'), "请输入修改后的姓名[不修改直接回车]:")
temp_list['phone'] = input_diy(temp_list.get('phone'), "请输入修改后的电话[不修改直接回车]:")
temp_list['QQ'] = input_diy(temp_list.get('QQ'), "请输入修改后的QQ[不修改直接回车]:")
temp_list['email'] = input_diy(temp_list.get('email'), "请输入修改后的email[不修改直接回车]:")
if op == '2':
print("删除【"+temp_list.get('name')+'】成功!')
card_list.remove(temp_list) # 这里删除的是列表card_list中的引用
print(temp_list)
break
if op == '3':
break # 自定义input功能,default_value是默认值,msg是提示信息,提示信息是不同的
def input_diy(default_value, msg):
modify_value = input(msg)
# 当用户直接输入回车时,modify_value的长度为0,这时应返回默认值default_value
if len(modify_value) > 0:
return modify_value
else:
return default_value
四、截图

更多截图,我就不贴了,复制代码去pycharm里运行就可以玩了
若有问题或有指教的地方可以评论或私信我哟~
初识python-名片管理系统v1.0的更多相关文章
- AEAI EM费用管理系统V1.0.2版本开源发布
本次开源发布是AEAI EM费用管理系统 V1.0.2版,该版本是此产品的首个版本,产品现已开源并上传至开源社区http://www.oschina.net/p/aeai-em. 产品说明: AEAI ...
- <每日一题>题目7:简单的学生管理系统V1.0
''' # 学生管理系统v1.0 # 添加学生的信息 # 删除学生的信息 # 修改学生的信息 # 查看学生的信息 #遍历学生的信息 #退出系统 ''' import json #1 显示操作功能 de ...
- 名片管理系统v1.1(main)
# version: 1.1# author: Mark import cords_tools while True: # 显示界面 cords_tools.show_cords() cords ...
- python名片管理系统V2
主程序: #! /usr/bin env python3 # -*- coding: utf-8 -*- # 项目三: # 1.要求:编写一个名片管理系统,功能如下: # 用户输入相对应的指令,实现对 ...
- python名片管理系统
1.代码: (1)主程序 #!/usr/bin/env python # -*- coding: UTF-8 -*- import cards_tools # 无限循环,由用户主动决定什么时候退出循环 ...
- 名片管理系统v1.1(tools)
cords_list = []def show_cords(): print("*"*80) print("欢迎使用[名片管理系统]v.1.1") print( ...
- 学生信息管理系统v1.0
昨天一个教师朋友找到我,告诉我现在学期末他工作比较忙.需要统计处理很多学生信息,想让我帮他做一个管理系统.实现的功能就是把WPS表格转化成Word文档,将每一个学生的信息都能够分开,并且要根据名字找到 ...
- 考勤管理系统V1.0.3
1.0.3:添加了缺勤名单统计.导出功能: 原本的设想是直接上手Node.js 连接MySQL,写一个能增删改查数据的功能,很遗憾小林属实弟弟,但这个“系统”我会一点点完善的,这一次的代码比之前好看了 ...
- 面向对象案例 - 学生信息管理系统V1.0
学生管理系统项目[所有知识点整合] 1. 学生管理系统项目 尝试完成以下功能 实体类: 学生类: id, 姓名,年龄,性别,成绩 需要使用数组保存学生信息 Student[] allStu 需要完成的 ...
随机推荐
- Java中的日期
Date类(java.util.Date) 时间原点:1970年1月1日 8点0分0秒. 创建日期对象: package blog; import java.util.Date; public cla ...
- linux c语言 哲学家进餐---信号量PV方法一
1.实验原理 由Dijkstra提出并解决的哲学家进餐问题(The Dinning Philosophers Problem)是典型的同步问题.该问题是描述有五个哲学家共用一张圆桌,分别坐在周围的 ...
- 自定义圆角背景的textview,抛弃shape
自定义一个圆角背景的TextView,解放双手,不用再写shape了. 1.values目录新建attrs.xml. <?xml version="1.0" encoding ...
- uniapp 证书 打包上线GooglePlay app自动升级
uniapp Android证书 打包上线GooglePlay app自动升级 1.Android证书申请 要安装jdk并配置环境变量. keytool -genkey -alias android ...
- 剑指offer刷题(Tree)
开篇 二刷剑指offer了,本来用Tyora记的笔记,发现字数到四万了就变得好卡o(╥﹏╥)o,刚好开始写博客,就转过来吧,记下来子自己看.不废话,开刷... JZ26. 树的子结构 输入两棵二叉树A ...
- Java中的Socket用法
转发链接:https://www.cnblogs.com/zhanglei93/p/6217384.html (1)Java中的Socket用法 Java中的Socket分为普通的Socket和Nio ...
- iczer的vue-antd-admin项目,逐步平滑迁移mock的url
这个需求,在实战中蛮有用的.但没有看到网上太多文档,就自己hack了一个思路.供指正. 需求 在前后端分离的项目开发中,前后端的开发步骤和进度是不一致的.有时,前端为了不等待后端的API开发进度,会自 ...
- Vegas技巧分享,如何实现5.1立体声道
Vegas Pro 15除了有各种好用的功能之外,还可以使用此软件制作5.1立体声道的音乐.如果你家里有多个音箱,那么你再也不用担心找不到5.1声道的音乐了,Vegas完全可以帮你实现. 打开简体中文 ...
- distinct关键字
对于distinct关键字,distinct关键字应用于所有列而不仅是前置它的列,如果给出多个列,将会比较两个列. 这是完整表, 首先是select distinct username from us ...
- 自学linux——8.firewall-cmd的命令使用
firewall-cmd使用方法 1.firewall-cmd的含义 firewall-cmd 是 firewalld的字符界面管理工具,firewalld是centos7之后版本的一大特性, 最大的 ...