国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java中規(guī)模軟件開發(fā)實訓——簡單計算器制作

這篇具有很好參考價值的文章主要介紹了Java中規(guī)模軟件開發(fā)實訓——簡單計算器制作。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?博主:命運之光

??專欄:Python星辰秘典

??專欄:web開發(fā)(html css js)

??專欄:Java經(jīng)典程序設(shè)計

??博主的其他文章:點擊進入博主的主頁

前言:在現(xiàn)代社會中,計算器是我們生活中不可或缺的工具之一。它們可以輕松地進行各種數(shù)值計算,從簡單的加減乘除到復雜的科學運算,為我們提供了快捷準確的計算結(jié)果。但你是否曾想過,我們可以親手打造一個屬于自己的計算器應用程序,體驗計算世界的奇妙之旅?本文將帶領(lǐng)你進入計算器應用程序的開發(fā)領(lǐng)域。我們將使用Java編程語言和Swing圖形界面庫,從零開始構(gòu)建一個簡單但功能強大的計算器應用程序。無論你是計算機科學專業(yè)的學生,還是對編程和應用開發(fā)感興趣的愛好者,這個實踐項目都將為你提供一個寶貴的機會來深入了解應用程序開發(fā)的流程和技術(shù)。

Java中規(guī)模軟件開發(fā)實訓——簡單計算器制作,JAVA中規(guī)模軟件開發(fā)實訓,# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java項目,算法,計算器,圖形庫,Javaswing?

目錄

項目三多功能計算器

??實驗內(nèi)容

界面設(shè)計

用戶界面布局

計算功能實現(xiàn)

計算方法實現(xiàn)

主函數(shù)

??問題描述

??項目功能

??項目分析

??項目設(shè)計

項目源代碼

??總結(jié)


項目三多功能計算器

??實驗內(nèi)容

通過編寫計算器程序,熟悉Java Swing庫的使用。

學習處理用戶界面事件和實現(xiàn)基本的計算功能。

界面設(shè)計

創(chuàng)建一個窗口并設(shè)置標題為"計算器"。

設(shè)置窗口大小為320x420,并禁止調(diào)整窗口大小。

設(shè)置天空藍色背景。

創(chuàng)建一個菜單欄,其中包含一個名為"歷史記錄"的菜單。

在"歷史記錄"菜單中添加一個菜單項"查看歷史記錄"。

用戶界面布局

創(chuàng)建一個面板作為內(nèi)容面板,并設(shè)置邊距和布局。

在內(nèi)容面板的北部(上方)添加一個只讀文本框,用于顯示計算結(jié)果和用戶輸入。

在內(nèi)容面板的中央添加一個網(wǎng)格布局的按鈕面板,包含操作符和數(shù)字按鈕。

計算功能實現(xiàn)

實現(xiàn)ActionListener接口,處理按鈕的點擊事件。

根據(jù)點擊的按鈕執(zhí)行相應的操作。

清空按鈕("C"):清空文本框。

全部清除按鈕("CE"):清空文本框并重置計算器的內(nèi)部狀態(tài)。

刪除按鈕("刪除"):刪除文本框中最后一個字符。

運算符按鈕("+", "-", "*", "/"):將文本框中的數(shù)值保存為第一個操作數(shù),并記錄運算符,然后清空文本框。

等號按鈕("="):將文本框中的數(shù)值保存為第二個操作數(shù),根據(jù)記錄的運算符執(zhí)行計算,并將結(jié)果顯示在文本框中,并將計算歷史記錄添加到列表中。

取反按鈕("±"):將文本框中的數(shù)值取反。

倒數(shù)按鈕("1/x"):計算文本框中數(shù)值的倒數(shù)。

平方按鈕("平方"):計算文本框中數(shù)值的平方。

開方按鈕("√"):計算文本框中數(shù)值的平方根。

數(shù)字按鈕:將對應的數(shù)字追加到文本框中。

計算方法實現(xiàn)

實現(xiàn)一個私有方法calculate,接受兩個操作數(shù)和運算符作為參數(shù),并返回計算結(jié)果。

根據(jù)傳入的運算符執(zhí)行相應的計算操作。

主函數(shù)

設(shè)置外觀外觀為系統(tǒng)默認外觀。

在Swing事件調(diào)度線程中創(chuàng)建一個計算器對象并設(shè)置可見性。

??問題描述

該項目旨在解決以下問題:

用戶需要一個簡單易用的計算器程序,以便進行基本的數(shù)值計算操作。

用戶希望能夠在一個圖形界面中進行計算,而不是使用命令行或其他復雜的工具。

用戶希望能夠輕松地查看他們之前進行的計算歷史記錄,以便追溯和回顧。

用戶需要一個界面友好、功能完善的計算器,能夠處理常見的計算操作,如加減乘除、取反、倒數(shù)、平方、開方等。

??項目功能

項目UI設(shè)計如下:

Java中規(guī)模軟件開發(fā)實訓——簡單計算器制作,JAVA中規(guī)模軟件開發(fā)實訓,# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java項目,算法,計算器,圖形庫,Javaswing

?該項目實現(xiàn)了以下功能:

基本計算功能:用戶可以使用該計算器進行基本的數(shù)值計算,包括加法、減法、乘法和除法。

清空功能:用戶可以通過點擊"CE"按鈕清空當前顯示的計算結(jié)果,并重置計算器的內(nèi)部狀態(tài)。

刪除功能:用戶可以通過點擊"刪除"按鈕逐個刪除文本框中的字符,用于修正輸入錯誤。

運算符功能:用戶可以通過點擊運算符按鈕("+", "-", "*", "/")將文本框中的數(shù)值保存為第一個操作數(shù),并記錄選擇的運算符,然后清空文本框等待輸入第二個操作數(shù)。

等號功能:用戶可以通過點擊"="按鈕將文本框中的數(shù)值保存為第二個操作數(shù),并根據(jù)記錄的運算符執(zhí)行相應的計算操作,將結(jié)果顯示在文本框中。

取反功能:用戶可以通過點擊"±"按鈕將文本框中的數(shù)值取反,用于處理正負數(shù)的轉(zhuǎn)換。

倒數(shù)功能:用戶可以通過點擊"1/x"按鈕計算文本框中數(shù)值的倒數(shù)。

平方功能:用戶可以通過點擊"平方"按鈕計算文本框中數(shù)值的平方。

開方功能:用戶可以通過點擊"√"按鈕計算文本框中數(shù)值的平方根。

數(shù)字輸入功能:用戶可以通過點擊數(shù)字按鈕將對應的數(shù)字追加到文本框中,以便輸入操作數(shù)。

此外,該項目還提供了以下附加功能:

查看歷史記錄功能:用戶可以通過菜單欄中的"查看歷史記錄"選項查看之前進行的計算歷史記錄,以便回顧和追溯。歷史記錄以對話框的形式展示。

??項目分析

項目截圖展示

Java中規(guī)模軟件開發(fā)實訓——簡單計算器制作,JAVA中規(guī)模軟件開發(fā)實訓,# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java項目,算法,計算器,圖形庫,Javaswing

??該界面包含一個文本框用于顯示計算結(jié)果和用戶輸入,以及一系列按鈕用于執(zhí)行不同的計算和操作。你可以點擊按鈕并觀察文本框的變化以及計算結(jié)果的顯示。另外,你還可以點擊菜單欄中的"歷史記錄",然后選擇"查看歷史記錄"來查看之前的計算歷史記錄。

??項目設(shè)計

項目源代碼
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

public class Calculator extends JFrame implements ActionListener {

    private JTextField displayField;
    private double num1, num2;
    private char operator;
    private List<String> history;

    public Calculator() {
        setTitle("計算器");
        setSize(320, 420);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(new BorderLayout());
        setResizable(false);

        // 設(shè)置天空藍色背景
        Color skyBlue = new Color(135, 206, 250);
        getContentPane().setBackground(skyBlue);

        // 創(chuàng)建菜單欄
        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);

        // 創(chuàng)建"查看歷史記錄"菜單
        JMenu historyMenu = new JMenu("歷史記錄");
        menuBar.add(historyMenu);

        // 創(chuàng)建歷史記錄菜單項
        JMenuItem viewHistoryMenuItem = new JMenuItem("查看歷史記錄");
        viewHistoryMenuItem.addActionListener(e -> {
            String message = "";
            for (String entry : history) {
                message += entry + "\n";
            }
            JOptionPane.showMessageDialog(this, message, "歷史記錄", JOptionPane.INFORMATION_MESSAGE);
        });
        historyMenu.add(viewHistoryMenuItem);

