【案例6-2】 學生管理系統(tǒng)
【案例介紹】
1.任務描述
在一所學校中,對學生人員流動的管理是很麻煩的,本案例要求編寫一個學生管理系統(tǒng),實現(xiàn)對學生信息的添加、刪除、修改和查詢功能。每個功能的具體要求如下:
- 系統(tǒng)的首頁:用于顯示系統(tǒng)所有的操作,并根據用戶在控制臺的輸入選擇需要使用的功能。
- 查詢功能:用戶選擇該功能后,在控制臺打印所有學生的信息。
- 添加功能:用戶選擇該功能后,要求用戶在控制臺輸入學生學號、姓名、年齡和居住地的基本信息。在輸入學號時,判斷學號是否被占用,如果被占用則添加失敗,并給出相應提示;反之則提示添加成功。
- 刪除功能:用戶選擇該功能后,提示用戶在控制臺輸入需要刪除學生的學號,如果用戶輸入的學號存在則提示刪除成功,反之則提示刪除失敗。
- 修改功能:用戶選擇該功能后,提示用戶在控制臺輸入需要修改的學生學號、姓名、年齡和居住地學生信息,并使用輸入的學生學號判斷是否有此人,如果有則修改原有的學生信息,反正則提示需要修改的學生信息不存在。
- 退出功能:用戶選擇該功能后,程序正常關閉。
本案例要求使用List集合存儲自定義的對象,使用List集合的中常用方法實現(xiàn)相關的操作。
2.運行結果
?學生管理系統(tǒng)首頁運行結果如圖6-1所示。
圖6-1? 學生管理系統(tǒng)首頁運行結果圖
學生管理系統(tǒng)查看所有學生運行結果如圖6-2所示。
圖6-2? 查看所有學生信息運行結果圖
學生管理系統(tǒng)添加學生信息運行結果如圖6-3所示:
圖6-3? 添加學生信息運行結果圖
學生管理系統(tǒng)修改學生信息結果如圖6-4所示:
圖6-4 修改學生信息運行結果圖
學生管理系統(tǒng)刪除學生結果如圖6-5所示。
圖6-5? 刪除學生運行結果圖
?
【案例思路】
(1)定義學生類,自定義對象屬性。
(2)學生管理系統(tǒng)的主界面的代碼編寫,創(chuàng)建集合對象,用于存儲學生數(shù)據,打印學生管理系統(tǒng)主界面的相關功能,創(chuàng)建鍵盤輸入功能,用switch語句實現(xiàn)選擇的功能。最后為了實現(xiàn)多次操作并且手動退出系統(tǒng)。用while(true)循環(huán)實現(xiàn).
(3) 學生管理系統(tǒng)查詢所有學生信息的代碼編寫,首先判斷集合中是否有數(shù)據,如果沒有數(shù)據就給出提示,并讓該方法不在繼續(xù)往下執(zhí)行。如果有數(shù)據。遍歷集合輸出打印數(shù)據。
(4) 學生管理系統(tǒng)添加學生信息的代碼編寫,首先輸入學生學號,判斷學號有沒有被人占用,如果被占用重新輸入學號,沒有被占用繼續(xù)錄入學生姓名、年齡。家庭住址等信息。創(chuàng)建學生對象,將錄入的數(shù)據存入對象。最后將學生對象添加入集合,添加學生信息成功。
(5) 學生管理系統(tǒng)刪除學生信息的代碼編寫,鍵盤錄入一個學號,到集合中去查找,看是否有學生使用該學號,如果有就刪除該學生信息。如果沒有學生使用該學號,返回主界面。
(6)學生管理系統(tǒng)修改學生信息的代碼編寫。鍵盤錄入一個學號,到集合中去查找,看是否有學生使用該學號,如果過有就修改學生信息。反之返回主界面。
【案例實現(xiàn)】
學生實體類屬性如文件6-1所示。
文件6-1? Student.java
- public class Student {
- ????//學號
- ?????private String id;
- ????//姓名
- ????private String name;
- ????//年齡
- ????private String age;
- ????//居住地
- ????private String address;
- }
以上代碼是我們自定義對象實體類所包括的屬性,我們在用時需要重寫get()、set()以及構造方法。
模擬學生管理系統(tǒng)的代碼實現(xiàn),如文件6-2所示。?
文件6-2 example2.java文章來源:http://www.zghlxwxcb.cn/news/detail-776193.html
- package com.itheima;
- import java.util.ArrayList;
- import java.util.Scanner;
- public class example2 {
- public static void main(String[] args) {
- ????????//創(chuàng)建集合對象,用于存儲學生數(shù)據
- ????????ArrayList<Student> array = new ArrayList<Student>();
- ????????//為了讓程序能夠回到這里來,我們使用循環(huán)
- ????????while(true) {
- ????????//這是學生管理系統(tǒng)的主界面
- ????????System.out.println("--------歡迎來到學生管理系統(tǒng)--------");
- ????????System.out.println("1 查看所有學生");
- ????????System.out.println("2 添加學生");
- ????????System.out.println("3 刪除學生");
- ????????System.out.println("4 修改學生");
- ????????System.out.println("5 退出");
- ????????System.out.println("請輸入你的選擇:");
- ????????//創(chuàng)建鍵盤錄入對象
- ????????Scanner sc = new Scanner(System.in);
- ????????String choiceString = sc.nextLine();
- ????????//用switch語句實現(xiàn)選擇
- ????????switch(choiceString) {
- ????????case "1":
- ????????//查看所有學生
- ????????findAllStudent(array);
- ????????break;
- ????????case "2":
- ????????//添加學生
- ????????addStudent(array);
- ????????break;
- ????????case "3":
- ????????//刪除學生
- ????????deleteStudent(array);
- ????????break;
- ????????case "4":
- ????????//修改學生
- ????????updateStudent(array);
- ????????break;
- ????????case "5":
- ????????//退出
- ????????//System.out.println("謝謝你的使用");
- ????????//break;
- ????????default:
- ????????System.out.println("謝謝你的使用");
- ????????System.exit(0); //JVM退出
- ????????break;
- ????????}
- ????????}
- ????????}
- ???//查看所有學生
- ???public static void findAllStudent(ArrayList<Student> array) {
- ????????//首先來判斷集合中是否有數(shù)據,如果沒有數(shù)據,就給出提示,并讓該方法不繼續(xù)往
- ??????????下執(zhí)行
- ????????if(array.size() == 0) {
- ????????System.out.println("不好意思,目前沒有學生信息可供查詢,請回去重新選擇你
- ????????????????????????????????的操作");
- ????????return;
- ????????}
- ????????//\t 其實就是一個tab鍵的位置
- ????????System.out.println("學號\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());
- ????????}
- ????????}
- ????????}
- ??//添加學生
- ???public static void addStudent(ArrayList<Student> array) {
- ????????//創(chuàng)建鍵盤錄入對象
- ????????Scanner sc = new Scanner(System.in);
- ????????//為了讓id能夠被訪問到,我們就把id定義在了循環(huán)的外面
- ????????String id;
- ????????//為了讓代碼能夠回到這里,用循環(huán)
- ????????while(true) {
- ????????System.out.println("請輸入學生學號:");
- ????????//String id = sc.nextLine();
- ????????id = sc.nextLine();
- ????????//判斷學號有沒有被人占用
- ????????//定義標記
- ????????boolean flag = false;
- ????????//遍歷集合,得到每一個學生
- ????????for(int x=0; x<array.size(); x++) {
- ????????Student s = array.get(x);
- ????????//獲取該學生的學號,和鍵盤錄入的學號進行比較
- ????????if(s.getId().equals(id)) {
- ????????flag = true; //說明學號被占用了
- ????????break;
- ????????}
- ????????}
- ????????if(flag) {
- ????????System.out.println("你輸入的學號已經被占用,請重新輸入");
- ????????}else {
- ????????break; //結束循環(huán)
- ????????}
- ????????}
- ????????System.out.println("請輸入學生姓名:");
- ????????String name = sc.nextLine();
- ????????System.out.println("請輸入學生年齡:");
- ????????String age = sc.nextLine();
- ????????System.out.println("請輸入學生居住地:");
- ????????String address = sc.nextLine();
- ????????//創(chuàng)建學生對象
- ????????Student s = new Student();
- ????????s.setId(id);
- ????????s.setName(name);
- ????????s.setAge(age);
- ????????s.setAddress(address);
- ????????//把學生對象作為元素添加到集合
- ????????array.add(s);
- ????????//給出提示
- ????????System.out.println("添加學生成功");
- ????????}
- //刪除學生
- ???public static void deleteStudent(ArrayList<Student> array) {
- ????????//刪除學生的思路:鍵盤錄入一個學號,到集合中去查找,看是否有學生使用的是該
- ???????????學號,如果有就刪除該學生
- ????????//創(chuàng)建鍵盤錄入對象
- ????????Scanner sc = new Scanner(System.in);
- ????????System.out.println("請輸入你要刪除的學生的學號:");
- ????????String id = sc.nextLine();
- ????????//我們必須給出學號不存在的時候的提示
- ????????//定義一個索引
- ????????int index = -1;
- ????????//遍歷集合
- ????????for(int x=0; x<array.size(); x++) {
- ????????//獲取到每一個學生對象
- ????????Student s = array.get(x);
- ????????//拿這個學生對象的學號和鍵盤錄入的學號進行比較
- ????????if(s.getId().equals(id)) {
- ????????index = x;
- ????????break;
- ????????}
- ????????}
- ????????if(index == -1) {
- ????????System.out.println("不好意思,你要刪除的學號對應的學生信息不存在,請回去
- ????????????????????????????????重新你的選擇");
- ????????}else {
- ????????array.remove(index);
- ????????System.out.println("刪除學生成功");
- ????????}
- ????????}
- ??//修改學生
- ??public static void updateStudent(ArrayList<Student> array) {
- ????????//修改學生的思路:鍵盤錄入一個學號,到集合中去查找,看是否有學生使用的是該
- ???????????學號,如果有就修改該學生
- ????????//創(chuàng)建鍵盤錄入對象
- ????????Scanner sc = new Scanner(System.in);
- ????????System.out.println("請輸入你要修改的學生的學號:");
- ????????String id = sc.nextLine();
- ????????//定義一個索引
- ????????int index = -1;
- ????????//遍歷集合
- ????????for(int x=0; x<array.size(); x++) {
- ????????//獲取每一個學生對象
- ????????Student s = array.get(x);
- ????????//拿學生對象的學號和鍵盤錄入的學號進行比較
- ????????if(s.getId().equals(id)) {
- ????????index = x;
- ????????break;
- ????????}
- ????????}
- ????????if(index == -1) {
- ????????System.out.println("不好意思,你要修改的學號對應的學生信息不存在,請回去
- ????????????????????????????????重新你的選擇");
- ????????}else {
- ????????System.out.println("請輸入學生新姓名:");
- ????????String name = sc.nextLine();
- ????????System.out.println("請輸入學生新年齡:");
- ????????String age = sc.nextLine();
- ????????System.out.println("請輸入學生新居住地:");
- ????????String address = sc.nextLine();
- ????????//創(chuàng)建學生對象
- ????????Student s = new Student();
- ????????s.setId(id);
- ????????s.setName(name);
- ????????s.setAge(age);
- ????????s.setAddress(address);
- ????????//修改集合中的學生對象
- ????????array.set(index, s);
- ????????//給出提示
- ????????System.out.println("修改學生成功");
- ????????}
- ????????}
在文件6-2中,第8行定義一個集合用于存儲學生數(shù)據。其中該集合的泛型為Student。第10行代碼定義一個while(true)循環(huán)使程序能夠回到學生管理系統(tǒng)的主界面,第12~18行用于顯示主界面的菜單信息。第20~21行代碼定義鍵盤錄入對象,用于選擇我們要實現(xiàn)的功能。第23~48行代碼定義switch語句實現(xiàn)選擇。case對應相應的功能。調用相應的程序代碼 ,其中System.exit(0)表示JVM退出。第52~68行,定義一個實現(xiàn)學生信息查詢方法。其中第55~59行,首先用if判斷集合中是否有數(shù)據,如果沒有數(shù)據,就給出提示,并讓該方法不繼續(xù)往下執(zhí)行。如果有數(shù)據,執(zhí)行第62~66行遍歷集合。并輸出打印結果。第70~114行,定義一個實現(xiàn)添加學生信息的方法,其中第73行,定義一個id表示輸入的學生的學號, 為了讓id能夠被訪問到,我們就把id定義在了循環(huán)的外面。第76行,用while循環(huán)保證多次輸入學號,直到輸入的學號不重復。第84~85行代碼表示循環(huán)遍歷集合,獲取每一個學生。第87行代碼用if判斷學號是否被占用。第116~142,行,定義一個刪除學生信息的方法。第145~186行,定義一個實現(xiàn)修改學生信息的方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-776193.html
到了這里,關于學生管理系統(tǒng)-課后程序(JAVA基礎案例教程-黑馬程序員編著-第六章-課后作業(yè))的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!