我们要做股票信息显示系统,要求:在股票服务器中存储一些列不同股票的基本信息,包括股票号码,股票类型,上市公司,股票价格。在客户端实时显示股票信息,并且要求股票价格要实时变化。
思考:我们首先想:需要建立一个股票类,添加好它的属性和方法,然后股票信息若要实时显示在客户端,就需要在服务器端存储股票信息并且当客户端需要时就要调取服务器的股票数据(这里需要一个调取的方法),在客户端显示是一个不间断的显示,因此需要一个死循环;并且股票其中的价格是不断变化的,因此需要用一个取随机数方法,并且把取到的数赋值给股票的价格(伪实现股票的浮动),最后可以在控制台不断显示出股票信息的变化。
步骤:
1.创建一个股票类,里面封装好它的各类信息,包括股票的属性(包括股票号码,股票类型,上市公司,股票价格),股票的方法(get/set方法和构造函数),属性要私有,方法要公有。
2.创建一个股票服务器类,当客户端需要调用股票信息时,就可以传递给客户端一组股票信息,因此需要在服务器添加一个获取股票类型数组的方法,这在里面存储着股票的基本信息,我们实例化一个股票类型的数组,把其中每一个股票数据都实例化(可以调用构造函数,也可以调用get/set方法),当调用时就可以传递该股票数组实例化的信息,需要提醒的是股票的价格是浮动的,因此我们需要一个获取随机数的方法:Random rm = new Random (),调用该类的一个获取随机数的方法:rm.nextInt(100),表示的是获取100以内的随机数。
3.创建一个股票客户端类,这个类需要实时显示股票浮动信息,因此需要调用服务器端的数据(通过一个获取方法),并且用到一个死循环来实现不断显示的效果,在这个死循环里,为了让效果更加清晰,我们用到了异常处理方法try{Thread.sleep(int relax);}catch(InterruptedException e){e.printStackTrace();break;},这段程序是每休息relax秒后运行一下,在每次运行的结尾,我们需要用for循环打印出来股票数组中每一个数据的基本信息,这样就实现了股票价格不断浮动显示的效果。
以下附该程序代码:
//定义一个股票类,里面可以用两种方法实现实例化信息(构造函数和set方法)
public class Stock {
public int id;
public String name;
public int price;
public char flag;
// public Stock(int id,String name,int price,char flag){
// this.id =id;
// this.name=name;
// this.price=price;
// this.flag=flag;
// }
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public char getFlag() {
return flag;
}
public void setFlag(char flag) {
this.flag = flag;
}
}
//定义一个股票服务器类
public class StockServer {
public static Stock[] getStock(){
Random r =new Random();
Stock [] sk =new Stock [7];
// sk[0]=new Stock(1,"IBM",10,'a');
// sk[1]=new Stock(2,"Orical",18,'a');
// sk[2]=new Stock(3,"Sun",14,'b');
// sk[3]=new Stock(4,"Microsoft",21,'b');
// sk[4]=new Stock(5,"Ubuntu",24,'c');
Stock s =new Stock();
s.setId(1);
s.setName("IBM");
s.setPrice(r.nextInt(100));
s.setFlag('a');
sk[0]=s;
Stock s1 =new Stock();
s1.setId(2);
s1.setName("Orical");
s1.setPrice(r.nextInt(100));
s1.setFlag('b');
sk[1]=s1;
Stock s2 =new Stock();
s2.setId(3);
s2.setName("Sun");
s2.setPrice(r.nextInt(100));
s2.setFlag('b');
sk[2]=s2;
Stock s3 =new Stock();
s3.setId(4);
s3.setName("Microsoft");
s3.setPrice(r.nextInt(100));
s3.setFlag('a');
sk[3]=s3;
Stock s4 =new Stock();
s4.setId(5);
s4.setName("中国石油");
s4.setPrice(r.nextInt(100));
s4.setFlag('c');
sk[4]=s4;
Stock s5 =new Stock();
s5.setId(6);
s5.setName("中国石化");
s5.setPrice(r.nextInt(100));
s5.setFlag('c');
sk[5]=s5;
Stock s6 =new Stock();
s6.setId(7);
s6.setName("同花顺");
s6.setPrice(r.nextInt(100));
s6.setFlag('d');
sk[6]=s6;
return sk;
}
}
//定义一个股票客户端类
public class StockClient {
public static void main(String [] args){
while (true){
Stock stock [] = StockServer.getStock();
for(int i=0;i<stock.length;i++){
System.out.println("股票号码:"+stock[i].getId()+" 股票类型:"+stock[i].getFlag()
+" 股票价格:"+stock[i].getPrice()+" 上市公司:"+stock[i].getName());
}
System.out.println();
try{
Thread.sleep(2*1000);
}
catch(InterruptedException e){
e.printStackTrace();
break;
}
}
}
}
最后,我们看看运行的效果: