Coding Task

llllllllllllllCC
马子昂 7 months ago
parent 579db7632f
commit 1cdf937141

@ -1,7 +1,20 @@
"""
需要定义的常量
SUPPORTED_FORMATS = ['.txt', '.docx']
# constants.py
from PyQt5.QtGui import QColor
# 支持的文件格式
SUPPORTED_FORMATS = ['.txt', '.docx', '.pdf']
# 默认窗口大小
DEFAULT_WINDOW_SIZE = (800, 600)
COLOR_CORRECT = QColor('green')
COLOR_WRONG = QColor('red')
"""
# 颜色定义
COLOR_CORRECT = QColor('lightgreen')
COLOR_WRONG = QColor('lightcoral')
COLOR_HIGHLIGHT = QColor('yellow')
# API配置
WEATHER_API_KEY = "your_weather_api_key"
QUOTE_API_URL = "https://api.quotable.io/random"
# 其他常量
MAX_FILE_SIZE = 10 * 1024 * 1024 # 10MB

@ -1,34 +1,57 @@
"""
1. parse_file(file_path)
输入file_path字符串文件路径
输出字符串文件内容或抛出异常
功能主解析函数根据文件扩展名路由到具体解析器
需要包含
调用validate_file_path(file_path)验证路径
根据扩展名调用对应解析函数
统一异常处理
2. parse_txt(file_path)
输入file_path字符串txt文件路径
输出字符串文件内容
功能解析纯文本文件
需要包含
自动检测编码utf-8, gbk等
处理不同换行符
返回纯文本内容
3. parse_docx(file_path)
输入file_path字符串docx文件路径
输出字符串文档文本内容
功能解析Word文档
需要包含
提取所有段落文本
保留基本格式换行
忽略图片表格等非文本元素
4. validate_file_path(file_path)
输入file_path字符串文件路径
输出布尔值是否有效
功能验证文件路径的有效性
需要包含
检查文件是否存在
检查文件是否可读
检查文件大小是否合理
"""
import os
from typing import Union
class FileParser:
@staticmethod
def parse_file(file_path: str) -> str:
"""
主解析函数根据文件扩展名路由到具体解析器
- 调用validate_file_path(file_path)验证路径
- 根据扩展名调用对应解析函数
- 统一异常处理
"""
# TODO: 实现主解析函数逻辑
pass
@staticmethod
def parse_txt(file_path: str) -> str:
"""
解析纯文本文件
- 自动检测编码utf-8, gbk等
- 处理不同换行符
- 返回纯文本内容
"""
# TODO: 实现实现txt文件解析逻辑
pass
@staticmethod
def parse_docx(file_path: str) -> str:
"""
解析Word文档
- 提取所有段落文本
- 保留基本格式换行
- 忽略图片表格等非文本元素
"""
# TODO: 实现docx文件解析逻辑
pass
@staticmethod
def parse_pdf(file_path: str) -> str:
"""
解析PDF文档
- 提取文本内容
- 保留基本格式换行
"""
# TODO: 实现PDF文件解析逻辑
pass
@staticmethod
def validate_file_path(file_path: str) -> bool:
"""
验证文件路径的有效性
- 检查文件是否存在
- 检查文件是否可读
- 检查文件大小是否合理
"""
# TODO: 实现文件路径验证逻辑
pass

@ -1,12 +1,22 @@
"""
1. main()
输入命令行参数通过sys.argv获取
输出整数程序退出码
功能应用程序主入口点
需要包含
创建QApplication实例
创建MainWindow实例
显示窗口
启动事件循环
返回退出码
"""
# main.py
import sys
from PyQt5.QtWidgets import QApplication
from src.main_window import MainWindow
def main():
"""
应用程序主入口点
- 创建QApplication实例
- 创建MainWindow实例
- 显示窗口
- 启动事件循环
- 返回退出码
"""
# TODO: 实现主函数逻辑
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
if __name__ == "__main__":
main()

