zoukankan      html  css  js  c++  java
  • 开发进度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;
            }
    }
    迷失在灿烂之中 消失在万里晴空
  • 相关阅读:
    Makefile 文件格式
    带你深入理解传递參数
    LeetCode OJ Basic Calculator II
    emacs 为什么找不到运行程序?
    iOS Dev (51)加急审核
    POJ 1159 Palindrome
    9.9递归和动态规划(十二)——小鸡吃米
    c++操作当前窗体句柄
    [Python]计算闰年时候出现的and和or优先级的问题以及短路逻辑
    静态代理模式
  • 原文地址:https://www.cnblogs.com/wxy2000/p/10421169.html
Copyright © 2011-2022 走看看