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

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量?。彝ビ涃~軟件)

這篇具有很好參考價值的文章主要介紹了Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量!(家庭記賬軟件)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?博主:命運之光

??專欄:Python星辰秘典

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

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

??博主的其他文章:點擊進(jìn)入博主的主頁

前言:財務(wù)自由,理想生活的關(guān)鍵之一就是有效的財務(wù)管理。但是,很多人在家庭記賬上遇到了困惑和挑戰(zhàn)。幸運的是,我設(shè)計了一個令人驚嘆的家庭記賬管理系統(tǒng),它將幫助您輕松解決這些問題。在這篇博客中,我將帶您深入了解這個系統(tǒng)的設(shè)計流程和功能,讓您體驗到一種全新的、智能化的財務(wù)管理方式。無論您是要控制支出、追蹤收入,還是實現(xiàn)財務(wù)目標(biāo),本系統(tǒng)都將成為您不可或缺的伙伴。讓我們一同探索,讓財務(wù)管理變得簡單、高效、樂趣十足!?

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量?。彝ビ涃~軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

目錄

??項目一:家庭記賬軟件

??一、 實驗內(nèi)容

二、 問題描述

三、 項目功能

四、 項目分析

五、 項目設(shè)計

六、 系統(tǒng)實現(xiàn)

七、總結(jié)


??項目一:家庭記賬軟件

??一、 實驗內(nèi)容

《家庭記賬管理軟件》是一個利用Java Swing圖形界面創(chuàng)建的應(yīng)用程序,旨在幫助家庭記錄和管理收入和支出,并提供支出明細(xì)表的打印功能。

該軟件具有以下主要功能:

用戶界面:軟件使用Java Swing庫創(chuàng)建圖形用戶界面,提供友好的操作界面,使用戶能夠輕松輸入和管理家庭的財務(wù)信息。

記錄收入和支出:用戶可以輸入家庭的收入和支出信息,包括金額、收入來源等。例如,他們可以輸入薪水、租金、水電費、購物開銷等。

支出明細(xì)表:軟件可以生成支出明細(xì)表,其中包括每筆支出的詳細(xì)信息,如金額、分類等。用戶可以選擇打印該明細(xì)表,以便于記錄和審查家庭的支出情況。

通過實現(xiàn)這些功能,該《家庭記賬管理軟件》可以幫助用戶記錄和管理家庭的收入和支出,提供財務(wù)統(tǒng)計信息,并提供支出明細(xì)表的打印功能,以便用戶更好地管理和掌握家庭的財務(wù)狀況。

??二、 問題描述

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

家庭財務(wù)管理:許多家庭需要有效地管理他們的財務(wù)狀況,包括收入和支出的記錄、統(tǒng)計和分析。該軟件提供了一個方便的平臺,讓家庭成員能夠輕松地記錄和管理他們的財務(wù)信息。

支出控制和預(yù)算:通過記錄和分類支出,家庭成員可以更好地控制他們的開支,并制定合理的預(yù)算。軟件提供的統(tǒng)計信息和支出明細(xì)表可以幫助用戶了解他們的消費習(xí)慣和開支情況,從而更好地進(jìn)行預(yù)算規(guī)劃。

財務(wù)透明度和溝通:對于多人共同生活的家庭,財務(wù)透明度和溝通非常重要。該軟件允許家庭成員共享和訪問相同的賬戶信息,使他們能夠更好地了解家庭的財務(wù)狀況,提高溝通和決策效率。

記賬方便性:傳統(tǒng)的手寫記賬可能繁瑣且容易出錯,而該軟件提供了一個簡單直觀的圖形界面,使記賬變得更加方便和準(zhǔn)確。用戶可以通過輸入相關(guān)信息,快速記錄收入和支出,而且軟件會自動計算和管理數(shù)據(jù)。

通過解決這些問題,該《家庭記賬管理軟件》可以幫助家庭成員更好地管理他們的財務(wù),提高財務(wù)規(guī)劃和控制的效率,并促進(jìn)家庭內(nèi)部的財務(wù)透明度和溝通。

??三、 項目功能

(1)用戶界面

軟件使用Java Swing庫創(chuàng)建圖形用戶界面,提供友好的操作界面,使用戶能夠輕松輸入和管理家庭的財務(wù)信息。

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量?。彝ビ涃~軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