@ -1,70 +1,88 @@
"""
1. __init__(self)
输入
输出构造函数
功能初始化主窗口设置基本属性调用UI初始化方法
需要包含
窗口标题设置为"隐私学习软件 - 仿Word"
窗口大小设置为800x600
初始化学习内容存储变量self.learning_content = ""
初始化当前输入位置self.current_index = 0
调用self.initUI()
2. initUI(self)
输入
输出
功能创建和布局所有UI组件
需要包含
创建中央文本编辑区域QTextEdit
调用self.createMenuBar()创建菜单
创建状态栏并显示"就绪"
连接文本变化信号到self.onTextChanged
3. createMenuBar(self)
输入
输出
功能创建菜单栏和所有菜单项
需要包含
文件菜单打开(Ctrl+O)保存(Ctrl+S)退出(Ctrl+Q)
帮助菜单关于
为每个菜单项连接对应的槽函数
4. openFile(self)
输入通过文件对话框获取路径
输出
功能打开文件选择对话框并加载选中的文件
需要包含
显示文件选择对话框过滤条件*.txt, *.docx
如果用户选择了文件调用FileParser.parse_file(file_path)
成功时将内容显示在文本区域重置打字状态
失败时显示错误消息框
5. saveFile(self)
输入通过文件对话框获取路径
输出布尔值成功/失败
功能保存当前内容到文件
需要包含
显示保存文件对话框
将文本区域内容写入选定文件
返回操作结果
6. showAbout(self)
输入
输出
功能显示关于对话框
需要包含
显示消息框包含软件名称版本描述
7. onTextChanged(self)
输入通过信号自动触发
输出
功能处理文本变化事件实现打字逻辑
需要包含
获取当前文本内容
调用打字逻辑检查输入正确性
更新高亮显示和状态栏
8. highlightText(self, position, color)
输入
position整数要高亮到的字符位置
colorQColor对象高亮颜色
输出
功能高亮显示从开始到指定位置的文本
需要包含
使用QTextCursor选择文本范围
应用背景颜色格式
恢复光标位置
"""
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QTextEdit, QAction,
QFileDialog, QVBoxLayout, QWidget, QLabel, QStatusBar)
from PyQt5.QtGui import QFont, QTextCharFormat, QColor
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
"""
初始化主窗口
- 设置窗口标题为"隐私学习软件 - 仿Word"
- 设置窗口大小为800x600
- 初始化学习内容存储变量
- 初始化当前输入位置
- 调用initUI()方法
"""
# TODO: 实现构造函数逻辑
pass
def initUI(self):
"""
创建和布局所有UI组件
- 创建中央文本编辑区域QTextEdit
- 调用createMenuBar()创建菜单
- 创建状态栏并显示"就绪"
- 连接文本变化信号到onTextChanged
"""
# TODO: 实现UI初始化逻辑
pass
def createMenuBar(self):
"""
创建菜单栏和所有菜单项
- 文件菜单打开(Ctrl+O)保存(Ctrl+S)退出(Ctrl+Q)
- 帮助菜单关于
- 为每个菜单项连接对应的槽函数
"""
# TODO: 实现菜单栏创建逻辑
pass
def openFile(self):
"""
打开文件选择对话框并加载选中的文件
- 显示文件选择对话框过滤条件*.txt, *.docx
- 如果用户选择了文件调用FileParser.parse_file(file_path)
- 成功时将内容显示在文本区域重置打字状态
- 失败时显示错误消息框
"""
# TODO: 实现打开文件逻辑
pass
def saveFile(self):
"""
保存当前内容到文件
- 显示保存文件对话框
- 将文本区域内容写入选定文件
- 返回操作结果
"""
# TODO: 实现保存文件逻辑
pass
def showAbout(self):
"""
显示关于对话框
- 显示消息框包含软件名称版本描述
"""
# TODO: 实现关于对话框逻辑
pass
def onTextChanged(self):
"""
处理文本变化事件实现打字逻辑
- 获取当前文本内容
- 调用打字逻辑检查输入正确性
- 更新高亮显示和状态栏
"""
# TODO: 实现文本变化处理逻辑
pass
def highlightText(self, position, color):
"""
高亮显示从开始到指定位置的文本
- 使用QTextCursor选择文本范围
- 应用背景颜色格式
- 恢复光标位置
"""
# TODO: 实现文本高亮逻辑
pass

@ -0,0 +1,50 @@
# settings/settings_manager.py
import json
import os
from typing import Any, Dict
class SettingsManager:
def __init__(self, config_file: str = "config.json"):
"""
初始化设置管理器
- 指定配置文件路径
- 加载现有配置或创建默认配置
"""
# TODO: 实现构造函数逻辑
pass
def load_settings(self) -> Dict[str, Any]:
"""
加载设置
- 从配置文件读取设置
- 返回设置字典
"""
# TODO: 实现设置加载逻辑
pass
def save_settings(self, settings: Dict[str, Any]) -> bool:
"""
保存设置
- 将设置保存到配置文件
- 返回保存结果
"""
# TODO: 实现设置保存逻辑
pass
def get_setting(self, key: str, default: Any = None) -> Any:
"""
获取特定设置项
- 根据键名获取设置值
- 如果不存在返回默认值
"""
# TODO: 实现获取设置项逻辑
pass
def set_setting(self, key: str, value: Any) -> bool:
"""
设置特定设置项
- 设置指定键的值
- 保存到配置文件
"""
# TODO: 实现设置设置项逻辑
pass

