当前位置: 首页 > news >正文

基于 .Net Core+MySQL开发(WinForm)翻译平台

翻译“king”平台

项目说明

项目目标

目前各家平台的翻译效果各有优劣,很多时候需要同时比较多个平台的结果,才能取得较好的效果。因此,我们小组要实现一个整合各大主流平台(百度、有道、讯飞、必应、谷歌等)的翻译接口,用户输入要翻译的文本后,将各个平台的翻译结果呈现给用户。除此以外,我们还为这个平台加入了社区功能,用户可以在社区内对需要翻译的文本进行提问、回答、采纳、记录,实现人工翻译与机器翻译的有机结合。本项目覆盖了本学期学习的重点内容,通过这个项目,我们每一位小组成员都可以很好地实践这个学期学习的内容,锻炼自己的代码能力。

软硬件环境需求

  • 客户端运行环境:Windows操作系统; .Net Framework
  • 服务器运行环境:Linux操作系统; .Net Core; MySQL数据库

使用的关键技术

  1. 通信与Web API
  2. 数据库
  3. WPF技术
  4. 文字识别技术
  5. 语音识别技术

需求分析

系统用例

图 1 系统用例图

注册:

参与者:游客

基本事件流:游客进入社区时,显示登陆界面,如果没有社区账号,点击注册按钮,输入用户名和密码,点击确认注册。若用户名未重复,则注册成功。否则重新输入用户名。

登录:

参与者:游客

基本事件流:游客进入社区时,显示登陆界面,如果已有社区账号,在用户名和密码输入框中输入账号和密码,点击登录按钮,若用户名密码正确,则登录成功,变成用户。

查看社区的提问与回答:

参与者:用户,游客

基本事件流:用户进入社区时,可浏览社区中存在的问题,点击问题进入详情页,可浏览该问题下已有的回答。游客若选择不登录进入社区,则只可浏览社区的问题与回答。

提出问题:

参与者:用户

基本事件流:用户进入社区后,点击提问按钮,输入问题的标题、内容以及悬赏金额等信息,点击确定,将问题添加到社区。

回答问题:

参与者:用户

基本事件流:用户进入社区后,浏览社区中的问题,点击问题进入详情页,在输入框内输入回答,点击确定按钮,则提交回答。

采纳回答:

参与者:用户

基本事件流:用户进入社区后,点击查看自己提出的问题,点击问题进入详情页,在回答旁边的按钮点击采纳,则将该问题采纳回答。

查看自己的提问、回答:

参与者:用户

基本事件流:用户进入社区后,点击查看自己提出的问题,可浏览自己提出的问题。点击查看自己的回答,可看到自己回答过的问题列表与回答。

删除自己的提问、回答:

参与者:用户

基本事件流:用户进入社区后,点击查看自己的提问,可浏览自己的所有提问,点击提问旁的删除,即可删除提问。用户点击查看自己的回答,可浏览自己回答的提问题目与自己的回答,在旁边点击删除回答,即可删除。

查看自己的笔记:

参与者:用户

基本事件流:用户进入社区后,点击查看自己的笔记,可浏览自己的所有笔记(一般是收藏的句子翻译)。

添加、删除、修改笔记:

参与者:用户

基本事件流:用户进入社区后,点击查看自己的笔记,可浏览自己的笔记(一般是是句子翻译)。点击笔记可查看笔记内容,修改笔记的内容点击保存,即可修改。点击新增笔记,输入笔记的标题与内容即可添加。在笔记旁边点击删除即可删除。

调用翻译接口

参与者:用户、游客

基本事件流:用户和游客可以在客户端首页看到文本输入界面,通过文本、截图、语音等方式进行输入后,由客户端向服务器发送请求,调用各个平台的翻译接口,并将结果返回,呈现给用户。

业务流程

图 2翻译与社区流程图

概要设计

功能模块设计

图 3功能模块图

截图翻译

输入:从屏幕截取的一张图片

输出:提取图片中文字后的翻译结果

功能概述: 用户可以屏幕上截取一个区域,客户端对该截图进行OCR后,将得到的文本发送到服务器进行翻译。最后将翻译结果呈现在界面上,反馈给用户。

语音翻译

输入:录制的一段音频

输出:提取音频中文本后的翻译结果

功能概述:客户端对用户录音进行识别后,将得到的文本发送到服务器进行翻译。最后将翻译结果呈现在界面上,反馈给用户。

文本翻译

输入:录制的一段音频

输出:提取音频中文本后的翻译结果

功能概述:客户端对用户录音进行识别后,将得到的文本发送到服务器进行翻译。最后将翻译结果呈现在界面上,反馈给用户。

社区功能

社区包含以下功能:

1.注册

输入:注册的用户名、密码

输出:提示消息

功能概述: 使用用户名查询用户表,若无重复用户名,则在用户表中添加新的用户,提示注册成功。若有重复用户名,则提示用户名不可用。

2.登录

输入:登录用户名、密码

输出:提示消息

功能概述: 使用用户名查询用户表,若无该用户名,则返回无该用户。若有该用户名,对比输入的密码是否与用户表的密码相同,若密码正确则登录成功,将用户类的用户名属性设为用户名。若密码错误则返回错误提示消息。

3.查看社区的提问与回答

输入:无

输出:所有提问与提问所对应的回答

功能概述: 进入社区后,调用方法查询提问表,将社区中所有的提问显示在界面中。点击一个提进入提问的详情页,查询回答表,找出该提问的所有回答,显示在页面中。

4.提出问题

输入:用户名、问题标题、内容以及悬赏金额

输出:提示消息

功能概述: 将输入的问题的信息与提出该提问的用户名(作为外键)变成一条记录,添加至提问表,并将悬赏金额从用户表的金额属性扣除,提示 提出成功。