        JPanel contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(10, 10, 10, 10));
        contentPane.setLayout(new BorderLayout());
        contentPane.setBackground(skyBlue);
        add(contentPane, BorderLayout.CENTER);

        displayField = new JTextField();
        displayField.setEditable(false);
        displayField.setHorizontalAlignment(JTextField.RIGHT);
        displayField.setPreferredSize(new Dimension(280, 50));
        displayField.setFont(new Font("黑體", Font.PLAIN, 20));
        contentPane.add(displayField, BorderLayout.NORTH);

        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(6, 4, 5, 5));
        buttonPanel.setBackground(skyBlue);

        String[] buttons = {
                "%", "CE", "C", "刪除",
                "1/x", "平方", "√", "/",
                "7", "8", "9", "*",
                "4", "5", "6", "-",
                "1", "2", "3", "+",
                "±", "0", ".", "="
        };

        for (String button : buttons) {
            JButton btn = new JButton(button);
            btn.addActionListener(this);
            btn.setBackground(Color.WHITE);
            btn.setFont(new Font("黑體", Font.PLAIN, 18));
            buttonPanel.add(btn);
        }

        contentPane.add(buttonPanel, BorderLayout.CENTER);

        history = new ArrayList<>();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        String command = e.getActionCommand();
        switch (command) {
            case "C":
                displayField.setText("");
                break;
            case "CE":
                displayField.setText("");
                num1 = 0;
                num2 = 0;
                operator = '\u0000';
                break;
            case "刪除":
                String text = displayField.getText();
                if (!text.isEmpty()) {
                    displayField.setText(text.substring(0, text.length() - 1));
                }
                break;
            case "+":
            case "-":
            case "*":
            case "/":
                num1 = Double.parseDouble(displayField.getText());
                operator = command.charAt(0);
                displayField.setText("");
                break;
            case "=":
                num2 = Double.parseDouble(displayField.getText());
                double result = calculate(num1, num2, operator);
                displayField.setText(Double.toString(result));
                history.add(num1 + " " + operator + " " + num2 + " = " + result);
                break;
            case "±":
                double value = Double.parseDouble(displayField.getText());
                value = -value;
                displayField.setText(Double.toString(value));
                break;
            case "1/x":
                double reciprocal = 1 / Double.parseDouble(displayField.getText());
                displayField.setText(Double.toString(reciprocal));
                break;
            case "平方":
                double square = Math.pow(Double.parseDouble(displayField.getText()), 2);
                displayField.setText(Double.toString(square));
                break;
            case "√":
                double squareRoot = Math.sqrt(Double.parseDouble(displayField.getText()));
                displayField.setText(Double.toString(squareRoot));
                break;
            default:
                displayField.setText(displayField.getText() + command);
        }
    }

    private double calculate(double num1, double num2, char operator) {
        double result = 0;
        switch (operator) {
            case '+':
                result = num1 + num2;
                break;
            case '-':
                result = num1 - num2;
                break;
            case '*':
                result = num1 * num2;
                break;
            case '/':
                result = num1 / num2;
                break;

        }
        return result;
    }

    public static void main(String[] args) {
        try {
            // 設(shè)置Look and Feel為系統(tǒng)默認
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
            e.printStackTrace();
        }

        SwingUtilities.invokeLater(() -> {
            Calculator calculator = new Calculator();
            calculator.setVisible(true);
        });
    }
}

??總結(jié)

??在本次實驗中,我成功地實現(xiàn)了一個簡單的計算器應用程序。通過使用Java Swing庫,我創(chuàng)建了一個具有圖形界面的計算器窗口,用戶可以在其中進行基本的數(shù)值計算操作。在設(shè)計和開發(fā)過程中,我遇到了一些挑戰(zhàn)和問題,但最終成功地解決了它們。

??首先,我遇到了界面設(shè)計的挑戰(zhàn)。我花費了一些時間來決定如何布置按鈕和文本框,以使界面直觀且易于使用。使用Swing的布局管理器幫助我實現(xiàn)了靈活的界面設(shè)計,使得按鈕和文本框的布局得到了良好的控制。

