实现信息通讯录的面向对象01

"""
通讯录的面向对象实现

"""


class Usr:
    num = ""
    name = ""
    qq = ""
    tel = ""
    email = ""

    def __init__(self, num, name, qq, tel, email):
        self.num = num
        self.name = name
        self.qq = qq
        self.tel = tel
        self.email = email

    def getnum(self, num):
        self.num = num

    def usrinput(self):
        self.name = input("{: <}".format("请输入您的姓名: "))
        temp = input("{: <}".format("请输入您的QQ号码: "))
        while temp.isnumeric() is False and temp != "":
            print("QQ号码格式错误!请不要输入数字以外的字符!")
            temp = input("{: <}".format("请输入正确的QQ号码: "))
        self.qq = temp
        temp = input("{: <}".format("请输入您的电话号码: "))
        while temp.isnumeric() is False and temp != "":
            print("电话号码格式错误!请不要输入数字以外的字符!")
            temp = input("{: <}".format("请输入正确的电话号码: "))
        self.tel = temp
        self.email = input("{: <}".format("请输入您的邮箱: "))


def print_menu():
    print("{:#^60}".format("#"))
    print("{: ^50}".format("南开大学软件学院通讯录管理系统v0.01a"))
    print("")
    print("{: ^50}".format("添加数据请按【a】"))
    print("{: ^50}".format("查看数据请按【s】"))
    print("{: ^50}".format("删除数据请按【d】"))
    print("{: ^50}".format("修改数据请按【m】"))
    print("{: >56}".format("返回菜单请按【q】"))
    print("{:#^60}".format("#"))
    return


class yellowPaper:
    def __init__(self):
        self.usr_list = []     # 用户列表

    def add(self):
        num = len(self.usr_list) + 1
        usr = Usr('', '', '', '', '')
        usr.getnum(num)
        usr.usrinput()
        self.usr_list.append(usr)
        print("{: <}".format("添加成功!"))

    def delete(self):
        num = int(input("请输入需删除的序号: "))
        while num > len(self.usr_list) or num < 0:
            print("序号不存在,请重新输入")
            num = int(input("请输入需删除的序号: "))
        if num != 0:
            self.usr_list.pop(num-1)
            print("删除成功")
        elif num == 0:
            print("返回命令输入")

    def show_menu(self):
        print("{:~^76}".format("通讯录数据列表"))
        print("{0:<5}{1:<10}{2:<15}{3:<15}{4:<15}".format("序号", "姓名", "QQ", "电话", "邮箱"))
        num = len(self.usr_list) - 1
        i = 0
        while i <= num:
            print("{0:<6}{1:<11}{2:<15}{3:<16}{4:<16}".format(self.usr_list[i].num, self.usr_list[i].name,
                                                              self.usr_list[i].qq, self.usr_list[i].tel,
                                                              self.usr_list[i].email))
            i = i + 1
        print("~" * 80)

    def show_menu_update(self, num):
        print("{:~^77}".format("修改数据"))
        print("{0:<5}{1:<10}{2:<15}{3:<15}{4:<15}".format("序号", "姓名", "QQ", "电话", "邮箱"))
        print("{0:<6}{1:<11}{2:<15}{3:<16}{4:<16}".format(self.usr_list[num - 1].num, self.usr_list[num - 1].name,
                                                          self.usr_list[num - 1].qq,
                                                          self.usr_list[num - 1].tel,
                                                          self.usr_list[num - 1].email))
        print("~" * 80)

    def show_menu_add(self):
        print("{:~^77}".format("添加数据"))
        print("{0:<5}{1:<10}{2:<15}{3:<15}{4:<15}".format("序号", "姓名", "QQ", "电话", "邮箱"))
        num = len(self.usr_list) - 1
        print("{0:<6}{1:<11}{2:<15}{3:<16}{4:<16}".format(self.usr_list[num].num,
                                                          self.usr_list[num].name,
                                                          self.usr_list[num].qq,
                                                          self.usr_list[num].tel,
                                                          self.usr_list[num].email))
        print("~" * 80)

    def update(self):
        num = int(input("请输入需修改的序号(不需要修改的选项请直接回车跳过): "))
        while num > len(self.usr_list) or num < 0:
            print("序号不存在,请重新输入")
            num = int(input("请输入需修改的序号: "))
        if num != 0:
            name = input("{: <}".format("请输入您的姓名: "))
            temp = input("{: <}".format("请输入您的QQ号码: "))
            while temp.isnumeric() is False and temp != "":
                print("QQ号码格式错误!请不要输入数字以外的字符!")
                temp = input("{: <}".format("请输入正确的QQ号码: "))
            qq = temp
            temp = input("{: <}".format("请输入您的电话号码: "))
            while temp.isnumeric() is False and temp != "":
                print("电话号码格式错误!请不要输入数字以外的字符!")
                temp = input("{: <}".format("请输入正确的电话号码: "))
            tel = temp
            email = input("{: <}".format("请输入您的邮箱: "))
            print("修改成功")
            name = name if name else self.usr_list[num - 1].name
            qq = qq if qq else self.usr_list[num - 1].qq
            tel = tel if tel else self.usr_list[num - 1].tel
            email = email if email else self.usr_list[num - 1].email
            usr = Usr(num, name, qq, tel, email)
            self.usr_list.pop(num-1)
            self.usr_list.insert(num-1, usr)
        elif num == 0:
            print("返回命令输入")


if __name__ == '__main__':
    print_menu()
    obj = yellowPaper()
    while True:
        command = input("{: <50}".format("请输入相应的命令(返回菜单请按q)"))
        if command not in "asdmq":
            command = input("{: <50}".format("请输入正确的命令(返回菜单请按q)"))
        if "a" == command:
            obj.add()
            obj.show_menu_add()
        elif "s" == command:
            obj.show_menu()
        elif "d" == command:
            obj.delete()
        elif "m" == command:
            obj.update()
        elif "q" == command:
            print_menu()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_45754783

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值