最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java課設(shè)案例之百行代碼實(shí)現(xiàn)簡(jiǎn)易計(jì)算器

 更新時(shí)間:2023年06月16日 11:19:19   作者:yoke菜籽  
下面這篇文章主要給大家介紹了關(guān)于Java課設(shè)案例之百行代碼實(shí)現(xiàn)簡(jiǎn)易計(jì)算器的相關(guān)資料,這是一個(gè)關(guān)于java簡(jiǎn)單計(jì)算器的完整課程設(shè)計(jì)以及源碼,需要的朋友可以參考下

一、 設(shè)計(jì)簡(jiǎn)介

1、 設(shè)計(jì)背景

伴隨著日益升高的物質(zhì)生活水平以及日常生活中對(duì)基本的計(jì)算需求的提高。如今,網(wǎng)絡(luò)快速發(fā)展,對(duì)算力的需求日益增大,計(jì)算的效率和性能和人們的生活緊密相關(guān)。對(duì)此,使用Java語言開發(fā)出一個(gè)為人們生活帶來便利的計(jì)算器,以期帶來對(duì)數(shù)據(jù)計(jì)算的提高。該系統(tǒng)實(shí)現(xiàn)了對(duì)數(shù)的加、減、乘、除的運(yùn)算。

2、 開發(fā)工具及環(huán)境

(1)開發(fā)工具及介紹

Visual Studio Code(簡(jiǎn)稱“VS Code” )是Microsoft在2015年4月30日Build開發(fā)者大會(huì)上正式宣布一個(gè)運(yùn)行于 Mac OS X、Windows和 Linux 之上的,針對(duì)于編寫現(xiàn)代Web和云應(yīng)用的跨平臺(tái)源代碼編輯器, [2] 可在桌面上運(yùn)行,并且可用于Windows,macOS和Linux。它具有對(duì)JavaScript,TypeScript和Node.js的內(nèi)置支持,并具有豐富的其他語言(例如C++,C#,Java,Python,PHP,Go)和運(yùn)行時(shí)(例如.NET和Unity)擴(kuò)展的生態(tài)系統(tǒng)。

(2)開發(fā)環(huán)境:window10系統(tǒng)、Visual Studio Code1.67.2、JDK17.0.2。

二、 相關(guān)工作

1、設(shè)計(jì)基礎(chǔ)

使用Java Swing的GUI圖形用戶界面編程設(shè)計(jì)編寫一個(gè)簡(jiǎn)易的計(jì)算器,加入事件監(jiān)聽器可以通過鼠標(biāo)輸入?yún)⒓舆\(yùn)算的數(shù)值和運(yùn)算符,達(dá)到四則運(yùn)算的目的。

2、功能需求

圖形化用戶界面,設(shè)計(jì)的簡(jiǎn)易計(jì)算器,用戶通過鼠標(biāo)依次輸入?yún)⑴c計(jì)算的數(shù)值和運(yùn)算符,進(jìn)行四則運(yùn)算,具體如下:

(1) 鼠標(biāo)單擊“計(jì)算器”上的數(shù)字按鈕(0、1、2、3、4、5、6、7、8、9)累次可以設(shè)置參與運(yùn)算的數(shù)值

(2) 鼠標(biāo)單擊“計(jì)算器”上的運(yùn)算符按鈕(+、-、*、/)選擇運(yùn)算符同時(shí),保存之前的數(shù),并情況輸入欄,以便后續(xù)輸入。

(3) 鼠標(biāo)單擊“計(jì)算器”上的“=”按鈕,輸出運(yùn)算的結(jié)果。

(4) 鼠標(biāo)單擊“計(jì)算器”上的“clear”按鈕,可以清除輸入框內(nèi)的數(shù)字。

3、系統(tǒng)設(shè)計(jì)

一個(gè)簡(jiǎn)易的計(jì)算器,主要由界面組件、組件事件監(jiān)聽器以及處理程序組成,如圖2-1。實(shí)現(xiàn)其功能具體可分如下幾個(gè)步驟:

(1) 創(chuàng)建Java項(xiàng)目(此版本為17.0.2的JDK)

(2) 創(chuàng)建框架、面板以及初始化

(3) 創(chuàng)建UI組件,并將其添加到相應(yīng)面板中

(4) 注冊(cè)監(jiān)聽器、添加事件響應(yīng)邏輯

(5) 計(jì)算邏輯實(shí)現(xiàn)

三、 設(shè)計(jì)原理

1、包和類的說明

