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的團隊協作,初步嘗試了程式碼的簽入 |