使用Python编写个人通讯录程序。要求能够查询通讯录清单,对通讯录中的记录实现增加、删除、修改、查询操作,通讯录中至少要有三个字段:姓名、手机号码、通讯地址。使用CSV文件保存通讯录内容。采用文本界面操作,例如运行程序后显示: ==================通讯录=================== 1.显示清单 2.增加记录 3.删除记录 4.修改记录 5.查询记录 6.退出程序 请输入你的选择: 用户输入1,则在屏幕上显示通讯录中的所有记录: 编号 姓名 手机号码 通讯地址 1 张三 13912345678 南京信息工程大学 2 李四 19182398187 XXXXXXXXXXXXX 3 王五 12112312312 xxxxxxxxxxxxxxx 输入2则要求用户输入姓名、电话、地址后,在通讯录中添加一条记录。输入3可以删除指定编号的记录,输入4修改指定编号的记录,输入5后根据用户输入的姓名查找并显示记录,输入6退出程序。要求可以按照姓名或者编号删除
时间: 2023-09-04 12:09:20 浏览: 191
好的,我会根据您的要求进行开发,以下是Python代码实现:
```
import csv
def show_contacts():
with open('contacts.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
print("{:^10}\t{:^10}\t{:^15}\t{:^20}".format("编号", "姓名", "手机号码", "通讯地址"))
for row in reader:
print("{:^10}\t{:^10}\t{:^15}\t{:^20}".format(row['编号'], row['姓名'], row['手机号码'], row['通讯地址']))
def add_contact():
name = input("请输入姓名:")
phone = input("请输入手机号码:")
address = input("请输入通讯地址:")
with open('contacts.csv', 'a', newline='') as csvfile:
fieldnames = ['编号', '姓名', '手机号码', '通讯地址']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writerow({'编号': str(get_max_id() + 1), '姓名': name, '手机号码': phone, '通讯地址': address})
print("添加成功!")
def delete_contact():
id = input("请输入要删除的联系人编号或姓名:")
with open('contacts.csv', 'r+', newline='') as csvfile:
reader = csv.DictReader(csvfile)
fieldnames = ['编号', '姓名', '手机号码', '通讯地址']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for row in reader:
if row['编号'] == id or row['姓名'] == id:
continue
writer.writerow(row)
print("删除成功!")
def modify_contact():
id = input("请输入要修改的联系人编号或姓名:")
with open('contacts.csv', 'r+', newline='') as csvfile:
reader = csv.DictReader(csvfile)
fieldnames = ['编号', '姓名', '手机号码', '通讯地址']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for row in reader:
if row['编号'] == id or row['姓名'] == id:
name = input("请输入新姓名(回车不修改):")
if name == '':
name = row['姓名']
phone = input("请输入新手机号码(回车不修改):")
if phone == '':
phone = row['手机号码']
address = input("请输入新通讯地址(回车不修改):")
if address == '':
address = row['通讯地址']
writer.writerow({'编号': row['编号'], '姓名': name, '手机号码': phone, '通讯地址': address})
else:
writer.writerow(row)
print("修改成功!")
def search_contact():
name = input("请输入要查询的联系人姓名:")
with open('contacts.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
print("{:^10}\t{:^10}\t{:^15}\t{:^20}".format("编号", "姓名", "手机号码", "通讯地址"))
for row in reader:
if row['姓名'] == name:
print("{:^10}\t{:^10}\t{:^15}\t{:^20}".format(row['编号'], row['姓名'], row['手机号码'], row['通讯地址']))
return
print("未找到该联系人!")
def get_max_id():
with open('contacts.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
max_id = 0
for row in reader:
if int(row['编号']) > max_id:
max_id = int(row['编号'])
return max_id
while True:
print("==================通讯录===================")
print("1.显示清单\t2.增加记录\t3.删除记录\n4.修改记录\t5.查询记录\t6.退出程序")
choice = input("请输入你的选择:")
if choice == '1':
show_contacts()
elif choice == '2':
add_contact()
elif choice == '3':
delete_contact()
elif choice == '4':
modify_contact()
elif choice == '5':
search_contact()
elif choice == '6':
break
else:
print("输入有误,请重新输入!")
```
在运行程序前,请确保当前目录下存在名为 `contacts.csv` 的文件。其中,`contacts.csv` 文件的格式如下所示:
```
编号,姓名,手机号码,通讯地址
1,张三,13912345678,南京信息工程大学
2,李四,19182398187,XXXXXXXXXXXXX
3,王五,12112312312,xxxxxxxxxxxxxxx
```
可以根据需要对文件路径和字段进行修改。
阅读全文