package start;\保存主要功能實(shí)現(xiàn)代碼的包
package util;\保存常量的包
public class Const\自定義保存常量的類
public class calculator \自定義實(shí)現(xiàn)計(jì)算器主要功能的類

2、簡(jiǎn)易計(jì)算器的源代碼清單

①導(dǎo)入組件

package start;
import javax.swing.*;
import util.Const;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

②創(chuàng)建Const類的部分代碼

public class Const {
    public static final int FRAME_W = 300;//得到窗體中心點(diǎn)
    public static final int FRAME_H = 300;
    public static final int SCREEN_W = Toolkit.getDefaultToolkit().getScreenSize().width;
    public static final int SCREEN_H = Toolkit.getDefaultToolkit().getScreenSize().height;
    public static final int Frame_X = (SCREEN_W-FRAME_W)/2;
    public static final int Frame_Y = (SCREEN_H-FRAME_H)/2;
    public static final String TITLE = "計(jì)算器";
}

 ③calculator類中的部分代碼

public class calculator extends JFrame implements ActionListener{
    /**********************北面的控件***********************/
    private JPanel jp_north = new JPanel();
    private JTextField input_text = new JTextField();
    private JButton c_Btn = new JButton("Clear");
     /**********************中間的控件***********************/
     private JPanel jp_center = new JPanel();
     public calculator() throws HeadlessException{//顯示窗體
        this.init();
        this.addNorthComponent();
        this.addCenterButton();
    }
    //初始化的方法
    public void init(){
        this.setTitle(Const.TITLE);
        this.setSize(Const.FRAME_W, Const.FRAME_H);
        this.setLayout(new BorderLayout());
        this.setResizable(false);
        this.setLocation(Const.Frame_X,Const.Frame_Y);//設(shè)置框架在屏幕的位置
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設(shè)置關(guān)閉鍵
    }
    //主方法
    public static void main(String[] args) {
        calculator Calculator = new calculator();
        Calculator.setVisible(true);
    }
}

④添加控件和按鈕的代碼

    //添加北面的控件
    public void addNorthComponent(){
        this.input_text.setPreferredSize(new Dimension(200,30));//設(shè)置文本框大小
        jp_north.add(input_text);//加文本框
        this.c_Btn.setForeground(Color.RED);//設(shè)置按鈕顏色
        jp_north.add(c_Btn);//加按鈕
        c_Btn.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                input_text.setText("");
            }
        });
        this.add(jp_north,BorderLayout.NORTH);//將面板加到框架北側(cè)
    }
    //添加中間按鈕
    public void addCenterButton(){
        String btn_text = "123+456-789*0.=/";
        String regex = "[\\+\\-*/.=]";//正則表達(dá)式
        this.jp_center.setLayout(new GridLayout(4,4));//4*4的布局
        for(int i=0;i<16;i++){//在面板中加按鈕
            String tmp  = btn_text.substring(i,i+1);
            JButton btn = new JButton();
            btn.setText(tmp);//給按鈕加文字
            if(tmp.matches(regex)){//如果正則匹配
                    btn.setFont(new Font("粗體",Font.BOLD,20));
                    btn.setForeground(Color.RED);
                }
            btn.addActionListener(this);//添加按鈕監(jiān)聽器
            jp_center.add(btn);
        }
        this.add(jp_center,BorderLayout.CENTER);//將面板加載框架布局的中間位置
    }

⑤添加事件監(jiān)聽器和邏輯運(yùn)算代碼

    private String firstInput = null;
    private String operator = null;
    //給按鈕添加監(jiān)聽事件
    public void actionPerformed(ActionEvent e){
        String clickStr = e.getActionCommand();
        if(".0123456789".indexOf(clickStr)!=-1){//數(shù)字輸入
            this.input_text.setText(input_text.getText() + clickStr);
            this.input_text.setHorizontalAlignment(JTextField.RIGHT);
        }
        else if(clickStr.matches("[\\+\\-*/]{1}")){//運(yùn)算符輸入
            operator = clickStr;
            firstInput = this.input_text.getText();
            this.input_text.setText("");
        }
        else if(clickStr.equals("=")){//等號(hào)輸入
            Double a = Double.valueOf(firstInput);
            Double b = Double.valueOf(this.input_text.getText());
            Double res = null;
            switch (operator){//運(yùn)算主體
                case "+":
                res = a + b;
                break;
                case "-":
                res = a - b;
                break;
                case "*":
                res = a * b;
                break;
                case "/":
                if(b!=0){
                    res = a/b;
                }
                else{
                    this.input_text.setText("除數(shù)不能為0!請(qǐng)清空!");
                }
                break;
            }
            this.input_text.setText(res.toString());
        }
    }

