第4篇Scrum衝刺部落格

闪火31發表於2024-11-17

1.站立式會議

1.1 會議照片

1.2 會議內容

昨天已完成的工作:
已初步完成主介面設計和資料庫編寫記錄
今天計劃完成的工作

專案模組 需要實現的功能 負責人 預計用時
資料庫模組 資料庫記錄的備份、恢復和退出 王伊若 2h
主介面模組 賬目記錄的增刪改功能及介面 王伊若 6h
主介面模組 完善主介面設計,報告介面前期準備 黃銳 3h
主介面模組 查詢介面功能 黃銳 5h
主介面模組 軟體幫助說明功能 江佳哲 3h
主介面模組 使用者資訊介面 葉爾森 3h

工作中遇到的困難:
在新增賬目的監聽器方法中忘記考慮支出分類和收入分類的不同,還需要“分類”下拉選單框的事件監聽器,下拉選單框的監聽事件就是為了動態獲取使用者所選擇的分類名稱。

2.專案燃盡圖

3.模組的最新(執行)截圖:

資料庫的備份
備份事件處理程式碼如下:


    /**
     * “備份”選單項的事件監聽器
     *
     * @param actionEvent 事件
     */
    @FXML
    public void backupMenuItemEvent(ActionEvent actionEvent) throws IOException {
        //例項化檔案選擇器
        FileChooser fileChooser = new FileChooser();
        //設定開啟檔案選擇框預設輸入的檔名
        fileChooser.setInitialFileName("Database_Backup_" + dateTools.dateFormat(new Date(), "yyyy-MM-dd") + ".sql");
        //開啟檔案選擇框
        File result = fileChooser.showSaveDialog(null);
        if (result != null) {
            String savePath = result.getAbsolutePath();
            // 例項化Properties物件
            Properties properties = new Properties();
            // 載入properties配置檔案
            FileInputStream fis = new FileInputStream(new File("tally_book\\src\\tallybook_system\\properties\\db.properties"));
            properties.load(fis);
            // 透過鍵名獲取對應的值
            String databaseName = properties.get("databaseName").toString();
            String user = properties.get("user").toString();
            String password = properties.get("password").toString();
            // 呼叫備份方法需要提供MySQL的使用者名稱、密碼和資料庫名,這些資料從properties檔案中讀取
            boolean b = JDBCUtils.backup(user, password, savePath, databaseName);
            if (b) {
                SimpleTools.informationDialog(Alert.AlertType.INFORMATION, "提示", "資訊", "備份資料庫成功!");
            } else {
                SimpleTools.informationDialog(Alert.AlertType.ERROR, "提示", "錯誤", "備份資料庫失敗!");
            }
            // 關閉流
            fis.close();
        }
    }

執行程式:

備份成功後用記事本開啟,可以看到如下資訊:

新增賬目
新增功能的實現在AddAccountFrameController的addButtonEvent()方法中,程式碼如下:

        // 型別
        String type = selectedRadioButton;
        // 金額,把從文字框得到的string型別資料轉換為float型別
        float money = Float.parseFloat(moneyTextField.getText());
        // 分類
        String classification = selectedCoboboxItem;
        // 備註
        String memo = memoTextArea.getText();
        // 日期
        String date = datePickerTextField.getValue().toString();
        // 將使用者輸入的資料封裝到Record實體類中
        Record record = new Record(Session.getUser().getUserId(), type, money, classification, memo, date);
        // 例項化RecordDao物件
        RecordDao recordDao = new RecordDao();
        // 新增資料到資料庫
        boolean b = recordDao.addRecord(record);
        // 對新增操作的結果進行判斷處理
        if (b) {
            SimpleTools.informationDialog(Alert.AlertType.INFORMATION, "提示", "資訊", "新增賬目成功!");
            // 清空使用者選擇
            outputRadioButton.setSelected(false);
            inputRadioButton.setSelected(false);
            moneyTextField.setText("");
            classificationComboBox.getItems().clear();
            memoTextArea.setText("");
            datePickerTextField.getEditor().setText("");
        } else {
            SimpleTools.informationDialog(Alert.AlertType.ERROR, "提示", "錯誤", "新增賬目失敗!");
        }

選中“收入”單選按鈕,下面的分類全都是“收入”的分類名稱:

選中“支出”單選按鈕,下面的分類全都是“支出”的分類名稱:

