编写一个学生信息管理系统,掌握接口的定义方法以及类的继承、封装和多态的特性。

  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();
    }
}
结果:

编写一个学生信息管理系统,掌握接口的定义方法以及类的继承、封装和多态的特性。编写一个学生信息管理系统,掌握接口的定义方法以及类的继承、封装和多态的特性。