基于java+mysql的swing+mysql车租赁管理系统(java+gui+文档)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于java+mysql的Swing+MySQL车租赁管理系统(java+gui+文档)
功能介绍:
登陆界面、管理员界面、用户界面、汽车租赁文档
}
/*
* 信息录入界面
*/
public class Xiugai extends JFrame implements ActionListener {
JTextField field1,field2,field3,field4,field5,field6;
Box box1,box2,box3,box4,box5,box6,box7,baseBox;
JButton buttonOfQueDing,buttonOfReset,buttonOfQuXIAO;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String number;
public Xiugai(String number)
{
init();
setVisible(true);
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(550, 200, 550, 280);
buttonOfFanHui.addActionListener(this);
box1 = Box.createVerticalBox();
box1.add(box1.createVerticalStrut(8));
box1.add(label);
box1.add(area);
box2 = Box.createHorizontalBox();
box2.add(box2.createHorizontalStrut(8));
box2.add(buttonOfFanHui);
baseBox = Box.createHorizontalBox();
baseBox.add(baseBox.createHorizontalStrut(10));
baseBox.add(box1);
baseBox.add(baseBox.createHorizontalStrut(10));
baseBox2 = Box.createVerticalBox();
baseBox2.add(baseBox);
baseBox2.add(baseBox2.createVerticalStrut(10));
baseBox2.add(box2);
baseBox2.add(baseBox2.createVerticalStrut(10));
add(baseBox2);
}
public void connDB() { // 连接数据库
try {
Class.forName("com.mysql.jdbc.Driver");//注册驱动
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {//创建连接
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/project?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull",
"root", "123456");
} catch (SQLException e) {
e.printStackTrace();
}
}
field.setText("");
JOptionPane.showMessageDialog(null,"删除成功!");
xinXiLiuLan();
}
}
// try
// {
// stmt = con.createStatement();
// String sql2 = "delete from car_information where number='"+field.getText()+"';";
// stmt.executeUpdate(sql2);
// }
// catch (SQLException e1)
// {
// e1.printStackTrace();
// }
// this.closeDB();
// repaint();
// field.setText("");
// JOptionPane.showMessageDialog(null,"删除成功!");
// xinXiLiuLan();
}
else if(n == JOptionPane.NO_OPTION)
{
}
}
else
{
JOptionPane.showMessageDialog(null, "没有此编号的车辆信息!");
}
} catch (HeadlessException e1) {
e1.printStackTrace();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}
else if(source == buttonOfLogout)//退出
{
this.dispose();
new Login();
}
Statement stmt = null;
ResultSet rs = null;
String number=null;
int setEnable =0;
String information;
/*
* 这个详细信息 管理员的界面
*/
public Xiangxi(String number)
{
init();
setVisible(true);
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(500, 200, 620, 360);
setTitle("管理员详细信息界面");
this.number = number;
setArea();
}
public void setArea()//打开界面就把 数据库中的详细信息写入到area中
{
this.connDB();
try {
stmt = con.createStatement();
String sql = "select * from car_information where number='"+number+"'; ";
rs = stmt.executeQuery(sql);
} catch (SQLException e2) {
e2.printStackTrace();
}
try {
if(rs.next())
{
information = rs.getString("information");
area.setText(information);
area.setEnabled(false);
}
else
{
JOptionPane.showMessageDialog(null,"没有此编号的车辆的详细信息!");
}
} catch (HeadlessException e2) {
e2.printStackTrace();
} catch (SQLException e2) {
e2.printStackTrace();
}
}
box7 = Box.createHorizontalBox();
box7.add(box7.createHorizontalStrut(8));
box7.add(buttonOfQueDing);
box7.add(box7.createHorizontalStrut(8));
box7.add(buttonOfQuXIAO);
box7.add(box7.createHorizontalStrut(8));
box7.add(buttonOfReset);
box7.add(box7.createHorizontalStrut(8));
baseBox = Box.createVerticalBox();
baseBox.add(Box.createVerticalStrut(15));
baseBox.add(box1);
baseBox.add(Box.createVerticalStrut(10));
baseBox.add(box2);
baseBox.add(Box.createVerticalStrut(10));
baseBox.add(box3);
baseBox.add(Box.createVerticalStrut(10));
baseBox.add(box4);
baseBox.add(Box.createVerticalStrut(10));
baseBox.add(box5);
baseBox.add(Box.createVerticalStrut(10));
baseBox.add(box6);
baseBox.add(Box.createVerticalStrut(10));
baseBox.add(box7);
baseBox.add(Box.createVerticalStrut(15));
add(baseBox);
}
public void connDB() { // 连接数据库
try {
Class.forName("com.mysql.jdbc.Driver");//注册驱动
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {//创建连接
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/project?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull",
"root", "123456");
} catch (SQLException e) {
e.printStackTrace();
}
box1.add(field3);
box1.add(Box.createVerticalStrut(5));
box1.add(buttonOfXiangXi);
box1.add(Box.createVerticalStrut(40));
box1.add(buttonOfLogout);
box2 = Box.createHorizontalBox();
box2.add(Box.createHorizontalStrut(10));
box2.add(box1); //左边的按钮部分用 box布局
jPanel4 = new JPanel();
jPanel5 = new JPanel();
jPanel4.setLayout(new BorderLayout());
jPanel4.add(box2,BorderLayout.NORTH);//把左边的按钮部分放到jpanel4中。
// jPanel1 = new JPanel();
// jPanel2 = new JPanel();
// jPanel3 = new JPanel();
// jPanel4 = new JPanel();
// jPanel5 = new JPanel();
//
// jPanel1.setLayout(new BorderLayout());
// jPanel1.add(label2,BorderLayout.NORTH);
// jPanel1.add(field,BorderLayout.CENTER);
// jPanel1.add(buttonOfDelete,BorderLayout.SOUTH);//把删除的模块放一个jpanel1里
//
// jPanel2.setLayout(new BorderLayout());
// jPanel2.add(jPanel1,BorderLayout.NORTH);
// jPanel2.add(buttonOfLogout,BorderLayout.CENTER);//把删除模块和 退出登录模块放一个jpanel2里
//
// jPanel3.setLayout(new BorderLayout());
// jPanel3.add(buttonOfXinxiluru,BorderLayout.NORTH);
// jPanel3.add(buttonOfXinxiliulan,BorderLayout.CENTER);//信息录入浏览按钮放到jpanel3里
//
// jPanel4.setLayout(new BorderLayout());
// jPanel4.add(jPanel3,BorderLayout.NORTH);
// jPanel4.add(jPanel2,BorderLayout.CENTER);//把jpanel 2 3 放到 jpanel4里
//
jPanel5.setLayout(new BorderLayout());
jPanel5.add(label1,BorderLayout.NORTH);
jPanel5.add(scrollPane,BorderLayout.CENTER);//把表格 放jpanel5里
this.setLayout(new BorderLayout());
add(jPanel5,BorderLayout.EAST);
add(jPanel4,BorderLayout.WEST);//把两个大的panel放到窗口里面
a[i][0]=number;
a[i][1]= cartype;
a[i][2]=carower;
a[i][3]=price;
a[i][4]=color;
a[i][5]=hire;
i++;
}
this.closeDB();
repaint();
} catch (SQLException e1){
e1.printStackTrace();
}
}
else if (source == buttonOfQyueding)//点击 租用的确定键
{
if(field.getText().equals(""))//是否为空
{
JOptionPane.showMessageDialog(null, "请输入租用车辆的编号!");
}
else//不为空
{
this.connDB();
String sql;
try {
stmt = con.createStatement();
sql = "select * from car_information where number='"+field.getText()+"' and hire = '否'";//获取输入的 序号并且 没被租用的信息
rs = stmt.executeQuery(sql);
} catch (SQLException e2) {
e2.printStackTrace();
}
try {
if(rs.next())//判断是否存在 此车辆
{
int n = JOptionPane.showConfirmDialog(this, "确定租用此车辆信息?","确认对话框",JOptionPane.YES_NO_OPTION);
if(n == JOptionPane.YES_OPTION)//确认框
{
try
{
stmt = con.createStatement();
String sql2 = "update car_information set hire = '是',username = '"+username+"' where number='"+field.getText()+"';";//把租用的赋值为 是
stmt.executeUpdate(sql2);
}
field6.setText(hire);
}
public void actionPerformed(ActionEvent e) {
String cartype =null;
String carower=null;
String price=null;
String color=null;
String hire=null;
Object source = e.getSource();
this.connDB();
cartype = field2.getText() ;
carower = field3.getText() ;
price = field4.getText();
color = field5.getText();
hire = field6.getText();
if(source == buttonOfQueDing)//点击确定按钮
{
if(cartype.equals("")||carower.equals("")||price.equals("")||color.equals("")||hire.equals(""))
{
JOptionPane.showMessageDialog(null, "请填写完整!");
}
else
{
int n = JOptionPane.showConfirmDialog(this, "确定修改此车辆信息?","确认对话框",JOptionPane.YES_NO_OPTION);//确认文本框
if(n == JOptionPane.YES_OPTION)
{
this.connDB();
try {
stmt = con.createStatement();
String str = "update car_information set cartype='"+cartype+"',carower='"+carower+"',price='"+price+"',color='"+color+"',hire='"+hire+"' where number = '"+number+"';";
stmt.executeUpdate(str);
JOptionPane.showMessageDialog(null, "修改成功!");
this.closeDB();
this.dispose();
new Guanliyuan(true);//为ture
new Guanliyuan(true);//为ture
} catch (SQLException e1) {
e1.printStackTrace();
}
}
else
{
}
}
}
else if(source == buttonOfQuXIAO)
{
this.dispose();
new Guanliyuan(false);
}
else if(source == buttonOfReset)
{
field2.setText("");
field3.setText("");
field4.setText("");
field5.setText("");
field6.setText("");
}
}
}
else if(source == buttonOfReset)
{
//field1.setText("");
field2.setText("");
field3.setText("");
field4.setText("");
field5.setText("");
field6.setText("");
}
}
}
public class Login extends JFrame implements ActionListener{
JTextField zhanghao_field;
JPasswordField mima_field;
JRadioButton yonghu_radioButton,guanliyuan_radioButton;
JButton login_button,zhuce_button;
Box box1,box2,box3,box4,basebBox;//账号,密码,两个radiobutton,两个按钮都是用行式盒子布局。 basebox用列式把他们包裹起来。
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
public Login()
{
setLayout(new FlowLayout());
init();
setVisible(true);
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(500, 200, 500, 500);
setTitle("登陆界面");
}
JButton buttonOfTijiao,buttonOfFanHui;
public Xinxitijiao()
{
init();
setVisible(true);
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(500, 200, 620, 360);
setTitle("详细信息编辑界面");
}
void init()
{
JLabel label = new JLabel("车辆的详细信息:");
area = new JTextArea(10, 10);
buttonOfTijiao = new JButton("提交");
buttonOfFanHui = new JButton("返回");
box1 = Box.createVerticalBox();
box1.add(box1.createVerticalStrut(8));
box1.add(label);
box1.add(area);
box2 = Box.createHorizontalBox();
box2.add(box2.createHorizontalStrut(8));
box2.add(buttonOfTijiao);
box2.add(box2.createHorizontalStrut(8));
box2.add(buttonOfFanHui);
baseBox = Box.createHorizontalBox();
baseBox.add(baseBox.createHorizontalStrut(10));
baseBox.add(box1);
baseBox.add(baseBox.createHorizontalStrut(10));
baseBox2 = Box.createVerticalBox();
baseBox2.add(baseBox);
baseBox2.add(baseBox2.createVerticalStrut(10));
baseBox2.add(box2);
baseBox2.add(baseBox2.createVerticalStrut(10));
add(baseBox2);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
}
}
else if(source == buttonOfFanhui)
{
this.dispose();
new Login();
}
}
}
public class Xiangxi extends JFrame implements ActionListener{
JTextArea area;
Box box1,baseBox,box2,baseBox2;
JButton buttonOfBianJi,buttonOfFanHui,buttonOfTi;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String number=null;
int setEnable =0;
String information;
/*
* 这个详细信息 管理员的界面
*/
public Xiangxi(String number)
{
init();
setVisible(true);
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
{
xinXiLiuLan();
}
}
void init()
{
label1 = new JLabel("汽车租赁信息管理系统");
buttonOfXinxiluru = new JButton(" 汽车信息录入 ");
buttonOfXinxiluru.addActionListener(this);
buttonOfXinxiliulan = new JButton(" 汽车信息浏览 ");
buttonOfXinxiliulan.addActionListener(this);
buttonOfDelete = new JButton(" 删 除 ");
buttonOfDelete.addActionListener(this);
buttonOfLogout = new JButton(" 退 出 登 录 ");
buttonOfLogout.addActionListener(this);
buttonOfXiugai = new JButton(" 修 改 ");
buttonOfXiugai.addActionListener(this);
buttonOfXiangXi = new JButton(" 详 细 信 息 ");
buttonOfXiangXi.addActionListener(this);
label2 = new JLabel("待删除信息编号:");
label3 = new JLabel("待修改信息的编号:");
label4 = new JLabel("待查询详情的编号:");
field = new JTextField();
field2 = new JTextField();
field3 = new JTextField();
a = new Object[50][7];
table = new JTable(a, name);//组件的创建
table.setEnabled(false);
JScrollPane scrollPane = new JScrollPane(table);
box1 = Box.createVerticalBox();
box1.add(Box.createVerticalStrut(20));
box1.add(buttonOfXinxiluru);
box1.add(Box.createVerticalStrut(10));
box1.add(buttonOfXinxiliulan);
box1.add(Box.createVerticalStrut(15));
box1.add(label2);
box1.add(Box.createVerticalStrut(5));
box1.add(field);
box1.add(Box.createVerticalStrut(5));
box1.add(buttonOfDelete);
box1.add(Box.createVerticalStrut(25));
box1.add(label3);
box1.add(Box.createVerticalStrut(5));
box1.add(field2);
box1.add(Box.createVerticalStrut(5));
box1.add(buttonOfXiugai);
box1.add(Box.createVerticalStrut(25));
box1.add(label4);
box1.add(Box.createVerticalStrut(5));
box1.add(field3);
box5.add(field5);
box5.add(box5.createHorizontalStrut(8));
box6 = Box.createHorizontalBox();
box6.add(box6.createHorizontalStrut(8));
box6.add(label6);
box6.add(box6.createHorizontalStrut(8));
box6.add(field6);
box6.add(box6.createHorizontalStrut(8));
box7 = Box.createHorizontalBox();
box7.add(box7.createHorizontalStrut(8));
box7.add(buttonOfQueDing);
box7.add(box7.createHorizontalStrut(8));
box7.add(buttonOfQuXIAO);
box7.add(box7.createHorizontalStrut(8));
box7.add(buttonOfReset);
box7.add(box7.createHorizontalStrut(8));
baseBox = Box.createVerticalBox();
baseBox.add(Box.createVerticalStrut(15));
baseBox.add(box1);
baseBox.add(Box.createVerticalStrut(10));
baseBox.add(box2);
baseBox.add(Box.createVerticalStrut(10));
baseBox.add(box3);
baseBox.add(Box.createVerticalStrut(10));
baseBox.add(box4);
baseBox.add(Box.createVerticalStrut(10));
baseBox.add(box5);
baseBox.add(Box.createVerticalStrut(10));
baseBox.add(box6);
baseBox.add(Box.createVerticalStrut(10));
baseBox.add(box7);
baseBox.add(Box.createVerticalStrut(15));
add(baseBox);
}
public void connDB() { // 连接数据库
try {
Class.forName("com.mysql.jdbc.Driver");//注册驱动
} catch (ClassNotFoundException e) {
e1.printStackTrace();
}
}
else if (source == buttonOfQyueding)//点击 租用的确定键
{
if(field.getText().equals(""))//是否为空
{
JOptionPane.showMessageDialog(null, "请输入租用车辆的编号!");
}
else//不为空
{
this.connDB();
String sql;
try {
stmt = con.createStatement();
sql = "select * from car_information where number='"+field.getText()+"' and hire = '否'";//获取输入的 序号并且 没被租用的信息
rs = stmt.executeQuery(sql);
} catch (SQLException e2) {
e2.printStackTrace();
}
try {
if(rs.next())//判断是否存在 此车辆
{
int n = JOptionPane.showConfirmDialog(this, "确定租用此车辆信息?","确认对话框",JOptionPane.YES_NO_OPTION);
if(n == JOptionPane.YES_OPTION)//确认框
{
try
{
stmt = con.createStatement();
String sql2 = "update car_information set hire = '是',username = '"+username+"' where number='"+field.getText()+"';";//把租用的赋值为 是
stmt.executeUpdate(sql2);
}
catch (SQLException e1)
{
e1.printStackTrace();
}
this.closeDB();
repaint();
field.setText("");
JOptionPane.showMessageDialog(null,"租用成功!");
xinXiLiuLan();
}
else if(n == JOptionPane.NO_OPTION)
}
@Override
public void actionPerformed (ActionEvent e) {
Object source = e.getSource();
String username = null;
String adminname = null;
String admin_password = null;
String user_password = null;
if (source == login_button)//如果点击的是登陆按钮,就会判断radiobutton选择的是什么,做出相应的响应
{
if(!yonghu_radioButton.isSelected()&&!guanliyuan_radioButton.isSelected())//radiobutton没选择
{
JOptionPane.showMessageDialog(null, "请选择身份!");
}
else if (zhanghao_field.getText().equals("") || mima_field.getText().equals(""))
{// 判断是否输入了用户名和密码
JOptionPane.showMessageDialog(null, "登录名和密码不能为空!");
}
else
{
this.connDB();
try
{
stmt = con.createStatement();
}
catch (SQLException e2)
{
e2.printStackTrace();
}
if(guanliyuan_radioButton.isSelected())//如果选择的是管理员的按钮
{
try {
String sql ="select * from admin where adminname ='"+zhanghao_field.getText()+"'";
rs = stmt.executeQuery(sql);
if(rs.next())
{
adminname = rs.getString(1);
admin_password = rs.getString(2);
if(!mima_field.getText().equals(admin_password))
{
JOptionPane.showMessageDialog(null, "密码错误!");
mima_field.setText("");
}
else
{
this.dispose();
new Guanliyuan(false);
}
else if(source == buttonOfXinxiliulan)//点击信息浏览按钮
{
xinXiLiuLan();
}
else if(source == buttonOfXiugai)//点击修改按钮
{
if(field2.getText().equals(""))
{
JOptionPane.showMessageDialog(null, "输入修改车型的编号!");
}
else
{
this.dispose();
new Xiugai(field2.getText());
}
}
else if(source == buttonOfXiangXi)//点击详细信息按钮
{
this.dispose();
new Xiangxi(field3.getText());
}
else if(source == buttonOfDelete)//点击删除按钮
{
if(field.getText().equals(""))
{
JOptionPane.showMessageDialog(null, "请输入删除车辆的编号!");
}
else
{
this.connDB();
String sql;
try {
stmt = con.createStatement();
sql = "select * from car_information where number='"+field.getText()+"'";//表里找到需要删除的车信息
rs = stmt.executeQuery(sql);
} catch (SQLException e2) {
e2.printStackTrace();
}
try {
if(rs.next())//判断是否有 输入编号的 车辆
{
int n = JOptionPane.showConfirmDialog(this, "确定删除此车辆信息?","确认对话框",JOptionPane.YES_NO_OPTION);//确认文本框
if(n == JOptionPane.YES_OPTION)
{
String hire2 = rs.getString("hire");
if(hire2.equals("是"))
{
int m = JOptionPane.showConfirmDialog(this, "此车辆正在被租用,是否删除?","确认对话框",JOptionPane.YES_NO_OPTION);//确认文本框
if(m == JOptionPane.YES_OPTION)
{
try