05.學(xué)生管理系統(tǒng)IO版之讀寫數(shù)據(jù)

對(duì)文本文件進(jìn)行讀寫操作:

public static void readData(String fileName,ArrayList<Student> array):

從fileName的文件中讀取學(xué)生的數(shù)據(jù),并把學(xué)生的數(shù)據(jù)封裝到array集合中

public static void writeData(String fileName,ArrayList<Student> array):

將array中的每個(gè)元素中包含的數(shù)據(jù)寫入到fileName的文件中

package com.itheima;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

/*
 * 這是我的學(xué)生管理系統(tǒng)的主類
 * 
 * 步驟如下:
 *      A:定義學(xué)生類
 *      B:學(xué)生管理系統(tǒng)的主界面的代碼編寫
 *      C:學(xué)生管理系統(tǒng)的查看所有學(xué)生的代碼編寫
 *      D:學(xué)生管理系統(tǒng)的添加學(xué)生的代碼編寫
 *      E:學(xué)生管理系統(tǒng)的刪除學(xué)生的代碼編寫
 *      F:學(xué)生管理系統(tǒng)的修改學(xué)生的代碼編寫
 */
public class StudentManagerTest {
    public static void main(String[] args) {
        //創(chuàng)建集合對(duì)象,用于存儲(chǔ)學(xué)生數(shù)據(jù)
        ArrayList<Student> array = new ArrayList<Student>();
        
        //為了讓程序能夠回到這里來(lái)硬梁,我們使用循環(huán)
        while(true) {
            //這是學(xué)生管理系統(tǒng)的主界面 
            System.out.println("--------歡迎來(lái)到學(xué)生管理系統(tǒng)--------");
            System.out.println("1 查看所有學(xué)生");
            System.out.println("2 添加學(xué)生");
            System.out.println("3 刪除學(xué)生");
            System.out.println("4 修改學(xué)生");
            System.out.println("5 退出");
            System.out.println("請(qǐng)輸入你的選擇:");
            //創(chuàng)建鍵盤錄入對(duì)象
            Scanner sc = new Scanner(System.in);
            String choiceString = sc.nextLine();
            //用switch語(yǔ)句實(shí)現(xiàn)選擇
            switch(choiceString) {
            case "1":
                //查看所學(xué)生
                findAllStudent(array);
                break;
            case "2":
                //添加學(xué)生
                addStudent(array);
                break;
            case "3":
                //刪除學(xué)生
                deleteStudent(array);
                break;
            case "4":
                //修改學(xué)生
                updateStudent(array);
                break;
            case "5"://case穿透 
            default:
                System.out.println("謝謝你的使用");
                System.exit(0);//JVM退出 
                break;
            }
        }
    }
    
    //查看所有學(xué)生
    public static void findAllStudent(ArrayList<Student> array) {
        //首先來(lái)判斷集合中是否有數(shù)據(jù)母债,如果沒有數(shù)據(jù)瘸洛,就給出提示,并讓該方法不繼續(xù)往下執(zhí)行
        if(array.size() == 0) {
            System.out.println("不好意思艘儒,目前沒有學(xué)生信息可供查詢,請(qǐng)回去重新操作");
            return;//如果不想讓代碼繼續(xù)往下執(zhí)行就用return,相當(dāng)于回去吧咱枉。
        }
        
        //\t其實(shí)就是一個(gè)tab鍵的位置
        System.out.println("學(xué)號(hào)\t姓名\t年齡\t居住地");
        for(int x = 0; x < array.size(); x++) {
            Student s = array.get(x);
            System.out.println(s.getId()+"\t"+s.getName()+"\t"+s.getAge()+"\t"+s.getAddress());
        }
    }
    
