首页 >> 大全

Python 实例:手机通讯录(使用text文本记录数据)

2023-07-11 大全 42 作者:考证青年

在最原始的通讯录的基础之上进行了改进

使用了text文本记录数据

_现代通讯记录_通信记录

之后打算再研究一下用怎么写出有界面的通讯录(还是用text文本记录数据),然后再考虑一下用数据库记录数据,单纯只是完成一下期末老师布置的作业····

上篇的通讯录 最简单的实例:手机通讯录

代码直接复制粘贴就可以使用了

python">import sys
import json
import osclass TelephoneBook:def show_menu(self):  # 用于界面展示print("*" * 20)print("欢迎使用[通讯录] V1.0")print("1.添加联系人")print("2.查看通讯录")print("3.删除联系人")print("4.修改联系人")print("5.查找联系人")print("6.退出")print("*" * 20)# 1-添加联系人def add_info(self):name_str = input("请输入姓名:")phone_num = input("请输入手机号:")mail_adr = input("请输入邮箱:")adr_str = input("请输入地址:")# 将数据封装到字典中card_dict = {"姓名": name_str, "手机号": phone_num,"邮箱": mail_adr,"地址": adr_str}f = open("通讯录.txt", mode='a+', encoding='utf-8')# 将字典转换为str,然后再使用write()写入到通讯录的文本文件中f.write(str(card_dict) + '\n')f.close()print(f"成功添加{name_str}为联系人")# 2-显示所有联系人信息def show_info(self):file = open("通讯录.txt", mode='r', encoding='utf-8')# 如果通讯录.txt文件不为空时,执行下面代码if len(file.read()) != 0:# 保证每次从开始位置读取file.seek(0, 0)# 读取通讯录.txt文件中的内容file_data = file.read()# 对字符串进行分隔split_info = file_data.split('\n')# 删除多余的字符串split_info.remove(split_info[len(split_info) - 1])name_li = []       # 用于存储联系人姓名的列表all_info_li = []   # 用于存储所有信息的列表for i in split_info:# 将单引号替换为双引号dict_info = json.loads(i.replace("\'", '\"'))all_info_li.append(dict_info)# 获取所有联系人的姓名name_li.append(dict_info['姓名'])for person_info in all_info_li:print('--*' * 17)print(person_info)print('--*' * 17+'\n')else:print("通讯录为空")# 3-删除联系人信息def del_info(self):file = open("通讯录.txt", mode='r+', encoding='utf-8')# 如果通讯录.txt文件不为空时,执行下面代码if len(file.read()) != 0:# 保证每次从开始位置读取file.seek(0, 0)# 读取通讯录.txt文件中的内容file_data = file.read()# 对字符串进行分隔split_info = file_data.split('\n')# 删除多余的字符串split_info.remove(split_info[len(split_info) - 1])name = input("请输入要删除的联系人姓名:")name_li = []  # 用于存储联系人姓名的列表all_info_li = []  # 用于存储所有信息的列表for i in split_info:# 将单引号替换为双引号dict_info = json.loads(i.replace("\'", '\"'))all_info_li.append(dict_info)# 获取所有联系人的姓名name_li.append(dict_info['姓名'])if name in name_li:通讯录_copy = open('通讯录_copy.txt', mode='w', encoding="utf-8")for person_info in all_info_li:if name not in str(person_info):通讯录_copy.write(str(person_info)+'\n')通讯录_copy.close()file.close()os.rename('通讯录.txt', '通讯录_del.txt')os.rename('通讯录_copy.txt', '通讯录.txt')os.remove('通讯录_del.txt')print('删除成功!')else:print('联系人不存在')else:print("通讯录为空")# 4-更新联系人信息def update_info(self):file = open("通讯录.txt", mode='r+', encoding='utf-8')# 如果通讯录.txt文件不为空时,执行下面代码if len(file.read()) != 0:# 保证每次从开始位置读取file.seek(0, 0)# 读取通讯录.txt文件中的内容file_data = file.read()# 对字符串进行分隔split_info = file_data.split('\n')# 删除多余的字符串split_info.remove(split_info[len(split_info) - 1])name = input("请输入要更新的联系人姓名:")name_li = []  # 用于存储联系人姓名的列表all_info_li = []  # 用于存储所有信息的列表for i in split_info:# 将单引号替换为双引号dict_info = json.loads(i.replace("\'", '\"'))all_info_li.append(dict_info)# 获取所有联系人的姓名name_li.append(dict_info['姓名'])if name in name_li:通讯录_copy = open('通讯录_copy.txt', mode='w', encoding="utf-8")name_new = input("请输入新的姓名:")phone_new = input("请输入新的手机号:")mail_new = input("请输入新的邮箱:")adr_new = input("请输入新的地址:")# 将数据封装到字典中card_dict = {"姓名": name_new, "手机号": phone_new,"邮箱": mail_new, "地址": adr_new}for person_info in all_info_li:if name in str(person_info):person_info = str(card_dict)通讯录_copy.write(str(person_info) + '\n')通讯录_copy.close()file.close()os.rename('通讯录.txt', '通讯录_del.txt')os.rename('通讯录_copy.txt', '通讯录.txt')os.remove('通讯录_del.txt')print('更新成功!')else:print('联系人不存在')else:print("通讯录为空")# 5-查找相关联系人信息def find_info(self):file = open("通讯录.txt", mode='r', encoding='utf-8')# 如果通讯录.txt文件不为空时,执行下面代码if len(file.read()) != 0:# 保证每次从开始位置读取file.seek(0, 0)# 读取通讯录.txt文件中的内容file_data = file.read()# 对字符串进行分隔split_info = file_data.split('\n')# 删除多余的字符串split_info.remove(split_info[len(split_info) - 1])name = input("请输入要查询的姓名:")name_li = []       # 用于存储联系人姓名的列表all_info_li = []   # 用于存储所有信息的列表for i in split_info:# 将单引号替换为双引号dict_info = json.loads(i.replace("\'", '\"'))all_info_li.append(dict_info)# 获取所有联系人的姓名name_li.append(dict_info['姓名'])if name in name_li:for person_info in all_info_li:for title_key, name_value in person_info.items():if name_value == name:#找到匹配的名字并输出相关信息for title, info_value in person_info.items():print(title + ":" + info_value)else:print('联系人不存在')else:print("通讯录为空")# 主函数def main(self):while True:self.show_menu()action_str = input("请选择操作功能:")  # 判断用户输入的功能指令if action_str.isdigit() is True:if int(action_str) == 1:self.add_info()elif int(action_str) == 2:self.show_info()elif int(action_str) == 3:self.del_info()elif int(action_str) == 4:self.update_info()elif int(action_str) == 5:self.find_info()elif int(action_str) == 6:sys.exit()else:print('请输入正确的指令')#执行主程序
if __name__ == '__main__':tb = TelephoneBook()tb.main()

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了