编写一个通信录管理系统(具有增加、修改、删除、查询等功能)。

编写一个通信录管理系统(具有增加、修改、删除、查询等功能)。

以下是一个使用 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):删除联系人,参数为一个二维数组,根据用户输入删除指定编号