[实验内容]:
采用顺序表,设计一个QQ群名片,主要包含:QQ号码、昵称、性别、年龄、生日等属性。完成基本功能如下:
(1) 初始化群名片;
(2) 添加某一个QQ群中10名成员的名片信息;
(3)删除某位成员信息;
(4)根据QQ号码或昵称查找某位成员的信息;
(5)显示群成员信息。扩展功能:
1.统计当前QQ群中共有多少联系人
2.销毁群名片
对于这样的一个实验,只是在代码方面实现的话,大部分朋友会想到c/c++,Python或者Java,但是在c/c++里面想要实现此功能,需要用到数据结构里面的结构体和顺序表的知识,不仅代码量很大并且容易出错,而且大部分初学计算机的朋友还没有接触数据结构,因此博主更推荐用Python实现此功能:
以下是Pycharm Python3.0版本实现的图示:
上图首先先建立了一个类QQMember,将所需的QQ号码、昵称、性别等等内容全部做成实例属性,self.qq_number 等语句将传入的参数赋值给类的实例属性,这样每个QQMember对象都可以保存对应成员的相关信息。
接下来建立一个QQGroupCard类,进行下一步的操作,接着用初始化属性__init__,在 QQMember 类中, __init__ 方法接收参数 qq_number 、nickname 等,然后将这些参数赋值给实例属性 self.qq_number 、 self.nickname 等,这样每个新创建的 QQMember 实例都会有自己独立的属性值。接下来开始创建各种功能所需的成员方法(因为功能众多,博主暂且只介绍几个比较重要的):
1、add_member该方法接受一个 member 参数(应为 QQMember 类的实例),将其添加到 self.members 列表中,并在控制台打印添加成功的提示信息。
2、delete_member该方法根据传入的 qq_number 在 self.members 列表中查找对应的成员。如果找到,就将其从列表中删除,并打印删除成功的提示;如果遍历完列表都没找到,则打印未找到的提示。
3、search_member该方法接受一个 keyword 参数,可以是QQ号码或昵称。它遍历 self.members 列表,将匹配的成员对象添加到 result 列表中。如果 result 列表不为空,就打印出所有匹配成员的详细信息;否则,打印未找到匹配成员的提示。
最后创建了一个 QQGroupCard 类的实例 group_card ,后续通过它来调用各种方法。然后进入一个无限循环 while True ,用于持续提供操作选择界面:每次循环开始时,打印操作菜单,提示用户可以选择的功能。使用 input 函数获取用户输入的选项。根据用户输入的不同选项,执行相应的操作。例如:当用户输入“1”时,调用 group_card.initialize() 方法初始化群名片。输入“2”时,先通过多次 input 函数获取新成员的各项信息,创建 QQMember 对象 new_member ,再调用 group_card.add_member(new_member) 方法添加成员。输入“8”时,打印退出提示并使用 break 语句跳出循环,结束程序。如果用户输入的不是1到8之间的有效选项,就打印提示信息,要求重新输入。
下面是几个博主的代码测试示例图: