汽车销售管理系统[C/S版本]-Java课程设计

汽车销售管理系-C/S版

背景

Java基础课程设计,通过CS模式实现汽车销售管理系统

介绍

利用Java和MySQL语言,通过MVC模式和GUI编程,实现基于CS架构的汽车销售信息管理,实现增删改查功能

软件架构

Java原生MVC

环境

  • 数据库:MySQL8.0
  • 开发环境:JDK1.8
  • 开发工具:MyEclipse

项目结构

在这里插入图片描述

数据库模型

在这里插入图片描述

项目详情

dao层

类名解释
CarDao.java汽车信息dao层
GuestDao.java客户信息dao层
SaleDao.java销售信息dao层
UserDao.java管理员信息dao层
WorkerDao.java员工信息dao层

controller层

类名解释
CarController.java汽车信息控制层
GuestController.java客户信息控制层
SaleController.java销售信息控制层
UserController.java管理员控制层
WorkerController.java员工信息控制层

view层(界面)

类名解释
CarView.java汽车信息视图层
GuestView.java客户信息视图层
SaleView.java销售信息视图层
WorkerView.java员工信息视图层

entity层

类名解释
Car.java汽车实体类
Guest.java客户实体类
Sale.java销售信息实体类
User.java管理员实体类
Worker.java员工实体类

其他类

类名解释
Login.java登录界面视图层
MenuBar.java菜单栏工具类
MainFrame.java项目主界面视图层
MainFrame.java

项目主界面视图层

package com.view;

public class MainFrame {

	JFrame main = new JFrame("Car Sale System");
	Container container = main.getContentPane();

	public void MainGUI() {
		new FrameOption(main);
		new BackgroundImage(main, container, "MainBackground.jpg");
		new MenuBar(main);
	}
}

utils工具类

类名解释
BackgroundImage.java背景图片工具类
DBUtil.java数据库工具类
FrameOption.java主界面相关设置工具类
SetScrollPane.java单元格设置工具类
SetTable.java表格设置工具类
BackgroundImage.java

背景图片工具类,用于设置界面的背景图片和背景样式等信息。
内有详细注释不过多的诉说。

package com.utils;

// 背景图片设置
public class BackgroundImage {
	public BackgroundImage(JFrame frame,Container container,String ImageName) {
		// 限定加载图片路径
		ImageIcon icon= new ImageIcon("res/" + ImageName);	
		
		final JLabel labelBackground = new JLabel();
		ImageIcon iconBookManageSystemBackground = icon;
		labelBackground.setIcon(iconBookManageSystemBackground);
		// 设置label的大小
		labelBackground.setBounds(0,0,iconBookManageSystemBackground.getIconWidth()
				,iconBookManageSystemBackground.getIconHeight());		
		//将背景图片标签放入桌面面板的最底层
		frame.getLayeredPane().add(labelBackground,new Integer(Integer.MIN_VALUE));
		// 将容器转换为面板设置为透明
		JPanel panel = (JPanel)container;
		panel.setOpaque(false);
		
	}
}

DBUtil.java

数据库工具类,主要用于加载配置文件连接数据库,未使用连接池,直连状态。


public class DBUtil {

	private static String driverName;
	private static String url;
	private static String name;
	private static String password;

	static {

		Properties properties = new Properties();
		// 新建properties文件数据流
		InputStream inputStream = DBUtil.class.getClassLoader().getResourceAsStream("dbconfig.properties");
		try {
			properties.load(inputStream);
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		driverName = (String) properties.get("driverName");
		url = (String) properties.get("url");
		name = (String) properties.get("name");
		password = (String) properties.get("password");
			try {
				//加载JDBC驱动
				Class.forName(driverName);
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}

	public static Connection getConnection() {
		Connection con = null;
		try {
			// 建立数据库连接
			con = DriverManager.getConnection(url, name, password);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return con;

	}

	public static void close(Connection connection, Statement statement, ResultSet resultSet) {
		if (resultSet != null) {
			try {
				resultSet.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (statement != null) {
			try {
				statement.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (connection != null) {
			try {
				connection.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

FrameOption.java

主界面相关设置工具类

package com.utils;

import javax.swing.JFrame;

public class FrameOption {
	public FrameOption(JFrame main) {
		// TODO Auto-generated constructor stub
		main.setSize(900, 600);
		main.setLocationRelativeTo(null);
		main.setResizable(false);// 禁止修改窗口大小
		main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		main.setVisible(true);

	}
}

SetScrollPane.java

单元格设置工具类

package com.utils;


public class SetScrollPane {

	public SetScrollPane(JScrollPane scrollPane,JTable table) {
		// TODO Auto-generated method stub
		// 将JScrollPane设置为透明
		scrollPane.setOpaque(false);
		//将viewport设置为透明
		scrollPane.getViewport().setOpaque(false);
		//转载table
		scrollPane.setViewportView(table);
		//设置头部透明
		scrollPane.setColumnHeaderView(table.getTableHeader());
		scrollPane.getColumnHeader().setOpaque(false);
		// 设置滚动条位置
		scrollPane.setBounds(50, 50, 800, 250);
	}
}

SetTable.java

表格设置工具类

package com.utils;


public class SetTable {

	public SetTable(JScrollPane scrollPane,JTable table,String[] columnNames,JFrame main) {
		DefaultTableCellRenderer r = new DefaultTableCellRenderer();
		r.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
		table.setDefaultRenderer(Object.class, r);
		// 自动调整列表状态
		table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
		//设置表格数据颜色
		table.setForeground(Color.green);
		table.setBackground(Color.black);

		table.setOpaque(false);//将table设置为透明
		scrollPane.setOpaque(false);//将scrollPane根面板设置为透明
		scrollPane.getViewport().setOpaque(false);//将scrollPane的viewport设置为透明
		// 设置滚动条位置
		scrollPane.setBounds(50, 50, 800, 250);
		main.add(scrollPane);
	}
}

main主启动类

Main.java

项目主启动类,程序启动运行入口

package com.main;

import com.view.Login;

public class Main {

	public static void main(String[] args) {
		Login lg =new Login();
		lg.loginGUi(null);
	}
}

配置文件dbconfig.properties

driverName=com.mysql.jdbc.Driver
url=jdbc/:mysql/://127.0.0.1/:3306/carsalesystem?useSSL=false
name=root
password=toor

运行截图

  • 登录界面

在这里插入图片描述

  • 主界面

在这里插入图片描述

  • 汽车信息
    在这里插入图片描述

  • 员工信息
    在这里插入图片描述

  • 客户信息
    在这里插入图片描述

  • 销售信息

在这里插入图片描述

项目源码地址

https://gitee.com/ghostguest/CarSaleManageSystem

  • 27
    点赞
  • 146
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值