实现以下的效果(该项目需要的资料放在下面的链接里)
使用DBUtils操作数据库完成增删改查 分层来解决
完成步骤:
1.添加
2.编辑
3.删除
4.查询(查询所有,按照日期条件查询)
5.退出系统
db.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/gjp
user=root
password=root
public class JDBCUtils {
public static String driverClassName;
public static String url;
public static String user;
public static String password ;
private static BasicDataSource dataSource=new BasicDataSource();
static{
load();
try {
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(user);
dataSource.setPassword(password);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void load(){
InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("db.properties");
Properties pro=new Properties();
try {
pro.load(in);
} catch (IOException e) {
e.printStackTrace();
}
driverClassName=pro.getProperty("driverClassName");
url=pro.getProperty("url");
user=pro.getProperty("user");
password=pro.getProperty("password");
}
public static DataSource getDataSource(){
return dataSource;
}
}
public class ZhangWu {
private int zwid;
private String flname;
private double money;
private String zhanghu;
private String createtime;
private String description;
}
public class MainApp {
public static void main(String[] args) {
new MainView().run();
}
}
public class MainView {
private ZhangWuController controller=new ZhangWuController();
private Scanner sc=new Scanner(System.in);
public void run() {
while(true){
System.out.println("----------管家婆家庭记账软件----------");
System.out.println("1.添加账务\t\t2.编辑账务\t\t3.删除账务\t\t4.查询账务\t\t5.退出系统");
System.out.println("请输入要操作的功能序号[1-5]");
int chooseNum=sc.nextInt();
switch(chooseNum){
case 1:
addZhangWu();
break;
case 2:
updateZhangWu();
break;
case 3:
deleteZhangWu();
break;
case 4:
selectZhangWu();
break;
case 5:
System.out.println("您已退出本系统");
return;
default:
System.out.println("请输入正确的序号");
break;
}
}
}
private void deleteZhangWu() {
System.out.println("选择的删除账务功能");
Scanner sc=new Scanner(System.in);
System.out.println("请输入编号");
int zwid=sc.nextInt();
if(getAllId().contains(zwid)){
controller.deleteZhangWu(zwid);
System.out.println("恭喜你,删除账务成功");
}else{
System.out.println("不好意思,您输入的编号不存在");
}
}
private void updateZhangWu() {
System.out.println("选择的添加账务功能,请输入以下内容");
selectAll();
Scanner sc=new Scanner(System.in);
System.out.println("请输入编号");
int zwid=sc.nextInt();
if(getAllId().contains(zwid)){
System.out.println("请输入新的类别");
String flname=sc.next();
System.out.println("请输入新的账户");
String zhanghu=sc.next();
System.out.println("请输入新的金额");
double money=sc.nextDouble();
System.out.println("输入新的日期:格式XXXX-XX-xx");
String createtime=sc.next();
System.out.println("请输入新的说明");
String description=sc.next();
controller.updateZhangWu(zwid, flname, money, zhanghu, createtime, description);
System.out.println("恭喜你,修改账务成功");
}else{
System.out.println("不好意思,您输入的编号不存在");
}
}
public List<Integer> getAllId(){
return controller.getAllId();
}
private void addZhangWu() {
System.out.println("选择的添加账务功能,请输入以下内容");
Scanner sc=new Scanner(System.in);
System.out.println("请输入类别");
String flname=sc.nextLine();
System.out.println("请输入账户");
String zhanghu=sc.nextLine();
System.out.println("请输入金额");
double money=sc.nextDouble();
System.out.println("输入日期:格式XXXX-XX-xx");
String createtime=sc.next();
System.out.println("请输入说明");
String description=sc.next();
controller.addZhangWu(flname, money, zhanghu, createtime, description);
System.out.println("恭喜你,添加账务成功");
}
private void selectZhangWu() {
Scanner sc=new Scanner(System.in);
System.out.println("1.查询所有,2.按照日期条件查询");
int chooseNum=sc.nextInt();
switch(chooseNum){
case 1:
selectAll();
break;
case 2:
selectByCondition();
break;
default:
System.out.println("请输入正确的序号");
break;
}
}
private void selectByCondition() {
System.out.println("选择条件查询,输入日期格式XXXX-XX-XX");
Scanner sc=new Scanner(System.in);
System.out.print("请输入开始时间:");
String begin=sc.nextLine();
System.out.print("请输入结束时间:");
String end=sc.nextLine();
List<ZhangWu> list = controller.selectByCondition(begin, end);
print(list);
}
private void selectAll() {
List<ZhangWu> list=controller.selectAll();
if(list.size()!=0)
print(list);
else
System.out.println("没有查询到数据");
}
private void print(List<ZhangWu> list) {
System.out.println("ID\t\t类别\t\t账户\t\t金额\t\t时间\t\t说明");
for(ZhangWu zw:list){
System.out.println(zw.getZwid()+"\t\t"+zw.getFlname()+"\t\t"+zw.getZhanghu()+"\t\t"+
zw.getMoney()+"\t\t"+zw.getCreatetime()+"\t"+zw.getDescription());
}
}
}
public class ZhangWuController {
private ZhangWuService service=new ZhangWuService();
public List<ZhangWu> selectAll(){
return service.selectAll();
}
public List<ZhangWu> selectByCondition(String begin,String end){
return service.selectByCondition(begin, end);
}
public void addZhangWu(String flname, double money, String zhanghu,String createtime,String description){
service.addZhangWu(flname, money, zhanghu, createtime, description);
}
public void updateZhangWu(int zwid,String flname, double money, String zhanghu,String createtime,String description) {
service.updateZhangWu(zwid, flname, money, zhanghu, createtime, description);
}
public List<Integer> getAllId() {
return service.getAllId();
}
public void deleteZhangWu(int zwid){
service.deleteZhangWu(zwid);
}
}
public class ZhangWuService {
private ZhangWuDao dao=new ZhangWuDao();
public List<ZhangWu> selectAll(){
return dao.selectAll();
}
public List<ZhangWu> selectByCondition(String begin,String end){
return dao.selectByCondition(begin, end);
}
public void addZhangWu(String flname, double money, String zhanghu,String createtime,String description){
dao.addZhangWu(flname, money, zhanghu, createtime, description);
}
public void updateZhangWu(int zwid,String flname, double money, String zhanghu,String createtime,String description) {
dao.updateZhangWu(zwid, flname, money, zhanghu, createtime, description);
}
public List<Integer> getAllId() {
return dao.getAllId();
}
public void deleteZhangWu(int zwid){
dao.deleteZhangWu(zwid);
}
}
public class ZhangWuDao {
private QueryRunner qr=new QueryRunner(JDBCUtils.getDataSource());
public List<ZhangWu> selectAll(){
String sql="select * from gjp_zhangwu";
List<ZhangWu> list=null;
try {
list=qr.query(sql, new BeanListHandler<ZhangWu>(ZhangWu.class));
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("查询所有商品失败");
}
return list;
}
public List<ZhangWu> selectByCondition(String begin,String end){
String sql="select * from gjp_zhangwu where createtime between ? and ? ";
Object[] params={begin,end};
List<ZhangWu> list=null;
try {
list=qr.query(sql, new BeanListHandler<ZhangWu>(ZhangWu.class), params);
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("按照条件查询商品失败");
}
return list;
}
public void addZhangWu(String flname, double money, String zhanghu,String createtime,String description){
String sql="INSERT into gjp_zhangwu(flname,money,zhanghu,createtime,description) values(?,?,?,?,?)";
Object [] params={flname,money,zhanghu,createtime,description};
try {
qr.update(sql, params);
} catch (SQLException e) {
e.printStackTrace();
}
}
public void updateZhangWu(int zwid,String flname, double money, String zhanghu,String createtime,String description) {
String sql="update gjp_zhangwu set flname=?,money=?,zhanghu=?,createtime=?,description=? where zwid=?";
Object[] params={flname,money,zhanghu,createtime,description,zwid};
try {
qr.update(sql, params);
} catch (SQLException e) {
e.printStackTrace();
}
}
public List<Integer> getAllId() {
String sql="SELECT zwid from gjp_zhangwu";
try {
return qr.query(sql, new ColumnListHandler<>());
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("查询编号失败");
}
}
public void deleteZhangWu(int zwid){
String sql="DELETE from gjp_zhangwu where zwid=?";
try {
qr.update(sql,zwid);
} catch (SQLException e) {
e.printStackTrace();
}
}
}