备注:第一个java程序有借鉴别人的成分,因为忘了在哪个大佬上面借鉴的,所以在此备注,如有侵权,请联系删除,(仅用于学习使用,并未想盈利)
框体介绍 一共分为3个类AirInfo,AirInfoManager,TestAirInfo, 第一个类是对象类,存储航班信息,第二个类是操作类,负责对航班信息进行操作,第三个类是测试类,也是主类,用于执行程序。
思路:在主类中先创建对象,创建对象就要有定义对象操作,即产生了AirInfo对象类,在主类中创立对象后,就要实现对这些信息的操作,所以产生了AirInfoManager操作类,专门存储对AirInfo对象的操作,当然AirInfoManager也是一个对象,所以在主类中也要创建对象。这里要注意的是为了使 操作类 确定 操作的对象,所以AirInfoManager需要传入一个实参。
代码 第一个类AirInfo如下:
public class AirInfo { //设置id(编号) private int id; //设置flight_number(航班号) private String flight_number; //设置destination(地点) private String destination; //设置flight_date(飞行日期) private String flight_date; public AirInfo(final int id, final String flight_number, final String destination, final String flight_date) { this.id = id; this.flight_number = flight_number; this.destination = destination; this.flight_date = flight_date; } public int getId() { return id; } public void setId(final int id) { this.id = id; } public String getFlight_number() { return flight_number; } public void setFlight_number(final String flight_number) { this.flight_number = flight_number; } public String getDestination() { return destination; } public void setDestination(final String destination) { this.destination = destination; } public String getFlight_date() { return flight_date; } public void setFlight_date(final String flight_date) { this.flight_date = flight_date; } }第二个类 AirInfoManager 代码如下
import java.util.*; public class AirInfoManager { //列出所有航班的方法 public void all_flight(ArrayList<AirInfo> flight){ System.out.println("编号\t航班号\t目的地\t 起飞日期"); for(AirInfo e:flight) System.out.println(e.getId()+"\t"+e.getFlight_number()+"\t"+e.getDestination()+" "+e.getFlight_date()); } //按起飞时间查询的方法 public void inquiry_date(ArrayList<AirInfo> flight){ System.out.print("请输入日期:"); Scanner in=new Scanner(System.in); String date=in.next(); for(AirInfo e:flight) { if(e.getFlight_date().equals(date)){ System.out.println("编号\t 航班号\t目的地\t\t起飞日期"); System.out.println(e.getId()+"\t"+e.getFlight_number()+"\t"+e.getDestination()+" "+e.getFlight_date()); } } } //按目的地查询的方法 public void inquiry_destination(ArrayList<AirInfo> flight){ System.out.print("请输入目的地:"); Scanner in=new Scanner(System.in); String destination=in.next(); for(AirInfo e:flight) { if(e.getDestination().equals(destination)){ System.out.println("编号\t 航班号\t目的地\t\t起飞日期"); System.out.println(e.getId()+"\t"+e.getFlight_number()+"\t"+e.getDestination()+" "+e.getFlight_date()); } } } //删除航班的方法 // 用removeAll(Collection<?> c)方法将其删除 public void delete_flight(ArrayList<AirInfo> flight){ System.out.print("请输入需要删除的航班编号:"); Scanner in=new Scanner(System.in); List delList = new ArrayList(); int id=in.nextInt(); for(AirInfo e:flight) { if(e.getId()==(id)) delList.add(e); } flight.removeAll(delList); System.out.println("删除成功!"); } //更新航班的方法 public void update_flight(ArrayList<AirInfo> flight){ Scanner in=new Scanner(System.in); int id; String flight_number,destinaton,flight_date; System.out.print("请输入需要更新的航班编码:"); id=in.nextInt(); System.out.print("请输入新的航班号:"); flight_number=in.next(); System.out.print("请输入新的目的地:"); destinaton=in.next(); System.out.print("请输入新的起飞时间:"); flight_date=in.next(); flight.add(new AirInfo(id,flight_number,destinaton,flight_date)); System.out.println("更新成功!"); } //退出系统的方法 public void exit(){ System.out.println("成功退出系统!"); System.exit(0); } }第三个类 TestAirInfo
import java.util.ArrayList; import java.util.Scanner; public class TestAirInfo { public static void main(String[] args) { AirInfoManager airInfoManager=new AirInfoManager(); //用Arraylist表示航班信息 ArrayList<AirInfo> flight=new ArrayList<>(); //为数组增加记录 flight.add(new AirInfo(1,"001","beijing","2016-1-1")); flight.add(new AirInfo(2,"002","shanghai","2016-2-20")); flight.add(new AirInfo(3,"003","guangzhou","2016-2-24")); Scanner in=new Scanner(System.in); while(true){ System.out.print("请选择操作(1.列出所有航班,2.按起飞时间查询,3.按目的地查询,4.删除航班,5.更新航班,6.退出系统)"); switch(in.nextInt()){ case 1: airInfoManager.all_flight(flight); break; case 2: airInfoManager.inquiry_date(flight); break; case 3: airInfoManager.inquiry_destination(flight); break; case 4: airInfoManager.delete_flight(flight); break; case 5: airInfoManager.update_flight(flight); break; case 6: airInfoManager.exit(); default:System.out.println("对不起,您输入的数字无效。请输入1~6之间的数字:"); } System.out.println(); } } } 运行操作 在eclipse中创建3个类,名字分别名为AirInfo,AirInfoManager,TestAirInfo。然后将相应的代码粘贴然后运行即可。卑微小白 。。。。。。。。。我是分割线。。。。。。。。。。。。。。。。好长。。。。。。。。。。。啊啊。。。。。。。。。。。。。。。。。。
1. 框架: 一共有4个类AirInfo(和原来的那个一样),AirInfoManager(和原来的那个不一样),frame1,Main 。frame1是主图像框,AirinfoManager是方法类,其中还包含了窗口,主方法中创建对象,产生了实参,还有建立了一个ArrayList数组存储AirInfo对象,这个ArrayList数组创建的名字(实参)是flight.在方法类中使用ArrayList的.add和.removeall方法进行添加和删除对象。用.getText方法获取文本域中的内容 2.代码
AirInfo类
package upair; public class AirInfo { private String id; private String flight_number; private String destination; private String flight_date; public AirInfo(final String id, final String flight_number, final String destination, final String flight_date) { this.id = id; this.flight_number = flight_number; this.destination = destination; this.flight_date = flight_date; } public AirInfo() { // TODO 自动生成的构造函数存根 } public String getId() { return id; } public void setId(final String id) { this.id = id; } public String getFlight_number() { return flight_number; } public void setFlight_number(final String flight_number) { this.flight_number = flight_number; } public String getDestination() { return destination; } public void setDestination(final String destination) { this.destination = destination; } public String getFlight_date() { return flight_date; } public void setFlight_date(final String flight_date) { this.flight_date = flight_date; } }AirInfoManager类
package upair; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.*; import javax.swing.*; public class AirInfoManager extends JFrame { // 列出所有航班的方法 public void all_flight(ArrayList<AirInfo> flight) { // !---设置窗口j JFrame f1 = new JFrame("所有航班显示如下"); f1.setBackground(Color.GRAY); f1.setBounds(300, 200, 510, 500); f1.setVisible(true); f1.setResizable(false); //设置窗口关闭规则 f1.setDefaultCloseOperation(f1.DISPOSE_ON_CLOSE); // !====设置窗口 // 设置容器c1 Container c1 = f1.getContentPane(); //设置流布局样式 c1.setLayout(new FlowLayout(1, 30, 20)); JButton j1 = new JButton("编号"); JButton j2 = new JButton("航班号"); JButton j3 = new JButton("目的地"); JButton j4 = new JButton("起飞日期"); c1.add(j1); c1.add(j2); c1.add(j3); c1.add(j4); // 设置容器c2 Container c2 = f1.getContentPane(); for (AirInfo a : flight) { c1.add(new JLabel("编号是:" + a.getId())); c1.add(new JLabel("航班号是:" + a.getFlight_number())); c1.add(new JLabel("目的地是:" + a.getDestination())); c1.add(new JLabel("起飞日期是:" + a.getFlight_date())); } // !==== } // 按起飞时间查询的方法 public void inquiry_date(ArrayList<AirInfo> flight) { // 设置窗口 JFrame f2 = new JFrame("查询窗口"); f2.setVisible(true); f2.setDefaultCloseOperation(DISPOSE_ON_CLOSE); f2.setBounds(300, 200, 510, 500); // 设置容器 Container c1 = f2.getContentPane(); c1.setLayout(new FlowLayout()); JLabel j1 = new JLabel("请输入查询的起飞时间:"); j1.setFont(new Font("楷体", Font.PLAIN, 20)); JTextArea ta1 = new JTextArea("", 1, 10); c1.add(j1); c1.add(ta1); // 设置按钮 Container c2 = f2.getContentPane(); c2.setLayout(new FlowLayout()); JButton j2 = new JButton("确定"); c2.add(j2); // 设置监控 j2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { /* 用文本域的.getText方法得到文本域中的内容,注意这一行代码的位置,要放在监控里面,即 点击完j2之后才得到文本域中的内容 */ String s = ta1.getText(); // 创建窗口 JFrame ff2 = new JFrame("查询结果:"); ff2.setDefaultCloseOperation(DISPOSE_ON_CLOSE); ff2.setBounds(300, 200, 510, 500); ff2.setVisible(true); // 创建容器 Container c1 = ff2.getContentPane(); c1.setLayout(new FlowLayout(1, 30, 20)); // 创建标签 JButton j1 = new JButton("编号"); JButton j2 = new JButton("航班号"); JButton j3 = new JButton("起飞目的地"); JButton j4 = new JButton("起飞日期"); c1.add(j1); c1.add(j2); c1.add(j3); c1.add(j4); // 查询 Container c2 = ff2.getContentPane(); for (AirInfo a : flight) { if (a.getFlight_date().equals(s)) { JLabel j5 = new JLabel("编号是: " + a.getId()); JLabel j6 = new JLabel("航班号: " + a.getFlight_number()); JLabel j7 = new JLabel("起飞目的地: " + a.getDestination()); JLabel j8 = new JLabel("起飞日期: " + a.getFlight_date()); c2.add(j5); c2.add(j6); c2.add(j7); c2.add(j8); } } } }); } // 按目的地查询的方法 public void inquiry_destination(ArrayList<AirInfo> flight) { // 设置窗口 JFrame f2 = new JFrame("查询窗口"); f2.setVisible(true); f2.setDefaultCloseOperation(DISPOSE_ON_CLOSE); f2.setBounds(300, 200, 510, 500); // 设置容器 Container c1 = f2.getContentPane(); c1.setLayout(new FlowLayout()); JLabel j1 = new JLabel("请输入查询的目的地:"); j1.setFont(new Font("楷体", Font.PLAIN, 20)); JTextArea ta1 = new JTextArea("", 1, 10); c1.add(j1); c1.add(ta1); // 设置按钮 Container c2 = f2.getContentPane(); c2.setLayout(new FlowLayout()); JButton j2 = new JButton("确定"); c2.add(j2); // 设置监控 j2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String s = ta1.getText(); // 创建窗口 JFrame ff2 = new JFrame("查询结果:"); ff2.setDefaultCloseOperation(DISPOSE_ON_CLOSE); ff2.setBounds(300, 200, 510, 500); ff2.setVisible(true); // 创建容器 Container c1 = ff2.getContentPane(); c1.setLayout(new FlowLayout(1, 30, 20)); // 创建标签 JButton j1 = new JButton("编号"); JButton j2 = new JButton("航班号"); JButton j3 = new JButton("起飞目的地"); JButton j4 = new JButton("起飞日期"); c1.add(j1); c1.add(j2); c1.add(j3); c1.add(j4); // 查询 Container c2 = ff2.getContentPane(); for (AirInfo a : flight) { if (a.getDestination().equals(s)) { JLabel j5 = new JLabel("编号是: " + a.getId()); JLabel j6 = new JLabel("航班号: " + a.getFlight_number()); JLabel j7 = new JLabel("起飞目的地: " + a.getDestination()); JLabel j8 = new JLabel("起飞日期: " + a.getFlight_date()); c2.add(j5); c2.add(j6); c2.add(j7); c2.add(j8); } } } }); } // 删除航班的方法 public void delete_flight(ArrayList<AirInfo> flight) { // 创建窗体 JFrame f4 = new JFrame("请在下表中填入删除的信息: "); f4.setVisible(true); f4.setDefaultCloseOperation(DISPOSE_ON_CLOSE); f4.setBounds(300, 200, 400, 500); f4.setResizable(false); // 创建容器 Container c1 = f4.getContentPane(); c1.setLayout(new FlowLayout(FlowLayout.LEFT)); // 创建标签 JLabel j1 = new JLabel("请输入需要删除的航班班号:"); c1.add(j1); JTextArea ta1 = new JTextArea("", 1, 10); c1.add(ta1); // 创建容器 Container c2 = f4.getContentPane(); JButton j2 = new JButton("确定"); c2.add(j2); // 创建监控 j2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = ta1.getText(); ArrayList<AirInfo> ls = new ArrayList<>(); for (AirInfo a4 : flight) { if (a4.getId().equals(s)) { ls.add(a4); } } flight.removeAll(ls); JFrame ff4 = new JFrame("这是新窗口"); ff4.setVisible(true); ff4.setBounds(200, 200, 300, 300); ff4.setDefaultCloseOperation(ff4.DISPOSE_ON_CLOSE); Container c3 = ff4.getContentPane(); JLabel jl1 = new JLabel(" 删除成功"); jl1.setFont(new Font("楷体", Font.PLAIN, 35)); ff4.setResizable(false); c3.add(jl1); } }); } // 添加航班的方法 public void update_flight(ArrayList<AirInfo> flight) { // 创建窗口 JFrame f5 = new JFrame("请在下表中添加航班: "); f5.setVisible(true); f5.setDefaultCloseOperation(DISPOSE_ON_CLOSE); f5.setBounds(300, 200, 400, 500); f5.setResizable(false); // 创建容器 Container c1 = f5.getContentPane(); c1.setLayout(new FlowLayout(FlowLayout.LEFT)); JLabel jj1 = new JLabel("请输入需要添加的航班编号:"); jj1.setFont(new Font("楷体", Font.PLAIN, 20)); c1.add(jj1); JTextArea ta1 = new JTextArea("", 1, 10); c1.add(ta1); // 创建标签 JLabel jj2 = new JLabel("请输入新添加的航班号:"); jj2.setFont(new Font("楷体", Font.PLAIN, 20)); c1.add(jj2); JTextArea ta2 = new JTextArea("", 1, 10); c1.add(ta2); // 创建标签 JLabel jj3 = new JLabel("请输入新添加的目的地:"); jj3.setFont(new Font("楷体", Font.PLAIN, 20)); c1.add(jj3); JTextArea ta3 = new JTextArea("", 1, 10); c1.add(ta3); // 创建标签 JLabel jj4 = new JLabel("请输入新添加的起飞时间:"); jj4.setFont(new Font("楷体", Font.PLAIN, 20)); c1.add(jj4); JTextArea ta4 = new JTextArea("", 1, 10); c1.add(ta4); // 创建按钮 Container c2 = f5.getContentPane(); c2.setLayout(new FlowLayout()); JButton jj5 = new JButton("确定"); jj5.setFont(new Font("楷体", Font.PLAIN, 20)); c2.add(jj5); // 监控触发窗口 jj5.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // 神奇的位置 AirInfo air = new AirInfo(ta1.getText(), ta2.getText(), ta3.getText(), ta4.getText()); flight.add(air); // // 创建窗口 JFrame ff5 = new JFrame("这是新窗口"); ff5.setVisible(true); ff5.setBounds(200, 200, 300, 300); ff5.setDefaultCloseOperation(ff5.DISPOSE_ON_CLOSE); Container c3 = ff5.getContentPane(); JLabel jl1 = new JLabel(" 修改成功"); jl1.setFont(new Font("楷体", Font.PLAIN, 35)); ff5.setResizable(false); c3.add(jl1); } }); } // 退出系统的方法 public void exit() { System.exit(0); } }frame1类
package upair; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.*; public class frame1 { public frame1(ArrayList<AirInfo> flight, AirInfoManager airInfoManager) { // !----1最外层背景j JFrame j = new JFrame("航班记录查询系统"); j.setBounds(500, 200, 450, 500); j.setBackground(Color.CYAN); j.setVisible(true); j.setDefaultCloseOperation(j.DISPOSE_ON_CLOSE); j.setResizable(false); // !====1 // !----2容器c1 Container c1 = j.getContentPane(); c1.setLayout(new GridLayout(6, 6)); // !====2 // !----3设立6个按钮 JButton j1 = new JButton("列出所有航班"); j1.setFont(new Font("楷体", Font.PLAIN, 30)); JButton j2 = new JButton("按起飞日期查询"); j2.setFont(new Font("楷体", Font.PLAIN, 30)); JButton j3 = new JButton("按目的地查询"); j3.setFont(new Font("楷体", Font.PLAIN, 30)); JButton j4 = new JButton("删除航班"); j4.setFont(new Font("楷体", Font.PLAIN, 30)); JButton j5 = new JButton("添加航班"); j5.setFont(new Font("楷体", Font.PLAIN, 30)); JButton j6 = new JButton("退出系统"); j6.setFont(new Font("楷体", Font.PLAIN, 30)); c1.add(j1); c1.add(j2); c1.add(j3); c1.add(j4); c1.add(j5); c1.add(j6); c1.validate(); // !====3 // ----4监控 // 1 j1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { airInfoManager.all_flight(flight); } }); // 2 j2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { airInfoManager.inquiry_date(flight); } }); // 3 j3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { airInfoManager.inquiry_destination(flight); } }); j4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { airInfoManager.delete_flight(flight); } }); j5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { airInfoManager.update_flight(flight); } }); j6.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { airInfoManager.exit(); } }); // ====4 } }Main类
package upair; import java.util.ArrayList; public class Main { public static void main(String[] args) { ArrayList<AirInfo> flight = new ArrayList<>(10); AirInfoManager airInfoManager = new AirInfoManager(); frame1 f = new frame1(flight, airInfoManager); flight.add(new AirInfo("001", "A-32", "北京", "2020-7-3")); flight.add(new AirInfo("002", "B-14", "郑州", "2020-7-4")); } }卑微小白