??其次,處理按鈕點擊事件也是一個重要的方面。不同的按鈕具有不同的功能,包括數(shù)字輸入、運算符選擇、清空操作等。通過細致地處理按鈕點擊事件,并根據(jù)不同的按鈕命令執(zhí)行相應的操作,我成功地實現(xiàn)了這些功能,并使計算器能夠響應用戶的操作。

??另外,我實現(xiàn)了一個查看歷史記錄的功能。每次計算完成后,我將計算表達式和結(jié)果添加到歷史記錄中,并通過菜單欄提供了查看歷史記錄的選項。這樣,用戶可以隨時回顧之前的計算過程,方便追溯和復查。

??在這個項目中,我還學到了如何處理錯誤和異常情況。例如,當用戶嘗試除以零或輸入無效的內(nèi)容時,我給出了相應的錯誤提示。這提高了程序的健壯性,并增強了用戶體驗。

??通過這個實驗,我鞏固了Java Swing庫的使用,學習了如何設(shè)計和實現(xiàn)一個簡單的圖形界面應用程序。我進一步加強了對事件驅(qū)動編程和UI設(shè)計的理解。這個實驗對我的編程技能和項目開發(fā)經(jīng)驗都有很大的提升,為我未來的工作和學習打下了良好的基礎(chǔ)。文章來源地址http://www.zghlxwxcb.cn/news/detail-530327.html

