Python实现大学组织结构数据统计:树结构存储与功能全解析
为了实现上述功能,我们可以使用Python编写一个程序。以下是详细的步骤和代码实现: 1. 从txt文件读数据到r数组中 2. 由数组r创建树的链式存储结构 3. 采用括号表示输出树t 4. 求各学院的专业数以及名称 5. 求各学院的班数以及名称 6. 统计各学院的学生人数 7. 修改指定信息点的数据,并更新txt文件 首先,我们需要定义树节点类和树类,然后逐步实现各个功能。 ```python class TreeNode: def __init__(self, name): self.name = name self.children = [] class Tree: def __init__(self): self.root = None def add_node(self, parent_name, child_name): if not self.root: self.root = TreeNode(parent_name) self.root.children.append(TreeNode(child_name)) else: parent_node = self.find_node(self.root, parent_name) if parent_node: parent_node.children.append(TreeNode(child_name)) else: print(f"Parent node {parent_name} not found") def find_node(self, node, name): if node.name == name: return node for child in node.children: result = self.find_node(child, name) if result: return result return None def display(self, node=None, level=0): if node is None: node = self.root print(' ' * level * 2 + node.name) for child in node.children: self.display(child, level + 1) def count_professionals(self, node=None): if node is None: node = self.root professionals = {} for child in node.children: if child.name.endswith("学院"): professionals[child.name] = len(child.children) else: professionals[node.name] = len(node.children) return professionals def count_classes(self, node=None): if node is None: node = self.root classes = {} for child in node.children: if not child.name.endswith("学院"): classes[node.name] = len(node.children) return classes def count_students(self, node=None): if node is None: node = self.root students = {} for child in node.children: if not child.name.endswith("学院") and not child.name.endswith("班"): students[node.name] = sum([int(c.name) for c in child.children]) return students def update_data(self, parent_name, old_child_name, new_child_name): parent_node = self.find_node(self.root, parent_name) if parent_node: for i, child in enumerate(parent_node.children): if child.name == old_child_name: parent_node.children[i].name = new_child_name return True return False def read_data_from_file(filename): with open(filename, 'r', encoding='utf-8') as file: lines = file.readlines() data = [line.strip().split() for line in lines] return data def write_data_to_file(filename, tree): with open(filename, 'w', encoding='utf-8') as file: def write_node(node, level=0): for child in node.children: file.write('\t' * level + f"{node.name}\t{child.name}\n") write_node(child, level + 1) write_node(tree.root) # Example usage: filename = 'university_structure.txt' data = read_data_from_file(filename) tree = Tree() for entry in data: tree.add_node(entry[0], entry[1]) tree.display() print("Professionals Count:", tree.count_professionals()) print("Classes Count:", tree.count_classes()) print("Students Count:", tree.count_students()) tree.update_data('计算机学院', '物联网', '新物联网') write_data_to_file(filename, tree) ``` 说明: 1. TreeNode类:表示树的节点,每个节点有一个名字和一个子节点列表。 2. Tree类:表示整个树,包含添加节点、查找节点、显示树、统计专业、班级和学生人数的方法。 3. read_data_from_file函数:从文件中读取数据并返回一个二维列表。 4. write_data_to_file函数:将树的结构写回文件。 5. 示例用法:展示如何使用这些类和函数来完成任务。 ######[AI写代码神器 | 1247点数解答 | 2024-10-27 14:13:29]
- Python 实现简易密码设置系统:多种功能交互与安全要点揭秘(字节豆包 | 286点数解答 | 2025-03-28 10:43:21)366
- C语言实现多功能密码设置系统:含代码及安全注意要点(字节豆包 | 414点数解答 | 2025-03-28 10:43:55)355
- C 语言实现:超简单密码设置系统,含代码与注意要点!(字节豆包 | 519点数解答 | 2025-03-28 12:42:02)392
- C语言实现密码管理系统:含功能代码与安全注意事项(字节豆包 | 409点数解答 | 2025-04-05 18:09:56)339
- C语言实现多功能密码系统:初始化、确认、设置、显示、重置与退出(字节豆包 | 454点数解答 | 2025-04-05 18:48:42)338
- C语言实现密码管理系统:含初始化、确认、设置、显示、重置及退出功能(字节豆包 | 413点数解答 | 2025-04-06 15:37:16)284
- C 语言实现密码管理系统:含初始化、确认、设置、显示、重置及退出功能(字节豆包 | 403点数解答 | 2025-04-06 15:37:54)299
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)469
- Python 实现树结构:从二叉树节点类示例到处理注意要点(字节豆包 | 179点数解答 | 2025-01-03 14:44:31)116
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)351
- Java实现有序集合合并与交集算法(顺序表+单链表)(百度文心 | 1247点数解答 | 2026-03-25 10:35:22)16
- Java代码实现从JSON数据中提取ID,涉及“数据”与“项目 - 知识库”结构(字节豆包 | 603点数解答 | 2025-04-15 22:48:51)245