初识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 需要完成的 ...
随机推荐
- 1. 安装虚拟机,Hadoop和Hive
由于想自学下Hive,所以前段时间在个人电脑上安装了虚拟机,并安装上Hadoop和Hive.接下我就分享下我如何安装Hive的.步骤如下: 安装虚拟机 安装Hadoop 安装Java 安装Hive 我 ...
- MyBatis 中 @Param 注解的四种使用场景
https://juejin.im/post/6844903894997270536 第一种:方法有多个参数,需要 @Param 注解 第二种:方法参数要取别名,需要 @Param 注解 第三种:XM ...
- linux中ugo权限管理(chmod/chown)
查看ugo权限: ll [root@localhost test]# ll total 12 -rwxr-xr-x 2 root root 4 Oct 3 11:44 a lrwxrwxrwx 1 ...
- linux的别名(alias/unalias)
linux中有别名时先找的别名后找命令文件 临时创建是直接用alias. [root@localhost ~]# alias ls=pwd [root@localhost ~]# ls /root 其 ...
- 丢了ceph.mon.keying解决办法
在linux操作系统下,可能因为一些很小的误操作,都会造成非常重要的文件的丢失,而文件的备份并不是每时每刻都会注意到,一般是等到文件丢失了才会去想办法,这里讲下ceph.mon.keyring丢失的解 ...
- loadrunner 生成随机参数 Radom相关
我也是刚开始进入测试行业,不过比较幸运的我之前做过开发,所以对代码比较熟悉,对loadrunner没有进行过系统的学习,也是通过自己的摸索慢慢的积累知识. 今天遇到项目中要我做一个压力测试,其中一些参 ...
- Linux(centos6.8)配置Mysql环境
1.下载mysql安装包 https://downloads.mysql.com/archives/community/ 2.查询mysql信息 [1]查询mysql是否已经安装 [root@plut ...
- 你了解JWT吗?
1. 什么是JWT JWT简称 JSON Web Token,也就是通过 JSON 形式作为 Web 应用中的令牌,用于在各方之间安全地将信息作为 JSON 对象传输.在数据传输过程中还可以完成数据加 ...
- 早期javac编译器优化
学习<深入了解Java虚拟机>有一段时间了,大概理解了Java从源代码编译到执行出结果的过程,也能明确的知道Java是半解释性语言.在执行源代码时,先通过Javac编译器对源代码进行词法分 ...
- linux执行cmd之一
执行方法: 1.手动执行 2.程序执行 涉及到的权限问题: 1.应用程序的权限 2.被执行文件的权限