Day6–零钱通(记账)小项目测试
先看功能
这个小项目还是利用封装好的jdbc工具去实现数据持久化的项目
下面出代码
数据库建表代码如下,id我们要实现让他自增
在这里有一个小细节,关于数据库中时间类型的设定 如果设定为datatime,
从数据获取字段直接输出的化就会出现2024-07-20T16:23这种奇怪的格式,
在时间数据入库的时候也容易出错,所以这里就设成了字符串类型
CREATE TABLE money(
id int AUTO_INCREMENT PRIMARY KEY,
typein VARCHAR(255) not null,
amount DOUBLE not null,
timein VARCHAR(255) not null,
balance DOUBLE not null)
jdbc连接工具在Day5_2–学生信息管理系统数据持久化改造(德鲁伊)的文章中已经给出
money表对应的javabean实体类发出来,需要自己写,用ptg插件很方便。
这个项目比较简单所以我把功能实现直接写到了表现层,没有封装方法,这样展示也比较直观
package ChangeCard.UserUi;
import ChangeCard.Model.money;
import ChangeCard.Tools.jdbcTool;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Scanner;
public class Ui {
public static void main(String[] args) throws Exception {
try {
Scanner scanner = new Scanner(System.in);
Boolean flag = true;
while (flag) {
System.out.println("-----------------零钱通菜单-----------------");
System.out.println(" 1 零钱通明细");
System.out.println(" 2 收益入账");
System.out.println(" 3 消费");
System.out.println(" 4 退 出");
System.out.print("请选择(1-4):");
int i = scanner.nextInt();
switch (i) {
case 1: {
System.out.println("-----------------零钱通明细-----------------");
List<money> rs = jdbcTool.select("select * from money", money.class);
for (int j = 0; j < rs.size(); j++) {
//支出收入金额
String amount = "";
if (rs.get(j).getAmount() >= 0) {
amount = "+" + String.valueOf(rs.get(j).getAmount());
} else amount = String.valueOf(rs.get(j).getAmount());
//日期
String time = rs.get(j).getTimein();
System.out.println(rs.get(j).getTypein() + "\t" + amount + "\t" + time + "\t" + "余额:" + rs.get(j).getBalance());
}
}
break;
case 2: {
System.out.print("请输入收益来源:");
String type = scanner.next();
System.out.print("请输入收入金额:");
Double mount = scanner.nextDouble();
Date data = new Date();
SimpleDateFormat now = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String time = now.format(data);
List<money> select = jdbcTool.select("select balance from money where id=(select MAX(id) from money)", money.class);
Double balance = select.get(0).getBalance();
jdbcTool.cru("insert into money values(null,?,?,?,?)", type, mount, time, balance + mount);
}
break;
case 3: {
Date data = new Date();
SimpleDateFormat now = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String time = now.format(data);
List<money> select = jdbcTool.select("select balance from money where id=(select MAX(id) from money)", money.class);
Double balance = select.get(0).getBalance();
System.out.println("余额:" + balance);
System.out.print("请输入消费项目:");
String type = scanner.next();
System.out.print("请输入消费金额:");
Double mount = scanner.nextDouble();
if (balance - mount >= 0) {
jdbcTool.cru("insert into money values(null,?,?,?,?)", type, -mount, time, balance - mount);
} else System.out.println("余额不足");
}
break;
case 4:
flag = false;
break;
default:
System.out.println("请正确选择业务!");
break;
}
}
}catch (InputMismatchException e){
System.out.println("类型输入错误");
}
}
}