开发进度7

  记账本这个程序,如过想要做出来其实用不了七天,主要是自己做完后要学会发现程序的不足,并进行修改,去解决一些自己不熟悉的问题,而且学会一些新的东西不断对程序进行优化,这几天开发的记账本就修改到这,以下是源码。

mainapp

package cn.cyxd.gjp.dao;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import cn.cyxd.gjp.domain.Users;
import cn.cyxd.gjp.tools.JDBCUtils;



/*
 * 实现对数据表gjp_users数据增、删、改、查操作。
 * dbutils工具类完成,类成员创建QueryRunner对象,指定数据源
 */
public class UsersDao {
        private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
        
        /*
         * 定义方法:实现删除用户
         * 业务层调用,传递主键id值
         */
        public void deleteUsers(int uid) {
            try {
                    //拼写删除数据SQl语句
                    String sql = "DELETE FROM gjp_users WHERE uid=?";
                    qr.update(sql, uid);
            } catch (SQLException ex) {
                    System.out.println(ex);
                    throw new RuntimeException("删除用户失败");
            }
        }
        
        /*
         * 定义方法:实现编辑用户功能
         * 由业务层调用,传递Users对象
         * 将对象中的数据,更新到数据表中
         */
        public void editUsers(Users user) {
            try{
                //拼写编辑账务的SQL语句
                String sql = "UPDATE gjp_users SET uname=?,upassword=? WHERE uid=?";
                //定义对象数组,将所有的参数传递给对象数组
                Object[] params = {user.getUname(),user.getUpassword(),user.getUid()};
                qr.update(sql, params);
            }catch (SQLException ex) {
                System.out.println(ex);
                throw new RuntimeException("很遗憾!用户编辑失败");
            }
        }
        /*
         * 定义方法:实现添加用户
         * 由业务层调用,传递Users对象
         * 将Users对象中的数据,添加到数据表
         */
        public void addUsers(Users user){
            try{
                    //拼写添加数据的SQL语句
                    String sql = "INSERT  INTO gjp_users(uname,upassword) VALUES (?,?)";
                    //创建对象数据,存储2个占位符的实际参数
                    //实际参数来源是:传递过来的对象Users
                    Object[] params = {user.getUname(),user.getUpassword()};
                    //调用qr对象中的方法updata执行添加
                    qr.update(sql,params);
            }catch(SQLException ex){
                    System.out.println(ex);
                    throw new RuntimeException("用户添加失败");
            }
        }
        
        
        /*
         * 定义方法:查询数据库,带有条件去查询账务表
         * 由业务层调用,查询结果集存储到Bean对象,存储到List集合
         * 调用者传递2个日期字符串
         */
        public List<Users> select(String uname,String upassword){
            try{
                    //拼写条件查询的SQL语句
                    String sql = "SELECT *FROM gjp_users WHERE uname = ? AND upassword = ?";
                    //定义对象数组,存储?占位符
                    Object[] params = {uname,upassword};
                    //调用qr对象的方法query查询数据表,获取结果集
                    return qr.query(sql, new BeanListHandler<>(Users.class),params);
            }catch(SQLException ex){
                    System.out.println(ex);
                    throw new RuntimeException("无法识别用户");
            }
        }
        
        /*
         * 定义方法:查询用户信息
         * 由业务层调用
         * 结果集,将所有的账务数据,存储到Bean对象,存储到集合中
         */
        public List<Users> selectAll(){
                try{
                        //查询用户数据的SQL语句
                        String sql = "SELECT * FROM gjp_users";
                        //调用qr对象的方法,query方法,结果集BeanListHandler
                        return qr.query(sql,new BeanListHandler<>(Users.class) );
                }catch(SQLException e){
                        System.out.println(e);
                        throw new RuntimeException("查询所有用户失败");
                }
            }

}

usersController

package cn.cyxd.gjp.controller;

import java.util.List;

import cn.cyxd.gjp.domain.Users;
import cn.cyxd.gjp.service.UsersService;

/*
 * 控制器层
 * 接收视图层的数据,数据传递给service层
 * 成员位置,创建service对象
 */
public class UsersController {
        private UsersService uservice = new UsersService();
        /*
         * 定义方法:删除管理员的功能
         * 视图层调用,传递int类型的主键
         * 调用serivtce层方法,传递int主键
         */
        public void deleteUsers(int uid){
            uservice.deleteUsers(uid);
        }
        
        
        /*
         * 定义方法:实现编辑管理员的功能
         * 由视图层调用,传递Users对象参数
         * 调用service层的方法,传递Users对象
         */
        public void editUsers(Users user){
            uservice.editUsers(user);
        }
        