(2)記錄收入和支出

用戶可以輸入家庭的收入和支出信息,包括金額、收入來源等。例如,他們可以輸入薪水、租金、水電費、購物開銷等。

登記收入

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量!(家庭記賬軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

登記支出

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量!(家庭記賬軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

(3)支出明細(xì)表

軟件可以生成支出明細(xì)表,其中包括每筆支出的詳細(xì)信息,如金額、分類等。用戶可以選擇打印該明細(xì)表,以便于記錄和審查家庭的支出情況。

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量?。彝ビ涃~軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

通過這個《家庭記賬管理軟件》,家庭成員可以方便地記錄和管理他們的財務(wù)信息,有助于更好地掌握和規(guī)劃家庭的經(jīng)濟(jì)狀況。

??四、 項目分析

(1)用戶界面:在主界面上,用戶可以看到收支明細(xì)、登記收入、登記支出和清空記錄等統(tǒng)計信息的摘要。還可以選擇添加新的收入或支出,查看支出明細(xì)表或打印支出明細(xì)。

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量?。彝ビ涃~軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

(2)登記收入按鈕:點擊登錄收入按鈕會彈出對話框,對話框中可以錄入收入來源和金額兩個信息,點擊確定信息錄入,點擊取消關(guān)閉對話框。

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量?。彝ビ涃~軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

點擊確定按鈕后會顯示收入已登記。

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量?。彝ビ涃~軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

(3)登記支出按鈕:點擊登錄支出按鈕會彈出對話框,對話框中可以錄入支出來源和金額兩個信息,點擊確定信息錄入,點擊取消關(guān)閉對話框。

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量!(家庭記賬軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

點擊確定按鈕后會顯示支出已登記。

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量?。彝ビ涃~軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

(4)收支明細(xì)按鈕:點擊按鈕會彈出收支明細(xì)頁面,頁面中詳細(xì)顯示出錄入的收入信息和錄入的支出信息,具體樣式如下圖所示:

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量!(家庭記賬軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

點擊確定按鈕或者右上角的叉號關(guān)閉收入明細(xì)對話框。

(5)清空記錄按鈕:用于清空輸入的數(shù)據(jù),用于重新輸入新的數(shù)據(jù)。

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量?。彝ビ涃~軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

點擊確認(rèn)按鈕進(jìn)行錄入信息的清除。

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量?。彝ビ涃~軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

信息清楚成功,再次點擊收支明細(xì)按鈕進(jìn)行檢驗。

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量?。彝ビ涃~軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

信息清除完畢。

??五、 項目設(shè)計

Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量!(家庭記賬軟件),JAVA中規(guī)模軟件開發(fā)實訓(xùn),# Java經(jīng)典程序設(shè)計(開發(fā)篇),Java經(jīng)典程序設(shè)計專欄,Java,Java實訓(xùn),中規(guī)模軟件開發(fā),算法,Java項目開發(fā)

??六、 系統(tǒng)實現(xiàn)

??項目源代碼

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;

public class FamilyAccountingSystem extends JFrame {
    private double baseAmount; // 基本金
    private List<Expense> expenseList; // 支出列表
    private List<Income> incomeList; // 收入列表

    private JButton showDetailsButton; // 顯示明細(xì)按鈕
    private JButton addIncomeButton; // 添加收入按鈕
    private JButton addExpenseButton; // 添加支出按鈕
    private JButton clearRecordsButton; // 清空記錄按鈕

    public FamilyAccountingSystem() {
        setTitle("家庭記賬管理系統(tǒng)"); // 設(shè)置窗口標(biāo)題
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 設(shè)置窗口關(guān)閉操作為退出程序
        setLayout(null); // 設(shè)置布局管理器為null,使用自定義布局
        // 創(chuàng)建一個帶背景圖的JPanel作為容器
        JPanel panel = new JPanel() {
            @Override
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                // 加載背景圖像并繪制到JPanel上
                Image backgroundImage = new ImageIcon("3.jpg").getImage();
                g.drawImage(backgroundImage, 0, 0, getWidth(), getHeight(), null);
            }
        };
        setContentPane(panel); // 設(shè)置窗口內(nèi)容面板為自定義的JPanel
        setLayout(new GridBagLayout()); // 設(shè)置布局管理器為GridBagLayout

        // 創(chuàng)建一個JLabel用于顯示"家庭記賬管理系統(tǒng)"
        JLabel titleLabel = new JLabel("家庭記賬管理系統(tǒng)");
        titleLabel.setFont(new Font("黑體", Font.BOLD, 20));
        titleLabel.setHorizontalAlignment(JLabel.CENTER);

        // 設(shè)置GridBagLayout布局管理器
        setLayout(new GridBagLayout());

        // 創(chuàng)建GridBagConstraints對象,用于設(shè)置組件的約束條件
        GridBagConstraints constraints = new GridBagConstraints();
        constraints.gridx = 0;
        constraints.gridy = 0;
        constraints.gridwidth = GridBagConstraints.REMAINDER; // 占據(jù)整行
        constraints.insets = new Insets(-100, 10, 0, 10); // 設(shè)置組件的內(nèi)邊距

        // 將titleLabel添加到界面中
        add(titleLabel, constraints);

        baseAmount = 10000.0; // 設(shè)置初始基本金
        expenseList = new ArrayList<>(); // 創(chuàng)建支出列表
        incomeList = new ArrayList<>(); // 創(chuàng)建收入列表

        // 創(chuàng)建按鈕并設(shè)置字體樣式
        showDetailsButton = new JButton("收支明細(xì)");
        addIncomeButton = new JButton("登記收入");
        addExpenseButton = new JButton("登記支出");
        clearRecordsButton = new JButton("清空記錄");

        showDetailsButton.setFont(new Font("黑體", Font.BOLD, 16));
        addIncomeButton.setFont(new Font("黑體", Font.BOLD, 16));
        addExpenseButton.setFont(new Font("黑體", Font.BOLD, 16));
        clearRecordsButton.setFont(new Font("黑體", Font.BOLD, 16));

        // 創(chuàng)建按鈕的約束條件對象
        GridBagConstraints buttonConstraints = new GridBagConstraints();
        buttonConstraints.gridx = 0;
        buttonConstraints.gridy = 0;
        buttonConstraints.insets = new Insets(10, 10, 10, 10); // 設(shè)置按鈕的內(nèi)邊距
        buttonConstraints.ipadx = 20;
        buttonConstraints.ipady = 10;

        // 將按鈕添加到界面中
        add(showDetailsButton, buttonConstraints);

        buttonConstraints.gridy = 1;
        add(addIncomeButton, buttonConstraints);

        buttonConstraints.gridy = 2;
        add(addExpenseButton, buttonConstraints);

        buttonConstraints.gridy = 3;
        add(clearRecordsButton, buttonConstraints);

        // 為按鈕添加事件監(jiān)聽器
        showDetailsButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showDetails();
            }
        });

        addIncomeButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showIncomeDialog();
            }
        });

        addExpenseButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                showExpenseDialog();
            }
        });

        clearRecordsButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                clearRecords();
            }
        });

        pack(); // 調(diào)整窗口大小以適應(yīng)組件
        setSize(600, 400); // 設(shè)置窗口大小
        setLocationRelativeTo(null); // 將窗口居中顯示
    }


    // 顯示收支明細(xì)的方法
    private void showDetails() {
        StringBuilder report = new StringBuilder(); // 創(chuàng)建一個字符串構(gòu)建器
        DecimalFormat decimalFormat = new DecimalFormat("#.00"); // 創(chuàng)建一個數(shù)字格式化對象,用于格式化金額

        report.append("收支明細(xì)表\n");
        report.append("------------------------------\n");

        report.append("基本金: ").append(decimalFormat.format(baseAmount)).append(" 元\n");

        report.append("收入明細(xì):\n");
        for (Income income : incomeList) {
            report.append("來源: ").append(income.getSource()).append("\n");
            report.append("金額: ").append(decimalFormat.format(income.getAmount())).append(" 元\n");
            report.append("--------------------\n");
        }

        report.append("支出明細(xì):\n");
        for (Expense expense : expenseList) {
            report.append("類別: ").append(expense.getCategory()).append("\n");
            report.append("金額: ").append(decimalFormat.format(expense.getAmount())).append(" 元\n");
            report.append("--------------------\n");
        }

        JTextArea reportArea = new JTextArea(report.toString()); // 創(chuàng)建一個文本區(qū)域組件,用于顯示報表內(nèi)容
        reportArea.setFont(new Font("黑體", Font.PLAIN, 16)); // 設(shè)置文本區(qū)域的字體樣式
        reportArea.setEditable(false); // 設(shè)置文本區(qū)域為只讀
        reportArea.setLineWrap(true); // 設(shè)置文本自動換行
        reportArea.setWrapStyleWord(true); // 設(shè)置文本以單詞為單位換行

        JScrollPane scrollPane = new JScrollPane(reportArea); // 創(chuàng)建一個帶滾動條的面板,用于顯示文本區(qū)域
        scrollPane.setPreferredSize(new Dimension(570, 350)); // 設(shè)置面板的首選大小

        JOptionPane.showMessageDialog(null, scrollPane, "收支明細(xì)", JOptionPane.PLAIN_MESSAGE);
        // 彈出一個對話框,顯示收支明細(xì)報表
    }


    // 顯示添加收入對話框的方法
    private void showIncomeDialog() {
        JTextField sourceField = new JTextField(10); // 創(chuàng)建一個文本框組件,用于輸入收入來源
        JTextField amountField = new JTextField(10); // 創(chuàng)建一個文本框組件,用于輸入收入金額

        JPanel panel = new JPanel(new GridLayout(2, 2)); // 創(chuàng)建一個面板,使用網(wǎng)格布局
        panel.add(new JLabel("收入來源:")); // 在面板中添加標(biāo)簽組件
        panel.add(sourceField); // 在面板中添加收入來源文本框
        panel.add(new JLabel("金額:")); // 在面板中添加標(biāo)簽組件
        panel.add(amountField); // 在面板中添加金額文本框

        int result = JOptionPane.showConfirmDialog(null, panel, "登記收入", JOptionPane.OK_CANCEL_OPTION);
        // 彈出一個對話框,顯示收入對話框,并等待用戶點擊確認(rèn)或取消按鈕
        if (result == JOptionPane.OK_OPTION) { // 如果用戶點擊了確認(rèn)按鈕


            //情況判斷再加一條,如果輸入的并非字符串形式,那么無法錄入。
            


            String source = sourceField.getText(); // 獲取收入來源
            double amount = Double.parseDouble(amountField.getText()); // 獲取收入金額

            baseAmount += amount; // 更新基本金額
            incomeList.add(new Income(source, amount)); // 將收入信息添加到收入列表

            JOptionPane.showMessageDialog(null, "收入已登記!", "提示", JOptionPane.INFORMATION_MESSAGE);
            // 彈出一個提示對話框,顯示收入已登記的信息
        }
    }

    // 顯示添加支出對話框的方法
    private void showExpenseDialog() {
        JTextField categoryField = new JTextField(10); // 創(chuàng)建一個文本框組件,用于輸入支出類別
        JTextField amountField = new JTextField(10); // 創(chuàng)建一個文本框組件,用于輸入支出金額

        JPanel panel = new JPanel(new GridLayout(2, 2)); // 創(chuàng)建一個面板,使用網(wǎng)格布局
        panel.add(new JLabel("支出類別:")); // 在面板中添加標(biāo)簽組件
        panel.add(categoryField); // 在面板中添加支出類別文本框
        panel.add(new JLabel("金額:")); // 在面板中添加標(biāo)簽組件
        panel.add(amountField); // 在面板中添加金額文本框

        int result = JOptionPane.showConfirmDialog(null, panel, "登記支出", JOptionPane.OK_CANCEL_OPTION);
        // 彈出一個對話框,顯示支出對話框,并等待用戶點擊確認(rèn)或取消按鈕
        if (result == JOptionPane.OK_OPTION) { // 如果用戶點擊了確認(rèn)按鈕
            String category = categoryField.getText(); // 獲取支出類別
            double amount = Double.parseDouble(amountField.getText()); // 獲取支出金額

            if (amount <= baseAmount) { // 如果支出金額不超過基本金額
                baseAmount -= amount; // 更新基本金額
                expenseList.add(new Expense(category, amount)); // 將支出信息添加到支出列表

                JOptionPane.showMessageDialog(null, "支出已登記!", "提示", JOptionPane.INFORMATION_MESSAGE);
                // 彈出一個提示對話框,顯示支出已登記的信息
            } else {
                JOptionPane.showMessageDialog(null, "基本金不足!", "錯誤", JOptionPane.ERROR_MESSAGE);
                // 彈出一個錯誤對話框,顯示基本金不足的信息
            }
        }
    }

    // 清空收支記錄的方法
    private void clearRecords() {
        int choice = JOptionPane.showConfirmDialog(null, "確認(rèn)清空所有記錄嗎?", "提示", JOptionPane.YES_NO_OPTION);
        // 彈出一個確認(rèn)對話框,等待用戶點擊是或否按鈕
        if (choice == JOptionPane.YES_OPTION) { // 如果用戶點擊了是按鈕
            baseAmount = 0.0; // 將基本金額設(shè)置為0
            incomeList.clear(); // 清空收入列表
            expenseList.clear(); // 清空支出列表

            JOptionPane.showMessageDialog(null, "記錄已清空!", "提示", JOptionPane.INFORMATION_MESSAGE);
            // 彈出一個提示對話框,顯示記錄已清空的信息
        }
    }


    private class Income {
        private String source;
        private double amount;

        public Income(String source, double amount) {
            this.source = source;
            this.amount = amount;
        }

        public String getSource() {
            return source;
        }

        public double getAmount() {
            return amount;
        }
    }

    private class Expense {
        private String category;
        private double amount;

        public Expense(String category, double amount) {
            this.category = category;
            this.amount = amount;
        }

        public String getCategory() {
            return category;
        }

        public double getAmount() {
            return amount;
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                FamilyAccountingSystem accountingSystem = new FamilyAccountingSystem();
                accountingSystem.setVisible(true);
            }
        });
    }
}

