这里写目录标题
主要介绍
本程序包含以下类
主要代码
1、<< abstract >> Train
public abstract class Train
{
private String trainId;
private String sourceAdd;
private String purposeAdd;
private String startTime;
private String endTime;
private String date;
Train(String trainId,String sourceAdd,String purposeAdd,String startTime,String endTime,String date){
this.trainId = trainId;
this.sourceAdd = sourceAdd;
this.purposeAdd = purposeAdd;
this.startTime = startTime;
this.endTime = endTime;
this.date = date;
}
String getTrainId(){
return trainId;
}
String getSourceAdd(){
return sourceAdd;
}
String getpurposeAdd(){
return purposeAdd;
}
String getstartTime(){
return startTime;
}
String getendTime(){
return endTime;
}
String getDate(){
return date;
}
abstract void setSeatPrice(double[] n);
abstract String getSeatTypeAndPrice(int number);
abstract int getTicketNumber(int number);
}
2、KTrain、DTrain、GTrain
KTrain
public class KTrain extends Train
{
private String[] seatType = new String[4];
private double[] seatPrice;
private int[] ticketNumber;
KTrain(String trainId,String sourceAdd,String purposeAdd,String startTime,String endTime,double[] seatPrice,String date,int[] ticketNumber){
super(trainId,sourceAdd,purposeAdd,startTime,endTime,date);
this.seatPrice = seatPrice;
this.ticketNumber = ticketNumber;
seatType[0] = "硬座";seatType[1] = "硬卧";seatType[2] = "软卧";seatType[3] = "无座";
}
void setSeatPrice(double[] seatPrice){
this.seatPrice = seatPrice;
}
String getSeatTypeAndPrice(int number){
String str = seatType[number] + " 价格:" + seatPrice[number];
return str;
}
int getTicketNumber(int number){
return ticketNumber[number];
}
}
DTrain
public class DTrain extends Train
{
private String[] seatType = new String[3];
private double[] seatPrice;
private int[] ticketNumber;
DTrain(String trainId,String sourceAdd,String purposeAdd,String startTime,String endTime,double[] seatPrice,String date,int[] ticketNumber){
super(trainId,sourceAdd,purposeAdd,startTime,endTime,date);
this.seatPrice = seatPrice;
this.ticketNumber = ticketNumber;
seatType[0] = "一等座";seatType[1] = "二等座";seatType[2] = "无座";
}
void setSeatPrice(double[] seatPrice){
this.seatPrice = seatPrice;
}
String getSeatTypeAndPrice(int number){
String str = seatType[number] + " 价格:" + seatPrice[number];
return str;
}
int getTicketNumber(int number){
return ticketNumber[number];
}
}
GTrain
public class GTrain extends Train
{
private String[] seatType = new String[3];
private double[] seatPrice;
private int[] ticketNumber;
GTrain(String trainId,String sourceAdd,String purposeAdd,String startTime,String endTime,double[] seatPrice,String date,int[] ticketNumber){
super(trainId,sourceAdd,purposeAdd,startTime,endTime,date);
this.seatPrice = seatPrice;
this.ticketNumber = ticketNumber;
seatType[0] = "特等座";seatType[1] = "一等座";seatType[2] = "二等座";
}
void setSeatPrice(double[] seatPrice){
this.seatPrice = seatPrice;
}
String getSeatTypeAndPrice(int number){
String str = seatType[number] + " 价格:" + seatPrice[number];
return str;
}
int getTicketNumber(int number){
return ticketNumber[number];
}
}
3、TrainList
import java.util.*;
public class TrainList
{
private List<Train> trainList;
public TrainList(){
trainList = new ArrayList<Train>();
addSomeInfo();
}
public int getsize(){
return trainList.size();
}
public Train getTrain(int index){
if(index < 0 || index >= trainList.size()){
return null;
}
return trainList.get(index);
}
public void addSomeInfo(){
Train train;
double[] DGseatPrice = new double[3];
double[] KseatPrice = new double[4];
int[] DGticket = new int[3];
int[] Kticket = new int[4];
DGseatPrice[0] = 207.0;DGseatPrice[1] = 129.5;DGseatPrice[2] = 129.5;
DGticket[0] = 100;DGticket[1] = 876;DGticket[2] = 321;
train = new DTrain("D1782","南宁东","桂林北","07:06","09:54",DGseatPrice,"2020-12-17",DGticket);
trainList.add(train);
KseatPrice[0] = 152.5;KseatPrice[1] = 261.5;KseatPrice[2] = 409.5;KseatPrice[3] = 152.5;
Kticket[0] = 987;Kticket[1] = 200;Kticket[2] = 521;Kticket[3] = 327;
train = new KTrain("K142","南宁","重庆西","18:15","08:54(+1)",KseatPrice,"2020-12-17",Kticket);
trainList.add(train);
DGseatPrice[0] = 1019;DGseatPrice[1] = 882;DGseatPrice[2] = 541.5;
DGticket[0] = 99;DGticket[1] = 268;DGticket[2] = 827;
train = new GTrain("G381","北京南","哈尔滨西","07:54","14:31",DGseatPrice,"2020-12-17",DGticket);
trainList.add(train);
}
}
4、CheckAllTicket
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.*;
public class CheckAllTicket extends JFrame
{
//所需参数
private String userName;
private TrainList userList;
private DefaultTableModel model = null;
String[][] datas = new String[20][8];
/*所需所有组件*/
//表格
private JTable showAllTicketTable;
//容器
private JPanel topTitle = new JPanel();
private JScrollPane tablePanel;
private JPanel bottom = new JPanel();
//标签
private JLabel topTitleLabel = new JLabel("所有票源");
//按钮
private JButton exitButton = new JButton("返回");
private JButton searchButton = new JButton("搜索");
private JButton buyButton = new JButton("购买");
//构造函数
CheckAllTicket(String userName){
this.userName = userName;
LoadingInterface();//加载界面
}
void LoadingInterface(){
//初始化整个界面
setTitle("查看所有票源");
setLocation(500,300);
setSize(850,600);
setLayout(new GridLayout(1,1));
//顶部容器初始化
Font fnt = new Font("宋体", Font.PLAIN + Font.BOLD, 40);
topTitleLabel.setFont(fnt);
topTitle.setLayout(new FlowLayout());
topTitle.add(topTitleLabel);
add(topTitle);
//底部表格初始化
setdatas();//设置数据
String[] titles = {
"车次号","起始地址","目的地址","发车时间","到达时间","发车日期","座次及价格","余票","操作"};
model = new DefaultTableModel(datas,titles);
showAllTicketTable = new JTable(model);
showAllTicketTable.setEnabled(false);
int columncount = this.showAllTicketTable.getColumnCount();
int[] length = {
90,120,120,120,120,150,200,50,150};
for(int i = 0;i < columncount;i++){
showAllTicketTable.getColumnModel().getColumn(i).setPreferredWidth(length[i]);
}
showAllTicketTable.setRowHeight(30);
tablePanel = new JScrollPane(showAllTicketTable){
@Override
public Dimension getPreferredSize(){
return new Dimension(800,400);
}
};
topTitle.add(tablePanel);
//做底部的两个按钮
topTitle.add(exitButton);
topTitle.add(searchButton);
//绑定监听事件,测试本代码可以去掉这个函数
exitButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
new TBAFM(userName);
dispose();
}
});
setVisible(true);
}
void setdatas(){
userList = new TrainList();
int i = 0,j = 0;
int tempnumber = i;
for(i = 0;i < 10;i++){
datas[i][j++] = userList.getTrain(tempnumber).getTrainId();
datas[i][j++] = userList.getTrain(tempnumber).getSourceAdd();
datas[i][j++] = userList.getTrain(tempnumber).getpurposeAdd();
datas[i][j++] = userList.getTrain(tempnumber).getstartTime();
datas[i][j++] = userList.getTrain(tempnumber).getendTime();
datas[i][j++] = userList.getTrain(tempnumber).getDate();
char tempchar = userList.getTrain(tempnumber).getTrainId().charAt(0);
if( tempchar == 'D' || tempchar == 'G'){
datas[i][j] = userList.getTrain(tempnumber).getSeatTypeAndPrice(0);
datas[i][j + 1] = Integer.toString(userList.getTrain(tempnumber).getTicketNumber(0));
datas[++i][j] = userList.getTrain(tempnumber).getSeatTypeAndPrice(1);
datas[i][j + 1] = Integer.toString(userList.getTrain(tempnumber).getTicketNumber(1));
datas[++i][j] = userList.getTrain(tempnumber).getSeatTypeAndPrice(2);
datas[i][j + 1] = Integer.toString(userList.getTrain(tempnumber).getTicketNumber(2));
}
else{
datas[i][j] = userList.getTrain(tempnumber).getSeatTypeAndPrice(0);
datas[i][j + 1] = Integer.toString(userList.getTrain(tempnumber).getTicketNumber(0));
datas[++i][j] = userList.getTrain(tempnumber).getSeatTypeAndPrice(1);
datas[i][j + 1] = Integer.toString(userList.getTrain(tempnumber).getTicketNumber(1));
datas[++i][j] = userList.getTrain(tempnumber).getSeatTypeAndPrice(2);
datas[i][j + 1] = Integer.toString(userList.getTrain(tempnumber).getTicketNumber(2));
datas[++i][j] = userList.getTrain(tempnumber).getSeatTypeAndPrice(3);
datas[i][j + 1] = Integer.toString(userList.getTrain(tempnumber).getTicketNumber(3));
}
j = 0;
tempnumber++;
}
/*for(i = 0;i <datas.length;i++){
showAllTicketTable.getColumnModel().getColumn(8).setCellRenderer(new TableCellRenderer(){
@Override
public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column){
return buyButton;
}
});*/
}
}
}
测试结果
说明
主要展示的是JTable的使用,搜索等功能目前暂未实现。