四、 實(shí)現(xiàn)結(jié)果

1、程序界面

簡(jiǎn)易計(jì)算器運(yùn)行界面,如圖3-1所示。

圖3-1 計(jì)算器運(yùn)行界面

2、測(cè)試用例

(1)清除當(dāng)前輸入的數(shù)值,例如:計(jì)算7+23,輸出結(jié)果為30.0。

(2)清除當(dāng)前輸入的數(shù)值,例如:計(jì)算7-23,輸出結(jié)果為-16.0。

(3)清除當(dāng)前輸入的數(shù)值,例如:計(jì)算7*23,輸出結(jié)果為161.0。

(4)清除當(dāng)前輸入的數(shù)值,例如:計(jì)算7/23,輸出結(jié)果為0.30434782608695654。

3、運(yùn)行結(jié)果

(1)輸入7和23,進(jìn)行加法運(yùn)算,如圖3-2、圖3-3和圖3-4所示。下面只輸出結(jié)果。

圖3-2 輸入 7

圖 3-3 輸入 23

圖3-4 結(jié)果顯示為 30.0

(2)輸入7和23,進(jìn)行減法運(yùn)算,如圖3-5所示。

圖3-5 “7-23”結(jié)果顯示為 -16.0

(3)輸入7和23,進(jìn)行乘法運(yùn)算,如圖3-6所示

圖3-6 “7*3”結(jié)果顯示為161.9

(4)輸入7和23,進(jìn)行除法運(yùn)算,如圖3-7所示。

圖3-7“7/23”結(jié)果顯示為0.30434782608695654

五、 設(shè)計(jì)心得

從我的角度出發(fā),課設(shè)的目的在于使學(xué)生養(yǎng)成綜合運(yùn)用所學(xué)知識(shí),發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對(duì)學(xué)生在實(shí)際場(chǎng)景下能力的具體訓(xùn)練和考察過程。伴隨著科學(xué)技術(shù)的快速發(fā)展,當(dāng)今計(jì)算機(jī)的應(yīng)用在生活中可以說是處處都有。

在課程設(shè)計(jì)過程中我遇到許多的問題,通過網(wǎng)上的查詢,和同學(xué)的熱心幫助,最終我成功的完成了這次課程設(shè)計(jì)。在這其中我充分理解了Java面對(duì)對(duì)象的特性,并體會(huì)到Java與C\C++語言的不同之處。只有多動(dòng)手,經(jīng)常編寫程序,才能發(fā)現(xiàn)我們學(xué)習(xí)上的缺陷和自己的不足,并在實(shí)踐中解決這些問題,不斷提高自己轉(zhuǎn)化知識(shí)的能力。通過本課程的設(shè)計(jì),我了解到理論與實(shí)踐的結(jié)合非常重要,簡(jiǎn)單的理論知識(shí)遠(yuǎn)遠(yuǎn)不夠,只有將所獲得的理論知識(shí)與實(shí)踐相結(jié)合,從理論中得出結(jié)論,才能真正服務(wù)于社會(huì),發(fā)展我的實(shí)踐技能和能力。 這次編寫的程序大部分功能是通過調(diào)用各包中的方法和類來實(shí)現(xiàn)的,這也讓我充分理解了包和類之間的關(guān)系。

由于這次編寫的程序是我初次使用Java編寫,會(huì)遇到很多小問題,比如說:如何保存輸入的數(shù)字和下一個(gè)數(shù)進(jìn)行加、減、乘、除運(yùn)算。此次課程設(shè)計(jì)讓我們更了解Java中的圖形用戶界面和它的編程方式。在完成課題的過程中,查閱了很多關(guān)于Java語言開發(fā)的資料,不斷地充實(shí)了自己,學(xué)習(xí)到了很多以前沒有學(xué)習(xí)到的知識(shí),收獲頗多。Java 計(jì)算器設(shè)計(jì)使得我們對(duì)所學(xué)的課程有了更為深刻的認(rèn)識(shí),使得知識(shí)得到了鞏固和提高。

今后,我將會(huì)繼續(xù)努力;我相信,只要有信心,有毅力,人永遠(yuǎn)不會(huì)被打??!

完整源碼

