<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 20  文章 - 57  trackbacks - 0
    <2010年11月>
    31123456
    78910111213
    14151617181920
    21222324252627
    2829301234
    567891011

    常用鏈接

    留言簿(2)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    51CTO

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    今天寫一個具有簡單功能的學生管理系統(tǒng)!不過,這個系統(tǒng)的構建基于現(xiàn)實中的Java程序開發(fā)框架!所有的代碼全部自己去寫,并且要在程序中體現(xiàn)出面向?qū)ο蟮募毾牒统绦蜷_發(fā)中的框架實現(xiàn)原理。

    首相,對問題進行分析:

    程序要完成的功能很簡單,當程序運行的時候出現(xiàn)以下信息
    --------圖1--------
    然后程序等待用戶輸入

    如果用戶選擇1,那么進入增加人員的信息(

    下面來分析增加人員的過程:

    首先,要新建一個Person類,當用戶選擇1的時候就實例化Person類,并將Person進行初始化,這并沒有結束此次的操作,最后的操作是將Person類存儲到文件中,這個文件名我定義為Person.ser。這樣這個過程才算結束,但這里的結束并不是程序結束,而是完成了1操作,整個程序并沒有結束,除非用戶選擇4退出程序,否則程序一直執(zhí)行。
    )

    如果用戶選擇2,那么程序查看所有人員的信息(
    在這個過程中,程序要將Person.ser文件中的內(nèi)容寫入到程序中,并打印到控制臺顯示,執(zhí)行完這一步之后,程序返回上一步操作,在這里程序仍然沒有退出。
    )

    如果用戶選擇3,程序進入的是對信息進行修改的頁面(
    這個過程相對來說比較復雜,因為這個過程涉及到Person.ser文件內(nèi)容的寫入和寫出過程,也就是先把文件中的內(nèi)容輸出到控制臺顯示當前用戶的信息,等待用戶輸入新的信息,當用戶輸入信息后,要將原來的信息進行覆蓋,也就是將信息從新寫到Person.ser中——這里我們僅僅考慮Person.ser中只有一個Person的情況。
    )



    通過以上分析,我們可以很清楚的知道,這個程序需要一個循環(huán)來做支撐,并且這個循環(huán)每執(zhí)行一次都要輸出圖1的內(nèi)容。

    首先新建一個Persion類


    package Object;

    import java.io.Serializable;

    //要想將類存儲在文件中必須實現(xiàn)Serializable接口!!!


    public class Person implements Serializable{
     private String name;
     private int age;
     private float score;
     
     public Person(String name, int age, float score){
      this.name = name;
      this.age = age;
      this.score = score;
     }
     
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
     public int getAge() {
      return age;
     }
     public void setAge(int age) {
      this.age = age;
     }
     public float getScore() {
      return score;
     }
     public void setScore(float score) {
      this.score = score;
     }
     
     public String toString(){
      return "NAME: " + this.name + " AGE: " + this.age + " SCORE: " + this.score;
     }

    }



    Text類中包含了程序中所有的text信息


    package Text;

    /**
     *
     *   這個類是用來輸出整個程序中要輸出的所有的Text信息!!!
     *   Text類中沒有任何屬性,只有幾個輸出文本的方法!!!
     *
     *
     * */


    public class Text {
     
     //這個方法用來顯示用戶運行程序時的信息
     public String mainText(){
      return "\n\t\t1.增加人員的信息" + "\n\t\t2.瀏覽人員的信息" + "\n\t\t3.修改人員的信息" + "\n\t\t4.退出系統(tǒng)" + "\n\n請選擇要使用的操作:";
     }
     
     //輸入有誤信息
     public String errText(){
      return "您所輸入的信息有誤,請重新輸入!!!";
     }
     
     //增加信息顯示
     public String addText(){
      return "請輸入您要增加的學生的信息";
     }
     public String addName(){
      return "請輸入學生的姓名:";
     }
     public String addAge(){
      return "請輸入學生的年齡:";
     }
     public String addScore(){
      return "請輸入學生的成績:";
     }
     //修改的內(nèi)容Modify
     
     public String modifyText(){
      return "請輸入您要修改的內(nèi)容";
     }
     public String edd(){
      return "操作成功";
     }
     
    }

    Methods類中包含了所有的方法:

    package Methods;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.util.Scanner;

    import Object.Person;
    import Text.Text;

    /**
     *
     *   這個方法中包括了整個程序所要用到的方法,包括:
     *    從控制臺寫入(Input)信息方法;
     *    向控制臺寫出(Output)信息的方法;
     *    基本上包含了所有的方法
     *
     *
     * */
    public class Methods {
     
      private static Person obj; 
     //用戶從控制臺向程序?qū)懭霐?shù)據(jù),用來選擇用戶想要的操作
     public int InputSelect(){
      Scanner inputSelect = new Scanner(System.in);
      int select = inputSelect.nextInt();
      return select;
     }
     
     //增加Person信息方法
     public Person InputPerson(){
      Text text = new Text();
      Scanner str = new Scanner(System.in);
      
      System.out.println(text.addText() + "\n" + text.addName());
      String name = str.next();
      System.out.println(text.addAge());
      int age = str.nextInt();
      System.out.println(text.addScore());
      float score = str.nextFloat();
      
      Person p = new Person(name, age, score);
      return p;
     }
     
     
     //將類從程序中寫出,寫到文件中
     public void Output(Person p) throws Exception{ 
      ObjectOutputStream out = null;
      out = new ObjectOutputStream(new FileOutputStream(new File("e:\\person.ser")));
      out.writeObject(p);
      out.close();
     }
     
     //從文件中讀入信息
     public Person Output() throws Exception{
      ObjectInputStream in = null;
      in = new ObjectInputStream(new FileInputStream(new File("e:\\person.ser")));
      obj = (Person)in.readObject();
      Person p = obj; 
      in.close();
      return p;
     }

     //修改類的方法
     public void ModifyPerson() throws Exception{
      Text text = new Text();
      Scanner str = new Scanner(System.in);
      
      //先從文件中讀入信息
      Person p = this.Output();
      System.out.println(text.modifyText());
      System.out.println("修改前的內(nèi)容為: \n" + p);
      this.Output(this.InputPerson());
      text.edd();
     }
     }


    Main用來調(diào)用這些方法,完成想要的結果

    package Main;

    import Methods.Methods;
    import Object.Person;
    import Text.Text;

    /**
     *
     *   這里是程序的入口,當執(zhí)行這個程序的時候首先打印了圖1的內(nèi)容,為了表現(xiàn)面向?qū)ο蟮乃枷耄覍⒊绦蛑惺紫纫蛴〉男畔?br />  *   放入到一個Text類中。
     *   因為僅僅當用戶選擇了退出程序的時候才能退出程序,所以這個程序必須用一個‘死’循環(huán),只有當用戶選擇了4的時候,用戶
     *   才退出程序!
     *
     * */

     

    public class Main {
     final static Text text = new Text();
     static Methods m = new Methods();
     public static void main(String[] args) throws Exception{
      
      boolean mainCycle = true;
      
      //有一個循序
      while(mainCycle){
       //只有當用戶輸入的是4的時候程序才退出循環(huán)
       System.out.println( text.mainText());
       //捕獲控制臺用戶輸入的選擇信息
       int select = m.InputSelect();
       
       if(select == 4)//這里的判斷是——用戶輸入的信息等于4的時候程序結束循環(huán)
       {
        mainCycle = false;
       }
       else
       {
        switch(select)//用戶選擇的數(shù)據(jù)
        {
        case 1 : {
         Person pp = m.InputPerson();
         m.Output(pp);
         System.out.println(text.edd());
         {}//利用輸入方法
        };break;//用戶增加人員信息方法
        case 2 : {
         System.out.println(m.Output());
        };break;//瀏覽人員的信息
        
        case 3 : {
         Person p = m.Output();
         System.out.println(text.modifyText());
         p = m.InputPerson();
         m.Output(p);
         System.out.println(text.edd());
        };break;//修改人員的信息
        
        default : {
         System.out.println(text.errText());
        }
        }
       }
       
      }
     
      
     }

    }


    這個程序的運行結果如下:




    posted on 2010-11-06 17:15 tovep 閱讀(371) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主頁
    主站蜘蛛池模板: 日韩中文字幕精品免费一区| 男人免费视频一区二区在线观看 | 国产在线a免费观看| 久久精品国产亚洲| 亚洲一卡二卡三卡| 亚洲一级毛片免观看| 97国产免费全部免费观看| vvvv99日韩精品亚洲| 亚洲日韩乱码中文无码蜜桃臀网站 | 丁香六月婷婷精品免费观看| 97人妻精品全国免费视频| 91香蕉国产线在线观看免费| 天天摸夜夜摸成人免费视频| 亚洲中文字幕无码一久久区| 亚洲中文字幕久久久一区| h片在线观看免费| 日本成年免费网站| 亚洲码和欧洲码一码二码三码| 日批视频网址免费观看| 免费鲁丝片一级在线观看| 亚洲国产精品无码专区在线观看| 亚洲国产午夜精品理论片在线播放 | 无码天堂亚洲国产AV| 久久大香香蕉国产免费网站| 在线免费观看中文字幕| 老司机亚洲精品影院在线观看| 亚洲国产精品专区在线观看| 精品亚洲国产成人| 国产jizzjizz视频免费看| 亚洲激情黄色小说| AAA日本高清在线播放免费观看| 亚洲最大在线观看| 84pao强力永久免费高清| 国产AV旡码专区亚洲AV苍井空| 亚洲黄色免费观看| 久久精品国产亚洲AV麻豆~| aⅴ免费在线观看| 亚洲精品在线免费看| 日韩免费高清视频| 亚洲综合欧美色五月俺也去| 亚洲美女在线国产|