rmsstreamoperation.java

来自「java手机程序开发随书光盘源代码」· Java 代码 · 共 180 行

JAVA
180
字号
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.rms.*;
import java.io.*;

public class RMSStreamOperation extends MIDlet implements CommandListener{

	Display display;
	RecordStore stockStore = null;
	Alert displayData;
	List stockList;
	Form addStock;
	TextField stockName, boughtPrice, soldPrice, stockUnits;
	Command exitCmd, addCmd, okCmd,backCmd;

	public RMSStreamOperation(){
		display = Display.getDisplay(this);
		try{
			stockStore = RecordStore.openRecordStore("stock", true);
		}
		catch(Exception ex){}
		stockList = new List("股票选单", Choice.IMPLICIT);
		exitCmd = new Command("退出", Command.EXIT, 1);
		addCmd = new Command("新增", Command.SCREEN, 1);
		stockList.addCommand(exitCmd);
		stockList.addCommand(addCmd);
		stockList.setCommandListener(this);
		addStock = new Form("新增一笔");
		stockName = new TextField("股票名称","",20, TextField.ANY);
		boughtPrice = new TextField("买进价格","",10, TextField.NUMERIC);
		soldPrice = new TextField("卖出价格","",10, TextField.NUMERIC);
		stockUnits = new TextField("交易张数","",10, TextField.NUMERIC);
		addStock.append(stockName);
		addStock.append(boughtPrice);
		addStock.append(soldPrice);
		addStock.append(stockUnits);
		okCmd = new Command("确定", Command.OK, 1);
		backCmd = new Command("返回", Command.BACK, 1);
		addStock.addCommand(okCmd);
		addStock.addCommand(backCmd);
		addStock.setCommandListener(this);
		displayData = new Alert("详细资料");
	}

	public void startApp(){
		initData();
		display.setCurrent(stockList);
	}

	private void initData(){
		try{
			for(int i=1;i<stockStore.getNextRecordID();i++){
				StockData data = new StockData();
				data.readFromRecord(stockStore, i);
				stockList.append(data.name, null);
			}
		}
		catch(Exception ex){}
	}

	public void pauseApp(){
	}

	public void destroyApp(boolean unconditional){
		try{
			stockStore.closeRecordStore();
		}catch(Exception ex){}
	}

	public void commandAction(Command c, Displayable d){
		if(c == exitCmd){
			destroyApp(true);
			notifyDestroyed();
		}
		else if(c == addCmd){
			stockName.setString(null);
			boughtPrice.setString(null);
			soldPrice.setString(null);
			stockUnits.setString(null);
			display.setCurrent(addStock);
		}
		else if(c == List.SELECT_COMMAND){
			int index = stockList.getSelectedIndex();
			StockData data = new StockData();
			data.readFromRecord(stockStore, index+1);
			displayData.setString(data.toString());
			display.setCurrent(displayData);
		}
		else if(c == okCmd){
			saveData();
			StockData data = new StockData();
			try{
				data.readFromRecord(stockStore, stockStore.getNextRecordID()-1);
				stockList.append(data.name, null);
			}
			catch(Exception ex){}
			display.setCurrent(stockList);
		}
	}

	private void saveData(){
		String name = stockName.getString();
		int bought = 0, sold = 0, units = 0;
		if(boughtPrice.getString() != null)
			bought = Integer.parseInt(boughtPrice.getString());
		if(soldPrice.getString() != null)
			sold = Integer.parseInt(soldPrice.getString());
		if(stockUnits.getString() != null)
			units = Integer.parseInt(stockUnits.getString());
		StockData data = new StockData(name, bought, sold, units);
		data.writeToRecord(stockStore);
	}

}

class StockData{

	String name;
	int boughtPrice;
	int soldPrice;
	int units;
	boolean isSold;
	int recordID;

	public StockData(){
	}

	public StockData(String name, int boughtPrice, int soldPrice, int units){
		this.name = name;
		this.boughtPrice = boughtPrice;
		this.soldPrice = soldPrice;
		this.units = units;
		isSold = (soldPrice>0?true:false);
	}

	public void writeToRecord(RecordStore rs){
		byte[] stock = null;
		try{
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			DataOutputStream dos = new DataOutputStream(baos);
			dos.writeUTF(name);
			dos.writeInt(boughtPrice);
			dos.writeInt(soldPrice);
			dos.writeInt(units);
			dos.writeBoolean(isSold);
			stock = baos.toByteArray();
			recordID = rs.addRecord(stock, 0, stock.length);
			baos.close();
			dos.close();
		}
		catch(Exception ex){
		}
	}

	public void readFromRecord(RecordStore rs, int RecordID){
		try{
			byte[] data = rs.getRecord(RecordID);
			ByteArrayInputStream bais = new ByteArrayInputStream(data);
			DataInputStream dis = new DataInputStream(bais);
			name = new String(dis.readUTF());
			boughtPrice = dis.readInt();
			soldPrice = dis.readInt();
			units = dis.readInt();
			isSold = dis.readBoolean();
			bais.close();
			dis.close();
		}
		catch(Exception ex){}
	}

	public String toString(){
		String stockString = "股票名称:"+name+"\n"+
		               		 "买进价格:"+boughtPrice+"じ\n"+
		              		 "卖出价格:"+soldPrice+"じ\n"+
		               		 "交易张数:"+units+"眎\n"+
		               		 "获利金额:"+((soldPrice-boughtPrice)*1000)+"元";
		return stockString;
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?