1.前言


该系统是我肝了2个星期的 java+sql实训,项目为 C/S架构,运用的知识有:继承与多态、枚举类、集合与泛型、异常处理、javaGUI编程、JDBC: Druid(德鲁伊)数据库连接池,ApDBUtils工具类、正则表达式。


系统概要

1.本系统面只对管理员账户,能完成对下基本功能
      实现各类销售信息的增、删、改、查功能
      能够对当前登陆的管理员账户的密码进行更改
      根据字段或字段组合实现全方位的查询功能
      输入不正当信息的错误提示功能

 
2.开发环境
      数据库:MySQL8.0
      开发环境:JDK1.8
      开发工具:IDEA、SQLyog

 
3.数据库设计
数据库包含:管理员表、汽车表、员工表、客户表、销售表、采购表
 
4.项目结构设计
项目采用经典的MVC设计模式,主要包含以下包:controller、dao、domain、main、utils、view

其中,controller控制业务逻辑;dao介于业务逻辑层和数据库之间,进行>数据的访问和操作;domain为对应数据库中表的实体类;utils提供所需的工具类;view为界面与视图。main包中只有一个类:Main,为项目的程序入口。
同时,应用了Druid(德鲁伊)数据库连接池作为数据库连接技术,大大提升了连接速度,优其在登陆时的数据库连接。同时应用了ApDBUtils工具类,作为一个开源的JDBC工具类库,它对JDBC进行了封装,极大简化jdbc编码的工作量,其中的QueryRunner类,该类封装了SQL的执行,是线程安全的,可以实现增、删、改、查、批处理。

 

附1: 建表语句

-- 创建manager表
CREATE TABLE manager(
id INT PRIMARY KEY AUTO_INCREMENT,
account CHAR(5),
`password` CHAR(6),
UNIQUE (account,`password`));

-- 创建car表
CREATE TABLE car(
c_id CHAR(10) PRIMARY KEY,
model CHAR(10),
color CHAR(3),
price DOUBLE,
factoryDate DATE,
manufacturer CHAR(10),
state CHAR(8) #1.售出 2.预定 3.空闲);

-- 创建employee表
CREATE TABLE employee(
e_id INT PRIMARY KEY AUTO_INCREMENT,
e_name CHAR(5),
sex CHAR(2),
`type` CHAR(12) );  # MANAGE: 管理人员; PROCUREMENT: 采购人员; SALE: 销售人员
ALTER TABLE employee
AUTO_INCREMENT = 1001;

-- 创建customer表
CREATE TABLE customer(
cu_id INT PRIMARY KEY AUTO_INCREMENT,
cu_name CHAR(8),
cu_telephone CHAR(12),
`level` CHAR(2)  NOT NULL DEFAULT '');
 # A(消费100w以上),B(消费50w以上),C等级(消费50w以下),NO(暂无)

-- 创建procurement表
CREATE TABLE procurement(
p_id INT PRIMARY KEY AUTO_INCREMENT,
model CHAR(10),
supplier CHAR(10),
supplierTelephone CHAR(12),
p_count INT,
p_money DOUBLE,
purchaseDate DATE);
ALTER TABLE procurement
AUTO_INCREMENT = 531201;

-- 创建sale表
CREATE TABLE sale(
s_id INT PRIMARY KEY AUTO_INCREMENT,
e_id INT,
cu_id INT,
s_count INT,
s_money DOUBLE,
saleDate DATE,
FOREIGN KEY (e_id) REFERENCES employee(e_id),
FOREIGN KEY (cu_id) REFERENCES customer(cu_id));
ALTER TABLE sale
AUTO_INCREMENT = 57001;

 

附2: 项目整体结构

每一层相互独立,用户在执行相应操作后,获取信息经view层、Controller层、Dao层、再到数据库执行相应sql语句,再返回结果到view层。

在这里插入图片描述
 

附3: view包结构

继承树关系如下:
1.view包中分为Dialog和Frame两个子包,其中BasicDialog和BasicFrame作为相应包中通用的父类。具有子类中都有的相同的功能或视图。
2.Dialog包中BasicAddDialog、BasicChangeDialog、BasicSelectDialog、DeleteDialog为实现相应功能的通用Dialog类。其中,BasicAddDialog、BasicChangeDialog、BasicSelectDialog因不同的界面的字段不同,有相应的子类。
3.Frame包中IndexFrame在继承BasicFrame的基础上添加了汽车图片,作为首页。OperateDateFrame继承了BasicFrame添加了相应信息的表数据在主页的显示,和增、删、改、查四个按钮,在点击后跳转相应的Dialog对话框,是与数据相关的Frame,表对应的界面继承于OperateDateFrame。

在这里插入图片描述

 

附4: utils包结构

ustils包提供了数据库连接、数据异常处理和样式的统一设置相关的方法
1.数据库的连接为Dao层和LoginFrame中提供使用
2.异常的处理为view层中用户输入的数据进行检验,若输入的是不正确的信息,则将此异常信息抛出到view层,也即是Controller的上一层,在此view层处理,生成提示框。
3.样式的统一设置为Frame和Dialog中使用,如:多个按钮、标签使用同样的字体颜色、大小

在这里插入图片描述

 

2.基本功能介绍:

2.1 登陆与注册

1.管理员进行账户登陆,若没有账户,则登陆失败;
2.在执行相应的操作的同时,会对账号、密码进行检验,若格式不符合要求,则登陆失败或者注册失败,并给出相应的提示

在这里插入图片描述
在这里插入图片描述
 

2.2 主界面

主界面中左边能够选择一个菜单项,对其中的信息进行增删查改;
右上方能够进行修改密码和退出系统操作。
在具体的一个操作数据界面,拥有上述功能的同时,还能够退回主界面

在这里插入图片描述
 

2.3 修改密码

在输入正确的旧密码的前提下进行填写新密码

在这里插入图片描述

 

2.4 相应的操作数据界面

可点击退回主界面

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
 

2.5 增、删、查、改示例

1.增、删、查、改都会检测输入的数据是否符合要求的格式,若不符合则给出提示框相应的信息提示,如日期格式(2020-02-03)、数字类型等
2.在执行相应的操作后,会自动刷新表中的数据

在这里插入图片描述
在这里插入图片描述
 

2.5.1 添加数据

要求所有填写属性

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
 

2.5.2 删除数据

根据id删除,且id不能为空

在这里插入图片描述
在这里插入图片描述
 

2.5.3 修改数据

1.修改数据与添加数据相同,同样要求所有属性值都不能为空
2.先选中要修改的表中的一行数据(记录),再点击修改按钮(Change),此时修改框中的数据即为选中的那一个的数据。若没有选中时点击修改按钮(Change),则提示:没有选中行

在这里插入图片描述
在这里插入图片描述

 

2.5.4 查询数据

1.查询数据可根据属性组合来查询,也可通过id或id+其它
2.若没有填写,则默认为查询所有数据,即刷新数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
 

3.食用该系统

1.创建数据库:
create database car_sale;

2.运行:创建表(sql文件)、添加数据(sql文件)

3.导入项目: CarSalesManagementSystem至idea,
修改配置文件( druid.properties)中的用户和密码(username、password)为自己的mysql管理员账户的用户和密码

[百度网盘:]
https://pan.baidu.com/s/15m1agEq_3qyZ918UidP_1w?pwd=oymw

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