到了這里,關(guān)于Java中規(guī)模軟件開發(fā)實訓——簡單計算器制作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【軟件開發(fā)】大規(guī)模分布式系統(tǒng)的容錯架構(gòu)設(shè)計

    【軟件開發(fā)】大規(guī)模分布式系統(tǒng)的容錯架構(gòu)設(shè)計

    假設(shè)有一個數(shù)據(jù)庫,數(shù)據(jù)庫里有一張?zhí)貏e大的表,里面有幾十億,甚至上百億的數(shù)據(jù)。更進一步說,假設(shè)這一張表的數(shù)據(jù)量多達幾十個 TB,甚至上百個 TB,那么如果用 MySQL 之類的數(shù)據(jù)庫,單臺數(shù)據(jù)庫服務(wù)器上的磁盤可能都不夠放這一張表的數(shù)據(jù)! 假如你手頭有一個超大的數(shù)

    2024年02月04日
    瀏覽(85)
  • Android移動開發(fā)基礎(chǔ)——實訓項目:個人財務(wù)軟件

    Android移動開發(fā)基礎(chǔ)——實訓項目:個人財務(wù)軟件

    目錄 步驟 1.? 項目計劃 需求分析 程序流程圖 2.? 實現(xiàn)功能模塊 修改APP圖標 去除標題欄 制作引導頁 登錄模塊 登錄頁面 注冊頁面 忘記密碼頁面 主頁面(使用底部導航欄) 1.? 主頁面(修改版) 菜單 + 選項卡 2.? 統(tǒng)計頁面 3.? 我的頁面 關(guān)于頁面 修改信息頁面 所有用戶頁面 設(shè)

    2024年02月08日
    瀏覽(26)
  • Java開發(fā)手冊之單元測試,軟件測試端簡單易用的SPI框架

    Java開發(fā)手冊之單元測試,軟件測試端簡單易用的SPI框架

    【推薦】編寫單元測試代碼遵守 BCDE 原則,以保證被測試模塊的交付質(zhì)量。 B:Border,邊界值測試,包括循環(huán)邊界、特殊取值、特殊時間點、數(shù)據(jù)順序等。 C:Correct,正確的輸入,并得到預期的結(jié)果。 D:Design,與設(shè)計文檔相結(jié)合,來編寫單元測試。 E:Error,強制錯誤信息輸

    2024年04月25日
    瀏覽(39)
  • 簡單FTP客戶端軟件開發(fā)——搭建FTP服務(wù)器

    簡單FTP客戶端軟件開發(fā)——搭建FTP服務(wù)器

    計網(wǎng)課程設(shè)計的要求是: 1) 該FTP客戶端程序具有以下基本功能: 2) 開發(fā)美觀易用的圖形界面 FTP使用客戶服務(wù)器方式,因為開發(fā)的是客戶端,所以需要一個FTP服務(wù)器,客戶端進行連接訪問,進行文件操作。 前面我們已經(jīng)安裝好了Linux虛擬機,在Linux搭建FTP服務(wù)器原參考博客

    2024年02月03日
    瀏覽(30)
  • 【python實操】如何通過簡單拖拽直接開發(fā)軟件,避免手寫界面布局

    【python實操】如何通過簡單拖拽直接開發(fā)軟件,避免手寫界面布局

    python學習之路任重而道遠,要想學完說容易也容易,說難也難。 很多人說python最好學了,但捫心自問,你會用python做什么了? 剛開始在大學學習c語言,寫一個飛行棋的小游戲,用dos界面來做,真是出力不討好。 地圖要自己一點一點畫出來,就像這樣: 從此討厭編程,不想

    2024年01月16日
    瀏覽(31)
  • Web前端開發(fā) 小實訓(二) 簡易計算器

    Web前端開發(fā) 小實訓(二) 簡易計算器

    學生能夠使用函數(shù)完成簡易計算器編寫 中文 英語 加法 add 減法 subtract 乘法 multi 除法 division 次冪 pow() 平方根 sqrt() 提示: 除法中的除數(shù)不能為0! 參考代碼: 參考代碼 步驟3-4參考代碼 申明方法后,在每個分支后調(diào)用 最后直接調(diào)用運行頁面 因面向的是初學Web前端課程的學生

    2024年04月28日
    瀏覽(32)
  • 《java 桌面軟件開發(fā)》swing 以鼠標為中心放大縮小移動圖片

    《java 桌面軟件開發(fā)》swing 以鼠標為中心放大縮小移動圖片

    swing 使用Graphic2D 繪制圖片,要實現(xiàn)對圖片進行縮放和自由拖動。 1.以鼠標所在的位置為中心,滾輪控制縮放 2.縮放后再支持鼠標拖動。 基本原理: 利用scale() 函數(shù)。進行縮放。但是要注意的地方是,如果是在?public void paintComponent(Graphics g) 里面通過這個Graphics g 參數(shù)獲取gra

    2024年02月06日
    瀏覽(29)
  • JAVA開發(fā)運維(軟件一體化可觀測平臺的功能)

    JAVA開發(fā)運維(軟件一體化可觀測平臺的功能)

    軟件可觀測是軟件度量的一種。旨在對軟件的數(shù)字體驗、業(yè)務(wù)運營、網(wǎng)絡(luò)性能、應用性能、基礎(chǔ)設(shè)施、IT流程進行監(jiān)控和數(shù)據(jù)刻畫。使開發(fā)人員和運維人員更好的對軟件進行優(yōu)化維護。 一、數(shù)字體驗: 用戶會話 了解用戶使用路徑,追查使用過程中影響用戶體驗的慢請求、慢

    2024年02月05日
    瀏覽(27)
  • java 企業(yè)工程管理系統(tǒng)軟件源碼+Spring Cloud + Spring Boot +二次開發(fā)+ MybatisPlus + Redis

    java 企業(yè)工程管理系統(tǒng)軟件源碼+Spring Cloud + Spring Boot +二次開發(fā)+ MybatisPlus + Redis

    ?? 工程項目管理軟件(工程項目管理系統(tǒng))對建設(shè)工程項目管理組織建設(shè)、項目策劃決策、規(guī)劃設(shè)計、施工建設(shè)到竣工交付、總結(jié)評估、運維運營,全過程、全方位的對項目進行綜合管理 ? ?工程項目各模塊及其功能點清單 一、系統(tǒng)管理 ? ? 1、數(shù)據(jù)字典:實現(xiàn)對數(shù)據(jù)字典

    2024年02月10日
    瀏覽(25)
  • java 企業(yè)工程管理系統(tǒng)軟件源碼+Spring Cloud + Spring Boot +二次開發(fā)+ MybatisPlus + Redis em

    java 企業(yè)工程管理系統(tǒng)軟件源碼+Spring Cloud + Spring Boot +二次開發(fā)+ MybatisPlus + Redis em

    ? 工程項目管理軟件(工程項目管理系統(tǒng))對建設(shè)工程項目管理組織建設(shè)、項目策劃決策、規(guī)劃設(shè)計、施工建設(shè)到竣工交付、總結(jié)評估、運維運營,全過程、全方位的對項目進行綜合管理 ? ?工程項目各模塊及其功能點清單 一、系統(tǒng)管理 ? ? 1、數(shù)據(jù)字典:實現(xiàn)對數(shù)據(jù)字典標

    2024年02月14日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包