首页 > 其他分享 >12.27

12.27

时间:2023-12-27 23:34:31浏览次数:41  
标签:翻译 String 12.27 实验 模块 JFinal new

软件构造实验作业

实验名称:

班级:信2105-1    学号20214145    姓名粘艺凡       

 

实验一:百度机器翻译SDK实验

一、实验要求

百度机器翻译SDK实验(2023.11.29日完成) 

参考资料:https://ai.baidu.com/ai-doc/index/MT

    https://cloud.baidu.com/doc/MT/index.html

https://console.bce.baidu.com/tools/?_=1669807341890#/api?product=AI&project=%E6%9C%BA%E5%99%A8%E7%BF%BB%E8%AF%91&parent=%E9%89%B4%E6%9D%83%E8%AE%A4%E8%AF%81%E6%9C%BA%E5%88%B6&api=oauth%2F2.0%2Ftoken&method=post

  实验效果样例图:

    

 

二、实验步骤

 

任务一:下载配置百度图像增强与特效的Java相关库及环境(占10%)。

领取免费资源

下载配置百度图像增强与特效的Java相关库及环境(占10%)。

 

创建应用

 

查看示例代码

 

然后带入相应的包

 

 

任务二:了解百度翻译相关功能并进行总结,包括文本翻译-通用版和文本翻译-词典版(占20%)

文本翻译通用版:

文本翻译是百度翻译依托领先的自然语言处理技术推出的在线文本翻译服务,可支持中、英、日、韩等多种语言互译,多种语种自动检测。支持200+语种互译,传入待翻译内容,并指定源语言(支持语种自动检测)和目标语言,即可获得翻译结果,并支持术语干预

文本翻译词典版:

在文本翻译-通用版的基础上,提供词典资源和语音合成资源。词典资源 词典分中英词典,由于每个词属性不同,词典结果不一定包含所有部分。 如源语言为中文,词典数据包括:拼音、词性、中文释义、英文释义、近义词等资源。 如源语言为英文,词典数据包括:英文释义、中文释义、音标、核心词汇类别等。

总的来说,文本法医通用版更注重整体文本的翻译,而词典版更专注于单个词汇的详细解释和相关信息。用户选择使用那个版本取决与他们的具体需求,是需要翻译一整段文本还是深入了解特定词汇的含义和用法。

任务三:完成百度翻译相关功能代码并测试调用,要求可以实现中文翻译成英文,英文翻译成中文(占30%)。

翻译的主界面:

 

有翻译内容显示,中英文互译以及要显示的翻译的内容。

首先是英文翻译为中文。

 

代码如下:

package com.example;

 

import com.google.gson.JsonArray;

import com.google.gson.JsonObject;

import com.google.gson.JsonParser;

import okhttp3.*;

import org.json.JSONException;

import org.json.JSONObject;

 

import javax.swing.*;

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.IOException;

 

public class fanyi extends JFrame {

 

    private static final String API_KEY = "dzjU0EZolFp0hpYlKD8ckSpk";

    private static final String SECRET_KEY = "XbMab4iuLO4dkkKACNDQw5nONYRjTyv4";

 

    private static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();

 

    private JTextArea inputTextArea;

    private JTextArea outputTextArea;

    private JComboBox<String> fromLanguageComboBox;

    private JComboBox<String> toLanguageComboBox;

 

 