        /*
         * 定义方法,实现管理员添加功能
         * 由视图层调用,传递参数(传递的是1个Users类型的对象)
         * 方法调用service层的方法,传递Users对象,获取到添加后的结果集(添加成功的行数,int)
         */
        public void addUsers(Users user){
            uservice.addUsers(user);
        }
        /*
         * 定义方法,实现判断用户是否存在
         * 方法由视图层调用,传递两个日期的字符串
         * 调用service层,
         */
        public List<Users> select(String uname,String upassword){
            return uservice.select(uname, upassword);
        }
        
        /*
         * 控制层类定义方法,查询所有的管理员数据
         * 方法由视图层调用,方法调用service层
         */
        public List<Users> selectAll(){
            return uservice.selectAll();
        }
}

ZhangWuController

package cn.cyxd.gjp.controller;

import java.util.List;

import cn.cyxd.gjp.domain.ZhangWu;
import cn.cyxd.gjp.service.ZhangWuService;

/*
 * 控制器层
 * 接收视图层的数据,数据传递给service层
 * 成员位置,创建service对象
 */
public class ZhangWuController {
        private ZhangWuService service = new ZhangWuService();
        /*
         * 定义方法:删除账务功能
         * 视图层调用,传递int类型的主键
         * 调用serivtce层方法,传递int主键
         */
        public void deleteZhangWu(int zwid){
            service.deleteZhangWu(zwid);
        }
        
        
        /*
         * 定义方法:实现编辑账务功能
         * 由视图层调用,传递ZhangWu对象参数
         * 调用service层的方法,传递ZhangWu对象
         */
        public void editZhangWu(ZhangWu zw){
            service.editZhangWu(zw);
        }
        
        /*
         * 定义方法,实现账务添加功能
         * 由视图层调用,传递参数(传递的是1个ZhangWu类型的对象)
         * 方法调用service层的方法,传递ZhangWu对象,获取到添加后的结果集(添加成功的行数,int)
         */
        public void addZhangWu(ZhangWu zw){
            service.addZhangWu(zw);
        }
    
        /*
         * 定义方法,实现条件查询账务
         * 方法由视图层调用,传递两个日期的字符串
         * 调用service层,
         */
        public List<ZhangWu> select(String startDate,String endDate){
            return service.select(startDate, endDate);
        }
        
        /*
         * 控制层类定义方法,查询所有的账务数据
         * 方法由视图层调用,方法调用service层
         */
        public List<ZhangWu> selectAll(){
            return service.selectAll();
        }
}

UserDao

package cn.cyxd.gjp.dao;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import cn.cyxd.gjp.domain.Users;
import cn.cyxd.gjp.tools.JDBCUtils;



/*
 * 实现对数据表gjp_users数据增、删、改、查操作。
 * dbutils工具类完成,类成员创建QueryRunner对象,指定数据源
 */
public class UsersDao {
        private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
        
        /*
         * 定义方法:实现删除用户
         * 业务层调用,传递主键id值
         */
        public void deleteUsers(int uid) {
            try {
                    //拼写删除数据SQl语句
                    String sql = "DELETE FROM gjp_users WHERE uid=?";
                    qr.update(sql, uid);
            } catch (SQLException ex) {
                    System.out.println(ex);
                    throw new RuntimeException("删除用户失败");
            }
        }
        
        /*
         * 定义方法:实现编辑用户功能
         * 由业务层调用,传递Users对象
         * 将对象中的数据,更新到数据表中
         */
        public void editUsers(Users user) {
            try{
                //拼写编辑账务的SQL语句
                String sql = "UPDATE gjp_users SET uname=?,upassword=? WHERE uid=?";
                //定义对象数组,将所有的参数传递给对象数组
                Object[] params = {user.getUname(),user.getUpassword(),user.getUid()};
                qr.update(sql, params);
            }catch (SQLException ex) {
                System.out.println(ex);
                throw new RuntimeException("很遗憾!用户编辑失败");
            }
        }
        /*
         * 定义方法:实现添加用户
         * 由业务层调用,传递Users对象
         * 将Users对象中的数据,添加到数据表
         */
        public void addUsers(Users user){
            try{
                    //拼写添加数据的SQL语句
                    String sql = "INSERT  INTO gjp_users(uname,upassword) VALUES (?,?)";
                    //创建对象数据,存储2个占位符的实际参数
                    //实际参数来源是:传递过来的对象Users
                    Object[] params = {user.getUname(),user.getUpassword()};
                    //调用qr对象中的方法updata执行添加
                    qr.update(sql,params);
            }catch(SQLException ex){
                    System.out.println(ex);
                    throw new RuntimeException("用户添加失败");
            }
        }
        
        
        /*
         * 定义方法:查询数据库,带有条件去查询账务表
         * 由业务层调用,查询结果集存储到Bean对象,存储到List集合
         * 调用者传递2个日期字符串
         */
        public List<Users> select(String uname,String upassword){
            try{
                    //拼写条件查询的SQL语句
                    String sql = "SELECT *FROM gjp_users WHERE uname = ? AND upassword = ?";
                    //定义对象数组,存储?占位符
                    Object[] params = {uname,upassword};
                    //调用qr对象的方法query查询数据表,获取结果集
                    return qr.query(sql, new BeanListHandler<>(Users.class),params);
            }catch(SQLException ex){
                    System.out.println(ex);
                    throw new RuntimeException("无法识别用户");
            }
        }
        
        /*
         * 定义方法:查询用户信息
         * 由业务层调用
         * 结果集,将所有的账务数据,存储到Bean对象,存储到集合中
         */
        public List<Users> selectAll(){
                try{
                        //查询用户数据的SQL语句
                        String sql = "SELECT * FROM gjp_users";
                        //调用qr对象的方法,query方法,结果集BeanListHandler
                        return qr.query(sql,new BeanListHandler<>(Users.class) );
                }catch(SQLException e){
                        System.out.println(e);
                        throw new RuntimeException("查询所有用户失败");
                }
            }

}

ZhangwuDao

package cn.cyxd.gjp.dao;

import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import cn.cyxd.gjp.domain.ZhangWu;
import cn.cyxd.gjp.tools.JDBCUtils;



/*
 * 实现对数据表gjp_zhangwu数据增、删、改、查操作。
 * dbutils工具类完成,类成员创建QueryRunner对象,指定数据源
 */
public class ZhangWuDao {
        private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
        
        /*
         * 定义方法:实现删除账务
         * 业务层调用,传递主键id值
         */
        public void deleteZhangWu(int zwid) {
                    try{
                        //拼写删除数据SQl语句
                        String sql = "DELETE FROM gjp_zhangwu WHERE zwid=?";
                        qr.update(sql, zwid);
                } catch (SQLException ex) {
                        System.out.println(ex);
                        throw new RuntimeException("删除账务失败");
                }

        }
        
        /*
         * 定义方法:实现编辑账务功能
         * 由业务层调用,传递ZhangWu对象
         * 将对象中的数据,更新到数据表中
         */
        public void editZhangWu(ZhangWu zw) {
            try{
                //拼写编辑账务的SQL语句
                String sql = "UPDATE gjp_zhangwu SET flname=?,money=?,zhanghu=?,createtime=?,description=? WHERE zwid=?";
                //定义对象数组,将所有的参数传递给对象数组
                Object[] params = {zw.getFlname(),zw.getMoney(),zw.getZhanghu(),zw.getCreatetime(),zw.getDescription(),zw.getZwid()};
                qr.update(sql, params);
            }catch (SQLException ex) {
                System.out.println(ex);
                throw new RuntimeException("很遗憾!账务编辑失败");
            }
        }
        /*
         * 定义方法:实现添加账务功能
         * 由业务层调用,传递ZhangWu对象
         * 将ZhangWu对象中的数据,添加到数据表
         */
        public void addZhangWu(ZhangWu zw){
            try{
                    //拼写添加数据的SQL语句
                    String sql = "INSERT  INTO gjp_zhangwu(flname,money,zhangHu,createtime,description) VALUES (?,?,?,?,?)";
                    //创建对象数据,存储5个占位符的实际参数
                    //实际参数来源是:传递过来的对象ZhangWu
                    Object[] params = {zw.getFlname(),zw.getMoney(),zw.getZhanghu(),zw.getCreatetime(),zw.getDescription()};
                    //调用qr对象中的方法updata执行添加
                    qr.update(sql,params);
            }catch(SQLException ex){
                    System.out.println(ex);
                    throw new RuntimeException("账务添加失败");
            }
        }
        
        /*
         * 定义方法:查询数据库,带有条件去查询账务表
         * 由业务层调用,查询结果集存储到Bean对象,存储到List集合
         * 调用者传递2个日期字符串
         */
        public List<ZhangWu> select(String startDate,String endDate){
            try{
                    //拼写条件查询的SQL语句
                    String sql = "SELECT * FROM gjp_zhangwu WHERE createtime BETWEEN ? AND ?";
                    //定义对象数组,存储?占位符
                    Object[] params = {startDate,endDate};
                    //调用qr对象的方法query查询数据表,获取结果集
                    return qr.query(sql, new BeanListHandler<>(ZhangWu.class),params);
            }catch(SQLException ex){
                    System.out.println(ex);
                    throw new RuntimeException("条件查询失败");
            }
        }
        
        
        /*
         * 定义方法:查询数据库,获取所有的账务数据
         * 由业务层调用
         * 结果集,将所有的账务数据,存储到Bean对象,存储到集合中
         */
        public List<ZhangWu> selectAll(){
                try{
                        //查询账务数据的SQL语句
                        String sql = "SELECT * FROM gjp_zhangwu";
                        //调用qr对象的方法,query方法,结果集BeanListHandler
                        return qr.query(sql,new BeanListHandler<>(ZhangWu.class) );
                }catch(SQLException e){
                        System.out.println(e);
                        throw new RuntimeException("查询所有账务失败");
                }
            }


}

Users

package cn.cyxd.gjp.domain;

public class Users {
        private int uid;
        private String uname;
        private String upassword;
        
        public Users(int uid, String uname, String upassword) {
            super();
            this.uid = uid;
            this.uname = uname;
            this.upassword = upassword;
        }
        public Users(){
            
        }
        public int getUid() {
            return uid;
        }
        public void setUid(int uid) {
            this.uid = uid;
        }
        public String getUname() {
            return uname;
        }
        public void setUname(String uname) {
            this.uname = uname;
        }
        public String getUpassword() {
            return upassword;
        }
        public void setUpassword(String upassword) {
            this.upassword = upassword;
        }
        @Override
        public String toString() {
            return "Users [uid=" + uid + ", uname=" + uname + ", upassword="
                    + upassword + "]";
        }
        
}

ZhangWu

package cn.cyxd.gjp.domain;

public class ZhangWu {
        private int zwid;
        private String flname;
        private double money;
        private String zhanghu;
        private String createtime;
        private String description;
        
        public ZhangWu(int zwid, String flname, double money, String zhanghu,
                String createtime, String description) {
            super();
            this.zwid = zwid;
            this.flname = flname;
            this.money = money;
            this.zhanghu = zhanghu;
            this.createtime = createtime;
            this.description = description;
        }
        public ZhangWu(){
            
        }
        public int getZwid() {
            return zwid;
        }

        public void setZwid(int zwid) {
            this.zwid = zwid;
        }

        public String getFlname() {
            return flname;
        }

        public void setFlname(String flname) {
            this.flname = flname;
        }

        public double getMoney() {
            return money;
        }

        public void setMoney(double money) {
            this.money = money;
        }

        public String getZhanghu() {
            return zhanghu;
        }

        public void setZhanghu(String zhanghu) {
            this.zhanghu = zhanghu;
        }

        public String getCreatetime() {
            return createtime;
        }

        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }

        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        }
        
        @Override
        public String toString() {
            return "Zhangwu [zwid=" + zwid + ", flname=" + flname + ", money="
                    + money + ", zhanghu=" + zhanghu + ", createtime="
                    + createtime + ", description=" + description + "]";
        }
}

UsersService

package cn.cyxd.gjp.service;


import java.util.List;

import cn.cyxd.gjp.dao.UsersDao;
import cn.cyxd.gjp.domain.Users;

/*
 * 业务层类:
 * 接收上一层,控制层controller的数据
 * 经过计算,传递给dao层,操作数据库
 * 调用dao层中的类,类成员位置,创建Dao类的对象
 */
public class UsersService {
        private UsersDao udao = new UsersDao();
        
        /*
         * 定义方法:删除管理员功能
         * 由控制层调用,传递主键int
         * 调用dao层方法,传递主键int
         */
        public void deleteUsers(int uid) {
            udao.deleteUsers(uid);
        }
        