package util;
import java.awt.*;
public class Const {
    public static final int FRAME_W = 300;//得到窗體中心點(diǎn)
    public static final int FRAME_H = 300;
    public static final int SCREEN_W = Toolkit.getDefaultToolkit().getScreenSize().width;
    public static final int SCREEN_H = Toolkit.getDefaultToolkit().getScreenSize().height;
    public static final int Frame_X = (SCREEN_W-FRAME_W)/2;
    public static final int Frame_Y = (SCREEN_H-FRAME_H)/2;
    public static final String TITLE = "計(jì)算器";
}
package start;
import javax.swing.*;
import util.Const;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class calculator extends JFrame implements ActionListener{
    /**********************北面的控件***********************/
    private JPanel jp_north = new JPanel();
    private JTextField input_text = new JTextField();
    private JButton c_Btn = new JButton("Clear");
     /**********************中間的控件***********************/
     private JPanel jp_center = new JPanel();
     public calculator() throws HeadlessException{//顯示窗體
        this.init();
        this.addNorthComponent();
        this.addCenterButton();
    }
    //初始化的方法
    public void init(){
        this.setTitle(Const.TITLE);
        this.setSize(Const.FRAME_W, Const.FRAME_H);
        this.setLayout(new BorderLayout());
        this.setResizable(false);
        this.setLocation(Const.Frame_X,Const.Frame_Y);//設(shè)置框架在屏幕的位置
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設(shè)置關(guān)閉鍵
    }
    //添加北面的控件
    public void addNorthComponent(){
        this.input_text.setPreferredSize(new Dimension(200,30));//設(shè)置文本框大小
        jp_north.add(input_text);//加文本框
        this.c_Btn.setForeground(Color.RED);//設(shè)置按鈕顏色
        jp_north.add(c_Btn);//加按鈕
        c_Btn.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                input_text.setText("");
            }
        });
        this.add(jp_north,BorderLayout.NORTH);//將面板加到框架北側(cè)
    }
    //添加中間按鈕
    public void addCenterButton(){
        String btn_text = "123+456-789*0.=/";
        String regex = "[\\+\\-*/.=]";//正則表達(dá)式
        this.jp_center.setLayout(new GridLayout(4,4));//4*4的布局
        for(int i=0;i<16;i++){//在面板中加按鈕
            String tmp  = btn_text.substring(i,i+1);
            JButton btn = new JButton();
            btn.setText(tmp);//給按鈕加文字
            if(tmp.matches(regex)){//如果正則匹配
                    btn.setFont(new Font("粗體",Font.BOLD,20));
                    btn.setForeground(Color.RED);
                }
            btn.addActionListener(this);//添加按鈕監(jiān)聽器
            jp_center.add(btn);
        }
        this.add(jp_center,BorderLayout.CENTER);//將面板加載框架布局的中間位置
    }
    private String firstInput = null;
    private String operator = null;
    //給按鈕添加監(jiān)聽事件
    public void actionPerformed(ActionEvent e){
        String clickStr = e.getActionCommand();
        if(".0123456789".indexOf(clickStr)!=-1){//數(shù)字輸入
            this.input_text.setText(input_text.getText() + clickStr);
            this.input_text.setHorizontalAlignment(JTextField.RIGHT);
        }
        else if(clickStr.matches("[\\+\\-*/]{1}")){//運(yùn)算符輸入
            operator = clickStr;
            firstInput = this.input_text.getText();
            this.input_text.setText("");
        }
        else if(clickStr.equals("=")){//等號(hào)輸入
            Double a = Double.valueOf(firstInput);
            Double b = Double.valueOf(this.input_text.getText());
            Double res = null;
            switch (operator){//運(yùn)算主體
                case "+":
                res = a + b;
                break;
                case "-":
                res = a - b;
                break;
                case "*":
                res = a * b;
                break;
                case "/":
                if(b!=0){
                    res = a/b;
                }
                else{
                    this.input_text.setText("除數(shù)不能為0!請(qǐng)清空!");
                }
                break;
            }
            this.input_text.setText(res.toString());
        }
    }
    //主方法
    public static void main(String[] args) {
        calculator Calculator = new calculator();
        Calculator.setVisible(true);
    }
}

總結(jié)