    //添加學(xué)生
    public static void addStudent(ArrayList<Student> array) {
        //創(chuàng)建鍵盤錄入對(duì)象 
        Scanner sc = new Scanner(System.in);
        
        //為了讓id能夠被訪問到,我們就把id定義在循環(huán)的外面
        String id;
        
        //為了讓代碼能夠回到這里汇恤,用循環(huán)
        while(true) {
            System.out.println("請(qǐng)輸入學(xué)生學(xué)號(hào)");
//                  String id = sc.nextLine();
            id = sc.nextLine();
            
            //判斷學(xué)號(hào)有沒有被人占用
            //定義標(biāo)記
            boolean flag = false;
            
            //遍歷集合庞钢,得到每一個(gè)學(xué)生
            for(int x = 0; x < array.size(); x++) {
                Student s = array.get(x);
                //獲取該學(xué)生的學(xué)號(hào),和鍵盤錄入的學(xué)號(hào)進(jìn)行比較
                if(s.getId().equals(id)) {
                    flag = true;//說(shuō)明學(xué)號(hào)被占用了
                    break;
                }
            }
            
            if(flag) {
                System.out.println("你輸入的學(xué)號(hào)已經(jīng)被占用因谎,請(qǐng)重新輸入");
            }else {
                break;//結(jié)束循環(huán)
            }
        }
        
        System.out.println("請(qǐng)輸入學(xué)生姓名");
        String name = sc.nextLine();
        System.out.println("請(qǐng)輸入學(xué)生年齡");
        String age = sc.nextLine();
        System.out.println("請(qǐng)輸入學(xué)生居住地");
        String address = sc.nextLine();
        
        //創(chuàng)建學(xué)生對(duì)象
        Student s = new Student();
        s.setId(id);
        s.setName(name);
        s.setAge(age);
        s.setAddress(address);
        
        //把學(xué)生對(duì)象作為元素添加到集合
        array.add(s);
        
        //給出提示
        System.out.println("添加學(xué)生成功");
    }
    
    //刪除學(xué)生
    public static void deleteStudent(ArrayList<Student> array) {
        //刪除學(xué)生的思路:鍵盤錄入一個(gè)學(xué)號(hào)基括,到集合中去查找看是否有學(xué)生使用的是該學(xué)號(hào),如果有就刪除該學(xué)生
        //創(chuàng)建鍵盤錄入對(duì)象
        Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入你要?jiǎng)h除的學(xué)生的學(xué)號(hào)");
        String id = sc.nextLine();
        
        //我們必須給出學(xué)號(hào)不存在的時(shí)候的提示
        
        //定義一個(gè)索引
        int index = -1;
        
        //遍歷集合
        for(int x = 0; x < array.size(); x++) {
            //獲取到每一個(gè)學(xué)生對(duì)象
            Student s = array.get(x);
            //拿這個(gè)學(xué)生對(duì)象的學(xué)號(hào)進(jìn)行比較
            if(s.getId().equals(id)) {
                index = x;
                break;
            }
        }
        
        if(index == -1) {
            System.out.println("不好意思财岔,你要?jiǎng)h除的學(xué)號(hào)對(duì)應(yīng)的學(xué)生信息不存在风皿,請(qǐng)回去重新你的選擇");
        }else {
            array.remove(index);
            System.out.println("刪除學(xué)生成功");
        }
    }
    
    //從文件中讀數(shù)據(jù)到集合
    public static void readData(String fileName, ArrayList<Student> array) throws IOException {
        //創(chuàng)建輸入緩沖流對(duì)象
        BufferedReader br = new BufferedReader(new FileReader(fileName));
        
        String line;
        while((line = br.readLine())!=null) {
            String[] datas = line.split(",");
            Student s = new Student();
            s.setId(datas[0]);
            s.setName(datas[1]);
            s.setAge(datas[3]);
            s.setAddress(datas[3]);
            array.add(s);
        }
        br.close();
    }
    
    //把集合中的數(shù)據(jù)寫入文件
    public static void WriteData(String fileName, ArrayList<Student> array) throws IOException {
        //創(chuàng)建輸出緩沖流對(duì)象
        BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
        //遍歷集合
        for(int x = 0; x < array.size(); x++) {
            Student s = array.get(x);
            StringBuilder sb = new StringBuilder();
            sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge()).append(",").append(s.getAddress());
            bw.write(sb.toString());
            bw.newLine();
            bw.flush();
        }
        
        //釋放資源
        bw.close();
        
    }
    
    //修改學(xué)生
    public static void updateStudent(ArrayList<Student> array) {
        //修改學(xué)生的思路:鍵盤錄入一個(gè)學(xué)號(hào),到集合中去查找匠璧,看是否有學(xué)生使用的是該學(xué)號(hào)桐款,如果有就修改該學(xué)生
        //創(chuàng)建鍵盤錄入對(duì)象
        Scanner sc = new Scanner(System.in);
        System.out.println("請(qǐng)輸入你要修改的學(xué)生的學(xué)號(hào):");
        String id = sc.nextLine();
        
        //定義一個(gè)索引
        int index = -1;
        
        //遍歷集合
        for(int x = 0; x < array.size(); x++) {
            //獲取每一個(gè)學(xué)生對(duì)象
            Student s = array.get(x);
            
            //拿學(xué)生對(duì)象的學(xué)號(hào)和鍵盤錄入的學(xué)號(hào)進(jìn)行比較
            if(s.getId().equals(id)) {
                index = x;
                break;
            }
        }
        
        if(index == -1) {
            System.out.println("不好意思,你要修改的學(xué)號(hào)對(duì)應(yīng)的學(xué)生信息不存在夷恍,請(qǐng)回去重新你的選擇");
        }else {
            System.out.println("請(qǐng)輸入學(xué)生新姓名:");
            String name = sc.nextLine();
            System.out.println("請(qǐng)輸入學(xué)生新年齡:");
            String age = sc.nextLine();
            System.out.println("請(qǐng)輸入學(xué)生新居住地:");
            String address = sc.nextLine();
            
            //創(chuàng)建學(xué)生對(duì)象 
            Student s = new Student();
            s.setId(id);
            s.setName(name);
            s.setAge(age);
            s.setAddress(address);
            
            //修改集合中的學(xué)生對(duì)象
            array.set(index, s);
            
            //給出提示
            System.out.println("修改學(xué)生成功");
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末魔眨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子酿雪,更是在濱河造成了極大的恐慌遏暴,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件指黎,死亡現(xiàn)場(chǎng)離奇詭異朋凉,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)醋安,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門杂彭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人吓揪,你說(shuō)我怎么就攤上這事亲怠。” “怎么了柠辞?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵团秽,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)徙垫,這世上最難降的妖魔是什么讥裤? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮姻报,結(jié)果婚禮上己英,老公的妹妹穿的比我還像新娘。我一直安慰自己吴旋,他們只是感情好损肛,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著荣瑟,像睡著了一般治拿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上笆焰,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天劫谅,我揣著相機(jī)與錄音,去河邊找鬼嚷掠。 笑死捏检,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的不皆。 我是一名探鬼主播贯城,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼霹娄!你這毒婦竟也來(lái)了能犯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤犬耻,失蹤者是張志新(化名)和其女友劉穎踩晶,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體香追,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡合瓢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年坦胶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了透典。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡顿苇,死狀恐怖峭咒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纪岁,我是刑警寧澤凑队,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響漩氨,放射性物質(zhì)發(fā)生泄漏西壮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一叫惊、第九天 我趴在偏房一處隱蔽的房頂上張望款青。 院中可真熱鬧,春花似錦霍狰、人聲如沸抡草。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)康震。三九已至,卻和暖如春宾濒,著一層夾襖步出監(jiān)牢的瞬間腿短,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工绘梦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留答姥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓谚咬,卻偏偏與公主長(zhǎng)得像鹦付,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子择卦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 今天分享水彩花卉敲长,此作品為臨摹,資源來(lái)自微博秉继,原作者@吃番茄的綠妖 工具:寶虹中粗+24色櫻花水彩祈噪。 以下為步驟圖...
    鈴鐺子閱讀 3,371評(píng)論 10 102
  • 乳液?jiǎn)岬氖澜缥覀儾欢摵煤冒l(fā)發(fā)發(fā)還好吧你宇:叫呵呵哥哥根本那你就叫姐根本不能
    星之守護(hù)閱讀 244評(píng)論 0 0
  • 幾天沒有刷新的qq空間,今日心血來(lái)潮隨意翻看著尚辑,本來(lái)只是閑暇無(wú)趣的打發(fā)辑鲤,可是不經(jīng)意間看到一個(gè)曾經(jīng)高中時(shí)代里總是被人...
    羲子閱讀 322評(píng)論 0 0
  • .select_Out {float: left;width: 200px;height: 30px;cursor...
    青木川_閱讀 997評(píng)論 0 0
  • 記得剛出來(lái)10天的讀書營(yíng)活動(dòng)海報(bào)時(shí)月褥,我一直猶豫一天一本書對(duì)我來(lái)說(shuō)有難度,我重新拿起書是從半年前加入剽悍訓(xùn)練營(yíng)開始的...
    玫玉閱讀 516評(píng)論 0 0