- 实验项目名称
学生信息管理系统
二、实验目的:
- 掌握类及类的声明
- 掌握对象的定义和使用
- 掌握抽象类的定义和使用
- 掌握接口的定义与实现
- 掌握多态的实现方式
三、实验任务:
编写一个学生信息管理系统,掌握接口的定义方法以及类的继承、封装和多态的特性。
设置三个类
属性设置 public class Student { private String sno; private String sname; private String sdept; 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; } public Student(String sno, String sname, String sdept) { this.sno = sno; this.sname = sname; this.sdept = sdept; } public Student() { } } 接口实现类
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("数据库中暂无学生记录!"); } } }
测试类
public class MainClass { static 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 作者:\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"); 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);//(0-5) 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); } } 接口 public interface IStudentDAO { public abstract void insertStudent(Student stu); public abstract void deleteStudent(String sno); public abstract void updateStudent(Student stu); public abstract Student findStudentBySno(String sno); public abstract void displayStudentBySno(String sno); public abstract void displayAllStudent(); }