一.功能需求
需求分析是发现需求,分析求精,逻辑建模,需求规约的过程,其的目的是为了全面获取软件需求,准确理解业务逻辑。车辆租赁系统具有以下基本功能。
- 用户管理:
包括用户的注册,登陆等,没有账户的用户可以注册会员,登录,通过分类查询车辆,以及查看其详细信息。
- 车源管理:
包括车辆信息的删除,添加,修改等,管理员能够向数据库中发布车辆信息,包括车辆的车型,价格,车主等信息。
- 车源信息查找
用户可以在窗口上直接浏览车辆基本信息,也可以按照不同的要求方式对车辆信息进行查询,这样用户可以方便的找到自己想要的车源,人性化的查找方式为用户带来了极大的便利。
二.系统解决的问题
本系统主要完成前台浏览(用户注册,信息修改,车辆浏览),后台管理(车辆信息的录入,管理员登录)等功能。通过以上功能实现简单,便捷的租车系统。
车辆浏览:所有人都可以操作,顾客可以随意浏览车辆信息,按照车辆的序号排序,在点击按钮后,可以在表格中显示出可以租用车辆的信息,可以让用户选择。
车辆租用:顾客在浏览车辆信息后,可以根据自身需求选择所需租用的车辆,输入车辆的序号后,点击确定按钮,可以成功租用车辆,并且该车辆是否被租用的信息会自动更改为已被租用,如果用户租用已被租用的车辆则租用失败,无法租用成功。
车辆管理:该功能只能由管理员完成,由管理员完成对车辆信息的录入包括录入车辆的车主,价格,是否被租用等信息,并可以删除车辆信息。
会员管理:该功能由管理员完成,管理员可以注册其他的用户帐号,并将帐号密码录入数据库中。
各个模块的实现方法描述
运行结果截图
package Guanliyuan;
import java.awt.BorderLayout;import Util.DbUtil;
import Yonghu.*;import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.FieldPosition;import javax.naming.InitialContext;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableColumn;import Index.*;
public class Guanliyuan extends JFrame implements ActionListener{/** * 管理员端的界面*/JTable table;JLabel label1,label2,label3,label4;Object a[][];Object name[] = {"编号","车型","车主","价格(元/天)","颜色","是否被租用","租用的用户"};JButton buttonOfXinxiluru,buttonOfXinxiliulan,buttonOfDelete,buttonOfLogout,buttonOfXiangXi,buttonOfXiugai;Box box1,box2;JTextField field,field2,field3;JPanel jPanel4,jPanel5;Connection con = null;Statement stmt = null;ResultSet rs = null;public Guanliyuan(Boolean success){init();setVisible(true);
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(500, 200, 625, 490);setTitle("管理员界面");if(success)//successs是一个boolean类型,如果为true,打开此窗口直接信息浏览,false表里面没有信息,需要点击信息浏览!{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);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放到窗口里面}public void connDB() { // 连接数据库try {Class.forName("com.mysql.jdbc.Driver");//注册驱动} catch (ClassNotFoundException e) {e.printStackTrace();}try {//创建连接con = DriverManager.getConnection(DbUtil.dbUrlString, DbUtil.dbUser, DbUtil.dbpassword);} catch (SQLException e) {e.printStackTrace();}}public void closeDB() // 关闭连接{try {stmt.close();con.close();} catch (SQLException e) {e.printStackTrace();}}public void xinXiLiuLan()//信息浏览的方法,因为删除数据后会刷新一下,自动调用此函数。{int i=0;while(i<50){a[i][0]=" ";a[i][1]=" ";a[i][2]=" ";a[i][3]=" ";a[i][4]=" ";a[i][5]=" ";a[i][6]=" "; i++;}i=0;this.connDB();try {stmt = con.createStatement();String sql= "select * from car_information";rs = stmt.executeQuery(sql);while(rs.next()){String number = rs.getString("number");String cartype = rs.getString("cartype");String carower = rs.getString("carower");String price = rs.getString("price");String color = rs.getString("color");String hire= rs.getString("hire");String username= rs.getString("username");a[i][0]=number;a[i][1]=cartype;a[i][2]=carower;a[i][3]=price;a[i][4]=color;a[i][5]=hire;a[i][6]=username;i++;}this.closeDB();repaint();} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}this.closeDB();}@Overridepublic void actionPerformed(ActionEvent e) {Object source = e.getSource();if(source == buttonOfXinxiluru)//点击信息修改按钮{this.dispose();new Luru();}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{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();return;}else {return;
// 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();}}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();}}}
package Guanliyuan;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
/** 信息录入界面*/import Util.DbUtil;public class Luru 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;public Luru(){init();setVisible(true);
// setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(550, 200, 550, 280);setTitle("车辆信息录入界面");}void init(){JLabel label1 = new JLabel(" 序 号 : ");JLabel label2 = new JLabel(" 车 型 : ");JLabel label3 = new JLabel(" 车 主 : ");JLabel label4 = new JLabel("价格(元/天):");JLabel label5 = new JLabel(" 颜 色 : ");JLabel label6 = new JLabel("已租用(是/否):");field1 = new JTextField();field2 = new JTextField();field3 = new JTextField();field4 = new JTextField();field5 = new JTextField();field6 = new JTextField();buttonOfQueDing = new JButton("提交");buttonOfReset = new JButton("重置");buttonOfQuXIAO = new JButton("取消");buttonOfQueDing.addActionListener(this);buttonOfQuXIAO.addActionListener(this);buttonOfReset.addActionListener(this);box1 = Box.createHorizontalBox();box1.add(box1.createHorizontalStrut(8));box1.add(label1);box1.add(box1.createHorizontalStrut(8));box1.add(field1);box1.add(box1.createHorizontalStrut(8));box2 = Box.createHorizontalBox();box2.add(box2.createHorizontalStrut(8));box2.add(label2);box2.add(box2.createHorizontalStrut(8));box2.add(field2);box2.add(box2.createHorizontalStrut(8));box3 = Box.createHorizontalBox();box3.add(box3.createHorizontalStrut(8));box3.add(label3);box3.add(box3.createHorizontalStrut(8));box3.add(field3);box3.add(box3.createHorizontalStrut(8));box4 = Box.createHorizontalBox();box4.add(box4.createHorizontalStrut(8));box4.add(label4);box4.add(box4.createHorizontalStrut(8));box4.add(field4);box4.add(box4.createHorizontalStrut(8));box5 = Box.createHorizontalBox();box5.add(box5.createHorizontalStrut(8));box5.add(label5);box5.add(box5.createHorizontalStrut(8));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) {e.printStackTrace();}try {//创建连接con = DriverManager.getConnection(DbUtil.dbUrlString, DbUtil.dbUser, DbUtil.dbpassword);} catch (SQLException e) {e.printStackTrace();}}public void closeDB() // 关闭连接{try {stmt.close();con.close();} catch (SQLException e) {e.printStackTrace();}}public static boolean isNumeric(String str){for (int i = str.length();--i>=0;){ if (!Character.isDigit(str.charAt(i))){return false;}}return true;}//判断 编号输入的是不是整数!@Overridepublic void actionPerformed(ActionEvent e) {Object source = e.getSource();String number = field1.getText();String cartype = field2.getText() ;String carower = field3.getText() ;String price = field4.getText();String color = field5.getText();String hire = field6.getText();
// if(field6.getText().equals("是")&&field6.getText().equals("已经")&&field6.getText().equals("已租用")&&field6.getText().equals("已"))
// {
// hire = "1";
// }
// else
// {
// hire = "0";
// }if(source == buttonOfQueDing){if(number.equals("")||cartype.equals("")||carower.equals("")||price.equals("")||color.equals("")||hire.equals("")){JOptionPane.showMessageDialog(null, "请填写完整!");}else if(!isNumeric(number)){JOptionPane.showMessageDialog(null, "序号 请输入整数!");}else{this.connDB();try {int numberint = Integer.parseInt(field1.getText());stmt = con.createStatement();String str = "insert into car_information (number,cartype,carower,price,color,hire)values('"+numberint+"','"+cartype+"','"+carower+"','"+price+"','"+color+"','"+hire+"');";stmt.executeUpdate(str);JOptionPane.showMessageDialog(null, "录入成功!");this.closeDB();this.dispose();new Guanliyuan(true);} catch (SQLException e1) {
// e1.printStackTrace();JOptionPane.showMessageDialog(null, "此编号已经被使用,请换一个编号!");}}}else if(source == buttonOfQuXIAO){this.dispose();new Guanliyuan(false);}else if(source == buttonOfReset){//field1.setText("");field2.setText("");field3.setText("");field4.setText("");field5.setText("");field6.setText("");}}}
package Guanliyuan;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;import Util.DbUtil;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);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,"没有此编号的车辆的详细信息!");new Guanliyuan(true);}} catch (HeadlessException e2) {e2.printStackTrace();} catch (SQLException e2) {e2.printStackTrace();}}void init(){JLabel label = new JLabel("车辆的详细信息:");area = new JTextArea(10, 10);buttonOfBianJi = new JButton("编辑");buttonOfBianJi.addActionListener(this);buttonOfFanHui = new JButton("返回");buttonOfFanHui.addActionListener(this);buttonOfTi = new JButton("提交");buttonOfTi.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(buttonOfBianJi);box2.add(box2.createHorizontalStrut(8));box2.add(buttonOfTi);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(DbUtil.dbUrlString, DbUtil.dbUser, DbUtil.dbpassword);} catch (SQLException e) {e.printStackTrace();}}public void closeDB() // 关闭连接{try {stmt.close();con.close();} catch (SQLException e) {e.printStackTrace();}}public void actionPerformed(ActionEvent e) {Object source = e.getSource();if(source == buttonOfBianJi){area.setEnabled(true);setEnable = 1;}else if (source == buttonOfFanHui){this.dispose();new Guanliyuan(false);}else if(source == buttonOfTi){if(setEnable == 1){String areaString = area.getText();this.connDB();try {stmt = con.createStatement(); String sqlString ="update car_information set information='"+areaString+"'where number = '"+number+"';";stmt.executeUpdate(sqlString);} catch (SQLException e1) {e1.printStackTrace();}JOptionPane.showMessageDialog(null, "提交成功!");this.closeDB();this.dispose();new Guanliyuan(true);}else{JOptionPane.showMessageDialog(null, "请点击编辑变换成编辑状态!");}}}}
package Guanliyuan;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;/** 详细详细的管理员编辑页面*/
public class Xinxitijiao extends JFrame implements ActionListener{JTextArea area;Box box1,baseBox,box2,baseBox2;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);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub}}
package Guanliyuan;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;import Util.DbUtil;
/** 信息录入界面*/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);setTitle("车辆信息修改界面");this.number = number;setText();}void init(){JLabel label1 = new JLabel(" 序 号 : ");JLabel label2 = new JLabel(" 车 型 : ");JLabel label3 = new JLabel(" 车 主 : ");JLabel label4 = new JLabel(" 价 格 : ");JLabel label5 = new JLabel(" 颜 色 : ");JLabel label6 = new JLabel("是否被租用:");field1 = new JTextField();field2 = new JTextField();field3 = new JTextField();field4 = new JTextField();field5 = new JTextField();field6 = new JTextField();buttonOfQueDing = new JButton("提交");buttonOfQueDing.addActionListener(this);buttonOfReset = new JButton("重置");buttonOfReset.addActionListener(this);buttonOfQuXIAO = new JButton("取消");buttonOfQuXIAO.addActionListener(this);box1 = Box.createHorizontalBox();box1.add(box1.createHorizontalStrut(8));box1.add(label1);box1.add(box1.createHorizontalStrut(8));box1.add(field1);box1.add(box1.createHorizontalStrut(8));box2 = Box.createHorizontalBox();box2.add(box2.createHorizontalStrut(8));box2.add(label2);box2.add(box2.createHorizontalStrut(8));box2.add(field2);box2.add(box2.createHorizontalStrut(8));box3 = Box.createHorizontalBox();box3.add(box3.createHorizontalStrut(8));box3.add(label3);box3.add(box3.createHorizontalStrut(8));box3.add(field3);box3.add(box3.createHorizontalStrut(8));box4 = Box.createHorizontalBox();box4.add(box4.createHorizontalStrut(8));box4.add(label4);box4.add(box4.createHorizontalStrut(8));box4.add(field4);box4.add(box4.createHorizontalStrut(8));box5 = Box.createHorizontalBox();box5.add(box5.createHorizontalStrut(8));box5.add(label5);box5.add(box5.createHorizontalStrut(8));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) {e.printStackTrace();}try {//创建连接con = DriverManager.getConnection(DbUtil.dbUrlString, DbUtil.dbUser, DbUtil.dbpassword);} catch (SQLException e) {e.printStackTrace();}}public void closeDB() // 关闭连接{try {stmt.close();con.close();} catch (SQLException e) {e.printStackTrace();}}public void setText()//此函数功能是 把数据库 需要修改的信息 都打印到界面的文本框中{String cartype =null;String carower=null;String price=null;String color=null;String hire=null;field1.setText(number);field1.setEnabled(false);this.connDB();try {stmt = con.createStatement();//String sql = "select * from car_information (cartype,carower,price,color,hire);";String sql = "select * from car_information where number = '"+number+"';";rs = stmt.executeQuery(sql);if(rs.next()){cartype = rs.getString("cartype");carower = rs.getString("carower");price = rs.getString("price");color = rs.getString("color");hire = rs.getString("hire");}else{JOptionPane.showMessageDialog(null, "不存在该编号!");this.dispose();new Guanliyuan(true);//为ture}this.closeDB();} catch (SQLException e2) {e2.printStackTrace();}field2.setText(cartype);field3.setText(carower);field4.setText(price);field5.setText(color);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} 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("");}}}