python通讯录课程设计

最近自学了python,想到之前学c++的通讯录课程设计,就试着用来检验python的学习成果。

import os
file_name='contact.txt'
def menu():
        print("=====================欢迎使用通讯簿=====================")
        print("*********************菜单*****************************")
        print("*                    1.新建联系人                     *")
        print("*                    2.查找联系人                     *")
        print("*                    3.删除联系人                     *")
        print("*                    4.修改联系人                     *")
        print("*                    5.显示联系人信息                  *")
        print("*                    0.退出                          *")
        print("=====================================================")
def main():
    while True:
        menu()
        choice=int(input("请输入0-5选择"))
        if choice in [0,1,2,3,4,5]:
            if choice==0:
                print("谢谢使用")
                break
            elif choice==1:
                insert()
            elif choice==2:
                search()
            elif choice==3:
                delete()
            elif choice==4:
                modify()
            elif choice==5:
                display()
def insert():
    contact_list=[]
    while True:
        number=input("请输入联系人手机号:")
        if not number:
            break
        name=input("请输入联系人姓名:")
        if not name:
           break
        try:
          sex=input("请输入联系人性别:")
          address=input("请输入联系人籍贯:")
          qq=input("请输入联系人qq号:")
        except:
             print("输入错误,请重新输入")
             continue
        contact={'number':number,'name':name,'sex':sex,'address':address,'qq':qq}
        contact_list.append(contact)
        answer=input('是否继续添加?y/n\n')
        if answer=='y':
            continue
        else:
            break
    save(contact_list)
    print("联系人输入完毕!")
def save(list):
    try:
        cont_txt=open(file_name,'a',encoding='utf-8')
    except:
        cont_txt=open(file_name,'w',encoding='utf-8')
    for item in list:
        cont_txt.write(str(item)+'\n')
    cont_txt.close()
def search():
    contact_query = []
    while True:
        number = ''
        name = ''
        if os.path.exists(file_name):
            mode = input("按手机号查找请输入1,按姓名查找请输入2:")
            if mode == '1':
                number = input("请输入手机号:")
            elif mode == '2':
                name = input("请输入姓名:")
            else:
                print("===========输入错误,请重新输入==========")
                search()
            with open(file_name, 'r', encoding='utf-8') as rfile:
                contact = rfile.readlines()
                for item in contact:
                    d = dict(eval(item))
                    if number != '':
                         if d['number'] == number:
                                contact_query.append(d)
                    elif name != '':
                        if d['name'] == name:
                                contact_query.append(d)
            display_contact(contact_query)
            contact_query.clear()
            answer = input('是否继续查询y/n\n')
            if answer == 'y':
                continue
            else:
                break
        else:
            print("暂未保存联系人信息")
            return
def display_contact(list):
    if len(list)==0:
        print("没有查询到联系人信息,无数据显示!!")
        return
    format_title='{:^6}\t{:^12}\t{:^8}\t{:^10}'
    print(format_title.format('手机号','姓名','性别','籍贯','qq'))
    format_data='{:^6}\t{:^12}\t{:^8}\t{:^10}'
    for item in list:
        print(format_data.format(item.get('number'),item.get('name'),
                                 item.get('sex'),item.get('address'),
                                 item.get('qq')))
def delete():
    while True:
        contact_number = input(("请输入删除联系人的手机号"))
        if contact_number != ' ':
            if os.path.exists(file_name):
                with open(file_name, 'r', encoding='utf-8')as file:
                    contact_old = file.readlines()
            else:
                contact_old = []
            flag = False
            if contact_old:
                with open(file_name, 'w', encoding='utf-8')as wfile:
                    d = {}
                    for item in contact_old:
                        d = dict(eval(item))
                        if d['number'] != contact_number:
                            wfile.write(str(d) + '\n')
                        else:
                            flag = True
                    if flag:
                        print(f'number为{contact_number}的联系人已被删除')
                    else:
                        print(f'没有找到number为{contact_number}的联系人')
            else:
                print('无联系人信息')
                break
            display()
            answer = input('是否继续删除?y/n\n')
            if answer == 'y':
                continue
            else:
                break
def modify():
    display()
    if os.path.exists(file_name):
        with open(file_name,'r',encoding='utf-8') as rfile:
            contact_old=rfile.readlines()
    else:
        return
    contact_number=input("请输入要修改的联系人手机号:")
    with open(file_name,'w',encoding='utf-8')as wfile:
        for item in contact_old:
            d=dict(eval(item))
            if d['number']==contact_number:
                print("找到该联系人")
                while True:
                    try:
                        d['name']=input("请输入姓名:")
                        d['sex']=input("请输入性别:")
                        d['address']=input("请输入籍贯:")
                        d['qq']=input("请输入qq:")
                    except:
                        print("您的输入有误,请重新输入!")
                    else:
                        break
                wfile.write(str(d)+'\n')
                print("修改成功!")
            else:
                wfile.write(str(d)+'\n')
        answer=input('是否继续修改其他联系人信息y/n\n')
        if answer=='y':
            modify()
def display():
    contact_list=[]
    if os.path.exists(file_name):
        with open(file_name,'r',encoding='utf-8') as rfile:
            contacts=rfile.readlines()
            for item in contacts:
                contact_list.append(eval(item))
            if contact_list:
                display_contact(contact_list)
    else:
        print('暂未保存过数据!!!')
main()

生成exe:
cmd:
先安装 输入pip install PyInstaller
再输入
pyinstaller -F D:\pthon\Pythonxuexi\main.py
在这里插入图片描述

大概就是这样,接下来再学吧~

  • 11
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
很高兴回答您关于Python通讯录程序设计的问题!通讯录程序可以帮助您管理联系人的信息。以下是一个简单的设计思路: 1. 创建一个联系人类(Contact),该类具有姓名、电话号码、电子邮件等属性。 2. 创建一个通讯录类(AddressBook),该类包含一个联系人列表,以及相关操作方法。 3. 在通讯录,您可以实现一些基本操作,例如添加联系人、删除联系人、查找联系人、显示所有联系人等。 4. 您还可以实现其他功能,如根据姓名或电话号码搜索联系人、导入/导出通讯录数据等。 下面是一个简单的示例代码: ```python class Contact: def __init__(self, name, phone, email): self.name = name self.phone = phone self.email = email class AddressBook: def __init__(self): self.contacts = [] def add_contact(self, contact): self.contacts.append(contact) def remove_contact(self, contact): self.contacts.remove(contact) def search_contact_by_name(self, name): for contact in self.contacts: if contact.name == name: return contact return None def search_contact_by_phone(self, phone): for contact in self.contacts: if contact.phone == phone: return contact return None def display_all_contacts(self): for contact in self.contacts: print(f"Name: {contact.name}, Phone: {contact.phone}, Email: {contact.email}") # 示例用法 address_book = AddressBook() # 添加联系人 contact1 = Contact("Alice", "1234567890", "alice@example.com") address_book.add_contact(contact1) # 显示所有联系人 address_book.display_all_contacts() # 搜索联系人 contact = address_book.search_contact_by_name("Alice") if contact: print(f"Found contact: Name: {contact.name}, Phone: {contact.phone}, Email: {contact.email}") else: print("Contact not found.") ``` 这只是一个简单的示例,您可以根据实际需求来扩展和完善通讯录程序。希望对您有所帮助!如果您有任何进一步的问题,请随时提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值