??七、總結(jié)

在設(shè)計上述代碼的過程中,沒有遇到太大的問題。這段代碼是一個簡單的家庭記賬管理系統(tǒng),使用Java Swing構(gòu)建了一個圖形用戶界面。代碼實現(xiàn)了添加收入、添加支出、顯示收支明細(xì)和清空記錄等功能。

設(shè)計過程中需要注意以下幾點:

1.合理組織代碼結(jié)構(gòu):將功能代碼分散到不同的方法中,使得代碼更加模塊化和可維護(hù)。

2.合理使用面向?qū)ο蟮脑O(shè)計思想:將收入和支出抽象為類,使得代碼更具可讀性和擴(kuò)展性。

3.注意異常處理:對用戶的輸入進(jìn)行合法性驗證,避免出現(xiàn)異常情況。

4.布局管理器的選擇:根據(jù)需要使用適當(dāng)?shù)牟季止芾砥?,以實現(xiàn)界面的美觀和靈活性。

通過完成這個項目,我對Java Swing的使用有了更深入的理解,并且學(xué)會了如何設(shè)計和實現(xiàn)一個簡單的圖形用戶界面應(yīng)用程序。我也意識到良好的代碼結(jié)構(gòu)和注釋對于代碼的可讀性和可維護(hù)性是非常重要的。這個項目還啟發(fā)了我對其他實際應(yīng)用的開發(fā)和設(shè)計的思考,為我今后的學(xué)習(xí)和工作奠定了基礎(chǔ)。文章來源地址http://www.zghlxwxcb.cn/news/detail-524951.html

