需求

:::info

  1. 程序启动,显示名片管理系统欢迎界面,并显示功能菜单
  2. 用户用数字选择不同的功能:新建名片、显示名片、查询名片、退出系统
    1. 用户名片需要记录用户的 姓名、电话、QQ、邮件
    2. 显示名片可以列举出所有已经保存的名片
    3. 如果查询到指定的名片,用户可以选择 修改删除 名片 ::: 作业-黑马名片管理系统 - 图1

      菜单功能

      菜单需要多次输出,所以可以放在死循环中,如果退出程序直接break循环即可
      1. while True:
      2. print('*' * 50)
      3. print('欢迎使用[名片管理系统]V1.0')
      4. print()
      5. print('1.新建名片')
      6. print('2.显示名片')
      7. print('3.查询名片')
      8. print()
      9. print('0.退出系统')
      10. print('*' * 50)

      3. 输入处理

      输入不同的数字代表不同的操作
      1. while True:
      2. # ...
      3. type = int(input('请输入执行的操作:'))
      4. if type == 1:
      5. # 新建名片
      6. elif type == 2:
      7. # 显示全部
      8. elif type == 3:
      9. # 搜索名片
      10. elif type == 0:
      11. break

      新建名片

      1、定义列表保存所有的名片
      1. cardList = [] # 名片数据列表 [姓名,电话,qq,email]
      名片包含四个属性,可以再通过列表按照姓名、电话、qq、email的顺序保存

2、定义createCard创建名片函数

  1. def createCard():
  2. '''
  3. 创建新名片
  4. :return:
  5. '''
  6. print('您选择的功能是: 1')
  7. print('功能: 新建名片')
  8. name = input('请输入姓名:')
  9. phone = input('请输入电话:')
  10. qq = input('请输入QQ:')
  11. email = input('请输入邮箱:')
  12. # 每一个名片是列表数据
  13. # [姓名,电话,qq,email]
  14. card = [name,phone,qq,email]
  15. # 添加到列表中
  16. cardList.append(card)

3、在循环中调用

  1. while True:
  2. ...
  3. type = int(input('请输入执行的操作:'))
  4. if type == 1:
  5. # 新建名片
  6. createCard()
  7. ...

显示全部

1、定义显示所有名片的showAll函数

  1. def showAll():
  2. '''
  3. 显示所有的名片
  4. :return:
  5. '''
  6. print('您选择的功能: 2')
  7. print('功能提示: 显示全部')
  8. # 表头
  9. print('姓名\t电话\tQQ\t邮件')
  10. print('-'*50)
  11. # 找到所有的名片并打印
  12. for card in cardList:
  13. # name = card[0]
  14. # phone = card[1]
  15. # qq = card[2]
  16. # email = card[3]
  17. print('%s\t%s\t%s\t%s' % tuple(card))
  18. print('-'*50)

2、调用

  1. while True:
  2. #...
  3. type = int(input('请输入执行的操作:'))
  4. #...
  5. elif type == 2:
  6. showAll()

查询名片

搜索名片

1、定义searchCard函数

  1. def searchCard():
  2. '''
  3. 查询名片
  4. :return:
  5. '''
  6. print('您选择的功能是: 3')
  7. print('功能: 查询名片')
  8. name = input('请输入查询的姓名:')
  9. # 查询名片
  10. for card in cardList:
  11. # 判断当前card的名字和name是否相同
  12. if card[0]==name:
  13. # 找到了
  14. # 执行其它的操作
  15. handleCard(card)
  16. # 退出当前的循环
  17. break
  18. else:
  19. print('没有找到对应的用户:%s'%name)

其中handleCard函数是对搜索的结果进行处理,后面实现
2、调用

  1. while True:
  2. ...
  3. type = int(input('请输入执行的操作:'))
  4. ...
  5. elif type == 3:
  6. searchCard()

操作名片

handleCard函数是对搜索的名片操作

  1. def handleCard(card):
  2. '''
  3. 处理名片
  4. :param card:
  5. :return:
  6. '''
  7. while True:
  8. type = int(input('请输入对名片的操作: 1.修改/ 2.删除/ 0.返回上一级:'))
  9. # 根据不同的type做判断
  10. if type==1:
  11. # 修改
  12. modifyCard(card)
  13. # 跳出循环
  14. break
  15. elif type==2:
  16. # 删除
  17. deleteCard(card)
  18. break
  19. elif type==0:
  20. # 返回上一级
  21. break
  22. else:
  23. print('输入错误,请重新输入')

输入1进行修改,对应modifyCard函数
输入2进行删除,对应deleteCard函数

修改名片modifyCard

  1. def modifyCard(card):
  2. '''
  3. 修改名片
  4. :param card:
  5. :return:
  6. '''
  7. # 修改名片
  8. card[0] = input('请输入姓名:')
  9. card[1] = input('请输入电话:')
  10. card[2] = input('请输入QQ:')
  11. card[3] = input('请输入邮箱:')

删除名片deleteCard

  1. def deleteCard(card):
  2. '''
  3. 删除名片
  4. :param card: 名片列表
  5. :return:
  6. '''
  7. cardList.remove(card)