1.站立式会议
1.1 会议照片
1.2 会议内容
昨天已完成的工作:
已初步完成主界面设计和数据库编写记录
今天计划完成的工作
项目模块 | 需要实现的功能 | 负责人 | 预计用时 |
---|---|---|---|
数据库模块 | 数据库记录的备份、恢复和退出 | 王伊若 | 2h |
主界面模块 | 账目记录的增删改功能及界面 | 王伊若 | 6h |
主界面模块 | 完善主界面设计,报告界面前期准备 | 黄锐 | 3h |
主界面模块 | 查询界面功能 | 黄锐 | 5h |
主界面模块 | 软件帮助说明功能 | 江佳哲 | 3h |
主界面模块 | 用户信息界面 | 叶尔森 | 3h |
工作中遇到的困难:
在添加账目的监听器方法中忘记考虑支出分类和收入分类的不同,还需要“分类”下拉列表框的事件监听器,下拉列表框的监听事件就是为了动态获取用户所选择的分类名称。
2.项目燃尽图
3.模块的最新(运行)截图:
数据库的备份
备份事件处理代码如下:
/*** “备份”菜单项的事件监听器** @param actionEvent 事件*/@FXMLpublic 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 事件*/@FXMLpublic 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 事件*/@FXMLpublic 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 事件*/@FXMLpublic 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的团队协作,初步尝试了代码的签入 |