qq_30764163 2021-12-30 18:20 采纳率: 100%
浏览 534
已结题

Python实现手机通讯录功能

1.实现一个基于面向对象思想的、具有添加、查看、删除、修改、查找、保存数据功能的通讯录程序。
2.联系人信息包括姓名、性别、手机号。
3.设计一个Friend类,该类中包括__init__( )、welcome( )、add_friend( )、show_friend( )、del_friend( )、modify_friend( )、find_friend( )、save_to_file( )、recover_data( )共9个方法。
4.数据保存到文件“backup.data”中,程序运行时自动从文件恢复数据,若没有数据则捕获异常,新建一个空白文件。

  • 写回答

1条回答 默认 最新

  • 关注

    参考下这个,.自己修改下

    #-*- coding:utf-8 -*-
    import json
    
    class System():
        def __init__(self):
            self.data = []
            self.load()
            while True:
                s = self.menu()
                if s=="1":
                    self.inquire()
                elif s=="2":
                    self.add()
                elif s=="3":
                    self.delete()
                elif s=="4":
                    self.revise()
                elif s=="5":
                    self.save()
                    break
    
        def load(self):
            try:
                with open("data.txt","r") as f:
                    d = f.read()
                    self.data = json.loads(d)
            except Exception:
                self.data = []
    
        def save(self):
            with open("data.txt","w") as f:
                f.write(json.dumps(self.data))
    
        def menu(self):
            print("********** 学生信息管理 *************")
            print("\t1.查询")
            print("\t2.添加")
            print("\t3.删除")
            print("\t4.修改")
            print("\t5.保存并退出")
            print("***********************************")
            return input("请输入1-5选择功能并按回车:")
    
        def inputDsta(self):
            return {
                "学号": input("输入学号:"),
                "姓名": input("输入姓名:"),
                "性别": input("输入性别:"),
                "年龄": input("输入年龄:"),
                "电话": input("输入电话:")
            }
    
        def inputID(self,t):
            while True:
                try:
                    i = int(input(t))-1
                    if 0 <= i < len(self.data):
                        return i
                    else:
                        print("输入id超出范围,请重新输入。")
                except ValueError:
                    print("输入错误,请重新输入。")
    
        def inquire(self):
            print("id\t学号\t姓名\t性别\t年龄\t电话")
            for i,d in enumerate(self.data):
                print(f"{i+1}\t{d['学号']}\t{d['姓名']}\t{d['性别']}\t{d['年龄']}\t{d['电话']}")
    
        def add(self):
            self.data.append(self.inputDsta())
    
        def delete(self):
            i = self.inputID("请输入要删除信息的id:")
            del self.data[i]
            print(f"id为{i+1}的信息已删除")
    
        def revise(self):
            i = self.inputID("请输入要修改信息的id:")
            self.data[i] = self.inputDsta()
    
    sys = System()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月8日
  • 已采纳回答 12月31日
  • 创建了问题 12月30日

悬赏问题

  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入