5.回答问题

输入:当前用户名、该问题的id以及回答内容。

输出:提示消息

功能概述: 将回答的内容与问题的id(外键)和用户名(外键)作为一条记录,添加至回答表,提示,回答成功。

6.采纳问题

输入:回答的用户名、该问题的id以及采纳的回答id。

输出:提示消息

功能概述: 用该问题的id在提问表中找到该问题,然后将该问题的采纳回答列改为采纳回答的id,并在回答表中将该采纳回答的是否采纳列设为已采纳(不可删除)。并在用户表中用回答的用户名找到该用户,给其金额列添加上该问题的悬赏金额。

7.查看自己提出的问题与回答

输入:当前用户的用户名。

输出:当前用户的所有提问、回答

功能概述: 用当前的用户名在提问表中查询出该用户名提出的所有问题,显示在 我的提问 中。用当前用户名在回答表中查询出该用户名回答的所有回答,显示在 我的回答 中(可以再用回答表的提问id(外键)查询出该回答对应的问题的标题内容,并与回答一起显示)。

8.删除自己的提问、回答:

输入:当前的用户名,要删除的问题的id、回答的id

输出:提示消息

功能概述: 删除提问时,使用要删除问题的id在提问表中删除该问题,并同时删除回答表中所有该问题的id,提示删除成功。删除回答时,用该回答的id从回答表中找到该回答,若该回答已被采纳,则提示无法删除;若未被采纳,则从表中删除该回答,提示删除成功。

9.查看自己的笔记

输入:当前的用户名。

输出:当前用户的所有笔记。

功能概述:使用当前用户名在笔记表中查询该用户所添加的所有笔记,并返回给界面。

10.添加、删除、修改笔记

输入:当前的用户名,笔记的内容,笔记的id。

输出:提示消息。

功能概述:添加笔记时,将笔记的内容和当前用户名(作为外键)作为一个记录添加进笔记表中。删除笔记时,使用当前要选中的笔记的id,在笔记表中删除该笔记。修改笔记时,使用当前要选中的笔记id,在笔记表中查询到该笔记,并且将其内容修改为输入的内容。

用户管理

输入:用户名与操作类型

输出:用户信息

功能概述: 对用户的登录、查询数据进行管理,可以删除,增加,修改,查询用户信息。

社区管理

社区管理包含以下功能:

1.问题数据管理

输入:用户名与操作类型

输出:问题信息

功能概述: 对提出问题进行处理筛选,正确处理提问数据,可以删除和增加提问,并且对问题可以在数据库中检索出对应解答。

2.回答数据管理

输入:用户名与操作类型

输出:回答信息

功能概述: 用户可以对自己提出的问题的解答予以确定,并且选出优质解答。

3.笔记数据管理

输入:用户名与操作类型

输出:笔记信息

功能概述: 用户可以将问题和回答添加至笔记,也可以从笔记中删除。

平台API调用

输入:需要翻译的文字与当前语言和需要转换的语言

输出:文字翻译结果

功能概述:用户输入需要翻译的文字,指定的语言后,调用百度等翻译平台的API,完成翻译工作,并接受翻译结果,以文本形式输出。

通信控制

输入:数据与操作类型

输出:对应操作的返回结果

功能概述:通信控制模块负责接收信息,并根据信息中的数据与操作类型调用对应的方法,最后将返回结果输出,发送出去。

核心类图

图 4客户端用户与社区核心类图

图 5服务器Controller核心类图

图 6服务器平台API调用核心类图

图 7服务器数据库管理核心类

界面设计

图 8 翻译界面

图 9 社区界面

http://www.dtcms.com/a/282609.html

相关文章:

  • rLLM:用于LLM Agent RL后训练的创新框架
  • 前端面试题(React 与 Vue)
  • #Datawhale组队学习#7月-强化学习Task1
  • Java大厂面试实录:从电商场景到AI应用的深度技术考察
  • 如何通过域名白名单​OVP防盗链加密视频?
  • 【游戏引擎之路】登神长阶(十八):3天制作Galgame引擎《Galplayer》——无敌之道心
  • AJ Security:实用的 Java Web 安全库
  • Qt获取hid设备信息
  • 抖音小程序开发如何避坑?如何接口调用与性能优化?
  • Nacos 开源 MCP Router,加速 MCP 私有化部署
  • 运维打铁: Ruby 脚本在运维自动化中的应用探索
  • leetcode 3201. 找出有效子序列的最大长度 I 中等
  • K8s 自定义调度器 Part1:通过 Scheduler Extender 实现自定义调度逻辑
  • AI Agent开发学习系列 - langchain之LCEL(1):LangChain LCEL链式编排与RAG增强实践
  • FunASR Paraformer-zh:高效中文端到端语音识别方案全解
  • Django ORM 查询工具对象详解
  • Linux 命令:uname
  • Scalefusion 与 EasyControl 对比:轻量级方案与全功能 IoT MDM 的深度碰撞
  • 前端面试题(HTML、CSS、JavaScript)
  • 在此处打开 powershell 窗口 shift + 右键 修改为 右键弹出
  • [硬件电路-28]:从简单到复杂:宇宙、芯片与虚拟世界的共通逻辑2
  • 1软件工程概念及其基本要素-思考题
  • Netty介绍和基本代码演示
  • 基于渐进式迁移学习网络(PTLN)​的小样本故障诊断模型
  • STM32CubeMX红外收发模块(串口)
  • H3CNE综合实验之五角星
  • 了解linux用户和权限
  • Linux开发利器:探秘开源,构建高效——基础开发工具指南(上)【包管理器/Vim】
  • springboot项目部署到K8S
  • Golang 并发快速上手