一、需求
用python写一个名片管理系统,有新增、查找、查看、退出等功能 现在用函数封装 新增了删除和修改功能
二、实战
先定义一个空字典,用于存储名片数据,再把菜单放进去
print('欢迎使用【名片管理系统】')
print('')
print('1. 新建名片')
print('2. 显示全部')
print('3. 查询名片')
print('0. 退出系统')
id_file = {
}
i = 0
running = True
def input_number():
running = True
while running:
id_card1 = input('请输入你的操作')
try:
id_card = float(id_card1)
return id_card
except ValueError:
print("输入错误,请重新输入!")
现在 通过while对input输入的字符串进行判定,当非数字类型时候,重新输入操作
然后再通过循环,当输入1进行新增,
i = 0
# 新增人数
def add_card():
global i
i += 1
print('新增名片信息')
list(id_file)
name = input("请输入姓名:")
address = input("请输入地址:")
id_num = input("请输入身份证号:")
qq_num = input("请输入QQ号:")
id_file[i] = {
"姓名": name,
"地址": address,
"身份证号": id_num,
"QQ号": qq_num
}
定义的id_file空字典 i自增循环为key值,当输入1的时候通过input为字典添加value。
然后就是2 查询,这个比较简单,可以通过print直接读取id_file就行
elif id_card == 2:
print('##########################')
print('查询成功', id_file)
第三步 就是 查找。
先新增一个参数,通过range 字典的key值,去匹配name值,当匹配上的时候,给finded赋值为真,输出结果,返回跳出当前循环。检索不到就
def find_card():
global i
name1 = input("请输入要查询的联系人姓名")
finded = False
# range 是前闭后开 [)
for j in range(1, i + 1):
if name1 == id_file[j]["姓名"]:
finded = True
print('##########################')
print('你检索的用户是:' + str(id_file[j]))
break;
if finded == False:
print('##########################')
print('未检索到该用户')
删除和修改
#修改 或 删除
if finded == True:
operation1 = int(input('1:修改,2:删除,3:返回上一级'))
for operation in range(operation1,operation1+1):
if operation == 1:
print('operation', operation)
id_file[j]['姓名'] = input('请输入新的姓名')
id_file[j]['地址'] = input('请输入新的地址')
id_file[j]['身份证号码'] = input('请输入新的身份证号码')
id_file[j]['QQ号'] = input('请输入新的QQ号')
print('修改成功', id_file[j])
elif operation == 2:
i = i - 1
print(i)
del id_file[j]
print(i)
print('删除成功')
elif operation == 3:
finded == False
else:
print('请重新输入')
第四步就是 退出
elif id_card ==0:
print('谢谢使用')
running = False
else:
print('请重新输入')
三、完整代码
逻辑模块
from def_test import input_number
import def_test
from def_test import id_file
running2 = True
print('欢迎使用【名片管理系统】V1.0')
print('')
print('1. 新建名片')
print('2. 显示全部')
print('3. 查询名片')
print('0. 退出系统')
while running2 :
#判断input输入是否为数字
id_card = input_number()
print("你输入的数字是: ", id_card)
if id_card == 1:
def_test.add_card()
elif id_card == 2:
print('查询成功:',id_file)
elif id_card == 3:
def_test.find_card()
elif id_card == 0:
print('谢谢使用')
running2 = False
else:
print('请重新输入')
功能模块def_test.py
id_file={}
# 对操作输入做限制
def input_number():
running = True
while running:
id_card1 = input('请输入你的操作')
try:
id_card = float(id_card1)
return id_card
except ValueError:
print("输入错误,请重新输入!")
i = 0
# 新增人数
def add_card():
global i
i += 1
print('新增名片信息')
list(id_file)
name = input("请输入姓名:")
address = input("请输入地址:")
id_num = input("请输入身份证号:")
qq_num = input("请输入QQ号:")
id_file[i] = {
"姓名": name,
"地址": address,
"身份证号": id_num,
"QQ号": qq_num
}
# 查找
def find_card():
global i
name1 = input("请输入要查询的联系人姓名")
finded = False
# range 是前闭后开 [)
for j in range(1, i + 1):
if name1 == id_file[j]["姓名"]:
finded = True
print('##########################')
print('你检索的用户是:' + str(id_file[j]))
#修改 或 删除
if finded == True:
operation1 = int(input('1:修改,2:删除,3:返回上一级'))
for operation in range(operation1,operation1+1):
if operation == 1:
print('operation', operation)
id_file[j]['姓名'] = input('请输入新的姓名')
id_file[j]['地址'] = input('请输入新的地址')
id_file[j]['身份证号码'] = input('请输入新的身份证号码')
id_file[j]['QQ号'] = input('请输入新的QQ号')
print('修改成功', id_file[j])
elif operation == 2:
i = i - 1
print(i)
print('operation:',operation)
list(id_file)
print(id_file)
del id_file[j]
print(i)
print('删除成功')
elif operation == 3:
finded == False
else:
print('请重新输入')
break;
if finded == False:
print('##########################')
print('未检索到该用户')