    public fanyi() {

        // Set up the main frame

        setTitle("翻译GUI");

        setSize(500, 400);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setLocationRelativeTo(null);

 

        // Set up the language options

        String[] languages = {"en", "zh"};

        fromLanguageComboBox = new JComboBox<>(languages);

        toLanguageComboBox = new JComboBox<>(languages);

 

        // Create components

        inputTextArea = new JTextArea(10, 40);

        inputTextArea.setFont(new Font("SimSun", Font.PLAIN, 16)); // Set font size to 16

        outputTextArea = new JTextArea("显示翻译内容");

        outputTextArea.setFont(new Font("SimSun", Font.PLAIN, 16)); // Set font size to 16

        outputTextArea.setForeground(new Color(34, 139, 34)); // Set text color to green

        outputTextArea.setEditable(false);

 

        JButton translateButton = new JButton("开始翻译");

        translateButton.addActionListener(new ActionListener() {

            @Override

            public void actionPerformed(ActionEvent e) {

                translateText();

            }

        });

 

        // Set up the layout

        JPanel mainPanel = new JPanel(new BorderLayout());

        mainPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

 

        JPanel inputPanel = new JPanel(new BorderLayout());

        inputPanel.add(new JLabel("要翻译内容:"), BorderLayout.NORTH);

        inputPanel.add(new JScrollPane(inputTextArea), BorderLayout.CENTER);

 

        JPanel translationOptionsPanel = new JPanel();

        translationOptionsPanel.add(fromLanguageComboBox);

        translationOptionsPanel.add(new JLabel("->"));

        translationOptionsPanel.add(toLanguageComboBox);

 

        JPanel buttonPanel = new JPanel();

        buttonPanel.add(translateButton);

 

        mainPanel.add(inputPanel, BorderLayout.NORTH);

        mainPanel.add(outputTextArea, BorderLayout.CENTER);

        mainPanel.add(translationOptionsPanel, BorderLayout.WEST);

        mainPanel.add(buttonPanel, BorderLayout.SOUTH);

 

        // Add components to the frame

        add(mainPanel);

 

        // Make the frame visible

        setVisible(true);

    }

 

    private void translateText() {

        try {

            String inputText = inputTextArea.getText();

            String accessToken = getAccessToken();

            String translationResult = performTranslation(inputText, accessToken);

            System.out.println(inputText);

            String translatedText = extractTranslation(translationResult);

            outputTextArea.setText(translatedText);

        } catch (IOException e) {

            e.printStackTrace();

            outputTextArea.setText("失败。");

        }

    }

    private String performTranslation(String text, String accessToken) throws IOException {

        String fromLanguage = (String) fromLanguageComboBox.getSelectedItem();

        String toLanguage = (String) toLanguageComboBox.getSelectedItem();

        MediaType mediaType = MediaType.parse("application/json");

        String jsonBody = String.format( "{\"from\":\"%s\",\"to\":\"%s\",\"q\":\"" + text + "\"}", fromLanguage, toLanguage);

        RequestBody body = RequestBody.create(mediaType, jsonBody);

        Request request = new Request.Builder()

                .url("https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token=" + accessToken)

                .method("POST", body)

                .addHeader("Content-Type", "application/json")

                .addHeader("Accept", "application/json")

                .build();

        Response response = HTTP_CLIENT.newCall(request).execute();

        return response.body().string();

 

    }

 

    private String extractTranslation(String translationResult) {

        JsonObject json = JsonParser.parseString(translationResult).getAsJsonObject();

        JsonObject resultObject = json.getAsJsonObject("result");

        System.out.println(json);

        JsonArray translations = resultObject.getAsJsonArray("trans_result");

        System.out.println(translations);

        JsonObject translation = translations.get(0).getAsJsonObject();

        if (json.has("error_code")) {

            // 检查是否包含错误码,如果是,处理错误信息

            int errorCode = json.get("error_code").getAsInt();

            String errorMsg = json.get("error_msg").getAsString();

            System.out.println("Translation error: " + errorCode + ", " + errorMsg);

            return "Translation not available";

        }

        if (json.has("trans_result")) {

 

            if (!translations.isJsonNull() && translations.size() > 0) {

 

                if (translation.has("dst")) {

                    return translation.get("dst").getAsString();

                }

            }

        }

        return translation.get("dst").getAsString();

    }

 

 

    private String getAccessToken() throws IOException {

        MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");

        RequestBody body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + API_KEY

                + "&client_secret=" + SECRET_KEY);

        Request request = new Request.Builder()

                .url("https://aip.baidubce.com/oauth/2.0/token")

                .method("POST", body)

                .addHeader("Content-Type", "application/x-www-form-urlencoded")

                .build();

        Response response = HTTP_CLIENT.newCall(request).execute();

        try {

            return new JSONObject(response.body().string()).getString("access_token");

        } catch (JSONException e) {

            throw new RuntimeException(e);

        }

    }

 

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {

            @Override

            public void run() {

                new fanyi();

            }

        });

    }

}

 

 