到此這篇關(guān)于Java課設(shè)案例之百行代碼實(shí)現(xiàn)簡(jiǎn)易計(jì)算器的文章就介紹到這了,更多相關(guān)Java簡(jiǎn)易計(jì)算器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Java的call by value和call by reference

    詳解Java的call by value和call by reference

    在本篇文章里小編給大家總結(jié)了關(guān)于Java的call by value和call by reference的相關(guān)用法和知識(shí)點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-03-03
  • 利用Java正則表達(dá)式校驗(yàn)郵箱與手機(jī)號(hào)

    利用Java正則表達(dá)式校驗(yàn)郵箱與手機(jī)號(hào)

    利用Java正則表達(dá)式校驗(yàn)郵箱與手機(jī)號(hào)。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-10-10
  • Java8常用的新特性詳解

    Java8常用的新特性詳解

    這篇文章主要介紹了Java8常用的新特性詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)Java8新特性的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Java BigDecimal基礎(chǔ)用法詳解

    Java BigDecimal基礎(chǔ)用法詳解

    Java在java.math包中提供的API類BigDecimal,用來對(duì)超過16位有效位的數(shù)進(jìn)行精確的運(yùn)算。雙精度浮點(diǎn)型變量double可以處理16位有效數(shù),但在實(shí)際應(yīng)用中,可能需要對(duì)更大或者更小的數(shù)進(jìn)行運(yùn)算和處理
    2022-06-06
  • SpringBoot用ServiceLocatorFactoryBean優(yōu)雅切換支付渠道

    SpringBoot用ServiceLocatorFactoryBean優(yōu)雅切換支付渠道

    本文主要介紹了SpringBoot用ServiceLocatorFactoryBean優(yōu)雅切換支付渠道,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-10-10
  • Java中Logger定義的3種方式及最佳實(shí)踐

    Java中Logger定義的3種方式及最佳實(shí)踐

    這篇文章主要介紹了Java中三種常見的Logger定義方式及其優(yōu)缺點(diǎn),同時(shí)文章還討論了Logger的命名和訪問修飾符的最佳實(shí)踐,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • Spring Boot如何集成模板引擎FreeMarker

    Spring Boot如何集成模板引擎FreeMarker

    這篇文章主要介紹了Spring Boot如何集成模板引擎FreeMarker,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • sa-token整合springboot中的代碼示例展示

    sa-token整合springboot中的代碼示例展示

    sa-token?是一個(gè)輕量級(jí)的 Java 權(quán)限認(rèn)證框架,它可以很方便地集成到 Spring Boot 項(xiàng)目中,以提供簡(jiǎn)潔的認(rèn)證和授權(quán)功能,這篇文章主要介紹了sa-token整合springboot中的代碼示例展示,需要的朋友可以參考下
    2024-04-04
  • 淺析Spring Validation參數(shù)校驗(yàn)的實(shí)現(xiàn)原理與進(jìn)階用法

    淺析Spring Validation參數(shù)校驗(yàn)的實(shí)現(xiàn)原理與進(jìn)階用法

    這篇文章主要介紹了Spring Validation參數(shù)校驗(yàn)的實(shí)現(xiàn)原理與進(jìn)階用法,本文展示了分組校驗(yàn),嵌套校驗(yàn),集合校驗(yàn)等進(jìn)階功能,并提供了自定義校驗(yàn)注解的實(shí)現(xiàn)方法,希望對(duì)大家有所幫助
    2026-01-01
  • springboot之Validation參數(shù)校驗(yàn)詳細(xì)解讀

    springboot之Validation參數(shù)校驗(yàn)詳細(xì)解讀

    這篇文章主要介紹了springboot之Validation參數(shù)校驗(yàn)詳細(xì)解讀,本篇是關(guān)于springboot的參數(shù)校驗(yàn)知識(shí),當(dāng)然也適用其它java應(yīng)用,讀完本篇將學(xué)會(huì)基本的參數(shù)校驗(yàn),自定義參數(shù)校驗(yàn)和分組參數(shù)校驗(yàn),需要的朋友可以參考下
    2023-10-10

最新評(píng)論

垦利县| 苏尼特左旗| 长泰县| 克山县| 玉溪市| 新巴尔虎右旗| 禹城市| 赤峰市| 利津县| 新兴县| 东丰县| 荆门市| 廊坊市| 宝坻区| 宜丰县| 贡山| 庆元县| 尼木县| 常宁市| 安岳县| 绥宁县| 同心县| 长治县| 洪泽县| 潜江市| 繁峙县| 财经| 大石桥市| 密山市| 衡山县| 丹阳市| 扎兰屯市| 曲靖市| 宜阳县| 东宁县| 枣阳市| 蒲城县| 苍山县| 尉犁县| 贵南县| 宜阳县|