管家婆家庭记账软件
1. 项目介绍
1.1. 项目安排
1.1.1. 项目目标
本项目为 JAVAEE 基础班综合项目,包含了若干个知识点,达到将基础班所学知识综合
使用,提高了我们对项目的理解与知识点的运用。
熟练 View 层、Service 层、Dao 层之间的方法相互调用操作、
熟练 dbuls 操作数据库表完成增删改查
通过本项目,让我们了解公司项目开发的流程,充分的掌握项目需求分析、设计与功
能的代码实现。提高同学们独立分析需求与功能实现的能力。
1.1.2. 项目时间
本项目通过 1 天课程时间完成。
1.2. 项目功能分析
1.2.1. 项目演示
1.2.2. 项目功能介绍
查询账务
多条件组合查
询账务
添加账务
编辑账务
删除账务
2. 项目环境搭建
2.1. 技术选型和 jar 包介绍
每个项目都要使用一些已经成熟的技术,它们通常是由一些专业组织或团队所提供的
开源免费技术。在今后的学习过程中,我们会逐渐对这些专业组织有所了解。本项目中使
用的技术如下:
apache 的 commons 组件:
commons-dbuls-1.4.jar:封装并简化了 JDBC;
commons-dbcp-1.4.jar:apache commons 提供的数据库连接池组件,命名为
DBCP;
commons.pool-1.3.jar:DBCP 连接池依赖该 jar 包;
mysql-connector-java-5.1.28-bin.jar:MySQL 的 JDBC 驱动包,用 JDBC 连接 MySQL
数据库必须使用该 JAR 包。
2.2. 工具类介绍
每个项目都会用到一些工具类,本项目也不例外。我们不会教大家如何实现这些类,
而是让大家知道在项目我们如何使用这些工具类,下面是本项目中所使用的工具类以及介
绍:
JDBCUls:用来创建数据库连接池对象;
在项目的实现过程中,我们会说明工具类的使用,这里就不再过多介绍。
JDBCUls.java
public class JDBCUtils {
public static final String DRIVER_CLASS_NAME =
"com.mysql.jdbc.Driver";
public static final String URL = "jdbc:mysql://localhost:3306/gjp";
public static final String USERNAME = "root";
public static final String PASSWORD = "root";
private static BasicDataSource dataSource = new BasicDataSource();
static {
dataSource.setDriverClassName(DRIVER_CLASS_NAME);
dataSource.setUrl(URL);
dataSource.setUsername(USERNAME);
dataSource.setPassword(PASSWORD);
}
public static DataSource getDataSource() {
return dataSource;
}
}
2.3. 数据表创建
对一个项目而言,表设计是非常重要的,因为应用程序中所有的操作都是基于数据库
表而进行的,所以我们第一步就是创建数据库表。
管家婆项目的数据库设计很简单,我们只需找到 gjp.sql 文件,然后执行之即可。下面
是创建库及表的 SQL 语句:
2.3.1. 创建数据库
创建管家婆数据库 gjp
CREATE DATABASE gjp;
2.3.2. 创建数据库表
创建账务表 gjp_zhangwu
CREATE TABLE gjp_zhangwu (
zwid INT PRIMARY KEY AUTO_INCREMENT,
flname VARCHAR(200),
money DOUBLE,
zhangHu VARCHAR(100),
createtime DATE,
description VARCHAR(1000)
);
2.3.3. 添加表数据
添加账务表数据
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','又开资');
2.4. 项目分层(分包)的作用
程序为什么要分包分层?
以顾客去饭店吃饭案例分析一下:
小饭店: 一个服务员搞定(接待顾客\点菜\炒菜)
大饭店:
迎宾员(是否有预定\ 询问吃中餐还是西餐或者烧烤等\ 几位用餐 \ 领路到指定的包
间\ 找点菜员为顾客点菜 )
点菜员(记录顾客点餐内容\ 记录是否有忌口等问题\ 找厨师为顾客炒菜)
厨师(按照顾客菜肴清单,进行炒菜)
通过案例发现,当程序规模小的时候,可以一个人全部完成;但程序规模大的时候,
一个人难以完成,这时,要采用多人合作的方式来完成程序开发。
多人合作方式将会碰到工作任务分配问题,这时我们会想,每个人负责完成项目的一
块内容就可以了。那么,这一块块内容的划分,就需要我们采用分层(分包)的方式完成
了。
通过下图(用户注册功能)来讲解下,项目中常见的分层(分包)。
view 层作用: 视图层,即项目中的界面
controller 层作用: 控制层, 获取界面上的数据,为界面设置数据; 将要实现的功能交
给业务层处理
service 层作用: 业务层, 功能的实现, 与 controller 控制层和数据访问层 DAO 交互,
将对数据库的操作交给 DAO 数据访问层来处理
dao 层作用: 数据访问层, 用来操作数据库表的数据
db 数据库: 这里指 MySQL
domain 实体包: 存放 JavaBean
tools 工具包:存放项目中使用到的工具类
test 测试包: 存放项目功能测试的代码
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 包