任务完成百度翻译GUI相关功能代码并测试调用,要求可以实现中文翻译成英文,英文翻译成中文(占30%)。

翻译的主界面:

 

有翻译内容显示,中英文互译以及要显示的翻译的内容。

接下来是中文翻译为英文。

 

代码如下:

三、实验总结

本次实验相对来说比较简单,学习了Java的控件的放置,由于学习的时间较短,所以画出来的界面很难看,相信以后多用会得到很大的提高,另外还学习了百度翻译的接口的调用,功能很强大。

 

实验二:百度图像增强与特效SDK实验

一、实验要求

实验效果样例图:

 

  参考资料:https://cloud.baidu.com/product/imageprocess

    https://cloud.baidu.com/doc/IMAGEPROCESS/index.html

 

二、实验步骤

 

任务一:下载配置百度图像增强与特效的Java相关库及环境(占10%)。

首先领取百度图像增强与特效的免费资源

 

然后创建应用列表

 

进行调试

 

通过maven下载依赖项

 

 

任务二:了解百度图像增强与特效相关功能并进行总结(占20%)。

图像增强与特效对质量较低的图片进行去雾、对比度增强、无损放大等多种优化处理,重建高清图像;并提供黑白图像上色、图像风格转换、人像动漫化等多个图像特效API能力,满足网络营销、广告活动等多种业务需求。

百度图像增强与特效包括黑白图像上色、图像风格转换、人像动画、自定义图像风格、图像无损放大、图像去雾、图像对比度增强、图像清晰度增强、图像色彩增强等等。

 

任务三:完成图像增强GUI相关功能代码并测试调用,要求上传自己的模糊照片进行图像增强(占30%)

首先是主界面

 

选择照片

 

 

然后进行图像增强处理

 

 

可以发现清晰度增强。

 

任务四:完成图像特效GUI相关功能代码并测试调用,要求上传自己的照片进行图像特效(占30%)。

主界面和上面的是一样的选择照片

 

 

然后进行人像动漫画处理

 

 

二、实验总结

相较于上次百度翻译实验,这次实验出现了很多的问题,其中有一项就是images的值为空,这个问题困扰了我很长的时间,首先是把照片转换为64位然后在调用接口就是出现错误,然后我重新获取key就解决了这个问题,本次实验还学了如何使用GUI显示图片。

 

 

 

 

实验三:JFinal极速开发框架实验

一、实验要求

根据参考资料,学习JFinal极速开发框架的使用并如下任务:

 参考地址:https://jfinal.com/project/1

    

    参考步骤:

     1、打开JFinal参考地址:https://jfinal.com/project/1,下载JFinal 5.0.0 demo for maven.zip。

     2、学习Maven的使用及JFinal 5.0.0 demo for maven导入方法参考地址:https://jfinal.com/doc/1-1。

     3、运行JFinal:参考JFinal 5.0.0 demo for maven中的“启动说明.txt”。

     4、学习JFinal的基本功能,并完成本次试验任务。

 

 

二、实验步骤

 

任务一:了解Maven及其使用方法,总结其功能作用(占20%)

Maven 是一个用于构建和管理 Java 项目的强大工具。它提供了一种标准的项目结构,定义了项目对象模型(Project Object Model,POM),并自动处理项目构建、依赖管理、文档生成等任务

1. 项目结构和 POM 文件:

Maven 使用标准的项目结构,将源代码、资源文件和其他项目元素组织成统一的目录结构。

项目的元数据和配置信息存储在 pom.xml 文件中,其中包含了项目的依赖、插件、构建阶段等配置。

2. 依赖管理:

Maven 提供了强大的依赖管理机制,能够自动下载、管理和配置项目所需的第三方库和工具。

通过在 pom.xml 中定义依赖,Maven 负责下载这些依赖,并确保它们的版本和传递性依赖得到正确处理。

3. 构建生命周期和插件:

Maven 定义了一组构建生命周期,包括清理、编译、测试、打包、部署等阶段。

插件是用于执行构建任务的工具,Maven 支持各种插件,例如编译插件、测试插件、打包插件等。

4. 自动化构建:

Maven 支持自动化构建,通过命令行或集成到各种集成开发环境(IDE)中,简化了项目的构建过程。

常用命令包括 mvn clean(清理项目)、mvn compile(编译项目)、mvn test(运行测试)等。

5. 多模块项目:

Maven 支持多模块项目,允许将大型项目划分为独立的子模块,每个模块都有自己的 pom.xml 文件。

父项目可以统一管理依赖和插件的版本,子模块则可以继承这些配置。

6. 文档生成:

Maven 可以生成项目的文档,包括 Javadoc 文档和站点文档。

通过插件,Maven 可以生成丰富的项目报告,如代码覆盖率、静态代码分析报告等。

7. 集成 CI/CD:

Maven 可以集成到持续集成(CI)和持续交付(CD)流程中,自动触发构建、测试和部署任务。

8. 插件生态系统:

Maven 拥有庞大的插件生态系统,社区提供了大量的插件,覆盖了各种构建和开发任务。

总的来说,Maven 简化了 Java 项目的构建和管理过程,通过统一的项目结构和 POM 文件,使得项目的配置和依赖管理变得更加容易和一致。它是 Java 生态系统中被广泛使用的构建工具之一

 

任务二:学习JFinal框架,基于Maven建立JFinal工程,并对JFinal框架功能进行总结介绍(占30%)

JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python等动态语言的开发效率。但目前此框架不是主流框架,大部分公司极少使用。JFinal 由Handler、Interceptor、Controller、Render、Plugin 五大部分组成

下载了JFinal 5.0.0 demo for maven并导入到了IDEA建立对应的数据库经过配置可以正常运行,

以下是运行后的正常界面

 

 

对Jfinal总结

JFinal是一个轻量级、易用且高性能的Java Web框架,适用于中小型项目的快速开发。它的设计理念是简洁而实用,提供了丰富的功能和灵活的扩展机制。JFinal采用了经典的MVC设计模式,将应用程序划分为模型、视图和控制器三个主要组件,以提高代码的组织性和可维护性。并且JFinal框架的API设计非常简洁,易于学习和使用。是一个轻量级的非常适合学习的框架。

任务三:基于JFinal完成一个简单的学生信息管理系统(要求实现学生信息的增删改查)(占40%)

首先是主界面

点击之后进入学生信息管理界面可以查看学生的基本信息

 

然后增加学生的信息

 

然后可以删除学生的信息

 

修改学生的信息

 

 

二、实验总结

通过本次实验学习使用了JFINAl框架,发现jfinal框架用处很多,很便捷,便于短时间内web的开发,节约了很多的时间。JFinal提供的API使得我们开发更加高效,可以更加灵活的运用它所提供的一些功能模块。我的jfinal业务逻辑认识还有待提升。

 

 

 

 

大作业:

一、实验要求

各位同学可根据自身情况进行选择:

    选项一:根据实验一、二、三完成如下任务:

        任务一:基于Jfinal构建信息管理系统,要求包含用户管理,翻译业务模块管理,图片优化模块管理(占30%)。

        任务二:要求不同用户登录后可进行文字翻译和图片优化业务处理,并且可查看提交业务处理结果,时间,处理列表,图形汇总等(占30%)。

        任务三:要求管理员登录后可查看不同用户的各项业务使用情况(占30%)。

        实验总结:(占10%)

 

    选项二:基于这学期QQ群里发布的各类软件开发设计比赛题目的项目。

        提交的作业要注明题目来源,写清题目要求,附上官网赛题地址。

        可选比赛列表包括:2023石家庄“九天杯”人工智能命题打榜赛、2023年第五届全国高校计算机能力挑战赛、2023-2024年中国计算机应用技术大赛、2023 CCF大数据与计算智能大赛、全国高校计算机能力挑战赛、“软件杯”程序设计大赛、全国计算机设计大赛等。

 

 

 

二、实验步骤

 

任务一:基于Jfinal构建信息管理系统,要求包含用户管理,翻译业务模块管理,图片优化模块管理(占30%)。

首先是主界面登录分为管理员和普通用户

 

普通用户登陆后包含三个模块

翻译模块

 

 

图片处理模块

 

 

历史记录查看

 

管理员模块

学生信息处理

 

删除学生信息

 

添加学生信息

 

 

翻译业务模块

 

图片处理模块

 

历史记录查看模块

 

 