        /*
         * 定义方法:实现编辑管理员信息
         * 由控制层调用,传递Users对象
         * 调用dao层的方法,传递Users对象
         */
        public void editUsers(Users user) {
            udao.editUsers(user);
        }
        
        /*
         * 定义方法,实现添加管理员
         * 是由控制层调用,传递Users类型对象
         * 调用dao层方法,传递Users对象
         */
        public void addUsers(Users user){
            udao.addUsers(user);
        }
        
        /*
         * 定义方法:实现判断管理员是否存在
         * 方法由控制层调用,传递用户名和密码字符串
         * 调用dao层的方法,传递用户名和密码字符串
         * 获取到查询结果集
         */
        public List<Users> select(String startDate,String endDate){
            return udao.select(startDate, endDate);
        }
        
        /*
         * 定义方法:查询所有的管理员数据
         * 此方法由控制层调用,去调用dao层的方法
         */
        public List<Users> selectAll(){
            return udao.selectAll();
        }

}

ZhangWuService

package cn.cyxd.gjp.service;


import java.util.List;

import cn.cyxd.gjp.dao.ZhangWuDao;
import cn.cyxd.gjp.domain.ZhangWu;

/*
 * 业务层类:
 * 接收上一层,控制层controller的数据
 * 经过计算,传递给dao层,操作数据库
 * 调用dao层中的类,类成员位置,创建Dao类的对象
 */
public class ZhangWuService {
        private ZhangWuDao dao = new ZhangWuDao();
        
        /*
         * 定义方法:删除账务功能
         * 由控制层调用,传递主键int
         * 调用dao层方法,传递主键int
         */
        public void deleteZhangWu(int zwid) {
            dao.deleteZhangWu(zwid);
        }
        
        /*
         * 定义方法:实现编辑账务
         * 由控制层调用,传递ZhangWu对象
         * 调用dao层的方法,传递ZhangWu对象
         */
        public void editZhangWu(ZhangWu zw) {
            dao.editZhangWu(zw);
        }
        
        /*
         * 定义方法,实现添加账务
         * 是由控制层调用,传递ZhangWu类型对象
         * 调用dao层方法,传递ZhangWu对象
         */
        public void addZhangWu(ZhangWu zw){
            dao.addZhangWu(zw);
        }
        
        /*
         * 定义方法:实现条件查询账务
         * 方法由控制层调用,传递2个日期字符串
         * 调用dao层的方法,传递2个日期字符串
         * 获取到查询结果集
         */
        public List<ZhangWu> select(String startDate,String endDate){
            return dao.select(startDate, endDate);
        }
        /*
         * 定义方法:查询所有的账务数据
         * 此方法由控制层调用,去调用dao层的方法
         */
        public List<ZhangWu> selectAll(){
            return dao.selectAll();
        }

}

JDBCUtils

package cn.cyxd.gjp.tools;
/*
 * 获取数据库连接的工具类
 * 实现连接池,dbcp连接池
 */
import java.io.InputStream;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;

public class JDBCUtils {
        //设置四个最基本的连接信息
        private static String driverClass;
        private static String url;
        private static String username;
        private static String password;
    
        //    创建出BasicDataSource类对象
        private static BasicDataSource dataSource = new BasicDataSource();
        
        //静态代码块,对象BasicDataSource对象中的配置,自定义
        static{
            try {
                readConfig();
                //数据库连接信息,必须的
                dataSource.setDriverClassName(driverClass);
                dataSource.setUrl(url);
                dataSource.setUsername(username);
                dataSource.setPassword(password);
                //对象链接池中的连接数量配置
                dataSource.setInitialSize(10);//初始化的链接数
                dataSource.setMaxActive(8);//最大链接数
                dataSource.setMaxIdle(5);//最大空闲数
                dataSource.setMinIdle(1);//最小空闲数
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println("数据链接失败");
            }
        }
        
        //读取配置文件
        private static void readConfig()  throws Exception{
            InputStream in = JDBCUtils.class.getClassLoader().getResourceAsStream("database.properties");
            Properties pro = new Properties();
            pro.load(in);
            driverClass = pro.getProperty("driverClass");
            url = pro.getProperty("url");
            username = pro.getProperty("username");
            password = pro.getProperty("password");
        }
        
        public static DataSource getDataSource(){
            return dataSource;
        }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值