功能
1、与数据库连接,展示列车信息
2、增删改查
学老师给的实例写的,有(好多)bug,功能不能全部实现。暂时懒得改,以后一定行!
MainFrame
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
public class MainFrame extends JFrame implements ActionListener {
JLabel idlabel;
JTextField idtxt;
JButton idbutton,addbutton,delbutton,upbutton;
JTable table;
JScrollPane panel;
public MainFrame(){
this.setSize(800,600);
this.setTitle("列车信息系统");
this.setLayout(null);
//根据列车号查找
//idLabel
idlabel = new JLabel("列车号");
idlabel.setSize(60,30);
idlabel.setLocation(30,30);
this.add(idlabel);
//idTxt
idtxt = new JTextField();
idtxt.setSize(150,30);
idtxt.setLocation(90,30);
this.add(idtxt);
//idButton
idbutton = new JButton("列车号查找");
idbutton.setSize(120,30);
idbutton.setLocation(280,30);
idbutton.addActionListener(this);
this.add(idbutton);
//addButton
addbutton = new JButton("增加");
addbutton.setSize(60,30);
addbutton.setLocation(30,90);
addbutton.addActionListener(this);
this.add(addbutton);
//delButton
delbutton = new JButton("删除");
delbutton.setSize(60,30);
delbutton.setLocation(120,90);
delbutton.addActionListener(this);
this.add(delbutton);
//upButton
upbutton = new JButton("修改");
upbutton.setSize(60,30);
upbutton.setLocation(210,90);
upbutton.addActionListener(this);
this.add(upbutton);
TrainDAO dao = new TrainDAO();
ArrayList list = dao.findTrainByID("");
initTable(list);
this.setVisible(true);
}
void initTable(ArrayList<TrainInformation> list) {
if((list!=null)||(list.size()!=0)){
if(panel!=null){
this.remove(panel);
}
String[] column = {"列车号","出发时刻","到达时刻","出发站","到达站","经过站台数","二等座价格","一等座价格","商务座价格"};
String[][] values = new String[list.size()][9];
for (int i = 0; i < list.size(); i++) {
TrainInformation train = (TrainInformation)list.get(i);
values[i][0] = train.getTrainid();
values[i][1] = train.getDt();
values[i][2] = train.getAt();
values[i][3] = train.getDs();
values[i][4] = train.getAs();
values[i][5] = String.valueOf(train.getStationnum());
values[i][6] = String.valueOf(train.getPrice1());
values[i][7] = String.valueOf(train.getPrice2());
values[i][8] = String.valueOf(train.getPrice3());
}
table = new JTable(values,column);
panel = new JScrollPane(table);
panel.setSize(750,400);
panel.setLocation(20,150);
this.add(panel);
}
}
@Override
public void actionPerformed(ActionEvent e) {
JButton bt = (JButton)e.getSource();
if(bt.getText().equals("列车号查找")){
TrainDAO dao = new TrainDAO();
ArrayList list = dao.findTrainByID(idtxt.getText());
initTable(list);
}else if(bt.getText().equals("删除")){
if(table.getSelectedRow()==-1){
JOptionPane.showMessageDialog(this,"请选择要删除的列车");
}else{
TrainDAO dao = new TrainDAO();
dao.delTrain(table.getValueAt(table.getSelectedRow(),0).toString());
ArrayList list = dao.findTrainByID("");
initTable(list);
}
}else if (bt.getText().equals("修改")){
if(table.getSelectedRow()==-1){
JOptionPane.showMessageDialog(this,"请选择要删除的列车");
}else{
int row = table.getSelectedRow();
String id = table.getValueAt(row,0).toString();
String dt = table.getValueAt(row,1).toString();
String at = table.getValueAt(row,2).toString();
String ds = table.getValueAt(row,3).toString();
String as = table.getValueAt(row,4).toString();
int num = Integer.parseInt(table.getValueAt(row,5).toString());
int p1 = Integer.parseInt(table.getValueAt(row,6).toString());
int p2 = Integer.parseInt(table.getValueAt(row,7).toString());
int p3 = Integer.parseInt(table.getValueAt(row,8).toString());
TrainInformation train = new TrainInformation(id,dt,at,ds,as,num,p1,p2,p3);
AddOrUpdateFrame newFrame = new AddOrUpdateFrame("修改",train,this);
}
}else{
AddOrUpdateFrame newFrame = new AddOrUpdateFrame("增加",null,this);
}
}
}
TrainDAO
import java.sql.*;
import java.util.*;
import java.lang.String;
import static java.lang.Class.forName;
public class TrainDAO {
private Connection con;
public TrainDAO(){
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/train?characterEncoding=UTF-8","root","admin");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
public ArrayList<TrainInformation> findTrainByID(String s) {
ArrayList<TrainInformation> result = new ArrayList<>();
try{
Statement st = con.createStatement();
String sql = "select * from train";
ResultSet rs = st.executeQuery(sql);
if(rs.next()){
String id = rs.getString(1);
String dt = rs.getString(2);
String at = rs.getString(3);
String ds = rs.getString(4);
String as = rs.getString(5);
int num = rs.getInt(6);
int p1 = rs.getInt(7);
int p2 = rs.getInt(8);
int p3 = rs.getInt(9);
TrainInformation train = new TrainInformation(id,dt,at,ds,as,num,p1,p2,p3);
result.add(train);
}
st.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
return result;
}
public void delTrain(String s) {
try{
PreparedStatement ps = con.prepareStatement("delete from train where s = ?");
ps.setString(1,s);
ps.execute();
ps.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void addTrain(TrainInformation train){
try{
PreparedStatement ps = con.prepareStatement("insert into train values(?,?,?,?,?,?,?,?,?)");
ps.setString(1,train.getTrainid());
ps.setString(2,train.getDt());
ps.setString(3,train.getAt());
ps.setString(4,train.getDs());
ps.setString(5,train.getAs());
ps.setInt(6,train.getStationnum());
ps.setInt(7,train.getPrice1());
ps.setInt(8,train.getPrice2());
ps.setInt(9,train.getPrice3());
ps.execute();
ps.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void updateTrain(TrainInformation train){
try{
PreparedStatement ps = con.prepareStatement("update train set trainID=?,depaertureTime=?,arriveTime=?,departureStation=?," +
"arriveStation=?,numberOdStations=?,price1=?,price2=?,price3=?");
ps.setString(1,train.getTrainid());
ps.setString(2,train.getDt());
ps.setString(3,train.getAt());
ps.setString(4,train.getDs());
ps.setString(5,train.getAs());
ps.setInt(6,train.getStationnum());
ps.setInt(7,train.getPrice1());
ps.setInt(8,train.getPrice2());
ps.setInt(9,train.getPrice3());
ps.execute();
ps.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
AddOrUpdateFrame
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
public class AddOrUpdateFrame extends JFrame implements ActionListener {
JLabel idLa,dtLa,atLa,dsLa,asLa,numLa,p1La,p2La,p3La;
JTextField idtxt,dttxt,attxt,dstxt,astxt,numtxt,p1txt,p2txt,p3txt;
JButton bt;
MainFrame main;
public AddOrUpdateFrame(String type, TrainInformation train, MainFrame main) {
this.setSize(300,600);
this.setLayout(null);
idLa = new JLabel("列车号");
idLa.setSize(60,30);
idLa.setLocation(30,30);
this.add(idLa);
idtxt = new JTextField();
idtxt.setSize(120,30);
idtxt.setLocation(100,30);
this.add(idtxt);
dtLa = new JLabel("出发时间");
dtLa.setSize(60,30);
dtLa.setLocation(30,80);
this.add(dtLa);
dttxt = new JTextField();
dttxt.setSize(120,30);
dttxt.setLocation(100,80);
this.add(dttxt);
atLa = new JLabel("到达时间");
atLa.setSize(60,30);
atLa.setLocation(30,130);
this.add(atLa);
attxt = new JTextField();
attxt.setSize(120,30);
attxt.setLocation(100,130);
this.add(attxt);
dsLa = new JLabel("出发站");
dsLa.setSize(60,30);
dsLa.setLocation(30,180);
this.add(dsLa);
dstxt = new JTextField();
dstxt.setSize(120,30);
dstxt.setLocation(100,180);
this.add(dstxt);
asLa = new JLabel("到达站");
asLa.setSize(60,30);
asLa.setLocation(30,230);
this.add(asLa);
astxt = new JTextField();
astxt.setSize(120,30);
astxt.setLocation(100,230);
this.add(astxt);
numLa = new JLabel("经过站台数");
numLa.setSize(60,30);
numLa.setLocation(30,280);
this.add(numLa);
numtxt = new JTextField();
numtxt.setSize(120,30);
numtxt.setLocation(100,280);
this.add(numtxt);
p1La = new JLabel("二等座价格");
p1La.setSize(60,30);
p1La.setLocation(30,330);
this.add(p1La);
p1txt = new JTextField();
p1txt.setSize(120,30);
p1txt.setLocation(100,330);
this.add(p1txt);
p2La = new JLabel("一等座价格");
p2La.setSize(60,30);
p2La.setLocation(30,380);
this.add(p2La);
p2txt = new JTextField();
p2txt.setSize(120,30);
p2txt.setLocation(100,380);
this.add(p2txt);
p3La = new JLabel("商务座价格");
p3La.setSize(60,30);
p3La.setLocation(30,430);
this.add(p3La);
p3txt = new JTextField();
p3txt.setSize(120,30);
p3txt.setLocation(100,430);
this.add(p3txt);
if(type.equals("增加")){
this.setTitle("增加");
bt = new JButton("增加");
bt.setSize(60,30);
bt.setLocation(90,480);
}else{
this.setTitle("修改");
bt = new JButton("修改");
bt.setSize(60,30);
bt.setLocation(90,480);
if(train!=null){
idtxt.setText(train.getTrainid());
dttxt.setText(train.getDt());
attxt.setText(train.getAt());
dstxt.setText(train.getDs());
astxt.setText(train.getAs());
numtxt.setText(String.valueOf(train.getStationnum()));
p1txt.setText(String.valueOf(train.getPrice1()));
p2txt.setText(String.valueOf(train.getPrice2()));
p3txt.setText(String.valueOf(train.getPrice3()));
}
}
this.add(bt);
bt.addActionListener(this);
this.setVisible(true);
this.main = main;
}
@Override
public void actionPerformed(ActionEvent e) {
JButton bt = (JButton)e.getSource();
TrainDAO dao = new TrainDAO();
String id = idtxt.getText().trim();
String dt = dttxt.getText().trim();
String at = attxt.getText().trim();
String ds = dstxt.getText().trim();
String as = astxt.getText().trim();
int num = Integer.parseInt(numtxt.getText().trim());
int p1 = Integer.parseInt(p1txt.getText().trim());
int p2 = Integer.parseInt(p2txt.getText().trim());
int p3 = Integer.parseInt(p3txt.getText().trim());
TrainInformation train = new TrainInformation(id,dt,at,ds,as,num,p1,p2,p3);
if(bt.getText().equals("修改")){
dao.updateTrain(train);
}else{
dao.addTrain(train);
}
ArrayList list = dao.findTrainByID("");
main.initTable(list);
this.dispose();
}
}
TrainInformation
public class TrainInformation {
private String trainid;
private String dt;
private String at;
private String ds;
private String as;
private int stationnum;
private int price1;
private int price2;
private int price3;
public String getTrainid() {
return trainid;
}
public String getDt() {
return dt;
}
public String getAt() {
return at;
}
public String getDs() {
return ds;
}
public String getAs() {
return as;
}
public int getStationnum() {
return stationnum;
}
public int getPrice3() {
return price3;
}
public int getPrice2() {
return price2;
}
public int getPrice1() {
return price1;
}
public void setTrainid(String trainid) {
this.trainid = trainid;
}
public void setAs(String as) {
this.as = as;
}
public void setAt(String at) {
this.at = at;
}
public void setDs(String ds) {
this.ds = ds;
}
public void setDt(String dt) {
this.dt = dt;
}
public void setStationnum(int stationnum) {
this.stationnum = stationnum;
}
public void setPrice1(int price1) {
this.price1 = price1;
}
public void setPrice2(int price2) {
this.price2 = price2;
}
public void setPrice3(int price3) {
this.price3 = price3;
}
public TrainInformation(){};
public TrainInformation(String trainid,String dt,String at,String ds,String as,int stationnum,int price1,int price2,int price3){
this.trainid = trainid;
this.dt = dt;
this.at = at;
this.ds = ds;
this.as = as;
this.stationnum = stationnum;
this.price1 = price1;
this.price2 = price2;
this.price3 = price3;
}
}
Test
public class Test {
public static void main(String[] args) {
MainFrame main = new MainFrame();
}
}