Java Swing+mysql实现的出租车计价器系统(车辆管理、司机管理、订单管理)

本文主要是介绍Java Swing+mysql实现的出租车计价器系统(车辆管理、司机管理、订单管理),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

博客目录

  • 出租车计价器系统
    • 功能截图
    • 系统流程图
    • 关键代码
    • 写在最后

出租车计价器系统

背景:
出租车计价系统可以大大降低出租车运营的成本,为出租车运营管理公司提供灵活的销售策略和强力可靠的运营平台,给用户全新的打车体验和便捷的打车服务。

功能截图

本系统实现的功能点如下:
(1) 可以添加车辆信息;
(2) 可以删除车辆信息;
(3) 可以添加司机信息;
(4) 可以删除手机信息;
(5) 可以维护车辆信息;
(6) 可以管理车辆信息;
(7) 可以维护司机信息;
(8) 可以管理司机信息;
(9) 可以查询订单,实现出租车计价

登录界面:
在这里插入图片描述
车辆状态页面:
在这里插入图片描述
车辆管理:
在这里插入图片描述
司机信息:
在这里插入图片描述
计价信息:
在这里插入图片描述
订单信息:
在这里插入图片描述

系统流程图

1、数据流图
在这里插入图片描述
2、系统流程图
在这里插入图片描述
在这里插入图片描述

关键代码

1、dao层
车辆Dao:CarDao.java

