- 定義學生類Student.java,該類有學號、姓名和系部三個成員變量,並用get和set方法進行屬性的封裝
- 定義接口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();
- 定義接口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();
}
}
結果: