中级-实训Part1

HelloWorld的编译,部署,测试

  • 运行build.xml前的目录结构:
|__calculator
   |__HelloWorld
      |__Ant
         |__src
            |__HelloWorld.java
         |__build.xml            
      |__Junit
         |__HelloWorld.java
         |__HelloWorldTest.java
         |__junit-4.9.jar
   |__Calculator
   	  |__...
   |__README.md
  • 运行build.xml后的目录结构:
    在这里插入图片描述
|__calculator
   |__HelloWorld
      |__Ant
         |__src
            |__HelloWorld.java
         |__build
      		|__classes
      		   |__HelloWorld.class
         |__build.xml   
         |__helloworld.jar         
      |__Junit
         |__HelloWorld.java
         |__HelloWorldTest.java
         |__junit-4.9.jar
   |__Calculator
   	  |__...
   |__README.md
  • Junit测试后的目录结构:
    在这里插入图片描述
|__calculator
   |__HelloWorld
      |__Ant
         |__src
            |__HelloWorld.java
         |__build
      		|__classes
      		   |__HelloWorld.class
         |__build.xml   
         |__helloworld.jar         
      |__Junit
         |__HelloWorld.java
         |__HelloWorldTest.java
         |__junit-4.9.jar
         |__HelloWorld.class
         |__HelloWorldTest.class
   |__Calculator
   	  |__...
   |__README.md

Calculator(简单计算器)

要求

  1. 例图:

在这里插入图片描述

  1. 当点击含有加号的按钮时,则第一排第二个按钮的文本变为加号;
  2. 当点击“OK”按钮时,将算出12+2的结果并在第一排最后一个按钮显示;
  3. 减号,乘号,除号的功能类似。其中,数字可以自己输入,也可以固定不变。

实现

import javax.swing.*;
import java.awt.GridLayout;
import java.awt.event.*;

public class Calculator extends JFrame{
	public Calculator() {
		JPanel panel = new JPanel();	// 面板容器
		panel.setLayout(new GridLayout(2,5));	// 两行五列		
		
		// 初始化两个数,用文本框输入,输入居中
		JTextField num1 = new JTextField("12");
		num1.setHorizontalAlignment(JTextField.CENTER);
		JTextField num2 = new JTextField("2");
		num2.setHorizontalAlignment(JTextField.CENTER);
		// 运算符
		JTextField op = new JTextField("");
		op.setHorizontalAlignment(JTextField.CENTER);
		op.setEditable(false);	
		// 等于号
		JTextField equal = new JTextField("=");
		equal.setHorizontalAlignment(JTextField.CENTER);
		equal.setEditable(false);
		// 运算结果	
		JTextField res = new JTextField("");
		res.setHorizontalAlignment(JTextField.CENTER);
		res.setEditable(false);
		// 加减乘除
		JButton add = new JButton("+");
		JButton sub = new JButton("-");
		JButton mul = new JButton("*");
		JButton div = new JButton("/");
		// 计算
		JButton ok = new JButton("ok");

		// 依次将元素加入到面板容器中
		panel.add(num1); 
		panel.add(op);
		panel.add(num2);  
	    panel.add(equal);
	    panel.add(res);
		panel.add(add);  
	    panel.add(sub);  
	    panel.add(mul);  
	    panel.add(div);
	    panel.add(ok);
		// 将面板容器加入到窗口中
	    add(panel);

		setBounds(800, 300, 600, 250);	// 设置窗口尺寸和位置	
		setTitle("Easy Calculator");	// 设置标题	

		// 监听ok按钮,监听到则根据运算符进行计算
	    ActionListener okButton = new ActionListener() {
			public void actionPerformed(ActionEvent e){
				double n1 = Double.parseDouble(num1.getText());
				double n2 = Double.parseDouble(num2.getText());
				
				if(op.getText().equals("+")){
					res.setText("" + (n1 + n2));
				}
				if(op.getText().equals("-")){
					res.setText("" + (n1 - n2));
				}
				if(op.getText().equals("*")){
					res.setText("" + (n1 * n2));
				}
				if(op.getText().equals("/")){
					res.setText("" + (n1 / n2));
				}
			}
		};
		// 监听运算符按钮按钮,监听到则设置op
		ActionListener opButton = new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				op.setText(((JButton)e.getSource()).getText());
			}
		};
		
	    // 给按钮增加监听动作
	    add.addActionListener(opButton);
	    sub.addActionListener(opButton);
	    mul.addActionListener(opButton);
	    div.addActionListener(opButton);
	    ok.addActionListener(okButton);

		// 显示窗口
		setVisible(true);
		// 退出窗口
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	
	}

	// 程序入口
	public static void main(String[] args) {
		new Calculator();
	}
} 

效果图

在这里插入图片描述

在这里插入图片描述

Calculator的编译,部署,测试

  • 运行build.xml前的目录结构:
|__calculator
   |__HelloWorld
      |__...
   |__Calculator
      |__Ant
         |__src
            |__Calculator.java
         |__build.xml
      |__Junit
         |__...
      |__SonarQube
         |__...
   |__README.md
  • 运行build.xml后的目录结构:
    在这里插入图片描述
|__calculator
   |__HelloWorld
      |__...
   |__Calculator
   	  |__Ant
         |__src
            |__Calculator.java
         |__build
      	    |__classes
      		   |__HelloWorld.class
         |__build.xml
         |__calculator.jar
      |__Junit
         |__...
      |__SonarQube
         |__...
   |__README.md
  • Junit测试前的目录结构:
|__calculator
   |__HelloWorld
      |__...
   |__Calculator
   	  |__Ant
         |__...
      |__Junit
         |__Calculator.java
         |__CalculatorTest.java
         |__junit-4.9.jar
      |__SonarQube
         |__...
   |__README.md
  • Junit测试后的目录结构:
    在这里插入图片描述
|__calculator
   |__HelloWorld
      |__...
   |__Calculator
   	  |__Ant
         |__...
      |__Junit
         |__Calculator.java
         |__CalculatorTest.java
         |__junit-4.9.jar
         |__Calculator.class
         |__Calculator$1.class
         |__Calculator$2.class
         |__CalculatorTest.class
      |__SonarQube
         |__...
   |__README.md

SonarQube

  • 简介
    Sonar 是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量。

  • 用途

  1. 展示代码的复杂度分布。
  2. 展示源码中严重重复的地方。
  3. 可以很方便地统计并展示单元测试覆盖率。
  4. 可以通过 PMD,CheckStyle,Findbugs 等等代码规则检测工具规范代码编写。
  5. 展示注释量。
  6. 可以通过 PMD,CheckStyle,Findbugs 等等代码规则检测工具检测出潜在的 bug。
  7. 可以找出循环,展示包与包、类与类之间的相互依赖关系;可以检测自定义的架构规则;可以管理第三方的 jar 包;可以利用 LCOM4 检测单个任务规则的应用情况;检测耦合。
  • 配置环境(在/etc/profile末尾添加以下路径,此时为临时路径,每次重新打开终端后若要使用都要先执行命令 source /etc/profile
export SONAR_HOME=/home/zhaowx9/桌面/sonar-3.7.4/bin/linux-x86-64
export SONAR_RUNNER_HOME=/home/zhaowx9/桌面/sonar-runner-2.4
export PATH=$SONAR_RUNNER_HOME/bin:$PATH
  • 启动sonar服务

在这里插入图片描述

在这里插入图片描述

  • 在任何目录下都可执行sonar-runner

在这里插入图片描述

使用SonarQube分析Calculator

  • 目录结构
|__calculator
   |__HelloWorld
      |__...
   |__Calculator
   	  |__Ant
         |__...
      |__Junit
         |__...
      |__SonarQube
         |__src
            |__Calculator.java
         |__sonar-project.properties
   |__README.md
  • sonar-project.properties
sonar.projectKey=src
sonar.projectName=src
sonar.projectVersion=1.0
sonar.projectEncoding=UTF-8
sonar.modules=java-module

java-module.sonar.projectName=Java Module
java-module.sonar.language=java

java-module.sonar.sources=.
java-module.sonar.projectBaseDir=src
  • 开启sonar服务并sonar-runner

在这里插入图片描述

在这里插入图片描述

  • 打开 http://localhost:9000/

在这里插入图片描述

  • 查看src的代码情况

在这里插入图片描述

运行 BugRunner

  • 进入文件夹 firstProject

在这里插入图片描述

  • 执行命令
javac -classpath .:./../../gridworld.jar BugRunner.java
java -classpath .:./../../gridworld.jar BugRunner

在这里插入图片描述

  • 运行结果

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

ISA88是一个在制造过程自动化中常用的标准,它被定义为制造和加工自动化应用中的工作流程模型和术语。实际上,这是一系列标准文件,包括Part 1到Part 4。 Part 1(ISA-88.01)标准定义了工作流程模型和术语。这是整个标准的基础,并且为后面的标准提供了一个共同的基础。这一部分还定义了四个关键术语:单元、设备模块、控制模块和操作。这些术语用于描述整个工作流程。这一部分还会对工作流程中使用的其它关键术语进行了解释。 Part 2(ISA-88.02)标准描述了生产工艺过程的概念和模型。这一部分关注生产制造场景,并且详细描述了生产工艺过程中包含的各个单元和设备模块之间的关系。这一部分还描述了每个设备模块中包含的控制模块以及操作。 Part 3(ISA-88.03)标准涵盖了英特诺控制层次模型。控制层次模型将每个控制单元分层,并为每个模块定义了不同的控制功能。这一部分还包括为控制层次模型制定细节设计的建议。 Part 4(ISA-88.04)标准涵盖了物流和等级管理。这一部分着重于被称为“制造流程定义”的概念,对于经常变化的制造流程,该概念非常重要。通过“制造流程定义”,用户可以更容易地了解不同的物流、等级和其他生产工艺详细信息,并以一种更有条理的方式进行管理。 总体而言,ISA88标准系列文件为制造业提供了一个通用的模型,该模型具有广泛的应用,可以应对各种生产场景。这个模型允许制造企业设计、转换和管理制造过程,从而提高生产效率、产能和质量。ISA-88系列标准的使用可能会带来意想不到的结果,包括更简单的审核、更快的问题解决以及制造流程的可追溯性和可重现性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值