亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java課設案例之百行代碼實現(xiàn)簡易計算器

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

一、 設計簡介

1、 設計背景

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

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

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

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

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

二、 相關工作

1、設計基礎

使用Java Swing的GUI圖形用戶界面編程設計編寫一個簡易的計算器,加入事件監(jiān)聽器可以通過鼠標輸入參加運算的數(shù)值和運算符,達到四則運算的目的。

2、功能需求

圖形化用戶界面,設計的簡易計算器,用戶通過鼠標依次輸入參與計算的數(shù)值和運算符,進行四則運算,具體如下:

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

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

(3) 鼠標單擊“計算器”上的“=”按鈕,輸出運算的結果。

(4) 鼠標單擊“計算器”上的“clear”按鈕,可以清除輸入框內的數(shù)字。

3、系統(tǒng)設計

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

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

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

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

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

(5) 計算邏輯實現(xiàn)

三、 設計原理

1、包和類的說明

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

2、簡易計算器的源代碼清單

①導入組件

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;//得到窗體中心點
    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 = "計算器";
}

 ③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);//設置框架在屏幕的位置
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設置關閉鍵
    }
    //主方法
    public static void main(String[] args) {
        calculator Calculator = new calculator();
        Calculator.setVisible(true);
    }
}

④添加控件和按鈕的代碼

    //添加北面的控件
    public void addNorthComponent(){
        this.input_text.setPreferredSize(new Dimension(200,30));//設置文本框大小
        jp_north.add(input_text);//加文本框
        this.c_Btn.setForeground(Color.RED);//設置按鈕顏色
        jp_north.add(c_Btn);//加按鈕
        c_Btn.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                input_text.setText("");
            }
        });
        this.add(jp_north,BorderLayout.NORTH);//將面板加到框架北側
    }
    //添加中間按鈕
    public void addCenterButton(){
        String btn_text = "123+456-789*0.=/";
        String regex = "[\\+\\-*/.=]";//正則表達式
        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)聽器和邏輯運算代碼

    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}")){//運算符輸入
            operator = clickStr;
            firstInput = this.input_text.getText();
            this.input_text.setText("");
        }
        else if(clickStr.equals("=")){//等號輸入
            Double a = Double.valueOf(firstInput);
            Double b = Double.valueOf(this.input_text.getText());
            Double res = null;
            switch (operator){//運算主體
                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!請清空!");
                }
                break;
            }
            this.input_text.setText(res.toString());
        }
    }

四、 實現(xiàn)結果

1、程序界面

簡易計算器運行界面,如圖3-1所示。

圖3-1 計算器運行界面

2、測試用例

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

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

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

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

3、運行結果

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

圖3-2 輸入 7

圖 3-3 輸入 23

圖3-4 結果顯示為 30.0

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

圖3-5 “7-23”結果顯示為 -16.0

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

圖3-6 “7*3”結果顯示為161.9

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

圖3-7“7/23”結果顯示為0.30434782608695654

五、 設計心得

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

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

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

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

完整源碼

package util;
import java.awt.*;
public class Const {
    public static final int FRAME_W = 300;//得到窗體中心點
    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 = "計算器";
}
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);//設置框架在屏幕的位置
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設置關閉鍵
    }
    //添加北面的控件
    public void addNorthComponent(){
        this.input_text.setPreferredSize(new Dimension(200,30));//設置文本框大小
        jp_north.add(input_text);//加文本框
        this.c_Btn.setForeground(Color.RED);//設置按鈕顏色
        jp_north.add(c_Btn);//加按鈕
        c_Btn.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                input_text.setText("");
            }
        });
        this.add(jp_north,BorderLayout.NORTH);//將面板加到框架北側
    }
    //添加中間按鈕
    public void addCenterButton(){
        String btn_text = "123+456-789*0.=/";
        String regex = "[\\+\\-*/.=]";//正則表達式
        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}")){//運算符輸入
            operator = clickStr;
            firstInput = this.input_text.getText();
            this.input_text.setText("");
        }
        else if(clickStr.equals("=")){//等號輸入
            Double a = Double.valueOf(firstInput);
            Double b = Double.valueOf(this.input_text.getText());
            Double res = null;
            switch (operator){//運算主體
                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!請清空!");
                }
                break;
            }
            this.input_text.setText(res.toString());
        }
    }
    //主方法
    public static void main(String[] args) {
        calculator Calculator = new calculator();
        Calculator.setVisible(true);
    }
}

總結

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

相關文章

  • Java特性之注解和異常?Throwable

    Java特性之注解和異常?Throwable

    這篇文章主要介紹了Java特性之注解和異常,注解是JDK1.5版本開始引入的一個特性,Throwable是Java語言中所有錯誤與異常的超類,文章圍繞主題展開更多的相關介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-06-06
  • SpringMVC文件上傳 多文件上傳實例

    SpringMVC文件上傳 多文件上傳實例

    這篇文章主要介紹了SpringMVC文件上傳 多文件上傳實例,有需要的朋友可以參考一下
    2014-01-01
  • 一小時迅速入門Mybatis之初識篇

    一小時迅速入門Mybatis之初識篇

    這篇文章主要介紹了迅速入門Mybatis之初識篇,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • java使用ArrayList實現(xiàn)斗地主(無序版)

    java使用ArrayList實現(xiàn)斗地主(無序版)

    這篇文章主要為大家詳細介紹了java使用ArrayList實現(xiàn)斗地主,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • 深入理解Java嵌套類和內部類

    深入理解Java嵌套類和內部類

    本篇文章主要介紹了深入理解Java嵌套類和內部類,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java如何從服務器中下載圖片

    Java如何從服務器中下載圖片

    這篇文章主要為大家詳細介紹了Java如何從服務器中下載圖片,代碼中附有詳細注釋,感興趣的小伙伴們可以參考一下
    2016-05-05
  • SpringCloud:feign對象傳參和普通傳參及遇到的坑解決

    SpringCloud:feign對象傳參和普通傳參及遇到的坑解決

    這篇文章主要介紹了SpringCloud:feign對象傳參和普通傳參及遇到的坑解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java中的Calendar日歷API用法完全解析

    Java中的Calendar日歷API用法完全解析

    今天特別整理了針對Java中的Calendar日歷API用法完全解析,通過Calendar API我們可以對Calendar所提供的時間日期字段進行各種自定義操作,首先還是從Calendar的基礎入手:
    2016-06-06
  • Java基礎教程之實現(xiàn)接口

    Java基礎教程之實現(xiàn)接口

    這篇文章主要介紹了Java基礎教程之實現(xiàn)接口,也可以說是實施接口,因為接口只是定義,最終要實現(xiàn)它,本文就專門講解接口的實現(xiàn),需要的朋友可以參考下
    2014-08-08
  • 深入理解Java中的HashMap的實現(xiàn)機制

    深入理解Java中的HashMap的實現(xiàn)機制

    這篇文章主要介紹了深入理解Java中的HashMap的實現(xiàn)機制,同時也有助于理解Java中對于哈希函數(shù)的相關處理方式,需要的朋友可以參考下
    2015-07-07

最新評論