用python编写通讯录。要求能够查询通讯录清单。 2、要求能对通讯录中的记录实现增加、删除、修改、查询操作。 3、通讯录中至少要有三个字段:姓名、手机号码、通讯地址。 4、使用CSV文件保存通讯录内容。 5、采用文本界面操作,例如运行程序后显示: ==================通讯录=================== 1.显示清单 2.增加记录 3.删除记录 4.修改记录 5.查询记录 6.退出程序 6、要对用户输入的内容进行检查。例如姓名不能为空,手机号码格式是否正确等。 7、要考虑各种异常情况,使用异常捕获防止程序崩溃。例如要考虑文件读写失败如何处理等。 8、不仅能通过姓名进行查询,还能通过手机号码进行查询。 9、查询数据时支持模糊查询。
时间: 2023-08-06 21:22:57 浏览: 89
Python编写通讯录通过数据库存储实现模糊查询功能
好的,这是一个很具体的问题,我可以为您提供一些思路和代码示例。首先,我们可以使用Python内置的CSV模块来实现对CSV文件的读写操作。具体代码示例如下:
```python
import csv
# 读取CSV文件
def read_csv(file_path):
with open(file_path, 'r', encoding='utf-8-sig') as f:
reader = csv.reader(f)
rows = [row for row in reader]
return rows
# 写入CSV文件
def write_csv(file_path, rows):
with open(file_path, 'w', encoding='utf-8-sig', newline='') as f:
writer = csv.writer(f)
writer.writerows(rows)
```
接下来,我们可以定义一个通讯录类,包括增加、删除、修改、查询等操作。具体代码示例如下:
```python
class AddressBook:
def __init__(self, file_path):
self.file_path = file_path
self.headers = ['姓名', '手机号码', '通讯地址']
self.data = read_csv(file_path)
# 显示通讯录清单
def show_list(self):
for i, row in enumerate(self.data):
print(f'{i+1}. {row[0]}')
# 增加记录
def add_record(self, name, phone, address):
new_row = [name, phone, address]
self.data.append(new_row)
write_csv(self.file_path, [self.headers] + self.data)
# 删除记录
def delete_record(self, index):
del self.data[index]
write_csv(self.file_path, [self.headers] + self.data)
# 修改记录
def edit_record(self, index, name, phone, address):
self.data[index] = [name, phone, address]
write_csv(self.file_path, [self.headers] + self.data)
# 查询记录
def search_record(self, keyword):
results = []
for row in self.data:
if keyword in row[0] or keyword in row[1]:
results.append(row)
return results
```
最后,我们可以使用文本界面来实现用户交互。具体代码示例如下:
```python
def main():
file_path = 'address_book.csv'
address_book = AddressBook(file_path)
while True:
print('==================通讯录===================')
print('1. 显示清单\t2. 增加记录\t3. 删除记录')
print('4. 修改记录\t5. 查询记录\t6. 退出程序')
choice = input('请输入您的选择:')
if choice == '1':
address_book.show_list()
elif choice == '2':
name = input('请输入姓名:')
phone = input('请输入手机号码:')
address = input('请输入通讯地址:')
address_book.add_record(name, phone, address)
elif choice == '3':
index = int(input('请输入要删除的记录序号:')) - 1
address_book.delete_record(index)
elif choice == '4':
index = int(input('请输入要修改的记录序号:')) - 1
name = input('请输入姓名:')
phone = input('请输入手机号码:')
address = input('请输入通讯地址:')
address_book.edit_record(index, name, phone, address)
elif choice == '5':
keyword = input('请输入关键词:')
results = address_book.search_record(keyword)
for row in results:
print(row)
elif choice == '6':
break
else:
print('您输入的选项有误,请重新输入!')
```
以上就是一个简单的通讯录程序的实现思路和代码示例。需要注意的是,这只是一个示例,实际应用中可能需要更加严谨的检查和异常处理。
阅读全文