Accounting Software
1. Project Introduction
1.1. Project Arrangements
1.1.1. Project Objectives
This project is the Java EE Foundation Class Comprehensive project, contains several knowledge points, achieves the basic class to learn the knowledge synthesis use, enhances our to the project understanding and the knowledge point application.
The methods that are familiar with the view layer, service layer, and DAO layer invoke each other operations,
Skilled dbutils Operation database table complete the increase and deletion check
Through this project, let us understand the company project development process, fully grasp the project requirements analysis, design and functional code implementation. Improve students ' ability to analyze requirements and function independently. 1.1.2. Project Time
This project is completed through a 1-day course. 1.2. Project Functional Analysis 1.2.1. Project Demo 1.2.2. Project Function Introduction
L Check the accounts
L Multi-Conditional combination inquiry Account
L Add Accounting
L Editorial Accounts
• Delete accounts
2. Project Environment Build 2.1. technology Selection and Jar package Introduction
Each project uses a number of technologies that are already mature, often provided by a professional organization or team for free open source technology. In the course of future learning, we will gradually understand these professional organizations. The techniques used in this project are as follows:
• Apache Commons components:
Øcommons-dbutils-1.4.jar: encapsulates and simplifies JDBC;
Øcommons-dbcp-1.4.jar:apache Commons provides the database connection pool component, named DBCP;
The ØCOMMONS.POOL-1.3.JAR:DBCP connection pool relies on the jar package;
L mysql-connector-java-5.1.28-bin.jar:mysql JDBC Driver package, the MySQL database connection with JDBC must use this jar package. 2.2. Introduction to Tools Class
Each project will use a number of tool classes, this project is no exception. We are not going to teach you how to implement these classes, but rather to let you know how we use these tools in our project, and the following are the tools and descriptions used in this project:
L Jdbcutils: Used to create database connection pool objects;
In the implementation of the project, we will explain the use of the tool class, here is not too much introduction.
Jdbcutils.java
Public class jdbcutils { Public static Final Stringdriver_class_name = "Com.mysql.jdbc.Driver"; Public static Final StringURL = "JDBC:MYSQL://LOCALHOST:3306/GJP"; Public static Final StringUSERNAME = "root"; Public static Final StringPASSWORD = "root"; private static Basicdatasourcedatasource = 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. data table creation
Table design is important for a project because all operations in the application are based on database tables, so the first step is to create a database table.
The Housekeeper Project database design is very simple, we only need to find the Gjp.sql file, and then execute it. The following is an SQL statement that creates a library and a table: 2.3.1. Creating a database
Create housekeeper Database Gjp
2.3.2. Create a database table
Create Account Table 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. Adding table Data
Add Account table Data
INSERT into Gjp_zhangwu (zwid,flname,money,zhanghu,createtime,description)VALUES (1, ' eating expenses ', 247, ' Bank of Communications ', ' 2016-03-02 ', ' family dinner '; INSERT into Gjp_zhangwu (zwid,flname,money,zhanghu,createtime,description)VALUES (2, ' wage income ', 12345 , ' cash ', ' 2016-03-15 ', ' open salary '); INSERT into Gjp_zhangwu (zwid,flname,money,zhanghu,createtime,description)VALUES (3, ' costume expenses ', 1998, ' Cash ', ' 2016-04-02 ', ' buy clothes '); INSERT into Gjp_zhangwu (zwid,flname,money,zhanghu,createtime,description)VALUES (4, ' eating expenses ', 325, ' Cash ', ' 2016-06-18 ', ' Friends dinner '); INSERT into Gjp_zhangwu (zwid,flname,money,zhanghu,createtime,description)VALUES (5, ' stock income ', 8000, ' ICBC ', ' 2016-10-28 ', ' stock rally '); INSERT into Gjp_zhangwu (zwid,flname,money,zhanghu,createtime,description)VALUES (6, ' stock income ', 5000, ' ICBC ', ' 2016-10-28 ', ' Stocks rose ' again; INSERT into Gjp_zhangwu (zwid,flname,money,zhanghu,createtime,description)VALUES (7, ' wage income ', 5000, ' Bank of Communications ', ' 2016-10-28 ', ' pay again '; INSERT into Gjp_zhangwu (zwid,flname,money,zhanghu,createtime,description)VALUES (8, ' gift Expense ', 5000, ' Cash ', ' 2016-10-28 ', ' friend marriage '; INSERT into Gjp_zhangwu (zwid,flname,money,zhanghu,createtime,description)VALUES (9, ' Other expenses ', 1560, ' Cash ', ' 2016-10-29 ', ' lost money '); INSERT into Gjp_zhangwu (zwid,flname,money,zhanghu,createtime,description)VALUES (10, ' traffic expenses ', 2300 , ' Bank of Communications ', ' 2016-10-29 ', ' oil is still rising '); INSERT into Gjp_zhangwu (zwid,flname,money,zhanghu,createtime,description)VALUES (11, ' meal expense ', 1000 , ' ICBC ', ' 2016-10-29 ', ' eat again '); INSERT into Gjp_zhangwu (zwid,flname,money,zhanghu,createtime,description)VALUES (12, ' wage income ', 1000 , ' cash ', ' 2016-10-30 ', ' open capital '); INSERT into Gjp_zhangwu (zwid,flname,money,zhanghu,createtime,description)VALUES (13, ' Traffic expenses ', 2000 , ' cash ', ' 2016-10-30 ', ' The ticket is very expensive '); INSERT into Gjp_zhangwu (zwid,flname,money,zhanghu,createtime,description)VALUES (14, ' wage income ', 5000 , ' cash ', ' 2016-10-30 ', ' open capital ' again; |
2.4. The role of Project layering (subcontracting)
Why should the program subcontract tiering?
Take the customer to the restaurant to eat case analysis:
Hotel: A waiter to fix (reception customers \ La carte/stir fry)
Grand Hotel:
L Welcome Guests (whether there is a reservation asked to eat Chinese food or Western food or barbecue, etc. \ Several dining lead to the designated rooms \ Find a la carte for customers to order)
L a la carte (record customer order content \ Record whether there are diet and other issues \ Find a chef to stir fry for customers)
L Cook (according to the list of customer dishes, cooking)
Through the case found that when the program is small, you can complete a person, but when the program is large, a person is difficult to complete, at this time, to use a number of people to cooperate in the way to complete the program development.
Multi-person collaboration will come across work assignment issues, when we think that everyone is responsible for completing a piece of the project. So, the division of this piece of content, we need to adopt a layered (subcontracting) way to complete.
The following figure (User registration function) to explain the common in the project hierarchy (subcontracting).
L View Layer function: Views layer, that is, the interface in the project
L Controller Layer function: Control layer, obtain data on interface, set data for interface, and deliver function to business layer processing
L Service Layer function: Business layer, function implementation, interacting with controller control layer and data Access layer DAO, handing the operation of database to DAO data access layer to handle
L DAO Layer function: Data access layer, used to manipulate data in database tables
L DB Database: This refers to MySQL
L Domain Entity package: storage JavaBean
L Tools Toolkit: Storage of tools used in projects
Test Package: Code 2.5 that stores the project's functional tests . Project creation and package management
1. Use Eclipse to create a Java project named GJP
2. Create the Project Package
Øcn.itcast.gjp.app: Store Main method class;
Øcn.itcast.gjp.domain: Storing JavaBean;
Øcn.itcast.gjp.view: Storage interface, and performance layer class;
Øcn.itcast.gjp.service: Store business layer class;
Øcn.itcast.gjp.dao: Store data access Layer class;
Øcn.itcast.gjp.tools: Storage Tool Class
3. Create Lib folder to store the jar package used
3. function Module 3.1. Related class creation
Complete the creation of classes in this project without adding code to the class.
1. Copy the prepared tool class Jdbcutils.java into the tools package;
2. Copy jar package Mysql-connector-java-5.1.28-bin.jar, Commons-dbutils-1.4.jar, Commons-dbcp-1.4.jar, Commons-pool-1.3.jar, to the Lib folder, through the build path operation, added to the Classpath path, provided to the jdbcutils use;
3. In the app package, create the class Mainapp.java, write main main method, to complete the start of this project
4. In domain package, create class Zhangwu.java, which is used to encapsulate the javabean of accounting information.
5. In the DAO package, create a class Zhangwudao.java to add a member variable Queryrunner object to the Zhangwudao class because we manipulate the database using Dbutils.
6. In the service package, create a class Zhangwuservice.java, add a member variable of type Zhangwudao to the Zhangwuservice class, because the service relies on DAO.
7. In the view package, create a class Mainview.java, add a member variable of type Zhangwuservice to the Mainview class, because view depends on the service in this project.
Write the Mainapp.java in the app package
/** * Main Method class */ Public class Mainapp { Public static void Main (String[]args) { } } |
Write Zhangwu.java in Domain package
/** * Accounting category */ Public class Zhangwu { } |
Write Zhangwudao.java in DAO package
/** * Accounting Data Layer Class */ public class zhangwudao{ Get the database connection pool, get the object Queryrunner of manipulating table data Queryrunner qr = new Queryrunner (Jdbcutils.getdatasource ()); } |
Writing service packs, Zhangwuservice.java
/** * Accounting Business Layer Class */ Public class Zhangwuservice { Service is dependent on DAO Private Zhangwudao Zhangwudao =new Zhangwudao (); } |
Write the view package, Mainview.java
public class mainview { //View dependent service In this project Private zhangwuservice |