其他分享
首页 > 其他分享> > 15管家婆小项目

15管家婆小项目

作者:互联网

1项目介绍

1.1项目目标

本项目为JAVAEE基础班综合项目,包含了若干个知识点,达到将基础班所学知识综合使用,提高了我们对项目的理解与知识点的运用。

熟练View层、Service层、Dao层之间的方法相互调用操作、

熟练dbutils操作数据库表完成增删改查

通过本项目,让我们了解公司项目开发的流程,充分的掌握项目需求分析、设计与功能的代码实现。提高同学们独立分析需求与功能实现的能力。

1.2项目功能介绍

2.项目环境搭建

2.1技术选型和jar包介绍

每个项目都要使用一些已经成熟的技术,它们通常是由一些专业组织或团队所提供的开源免费技术。在今后的学习过程中,我们会逐渐对这些专业组织有所了解。本项目中使用的技术如下:

2.2工具类介绍

JDBCUtils:用来创建数据库连接池对象;

package cn.jxufe.java.chapter12.demo02;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;

/*
 *  使用DBCP实现数据库的连接池
 *  连接池配置,自定义类,
 *  最基本四项完整
 *  对于数据库连接池其他配置,自定义
 */

public class JDBCUtils {

    // 创建出BasicDataSource类对象
    private static BasicDataSource datasource = new BasicDataSource();

    // 静态代码块,对象BasicDataSource对象中的配置,自定义
    static {
        // 数据库连接信息,必须的
        datasource.setDriverClassName("com.mysql.jdbc.Driver");
        datasource.setUrl("jdbc:mysql://localhost:3306/mydatabase");
        datasource.setUsername("root");
        datasource.setPassword("123456");
        // 对象连接池中的连接数量配置,可选的
        datasource.setInitialSize(10);// 初始化的连接数
        datasource.setMaxActive(8);// 最大连接数量
        datasource.setMaxIdle(5);// 最大空闲数
        datasource.setMinIdle(1);// 最小空闲
    }

    // 定义静态方法,返回BasicDataSource类的对象
    public static DataSource getDataSource() {
        return datasource;
    }

}

2.3数据表创建

对一个项目而言,表设计是非常重要的,因为应用程序中所有的操作都是基于数据库表而进行的,所以我们第一步就是创建数据库表。

CREATE DATABASE gjp;
/*
  创建管家婆的数据库
  名字 gjp
*/
CREATE DATABASE gjp;

USE gjp;

/*
  创建数据表,表名账务
  字段,列
  主键
  分类名称  可变字符
  金额  double
  账户  可变字符 (支付,收入方法)
  创建日期 date
  账务描述 可变字符
*/
CREATE TABLE gjp_zhangwu(
 zwid INT PRIMARY KEY AUTO_INCREMENT,
 flname VARCHAR(200),
 money DOUBLE,
 zhanghu VARCHAR(100),
 createtime DATE,
 description VARCHAR(1000)
);

-- 写入测试的数据
INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (1,'吃饭支出',247,'交通银行','2016-03-02','家庭聚餐');
INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (2,'工资收入',12345,'现金','2016-03-15','开工资了');
INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (3,'服装支出',1998,'现金','2016-04-02','买衣服');
INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (4,'吃饭支出',325,'现金','2016-06-18','朋友聚餐');
INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (5,'股票收入',8000,'工商银行','2016-10-28','股票大涨');
INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (6,'股票收入',5000,'工商银行','2016-10-28','股票又大涨');
INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (7,'工资收入',5000,'交通银行','2016-10-28','又开工资了');
INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (8,'礼金支出',5000,'现金','2016-10-28','朋友结婚');
INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (9,'其他支出',1560,'现金','2016-10-29','丢钱了');
INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (10,'交通支出',2300,'交通银行','2016-10-29','油价还在涨啊');
INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (11,'吃饭支出',1000,'工商银行','2016-10-29','又吃饭');
INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (12,'工资收入',1000,'现金','2016-10-30','开资');
INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (13,'交通支出',2000,'现金','2016-10-30','机票好贵');
INSERT  INTO gjp_zhangwu(zwid,flname,money,zhangHu,createtime,description) VALUES (14,'工资收入',5000,'现金','2016-10-30','又开资');

SELECT * FROM gjp_zhangwu

2.4项目分层(分包)的作用

程序为什么要分包分层?

以顾客去饭店吃饭案例分析一下:

小饭店: 一个服务员搞定(接待顾客\点菜\炒菜)

大饭店:

通过案例发现,当程序规模小的时候,可以一个人全部完成;但程序规模大的时候,一个人难以完成,这时,要采用多人合作的方式来完成程序开发。

         多人合作方式将会碰到工作任务分配问题,这时我们会想,每个人负责完成项目的一块内容就可以了。那么,这一块块内容的划分,就需要我们采用分层(分包)的方式完成了。

 

2.5 工程创建及包管理

  1. 使用Eclipse创建Java工程,命名为gjp
  2. 创建工程包
    • cn.itcast.gjp.app: 存放main方法类;
    • cn.itcast.gjp.domain: 存放JavaBean;
    • cn.itcast.gjp.view: 存放界面,及表现层类;
    • cn.itcast.gjp.service: 存放业务层类;
    • cn.itcast.gjp.dao: 存放数据访问层类;
    • cn.itcast.gjp.tools:存放工具类
  3. 创建lib文件夹,用来存储使用的jar包