@ -1,54 +1,67 @@
"""
1. __init__(self, learning_content)
输入learning_content字符串学习材料
输出构造函数
功能初始化打字逻辑状态
需要包含
存储学习材料
初始化当前索引为0
初始化错误计数为0
2. check_input(self, user_text)
输入user_text字符串用户输入的文本
输出字典包含检查结果
correct布尔值当前输入是否正确
expected字符串当前期望的字符
position整数当前位置
completed布尔值是否完成
accuracy浮点数准确率
功能检查用户输入与学习材料的匹配情况
需要包含
逐字符比较逻辑
进度跟踪
准确率计算
3. get_expected_text(self)
输入
输出字符串当前期望输入的文本部分
功能获取用户接下来应该输入的内容
需要包含
返回从当前位置开始的一定长度文本如10个字符
处理文本结束情况
4. get_progress(self)
输入
输出字典包含进度信息
current整数当前位置
total整数总长度
percentage浮点数完成百分比
remaining整数剩余字符数
功能获取当前学习进度统计
5. reset(self, new_content=None)
输入new_content字符串可选新的学习材料
输出
功能重置打字状态
需要包含
重置当前索引为0
重置错误计数
如果提供了新内容更新学习材料
6. get_statistics(self)
输入
输出字典包含统计信息
total_chars整数总字符数
typed_chars整数已输入字符数
error_count整数错误次数
accuracy_rate浮点数准确率
功能获取打字统计信息
"""
class TypingLogic:
def __init__(self, learning_content: str):
"""
初始化打字逻辑状态
- 存储学习材料
- 初始化当前索引为0
- 初始化错误计数为0
"""
# TODO: 实现构造函数逻辑
pass
def check_input(self, user_text: str) -> dict:
"""
检查用户输入与学习材料的匹配情况
- 逐字符比较逻辑
- 进度跟踪
- 准确率计算
- 返回字典包含:
* correct: 布尔值当前输入是否正确
* expected: 字符串当前期望的字符
* position: 整数当前位置
* completed: 布尔值是否完成
* accuracy: 浮点数准确率
"""
# TODO: 实现输入检查逻辑
pass
def get_expected_text(self) -> str:
"""
获取用户接下来应该输入的内容
- 返回从当前位置开始的一定长度文本如10个字符
- 处理文本结束情况
"""
# TODO: 实现期望文本获取逻辑
pass
def get_progress(self) -> dict:
"""
获取当前学习进度统计
- current: 整数当前位置
- total: 整数总长度
- percentage: 浮点数完成百分比
- remaining: 整数剩余字符数
"""
# TODO: 实现进度获取逻辑
pass
def reset(self, new_content: str = None):
"""
重置打字状态
- 重置当前索引为0
- 重置错误计数
- 如果提供了新内容更新学习材料
"""
# TODO: 实现重置逻辑
pass
def get_statistics(self) -> dict:
"""
获取打字统计信息
- total_chars: 整数总字符数
- typed_chars: 整数已输入字符数
- error_count: 整数错误次数
- accuracy_rate: 浮点数准确率
"""
# TODO: 实现统计信息获取逻辑
pass

@ -0,0 +1,35 @@
# utils/helper_functions.py
import os
import hashlib
from typing import Optional
class Utils:
@staticmethod
def detect_encoding(file_path: str) -> str:
"""
检测文件编码
- 尝试多种编码格式
- 返回最可能的编码
"""
# TODO: 实现编码检测逻辑
pass
@staticmethod
def format_file_size(size_bytes: int) -> str:
"""
格式化文件大小
- 将字节数转换为可读格式
- 返回格式化字符串
"""
# TODO: 实现文件大小格式化逻辑
pass
@staticmethod
def calculate_file_hash(file_path: str) -> str:
"""
计算文件哈希值
- 使用SHA256算法
- 返回哈希字符串
"""
# TODO: 实现文件哈希计算逻辑
pass
Loading…
Cancel
Save