編寫一個學生信息管理系統,掌握接口的定義方法以及類的繼承、封裝和多態的特性。

  1. 定義學生類Student.java,該類有學號、姓名和系部三個成員變量,並用get和set方法進行屬性的封裝
  2. 定義接口IStudentDAO,其中包含下列數據操作方法

// 插入學生信息記錄

public void insertStudent(Student stu);

// 刪除指定學號學生信息記錄

public void deleteStudent(String sno);

// 更新指定學生信息記錄

public void updateStudent(Student stu);

// 按學號查詢指定學生信息記錄

public Student findStudentBySno(String sno);

// 顯示指定學號學生信息記錄

public void displayStudentBySno(String sno);

// 顯示所有學生信息記錄

public void displayAllStudent();

  1. 定義接口IStudentDAO的實現類StudentDAOImpl,其中包含一個靜態的集合對象用來保存學生信息記錄,以及接口的所有實現方法

static List<Student> students = new ArrayList<Student>();

ArrayList類是實現了List接口的動態數組,數組元素可以動態增加和減少。常用方法如下:

public int size()返回此列表中的元素數。

public boolean isEmpty()如果此列表中沒有元素,則返回 true

public boolean add(E e)將指定的元素添加到此列表的尾部。

public boolean remove(Object o)移除此列表中首次出現的指定元素(如果存在)。

代碼:

package stu;

public class Student {
    private String sno;
    private String sname;
    private String sdept;

    public Student(){};
    public String getSno()
    {
        return sno;
    }
    public void setSno(String sno)
    {
        this.sno=sno;
    }
    public String getSname()
    {
        return sname;
    }
    public void setSname(String sname)
    {
        this.sname=sname;
    }
    public String getSdept()
    {
        return sdept;
    }
    public void setSdept(String sdept)
    {
        this.sdept=sdept;
    }


}

package stu;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.*;


public class StudentDAOImpl implements IStudentDAO{
    public static List<Student> students=new ArrayList<Student>();

    public StudentDAOImpl(){};
    public void insertStudent(Student stu)
    {
        students.add(stu);
    }
    public void deleteStudent(String sno)
    {
        boolean flag=false;
        if(students.size()>0)
        {
            for(Student stu: students)
            {
                if(stu.getSno().equals(sno))
                {
                    flag=true;
                    students.remove(stu);
                    System.out.println("該學號學生刪除成功!");    
                }
            }
            if(!flag)
            {
                System.out.println("數據庫中無該學生記錄!");    
            }
        }
        else
        {
                System.out.println("數據庫中暫無學生記錄!");

        }
    }
    public void updateStudent(Student stu)
    {
            for(int i=0;i<students.size();i++)
            {
                if(students.get(i).getSno().equals(stu.getSno()))
                {
                    students.set(i,stu);    
                }
            }

    }
    public Student findStudentBySno(String sno)
    {
        Student Stu=new Student();
        Stu=null;
        
        if (students.size() > 0)
            {
                for (Student stu : students) 
                    {
                        if(stu.getSno().equals(sno))
                             Stu=stu;
                    }
            }
            return Stu;
    }
    public void displayStudentBySno(String sno)
    {
        boolean flag=false;
        if (students.size() > 0)
            {
                for (Student stu : students) 
                    {
                        if(stu.getSno().equals(sno))
                        {
                            flag=true;
                            System.out.println("學號: " + stu.getSno() + "\t姓名: "+ stu.getSname() + "\t系部: " + stu.getSdept());
                        }  
                    }
                if(!flag)
                    {
                        System.out.println("數據庫中無該學生記錄!");
                    }
            }
        else 
            {
                System.out.println("數據庫中暫無學生記錄!");
            }
    }
    public void displayAllStudent()
    {
        if (students.size() > 0)
            {
                for (Student stu : students) 
                    {
                    System.out.println("學號: " + stu.getSno() + "\t姓名: "
                            + stu.getSname() + "\t系部: " + stu.getSdept());
                    }
            }
         else 
            {
                System.out.println("數據庫中暫無學生記錄!");
            }
    
}

}

package stu;
import java.util.Scanner;
import java.util.*;
public class MainClass {
static public int menu_select(Scanner scanner) {
        int menuchoice = -1;
        System.out.printf("\n");
        System.out.printf("\t\t\t  學生信息管理系統功能菜單        \n");
        System.out.printf("\t\t\t  1.插入學生信息            \n");
        System.out.printf("\t\t\t  2.刪除學生信息            \n");
        System.out.printf("\t\t\t  3.更新學生信息            \n");
        System.out.printf("\t\t\t  4.顯示所有學生信息        \n");
        System.out.printf("\t\t\t  5.按學號查詢指定學生信息        \n");
        System.out.printf("\t\t\t  0.結束程序                \n");
        System.out.printf("\t\t\t請輸入您的選擇:        \n");
        menuchoice = scanner.nextInt();
        return menuchoice;
    }
    static void inputStudent(Student stu, Scanner scanner) {
        System.out.println("請輸入學生的學號:");
        stu.setSno(scanner.next());
        System.out.println("請輸入學生的姓名:");
        stu.setSname(scanner.next());
        System.out.println("請輸入學生的系部:");
        stu.setSdept(scanner.next());
    }
    static void updateStudent(Student stu, Scanner scanner) {
        System.out.println("請輸入要更新的學生的姓名:");
        stu.setSname(scanner.next());
        System.out.println("請輸入要更新的學生的系部:");
        stu.setSdept(scanner.next());
    }
    public static void main(String[] args) {
        String sno;
        int menuChoice;
        Scanner scanner = new Scanner(System.in);
        StudentDAOImpl studentDAOImpl = new StudentDAOImpl();
        do {
            menuChoice = menu_select(scanner);
            switch (menuChoice) {
            case 1:
                Student newStu = new Student();
                inputStudent(newStu, scanner);
                studentDAOImpl.insertStudent(newStu);
                break;
            case 2:
                System.out.println("請輸入要刪除學生信息的學號:");
                sno = scanner.next();
                try
                {
                    studentDAOImpl.deleteStudent(sno);    
                }
                catch (Exception e)
                {
                    System.out.println(" ");
                }
                break;
            case 3:
                System.out.println("請輸入要更新學生信息的學號:");
                sno = scanner.next();
                Student updateStu = studentDAOImpl.findStudentBySno(sno);
                if (updateStu != null) {
                    System.out.println("要更新的學生信息顯示如下:");
                    studentDAOImpl.displayStudentBySno(updateStu.getSno());
                    updateStudent(updateStu, scanner);
                    studentDAOImpl.updateStudent(updateStu);
                } else {
                    System.out.println("要更新的學生信息不存在!");
                }
                break;
            case 4:
                studentDAOImpl.displayAllStudent();
                break;
            case 5:
                System.out.println("請輸入查詢學生信息的學號:");
                sno = scanner.next();
                studentDAOImpl.displayStudentBySno(sno);
                break;
            case 0:
                break;
            default:
                System.out.println("對不起,您輸入的功能編號有錯!請重新輸入!!!");
                break;
            }
        } while (menuChoice != 0);
        scanner.close();
    }
}
結果:

發佈了36 篇原創文章 · 獲贊 38 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章