Python基础–名片管理系统
代码解析
代码分为两个文件,main.py和tools.py,main是主干,tools是定义的函数,进行导入
tools 是自己定义的一个模块,里面写了较多的函数
为了减少主代码的臃肿和方便后期添加功能
因为是直接使用makdown书写的博文,所以有可能代码在注释的地方会出现缩进上的问题,可以稍微改下,麻烦了
代码实现功能
- 根据用户的输入选择不同的功能
- 记录用户的姓名和年龄
- 查询名片的时候可以删除或者修改对应信息
步骤
- 主程序
- 添加功能模块
- 将功能模块导入主程序
- 调试bug
main文件代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23import tools
# 导入tools模块文件
while True:
tools.max_print(1, "*", 20)
tools.prin_fun()
tools.max_print(1, "*", 20)
cz_num=input("请选择执行的操作:")
if cz_num == "1":
tools.add_card()
elif cz_num == "2":
print("您选择的功能:2")
print("功能: 显示全部")
tools.show_alllist()
elif cz_num == "3":
print("您选择的功能:3")
print("功能: 查询名片")
tools.search_name()
elif cz_num == "0":
print("您选择的功能:0")
print("欢迎再次使用[姓名管理系统]")
break
else:
print("输入有误,请重新输入")tools文件代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106# 定义全局变量,用于存储姓名信息的列表
card_info = []
# `print_line()`和`max_print()`函数是之前随便写的一个函数,刚好拿来用,功能是输出指定行数的特殊符号
def print_line(char, w_lenth):
"""单行打印,允许输入指定行数和字符"""
print(char * w_lenth)
return w_lenth, char
def max_print(line_count, char, w_lenth):
i = 1
while i <= line_count:
# 进行函数的嵌套,直接调用对应的函数
print_line(char, w_lenth)
i += 1
def prin_fun():
"""进入程序的显示界面"""
print("欢迎使用[姓名管理系统]")
print()
print("1.新建名片")
print("2.显示全部")
print("3.查询名片")
print()
print("0.退出系统")
def add_card():
"""新建名片"""
print("您选择的功能:1")
print("功能: 新建名片")
name_str = input("请输入姓名:")
# 定义姓名的字符串进行传参判断是否姓名存在
for card_dict in card_info:
if name_str == card_dict["name"]:
print("姓名存在,请重新输入")
break
age_str = input("请输入年龄:")
card_dict = {"name": name_str, "age": age_str}
card_info.append(card_dict)
print(card_info)
def show_alllist():
"""显示名片所有信息"""
print("您选择的功能:2")
print("功能: 显示全部")
print("显示所有信息")
# 判断列表是否有数据,无数据进行返回无信息
if len(card_info) == 0:
print("本表内无信息,请您添加信息")
return
# 显示表头函数
show_table_head()
# 变量整个列表,逐个输出当前程序存储的所有信息
for i in card_info:
print("%s\t\t%s" % (i["name"], i["age"]))
print("-" * 30)
def show_table_head():
"""显示表头"""
print("姓名\t\t年龄")
print("-" * 30)
def search_name():
"""查询名片功能"""
print("您选择的功能:3")
print("功能: 查询名片")
print("查询名片")
sea_name = input("请输入查询的名字")
# 根据上面传参进行遍历比对,如果有信息就输出对应信息,否则返回无此姓名
for i in card_info:
if sea_name == i["name"]:
show_table_head()
print("%s\t\t%s" % (i["name"], i["age"]))
print("-" * 30)
fix_card(i)
break
else:
print("未找到信息%s" % sea_name)
def fix_card(card):
"""查询到姓名之后可以修改的功能"""
while True:
cmd_num = input("请输入操作:1.修改/2.删除/0.退出")
if cmd_num == "1":
print(card)
card["name"] = input("请输入您更新的名字")
card["age"] = input("请输入您更新的年龄")
print(card)
print("更新成功")
break
elif cmd_num == "2":
card_info.remove(card)
print("删除成功")
elif cmd_num == "0":
print("您选择退出")
break
else:
print("输入错误,请重新输入")