1、目标
综合应用已经学习过的知识点:变量、流程控制、函数、模块
2、开发
名片管理系统
3、系统需求
3.1 程序启动,显示名片管理系统欢迎界面,并显示功能菜单
3.2 用户用数字选择不同的功能
3.3 根据功能选择,执行不同的功能
3.4 用户名片需要记录用户的姓名、电话、qq、邮件
3.5 如果查询到指定的名片,用户可以选择修改或则删除名片
4、框架搭建
4.1 目标
搭建名片管理系统框架结构
1)准备文件,确定文件名,保证能够在需要的位置编写代码
2)编写主运行循环,实现基本的用户输入和判断
4.2 文件准备
1)新建card_main.py,保存主程序功能代码
程序的入口
每次启动名片管理系统都通过main这个文件启动
2)新建card_tools.py保存所有名片功能函数
将对名片的新增、查询、修改、删除等功能封装在不同的函数中
4.3 编写主运行循环
5、保存名片数据的结构
程序就是用来处理数据的,而变量就是用来存储数据的
使用字典记录每一张名片的详细信息
使用列表统一记录所有的名片字典
6、涉及的应用
1) shebang,即在程序的开头添加#! /usr/bin/python3后修改文件可执行权限chmod +x demo.py,即可直接运行文件./demo.py,而不需要通过python3 demo.py来执行
2) 提取程序为函数,简化代码结构
7、card_main.py
1 #! /usr/bin/python3
2
3 import card_tools
4
5 while True:
6
7 # 显示功能菜单
8 card_tools.show_menu()
9
10 # 输入动作,并显示动作
11 action_str = input('请选择希望执行的操作:')
12 print("您选择的操作是:[%s]" % action_str)
13
14
15 # 1,2,3针对名片的操作
16 if action_str in ['1','2','3']:
17 # 新增名片
18 if action_str=='1':
19 card_tools.new_card()
20 # 显示全部
21 elif action_str=='2':
22 card_tools.show_all()
23 # 查询名片
24 elif action_str=='3':
25 card_tools.search_card()
26 # 0 退出系统
27 elif action_str=='0':
28 print('-'*50)
29 print('欢迎再次使用【名片管理系统】')
30 print('-'*50)
31 break;
32 else:
33 print('您输入的不正确,请重新选择')
8、card_tools.py
1 # 定义一个列表变量,存储名片字典
2 card_list = []
3
4
5 # 名片欢迎界面
6 def show_menu():
7 print('\t')
8 print('*'*50)
9 print('欢迎使用【名片管理系统】V1.0')
10 print()
11 print('1.新建名片')
12 print('2.显示全部')
13 print('3.查询名片')
14 print()
15 print('0.退出系统')
16 print('*'*50)
17
18 # 新增名片
19 def new_card():
20 """新增名片"""
21 print('-'*50)
22 print('新增名片')
23 print('-'*50)
24
25 # 1提示用户输入名片的详细信息
26 name_str= input('请输入姓名:')
27 phone_str = input('请输入电话号码:')
28 qq_str = input('请输入qq号码:')
29 email_str = input('请输入邮箱号码:')
30 # 2使用用户输入的信息建立一个名片字典
31 card_dict = {'name':name_str,
32 'phone':phone_str,
33 'qq':qq_str,
34 'email':email_str}
35 # 3将名片字典添加到列表中
36 card_list.append(card_dict)
37 # 4提示用户添加成功
38 print('-'*50)
39 print('添加%s的名片成功' % name_str)
40
41
42 # 显示全部
43 def show_all():
44 """显示全部"""
45 print('-'*50)
46 print('显示全部')
47 print('-'*50)
48
49 if card_list:
50
51 # 打印表头
52 for name in ['姓名','电话','QQ','邮箱']:
53 print(name,end='\t\t')
54 # 打印分隔线
55 print('\t')
56 print('='*50)
57
58 # 遍历名片列表,依次输出信息
59 for card_dict in card_list:
60 print('%s\t\t%s\t\t%s\t\t%s' % (card_dict['name'],
61 card_dict['phone'],
62 card_dict['qq'],
63 card_dict['email']))
64 else:
65 print('未存储任何名片,请进行添加')
66
67 # 查询名片
68 def search_card():
69 """查询名片"""
70 print('-'*50)
71 print('查询名片')
72 print('-'*50)
73
74 # 1提示用户输入要搜索的姓名
75 find_name_str = input('请输入要搜索的姓名:')
76
77 # 2遍历名片列表,查询要搜索的姓名,如果没有找到,需要提示用户
78 for card_dict in card_list:
79 if card_dict['name']==find_name_str:
80 print('找到了')
81 print('='*50)
82 # 打印表头
83 for name in ['姓名','电话','QQ','邮箱']:
84 print(name,end='\t\t')
85 # 打印分隔线
86 print('\t')
87 print('='*50)
88 print('%s\t\t%s\t\t%s\t\t%s' % (card_dict['name'],
89 card_dict['phone'],
90 card_dict['qq'],
91 card_dict['email']))
92
93 # 针对找到的名片进行修改和删除的操作
94 deal_card(card_dict)
95 break
96 else:
97 print('抱歉,没有找到%s' % find_name_str)
98
99 def deal_card(find_dict):
100 """处理名片"""
101 action_str = input("请选择要执行的操作:[1] 修改 [2] 删除 [0] 返回")
102 if action_str=='1':
103 find_dict['name']=input_card_info(find_dict['name'],
104 '请输入要修改的姓名:')
105 find_dict['phone']=input_card_info(find_dict['phone'],
106 '请输入要修改的电话:')
107 find_dict['qq']=input_card_info(find_dict['qq'],
108 '请输入要修改的qq:')
109 find_dict['email']=input_card_info(find_dict['email'],
110 '请输入要修改的邮箱:')
111 print('修改名片成功')
112 elif action_str=='2':
113 card_list.remove(find_dict)
114 print('删除名片成功')
115
116
117 def input_card_info(dict_value,tip_message):
118 """如果用户输入了内容,返回输入值,否则返回默认值"""
119 # 1提示用户输入内容
120 result_str = input(tip_message)
121 # 2针对用户的输入进行判断,如果用户输入了内容,直接返回结果
122 if len(result_str)>0:
123 return result_str
124 # 3如果用户没有输入内容,返回‘字典中原有的值’
125 else:
126 return dict_value