请你用python,仿照学生信息管理系统,写一个唐诗管理系统,从txt文件读取唐诗,包含列出所有唐诗的名字、添加一首唐诗、删除一首唐诗,根据诗名查找唐诗、退出程序这些功能,并给出注释、
时间: 2024-12-11 14:18:49 浏览: 10
当然,我可以帮你构建一个简单的Python程序,用于管理唐诗库。我们将创建一个名为`TangPoemsManager.py`的文件,利用基本的文件操作和字典数据结构来存储和处理唐诗。这里是一个基础的示例:
```python
# TangPoemsManager.py
class TangPoem:
"""
唐诗类,存储每首唐诗的信息,包括名称和内容
"""
def __init__(self, title):
self.title = title
self.content = ""
def read_poem(self, filename):
# 从txt文件读取诗的内容
with open(filename, 'r', encoding='utf-8') as file:
self.content = file.read()
def display_title(self):
return self.title
def display_content(self):
return self.content
class TangPoemsManager:
"""
唐诗管理系统类,负责管理唐诗列表
"""
def __init__(self):
self.poems_dict = {}
def load_poems_from_file(self, filename):
"""
加载唐诗库
:param filename: txt文件路径
"""
with open(filename, 'r', encoding='utf-8') as file:
for line in file:
title, content = line.strip().split(':')
poem = TangPoem(title)
poem.read_poem(filename)
self.poems_dict[title] = poem
def list_titles(self):
"""
列出所有唐诗名字
"""
print("\n当前唐诗目录:")
for title in sorted(self.poems_dict.keys()):
print(f"{title}")
def add_poem(self, title, content_path):
"""
添加新诗
:param title: 诗名
:param content_path: 诗的内容文件路径
"""
new_poem = TangPoem(title)
new_poem.read_poem(content_path)
self.poems_dict[title] = new_poem
def delete_poem(self, title):
"""
删除指定的诗
:param title: 要删除的诗名
"""
if title in self.poems_dict:
del self.poems_dict[title]
print(f"已成功删除'{title}'")
else:
print(f"'{title}'未找到,无法删除.")
def search_poem(self, keyword):
"""
根据关键词查找诗
"""
matches = [poem.display_title() for poem in self.poems_dict.values() if keyword in poem.display_content()]
if matches:
print(f"匹配到以下诗:{' '.join(matches)}")
else:
print("未找到匹配的诗.")
def quit(self):
"""
退出程序
"""
print("感谢使用唐诗管理系统,再见!")
exit()
if __name__ == "__main__":
manager = TangPoemsManager()
manager.load_poems_from_file('poems.txt') # 假设诗歌文件名是poems.txt
while True:
action = input("请输入操作(list, add, delete, search, exit): ")
if action.lower() == 'quit':
break
elif action.lower() == 'list':
manager.list_titles()
elif action.lower() == 'add':
title = input("请输入诗名: ")
content_path = input("请输入诗内容文件路径: ")
manager.add_poem(title, content_path)
elif action.lower() == 'delete':
title = input("请输入要删除的诗名: ")
manager.delete_poem(title)
elif action.lower() == 'search':
keyword = input("请输入关键词: ")
manager.search_poem(keyword)
else:
print("无效的操作,请重新输入.")
```
在这个例子中,我们首先定义了两个类:`TangPoem` 和 `TangPoemsManager`。`TangPoem` 存储单首诗的信息,而 `TangPoemsManager` 提供了管理整个唐诗库的功能。
请注意,这个示例假设有一个名为`poems.txt`的文件,其中每行的格式是 "标题: 诗内容"。你需要将实际的诗内容文件替换到相应位置,或根据实际需求修改文件读取部分。
**相关问题--:**
1. 如何在`TangPoemsManager`类中实现文件读取和保存功能?
2. 如何改进`search_poem`函数以支持模糊搜索?
3. 这个系统是否能处理大量唐诗?如果需要优化,可以怎么做?
阅读全文