编写一个通信录管理系统(具有增加、修改、删除、查询等功能)。
以下是一个使用 Python 编写的通讯录管理系统
import os.path
import csv
# 通讯录文件路径
data_file_path = 'contacts.csv'
# 加载通讯录数据
def load_data():
data = []
if os.path.isfile(data_file_path):
with open(data_file_path, newline='', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
data.append(row)
return data
# 保存通讯录数据
def save_data(data):
with open(data_file_path, 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerows(data)
# 显示通讯录列表
def show_list(data):
if len(data) > 0:
print('ID\t姓名\t电话号码')
for idx, item in enumerate(data):
print(f'{idx+1}\t{item[0]}\t{item[1]}')
else:
print('暂无记录')
# 增加联系人
def add_contact(data):
name = input('请输入姓名:')
phone = input('请输入电话号码:')
data.append([name, phone])
save_data(data)
print('联系人添加成功!')
# 修改联系人
def update_contact(data):
id = int(input('请输入要修改的联系人编号:'))
if id > 0 and id <= len(data):
name = input('请输入修改后的姓名(回车跳过):')
phone = input('请输入修改后的电话号码(回车跳过):')
if name != '':
data[id-1][0] = name
if phone != '':
data[id-1][1] = phone
save_data(data)
print('联系人修改成功!')
else:
print('无效的联系人编号')
# 删除联系人
def delete_contact(data):
id = int(input('请输入要删除的联系人编号:'))
if id > 0 and id <= len(data):
del data[id-1]
save_data(data)
print('联系人删除成功!')
else:
print('无效的联系人编号')
# 查询联系人
def search_contact(data):
keyword = input('请输入要查询的关键字:')
result = []
for item in data:
if keyword in item[0] or keyword in item[1]:
result.append(item)
if len(result) == 0:
print('未找到匹配记录')
else:
show_list(result)
# 程序主循环
def main_loop():
data = load_data()
while True:
print('-' * 30)
print('欢迎使用通讯录管理系统')
print('1. 显示通讯录列表')
print('2. 增加联系人')
print('3. 修改联系人')
print('4. 删除联系人')
print('5. 查询联系人')
print('0. 退出系统')
choice = input('请选择操作编号:')
if choice == '1':
show_list(data)
elif choice == '2':
add_contact(data)
elif choice == '3':
update_contact(data)
elif choice == '4':
delete_contact(data)
elif choice == '5':
search_contact(data)
elif choice == '0':
break
else:
print('无效的操作编号')
print('感谢使用通讯录管理系统!')
# 启动程序
if __name__ == '__main__':
main_loop()
在上述代码中,我们利用了 Python 内置的 csv 模块读取和保存通讯录数据。首先,我们定义了如下几个函数:
load_data():加载通讯录数据,返回一个二维数组。
save_data(data):保存通讯录数据,参数为一个二维数组。
show_list(data):显示通讯录列表,参数为一个二维数组,输出格式为表格形式。
add_contact(data):增加联系人,参数为一个二维数组,根据用户输入创建新的一条数据并添加到数据数组中,最后保存数据到文件中。
update_contact(data):修改联系人,参数为一个二维数组,根据用户输入更新指定编号的数据,并保存数据到文件中。
delete_contact(data):删除联系人,参数为一个二维数组,根据用户输入删除指定编号
import joblib
保存:joblib.dump(rf, 'test.pkl')
加载:estimator = joblib.load('test.pkl')
注:文件格式pkl