编写一个程序实现大学的数据统计。某大学的组织结构如下表所示,该数据存放在文本文件txt中。 表1 某大学的组织结构 单位 下级单位或人数 单位 下级单位或人数 某大学 计算机学院 物联网 物联班 某大学 电信学院 物联班 38 计算机学院 计算机科学 电信学院 电子信息类 计算机学院 信息安全 电信学院 信息工程 计算机学院 物联网 电子信息类 电信1班 计算机科学 计科1班 电子信息类 电信2班 计算机科学 计科2班 电子信息类 电信3班 计算机科学 计科3班 电信1班 40 计科1班 32 电信2班 38 计科2班 35 电信3班 42 计科3班 33 信息工程 信息1班 信息安全 信安1班 信息工程 信息2班 信息安全 信安2班 信息1班 38 信安1班 36 信息2班 35 信安2班 38 要求采用树的链式存储结构存储它,并完成以下功能: 1.从txt文件读数据到r数组中。 2.由数组r创建树t的链式存储结构。 3.采用括号表示输出树t。 4.求各学院的专业数以及名称。 5.求各学院的班数以及名称。 6.统计各学院的学生人数。 7.修改指定信息点的数据,并更新txt文件。


为了实现上述功能,我们可以使用Python编程语言来完成。我们将使用链式存储结构来表示树,并实现所需的功能。以下是完整的代码实现: ```python class TreeNode: def __init__(self, name): self.name = name self.children = [] self.parent = None def add_child(self, child): child.parent = self self.children.append(child) def __str__(self, level=0): ret = " " * level + self.name + "\n" for child in self.children: ret += child.__str__(level + 1) return ret def read_data_from_file(filename): with open(filename, 'r') as file: lines = file.readlines() data = [line.strip().split('\t') for line in lines] return data def create_tree(data): root = TreeNode("某大学") nodes = {"某大学": root} for parent, child in data: if parent not in nodes: nodes[parent] = TreeNode(parent) if parent != "某大学": root.add_child(nodes[parent]) if child not in nodes: nodes[child] = TreeNode(child) nodes[parent].add_child(nodes[child]) return root def print_tree(tree): print(tree) def count_specialties_and_classes(tree, college_name): specialties = [] classes = [] for child in tree.children: if child.name == college_name: for grandchild in child.children: if any(c.isdigit() for c in grandchild.name): classes.append(grandchild.name) else: specialties.append(grandchild.name) break return specialties, classes def count_students(tree, college_name): total_students = 0 for child in tree.children: if child.name == college_name: for grandchild in child.children: for great_grandchild in grandchild.children: if great_grandchild.name.isdigit(): total_students += int(great_grandchild.name) break return total_students def update_data(tree, target, new_value, filename): for node in tree.children: if update_node(node, target, new_value): break write_data_to_file(tree, filename) def update_node(node, target, new_value): if node.name == target: node.name = new_value return True for child in node.children: if update_node(child, target, new_value): return True return False def write_data_to_file(tree, filename): with open(filename, 'w') as file: for child in tree.children: write_node(file, child, "某大学") def write_node(file, node, parent_name): file.write(f"{parent_name}\t{node.name}\n") for child in node.children: write_node(file, child, node.name) # 主程序 if __name__ == "__main__": filename = "university_structure.txt" data = read_data_from_file(filename) tree = create_tree(data) print("树的结构:") print_tree(tree) colleges = ["计算机学院", "电信学院"] for college in colleges: specialties, classes = count_specialties_and_classes(tree, college) print(f"{college}的专业数及名称: {len(specialties)}, {specialties}") print(f"{college}的班数及名称: {len(classes)}, {classes}") students = count_students(tree, college) print(f"{college}的学生人数: {students}") # 修改指定信息点的数据,并更新txt文件 target = "计科1班" new_value = "33" update_data(tree, target, new_value, filename) ``` 说明 1. TreeNode类:用于表示树的节点,包含节点名称、子节点列表和父节点。 2. read_data_from_file函数:从文件中读取数据并返回二维列表。 3. create_tree函数:根据数据创建树的链式存储结构。 4. print_tree函数:以括号表示法输出树的结构。 5. count_specialties_and_classes函数:统计指定学院的专业数和班级数。 6. count_students函数:统计指定学院的学生人数。 7. update_data函数:修改指定信息点的数据并更新文件。 8. update_node函数:递归查找并更新节点。 9. write_data_to_file函数:将树的结构写回文件。 使用方法 1. 将组织结构数据保存到`university_structure.txt`文件中。 2. 运行上述Python脚本。 3. 脚本会输出树的结构、各学院的专业数和班级数、学生人数,并允许修改指定信息点的数据并更新文件。 希望这个实现能满足你的需求!如果有任何问题或需要进一步的帮助,请告诉我。 [2024-10-27 14:13:51 | AI写代码神器 | 1052点数解答]
- cpp编写一个程序实现大学的数据统计。某大学的组织结构如下表所 示,该数据存放在文本文件 txt 中. 表1某大学的组织结构 单位 下级单位或人数 单位 下级单位或人数 某大学 计算机学院 物联网 物联班 某大学 电信学院 物联班 38 计算机学院 计算机科学 电信学院 电子信息类 计算机学院 信息安全 电信学院 信息工程 计算机学院 物联网 电子信息类 电信1班 计算机科学 计科1班 电子信息类 电信2班 计算机科学 计科2班 电子信息类 电信3班 计算机科学 计科3班 电信1班 40 计科1班 32 电信2班 38 计科2班 35 电信3班 42 计科3班 33 信息工程 信息1班 信息安全 信安1班 信息工程 信息2班 信息安全 信安2班 信息1班 38 信安1班 36 信息2班 35 信安2班 38 要求采用树的链式存储结构存储它,并完成以下功能:1.从 txt 文件读数据到 r 数组中。 2.由数组 r 创建树 t 的链式存储结构. 3.采用括号表示输出树 t . 4.求各学院的专业数以及名称。 5.求各学院的班数以及名称。 6.统计各学院的学生人数。 7.修改指定信息点的数(2914点数解答 | 2024-10-27 01:08:11)311
- 编写一个程序实现大学的数据统计。某大学的组织结构如下表所示,该数据存放在文本文件txt中。 表1 某大学的组织结构 单位 下级单位或人数 单位 下级单位或人数 某大学 计算机学院 物联网 物联班 某大学 电信学院 物联班 38 计算机学院 计算机科学 电信学院 电子信息类 计算机学院 信息安全 电信学院 信息工程 计算机学院 物联网 电子信息类 电信1班 计算机科学 计科1班 电子信息类 电信2班 计算机科学 计科2班 电子信息类 电信3班 计算机科学 计科3班 电信1班 40 计科1班 32 电信2班 38 计科2班 35 电信3班 42 计科3班 33 信息工程 信息1班 信息安全 信安1班 信息工程 信息2班 信息安全 信安2班 信息1班 38 信安1班 36 信息2班 35 信安2班 38 要求采用树的链式存储结构存储它,并完成以下功能: 1.从txt文件读数据到r数组中。 2.由数组r创建树t的链式存储结构。 3.采用括号表示输出树t。 4.求各学院的专业数以及名称。 5.求各学院的班数以及名称。 6.统计各学院的学生人数。 7.修改指定信息点的数据,并更新txt文件。(1247点数解答 | 2024-10-27 14:13:29)159
- 编写一个程序实现大学的数据统计。某大学的组织结构如下表所示,该数据存放在文本文件txt中。 表1 某大学的组织结构 单位 下级单位或人数 单位 下级单位或人数 某大学 计算机学院 物联网 物联班 某大学 电信学院 物联班 38 计算机学院 计算机科学 电信学院 电子信息类 计算机学院 信息安全 电信学院 信息工程 计算机学院 物联网 电子信息类 电信1班 计算机科学 计科1班 电子信息类 电信2班 计算机科学 计科2班 电子信息类 电信3班 计算机科学 计科3班 电信1班 40 计科1班 32 电信2班 38 计科2班 35 电信3班 42 计科3班 33 信息工程 信息1班 信息安全 信安1班 信息工程 信息2班 信息安全 信安2班 信息1班 38 信安1班 36 信息2班 35 信安2班 38 要求采用树的链式存储结构存储它,并完成以下功能: 1.从txt文件读数据到r数组中。 2.由数组r创建树t的链式存储结构。 3.采用括号表示输出树t。 4.求各学院的专业数以及名称。 5.求各学院的班数以及名称。 6.统计各学院的学生人数。 7.修改指定信息点的数据,并更新txt文件。(1052点数解答 | 2024-10-27 14:13:51)138
- 编写一个程序实现大学的数据统计。某大学的组织结构如下表所示,该数据存放在文本文件txt中。 表1 某大学的组织结构 单位 下级单位或人数 单位 下级单位或人数 某大学 计算机学院 物联网 物联班 某大学 电信学院 物联班 38 计算机学院 计算机科学 电信学院 电子信息类 计算机学院 信息安全 电信学院 信息工程 计算机学院 物联网 电子信息类 电信1班 计算机科学 计科1班 电子信息类 电信2班 计算机科学 计科2班 电子信息类 电信3班 计算机科学 计科3班 电信1班 40 计科1班 32 电信2班 38 计科2班 35 电信3班 42 计科3班 33 信息工程 信息1班 信息安全 信安1班 信息工程 信息2班 信息安全 信安2班 信息1班 38 信安1班 36 信息2班 35 信安2班 38 要求采用树的链式存储结构存储它,并完成以下功能: 1.从txt文件读数据到r数组中。 2.由数组r创建树t的链式存储结构。 3.采用括号表示输出树t。 4.求各学院的专业数以及名称。 5.求各学院的班数以及名称。 6.统计各学院的学生人数。 7.修改指定信息点的数据,并更新txt文件。(1498点数解答 | 2024-10-27 14:13:52)147
- 帮我写一个批处理文件,内容如下: 1、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中p=的值改为"参数表.xlsx"中c列对应的值; 2、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中t=的值改为"参数表.xlsx"中b列对应的值; 3、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中s=的值改为"参数表.xlsx"中d列对应的值; 如: 参数表.xlsx中a列a1,a2,a3;b列1.5,2,3;c列为10,20,30;d列100,101,102; 文件.txt中的行 1:l p[54:a1] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=10,ed=1]; 2:l p[57:a2] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=11,ed=1]; 3:l p[67:a3] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=12,ed=1]; 文件.txt修改后为 1:l p[54(811点数解答 | 2024-12-05 12:58:37)218
- 帮我写一个批处理文件,内容如下: 1、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中p=的值改为"参数表.xlsx"中c列对应的值; 2、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中t=的值改为"参数表.xlsx"中b列对应的值; 3、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中s=的值改为"参数表.xlsx"中d列对应的值; 参数表.xlsx中a列a1,a2,a3;b列1.5,2,3;c列为10,20,30;d列100,101,102; 文件.txt数据 1:l p[54:a1] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=10,ed=1]; 2:l p[57:a2] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=11,ed=1]; 3:l p[67:a3] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=12,ed=1]; 文件.txt修改后数据 1:l p[54:a1(531点数解答 | 2024-12-05 13:20:42)222
- 帮我写一个批处理文件,内容如下: 1、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中p=的值改为"参数表.xlsx"中c列对应的值; 2、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中t=的值改为"参数表.xlsx"中b列对应的值; 3、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中s=的值改为"参数表.xlsx"中d列对应的值; 参数表.xlsx中a列a1,a2,a3;b列1.5,2,3;c列为10,20,30;d列100,101,102; 文件.txt数据 1:l p[54:a1] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=10,ed=1]; 2:l p[57:a2] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=11,ed=1]; 3:l p[67:a3] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=12,ed=1]; 文件.txt修改后数据 1:l p[54:a1(495点数解答 | 2024-12-05 13:22:26)196
- 以读、二进制方式打开c盘temp文件夹下abc.txt文件的代码是()[测3] a. f=open(c:/temp/abc.txt,'bt') b. f=open('c://temp//abc.txt','rb') c. f=open('c:\temp\abc.txt','rb') d. f=open('c:/temp/abc.txt','wb') e. f=open('c:\\temp\\abc.txt','rb') f. f=open('c:/temp/abc.txt','rb') g. f=open('c://temp//abc.txt':'rb') h. f=open('c:\\temp\\abc.txt','ab')(15点数解答 | 2024-06-06 13:53:37)264
- 编程实现一个简单的密码设置系统,从键盘输入字符命令,分别实现相应的功能。 初始化设置密码为123456,等待命令输入: (1)输入字符‘1’,功能:密码确认。提示输入密码,密码正确,返回“密码正确”,否则返回密码错误。 (2)输入字符‘2’,功能:设置密码。输入设置密码后,系统提示设置正确。 (3)输入字符‘3’,功能:显示密码。 (4)输入字符‘4’,功能:重置密码。密码重置为6个0; (5)输入字符‘0’,功能:系统退出。 (6)输入其他字符,系统提示输入错误请重新输入。 (286点数解答 | 2025-03-28 10:43:21)194
- 编程实现一个简单的密码设置系统,从键盘输入字符命令,分别实现相应的功能。 初始化设置密码为123456,等待命令输入: (1)输入字符‘1’,功能:密码确认。提示输入密码,密码正确,返回“密码正确”,否则返回密码错误。 (2)输入字符‘2’,功能:设置密码。输入设置密码后,系统提示设置正确。 (3)输入字符‘3’,功能:显示密码。 (4)输入字符‘4’,功能:重置密码。密码重置为6个0; (5)输入字符‘0’,功能:系统退出。 (6)输入其他字符,系统提示输入错误请重新输入。 用c语言 (414点数解答 | 2025-03-28 10:43:55)186
- 程实现一个简单的密码设置系统,从键盘输入字符命令,分别实现相应的功能。 初始化设置密码为123456,等待命令输入: (1)输入字符‘1’,功能:密码确认。提示输入密码,密码正确,返回“密码正确”,否则返回密码错误。 (2)输入字符‘2’,功能:设置密码。输入设置密码后,系统提示设置正确。 (3)输入字符‘3’,功能:显示密码。 (4)输入字符‘4’,功能:重置密码。密码重置为6个0; (5)输入字符‘0’,功能:系统退出。 (6)输入其他字符,系统提示输入错误请重新输入 用c语言 (519点数解答 | 2025-03-28 12:42:02)225
- 初始化设置密码为123456,等待命令输入: (1)输入字符‘1’,功能:密码确认。提示输入密码,密码正确,返回“密码正确”,否则返回密码错误。 (2)输入字符‘2’,功能:设置密码。输入设置密码后,系统提示设置正确。 (3)输入字符‘3’,功能:显示密码。 (4)输入字符‘4’,功能:重置密码。密码重置为6个0; (5)输入字符‘0’,功能:系统退出。 (6)输入其他字符,系统提示输入错误请重新输入。 用c语言(409点数解答 | 2025-04-05 18:09:56)179