3.功能模块

3.1相关类创建

完成本项目中类的创建,无需在类中添加代码。

  1. 复制已编写好的工具类JDBCUtils.java 到 tools包中;
  2. 复制jar包mysql-connector-java-5.1.28-bin.jar 、commons-dbutils-1.4.jar 、commons-dbcp-1.4.jar 、commons-pool-1.3.jar,到lib文件夹中,通过Build Path操作,添加到classPath路径中,提供给JDBCUtils使用;
  3. 在app包中,创建类MainApp.java,编写main主方法,用来完成本项目的启动
  4. 在domain包中,创建类ZhangWu.java,它是用来封装账务信息的JavaBean。
  5. 在dao包中,创建类ZhangWuDao.java,给ZhangWuDao类添加一个成员变量QueryRunner对象,因为我们使用dbutils来操作数据库。
  6. 在service包中,创建类ZhangWuService.java,给ZhangWuService类添加一个类型为ZhangWuDao的成员变量,因为service依赖dao。
  7. 在view包中,创建类MainView.java,给MainView类添加一个类型为ZhangWuService的成员变量,因为本项目中view依赖service。

编写app包中MainApp.java

package cn.jxufe.gjp.app;
/*
 * 主程序类,作用,开启软件程序
 */
public class MainApp {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

    }

}

 

编写domain包中ZhangWu.java

package cn.jxufe.gjp.domain;

public class ZhangWu {

}

 

编写Dao包中ZhangWuDao.java

package cn.jxufe.gjp.dao;

import org.apache.commons.dbutils.QueryRunner;

import cn.jxufe.gjp.tools.JDBCUtils;

/*
 * 账务数据层类
 *  实现对数据表gjp_zhangwu 数据增删改查操作  
 * 使用dbutils工具类完成,类成员创建QueryRunner对象,指定数据源
 */
public class ZhangWuDao {
    private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
}

 

编写Service包,ZhangWuService.java

package cn.jxufe.gjp.service;
/*
 *  业务层类
 *  接收上一层,控制层controller的数据
 *  经过计算,传递给dao层,操作数据库
 *  调用dao层中的类,类成员位置,创建Dao类的对象
 */

import cn.jxufe.gjp.dao.ZhangWuDao;

public class ZhangWuService {
    private ZhangWuDao dao = new ZhangWuDao();
}

 

编写controller包,ZhangWuController.java

package cn.jxufe.gjp.controller;
/*
 * 控制器层
 * 接收视图层的数据,将数据传递给service层
 * 成员位置创建service对象
 */

import cn.jxufe.gjp.service.ZhangWuService;

public class ZhangWuController {
    private ZhangWuService service = new ZhangWuService();
}

 

编写view包,MainView.java

package cn.jxufe.gjp.view;
/*
 * 视图层,用户控制和操作的界面
 * 数据传递给controller层实现
 * 成员位置,创建一个controller对象
 */

import cn.jxufe.gjp.controller.ZhangWuController;

public class MainView {
    private ZhangWuController controller = new ZhangWuController();
}

3.2账务JavaBean

JavaBean是指的是Java中的类,该类中的成员变量与数据库表中的字段相对应(变量名对应数据库表字段名、变量数据类型对应数据库表字段类型),并提供空参数构造方法、set、get方法。

package cn.jxufe.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() {
        // TODO Auto-generated constructor stub
    }

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

    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 + "]";
    }

}

3.3功能界面菜单

 

界面菜单的完成,是项目编写的第一步。

我们通过输出语句,完成界面菜单的输出,之后再根据输入的功能序号,进行对应功能的调用执行。

  1. 功能实现步骤

  2.功能实现代码

package cn.jxufe.gjp.view;
/*
 * 视图层,用户控制和操作的界面
 * 数据传递给controller层实现
 * 成员位置,创建一个controller对象
 */

import java.util.Scanner;

import cn.jxufe.gjp.controller.ZhangWuController;

public class MainView {
    private ZhangWuController controller = new ZhangWuController();

    /*
     * 实现界面效果
     * 接收用户的输入
     * 根据输入调用不同的功能方法
     */
    public void run() {
        // 创建Scanner对象,可以反复的键盘输入
        Scanner scanner = new Scanner(System.in);
        while (true) {
            System.out.println("---------------管家婆家庭记账软件---------------");
            System.out.println("1.添加账务 2.编辑账务 3.删除账务 4.查询账务 5.退出系统");
            System.out.println("请输入要操作的功能序号[1-5]:");
            // 接收用户的菜单选择
            int choose = scanner.nextInt();
            // 对选择的菜单判断,调用不同的功能
            switch (choose) {
            // 选择添加账务,调用添加账务的方法
            case 1:

                break;
            // 选择的编辑账务,调用编辑账务方法
            case 2:

                break;
            // 选择的删除账务,调用删除账务方法
            case 3:

                break;
            // 选择的是查询账务,调用查询方法
            case 4:

                break;
            //退出系统
            case 5:
                System.out.println("再见");
                System.exit(0);

            default:
                System.out.println("输入错误,请重新输入");
                ;
            }
        }
    }
}

3.4查询所有账务

  1. 功能实现步骤

 

标签:15,description,zwid,项目,money,flname,gjp,管家婆,public
来源: https://www.cnblogs.com/xinmomoyan/p/11061272.html