任务二:要求不同用户登录后可进行文字翻译和图片优化业务处理,并且可查看提交业务处理结果,时间,处理列表,图形汇总等(占30%)。首先是主界面登录分为管理员和普通用户

 

普通用户登陆后包含三个模块

翻译模块

 

 

图片处理模块

 

 

历史记录查看

 

管理员模块

学生信息处理

 

删除学生信息

 

添加学生信息

 

 

翻译业务模块

 

图片处理模块

 

历史记录查看模块

 

 

 

 

任务三:要求管理员登录后可查看不同用户的各项业务使用情况(占30%)。

管理员模块

学生信息处理

 

删除学生信息

 

添加学生信息

 

 

翻译业务模块

 

图片处理模块

 

历史记录查看模块

 

 

二、实验总结

相对来说大作业比前几次作业做起来难,花费了很长的时间,最难的地方就是看不懂jfinal后台的运行逻辑,想了很长时间才想通,结合前三个实验,翻译,图片处理,信息管理还算简单,调用百度翻译和图片处理的接口进行,最重要的还是图片格式的处理,在这方面花了很长的时间。

 

 

 

 

 

标签:翻译,String,12.27,实验,模块,JFinal,new
From: https://www.cnblogs.com/mine-my/p/17931684.html

相关文章

  • 12.27每日总结
    using System; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 实验1_1 {     class Program     {         static void Main(string[]args)         { ......
  • 12.27阅读笔记《软件需求分析》
    许多工程项目不能按时完成或者最后导致失败的一个很大的原因就是弄不清需求是什么,不能准确理解客户的需求意图,所以前期做好需求调研是一件非常重要的工作,是一件与系统代码开发占有同等比重的工作。读这本书的同时,要注意实践过程,不必非得要从一个新项目开始应用,可以找一个以前......
  • 12.27生成随机数,循环间断,数组元素访问,
     无限循环即在限制循环次数的位置为空  数组中数据建议和数组类型保持一致  0位是第一个元素 ......
  • 闲话12.27
    今天很颓废啊。上午劲爆写题啊,猜数游戏这题寒假的时候讲过......
  • 12.27闲话
    我去怎么明天就考试了今天没啥抽象事,就是分块入门9题我T1都没写过去非常恼带修莫队没写出来,要是线段树就直接乱杀了,分块估计也能乱杀我非常恼TLE的带修莫队#include<bits/stdc++.h>#defineintlonglong/*---------------fastio---------------*/usingnamespacest......
  • 12.27每日总结2
    中午的时候做了软件企业文化的大作业公司管理1公司管理体系概述在我们公司,建立一个完善的公司管理体系是为了确保公司运营高效、有序,实现长期发展目标。公司管理体系包括管理理念、目标、架构和运作机制等方面,为公司的各项管理工作提供指导和支持。  1.1公司管理理念 ......
  • 12.27每日总结
    今天早上进行了软件构造的实验作业实验二:百度图像增强与特效SDK实验一、实验要求任务一:下载配置百度图像增强与特效的Java相关库及环境(占10%)。任务二:了解百度图像增强与特效相关功能并进行总结(占20%)。任务三:完成图像增强GUI相关功能代码并测试调用,要求上传自己的模糊照片进行......
  • 雅礼 2023.12.27 习题课记录
    雅礼2023.12.27习题课记录前言这一场罚时多,都是一些低级错误。好吧全都是水题。水题(只放代码)莫诺卡普参加了一场编程比赛,其中包括\(26\)个问题,从A到Z命名。问题按难度排序。此外,已知莫诺卡普可以在\(1\)分钟内解决问题A,在\(2\)分钟内解决问题B,\(\dots\),在\(2......
  • 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.12.27)
    一、百度网盘SVIP超级会员共享账号可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答。我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免了U盘的物理载体,直接在网上就实现文件传输。百度网盘SVIP会员可以让自己百度账......
  • 金蝶云表单插件开发--物料清单BOM获取老系统的BOM信息【2023.12.27】
    需求:1、新系统中同一产品编码,可以通过快捷获取老系统中的同一产品编码的BOM信息;2、数据信息查询:通过存储过程去查询,再转入子项明细中;     usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Data;usingSystem.Com......