java南昌地铁票价查询
江西理工大学
大学计算机基础实验报告
课程名称: JAVA基础入门 实验名称: 简易地铁票价查询 班 级: 14物联网
姓 名: 学 号:
教 师:
日 期: 2016.6.5
江西理工大学南昌(校区)教务部印
实验
目: 简易的南昌地铁票价查询程序
一、实验目的
1.让学生复习课堂中学到的有关JAVA.GUI的知识,并进行巩固和提高,更深入的理解awt和SWING等GUI方法。
2.增强学生的动手操作能力,使在理解的基础上巩固和提高对GUI中各种方法的掌握能力,为以后的学习实践打下良好的基础。
二、实验
1.设计地铁票价查询程序。
2.编写程序。
3.调试程序。
4.完成实验报告。
三、 设计与编码
1.根据实验要求,本系统界面应包括至少一个文本框,两个下拉框,一个按钮。 可采用awt和swing方法。
2.算法设计
设计两个类field1和field2来用于对文本框的操作,类comboBox1和comboBox2用于创建下拉框,类chaxun用于实现按钮“查询”。
3.代码实现:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class test extends JFrame{
JComboBox comboBox1,comboBox2;
JTextField field1,field2;
JTextField go;
JTextField back;
JButton chaxun=new JButton("查询");
public test(){
JPanel panel=new JPanel();
comboBox1=new JComboBox();
comboBox2=new JComboBox();
field1=new JTextField(10);
field2=new JTextField(10);
chaxun=new JButton("查询");
go=new JTextField(10);
back=new JTextField(10);
this.add(comboBox1);
this.add(comboBox2);
this.add(field1);
this.add(field2);
this.add(chaxun);
this.add(go);
this.add(back);
field1.setEditable(false);
field2.setEditable(false);
this.setLayout(null);
this.setSize(400,300);
comboBox1.setBounds(60,100,140,40);
comboBox2.setBounds(260,100,140,40);
field1.setBounds(0,0,100,100);
field2.setBounds(100,0,100,100);
chaxun.setBounds(220,220,80,30);
go.setBounds(0, 100, 60, 40);
back.setBounds(200, 100, 60, 40);
go.setText("出发站");
back.setText("终点站");
field1.setText("票价为:");
field1.setFont(new Font("宋体", Font.PLAIN, 28));
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
final double []a={0,1.2,3,1.1,1.5,0.8,1.2,1,0.8,1.9,0.9,0.6,
1.1,1,1,0.8,0.9,0.8,1.1,1.2,2,1.7,1.4,1.3 };
final String []b={
"双港站","蛟桥站","长江路站","珠江路站","庐山南大道站","绿茵路
站",
"会展路站","地铁大厦站","秋水广场站","滕王阁站","万寿宫站","八一馆站",
"八一广场站","丁公路北站","文教路南站","彭家桥站","谢家村站","青山湖大道站",
"高新大道站","艾溪湖西站","艾溪湖东站","太子殿站","奥体中心站","瑶湖西站"};
final double []c=new double [24];
c[0]=a[0];
for(int i=1;i<24;i++){
c[i]=c[i-1]+a[i];
};
comboBox1.addItem("请选择出发站");
for(int i=0;i<24;i++){
comboBox1.addItem(b[i]);}
comboBox2.addItem("请选择终点站");
for(int i=0;i<24;i++){
comboBox2.addItem(b[i]);};
chaxun.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
final String item1=(String) comboBox1.getSelectedItem();
final String item2=(String) comboBox2.getSelectedItem();
if("请选择出发站".equals(item1))
{
field2.setText("");
}
else
{
double x=0,y=0;
for(int i=0;i<24;i++){
if(item1.equals(b[i]))
x=c[i];
}
for(int i=0;i<24;i++){
if(item2.equals(b[i]))
y=c[i];
}
int money=0;
if(Math.abs(x-y)<=6&&Math.abs(x-y)>0) money=2;
if(Math.abs(x-y)>6&&Math.abs(x-y)<=12) money=3;
if(Math.abs(x-y)>12&&Math.abs(x-y)<=20) money=4;
if(Math.abs(x-y)>20&&Math.abs(x-y)<=28) money=5;
if(Math.abs(x-y)>28) money=(int)Math.ceil(((Math.abs(x-y)-28)/10)+5);
if(Math.abs(x-y)==0) money=0;
field2.setText(money+"元");
field2.setFont(new Font("宋体", Font.PLAIN, 28));
field2.setForeground(Color.RED);
}
}
});
}
public static void main(String [] args){
new test();
}
}
四、运行与测试
运行test.java
结果如下
?无事件时
?有事件如下拉框1设置为“双港站”,下拉框2设置为“瑶湖西站”
时
五、
与心得
这次实验花了很大的时间才完成,主要原因是对事件监听机制以及界面布局的处理过于生疏,导致了实验在进行到对按钮和下拉框的监听以及在处理界面布局时时出现了许多错误,浪费了很多时间。虽然经过百度等网络最终解决了其中大部分的问题。但是仍然暴露出对专业知识把握不够细致,对编程方法理解得不够深刻等问题。