選中“日期”單選按鈕,下面表格方便使用者選時間:

收入和支出成功新增:

可以在主介面檢視新增成功的記錄:

刪除賬目
查詢、刪除按鈕的事件監聽器程式碼如下:

    /**
     * ”查詢“按鈕的事件監聽器
     *
     * @param actionEvent 事件
     */
    @FXML
    public void checkButtonEvent(ActionEvent actionEvent) {
        // 例項化Record物件
        Record record = new Record();
        // 例項化RecordDao物件
        RecordDao recordDao = new RecordDao();
        // 透過記錄ID和使用者ID查詢賬目記錄
        Record checkedRecord = recordDao.selectRecordByIdAndUserId(Integer.parseInt(idTextField.getText()), Session.getUser().getUserId());
        String info = "";
        if (checkedRecord.getRecordType() == null && checkedRecord.getRecordClassification() == null) {
            info = "無此查詢結果!";
        } else {
            info =
                    "型別:\t\t" + checkedRecord.getRecordType() + "\n"
                            + "金額:\t\t" + checkedRecord.getRecordMoney() + "\n"
                            + "分類:\t\t" + checkedRecord.getRecordClassification() + "\n"
                            + "備註:\t\t" + checkedRecord.getRecordMemo() + "\n"
                            + "日期:\t\t" + checkedRecord.getRecordDate() + "\n";
        }
        // 顯示查詢結果
        contentLabel.setText(info);
    }

    /**
     * ”刪除“按鈕的事件監聽器
     *
     * @param actionEvent 事件
     */
    @FXML
    public void deleteButtonEvent(ActionEvent actionEvent) {
        // 將string型別資料轉換為int型別資料
        int id = Integer.parseInt(idTextField.getText());
        // 例項化RecordDao物件
        RecordDao recordDao = new RecordDao();
        // 根據ID刪除記錄
        boolean b = recordDao.deleteRecord(new Record(id));
        if (b) {
            SimpleTools.informationDialog(Alert.AlertType.INFORMATION, "提示", "資訊", "刪除資料成功!");
            // 刪除成功後就清除窗體資料
            idTextField.setText("");
            contentLabel.setText("");
        } else {
            SimpleTools.informationDialog(Alert.AlertType.ERROR, "提示", "錯誤", "刪除資料失敗!");
        }
    }

介面:

輸入序號查詢如下:

執行程式,執行功能如下:

資料庫前後對比:

修改賬目
查詢按鈕的事件處理程式碼如下:

    /**
     * ”更改“按鈕的事件監聽器
     *
     * @param actionEvent 事件
     */
    @FXML
    public void alterButtonEvent(ActionEvent actionEvent) {
        // 序號
        int id = Integer.parseInt(idTextField.getText());
        //型別
        String type = "";
        if (inputRadioButton.isSelected()) {
            type = inputRadioButton.getText();
        } else if (outputRadioButton.isSelected()) {
            type = outputRadioButton.getText();
        }
        // 金額,把從文字框得到的string型別資料轉換為float型別
        float money = Float.parseFloat(moneyTextField.getText());
        // 分類
        String classification = classificationComboBox.getSelectionModel().getSelectedItem().toString();
        // 備註
        String memo = memoTextArea.getText();
        // 日期
        String date = datePickerText.getValue().toString();
        // 將使用者修改的資料封裝到實體類中
        Record record = new Record(Session.getUser().getUserId(), id, type, money, classification, memo, date);
        // 例項化RecordDao物件
        RecordDao recordDao = new RecordDao();
        // 執行修改操作
        boolean b = recordDao.updateRecord(record);
        // 對修改結果進行判斷
        if (b) {
            SimpleTools.informationDialog(Alert.AlertType.INFORMATION, "提示", "資訊", "修改賬目成功!");
        } else {
            SimpleTools.informationDialog(Alert.AlertType.ERROR, "提示", "錯誤", "修改賬目失敗!");
        }
    }

介面:

查詢功能測試如下:

修改賬目,執行程式成功:

資料庫前後對比:

4.每人每日總結

成員 總結
王伊若 由於明確的分工,我們的效率提高了很多,希望再接再厲
黃銳 明天繼續努力
江佳哲 在團隊協作方面不太熟練,進度有點慢,會盡力加快步伐
葉爾森 熟悉了github的團隊協作,初步嘗試了程式碼的簽入

相關文章