到了這里,關(guān)于Java中規(guī)模軟件開發(fā)實訓(xùn)——掌握財務(wù)自由的關(guān)鍵!解鎖智能家庭記賬系統(tǒng)的神奇力量?。彝ビ涃~軟件)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(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ù)。更進(jìn)一步說,假設(shè)這一張表的數(shù)據(jù)量多達(dá)幾十個 TB,甚至上百個 TB,那么如果用 MySQL 之類的數(shù)據(jù)庫,單臺數(shù)據(jù)庫服務(wù)器上的磁盤可能都不夠放這一張表的數(shù)據(jù)! 假如你手頭有一個超大的數(shù)

    2024年02月04日
    瀏覽(85)
  • 全面掌握軟件開發(fā)與設(shè)計:從文檔編寫到AI繪畫與圖標(biāo)設(shè)計(大綱)

    引言 介紹軟件開發(fā)與設(shè)計的多面性 強(qiáng)調(diào)文檔編寫、AI繪畫、Markdown、GitHub和圖標(biāo)設(shè)計的重要性 在當(dāng)今快速發(fā)展的技術(shù)時代,軟件開發(fā)與設(shè)計不僅是技術(shù)實現(xiàn)的過程,更是藝術(shù)與科學(xué)的結(jié)合。從項目文檔的編寫到AI繪畫的創(chuàng)新應(yīng)用,再到UI界面中圖標(biāo)設(shè)計的精妙,每一個環(huán)節(jié)都

    2024年04月15日
    瀏覽(36)
  • 【Linux系列P4】Linux需要什么?編輯器?軟件包?一文幫你了解掌握 [yum]&[vim]———基礎(chǔ)開發(fā)工具篇

    【Linux系列P4】Linux需要什么?編輯器?軟件包?一文幫你了解掌握 [yum]&[vim]———基礎(chǔ)開發(fā)工具篇

    前言 大家好吖,歡迎來到 YY 滴 Linux系列 ,熱烈歡迎! 本章主要內(nèi)容面向未接觸過Linux的老鐵,主要內(nèi)容含 歡迎訂閱 YY 滴Linux專欄!更多干貨持續(xù)更新!以下是傳送門!? 訂閱專欄閱讀: YY 的《Linux》系列 ????? 【Linux系列-P1】 Linux環(huán)境的搭建 【Linux系列-P2】Linux的基本

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

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

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

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

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

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

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

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

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

    2024年04月25日
    瀏覽(39)
  • 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é)評估、運維運營,全過程、全方位的對項目進(jìn)行綜合管理 ? ?工程項目各模塊及其功能點清單 一、系統(tǒng)管理 ? ? 1、數(shù)據(jù)字典:實現(xiàn)對數(shù)據(jù)字典

    2024年02月10日
    瀏覽(26)
  • 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é)評估、運維運營,全過程、全方位的對項目進(jìn)行綜合管理 ? ?工程項目各模塊及其功能點清單 一、系統(tǒng)管理 ? ? 1、數(shù)據(jù)字典:實現(xiàn)對數(shù)據(jù)字典標(biāo)

    2024年02月14日
    瀏覽(24)
  • 要利用Java編程提升人們對安全教育的興趣,可以開發(fā)一些互動性強(qiáng)、內(nèi)容生動有趣的教育軟件或游戲

    要利用Java編程提升人們對安全教育的興趣,可以開發(fā)一些互動性強(qiáng)、內(nèi)容生動有趣的教育軟件或游戲

    要利用Java編程提升人們對安全教育的興趣,可以開發(fā)一些互動性強(qiáng)、內(nèi)容生動有趣的教育軟件或游戲。以下是一些建議: 開發(fā)安全教育游戲:使用Java編程語言,可以開發(fā)一些有關(guān)于安全教育的小游戲,如模擬火災(zāi)逃生、地震自救等場景,讓玩家在游戲中學(xué)習(xí)到安全知識。

    2024年04月27日
    瀏覽(23)
  • 【MongoDB-Redis-MySQL-Elasticsearch-Kibana-RabbitMQ-MinIO】Java全棧開發(fā)軟件一網(wǎng)打盡

    【MongoDB-Redis-MySQL-Elasticsearch-Kibana-RabbitMQ-MinIO】Java全棧開發(fā)軟件一網(wǎng)打盡

    前言 全棧開發(fā)是一項復(fù)雜而令人興奮的任務(wù),涵蓋了從前端到后端、數(shù)據(jù)庫到可視化層、消息隊列到文件存儲的廣泛領(lǐng)域。本文將帶您深入探討在Windows環(huán)境下進(jìn)行全棧開發(fā)的過程,涵蓋了Java全棧開發(fā)所需的關(guān)鍵技術(shù)和工具。無論您是初學(xué)者還是經(jīng)驗豐富的開發(fā)人員,本文都

    2024年02月05日
    瀏覽(72)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包