package cn.itbaizhan.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;import cn.itbaizhan.db.DbManager;
import cn.itbaizhan.entity.CarEntity;
import cn.itbaizhan.tool.ArrayListToString;public class CarDAO {
/*	private static int id;private static String number;private static String type;private static String state;*/private Connection con;private static PreparedStatement sta;private static ResultSet rs;private static ArrayList<CarEntity> list;public CarDAO(Connection con){this.con = con;}public static ArrayList<CarEntity> findByStateAndType(String type,String state){String sql = "";if(type.endsWith("全部")&&state.endsWith("全部")){sql = "select * from car";}else if(type.endsWith("全部")){sql = "select * from car where state='"+state+"'";}else if(state.endsWith("全部")){sql = "select * from car where type='"+type+"'";}else{sql = "select * from car where state='"+state+"' and type = '"+type+"' ";}list = new ArrayList<CarEntity>();rs = DbManager.quert(sql);try {while(rs.next()){CarEntity car= new CarEntity();car.setId(rs.getInt(1));car.setNumber(rs.getString(2));car.setXinghao(rs.getString(3));car.setType(rs.getString(4));car.setF_number(rs.getString(5));car.setJ_number(rs.getString(6));car.setSelltime(new java.sql.Date(rs.getDate(7).getTime()));car.setState(rs.getString(8));car.setInf(rs.getString(9));list.add(car);}DbManager.close();return list;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}public static ArrayList<CarEntity> findByState(String state){String sql = "select * from car where state='"+state+"'";list = new ArrayList<CarEntity>();rs = DbManager.quert(sql);try {while(rs.next()){CarEntity car= new CarEntity();car.setId(rs.getInt(1));car.setNumber(rs.getString(2));car.setXinghao(rs.getString(3));car.setType(rs.getString(4));car.setF_number(rs.getString(5));car.setJ_number(rs.getString(6));car.setSelltime(new java.sql.Date(rs.getDate(7).getTime()));car.setState(rs.getString(8));car.setInf(rs.getString(9));list.add(car);}DbManager.close();return list;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}public static ArrayList<CarEntity> findAll(){String sql = "select * from car";list = new ArrayList<CarEntity>();rs = DbManager.quert(sql);try {while(rs.next()){CarEntity car= new CarEntity();car.setId(rs.getInt(1));car.setNumber(rs.getString(2));car.setXinghao(rs.getString(3));car.setType(rs.getString(4));car.setF_number(rs.getString(5));car.setJ_number(rs.getString(6));car.setSelltime(new java.sql.Date(rs.getDate(7).getTime()));car.setState(rs.getString(8));car.setInf(rs.getString(9));list.add(car);}DbManager.close();return list;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}public static CarEntity findByID(int id){CarEntity car= new CarEntity();String sql="select * from car where id_c="+id;rs = DbManager.quert(sql);try {while(rs.next()){car.setId(rs.getInt(1));car.setNumber(rs.getString(2));car.setXinghao(rs.getString(3));car.setType(rs.getString(4));car.setF_number(rs.getString(5));car.setJ_number(rs.getString(6));car.setSelltime(new java.sql.Date(rs.getDate(7).getTime()));car.setState(rs.getString(8));car.setInf(rs.getString(9));}DbManager.close();return car;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("没有找到车辆信息");}return null;}public static CarEntity findByNumber(String number){CarEntity car= new CarEntity();String sql="select * from car where number='"+number+"'";rs = DbManager.quert(sql);try {while(rs.next()){car.setId(rs.getInt(1));car.setNumber(rs.getString(2));car.setXinghao(rs.getString(3));car.setType(rs.getString(4));car.setF_number(rs.getString(5));car.setJ_number(rs.getString(6));car.setSelltime(new java.sql.Date(rs.getDate(7).getTime()));car.setState(rs.getString(8));car.setInf(rs.getString(9));}DbManager.close();return car;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}public static ArrayList<String> findAllNumber(){String sql = "select number from car";ArrayList<String> numberList = new ArrayList<String>();rs = DbManager.quert(sql);try {while(rs.next()){numberList.add(rs.getString(1));}DbManager.close();return numberList;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}public static boolean save(CarEntity car){boolean flag = false;String sql = "INSERT INTO car(number,xinghao,type,f_number,j_number,selltime,state,inf) VALUES(?,?,?,?,?,?,?,?)";// pstmt = this.con.prepareStatement(sql);try {sta = (PreparedStatement) DbManager.update(sql);//sta.setInt(1,null);//sta.setInt(1, car.getId());sta.setString(1, car.getNumber());sta.setString(2, car.getXinghao());sta.setString(3, car.getType());sta.setString(4, car.getF_number());sta.setString(5, car.getJ_number());sta.setDate(6,new java.sql.Date(car.getSelltime().getTime()));sta.setString(7, car.getState());sta.setString(8, car.getInf());sta.executeUpdate();} catch (SQLException e) {e.printStackTrace();return false;}DbManager.close();return true;}public static boolean updateRemark(int id,String remark){String sql="UPDATE car set inf='"+remark+"' where id_c='"+id+"'";try {sta = (PreparedStatement) DbManager.update(sql);sta.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();return false;}return true;}public static boolean updateState(int id,String state){String sql="UPDATE car set state='"+state+"' where id_c='"+id+"'";try {sta = (PreparedStatement) DbManager.update(sql);sta.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();return false;}return true;}public static boolean update(CarEntity car){String sql="UPDATE car set number=?,xinghao=?,type=?,f_number=?,j_number=?,selltime=?,state=?,inf=? where id_c='"+car.getId()+"'";try {sta = (PreparedStatement) DbManager.update(sql);sta.setString(1, car.getNumber());sta.setString(2, car.getXinghao());sta.setString(3, car.getType());sta.setString(4, car.getF_number());sta.setString(5, car.getJ_number());sta.setDate(6,new java.sql.Date(car.getSelltime().getTime()));sta.setString(7, car.getState());sta.setString(8, car.getInf());sta.executeUpdate();} catch (SQLException e) {e.printStackTrace();return false;}DbManager.close();return true;}public static void delete(int id){String sql="DELETE FROM car where id_c=?"; try {sta = (PreparedStatement) DbManager.update(sql);sta.setInt(1,id	);sta.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}DbManager.close();}public static ArrayList<String> showEnumContent(){ArrayList<String> carType = new ArrayList<String>();String sql = "show columns from car like 'type'";ResultSet rs = DbManager.quert(sql);try {rs.next();String enums = rs.getString("Type");//System.out.println(enums);int position = 0, count = 0;String[] availableEnums = new String[10];while ((position = enums.indexOf("'", position)) > 0) {int secondPosition = enums.indexOf("'", position + 1);availableEnums[count++] = enums.substring(position + 1,secondPosition);position = secondPosition + 1;carType.add(availableEnums[count - 1]);// System.out.println(availableEnums[count - 1]);}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}DbManager.close();return carType;}public static void addCarTyep(String newType){//String sql = "alter table car modify type enum("a","b","c","d","e","f")";String[] oldcararray=ArrayListToString.arrayListToString( CarDAO.showEnumContent());String[] newcararray = new String[oldcararray.length+1];for(int i=0;i<oldcararray.length;i++){newcararray[i] = oldcararray[i];}newcararray[newcararray.length-1] = newType;String sql1 = "alter table car modify type enum(";String sql2 = "";for(int i=0;i<newcararray.length;i++){sql2+="\'"+newcararray[i]+"\'"+",";}sql2 = sql2.substring(0,sql2.length()-1);String sql3 = ")";String sql = sql1+sql2+sql3;System.out.println(sql);//DbManager.alter(sql);System.out.println(showEnumContent().toString());DbManager.close();}/*public static void main(String args[]){addCarTyep("没有");}*/}

DriverDao.java

package cn.itbaizhan.dao;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;import cn.itbaizhan.db.DbManager;
import cn.itbaizhan.entity.DriverEntity;public class DriverDAO {private Connection con;private static PreparedStatement sta;private static ResultSet rs;private static ArrayList<DriverEntity> list;public DriverDAO(Connection con){this.con = con;}public static boolean save(DriverEntity driver){boolean flag = false;String sql = "INSERT INTO driver(name,sex,nation,jiguan,idcard,xueli,school,tel,mail,address,state) VALUES(?,?,?,?,?,?,?,?,?,?,?)";try {sta = (PreparedStatement) DbManager.update(sql);int i=1;sta.setString(i++, driver.getName());sta.setString(i++, driver.getSex());sta.setString(i++, driver.getNation());sta.setString(i++, driver.getJiguan());sta.setString(i++, driver.getIdcard());sta.setString(i++, driver.getXueli());sta.setString(i++, driver.getSchool());sta.setString(i++, driver.getTel());sta.setString(i++, driver.getMail());sta.setString(i++, driver.getAddress());sta.setString(i++, driver.getState());sta.executeUpdate();} catch (SQLException e) {e.printStackTrace();return false;}return true;}public static boolean updateRemark(int id,String remark){String sql="UPDATE driver set inf='"+remark+"' where id_p='"+id+"'";try {sta = (PreparedStatement) DbManager.update(sql);sta.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();return false;}return true;}public static boolean updateState(int id,String state){String sql="UPDATE driver set state='"+state+"' where id_p='"+id+"'";try {sta = (PreparedStatement) DbManager.update(sql);sta.executeUpdate();} catch (SQLException e) {e.printStackTrace();return false;}return true;}public static boolean update(DriverEntity driver){String sql="UPDATE driver set name=?,sex=?,nation=?,jiguan=?,idcard=?,xueli=?,school=?,tel=?,mail=?,address=?,state=? where id_p='"+driver.getId_p()+"'";try {sta = (PreparedStatement) DbManager.update(sql);//sta.setInt(1, driver.getId());int i = 1;sta.setString(i++, driver.getName());sta.setString(i++, driver.getSex());sta.setString(i++, driver.getNation());sta.setString(i++, driver.getJiguan());sta.setString(i++, driver.getIdcard());sta.setString(i++, driver.getXueli());sta.setString(i++, driver.getSchool());sta.setString(i++, driver.getTel());sta.setString(i++, driver.getMail());sta.setString(i++, driver.getAddress());sta.setString(i++, driver.getState());sta.executeUpdate();} catch (SQLException e) {e.printStackTrace();DbManager.close();return false;}DbManager.close();return true;}public static ArrayList<DriverEntity> findByState(String state,String fendui){String sql = "";if(fendui.equals("全部")){if(state.equals("全部")){sql = "select * from driver";}else{sql = "select * from driver where  state = '"+state+"' ";}}else{sql="select id_de from depart where fendui = '"+fendui+"'";ArrayList<Integer> departList = new ArrayList<Integer>();rs = DbManager.quert(sql);try{while(rs.next()){departList.add(rs.getInt(1));}}catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}if(state.equals("全部")){int number = 0;Iterator<Integer> it = departList.iterator();sql = "select * from driver WHERE depart = ";while(it.hasNext()){number++;sql = sql + "'"+it.next()+"'";if(number!=departList.size()){sql = sql + "or depart=";}}}else{sql = "select * from driver where  state = '"+state+"' AND (depart = ";int number = 0;Iterator<Integer> it = departList.iterator();//sql = "select * from driver WHERE depart = ";while(it.hasNext()){number++;sql = sql + "'"+it.next()+"'";if(number!=departList.size()){sql = sql + "or depart=";}else{sql = sql + ")";}}}}list = new ArrayList<DriverEntity>();rs = DbManager.quert(sql);try {while(rs.next()){DriverEntity driver= new DriverEntity();driver.setId_p(rs.getInt(1));driver.setName(rs.getString(2));driver.setSex(rs.getString(3));driver.setNation(rs.getString(4));driver.setJiguan(rs.getString(5));driver.setIdcard(rs.getString(6));driver.setXueli(rs.getString(7));driver.setSchool(rs.getString(8));driver.setTel(rs.getString(9));driver.setMail(rs.getString(10));driver.setAddress(rs.getString(11));driver.setState(rs.getString(12));list.add(driver);}DbManager.close();return list;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}public static ArrayList<DriverEntity> findAll(){String sql = "select id_p,driver.name,sex,nation,jiguan,idcard,xueli,school,tel,mail,address,state from driver ";list = new ArrayList<DriverEntity>();rs = DbManager.quert(sql);try {while(rs.next()){DriverEntity driver= new DriverEntity();int i=1;driver.setId_p(rs.getInt(i++));driver.setName(rs.getString(i++));driver.setSex(rs.getString(i++));driver.setNation(rs.getString(i++));driver.setJiguan(rs.getString(i++));driver.setIdcard(rs.getString(i++));driver.setXueli(rs.getString(i++));driver.setSchool(rs.getString(i++));driver.setTel(rs.getString(i++));driver.setMail(rs.getString(i++));driver.setAddress(rs.getString(i++));driver.setState(rs.getString(i++));list.add(driver);}DbManager.close();return list;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}DbManager.close();return null;}public static DriverEntity findByID(int id){DriverEntity driver= new DriverEntity();//String sql="select * from driver where id_p="+id;String sql = "select driver.id_p,driver.name,sex,nation,jiguan,idcard,xueli,school,tel,mail,address,state from driver WHERE driver.id_p="+id;rs = DbManager.quert(sql);try {while(rs.next()){int i=1;driver.setId_p(rs.getInt(i++));driver.setName(rs.getString(i++));driver.setSex(rs.getString(i++));driver.setNation(rs.getString(i++));driver.setJiguan(rs.getString(i++));driver.setIdcard(rs.getString(i++));driver.setXueli(rs.getString(i++));driver.setSchool(rs.getString(i++));driver.setTel(rs.getString(i++));driver.setMail(rs.getString(i++));driver.setAddress(rs.getString(i++));driver.setState(rs.getString(i++));}DbManager.close();return driver;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}DbManager.close();return null;}public static ArrayList<DriverEntity> findByName(String name){DriverEntity driver= new DriverEntity();list = new ArrayList<DriverEntity>();//String sql="select * from driver where id_p="+id;String sql = "select driver.id_p,name,sex,nation,jiguan,idcard,xueli,school,tel,mail,address,state from driver WHERE driver.name='"+name+"'";rs = DbManager.quert(sql);try {while(rs.next()){int i=1;driver.setId_p(rs.getInt(i++));driver.setName(rs.getString(i++));driver.setSex(rs.getString(i++));driver.setNation(rs.getString(i++));driver.setJiguan(rs.getString(i++));driver.setIdcard(rs.getString(i++));driver.setXueli(rs.getString(i++));driver.setSchool(rs.getString(i++));driver.setTel(rs.getString(i++));driver.setMail(rs.getString(i++));driver.setAddress(rs.getString(i++));driver.setState(rs.getString(i++));list.add(driver);}DbManager.close();return list;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}DbManager.close();return null;}
public static ArrayList<DriverEntity> findByZhiWu(String zhiwu){DriverEntity driver= new DriverEntity();list = new ArrayList<DriverEntity>();//String sql="select * from driver where id_p="+id;System.out.println(zhiwu);String sql = "select name,sex,nation,jiguan,idcard,xueli,school,tel,mail,address,state from driver WHERE sex='"+zhiwu+"'";rs = DbManager.quert(sql);try {while(rs.next()){int i=1;driver.setName(rs.getString(i++));driver.setSex(rs.getString(i++));driver.setNation(rs.getString(i++));driver.setJiguan(rs.getString(i++));driver.setIdcard(rs.getString(i++));driver.setXueli(rs.getString(i++));driver.setSchool(rs.getString(i++));driver.setTel(rs.getString(i++));driver.setMail(rs.getString(i++));driver.setAddress(rs.getString(i++));driver.setState(rs.getString(i++));list.add(driver);}DbManager.close();return list;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}DbManager.close();return null;}
public static ArrayList<String> findAllName(){String sql = "select name from driver ";ArrayList<String> nameList = new ArrayList<String>();rs = DbManager.quert(sql);try {while(rs.next()){int i=1;nameList.add(rs.getString(i++));}DbManager.close();return nameList;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}DbManager.close();return null;
}public static DriverEntity findByID2(int id){DriverEntity driver= new DriverEntity();String sql = "select id_p,driver.name,sex,nation,jiguan,idcard,xueli,school,tel,mail,address,state WHERE driver.id_p="+id;rs = DbManager.quert(sql);try {while(rs.next()){int i=1;driver.setId_p(rs.getInt(i++));driver.setName(rs.getString(i++));driver.setSex(rs.getString(i++));driver.setNation(rs.getString(i++));driver.setJiguan(rs.getString(i++));driver.setIdcard(rs.getString(i++));driver.setXueli(rs.getString(i++));driver.setSchool(rs.getString(i++));driver.setTel(rs.getString(i++));driver.setMail(rs.getString(i++));driver.setAddress(rs.getString(i++));driver.setState(rs.getString(i++));}DbManager.close();return driver;} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}DbManager.close();return null;}public static void delete(int id){String sql="DELETE FROM driver where id_p=?"; try {sta = (PreparedStatement) DbManager.update(sql);sta.setInt(1,id	);sta.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}DbManager.close();}}

2、view层:主页面
Main.java

package cn.itbaizhan.swing;import java.awt.Dimension;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.UIManager;import cn.itbaizhan.dao.UserDAO;
import cn.itbaizhan.entity.UserEntity;
import cn.itbaizhan.swing.Manage;public class Main extends JFrame{public static void main(String[] args) {  try{UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");//Windows风格 //可以传入以下参数javax.swing.plaf.metal.MetalLookAndFeel;   Metal外观  //com.sun.java.swing.plaf.motif.MotifLookAndFeel;   Motif外观  //com.sun.java.swing.plaf.windows.WindowsLookAndFeel;   windows外观 //SwingUtilities.updateComponentTreeUI(getContentPane());}catch(Exception e){}Main j = new Main();  j.setVisible(true);  }  private static final long serialVersionUID = 1L;  //用于处理拖动事件,表示鼠标按下时的坐标,相对于JFrame  int xOld = 0;  int yOld = 0;  private JPanel imagePanel;private ImageIcon background; public Main() {  final JTextField text1 = new JTextField();this.setLayout(null);  //设置出现位置Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();this.setBounds(((int)dimension.getWidth() - 500) / 2, ((int)dimension.getHeight() - 500) / 2, 500, 255);//处理拖动事件  this.addMouseListener(new MouseAdapter() {  @Override  public void mousePressed(MouseEvent e) {  xOld = e.getX();  yOld = e.getY();  }  });  this.addMouseMotionListener(new MouseMotionAdapter() {  @Override  public void mouseDragged(MouseEvent e) {  int xOnScreen = e.getXOnScreen();  int yOnScreen = e.getYOnScreen();  int xx = xOnScreen - xOld;  int yy = yOnScreen - yOld;  Main.this.setLocation(xx, yy);  }  });  this.addWindowListener(new WindowAdapter() { @Overridepublic void windowActivated(WindowEvent e) { text1.requestFocusInWindow(); } });background = new ImageIcon("image\\background.jpg");// 背景图片JLabel label = new JLabel(background);// 把背景图片显示在一个标签里面// 把标签的大小位置设置为图片刚好填充整个面板label.setBounds(0, 0, background.getIconWidth(),background.getIconHeight());// 把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明imagePanel = (JPanel) this.getContentPane();imagePanel.setOpaque(false);// 内容窗格默认的布局管理器为BorderLayoutimagePanel.setLayout(null);imagePanel.add(new JButton("测试按钮"));this.getLayeredPane().setLayout(null);// 把背景图片添加到分层窗格的最底层作为背景this.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE));this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setSize(background.getIconWidth(), background.getIconHeight());this.setResizable(false);//jFrame.setBounds(((int)dimension.getWidth() - 200) / 2, ((int)dimension.getHeight() - 300) / 2, 400, 50);//jFrame.setResizable(false);//setLayout(null);//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);Font f = new Font("楷体", Font.BOLD, 18);JLabel label1 = new JLabel("用户名:");label1.setFont(f);label1.setBounds(150, 290, 100, 30);imagePanel.add(label1);JLabel label2 = new JLabel("密  码:");label2.setBounds(150, 320, 100, 30);label2.setFont(f);imagePanel.add(label2);text1.setBounds(220, 295, 130, 20);text1.requestFocus();imagePanel.add(text1);final JPasswordField text2 = new JPasswordField();text2.setBounds(220, 325, 130, 20);text2.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent arg0) {Boolean key = false;ArrayList<UserEntity> user = UserDAO.findAll();for(UserEntity temp : user){if(temp.getUsername().equals(text1.getText()) && temp.getPassword().equals(text2.getText())) {JOptionPane.showMessageDialog(null, "登陆成功", "提示", JOptionPane.INFORMATION_MESSAGE);dispose();new Manage(temp);key = true;break;}}if(key == false){JOptionPane.showMessageDialog(null, "用户名-密码错误", "提示", JOptionPane.ERROR_MESSAGE);text1.setText("");text2.setText("");}}});imagePanel.add(text2);JButton button1 = new JButton("登录");button1.setBounds(220, 355, 60, 20);imagePanel.add(button1);JButton button2 = new JButton("取消");button2.setBounds(290, 355, 60, 20);imagePanel.add(button2);button1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {Boolean key = false;ArrayList<UserEntity> user = UserDAO.findAll();for(UserEntity temp : user){if(temp.getUsername().equals(text1.getText()) && temp.getPassword().equals(text2.getText())) {JOptionPane.showMessageDialog(null, "登陆成功", "提示", JOptionPane.INFORMATION_MESSAGE);dispose();new Manage(temp);key = true;break;}}if(key == false){JOptionPane.showMessageDialog(null, "错误", "提示", JOptionPane.ERROR_MESSAGE);text1.setText("");text2.setText("");}}});
button2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {System.exit(0);}});setUndecorated(true);//setBounds(50,50,500,255);  // }  /*public static void main(String[] args) {JPanel imagePanel;ImageIcon background;final JFrame jFrame = new JFrame();Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();//JLayeredPane用于添加两个图层的,一个用于背景,一个用于界面  JLayeredPane layeredPane = new JLayeredPane();  layeredPane.setBounds(0, 0, 500, 255);  jFrame.add(layeredPane);  //背景Panel  JPanel bgPanel = new JPanel();  bgPanel.setBounds(0, 0, 500, 255);  layeredPane.add(bgPanel);  //背景图片,添加到背景Panel里面  JLabel bgLabel = new JLabel(new ImageIcon("image/background.jpg"));  bgPanel.add(bgLabel);  //主界面,也就是背景上面的一层Panel  JPanel mainPanel = new JPanel();  mainPanel.setBounds(0, 0, 500, 255);  mainPanel.setLayout(null);  layeredPane.add(mainPanel);  //jFrame.setBounds(((int)dimension.getWidth() - 200) / 2, ((int)dimension.getHeight() - 300) / 2, 400, 50);//jFrame.setResizable(false);jFrame.setLayout(null);jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JLabel label1 = new JLabel("用户名");label1.setBounds(10, 10, 100, 30);mainPanel.add(label1);JLabel label2 = new JLabel("密码");label2.setBounds(10, 40, 100, 30);mainPanel.add(label2);final JTextField text1 = new JTextField();text1.setBounds(50, 15, 130, 20);mainPanel.add(text1);final JPasswordField text2 = new JPasswordField();text2.setBounds(50, 45, 130, 20);mainPanel.add(text2);JButton button = new JButton("登录");button.setBounds(50, 75, 100, 30);button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {Boolean key = false;ArrayList<UserEntity> user = UserDAO.findAll();for(UserEntity temp : user){if(temp.getUsername().equals(text1.getText()) && temp.getPassword().equals(text2.getText())) {JOptionPane.showMessageDialog(null, "登陆成功", "提示", JOptionPane.INFORMATION_MESSAGE);jFrame.dispose();new Manage(temp);key = true;break;}}if(key == false){JOptionPane.showMessageDialog(null, "错误", "提示", JOptionPane.ERROR_MESSAGE);text1.setText("");text2.setText("");}}});mainPanel.add(button);jFrame.setVisible(true);jFrame.setBounds(50,50,500,255);  jFrame.setUndecorated(true); }*/}

DriverPane.java

package cn.itbaizhan.swing;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Image;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Vector;import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableModel;import cn.itbaizhan.addpanel.DriverCorJFrame;
import cn.itbaizhan.dao.DriverDAO;
import cn.itbaizhan.entity.DriverEntity;
import cn.itbaizhan.tool.Snippet;
import cn.itbaizhan.tool.TableToWord;
import cn.itbaizhan.tool.TableTools;
import cn.itbaizhan.updatepanel.DriverUpdateJFrame;
import cn.itbaizhan.updatepanel.DriverUpdateJFrame2;public class DriverPanel extends JPanel{public static JTable table;QueryPanel querypanel;DriverEntity driver;Connection con;Statement sta;ResultSet rs;ResultSetMetaData rsmd;public static Vector<Vector<String>> data;Vector<String>	dataline;public static Vector<String> tableHead;ArrayList<DriverEntity> list;public static DefaultTableModel tablemodel;private int queryNumber;private String queryKey = "姓名";//Vector meta;public DriverPanel(){querypanel = new QueryPanel();String[] dataString = DriverEntity.title;tableHead = new Vector<String>();for(String temp:dataString){tableHead.add(temp);}data = new Vector<Vector<String>>();list = DriverDAO.findAll();queryNumber = list.size();for(DriverEntity temp : list){dataline = new Vector<String>();dataline.add(Integer.toString(temp.getId_p()));dataline.add(temp.getName());//dataline.add(temp.getDepart_name());//dataline.add(temp.getZhiwu_name());dataline.add(temp.getSex());dataline.add(temp.getNation());dataline.add(temp.getJiguan());dataline.add(temp.getIdcard());dataline.add(temp.getXueli());dataline.add(temp.getSchool());dataline.add(temp.getTel());dataline.add(temp.getMail());dataline.add(temp.getAddress());dataline.add(temp.getState());/*dataline.add(temp.getEntertime().toString());dataline.add(temp.getState());dataline.add(temp.getProfessional());dataline.add(temp.getDriverid());dataline.add(temp.getGettime().toString());dataline.add(temp.getEffecttime());dataline.add(temp.getAllowtype());dataline.add(temp.getOvertime().toString());dataline.add(temp.getIn_driverid());dataline.add(temp.getIn_gettime().toString());dataline.add(temp.getIn_effecttime());dataline.add(temp.getIn_allowtype());dataline.add(temp.getIn_overtime().toString());*/data.add(dataline);}tablemodel = new DefaultTableModel(data,tableHead);table = new JTable(tablemodel){@Overridepublic boolean isCellEditable(int row, int column) {			return false;	}
};table.setToolTipText("人员信息");//Table双击事件table.addMouseListener(new MouseAdapter(){@Overridepublic void mouseClicked(MouseEvent e) {if(e.getClickCount()==2){//点击几次,这里是双击事件int key = Integer.parseInt(table.getModel().getValueAt(table.getSelectedRow(), 0).toString());DriverEntity driver = DriverDAO.findByID(key);new DriverUpdateJFrame2(driver);}}});//设置table显示TableTools.setTable(table);//TableTools.fitTableColumns(table);TableTools.contentCenter(table);//table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); Snippet.hideTableColumn(table, 0);querypanel = new QueryPanel();JScrollPane js = new JScrollPane(table);js.getViewport().setBackground(Color.WHITE);setLayout(new BorderLayout());add(querypanel,BorderLayout.NORTH);add(js,BorderLayout.CENTER);}private class QueryPanel extends JToolBar implements ActionListener{private JToolBar querybar;private JButton add;private JButton update;private JButton delete;private JButton check;private JButton query;private JButton show;private String[] queryitem;private JComboBox<String> jcb;private JTextField text;private JLabel querylabel;private JButton save;public QueryPanel(){add = createButton("image\\add.png","添加");update = createButton("image\\edit.png","编辑");delete = createButton("image\\delete.png","删除");check = createButton("image\\state.png","查看");query = createButton("image\\search.png","查询");show = createButton("image\\show.png","显示");save = createButton("image\\save.png","保存表格");queryitem = new String[]{"姓名","性别","状态"};jcb = new JComboBox<String>(queryitem);querylabel = new JLabel("      查询条目:"+queryNumber);querylabel.setForeground(Color.red);text = new JTextField("");text.setBorder(BorderFactory.createLineBorder(new Color(122,138,153)));text.setBackground(null);jcb.setPreferredSize(new Dimension(100,22));text.setPreferredSize(new Dimension(80,22));setLayout(new FlowLayout(FlowLayout.LEFT));add.addActionListener(this);update.addActionListener(this);delete.addActionListener(this);jcb.addActionListener(this);query.addActionListener(this);show.addActionListener(this);save.addActionListener(this);if(Manage.user.getType().equals("管理员")){add(add);add(update);add(delete);}else if(Manage.user.getType().equals("一般用途")){add(add);}this.addSeparator();//add(check);add(jcb);add(text);add(query);add(show);add(save);add(querylabel);//add(querybar);}public JButton createButton(String imagePath,String name){final JButton button = new JButton(name);button.setContentAreaFilled(false);// 设置按钮透明button.setFont(new Font("粗体", Font.PLAIN, 12));// 按钮文本样式button.setMargin(new Insets(0, 0, 0, 0));// 按钮内容与边框距�?ImageIcon image = new ImageIcon(imagePath); image.setImage(image.getImage().getScaledInstance(20,20,Image.SCALE_DEFAULT));button.setIcon(image);button.setHorizontalTextPosition(SwingConstants.CENTER);button.setVerticalTextPosition(SwingConstants.BOTTOM);button.setBorderPainted(false);button.addMouseListener(new MouseListener() {@Overridepublic void mouseReleased(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mousePressed(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent e) {button.setBorderPainted(false);button.setBackground(new Color(191,239,255));}@Overridepublic void mouseEntered(MouseEvent e) {button.setBorderPainted(true);button.setBackground(new Color(191,230,250));}@Overridepublic void mouseClicked(MouseEvent e) {// TODO Auto-generated method stub}});return button;}@Overridepublic void actionPerformed(ActionEvent e) {if(e.getSource()==add){new DriverCorJFrame();}if(e.getSource()==delete){try{if(JOptionPane.showConfirmDialog(this, "确定要删除吗", "删除信息", 2)==JOptionPane.YES_OPTION){int key = Integer.parseInt(table.getModel().getValueAt(table.getSelectedRow(), 0).toString());DriverDAO.delete(key);//更新表格内容list = DriverDAO.findAll();DriverPanel.data.clear();for(DriverEntity temp : list){dataline = new Vector<String>();dataline.add(Integer.toString(temp.getId_p()));dataline.add(temp.getName());//dataline.add(temp.getDepart_name());//dataline.add(temp.getZhiwu_name());dataline.add(temp.getSex());dataline.add(temp.getNation());dataline.add(temp.getJiguan());dataline.add(temp.getIdcard());dataline.add(temp.getXueli());dataline.add(temp.getSchool());dataline.add(temp.getTel());dataline.add(temp.getMail());dataline.add(temp.getAddress());dataline.add(temp.getState());/*dataline.add(temp.getEntertime().toString());dataline.add(temp.getState());dataline.add(temp.getProfessional());dataline.add(temp.getDriverid());dataline.add(temp.getGettime().toString());dataline.add(temp.getEffecttime());dataline.add(temp.getAllowtype());dataline.add(temp.getOvertime().toString());dataline.add(temp.getIn_driverid());dataline.add(temp.getIn_gettime().toString());dataline.add(temp.getIn_effecttime());dataline.add(temp.getIn_allowtype());dataline.add(temp.getIn_overtime().toString());*/DriverPanel.data.add(dataline);}DriverPanel.table.updateUI();queryNumber = list.size();querylabel.setText("      查询条目:"+queryNumber);text.setText("");}}catch(ArrayIndexOutOfBoundsException e1){JOptionPane.showMessageDialog(this, "请选择编辑条目");}}if(e.getSource()==update){try{int key = Integer.parseInt(table.getModel().getValueAt(table.getSelectedRow(), 0).toString());DriverEntity driver = DriverDAO.findByID(key);new DriverUpdateJFrame(driver);}catch(ArrayIndexOutOfBoundsException e1){JOptionPane.showMessageDialog(this, "请选择编辑条目");}}if(e.getSource()==jcb){queryKey = (String) jcb.getSelectedItem(); }if(e.getSource()==query){ArrayList<DriverEntity> list = new ArrayList<DriverEntity>();if(text.getText().equals("")){list = DriverDAO.findAll();}else{if(queryKey.endsWith("姓名")){list = DriverDAO.findByName(text.getText());}else if(queryKey.endsWith("性别")){list = DriverDAO.findByZhiWu(text.getText());}else if(queryKey=="状态"){list = DriverDAO.findByState(text.getText(),"全部");}}queryNumber = list.size();querylabel.setText("      查询条目:"+queryNumber);DriverPanel.data.clear();for(DriverEntity temp : list){Vector<String> dataline = new Vector<String>();dataline = new Vector<String>();dataline.add(Integer.toString(temp.getId_p()));dataline.add(temp.getName());//dataline.add(temp.getDepart_name());//dataline.add(temp.getZhiwu_name());dataline.add(temp.getSex());dataline.add(temp.getNation());dataline.add(temp.getJiguan());dataline.add(temp.getIdcard());dataline.add(temp.getXueli());dataline.add(temp.getSchool());dataline.add(temp.getTel());dataline.add(temp.getMail());dataline.add(temp.getAddress());dataline.add(temp.getState());/*dataline.add(temp.getEntertime().toString());dataline.add(temp.getState());dataline.add(temp.getProfessional());dataline.add(temp.getDriverid());dataline.add(temp.getGettime().toString());dataline.add(temp.getEffecttime());dataline.add(temp.getAllowtype());dataline.add(temp.getOvertime().toString());dataline.add(temp.getIn_driverid());dataline.add(temp.getIn_gettime().toString());dataline.add(temp.getIn_effecttime());dataline.add(temp.getIn_allowtype());dataline.add(temp.getIn_overtime().toString());*/DriverPanel.data.add(dataline);}DriverPanel.table.updateUI();}if(e.getSource()==show){//更新表格内容list = DriverDAO.findAll();DriverPanel.data.clear();for(DriverEntity temp : list){dataline = new Vector<String>();dataline.add(Integer.toString(temp.getId_p()));dataline.add(temp.getName());//dataline.add(temp.getDepart_name());//dataline.add(temp.getZhiwu_name());dataline.add(temp.getSex());dataline.add(temp.getNation());dataline.add(temp.getJiguan());dataline.add(temp.getIdcard());dataline.add(temp.getXueli());dataline.add(temp.getSchool());dataline.add(temp.getTel());dataline.add(temp.getMail());dataline.add(temp.getAddress());dataline.add(temp.getState());/*dataline.add(temp.getEntertime().toString());dataline.add(temp.getState());dataline.add(temp.getProfessional());dataline.add(temp.getDriverid());dataline.add(temp.getGettime().toString());dataline.add(temp.getEffecttime());dataline.add(temp.getAllowtype());dataline.add(temp.getOvertime().toString());dataline.add(temp.getIn_driverid());dataline.add(temp.getIn_gettime().toString());dataline.add(temp.getIn_effecttime());dataline.add(temp.getIn_allowtype());dataline.add(temp.getIn_overtime().toString());*/DriverPanel.data.add(dataline);}DriverPanel.table.updateUI();queryNumber = list.size();querylabel.setText("      查询条目:"+queryNumber);text.setText("");}if(e.getSource()==save){if(JOptionPane.showConfirmDialog(this, "是否要保存此数据表格", "保存数据", 2)==JOptionPane.YES_OPTION){//将table中的内容保存为Wordlong temp = System.currentTimeMillis();TableToWord.openWord("carDate\\人员信息"+  temp +".doc", DriverEntity.width,"人员信息", DriverEntity.title.length, DriverEntity.title, data,-2,1);try {String a ="carDate\\人员信息"+ temp +".doc";Runtime.getRuntime().exec("cmd /c \""+a+"\"");} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}}}}}

CarInfPane.java

package cn.itbaizhan.swing;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Image;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Vector;import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableModel;import cn.itbaizhan.dao.CarInfDAO;
import cn.itbaizhan.entity.CarInfEntity;
import cn.itbaizhan.entity.DriverEntity;
import cn.itbaizhan.tool.TableToWord;
import cn.itbaizhan.tool.TableTools;public class CarInfPanel extends JPanel{public static JTable table;QueryPanel querypanel;DriverEntity driver;Connection con;Statement sta;ResultSet rs;ResultSetMetaData rsmd;public static Vector<Vector<String>> data;Vector<String>	dataline;public static Vector<String> tableHead;ArrayList<CarInfEntity> list;public static DefaultTableModel tablemodel;public CarInfPanel(){querypanel = new QueryPanel();String[] dataString = CarInfEntity.title;tableHead = new Vector<String>();for(String temp:dataString){tableHead.add(temp);}data = new Vector<Vector<String>>();list = CarInfDAO.findAll();for(CarInfEntity temp : list){dataline = new Vector<String>();dataline.add(temp.getNumber());dataline.add(temp.getAddoilcount());dataline.add(temp.getRepaircount());data.add(dataline);}tablemodel = new DefaultTableModel(data,tableHead);table = new JTable(tablemodel){@Overridepublic boolean isCellEditable(int row, int column) {			return false;	}};table.setToolTipText("车辆综合信息表");//设置table显示TableTools.setTable(table);TableTools.fitTableColumns(table);TableTools.contentCenter(table);JScrollPane js = new JScrollPane(table);js.getViewport().setBackground(Color.WHITE);setLayout(new BorderLayout());add(querypanel,BorderLayout.NORTH);add(js,BorderLayout.CENTER);}private class QueryPanel extends JToolBar implements ActionListener{private JToolBar querybar;private JButton add;private JButton update;private JButton delete;private JButton check;private JButton query;private JButton show;private JButton save;public QueryPanel(){add = createButton("image\\add.png","添加");update = createButton("image\\edit.png","编辑");delete = createButton("image\\delete.png","删除");check = createButton("image\\state.png","查看");query = createButton("image\\search.png","查询");show = createButton("image\\show.png","显示");save = createButton("image\\save.png","保存表格");setLayout(new FlowLayout(FlowLayout.LEFT));add.addActionListener(this);update.addActionListener(this);delete.addActionListener(this);save.addActionListener(this);//add(add);//add(update);//add(delete);//this.addSeparator();//add(check);add(query);add(show);add(save);//add(querybar);}public JButton createButton(String imagePath,String name){final JButton button = new JButton(name);button.setContentAreaFilled(false);// 设置按钮透明button.setFont(new Font("粗体", Font.PLAIN, 12));// 按钮文本样式button.setMargin(new Insets(0, 0, 0, 0));// 按钮内容与边框距离ImageIcon image = new ImageIcon(imagePath); image.setImage(image.getImage().getScaledInstance(20,20,Image.SCALE_DEFAULT));button.setIcon(image);button.setHorizontalTextPosition(SwingConstants.CENTER);button.setVerticalTextPosition(SwingConstants.BOTTOM);button.setBorderPainted(false);button.addMouseListener(new MouseListener() {@Overridepublic void mouseReleased(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mousePressed(MouseEvent e) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent e) {button.setBorderPainted(false);button.setBackground(new Color(191,239,255));}@Overridepublic void mouseEntered(MouseEvent e) {button.setBorderPainted(true);button.setBackground(new Color(191,230,250));}@Overridepublic void mouseClicked(MouseEvent e) {// TODO Auto-generated method stub}});return button;}@Overridepublic void actionPerformed(ActionEvent e) {if(e.getSource()==add){}if(e.getSource()==save){if(JOptionPane.showConfirmDialog(this, "是否要保存此数据表格", "保存数据", 2)==JOptionPane.YES_OPTION){//将table中的内容保存为Wordlong temp = System.currentTimeMillis();TableToWord.openWord("carDate\\车辆综合信息表"+ temp +".doc", CarInfEntity.width,"车辆综合信息表", CarInfEntity.title.length, CarInfEntity.title, data,0,0);try {String a ="carDate\\车辆综合信息表"+ temp +".doc";Runtime.getRuntime().exec("cmd /c \""+a+"\"");} catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}}}}
}

写在最后

全部源码和详细文档,可以加博主微信交流:(Code2Life2)

这篇关于Java Swing+mysql实现的出租车计价器系统(车辆管理、司机管理、订单管理)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/766261

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

SQL中的外键约束

外键约束用于表示两张表中的指标连接关系。外键约束的作用主要有以下三点: 1.确保子表中的某个字段(外键)只能引用父表中的有效记录2.主表中的列被删除时,子表中的关联列也会被删除3.主表中的列更新时,子表中的关联元素也会被更新 子表中的元素指向主表 以下是一个外键约束的实例展示

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M