張生工作室

          一切皆有可能

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            24 隨筆 :: 3 文章 :: 11 評(píng)論 :: 0 Trackbacks

          2007年9月9日 #

          import java.io.DataInputStream;
          import java.io.DataOutputStream;
          import java.io.IOException;
          import java.util.Vector;

          import javax.microedition.io.Connector;
          import javax.microedition.io.ServerSocketConnection;
          import javax.microedition.io.SocketConnection;
          import javax.microedition.midlet.MIDlet;
          import javax.microedition.midlet.MIDletStateChangeException;


          public class GroupServer extends MIDlet implements Runnable {
           
           private ServerSocketConnection ssc=null;
           private SocketConnection sc=null;
           private Vector v=new Vector();

           protected void startApp() throws MIDletStateChangeException {

              try {
             ssc=(ServerSocketConnection)Connector.open("socket://:9999");
              
             new Thread(this).start();
             
            } catch (IOException e) {
             
             e.printStackTrace();
            }
             

           }

           protected void destroyApp(boolean b) throws MIDletStateChangeException {


           }

           protected void pauseApp() {


           }

           public void run() {
            while(true)
            {
             
             try {
              sc=(SocketConnection)ssc.acceptAndOpen();
              ChatThread chat=new ChatThread(sc);
              v.addElement(chat);
              chat.start();
             } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
             }
            }
            
            
           }
           class ChatThread extends Thread
           {
            private SocketConnection sc=null;
            private DataOutputStream dos=null;
            private DataInputStream dis=null;
            public ChatThread(SocketConnection sc)
            {
             this.sc=sc;
             try
             {
                 dis=sc.openDataInputStream();
                 dos=sc.openDataOutputStream();
             }
             catch(Exception e)
             {
              
             }
             
            }
            public void run()
            {
             while(true)
             {
              try
              {
                 // dis=sc.openDataInputStream();
                 // dos=sc.openDataOutputStream();
                  String str=dis.readUTF();
                  for(int i=0;i<v.size();i++)
                  {
                   ChatThread chat= (ChatThread)v.elementAt(i);
                  //chat.dos.writeUTF(chat.dis.readUTF());
                   chat.dos.writeUTF(str);
                  // System.out.println(str+"\n");
                  
                  }
              }
              catch(Exception e)
              {
               
              }
             }
            }
           }

           

          }

          posted @ 2008-12-02 22:40 張生工作室 閱讀(313) | 評(píng)論 (0)編輯 收藏

          import java.io.DataInputStream;
          import java.io.DataOutputStream;
          import java.io.IOException;
          import javax.microedition.io.Connector;
          import javax.microedition.io.ServerSocketConnection;
          import javax.microedition.io.SocketConnection;
          import javax.microedition.lcdui.Command;
          import javax.microedition.lcdui.CommandListener;
          import javax.microedition.lcdui.Display;
          import javax.microedition.lcdui.Displayable;
          import javax.microedition.lcdui.Form;
          import javax.microedition.lcdui.StringItem;
          import javax.microedition.lcdui.TextField;
          import javax.microedition.midlet.MIDlet;
          import javax.microedition.midlet.MIDletStateChangeException;


          public class Client extends MIDlet  implements CommandListener {
           
           

           private DataInputStream dis=null;
           private DataOutputStream dos=null;
           private ServerSocketConnection ssc=null;
           //private StreamConnection sc=null;
           private SocketConnection sc=null;
           private TextField msg=null;
           private Form frm=null;
           private Command cmdSend=null;
           private StringItem imsg=null;
           
           protected void startApp() throws MIDletStateChangeException {
            
            frm=new Form("客戶端");
            cmdSend=new Command("發(fā)送",Command.OK,1);
            msg=new TextField("請(qǐng)輸入你的信息","",255,TextField.ANY);
            frm.append(msg);
            frm.addCommand(cmdSend);
            frm.setCommandListener(this);
            Display.getDisplay(this).setCurrent(frm);
            
            
            try {
             sc=(SocketConnection)Connector.open("socket://127.0.0.1:9999");
             //sc=ssc.acceptAndOpen();
             dis=sc.openDataInputStream();
             dos=sc.openDataOutputStream();
             Chat chat=new Chat();
             chat.start();
             
            } catch (IOException e) {
            
             e.printStackTrace();
            }
            

           }
           

           public void commandAction(Command c, Displayable d) {
            if(c==cmdSend)
            {
             try {
              dos.writeUTF(msg.getString()+"\n");
             } catch (IOException e) {
              // TODO Auto-generated catch block
              System.out.println(e.getMessage()+"\n");
             }
             msg.setString("");
            }
            
            
           }

           protected void destroyApp(boolean b) throws MIDletStateChangeException {
            

           }

           protected void pauseApp() {
           

           }
           
           class Chat extends Thread
           {
            public void run()
            {
             while(true)
             {
              
               try {
                imsg=new StringItem(dis.readUTF(),"");
                frm.insert(1, imsg);
              
             } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
             }
             }
             
             
            }
           }

           
           

           

          }

          posted @ 2008-12-01 20:28 張生工作室 閱讀(251) | 評(píng)論 (0)編輯 收藏

          import java.io.DataInputStream;
          import java.io.DataOutputStream;
          import java.io.IOException;
          import javax.microedition.io.Connector;
          import javax.microedition.io.ServerSocketConnection;
          import javax.microedition.io.SocketConnection;
          import javax.microedition.io.StreamConnection;
          import javax.microedition.lcdui.Command;
          import javax.microedition.lcdui.CommandListener;
          import javax.microedition.lcdui.Display;
          import javax.microedition.lcdui.Displayable;
          import javax.microedition.lcdui.Form;
          import javax.microedition.lcdui.StringItem;
          import javax.microedition.lcdui.TextField;
          import javax.microedition.midlet.MIDlet;
          import javax.microedition.midlet.MIDletStateChangeException;


          public class Server extends MIDlet  implements CommandListener {
           
           

           private DataInputStream dis=null;
           private DataOutputStream dos=null;
           private ServerSocketConnection ssc=null;
           //private StreamConnection sc=null;
           private SocketConnection sc=null;
           private TextField msg=null;
           private Form frm=null;
           private Command cmdSend=null;
           private StringItem imsg=null;
           
           protected void startApp() throws MIDletStateChangeException {
            
            frm=new Form("服務(wù)器");
            cmdSend=new Command("發(fā)送",Command.OK,1);
            msg=new TextField("請(qǐng)輸入你的信息","",255,TextField.ANY);
            frm.append(msg);
            frm.addCommand(cmdSend);
            frm.setCommandListener(this);
            Display.getDisplay(this).setCurrent(frm);
            
            
            try {
             ssc=(ServerSocketConnection)Connector.open("socket://:9999");
             sc=(SocketConnection)ssc.acceptAndOpen();
             dis=sc.openDataInputStream();
             dos=sc.openDataOutputStream();
             Chat chat=new Chat();
             chat.start();
             
            } catch (IOException e) {
            
             e.printStackTrace();
            }
            

           }
           

           public void commandAction(Command c, Displayable d) {
            if(c==cmdSend)
            {
             try {
              dos.writeUTF(msg.getString()+"\n");
             } catch (IOException e) {
              // TODO Auto-generated catch block
              System.out.println(e.getMessage()+"\n");
             }
             msg.setString("");
            }
            
            
           }

           protected void destroyApp(boolean b) throws MIDletStateChangeException {
            

           }

           protected void pauseApp() {
           

           }
           
           class Chat extends Thread
           {
            public void run()
            {
             while(true)
             {
              
               try {
                imsg=new StringItem( dis.readUTF(),"");
                frm.insert(1, imsg);
             } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
             }
             }
             
             
            }
           }

           
           

           

          }

          posted @ 2008-12-01 20:28 張生工作室 閱讀(365) | 評(píng)論 (0)編輯 收藏

          import javax.microedition.lcdui.Command;
          import javax.microedition.lcdui.CommandListener;
          import javax.microedition.lcdui.Display;
          import javax.microedition.lcdui.Displayable;
          import javax.microedition.lcdui.Form;
          import javax.microedition.lcdui.Item;
          import javax.microedition.lcdui.ItemStateListener;
          import javax.microedition.lcdui.TextField;
          import javax.microedition.midlet.MIDlet;
          import javax.microedition.midlet.MIDletStateChangeException;


          public class MessageMIDlet extends MIDlet {

           
           private welcome wcfrm=null;
           
           public MessageMIDlet() {

           }

           protected void destroyApp(boolean arg0) throws MIDletStateChangeException {


           }

           protected void pauseApp() {
           

           }

           protected void startApp() throws MIDletStateChangeException {
           
            wcfrm=new welcome(this);
            Display.getDisplay(this).setCurrent(wcfrm);
           }

          }

          class welcome extends Form implements CommandListener
          {

           
              private Command cmdExit=null;
              private Command cmdWrite=null;
              private writemsg wrfrm=null;
              private MIDlet let=null;
             
              public welcome(MIDlet mlet)
              {
               super("歡迎使用本程序");
               let=mlet;
           
               cmdExit=new Command("退出",Command.EXIT,1);
               cmdWrite=new Command("寫短信",Command.SCREEN,1);
               this.addCommand(cmdExit);
               this.addCommand(cmdWrite);
               this.setCommandListener(this);
               
              }
           public void commandAction(Command c, Displayable d) {
           
             if(c==cmdExit)
             {
            
              let.notifyDestroyed();
             }
             else
              if(c==cmdWrite)
              {
               wrfrm=new writemsg(let);
               Display.getDisplay(let).setCurrent(wrfrm);
             
              
              }
           
           }

          }
          class writemsg extends javax.microedition.lcdui.Form implements CommandListener,ItemStateListener
          {
           

           private Command cmdBack=null;
           private Command cmdwrNum=null;
           private MIDlet let=null;
           private TextField tf=null;
           private Command cmdDel=null;
           private writeNum2 wrnum=null;
           
           

           public writemsg(MIDlet mlet)
           {
           
            super("請(qǐng)輸入短信內(nèi)容");
            let=mlet;
            cmdBack=new Command("返回",Command.EXIT,1);
            cmdwrNum=new Command("發(fā)送",Command.SCREEN,1);
            cmdDel=new Command("刪除",Command.EXIT,1);
            this.addCommand(cmdBack);
            this.addCommand(cmdwrNum);
           
            tf= new  TextField("","",255,TextField.ANY);
            //tf.addCommand(cmdDel);
            this.append(tf);
            this.setItemStateListener(this);
            this.setCommandListener(this);
            tf.setLayout(TextField.LAYOUT_VEXPAND);
           }
           
           public void commandAction(Command c, Displayable d) {
           
            if(c==cmdBack)
            {
             Display.getDisplay(let).setCurrent(new welcome(let));
            
            }else if(c==cmdwrNum)
            {
            wrnum=new  writeNum2(let);
             Display.getDisplay(let).setCurrent(wrnum);
            
            }else if(c==cmdDel)
            {
             int p=tf.getCaretPosition();
             if(p>0)
             {
              tf.delete(p-1, 1);
             }
             if(tf.getString().length()==0)
             {
                this.removeCommand(cmdDel);
                this.addCommand(cmdBack);
             
             }
            
            }

           
           }

           public void itemStateChanged(Item i) {
           
            if(i==tf)
            {
              if( tf.getString().length()>0)
              {
              // this.addCommand(cmdDel);
               this.removeCommand(cmdBack);
               this.addCommand(cmdDel);
              }
              else
              {
               this.removeCommand(cmdDel);
               this.addCommand(cmdBack);
              }
            
            
            }
           
           
           }
           
           
          }

           

          class writeNum2 extends javax.microedition.lcdui.Form implements CommandListener,ItemStateListener
          {
           

           private Command cmdBack=null;
           private Command cmdwrNum=null;
           private MIDlet let=null;
           private TextField tf=null;
           private Command cmdDel=null;
           private Form preFrm=null;
           private boolean sendflag=false;

           
           

           public writeNum2(MIDlet mlet)
           {
           
            super("請(qǐng)輸入對(duì)方號(hào)碼");
            let=mlet;
            preFrm=(Form) Display.getDisplay(let).getCurrent();
            cmdBack=new Command("返回",Command.EXIT,1);
            cmdwrNum=new Command("發(fā)送",Command.SCREEN,1);
            cmdDel=new Command("刪除",Command.EXIT,1);
            this.addCommand(cmdBack);
            this.addCommand(cmdwrNum);
           
            tf= new  TextField("","",13,TextField.NUMERIC);
            //tf.addCommand(cmdDel);
            this.append(tf);
            this.setItemStateListener(this);
            this.setCommandListener(this);
           
           }
           
           public void commandAction(Command c, Displayable d) {
           
            if(c==cmdBack)
            {
            if (sendflag)
            Display.getDisplay(let).setCurrent(new welcome(let));
            else
             Display.getDisplay(let).setCurrent(this.preFrm);
            
            }else if(c==cmdwrNum)
            {

              String msg= ((TextField)(preFrm.get(0))).getString();
              String phonenum= tf.getString();
             
              this.append("信息內(nèi)容:"+ msg);
              this.append("發(fā)送號(hào)碼:"+ phonenum);
              this.append("發(fā)送狀態(tài):成功");
              this.delete(0);
              this.removeCommand(cmdwrNum);
              this.removeCommand(cmdDel);
              this.addCommand(cmdBack);
              sendflag=true;
            }else if(c==cmdDel)
            {
             int p=tf.getCaretPosition();
             if(p>0)
             {
              tf.delete(p-1, 1);
             }
             if(tf.getString().length()==0)
             {
                this.removeCommand(cmdDel);
                this.addCommand(cmdBack);
             
             }
            
            }

           
           }


           public void itemStateChanged(Item i) {
           
            if(i==tf)
            {
              if( tf.getString().length()>0)
              {
              // this.addCommand(cmdDel);
               this.removeCommand(cmdBack);
               this.addCommand(cmdDel);
              }
              else
              {
               this.removeCommand(cmdDel);
               this.addCommand(cmdBack);
              }
            
            
            }
           
           
           }
           
           
          }

          /*

          class writeNum extends Form implements CommandListener
          {

           private MIDlet let=null;
           private Command cmdSend=null;
           private Command cmdBack=null;
           private TextField num=null;
           private Form backfrm=null;
           public writeNum(MIDlet mlet) {
           
            super("請(qǐng)輸入要發(fā)送的號(hào)碼");
            let=mlet;
            num=new TextField("","",13,TextField.NUMERIC);
            this.append(num);
            cmdSend=new Command("發(fā)送",Command.OK,1);
            cmdBack=new Command("返回",Command.BACK,1);
            this.addCommand(cmdSend);
            this.addCommand(cmdBack);
            this.backfrm=(Form) Display.getDisplay(let).getCurrent();
            this.setCommandListener(this);
           
           
           }

           public void commandAction(Command c, Displayable d) {
            if(c==cmdSend)
            {
             try
             {
              String msg=((TextField)this.backfrm.get(0)).getString();//當(dāng)跨幾個(gè)Form時(shí)應(yīng)該怎么辦?
              this.append("信息:"+ msg+"已發(fā)送到:"+ num.getString());
            
             this.delete(0);
             this.setTitle("信息已發(fā)送成功");
             }
             catch(Exception e)
             {
              this.append("信息成功發(fā)送");
             }
            }
            else if(c==cmdBack)
            {
             Display.getDisplay(let).setCurrent(this.backfrm);
            }
           
           
           }
           
          }
          **/

           

          posted @ 2008-11-28 13:06 張生工作室 閱讀(386) | 評(píng)論 (1)編輯 收藏

          import javax.microedition.lcdui.Command;
          import javax.microedition.lcdui.CommandListener;
          import javax.microedition.lcdui.Display;
          import javax.microedition.lcdui.Displayable;
          import javax.microedition.lcdui.Form;
          import javax.microedition.lcdui.Item;
          import javax.microedition.lcdui.ItemStateListener;
          import javax.microedition.lcdui.TextField;
          import javax.microedition.midlet.MIDlet;
          import javax.microedition.midlet.MIDletStateChangeException;


          public class MessageMIDlet extends MIDlet {

           
           private welcome wcfrm=null;
           
           public MessageMIDlet() {

           }

           protected void destroyApp(boolean arg0) throws MIDletStateChangeException {


           }

           protected void pauseApp() {
           

           }

           protected void startApp() throws MIDletStateChangeException {
           
            wcfrm=new welcome(this);
            Display.getDisplay(this).setCurrent(wcfrm);
           }

          }

          class welcome extends Form implements CommandListener
          {

           
              private Command cmdExit=null;
              private Command cmdWrite=null;
              private writemsg wrfrm=null;
              private MIDlet let=null;
             
              public welcome(MIDlet mlet)
              {
               super("歡迎使用本程序");
               let=mlet;
           
               cmdExit=new Command("退出",Command.EXIT,1);
               cmdWrite=new Command("寫短信",Command.SCREEN,1);
               this.addCommand(cmdExit);
               this.addCommand(cmdWrite);
               this.setCommandListener(this);
               
              }
           public void commandAction(Command c, Displayable d) {
           
             if(c==cmdExit)
             {
            
              let.notifyDestroyed();
             }
             else
              if(c==cmdWrite)
              {
               wrfrm=new writemsg(let);
               Display.getDisplay(let).setCurrent(wrfrm);
             
              
              }
           
           }

          }
          class writemsg extends javax.microedition.lcdui.Form implements CommandListener,ItemStateListener
          {
           

           private Command cmdBack=null;
           private Command cmdwrNum=null;
           private MIDlet let=null;
           private TextField tf=null;
           private Command cmdDel=null;
           private writeNum wrnum=null;
           
           

           public writemsg(MIDlet mlet)
           {
           
            super("請(qǐng)輸入短信內(nèi)容");
            let=mlet;
            cmdBack=new Command("返回",Command.EXIT,1);
            cmdwrNum=new Command("發(fā)送",Command.SCREEN,1);
            cmdDel=new Command("刪除",Command.EXIT,1);
            this.addCommand(cmdBack);
            this.addCommand(cmdwrNum);
           
            tf= new  TextField("","",255,TextField.ANY);
            //tf.addCommand(cmdDel);
            this.append(tf);
            this.setItemStateListener(this);
            this.setCommandListener(this);
           
           }
           
           public void commandAction(Command c, Displayable d) {
           
            if(c==cmdBack)
            {
             Display.getDisplay(let).setCurrent(new welcome(let));
            
            }else if(c==cmdwrNum)
            {
             wrnum=new writeNum(let);
             Display.getDisplay(let).setCurrent(wrnum);
            
            }else if(c==cmdDel)
            {
             int p=tf.getCaretPosition();
             if(p>0)
             {
              tf.delete(p-1, 1);
             }
             if(tf.getString().length()==0)
             {
                this.removeCommand(cmdDel);
                this.addCommand(cmdBack);
             
             }
            
            }

           
           }

           public void itemStateChanged(Item i) {
           
            if(i==tf)
            {
              if( tf.getString().length()>0)
              {
              // this.addCommand(cmdDel);
               this.removeCommand(cmdBack);
               this.addCommand(cmdDel);
              }
              else
              {
               this.removeCommand(cmdDel);
               this.addCommand(cmdBack);
              }
            
            
            }
           
           
           }
           
           
          }

          class writeNum extends Form implements CommandListener
          {

           private MIDlet let=null;
           private Command cmdSend=null;
           private Command cmdBack=null;
           private TextField num=null;
           private writemsg backfrm=null;
           public writeNum(MIDlet mlet) {
           
            super("請(qǐng)輸入要發(fā)送的號(hào)碼");
            let=mlet;
            num=new TextField("","",13,TextField.NUMERIC);
            this.append(num);
            cmdSend=new Command("發(fā)送",Command.OK,1);
            cmdBack=new Command("返回",Command.BACK,1);
            this.addCommand(cmdSend);
            this.addCommand(cmdBack);
            this.backfrm=(writemsg) Display.getDisplay(let).getCurrent();
            this.setCommandListener(this);
           
           
           }

           public void commandAction(Command c, Displayable d) {
            if(c==cmdSend)
            {
             try
             {
              String msg=((TextField)this.backfrm.get(0)).getString();//當(dāng)跨幾個(gè)Form時(shí)應(yīng)該怎么辦?
              this.append("信息:"+ msg+"已發(fā)送到:"+ num.getString());
            
             this.delete(0);
             this.setTitle("信息已發(fā)送成功");
             }
             catch(Exception e)
             {
              this.append("信息成功發(fā)送");
             }
            }
            else if(c==cmdBack)
            {
             Display.getDisplay(let).setCurrent(this.backfrm);
            }
           
           
           }
           
          }

           

          posted @ 2008-11-28 00:04 張生工作室 閱讀(213) | 評(píng)論 (0)編輯 收藏

          import javax.microedition.lcdui.Command;
          import javax.microedition.lcdui.CommandListener;
          import javax.microedition.lcdui.Display;
          import javax.microedition.lcdui.Displayable;
          import javax.microedition.lcdui.Form;
          import javax.microedition.lcdui.Item;
          import javax.microedition.lcdui.ItemCommandListener;
          import javax.microedition.lcdui.ItemStateListener;
          import javax.microedition.lcdui.TextField;
          import javax.microedition.midlet.MIDlet;
          import javax.microedition.midlet.MIDletStateChangeException;

          public class MIDletItemCommmandListener extends MIDlet implements ItemCommandListener,CommandListener,ItemStateListener {
                                                                        
           
           private Form frm=new Form("Item監(jiān)聽器");
           private TextField uid=new TextField("用戶名","",20,TextField.ANY);
           private TextField pwd=new TextField("密碼","",20,TextField.PASSWORD);
           private Display dis=Display.getDisplay(this);
           private Command Del=new Command("刪除",Command.ITEM,1);
           
           public MIDletItemCommmandListener() {
            
           }

           protected void startApp() throws MIDletStateChangeException {
            
            
            
            frm.append(uid);
            uid.addCommand(Del);
            pwd.addCommand(Del);
            pwd.setItemCommandListener(this);
            uid.setItemCommandListener(this);
            frm.append(pwd);
            dis.setCurrent(frm);
            dis.setCurrentItem(pwd);
            frm.setItemStateListener(this);
            


           }
           
           protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
           

           }

           protected void pauseApp() {
            

           }

           public void commandAction(Command c, Item i) {
            
            if(c==Del)
            {
             TextField tf=(TextField)i;
             
             int p=tf.getCaretPosition();
             if(p>0)
             {
             tf.delete(p-1, 1);
             }
            }
           
            
           }

           public void commandAction(Command c, Displayable d) {
            
            
           }

           public void itemStateChanged(Item i) {
            
              if(i==uid)
              {
               frm.setTitle("用戶名"+uid.getString());
              } else if(i==pwd)
              {
               frm.setTitle("密碼"+uid.getString());
              }
            
           }

           

          }

          posted @ 2008-11-27 08:49 張生工作室 閱讀(415) | 評(píng)論 (0)編輯 收藏

          import javax.microedition.lcdui.Command;
          import javax.microedition.lcdui.CommandListener;
          import javax.microedition.lcdui.Display;
          import javax.microedition.lcdui.Displayable;
          import javax.microedition.lcdui.Form;
          import javax.microedition.lcdui.Item;
          import javax.microedition.lcdui.ItemCommandListener;
          import javax.microedition.lcdui.TextField;
          import javax.microedition.midlet.MIDlet;
          import javax.microedition.midlet.MIDletStateChangeException;

          public class MIDletItemCommmandListener extends MIDlet implements ItemCommandListener,CommandListener {
                                                                        
           
           private Form frm=new Form("Item監(jiān)聽器");
           private TextField uid=new TextField("用戶名","",20,TextField.ANY);
           private TextField pwd=new TextField("密碼","",20,TextField.PASSWORD);
           private Display dis=Display.getDisplay(this);
           private Command Del=new Command("刪除",Command.ITEM,1);
           
           public MIDletItemCommmandListener() {
            // TODO Auto-generated constructor stub
           }

           protected void startApp() throws MIDletStateChangeException {
            
            
            
            frm.append(uid);
            uid.addCommand(Del);
            pwd.addCommand(Del);
            pwd.setItemCommandListener(this);
            uid.setItemCommandListener(this);
            frm.append(pwd);
            dis.setCurrent(frm);
            dis.setCurrentItem(pwd);
            


           }
           
           protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
            // TODO Auto-generated method stub

           }

           protected void pauseApp() {
            

           }

           public void commandAction(Command c, Item i) {
            
            if(c==Del)
            {
             TextField tf=(TextField)i;
             
             int p=tf.getCaretPosition();
             if(p>0)
             {
             tf.delete(p-1, 1);
             }
            }
           
            
           }

           public void commandAction(Command c, Displayable d) {
            
            
           }

           

          }

          posted @ 2008-11-27 08:34 張生工作室 閱讀(580) | 評(píng)論 (0)編輯 收藏

          import javax.microedition.lcdui.Display;
          import javax.microedition.lcdui.Font;
          import javax.microedition.lcdui.Image;
          import javax.microedition.lcdui.List;
          import javax.microedition.midlet.MIDlet;
          import javax.microedition.midlet.MIDletStateChangeException;


          public class ListImage extends MIDlet {
           
           
           private List list;
           private Display dis;

           public ListImage() {
            // TODO Auto-generated constructor stub
           }

           protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
            // TODO Auto-generated method stub

           }

           protected void pauseApp() {
            // TODO Auto-generated method stub

           }

           protected void startApp() throws MIDletStateChangeException {
            
            
            list=new List("列表",List.MULTIPLE);
            Image img=null;
            try
            {
             
            img=Image.createImage("/mlogo.PNG");
            
            
            }
            catch(Exception e)
            {
             System.out.println("Error");
            }
            list.append("圖片", img);
            Font f=null;
            f=Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_UNDERLINED, Font.SIZE_LARGE);
            list.setFont(0, f);
            dis=Display.getDisplay(this);
            dis.setCurrent(list);
            // TODO Auto-generated method stub

           }

          }

          posted @ 2008-11-26 09:54 張生工作室 閱讀(252) | 評(píng)論 (0)編輯 收藏

          import javax.microedition.lcdui.Command;
          import javax.microedition.lcdui.CommandListener;
          import javax.microedition.lcdui.Display;
          import javax.microedition.lcdui.Displayable;
          import javax.microedition.lcdui.List;
          import javax.microedition.midlet.MIDlet;
          import javax.microedition.midlet.MIDletStateChangeException;


          public class MIDlet3 extends MIDlet implements CommandListener  {
           
           private List list=null;
           
           private Command cmdOk=null;
           
           private Display dis=null;

           public MIDlet3() {
            // TODO Auto-generated constructor stub
           }

           protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
            // TODO Auto-generated method stub

           }

           protected void pauseApp() {
            // TODO Auto-generated method stub

           }

           protected void startApp() throws MIDletStateChangeException {
            
              cmdOk=new Command("確定",Command.OK,1);
             
              list=new List("請(qǐng)選擇",List.MULTIPLE);
            
            for(int i=0;i<10;i++)
            {
             list.append("列表"+i, null);
             
            }
            list.addCommand(cmdOk);
            dis=Display.getDisplay(this);
            list.setCommandListener(new Operater());
            dis.setCurrent(list);
            // TODO Auto-generated method stub

           }

           public void commandAction(Command c, Displayable d) {
              //Method1
            int size=list.size();
            for(int i=0;i<size;i++)
            {
             if(list.isSelected(i))
             {
              System.out.print(list.getString(i));
             }
            }
            //Method 2
            /*
            boolean[] Flags=new boolean[list.size()];
               list.getSelectedFlags(Flags);
               for(int i=0;i<list.size();i++)
               {
                if(Flags[i])
                {
                 System.out.print(list.getString(i));
                }
               }
               */
            
           }

          }

           

           

          posted @ 2008-11-26 09:35 張生工作室 閱讀(187) | 評(píng)論 (0)編輯 收藏

          import javax.microedition.lcdui.Command;
          import javax.microedition.lcdui.CommandListener;
          import javax.microedition.lcdui.Display;
          import javax.microedition.lcdui.Displayable;
          import javax.microedition.lcdui.List;
          import javax.microedition.midlet.MIDlet;
          import javax.microedition.midlet.MIDletStateChangeException;


          public class MIDlet3 extends MIDlet implements CommandListener  {
           
           private List list=null;
           
           private Command cmdOk=null;
           
           private Display dis=null;

           public MIDlet3() {
            // TODO Auto-generated constructor stub
           }

           protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
            // TODO Auto-generated method stub

           }

           protected void pauseApp() {
            // TODO Auto-generated method stub

           }

           protected void startApp() throws MIDletStateChangeException {
            
              cmdOk=new Command("確定",Command.OK,1);
             
              list=new List("請(qǐng)選擇",List.MULTIPLE);
            
            for(int i=0;i<10;i++)
            {
             list.append("列表"+i, null);
             
            }
            //list.addCommand(cmdOk);
            
            list.setCommandListener(new Operater());
            dis.setCurrent(list);
            // TODO Auto-generated method stub

           }

           public void commandAction(Command c, Displayable d) {
              //Method1
            int size=list.size();
            for(int i=0;i<size;i++)
            {
             if(list.isSelected(i))
             {
              System.out.print(list.getString(i));
             }
            }
            //Method 2
            boolean[] Flags=new boolean[list.size()];
               list.getSelectedFlags(Flags);
               for(int i=0;i<list.size();i++)
               {
                if(Flags[i])
                {
                 System.out.print(list.getString(i));
                }
               }
            
           }

          }

           

           

          posted @ 2008-11-26 08:52 張生工作室 閱讀(197) | 評(píng)論 (0)編輯 收藏

          import javax.microedition.lcdui.Command;
          import javax.microedition.lcdui.CommandListener;
          import javax.microedition.lcdui.Display;
          import javax.microedition.lcdui.Displayable;
          import javax.microedition.lcdui.List;
          import javax.microedition.midlet.MIDlet;
          import javax.microedition.midlet.MIDletStateChangeException;


          public class MIDlet2 extends MIDlet  {
           
           private List list;
           
           private Command cmdOk;
           
           private Display dis;

           public MIDlet2() {
            // TODO Auto-generated constructor stub
           }

           protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
            // TODO Auto-generated method stub

           }

           protected void pauseApp() {
            // TODO Auto-generated method stub

           }

           protected void startApp() throws MIDletStateChangeException {
            
              cmdOk=new Command("確定",Command.OK,1);
             
              list=new List("請(qǐng)選擇",List.EXCLUSIVE);
            
            for(int i=0;i<10;i++)
            {
             list.append("列表"+i, null);
             
            }
            list.addCommand(cmdOk);
            dis=Display.getDisplay(this);
            list.setCommandListener(new Operater());
            dis.setCurrent(list);
            // TODO Auto-generated method stub

           }


            


          }

          class Operater implements javax.microedition.lcdui.CommandListener
          {


           public void commandAction(Command c, Displayable d) {
            
            
            if(c.getLabel().equals("確定"))
            {
             List l=(List)d;
               l.setTitle( l.getString(l.getSelectedIndex())); 
            }
            
           }
           
           
          }

          posted @ 2008-11-26 08:40 張生工作室 閱讀(126) | 評(píng)論 (0)編輯 收藏

          import javax.microedition.lcdui.Command;
          import javax.microedition.lcdui.Display;
          import javax.microedition.lcdui.Displayable;
          import javax.microedition.lcdui.List;
          import javax.microedition.midlet.MIDlet;
          import javax.microedition.midlet.MIDletStateChangeException;


          public class MIDlet1 extends MIDlet implements javax.microedition.lcdui.CommandListener {

           
           private Display dis;
           private List list;

           
           public MIDlet1() {
            // TODO Auto-generated constructor stub
           }

           protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
            // TODO Auto-generated method stub

           }

           protected void pauseApp() {
            // TODO Auto-generated method stub

           }

           protected void startApp() throws MIDletStateChangeException {
            

            list=new List("列表",List.IMPLICIT);

           

            list.setCommandListener(this);
            for(int i=0;i<100;i++)
            {
             list.append("表列"+ i, null);
            }
            

            
           
            
            dis=Display.getDisplay(this);
            
            dis.setCurrent(list);
            
            // TODO Auto-generated method stub

           }

           public void commandAction(Command cmd, Displayable dis) {
            
            
           if(cmd==list.SELECT_COMMAND)
           {
            list.setTitle(list.getString(list.getSelectedIndex()));
           }
           
            
            // TODO Auto-generated method stub
            
           }

          }

          posted @ 2008-11-26 08:16 張生工作室 閱讀(177) | 評(píng)論 (0)編輯 收藏

               摘要: 第四章 管理信息系統(tǒng)規(guī)劃與開發(fā)方法   開發(fā)管理信息系 統(tǒng)是一個(gè)投資巨大、歷時(shí)很長、涉及面很廣的工程項(xiàng)目,如果沒有進(jìn)行規(guī)劃或規(guī)劃不合理,不僅造成開發(fā)過程的直接損失,由此而引起的企業(yè)運(yùn)行不好的間接損失更 是難以估計(jì)。人們通常認(rèn)為,假若一個(gè)操作錯(cuò)誤可能損失幾萬元,那么一個(gè)設(shè)計(jì)錯(cuò)誤就能損失幾十萬元,一個(gè)計(jì)劃錯(cuò)誤就能損失幾百萬元,而一個(gè)規(guī)劃錯(cuò)誤的損失則 能達(dá)到千萬元,甚至上億元。一個(gè)科學(xué)合理的系...  閱讀全文
          posted @ 2008-07-26 15:20 張生工作室 閱讀(6096) | 評(píng)論 (0)編輯 收藏

               摘要: Struts2+spring2+hibernate3整合方案 最近閑來無事可做,于是開始學(xué)習(xí)struts2。Struts2和struts1、webwork2有什么區(qū)別我也不說了,網(wǎng)上有很多這方面的資料。以前在項(xiàng)目中從未使用過struts,一直使用spring+hibernate,現(xiàn)在既然學(xué)習(xí)了Struts,也不能浪費(fèi),于是乎開始琢磨著怎么整合這3個(gè)框架。整合原理以spring為容器,管理hibe...  閱讀全文
          posted @ 2008-05-13 12:20 張生工作室 閱讀(320) | 評(píng)論 (0)編輯 收藏

          Matlab6.5使用
          第1章  Matlab6.5使用方法

          1.Matlab6.5簡介
          1.1  21世紀(jì)的科學(xué)計(jì)算語言
          ?功能強(qiáng)大
             數(shù)值計(jì)算、符號(hào)運(yùn)算、圖形可視化
          ?語言簡單
          ?擴(kuò)充能力強(qiáng)、可開發(fā)性好  
          ?編程容易、效率高

          1.2  Matlab6.5的新特點(diǎn)
          ?開發(fā)環(huán)境
            
          ?數(shù)值處理

          ?程序及數(shù)據(jù)結(jié)構(gòu)  
          ?圖形處理

          ?用戶圖形界面

          ?應(yīng)用程序接口

          1.3  Matlab網(wǎng)上資源

          http://www.mathsworks.com

          ftp.mathworks.com

          ……

          2.Matlab6.5桌面平臺(tái)
          ?Matlab主窗口

          ?命令窗口

          ?歷史窗口

          ?當(dāng)前目錄窗口

          ?發(fā)明說明書窗口

          ?工作間管理窗口

          3.Matlab6.5幫助系統(tǒng)
          ?聯(lián)機(jī)幫助系統(tǒng)
          ? 選中Help下拉菜單的前四項(xiàng)中任何一項(xiàng);
          ? 在命令窗口中執(zhí)行Helpwin、helpdesk、doc;
          ? 直接按主窗口的?按鈕.

          ?命令窗口查詢幫助
          ?  help系列----help、help+函數(shù)(類)名、helpwin、helpdesk;
          ? lookfor函數(shù);
          ? 其他幫助命令
          ? exist—變量檢驗(yàn)函數(shù);
          ? what---目錄中文件列表;
          ? who---內(nèi)存變量列表;
          ? whos---內(nèi)存變量詳細(xì)信息;
          ? which---確定文件位置。

          ?聯(lián)機(jī)演示系統(tǒng)
          1.基本介紹窗口
          >> intro

          2.演示界面
          help--demos
          >>demo

          ?常用命令和技巧
          1.一些通用命令
          cd  顯示或改變工作目錄
          dir, ls  顯示目錄文件
          type  顯示文件內(nèi)容
          clear  清理內(nèi)存變量
          clf    清除圖形窗口
          pack  收集內(nèi)存碎片、擴(kuò)大內(nèi)存空間
          clc   清除工作窗
          echo  工作窗信息顯示開關(guān)
          hold  圖形保持開關(guān)
          disp  顯示變量或文字內(nèi)容
          path  顯示搜索目錄
          save  保存內(nèi)存變量到指定文件
          load  加載指定文件的變量
          diary  日志文件命令
          quit   退出Matlab
          !     調(diào)用dos命令


          2. 標(biāo)點(diǎn)
          : 多種應(yīng)用功能
          ; 區(qū)分行,取消行顯示等
          , 區(qū)分列,函數(shù)參數(shù)分隔符等
          ()  指定運(yùn)算過程中的先后次序等
          []  矩陣定義的標(biāo)志
          {}  用于構(gòu)成單元數(shù)組等
          .   小數(shù)點(diǎn)及域訪問等
          …  續(xù)行符
          %  注釋標(biāo)記

          =  賦值標(biāo)記
          ’   字符串的標(biāo)志符等

           

           

          Help 程序(主題)名
          >> help sinh
           SINH   Hyperbolic sine.
             SINH(X) is the hyperbolic sine of the elements of X.
           Overloaded methods
              help sym/sinh.m

          >>lookfor complex
          ……

          顯示
          >>who  %顯示當(dāng)前工作區(qū)中的所有變量名
          >>whos  %顯示當(dāng)前工作區(qū)中的所有變量%名,變量的大小,字節(jié)數(shù)和類型。

          >>disp(x)  %顯示x的內(nèi)容,矩陣或字符串

          清除
          >>clear (變量名)


          存儲(chǔ)
          >>save (文件名)
          調(diào)出
          >> load (文件名)

          >> save
          Saving to: matlab.mat
          >> load
          Loading from: matlab.mat

          >> save temp
          -將當(dāng)前系統(tǒng)中的所有變量存入temp.mat;
          >> save temp x
          -僅存入x變量到temp.mat;
          >> save temp x y z
          -僅存入x y z變量到temp.mat;
          >> load temp
          -重新從temp.mat中提出變量。

          搜索
          >>path %顯示目前的搜索路徑,可以用File菜單中的Set Path觀察和修改路徑
          管理
          what   返回目前目錄下的M,MAT,MEX文件列表
          dir、 ls  列出目前目錄下的所有文件

          cd path  改變目前目錄為path

          pwd、 cd、 chdir   顯示目前的工作目錄 
          退出
          >>quit


          第2章 數(shù)值計(jì)算功能

          2.1  Matlab的數(shù)據(jù)類型

          1. 變量與表達(dá)式
          Matlab命令的通常形式
            變量=表達(dá)式
          >> A=[1,3.0,5.6,sin(2.)]
          A =
            1.0000    3.0000    5.6000    0.9093

          >> a=[1 3.0 5.6 sin(2.)]
          a =
            1.0000    3.0000    5.6000    0.9093
          >> sin(pi/2)/3
          ans =
          0. 3333
          >> whos
            Name    Size    Bytes  Class
            A       1x4        32  double array
            a       1x4        32  double array
            ans     1x1         8  double array
          Grand total is 9 elements using 70 bytes

          2.預(yù)定義變量----常量
          系統(tǒng)的特殊常量
          特殊變量           取值
          pi                  
          eps                 計(jì)算機(jī)的最小正數(shù)
          flops                浮點(diǎn)運(yùn)算次數(shù)
          i,j                   i=j=
          Inf                  無窮大
          NaN                 不定量
          Realmin      最小的正浮點(diǎn)數(shù) 2^(-1022)
          Realmax      最大的浮點(diǎn)數(shù) 2^(1023)


          >> z1=3+4i
          z1 =
             3.0000 + 4.0000i
          >> z1=3+4j
          z1 =
             3.0000 + 4.0000i

          3.顯示格式
          計(jì)算以雙精度計(jì)算;
          數(shù)值的有效范圍為10e-308~10e308;
          顯示可以不同的顯示格式顯示;
          缺省情況為短格式(short)顯示—若數(shù)據(jù)為整數(shù),則以整型表示;若為實(shí)數(shù),則保留小數(shù)點(diǎn)后4位的浮點(diǎn)數(shù)表示。
          >> x=[3.0 2]
          x =
          3 2
          >> x=[4/3 1.2345e-6]
          x =
          1.3333    0.0000

          >> format long
          >> x=[4/3 1.2345e-6]
          x =
             1.33333333333333   0.00000123450000

           

          >> format short e
          >> x=[4/3 1.2345e-6]
          x =
          1. 3333e+000  1.2345e-006

          >> format +
          >> x=[4/3 1.2345e-6]
          x =
          ++

          short
          long
          hex
          bank
          +
          short e
          long e
          short e
          short g
          long g
          rational


          4. 字符串
          --所有字符串用單引號(hào)設(shè)定后輸入或賦值
          >> s='matrix laboratory'
          s =
          matrix laboratory

          --字符串的每個(gè)字符(包括空格)均為字符數(shù)組的一個(gè)元素
          >>size(s)   %size命令查看字符數(shù)組的維數(shù)
          ans =
               1    17

          --字符串和字符數(shù)組(或矩陣)基本上等價(jià)
          >> s(3)
          ans =
          t

          >> s2=['matlab']
          s2 =
          matlab

          --字符數(shù)組的生成
          >> s3=char('s','y','m','b','o','l','i','c');
          >> s3'
          ans =
          symbolic

          --字符串和數(shù)組之間的轉(zhuǎn)換
          A. 字符串轉(zhuǎn)換為數(shù)值代碼
          >> double(s3)'
          ans =
             115   121   109    98   111   108   105    99

          B. 字符數(shù)組轉(zhuǎn)換為字符串
           >> cellstr(s3)'
          ans =
          's'  'y'  'm'   'b'   'o'   'l'   'i'   'c'

          C. 數(shù)值數(shù)組和字符串之間的轉(zhuǎn)換
          -num2str    數(shù)字轉(zhuǎn)換為字符串
          -int2str     整數(shù)轉(zhuǎn)換為字符串
          -mat2str    矩陣轉(zhuǎn)換為字符串
          -str2num   轉(zhuǎn)換字符串為數(shù)字
          -sprintf     將格式數(shù)據(jù)寫為字符串
          -sscanf     在格式控制下讀字符串

          >> a=[1:5];
          >> b=num2str(a);
          >> a*2
          ans =
               2     4     6     8    10
          >> b*2
          ans =
            Columns 1 through 11
              98    64    64   100    64    64   102    64    64   104    64
            Columns 12 through 13
              64   106


          >> str2num(b)*2
          ans =
               2     4     6     8    10

          D. 字符串操作
          -strcat   鏈結(jié)串
          -strvcat  垂直鏈結(jié)串
          -strcmp  比較串
          -strncmp  比較串的前n個(gè)字符
          -findstr   在其他串中尋找此串
          -strjust    證明字符數(shù)組
          -strmatch  查找可能匹配的字符串
          -strrep    以其他串代替此串
          -strtok    尋找串中記號(hào)
          -upper    轉(zhuǎn)換為大寫
          -lower    轉(zhuǎn)換為小寫
          -blanks   生成空串
          -deblank  移去串內(nèi)空串
            
          E. 執(zhí)行字符串
          --函數(shù)eval實(shí)現(xiàn)

          n=4;
          t='1/(i+j-1)';
          a=zeros(n);
          for i=1:n
          for j=1:n
          a(i,j)=eval(t);
          end
          end
          a
          a =
             1.0000    0.5000    0.3333    0.2500
             0.5000    0.3333    0.2500    0.2000
             0.3333    0.2500    0.2000    0.1667
             0.2500    0.2000    0.1667    0.1429

          >> d='cd';
          >> eval(d)
          C:\MATLAB6p1\work

          F. 一些基本數(shù)字轉(zhuǎn)換函數(shù)
          -hex2num   十六進(jìn)制轉(zhuǎn)換為雙精度數(shù)
          -hex2dec    十六進(jìn)制轉(zhuǎn)換為十進(jìn)制整數(shù)
          -dec2hex    十進(jìn)制整數(shù)轉(zhuǎn)換為十六進(jìn)制串
          -bin2dec    二進(jìn)制轉(zhuǎn)換為十進(jìn)制整數(shù)
          -dec2bin    十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制串
          -base2dec   轉(zhuǎn)換B底字符串為十進(jìn)制整數(shù)
          -dec2base  轉(zhuǎn)換十進(jìn)制整數(shù)為B底串
          -strings    strings函數(shù)的幫助


          5. 矩陣

          6. 單元型變量
          一種以任意形式的數(shù)組為元素的多維數(shù)組
          --定義
          (1)賦值語句直接定義
          (2)由cell函數(shù)預(yù)先分配存儲(chǔ)空間,再對(duì)單元元素逐個(gè)賦值
          >> A=[1, 2; 3, 4];
          >> B={1:4, A, 'abcd'}
          B =
             [1x4 double]    [2x2 double]    'abcd'
          >> c{1,1}=1:4;
          >> c{1,2}=A;
          >> c{1,3}='abcd';
          >> c
          c =
              [1x4 double]    [2x2 double]    'abcd'
          >> c{2}
          ans =
               1     2
               3     4
          >> c(2)
          ans =
              [2x2 double]

          注:
          1)單元型變量的元素不是以指針的方式保存。改變其元素原變量矩陣A的值不等于改變變量B的第2個(gè)元素的值。
          2)單元型變量自身可以嵌套。

          >> D={1:4,A,B}
          D =
          [1x4 double]    [2x2 double]    {1x3 cell}

          >> D{3}{3}
          ans =
          abcd

          >> A(1,2)=-10
          A =
               1   -10
               3     4

          >> c{2}
          ans =
               1     2
               3     4

          --單元型變量的相關(guān)函數(shù)
          -cell          生成單元型變量
          -cellfun   對(duì)單元型變量中元素作用的函數(shù)
          -celldisp   顯示單元型變量的內(nèi)容
          -cellplot    圖形顯示單元型的內(nèi)容
          -num2cell   數(shù)值數(shù)組轉(zhuǎn)換為單元型變量
          -deal       輸入輸出處理
          -cell2struct  單元型變量轉(zhuǎn)換為結(jié)構(gòu)型變量
          -struct2cell  結(jié)構(gòu)型變量轉(zhuǎn)換為單元型變量-iscell      判斷是否為單元型變量   
          -reshape    改變單元數(shù)組的結(jié)構(gòu)

          >> cellfun('islogical', B)
          % 其他函數(shù)isreal, isempty, length, ndims等
          ans =
               0     0     0

          >> celldisp(B)
          B{1} =
               1     2     3     4
          B{2} =
               1     2
               3     4
          B{3} =
          abcd

          >> size(D)
          ans =
               1     3
          >> reshape(D,3,1)
          ans =
              [1x4 double]
              [2x2 double]
              {1x3 cell  }
          >> size(ans)
          ans =
               3     1

          7. 結(jié)構(gòu)型變量
          以指針方式傳遞數(shù)據(jù),將不同數(shù)據(jù)類型組合在一起的數(shù)據(jù)類型。

          --定義
          (1)賦值語句直接定義,以指針操作符‘.’連接結(jié)構(gòu)變量名和屬性名;
          (2)由struct函數(shù)定義
             結(jié)構(gòu)變量名=struct(元素名1, 元素值1,元素名2, 元素值2, …)


          >> A.a1='abcd';
          >> A.a2=1;
          >> A.a3=[1,2,3,4];
          >> A
          A =
              a1: 'abcd'
              a2: 1
              a3: [1 2 3 4]

          >> B=[1,2;3,4];
          >> A(2).a1='efgh';
          >> A(2).a2=2;
          >> A(2).a3=B;
          >> A
          A =
          1x2 struct array with fields:
              a1
              a2
              a3

          >> A(1)
          ans =
              a1: 'abcd'
              a2: 1
              a3: [1 2 3 4]
          >> A(2)
          ans =
              a1: 'efgh'
              a2: 2
              a3: [2x2 double]

          >> C=struct('c1',1,'c2',B, 'c3','abcd')
          C =
              c1: 1
              c2: [2x2 double]
              c3: 'abcd'

          >> C.c1=A
          C =
              c1: [1x2 struct]
              c2: [2x2 double]
              c3: 'abcd'

          >> C.c1(1).a1
          ans =
          abcd

          --結(jié)構(gòu)型變量的相關(guān)函數(shù)
          -struct     創(chuàng)建或轉(zhuǎn)換結(jié)構(gòu)變量
          -findnames  得到結(jié)構(gòu)型變量的屬性名
          -getfield   得到結(jié)構(gòu)型變量的屬性值
          -setfield   設(shè)定結(jié)構(gòu)型變量的屬性值
          -rmfield   刪除結(jié)構(gòu)型變量的屬性
          -isfield    判斷是否為結(jié)構(gòu)型變量的屬性
          -isstruct   判斷是否為結(jié)構(gòu)型變量

          >> fieldnames(C)
          ans =
              'c1'
              'c2'
              'c3'
          >> iscell(ans)
          ans =
               1

          >> D=getfield(C,'c1')
          D =
          1x2 struct array with fields:
              a1
              a2
              a3

          >> C=setfield(C,'c1',2)
          C =
              c1: 2
              c2: [2x2 double]
              c3: 'abcd'

          >> C=rmfield(C,'c1')
          C =
              c2: [2x2 double]
              c3: 'abcd'

          >> isfield(C,'c2')
          ans =
               1

          >> isstruct(C)
          ans =
               1

           


          2.2 矩陣的基本運(yùn)算

          I.?dāng)?shù)和算術(shù)表達(dá)式
          3 –90  0.0001  9.1234  1.6021e-20 
          5.02252e23

          數(shù)學(xué)運(yùn)算符:
          +  -  *  /  (右除)   \  (左除)   ^

          II.?dāng)?shù)學(xué)函數(shù)

          基本三角函數(shù) sin cos sec csc tan cot
          反三角函數(shù) asin acos asec acsc atan acot
          雙曲函數(shù) sinh cosh sech csch tanh coth
          反雙曲函數(shù) asinh acosh asech acsch atanh acoth
          指數(shù)和對(duì)數(shù) exp log Log10 sqrt  
          復(fù)數(shù)運(yùn)算 abs angle conj real imag 
          數(shù)值函數(shù) fix floor ceil round rem 
          整數(shù)函數(shù) lcm gcd    
                


          >> x=5.1
          x =
              5.1000
          >> fix(x)
          ans =
          5
          >> floor(x)
          ans =
          5
          >> ceil(x)
          ans =
          6
          >> round(x)
          ans =
          5
          >> rem(5,3)
          ans =
          2
          >> sin(1+2i)
          ans =
          3.1658 + 1.9596i

          III.矩陣及其元素

          1.矩陣輸入的基本方法
          >> A=[1 2 3]
          A =
               1     2     3
          >> A=[1 2 3;4 5 6;7 8 9]
          A =
               1     2     3
               4     5     6
               7     8     9
          >> A=[1, 2, 3;
          4,5,6;
          7, 8,9]
          A =
               1     2     3
               4     5     6
               7     8     9
          >>  A=[1, 2, 3
          4,5,6
          7, 8,9]

          A =
               1     2     3
               4     5     6
               7     8     9

          2.矩陣元素的存取
          Matlab的矩陣元素可以為任何數(shù)值表達(dá)式。
          >> x=[-1.3 sqrt(3) (1+2+3)*4/5]
          x =
             -1.3000    1.7321    4.8000

          >> A=[1+5i 2+6i]
          A =
             1.0000 + 5.0000i   2.0000 + 6.0000i

          >> A=[1 2; 3 4]+i*[5 6;7 8]
          A =
             1.0000 + 5.0000i   2.0000 + 6.0000i
             3.0000 + 7.0000i   4.0000 + 8.0000i


          Matlab的矩陣元素的引用:

          >> x=A(1,2)
          x =
             2.0000 + 6.0000i

          Matlab的矩陣的維數(shù)自動(dòng)擴(kuò)充:
          >> x=[-1.3 sqrt(3) (1+2+3)*4/5]
          x =
             -1.3000    1.7321    4.8000
          >> x(5)=abs(x(1))
          x =
             -1.3000  17321  4.8000   0   1.3000
          >> A=[1 2;3 4]
          A =
               1     2
               3     4
          >> A(3,1)=-1
          A =
               1     2
               3     4
          -1     0


          3.子矩陣的操作
          大的矩陣可以通過小的矩陣擴(kuò)充得到:
          >> A=[A;2 1]
          A =
               1     2
               3     4
              -1     0
               2     1
          >> A=[A, [1 2 3 4]']
          A =
               1     2     1
               3     4     2
              -1     0     3
               2     1     4

          小的矩陣可以從大的矩陣抽取得到:
          A(:)—A的所有元素;
          A(:,J)—A的第J列所有元素;
          A(J:K)—A(J),A(J+1),…,A(K);
          A(:,J:K)—A(:,J),A(:,J+1),…A(:,K);

          A(J,:)—A的第J行所有元素;
          A(J:K,:)—A(J,:),A(J+1,:),…A(K.:);
          A =
               1     2     1
               3     4     2
              -1     0     3
               2     1     4
          >> y=A(1:3,:)
          y =
               1     2     1
               3     4     2
              -1     0     3

          >> x=A(:,1:2)
          x =
               1     2
               3     4
              -1     0
               2     1

          >> z=A(1:2,2:3)
          z =
               2     1
               4     2
          4. “:”運(yùn)算符的用法
          用來產(chǎn)生相同增量的向量的方法:
          >> t=1:5
          t =
               1     2     3     4     5

          >> x=pi:-pi/3:0
          x =
             3.1416    2.0944    1.0472    0

          >> x=(0.0:0.2:1.0)';%‘'’表示轉(zhuǎn)置
          >> y=sin(x);  %計(jì)算函數(shù)值
          >> [x y]     %組合出矩陣
          ans =
                   0         0
              0.2000    0.1987
              0.4000    0.3894
              0.6000    0.5646
              0.8000    0.7174
              1.0000    0.8415


          5.生成特殊矩陣的函數(shù)
          >> rand(1,3)
          ans =
              0.9501    0.2311    0.6068

          >> rand(3)
          ans =
              0.4860    0.4565    0.4447
              0.8913    0.0185    0.6154
              0.7621    0.8214    0.7919

          >> eye(2,3)
          ans =
               1     0     0
               0     1     0

          >> ones(3,2)
          ans =
               1     1
               1     1
               1     1

          >> randn(3,2)  %標(biāo)準(zhǔn)正態(tài)分布
          ans =
             -0.4326    0.2877
             -1.6656   -1.1465
              0.1253    1.1909

          IV. 矩陣操作
          1.矩陣轉(zhuǎn)置
          >> A=[1,2,3;4,5,6]
          A =
               1     2     3
               4     5     6
          >> B=A'
          B =
             1     4
               2     5
               3     6

          >> C=[1+i,-i;2,1-i]
          C =
             1.0000 + 1.0000i        0 - 1.0000i
             2.0000             1.0000 - 1.0000i
          >> D=C'  %轉(zhuǎn)置共扼
          D =
             1.0000 - 1.0000i   2.0000         
          0 + 1.0000i   1.0000 + 1.0000i


          2.對(duì)角矩陣
          diag函數(shù)用來生成一個(gè)對(duì)角矩陣
          或提取一個(gè)矩陣的對(duì)角元素:
          >> diag(2:4)
          ans =
               2     0     0
               0     3     0
               0     0     4
          >> A
          A =
               1     2     3
               4     5     6
          >> diag(A)
          ans =
               1
               5
          3.上/下三角矩陣
          >> tril(A)
          ans =
               1     0     0
               4     5     0

          >> triu(A)
          ans =
               1     2     3
               0     5     6

          >> fliplr(A)
          ans =
               3     2     1
               6     5     4

          >> flipud(A)
          ans =
               4     5     6
               1     2     3


          V.矩陣運(yùn)算
          1.加和減
          >> A
          A =
               1     2     3
               4     5     6
          >> B=[1 4 7;2 5 6]
          B =
               1     4     7
               2     5     6
          >> C=A+B
          C =
               2     6    10
               6    10    12

          >> D=A-1.0
          D =
               0     1     2
               3     4     5

           

          2.乘法
          >> A
          A =
               1     2     3
               4     5     6
          >> A'
          ans =
               1     4
               2     5
               3     6
          >> A*A'
          ans =
              14    32
              32    77

          3.矩陣除法
          標(biāo)量運(yùn)算時(shí):
          矩陣運(yùn)算時(shí):
           --inv(A)*B;
           --A*inv(B);

          >> A=[1 2 3]
          A =
               1     2     3
          >> B=[1 2 -3; -2 5 6; 7 2 1]
          B =
               1     2    -3
              -2     5     6
               7     2     1
          >> A/B
          ans =
             -0.1818    0.3636    0.2727

          >> B\A'
          ans =
              0.2929
              0.4444
              0.0606

           

           

          4. 矩陣乘方
          >> B
          B =
               1     2    -3
              -2     5     6
               7     2     1
          >> B^3
          ans =
               6    -6   114
             258   309   150
             -98   134   118

          5.?dāng)?shù)組運(yùn)算
          ----向量或矩陣間對(duì)應(yīng)元素的運(yùn)算:
          .+  .-   .*   ./   .\   .^

          >> x=[1 2 3]
          x =
               1     2     3
          >> y=[4 5 6]
          y =
               4     5     6
          >> z=x.*y
          z =
               4    10    18
          >> z1=x.^y
          z1 =
              1    32   729
          >> z3=x.^2
          z3 =
               1     4     9
          >> z4=2.^x
          z4 =
               2     4     8

          >> [1 2; 3 4]./[2 2; 2 2]
          ans =
              0.5000    1.0000
              1.5000    2.0000
          >> [1 2; 3 4].\[2 2; 2 2]
          ans =
              2.0000    1.0000
              0.6667    0.5000


          常見數(shù)值問題介紹
          一、 線性方程組求解
          A*x=b
          A為m*m階矩陣, X和b為m階向量。
           
          >> A=[1,2,3;4,5,6;7,8,0];
          >> b=[366;804;351];
          >> det(A)
          ans =
              27
          >> x=inv(A)*b
          x =
             25.0000
             22.0000
             99.0000

           

          >> x=A\b
          x =
             25.0000
             22.0000
             99.0000

          廣義情況:方程數(shù)與未知量數(shù)目不等時(shí),線性方程組通常不存在唯一解,但最小二乘解x*是存在唯一。
            
          >> A=[1 2 3; 4 5 6; 7 8 0; 2 5 8];
          >> b=[366 804 351 514]';
          >> x=A\b
          x =
            247.9818
           -173.1091
            114.9273

           


          二、矩陣函數(shù)
          I.矩陣基本性質(zhì)
          1)行列式
          >> A=rand(3)
          A =
              0.9501    0.4860    0.4565
              0.2311    0.8913    0.0185
              0.6068    0.7621    0.8214
          >> det(A)
          ans =
              0.4289

          2)秩
          >> rank(A)
          ans =
               3

          3)跡
          >> trace(A)
          ans =
              2.6628

          4)范數(shù)
          >> A=[1 1 1;0 0 0;1 1 1]
          A =
               1     1     1
               0     0     0
               1     1     1
          >> norm(A)   %2-范數(shù)
          ans =
              2.4495

          >> norm(A,inf)   % inf-范數(shù)
          ans =
               3

          >> norm(A,1)    %1-范數(shù)
          ans =
               2

           

           

          II.特征值計(jì)算
          >> A=[0 1;-1 0]
          A =
               0     1
              -1     0
          >> eig(A)
          ans =
                  0 + 1.0000i
                  0 - 1.0000i

          >> [x,D]=eig(A)
          x =
             0.7071           0.7071         
             0 + 0.7071i       0 - 0.7071i

          D =
                  0 + 1.0000i        0         
                  0                  0 - 1.0000i

          ---A*X=X*D


          III.三角分解
          >> A=[1 2 3;4 5 6; 7 8 9]
          A =
               1     2     3
               4     5     6
               7     8     9
          >> [L,U]=lu(A)
          L =
              0.1429    1.0000         0
              0.5714    0.5000    1.0000
              1.0000         0         0
          U =

              7.0000    8.0000    9.0000
                   0    0.8571    1.7143
                   0         0    0.0000

          >> L*U
          ans =
               1     2     3
               4     5     6
               7     8     9
          >> [L,U,P]=lu(A)
          L =
              1.0000         0         0
              0.1429    1.0000         0
              0.5714    0.5000    1.0000
          U =
              7.0000    8.0000    9.0000
                   0    0.8571    1.7143
                   0         0    0.0000
          P =
               0     0     1
               1     0     0
               0     1     0

          >> P*A
          ans =
               7     8     9
               1     2     3
               4     5     6

           

          >> L*U
          ans =
               7     8     9
               1     2     3
               4     5     6

          IV.正交分解
          >> A=[1 2 3; 4 5 6;7 8 9;10 11 12]
          A =
               1     2     3
               4     5     6
               7     8     9
              10    11    12

          >> [Q,R]=qr(A)
          Q =
             -0.0776   -0.8331    0.5456   -0.0478
             -0.3105   -0.4512   -0.6919    0.4704
             -0.5433   -0.0694   -0.2531   -0.7975
             -0.7762    0.3124    0.3994    0.3748


          R =
            -12.8841  -14.5916  -16.2992
                 0   -1.0413   -2.0826
                 0       0    -0.0000
                 0       0         0

          >> Q*R
          ans =
              1.0000    2.0000    3.0000
              4.0000    5.0000    6.0000
              7.0000    8.0000    9.0000
             10.0000   11.0000   12.0000

          -- QR分解可用來求超定方程的最小二乘解

          >> b=[1;3; 5; 7]
          b =
               1
               3
               5
               7

          >> x=A\b
          Warning: Rank deficient, rank = 2  tol =   1.4594e-014.
          x =
              0.5000
                   0
              0.1667

          >> y=Q'*b
          y =
             -9.1586
             -0.3471
              0.0000
             -0.0000
          >> x=R\y
          Warning: Rank deficient, rank = 2  tol =   1.4594e-014.
          x =

              0.5000
                   0
              0.1667
          三、方程求根
           

          >> p=[1 -12 0 25 116]
          p =
               1   -12     0    25   116
          >> r=roots(p)
          r =
            11.7473         
             2.7028         
            -1.2251 + 1.4672i
            -1.2251 - 1.4672i

          已知多項(xiàng)式的根,可用poly構(gòu)造相應(yīng)的多項(xiàng)式:

          >> pp=poly(r)
          pp =
              1.0000  -12.0000   -0.0000   25.0000  116.0000

          四、曲線擬和
          I.一維插值
          >> h=1:12;
          >> t=[5 8 9 15 25 29 31 30 22 25 27 24];
          >> plot(h,t,h,t,'+')
           
          interp1插值函數(shù)的格式:
          Y1=interp1(X,Y,X1,’method’)
          X,Y—原數(shù)據(jù)點(diǎn);
          X1—加細(xì)的數(shù)據(jù)點(diǎn),或希望得到插值數(shù)據(jù)的數(shù)據(jù)點(diǎn);
          Method---‘linear’,  ‘spline’, ‘cubic’;

          >> x1=1:0.2:12;
          >> y1=interp1(h,t,x1,'spline');
          >> plot(h,t,'k+',x1,y1,'k-')
           

          II.曲線擬和
          設(shè)有一組數(shù)據(jù)點(diǎn)
           
          尋找一個(gè)多項(xiàng)式n次多項(xiàng)式P*(x):
           

          >> x=0:0.1:1;
          >> y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
          >> p=polyfit(x,y,2)
          p =
             -9.8108   20.1293   -0.0317

          >> xi=linspace(0,1,100);
          >> z=polyval(p,xi);
          >> plot(x,y,'ko',xi,z,'r-')
           


          >> p=polyfit(x,y,10);
          >> xi=linspace(0,1,100);
          >> z=polyval(p,xi);
          >> plot(x,y,'ko',xi,z,'r-')
           

          五、數(shù)值積分
          sum(x)—輸入數(shù)組x, 輸出為x的和;

          cumsum(x)—輸入數(shù)組x, 輸出為x的依次累加和;


          trapz(x)—輸入數(shù)組x, 輸出為x按梯形求積公式計(jì)算的積分(單位步長);

          trapz(x,y)—輸入數(shù)組x,y, 輸出y對(duì)x按梯形求積公式計(jì)算的積分(步長可以不相等);

          quad(‘fun’,a,b)—用辛普森公式(2階)計(jì)算以fun.m的函數(shù)在(a,b)上的積分,相對(duì)誤差為0.001;

          quad(‘fun’,a,b,tol)—用辛普森公式(2階)計(jì)算以fun.m的函數(shù)在(a,b)上的積分,相對(duì)誤差為tol;

          quad8(‘fun’,a,b,tol)—用辛普森公式(8階)計(jì)算以fun.m的函數(shù)在(a,b)上的積分,相對(duì)誤差為tol;

          rand(1,n)—產(chǎn)生n個(gè)(0,1)的隨機(jī)數(shù)。

           

          計(jì)算積分
          1)矩形公式和梯形公式:將
          >> h=pi/20;
          >> x=0:h:pi/2;
          >> y=sin(x);
          >> z1=sum(y(1:10))*h
          z1 =
              0.9194
          >> z2=sum(y(2:11))*h
          z2 =
              1.0765
          >> z=cumsum(y);
          >> z11=z(10)*h
          z11 =
              0.9194
          >> z12=(z(11)-z(1))*h
          z12 =
              1.0765
          >> z3=trapz(y)*h
          z3 =
              0.9979
          2)辛普森公式
          >> z4=quad('sin',0,pi/2)
          z4 =
              1.0000

          3)蒙特卡羅方法
          >> n=100000;
          >> x=rand(1,n);
          >> y=sin(x.*pi/2);
          >> z=sum(y)*pi/(2*n)
          z =
              1.0005

           

           

           

           


          六、數(shù)據(jù)分析
          max----最大值
          min----最小值
          mean----均值
          media----中值
          std----標(biāo)準(zhǔn)差
          sum----元素總和
          cumsum----累加和
          prod----元素乘積
          cumprod----累積
          corrcoef----互相關(guān)系數(shù)矩陣
          cov----協(xié)方差矩陣
          ……

          >> a=[ 1 3 5 9 3 2 7 6];
          >> mean(a)
          ans =
              4.5000
          >> median(a)
          ans =
               4

          >> std(a)
          ans =
              2.7255
          >> cumsum(a)
          ans =

               1     4     9    18    21    23    30    36

          >> b=[1 4 6 8 2 1 5 0];
          >> corrcoef(a,b)
          ans =
              1.0000    0.6771
              0.6771    1.0000
          >> cov(a,b)
          ans =
              7.4286    5.2143
              5.2143    7.9821

           

           

           

           

          編程基礎(chǔ)

          一、 關(guān)系運(yùn)算和IF語句
          I. 關(guān)系運(yùn)算和邏輯操作符
          關(guān)系運(yùn)算符
          <   <=   >    >=   ==   ~=

          邏輯操作符
          &   |   ~

          y=all(x)
          若x 為向量,當(dāng)所有元素非零時(shí)y=1,
          否則y=0;
          若x 為矩陣,all作用于列元素,y為行向量。

          y=any(x)
          若x 為向量,當(dāng)有一個(gè)元素非零時(shí)y=1,
          否則y=0;
          若x 為矩陣,all作用于列元素,y為行向量。

           

          >> A=[1 2; 0 1]
          A =
               1     2
               0     1
          >> any(A)    %any表示矩陣的每一列中%是否有非零元素
          ans =
               1     1

          >> all(A)  %all表示矩陣的每一列中
          %是否全是非零元素
          ans =
               0     1


          IF語句:

          1)
          if <關(guān)系表達(dá)式>
          <語句1>
          end

          2)
          if <關(guān)系表達(dá)式>
          <語句1>
          else
          <語句2>
          end

          3)
          if <關(guān)系表達(dá)式1>
          <語句1>
          elseif <關(guān)系表達(dá)式1>
          <語句2>
          ……
          elseif <關(guān)系表達(dá)式n>
          <語句n>
          else
          <語句n+1>
          end

           


          二、for 循環(huán)
          for <循環(huán)參數(shù)>=<初值>:<步長>:<終值>
             <語句>
          end

          >> for i=1:3
          for j=1:4
          a(i,j)=1/(i+j-1);
          end
          end
          >> format rat
          >> a
          a =
              1      1/2        1/3       1/4    
             1/2     1/3        1/4        1/5    
             1/3     1/4        1/5        1/6 

          二、 while語句
          while <關(guān)系表達(dá)式>
             <語句>
          end

          求出滿足1+2+…+n<100的最大整數(shù)n:
          >> sum=0;n=0;
          >> while sum<100
          n=n+1;
          sum=sum+n;
          end;
          >> n=n-1;
          >> n
          n =
               13   

          三、 switch語句
          switch <表達(dá)式>
          case  value1
            <語句1>
          case  value2
            <語句2>

          otherwise
            <語句n>
          end

          四、 M文件:文本文件及函數(shù)文件
          I.文本文件: <M-文件名>.m
          fibo.m:

          %An M-file to calculate Fibonnacinumbers
          f=[1 1]; i=1;
          while i<15
            f(i+2)=f(i)+f(i+1);
            i=i+1;
          end
          plot(f, ‘*k’)

           
          II.函數(shù)文件
          M-文件的第一行包含function;
          變量和運(yùn)算都在文件內(nèi)部,不在工作間;
          文件名為函數(shù)名;

          function <因變量>=<函數(shù)名>(<自變量>)

          function a=randint(m,n)
          %RANDINT Randomly generated integral %matrix
          %randint(m,n) returns an m-by-n matrix %with entries between 0 and 9
          a=floor(10*rand(m,n));

          >>x=randint(2,3)
          x=
            9  6  8
            2  3  5

           


          stat.m:
          function [mean,stdev]=stat(x)
          % STAT Mean and standard deviation
          % For a vector x, stat(x) returns the mean %and standard deviation of x
          % For a matrix x, stat(x) returns two row %vectors containing, respectively,
          % the mean and standard deviation of each %column.
          [m,n]=size(x);
          if m==1
              m=n;  % handle case of a row vector
          end
          mean=sum(x)/m;
          stdev=sqrt(sum(x.^2)/m-mean.^2);

          >> x=[2 4 -7 0 5 -1];
          >> [xm,xd]=stat(x)
          xm =
              0.5000
          xd =
              3.9476

          posted @ 2007-09-27 11:54 張生工作室 閱讀(2206) | 評(píng)論 (3)編輯 收藏

          Data for table (train)
          RoadNoRoadLineRoadType
          D01 S0567-S0042-S0025 D
          D02 S1487 D
          D03 S0303-S0302 D
          D04 S0566 D
          D05 S0436-S0438-S0437-S0435 D
          D06 S0392-S0394-S0393-S0391 D
          D07 S0386-S0388-S0387-S0385 D
          D08 S3068-S0617-S0619-S0618-S0616 D
          D09 S1279 D
          D10 S2057-S0721-S0722-S0720 D
          D11 S0070-S2361-S3721 D
          D12 S0609-S0608 D
          D13 S2633-S0399-S0401-S0400 D
          D14 S3321-S2535-S2464 D
          D15 S3329-S2534 D
          D16 S3506-S0167-S0168 D
          D17 S0237-S0239-S0238-S0236-S0540 D
          D18 S0668 D
          D19 S0180-S0181 D
          D20 S2079-S2933-S1919-S1921-S1920 D
          D21 S0465-S0467-S0466-S0464 D
          D22 S3457 D
          D23 S2512 D
          D24 S0537-S3580 D
          D25 S0526-S0528-S0527-S0525 D
          D26 S3045-S0605-S0607 D
          D27 S0087-S0088-S0086 D
          D28 S0855-S0856-S0854-S0857 D
          D29 S0631-S0632-S0630 D
          D30 S3874-S1426-S1427 D
          D31 S0211-S0539-S0541-S0540 D
          D32 S0978-S0497-S0498 D
          D33 S1894-S1896-S1895 D
          D34 S1104-S0576-S0578-S0577 D
          D35 S3010-S0583-S0582 D
          D36 S3676-S0427-S0061-S0060 D
          D37 S1961-S2817-S0455-S0456 D
          D38 S3262-S0622 D
          D39 S1956-S0289-S0291 D

          query result ( 39 records )

          posted @ 2007-09-24 16:29 張生工作室 閱讀(948) | 評(píng)論 (2)編輯 收藏

               摘要: Data for table (station) StationRoadNo S0001 L421A-L421B- S0002 L027C-L152C-L365C-L395A-L395B-L485C- S0003 L268A-L268B- S0004 L002A-L002B-L018A-L018B-L027C-L038A-L038B...  閱讀全文
          posted @ 2007-09-24 16:21 張生工作室 閱讀(974) | 評(píng)論 (1)編輯 收藏

               摘要: Data for table (roadno) RoadNoRoadLineRoadType L001A S0619-S1914-S0388-S0348-S0392-S0429-S0436-S3885-S3612-S0819-S3524-S0820-S3914-S0128-S0710 A L002A S3748-S2160-S1223-S1404-S23...  閱讀全文
          posted @ 2007-09-24 16:16 張生工作室 閱讀(1689) | 評(píng)論 (3)編輯 收藏

          pointbase - CSDN tag

                   
          pointbase - CSDN tag

                 

               

               
          Tomcat5.5下的JNDI的配置
          <resource-ref>    <descrtiption>引用資源說明</descrtiption>  <res-ref-name>引用資源的JNDI名</res-ref-name>  <res-type>引用資源的類名</res-type>  <res-auth>管理者(Container)</res-auth><!--Container-容器管理 Application-Web應(yīng)用管理-->  </resource-ref>注意,要把你的驅(qū)動(dòng)拷到common/lib下,我用的是pointbase因此我拷的是pbclient44.jar到了common/lib下(對(duì)pointbase感興趣的讀者可以看我的另一篇文章pointbase數(shù)據(jù)庫學(xué)習(xí),里面也提到了我為什么是用pointbase數(shù)據(jù)庫作為講解)。
          環(huán)境變量---為自己備份
          @rem Set BEA Homeset  BEA_HOME=C:\beaFOR %%i IN ("%BEA_HOME%") DO SET BEA_HOME=%%~fsi@rem Set WebLogic Homeset  WL_HOME=C:\bea\weblogic81FOR %%i IN ("%WL_HOME%") DO SET WL_HOME=%%~fsi.@rem set up WebLogic Server‘s class pathset WEBLOGIC_CLASSPATH=%JAVA_HOME%\lib\tools.jar;%WL_HOME%\server\lib\weblogic_sp.jar;%WL_HOME%\server\lib\weblogic.jar;%WL_HOME%\server\lib\ojdbc14.jar;%WL_HOME%\common\lib\msbase.jar;%WL_HOME%\common\lib\mssqlserver.jar;%WL_HOME%\common\lib\msutil.jar;
          J2EE/RI Pointbase數(shù)據(jù)庫遠(yuǎn)程命令執(zhí)行漏洞
          信息提供:安全公告(或線索)提供熱線:51cto.editor@gmail.com漏洞類別:設(shè)計(jì)錯(cuò)誤攻擊類型:嵌入惡意代碼發(fā)布日期:2003-12-16更新日期:2003-12-23受影響系統(tǒng):Sun JDK 1.4.2_02安全系統(tǒng):無漏洞報(bào)告人:Marc Schoenefeld (marc.schoenefeld@uni-muenster.de)漏洞描述:BUGTRAQ ID: 9230J2EE/RI Pointbase是一個(gè)純JAVA數(shù)據(jù)庫,可以方便的開發(fā)JAVA產(chǎn)品。J2EE/RI (Reference Implementation) Pointbase數(shù)據(jù)庫存在安全問題,遠(yuǎn)程攻擊者可以利用這個(gè)漏洞通過jdbc插入任意代碼或?qū)?shù)據(jù)庫進(jìn)行拒絕服務(wù)攻擊。
          Java數(shù)據(jù)庫PointBase 5.5發(fā)布
          PointBase是一個(gè)100%純用java編寫的小型數(shù)據(jù)庫,其體積小(數(shù)據(jù)庫服務(wù)器引擎僅1M),客戶端文件加起來不到1M,因此經(jīng)常可以用來作為項(xiàng)目演示。PointBase Micro數(shù)據(jù)庫能運(yùn)行在FP/PP/PersonalJava和MIDP平臺(tái)上。PointBase Micro數(shù)據(jù)庫通過UniSync同步服務(wù)器能容易地同服務(wù)器端PointBase嵌入式數(shù)據(jù)庫和Oracle數(shù)據(jù)庫同步。
          配置PointBase
          主要文件:只有三個(gè)PBclient.jar,pbembedded.jar 和 pbtools.jar 設(shè)置pointBase環(huán)境變量:setPBEnv.batset PB_HOME=D:\Devs\pointbaseset OLDCP=%CLASSPATH%set CLASSPATH=%PB_HOME%/lib/pbclient.jarset CLASSPATH=%CLASSPATH%;%PB_HOME%/lib/pbembedded.jarset CLASSPATH=%CLASSPATH%;%PB_HOME%/lib/pbtools.jarset CLASSPATH=%CLASSPATH%;%OLDCP% 啟動(dòng)PointBase server:Java com.pointbase.net.netServer參數(shù):/win :窗口模式啟動(dòng)/d :0-3 JDBC顯示信息的詳細(xì)程度。
          Workshop8.1中使用ANT自動(dòng)執(zhí)行Sql
          Tomcat5.5下的jndi的配置
          在基于MIDP的應(yīng)用程序上使用JDBC
          本文將討論如何在MIDP應(yīng)用程序中使用JDBC,我們使用的產(chǎn)品是DataMirror的PointBase。使用PointBase的UniSync你可以輕松的把本地?cái)?shù)據(jù)庫上的數(shù)據(jù)和企業(yè)數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行同步,企業(yè)數(shù)據(jù)庫可以是Oracle,SQL Server等。接下來你就可以使用標(biāo)準(zhǔn)的JDBC代碼了,首先需要建立數(shù)據(jù)庫連接: Connection con = DriverManager.getConnection("jdbc:pointbase:micro:sample", "PBPUBLIC", "PBPUBLIC"); Con變量代表了數(shù)據(jù)庫連接,使用它我們可以進(jìn)行數(shù)據(jù)庫的讀寫操作了。
          BEA WebLogic Workshop 8.1學(xué)習(xí)筆記之一 - 準(zhǔn)備篇
          <img src=http://dev2dev.bea.com.cn/images/dot6B6B6B.gif width="100%" height="1" alt="" />

           前言

           本文作者用BEA WebLogic Workshop做了一個(gè)簡單的EJB的開發(fā)的例子,并對(duì)該例子做了一些Web應(yīng)用方面的拓展,力圖通過這些使用流程教會(huì)讀者能夠上手使用BEA
           WebLogic Workshop。
           

          WebLogic Workshop 8.1產(chǎn)品概述

           BEA WebLogic Workshop是一個(gè)統(tǒng)一、簡化、可擴(kuò)展的開發(fā)環(huán)境,能夠使所有開發(fā)人員(不僅僅是J2EE專家)都能夠在
           BEA WebLogic Platform 8.1 上,迅速構(gòu)建、測(cè)試和部署面向服務(wù)的企業(yè)級(jí)應(yīng)用。
           

          WebLogic Workshop 8.1 的獨(dú)特性表現(xiàn)在:

           · 統(tǒng)一性-- 它是構(gòu)建所有平臺(tái)應(yīng)用的一個(gè)IDE,一個(gè)框架和一種面向服務(wù)的方法,無論是構(gòu)建
           Web 應(yīng)用、Web 服務(wù),還是構(gòu)建門戶和集成應(yīng)用全都適用。

           · 簡便性-- 它使所有的開發(fā)人員都能夠使用 J2EE,而且
          WebLogic Workshop
          <img src=http://dev2dev.bea.com.cn/images/dot6B6B6B.gif width="100%" height="1" alt="" />

           前言

           本文作者用BEA WebLogic Workshop做了一個(gè)簡單的EJB的開發(fā)的例子,并對(duì)該例子做了一些Web應(yīng)用方面的拓展,力圖通過這些使用流程教會(huì)讀者能夠上手使用BEA
           WebLogic Workshop。
           

          WebLogic Workshop 8.1產(chǎn)品概述

           BEA WebLogic Workshop是一個(gè)統(tǒng)一、簡化、可擴(kuò)展的開發(fā)環(huán)境,能夠使所有開發(fā)人員(不僅僅是J2EE專家)都能夠在
           BEA WebLogic Platform 8.1 上,迅速構(gòu)建、測(cè)試和部署面向服務(wù)的企業(yè)級(jí)應(yīng)用。
           

          WebLogic Workshop 8.1 的獨(dú)特性表現(xiàn)在:

           · 統(tǒng)一性-- 它是構(gòu)建所有平臺(tái)應(yīng)用的一個(gè)IDE,一個(gè)框架和一種面向服務(wù)的方法,無論是構(gòu)建
           Web 應(yīng)用、Web 服務(wù),還是構(gòu)建門戶和集成應(yīng)用全都適用。

           · 簡便性-- 它使所有的開發(fā)人員都能夠使用 J2EE,而且
          高可靠性移動(dòng)應(yīng)用程序-移動(dòng)數(shù)據(jù)庫和J2ME工具(3)
          翻譯作者:jungleguo 2003-11-15原文: http://www.javaworld.com/javaworld/jw-06-2003/jw-0606-wireless-p3.htmlJ2ME移動(dòng)數(shù)據(jù)庫的選擇當(dāng)然PointBase并不是J2ME移動(dòng)數(shù)據(jù)庫產(chǎn)品的唯一選擇。JDBC數(shù)據(jù)庫對(duì)于程序來說是最容易的數(shù)據(jù)庫類型。在FP/PP/PersonalJava平臺(tái)上PointBase Micro 數(shù)據(jù)庫僅用91 KB 存儲(chǔ)器足跡就能支持大多數(shù)JDBC和SQL功能。PointBase Micro 數(shù)據(jù)庫的MIDP版本提供了一個(gè)用瀏覽器打開的MIDlet數(shù)據(jù)庫控制臺(tái)。PointBase Micro 數(shù)據(jù)庫通過UniSync 同步服務(wù)器能容易地同服務(wù)器端PointBase嵌入式數(shù)據(jù)庫和Oracle 數(shù)據(jù)庫同步。

          posted @ 2007-09-14 09:25 張生工作室 閱讀(517) | 評(píng)論 (1)編輯 收藏

               摘要:   /**//*  * ComplexFind.java  *  * Created on 2007年9月10日, 下午8:31  */ import java.io.ByteArrayInputStream; import java.io.ByteArrayO...  閱讀全文
          posted @ 2007-09-10 22:22 張生工作室 閱讀(422) | 評(píng)論 (0)編輯 收藏

               摘要:   /**//*  * TextBoxTest.java  *  * Created on 2007年9月9日, 下午12:28  */ import java.io.ByteArrayOutputStream; import java.io.IOExcepti...  閱讀全文
          posted @ 2007-09-09 21:33 張生工作室 閱讀(359) | 評(píng)論 (0)編輯 收藏

          在J2ME中讀取各種格式的文本文件

          在J2ME開發(fā)過程中,我們經(jīng)常會(huì)把一個(gè)文字信息保存在txt格式的文本文件中做為資源.這樣便于修改和管理.那么讀取它們對(duì)于一些剛接觸j2me的朋友會(huì)有些困難.前幾天研究了下,看了一些兄弟的文章和代碼,總結(jié)出3種方法分別讀取Unicode,UTF-8,Unicode big endian格式的文件...本文沒考慮讀取的效率問題.

          這三種方法都能讀取中文和英文字符.用來存放的數(shù)組長度視文本長度而定....

          另外還有一些只能讀取英文字符的方法就不列舉出來了.

          一,讀取Unicode格式

              private String read_Uni(String resource)
              {
                  byte word_uni[]=new byte[1024];
                  String strReturn="";
                  InputStream is;
                  try
                  {
                      is=getClass().getResourceAsStream(resource);
                      is.read(word_uni);
                      is.close();
                      StringBuffer stringbuffer = new StringBuffer("");
                      for (int j = 0; j < word_uni.length; )
                      {
                        int k = word_uni[j++]; //注意在這個(gè)地方進(jìn)行了碼制的轉(zhuǎn)換
                        if (k < 0)
                          k += 256;
                        int l = word_uni[j++];
                        if (l < 0)
                          l += 256;
                        char c = (char) (k + (l << 8)); //把高位和低位數(shù)組裝起來
                        stringbuffer.append(c);
                      }
                      strReturn=stringbuffer.toString();
                  }
                  catch(IOException e)
                  {
                      e.printStackTrace();
                  }
                  finally
                  {
                      is=null;
                  }
                  return strReturn;
              }

          二,讀取UTF-8格式

              public String read_UTF(String name)
              {
                  String strReturn = "";
                  InputStream in = null;
                  byte[] word_utf= new byte[1024];
                  try
                  {
                    in = getClass().getResourceAsStream(name);
                    in.read(word_utf);
                    in.close();
                    strReturn=new String(word_utf,"UTF-8");
                  }
                  catch(Exception e)
                  {
                    System.out.println("readUTF Error:"+e.toString());
                  }
                  finally
                  {
                    in = null;
                  }
                  return strReturn;
              }

          三,讀取Unicode big endian格式

          讀取Unicode big endian格式時(shí),采用readChar()方法讀取,所以存放時(shí)使用char數(shù)組存放.

          注意:在文本的末尾加上'$'表示文本的結(jié)束.

          另外代碼第10行dis.skip(2)是略過文件頭2個(gè)字符,如果用microsoft notepad保存的一定存在這兩個(gè)頭字符.

          當(dāng)然,可以使用UltraEdit可以先刪掉這兩個(gè)頭字符,然后使用新建文件,復(fù)制粘貼,保存為其它格式.這樣兩個(gè)頭字符就沒了..

              private String read_Uni_b_e(String resource)
              {
                  char word_uni_b_e[]=new char[1024];
                  String strReturn="";
                  DataInputStream dis;
                  try
                  {
                      dis=new DataInputStream(getClass().getResourceAsStream(resource));
                      int counter=0;
                      dis.skip(2);
                      char temp;
                      while(true)
                      {
                          temp=dis.readChar();
                          if(temp=='$')
                              break;
                          word_uni_b_e[counter++]=temp;
                      }
                      dis.close();
                      strReturn=String.valueOf(word_uni_b_e,0,counter);
                  }
                  catch(Exception e)
                  {
                      System.out.println("read_Uni_b_e error!"+e.getMessage());
                  }
                  finally
                  {
                      dis=null;
                  }
                  return strReturn;
              }

          以上3種方法測(cè)試平臺(tái):

          Operation System: Microsoft Windows XP Professional Service Pack 1

          Emulator: Sun Wireless ToolKit 2.2 beta DefaultColorPhone

          posted @ 2007-09-09 19:48 張生工作室 閱讀(230) | 評(píng)論 (0)編輯 收藏

          J2ME平臺(tái)下文本閱讀器的實(shí)現(xiàn)

          J2ME平臺(tái)下文本閱讀器的實(shí)現(xiàn)

          摘要:本文利用J2ME技術(shù)開發(fā)了一個(gè)文本閱讀器,實(shí)現(xiàn)了手機(jī)對(duì)文本文件的顯示,給出了該程序的實(shí)現(xiàn)代碼,并對(duì)其關(guān)鍵技術(shù)進(jìn)行了詳細(xì)闡述。
          關(guān)鍵字:   J2ME 文本閱讀器 Java 手機(jī)

          0引言
              隨著通訊技術(shù)的發(fā)展及手機(jī)的普及 ,人們正在不斷地給手機(jī)增加新的功能 ,其中 ,使手機(jī)實(shí)現(xiàn)一般只有 PC機(jī)才具有的功能——下載各種程序并運(yùn)行 ,是目前手機(jī)發(fā)展的一個(gè)重要方向。為此 ,人們提出了各種各樣的解決方案 ,其中基于 JAVA的 J2 ME方案無疑是最引人注目的。
              本文通過J2ME開發(fā)一個(gè)文本閱讀器,該程序可下載到手機(jī)上,隨時(shí)隨地的進(jìn)行閱讀,這樣就可以通過這種方式開發(fā)一些學(xué)習(xí)軟件,使手機(jī)用戶可有一個(gè)隨身學(xué)習(xí)的工具書。由于J2ME不可以對(duì)手機(jī)中的文件進(jìn)行讀寫,所以在開發(fā)本程序時(shí),只能在程序打包時(shí)把文本文件作為資源文件加入到J2ME發(fā)布程序中。如果想讀寫手機(jī)上的文件,則要使用各手機(jī)商家提供的特定開發(fā)平臺(tái)和專用的類來開發(fā),下面就文本閱讀器的關(guān)鍵技術(shù)進(jìn)行說明。
          1 J2ME文本閱讀器中的文本格式
              J2ME中文本文件的格式,為了便于程序的開發(fā)和在運(yùn)行中的讀寫處理,對(duì)要處理的文本文件要進(jìn)行一定格式的整理。本程序中的文本要求用純文本即可,每章為一個(gè)獨(dú)立的文件,每一章中均可為多段,在文本中加入的空格和各種符號(hào)都可在閱讀時(shí)如實(shí)的顯示出來。文件寫好后將其存入相應(yīng)項(xiàng)目文件夾下的res文件夾中,如本文中的閱讀器的項(xiàng)目名為test,則可將文本文件存入test\res文件夾下。
              本系統(tǒng)要閱讀三章內(nèi)容,所以制作了三個(gè)文本文件,分別命名為test1.txt、test2.txt、test3.txt,將三個(gè)文件存入test\res文件夾中,到此文本內(nèi)容準(zhǔn)備完成。

          2讀取文本文件的主要技術(shù)問題
              在J2ME中如何讀取文本文件的內(nèi)容,在本系統(tǒng)中寫了一個(gè)函數(shù)用來讀取指定的文本文件,文本文件做為參數(shù)傳給該函數(shù),該函數(shù)的返回值為字符串類型,將文件的內(nèi)容做為一個(gè)完整的字符串返回。在讀取文件內(nèi)容時(shí)用到的主要技術(shù),使用InputStream類定義一個(gè)輸入字節(jié)流對(duì)象in,使用 ByteArrayOutputStream類定義一個(gè)內(nèi)存數(shù)組輸出字節(jié)流對(duì)象s,通過輸入對(duì)象的in.read()方法來讀取一個(gè)字節(jié),將讀出的字節(jié)通過s.write( )方法加入到s中,再使用s.toString()方法將內(nèi)存轉(zhuǎn)為字符串返回。讀取文本文件的函數(shù)定義如下:
              private String myReadLine (String testFileName) {
                  //函數(shù)頭定義了函數(shù)的參數(shù)為文件名組成的字符串,返回值為一個(gè)字符串。
            InputStream  in = this.getClass().getResourceAsStream(testFileName);
                  //由文件名參數(shù)來定義一個(gè)輸入流對(duì)象變量in
              ByteArrayOutputStream  s;
              s = new ByteArrayOutputStream();  //產(chǎn)生內(nèi)存數(shù)組輸出字節(jié)流對(duì)象變量S
              try{
                  int ch=0;
                  ch=in.read();  //由輸入流對(duì)象變量in的read方法以字節(jié)為單位來讀取文件的內(nèi)容,讀取到文件尾時(shí)的值為-1。  
                  while ( ch!= -1 ) {
                    //如果未讀到文件尾把讀取的內(nèi)容寫入S變量中,并讀取下一字節(jié)內(nèi)容
                          s.write( ch );
                          ch=in.read();
                      }
                      in.close();  //關(guān)閉輸入流對(duì)象。
                  }  catch (IOException ioe){
                     System.out.println(ioe.toString());
                  }
                  String str = s.toString();  //將S變量轉(zhuǎn)為字符串
                  try{
                      s.close();  //關(guān)閉輸出流對(duì)象
                  }  catch (IOException ioe){
                     System.out.println(ioe.toString());
                  }
                  return  str.trim();  //返回文件中的內(nèi)容字符串
              }

          3 將文本文件內(nèi)容顯示出來的技術(shù)
              通過Form類定義一個(gè)表單對(duì)象f,通過對(duì)象的f.append()的方法將讀取文本文件返回的字符串內(nèi)容加入到表單對(duì)象中,為了該表單內(nèi)容在閱讀完之后可以返回上一級(jí)顯示界面,通過f.addCommand()方法在表單中加入一個(gè)按鈕對(duì)象,并通過f.setCommandListener(this)方法注冊(cè)CommandListener高級(jí)事件處理,這樣當(dāng)選擇按鈕時(shí)即可調(diào)用CommandListener 高級(jí)事件接口類中的commandAction()函數(shù),在該函數(shù)中判斷是哪個(gè)按鈕被選中,通過該函數(shù)中的代碼來決定處理流程。最后通過Display類的Display.setCurrent()方法將含有文件內(nèi)容的表單顯示在手機(jī)屏幕上。處理代碼如下:
              Form f=new Form("超級(jí)閱讀"); //創(chuàng)建一個(gè)Form對(duì)象f
              strContent=myReadLine ("/test1.txt"); //讀取test1.txt文件中的內(nèi)容返回字符串
              f.append(strContent);  //將文本文件的內(nèi)容加入到f對(duì)象中
            f.addCommand(exitCom);  //將退出按鈕選項(xiàng)加入到f對(duì)象中
          f.setCommandListener(this);  //注冊(cè)高級(jí)事件處理
              display.setCurrent(f);  //將f對(duì)象顯示到手機(jī)屏幕上

          4 閱讀器中的菜單設(shè)計(jì)技術(shù)
              本閱讀器菜單結(jié)構(gòu)分兩級(jí),一級(jí)菜單顯示各章的標(biāo)題,通過選擇某一標(biāo)題選項(xiàng)進(jìn)入該章進(jìn)行內(nèi)容閱讀,在章內(nèi)容界面中設(shè)置二級(jí)菜單選項(xiàng),二級(jí)菜單中只有一個(gè)選項(xiàng)即是返回選項(xiàng),選中該選項(xiàng)后,則回到上一級(jí),可重新選擇章標(biāo)題,進(jìn)入新一章內(nèi)容進(jìn)行閱讀。一級(jí)菜單通過List類來建立,首先產(chǎn)生一個(gè)List類的對(duì)象l,通過l.append("第一章",null)方法在l對(duì)象中加入一條選項(xiàng),用同樣的方法可加入多條選項(xiàng),只要將第一章改為第二章、第三章等,可產(chǎn)生一個(gè)有多選項(xiàng)的l對(duì)象,通過l.addCommand(exitCommand)方法在l對(duì)象中加入一個(gè)按鈕,作為退出按鈕選項(xiàng),通過l.setCommandListener(this)注冊(cè)高級(jí)事件處理機(jī)制,通過該高級(jí)事件的注冊(cè)在操作過程中選中某一選項(xiàng)時(shí),系統(tǒng)自動(dòng)調(diào)用commandAction()函數(shù),并將選中的選項(xiàng)做為參數(shù)傳遞給該函數(shù),在函數(shù)中判斷選中的是哪一個(gè)選項(xiàng),進(jìn)行不同的流程處理。最后通過Display類的Display.setCurrent(l)方法將第一級(jí)菜單界面顯示在手機(jī)屏幕上。一級(jí)菜單界面的定義如下:
          List l=new List("超級(jí)閱讀--小說",Choice.IMPLICIT);  //定義一個(gè)List對(duì)象l
            l.addCommand(exitCommand);  //在對(duì)象l中加入退出按鈕
            l.append("第一章",null);  //加入第一章選項(xiàng)標(biāo)題
          l.append("第二章",null);  //加入第二章選項(xiàng)標(biāo)題
          l.append("第三章",null);  //加入第三章選項(xiàng)標(biāo)題
          l.setCommandListener(this);    //注冊(cè)高級(jí)事件處理機(jī)制
            display.setCurrent(l);    //將界面顯示在手機(jī)屏幕上
              在閱讀器的菜單設(shè)計(jì)中,無論是選擇了章標(biāo)題選項(xiàng),還是選擇了一級(jí)菜單中的退出或者是閱讀章內(nèi)容界面中的退出選項(xiàng),都將進(jìn)入commandAction()函數(shù)中,在該函數(shù)中進(jìn)行相應(yīng)判斷進(jìn)入不同的處理流程代碼。
              主要程序代碼如下:
          public void commandAction(Command c,Displayable s)
            {
               if(c==exitCommand)
                 {//如果是一級(jí)菜單的退出按鈕選項(xiàng)則退出本系統(tǒng)
                notifyDestroyed();
                    }
          else if (c==exitCom)
                    {//若是閱讀章內(nèi)容中的退出按鈕選項(xiàng)則退出閱讀內(nèi)容界面返回一級(jí)菜單界面
                 startApp();
                 resumeRequest();
                    }
          else  
                    {//如果選擇的不是任何一個(gè)退出按鈕,則進(jìn)行選擇章標(biāo)題的判斷
                        String strContent;
                      List tmp=(List)s;  //將參數(shù)s進(jìn)行類型轉(zhuǎn)換,轉(zhuǎn)換為List類對(duì)象
                      switch(tmp.getSelectedIndex())  
          //判斷選中的是哪一章標(biāo)題則進(jìn)行該章內(nèi)容閱讀界面
                     {   case 0:
                                  //第一章選中打開test1.txt
                              Form f=new Form("超級(jí)閱讀");
                                  strContent=myReadLine ("/test1.txt");
                                  f.append(strContent);
                             f.addCommand(exitCom);
                             f.setCommandListener(this);
                             display.setCurrent(f);
                          break;
                      case 1:
                                  //第二章選中打開test2.txt方法同第一章(略)
                            case 2:
                                //第三章選中打開test3.txt,如果還有更多章可按此方法再增加
                              
                     }  // switch 多分支結(jié)構(gòu)語句結(jié)束
                   }  //if  選擇結(jié)構(gòu)結(jié)束
            } // commandAction函數(shù)結(jié)束

          posted @ 2007-09-09 19:25 張生工作室 閱讀(331) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 桦甸市| 喀什市| 宜兰市| 常德市| 曲麻莱县| 黑河市| 定州市| 花垣县| 叙永县| 中阳县| 宣城市| 抚顺市| 潼南县| 韶关市| 合川市| 全州县| 巴东县| 上犹县| 乌兰察布市| 公安县| 罗源县| 安塞县| 惠安县| 山东| 荔波县| 蒙城县| 陆河县| 乌苏市| 乐平市| 大足县| 永寿县| 平湖市| 获嘉县| 平乐县| 当雄县| 赤峰市| 石景山区| 江永县| 莱阳市| 庆元县| 黄浦区|