基于Java+SQL的汽车销售管理系统

article/2025/6/23 6:19:51

文章目录

    • 1.前言
      • 系统概要
      • 附1: 建表语句
      • 附2: 项目整体结构
      • 附3: view包结构
      • 附4: utils包结构
    • 2.基本功能介绍:
      • 2.1 登陆与注册
      • 2.2 主界面
      • 2.3 修改密码
      • 2.4 相应的操作数据界面
      • 2.5 增、删、查、改示例
        • 2.5.1 添加数据
        • 2.5.2 删除数据
        • 2.5.3 修改数据
        • 2.5.4 查询数据
    • 3.食用该系统

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


http://chatgpt.dhexx.cn/article/0HuJSs56.shtml

相关文章

python判断闰年(leap year)

python判断闰年(leap year) 闰年的计算方法是“四年一闰,百年不闰,四百年再闰”,这就造成了在一些特殊年份,会出现八年一闰的现象。例如1896年为闰年,四年之后的1900年并不是闰年,直到再过四年之后的1904年才是闰年。也就是一般情况下年份能被4整除即为闰年,而整百年的…

python判断闰年程序_python实现闰年

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 30个常用python实现:1、冒泡排序 ? 2、计算x的n次方的方法? 3、计算a*a + b*b + c*c + ...? 4、计算阶乘 n! ?5、列出当前目录下的所有文件和目录名? 6、…

python实现判断闰年

先来看条件: 如果我们要判断的年份是整百年,我们不能去除以4,而应该除以400。如1900年,因为这个年份是整百年,所以要除以400,1900/4004……300,不是400的倍数,所以1900年不是闰年&a…

python判断闰年

4.1 python 判断闰年 代码 yearint(input("请输入年份:")) if(year%40 and year%100 !0):print("是闰年!") elif(year%4000):print("是闰年!") else:print("不是闰年!")运行结果截图&…

chatgpt赋能python:Python闰年的判断方法

Python闰年的判断方法 在Python编程中,经常需要判断某个年份是否是闰年。闰年是指能被4整除但不能被100整除的年份,或者能被400整除的年份。 闰年的判断方法在编程中非常常见,也非常简单。下面将介绍Python中三种实现闰年判断的方法。 方法…

Lingo 11安装教程

Lingo 11(32/64)位下载地址: 链接:http://pan.baidu.com/s/1pLFk5xL 密码:bt95 软件介绍: LINGO是Linear Interactive and General Optimizer的缩写,即“交互式的线性和通用优化求解器”&…

LINGO 11.0安装教程

文章目录 1. 安装步骤2. 下载地址 1. 安装步骤 解压压缩包,然后双击Lingo11.exe以运行它 单击No以禁用自动更新 开始使用 2. 下载地址 参考:Lingo多版本下载地址和安装教程

最优化问题求解及Lingo教程

介绍 Lingo是一款求解最优化问题的软件,可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。 最优化问题 首先介绍一下什么是最优化问题。 最优化问题,即在…

lingo入门教程之三 --- 文件数据处理

有时候我们想输入的数据是在一个Excel表格或者其他什么形式中,或者说这里数据是实时变化的并不利于直接在程序中输入,耳而应该在程序之外将数据存储,实现数据与程序的分离存储,这个时候就涉及到程序与数据之间的传递 下面简要介绍…

lingo入门教程之一 初识lingo

lingo对于一些线性或者非线性的规划,优化问题非常有效 首先介绍一下,在lingo中运行程序时出现的页面(在工具栏点击类似靶子一样的图标便可运行) Solver status:求解器(求解程序)状态框 Model Class:当前模型的类型:LP,…

lingo3d_基于官方教程的分析

lingo3d可以允许web内使用3d元素,其定位是web端游戏引擎。跟随官方教程我完成了一个简单的demo,即控制小人在三维空间穿行,并且可以显示相应物品信息 官方使用vitereact,故我们跟随其搭建 1.搭建主场景 这里与一般react项目出入不…

Lingo软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Lingo是一款专门为解决线性和非线性优化问题而设计的专业软件,广泛应用于运筹学、工程管理、交通管理、生产调度、物流管理等领域。它提供了一个易于使用的界面和灵活的求解器,能够高效地求解大规模的线性…

数学建模学习(25):一夜整理的Lingo入门教程,助力建模国赛!

文章目录 前言使用教程基本语法影子价格敏感性分析以上总结变量约束与函数全局最优解(最值)局部最优解(极值)总结前言 在上一篇文章我用到了lingo,但我盲猜一下大家可能不会用lingo做数学计算,因此我在这里做一个教程。 使用教程 下载地址:微信软件管家。 假设已经写…

java调用lingo实例_LINGO使用教程(一)

LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。 1.LINGO快速入门 当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了…

c语言程序框图示范,C语言程序框图courseware.ppt

第3章控制结构;目录; ●基本要求: 1)熟悉C语言程序结构框图; 2)熟悉C语言的两分支结构,多分支结构和循环结构; 3)熟悉结构化程序设计方法. ●学习要点: 1)流程图,NS图,循环结构; 2)结构化程序设…

C语言经典100例-9

c语言经典100例 题目:要求输出国际象棋棋盘。 程序分析:国际象棋棋盘由64个黑白相间的格子组成,分为8行*8列。用i控制行,j来控制列,根据ij的和的变化来控制输出黑方格,还是白方格。 如果出现乱码情况请参…

C语言程序设计100个经典例子

<1>数字排列。 #include <stdio.h> int main() {int sum 0;for(int i 1; i< 5; i){for(int a 1; a< 5; a){for(int b 1; b< 5; b){if(i!a && i!b && a!b){printf("%d%d%d", i, a, b);putchar(\n);sum sum 1;}}}}printf("%…

eclipse的简介

1.打开eclipse软件 2.新建工程 file -> new ->java Project

Eclipse开发工具--简介

简介 Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言&#xff0c;它只是提供了一个基础的底层支持&#xff0c;而后针对于不同的编程语言都会提供有相应的插件支持。 Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境&am…

Java-2学习之Eclipse简介

源码编写的时候需要用编辑器&#xff0c;这里介绍下Eclipse。 1. 手动编译执行 在介绍之前&#xff0c;我们先手动执行一个java文件&#xff0c;了解下java编译执行的过程。 首先用笔记本工具编辑一个HelloJava.java文件&#xff0c;内容如下&#xff1a; public class Hel…