您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)Java如何實(shí)現(xiàn)實(shí)現(xiàn)IO版學(xué)生管理系統(tǒng),小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
具體內(nèi)容如下
圖解:
cade:
student.java
/* * 這是我的學(xué)生類 */ public class Student { //學(xué)號 private String id; //姓名 private String name; //年齡 private String age; //居住地 private String address; public Student() { } public Student(String id, String name, String age, String address) { this.id = id; this.name = name; this.age = age; this.address = address; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
studentmangager類
import java.io.BufferedReader; import java.io.BufferedWriter; 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) throws IOException{ //定義文件路徑 String fileName = "students.txt"; //為了讓程序能夠回到這里來,我們使用循環(huán) while(true) { //這是學(xué)生管理系統(tǒng)的主界面 System.out.println("--------歡迎來到學(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("請輸入你的選擇:"); //創(chuàng)建鍵盤錄入對象 Scanner sc = new Scanner(System.in); String choiceString = sc.nextLine(); //用switch語句實(shí)現(xiàn)選擇 switch(choiceString) { case "1": //查看所有學(xué)生 findAllStudent(fileName); break; case "2": //添加學(xué)生 addStudent(fileName); break; case "3": //刪除學(xué)生 deleteStudent(fileName); break; case "4": //修改學(xué)生 updateStudent(fileName); break; case "5": default: System.out.println("謝謝你的使用"); System.exit(0); //JVM退出 break; } } } //從文件中讀數(shù)據(jù)到集合 public static void readData(String fileName,ArrayList<Student> array) throws IOException { //創(chuàng)建輸入緩沖流對象 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[2]); s.setAddress(datas[3]); array.add(s); } br.close(); } //把集合中的數(shù)據(jù)寫入文件 public static void writeData(String fileName,ArrayList<Student> array) throws IOException { //創(chuàng)建輸出緩沖流對象 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(String fileName) throws IOException { //創(chuàng)建集合對象 ArrayList<Student> array = new ArrayList<Student>(); //從文件中把數(shù)據(jù)讀取到集合中 readData(fileName, array); //修改學(xué)生的思路:鍵盤錄入一個學(xué)號,到集合中去查找,看是否有學(xué)生使用的是該學(xué)號,如果有就修改該學(xué)生 //創(chuàng)建鍵盤錄入對象 Scanner sc = new Scanner(System.in); System.out.println("請輸入你要修改的學(xué)生的學(xué)號:"); String id = sc.nextLine(); //定義一個索引 int index = -1; //遍歷集合 for(int x=0; x<array.size(); x++) { //獲取每一個學(xué)生對象 Student s = array.get(x); //拿學(xué)生對象的學(xué)號和鍵盤錄入的學(xué)號進(jìn)行比較 if(s.getId().equals(id)) { index = x; break; } } if(index == -1) { System.out.println("不好意思,你要修改的學(xué)號對應(yīng)的學(xué)生信息不存在,請回去重新你的選擇"); }else { System.out.println("請輸入學(xué)生新姓名:"); String name = sc.nextLine(); System.out.println("請輸入學(xué)生新年齡:"); String age = sc.nextLine(); System.out.println("請輸入學(xué)生新居住地:"); String address = sc.nextLine(); //創(chuàng)建學(xué)生對象 Student s = new Student(); s.setId(id); s.setName(name); s.setAge(age); s.setAddress(address); //修改集合中的學(xué)生對象 array.set(index, s); //把集合中的數(shù)據(jù)重新寫回到文件 writeData(fileName, array); //給出提示 System.out.println("修改學(xué)生成功"); } } //刪除學(xué)生 public static void deleteStudent(String fileName) throws IOException { //創(chuàng)建集合對象 ArrayList<Student> array = new ArrayList<Student>(); //從文件中把數(shù)據(jù)讀取到集合中 readData(fileName, array); //刪除學(xué)生的思路:鍵盤錄入一個學(xué)號,到集合中去查找,看是否有學(xué)生使用的是該學(xué)號,如果有就刪除該學(xué)生 //創(chuàng)建鍵盤錄入對象 Scanner sc = new Scanner(System.in); System.out.println("請輸入你要刪除的學(xué)生的學(xué)號:"); String id = sc.nextLine(); //我們必須給出學(xué)號不存在的時候的提示 //定義一個索引 int index = -1; //遍歷集合 for(int x=0; x<array.size(); x++) { //獲取到每一個學(xué)生對象 Student s = array.get(x); //拿這個學(xué)生對象的學(xué)號和鍵盤錄入的學(xué)號進(jìn)行比較 if(s.getId().equals(id)) { index = x; break; } } if(index == -1) { System.out.println("不好意思,你要刪除的學(xué)號對應(yīng)的學(xué)生信息不存在,請回去重新你的選擇"); }else { array.remove(index); //把集合中的數(shù)據(jù)重新寫回到文件 writeData(fileName, array); System.out.println("刪除學(xué)生成功"); } } //添加學(xué)生 public static void addStudent(String fileName) throws IOException { //創(chuàng)建集合對象 ArrayList<Student> array = new ArrayList<Student>(); //從文件中把數(shù)據(jù)讀取到集合中 readData(fileName, array); //創(chuàng)建鍵盤錄入對象 Scanner sc = new Scanner(System.in); //為了讓id能夠被訪問到,我們就把id定義在了循環(huán)的外面 String id; //為了讓代碼能夠回到這里,用循環(huán) while(true) { System.out.println("請輸入學(xué)生學(xué)號:"); //String id = sc.nextLine(); id = sc.nextLine(); //判斷學(xué)號有沒有被人占用 //定義標(biāo)記 boolean flag = false; //遍歷集合,得到每一個學(xué)生 for(int x=0; x<array.size(); x++) { Student s = array.get(x); //獲取該學(xué)生的學(xué)號,和鍵盤錄入的學(xué)號進(jìn)行比較 if(s.getId().equals(id)) { flag = true; //說明學(xué)號被占用了 break; } } if(flag) { System.out.println("你輸入的學(xué)號已經(jīng)被占用,請重新輸入"); }else { break; //結(jié)束循環(huán) } } System.out.println("請輸入學(xué)生姓名:"); String name = sc.nextLine(); System.out.println("請輸入學(xué)生年齡:"); String age = sc.nextLine(); System.out.println("請輸入學(xué)生居住地:"); String address = sc.nextLine(); //創(chuàng)建學(xué)生對象 Student s = new Student(); s.setId(id); s.setName(name); s.setAge(age); s.setAddress(address); //把學(xué)生對象作為元素添加到集合 array.add(s); //把集合中的數(shù)據(jù)重新寫回到文件 writeData(fileName, array); //給出提示 System.out.println("添加學(xué)生成功"); } //查看所有學(xué)生 public static void findAllStudent(String fileName) throws IOException { //創(chuàng)建集合對象 ArrayList<Student> array = new ArrayList<Student>(); //從文件中把數(shù)據(jù)讀取到集合中 readData(fileName, array); //首先來判斷集合中是否有數(shù)據(jù),如果沒有數(shù)據(jù),就給出提示,并讓該方法不繼續(xù)往下執(zhí)行 if(array.size() == 0) { System.out.println("不好意思,目前沒有學(xué)生信息可供查詢,請回去重新選擇你的操作"); return; } //\t 其實(shí)就是一個tab鍵的位置 System.out.println("學(xué)號\t\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()); } } }
關(guān)于“Java如何實(shí)現(xiàn)實(shí)現(xiàn)IO版學(xué)生管理系統(tǒng)”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。