基于 .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 社区界面

相关推荐
阿里小阿希1 天前
Vue3 + Element Plus 项目中日期时间处理的最佳实践与数据库设计规范
数据库·设计规范
且行志悠1 天前
Mysql的使用
mysql
白鹭1 天前
MySQL源码部署(rhel7)
数据库·mysql
666和7771 天前
Struts2 工作总结
java·数据库
还听珊瑚海吗1 天前
SpringMVC(一)
数据库
星期天要睡觉1 天前
MySQL 综合练习
数据库·mysql
Y4090011 天前
数据库基础知识——聚合函数、分组查询
android·数据库
JosieBook1 天前
【数据库】MySQL 数据库创建存储过程及使用场景详解
数据库·mysql