這裏用靜態段來初始化數據,充當數據庫的功能
public class Student {
private int sid;
private String name;
private int age;
private float score;
public Student(int sid, String name, int age, float score) {
super();
this.sid = sid;
this.name = name;
this.age = age;
this.score = score;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public float getScore() {
return score;
}
public void setScore(float score) {
this.score = score;
}
@Override
public String toString() {
return "sid=" + sid + ", name=" + name + ", age=" + age + ", score=" + score ;
}
}
public interface StudentDao {
abstract public Student[] findAll();//查詢所有信息
abstract public Student findBySid(int sid);// 根據學號查找學生
abstract boolean delete(int sid);// 根據sid刪除學生
abstract boolean add(Student stu);// 添加學生
abstract Student[] findBySname(String sname);// 含有sname的算模糊匹配
}
public class StudentDB {
static Student[] students = new Student[10];
static {
students[0] = new Student(1, "aa", 12, 90);
students[1] = new Student(2, "bb", 13, 80);
students[2] = new Student(3, "cc", 14, 70);
students[3] = new Student(4, "dd", 15, 60);
students[4] = new Student(5, "ee", 16, 50);
students[5] = new Student(6, "ff", 17, 40);
students[6] = new Student(7, "gg", 18, 30);
students[7] = new Student(8, "hh", 19, 20);
students[8] = new Student(9, "ii", 20, 10);
students[9] = new Student(10, "jj", 21, 100);
}
}
public class StudentDaoImpl implements StudentDao {
// 查詢所有信息
@Override
public Student[] findAll() {
return StudentDB.students;
}
// 根據學號查找學生
@Override
public Student findBySid(int sid) {
// TODO Auto-generated method stub
Student[] st = findAll();// 先查詢所有信息
for (Student s : st) {
if (s.getSid() == sid) {// 查找sid
return s;
}
}
return null;
}
// 根據sid刪除學生
@Override
public boolean delete(int sid) {
// TODO Auto-generated method stub
Student[] st = findAll();
Student[] sss = new Student[st.length];// 定義一個臨時數組
int j = 0;
boolean flag = false;
for (Student s : st) {
if (s.getSid() != sid) {
sss[j++] = s;
} else {// 找到sid
flag = true;
}
}
if (flag) {// 刪除成功
StudentDB.students = Arrays.copyOf(sss, st.length - 1);
} else {// 找不到sid
StudentDB.students = Arrays.copyOf(sss, st.length);
}
return flag;
}
// 添加學生
@Override
public boolean add(Student stu) {
Student[] st = findAll();// 先查找全部信息
boolean flag = true;
for (Student s : st) {
if (s.getSid() == stu.getSid()) {
System.out.println("sid已經存在,添加失敗");
flag = false;
}
}
if (flag) {
StudentDB.students = Arrays.copyOf(st, st.length + 1);
StudentDB.students[st.length] = stu;
System.out.println("添加成功!");
}
return flag;
}
// 含有sname的算模糊匹配
@Override
public Student[] findBySname(String sname) {
Student[] st = findAll();// 先查詢所有信息
Student[] x = new Student[st.length];// 臨時數組
int i = 0;
boolean flag=false;
for (Student s : st) {
if (s.getName().contains(sname)) {// 如果包含,就添加進去
x[i++] = s;
flag=true;
}
}
if(flag){//如果包含
x = Arrays.copyOf(x, i);// 再次轉換
return x;
}else{//找不到
return null;
}
}
}
public class GUI {
static StudentDaoImpl sdi = new StudentDaoImpl();
static void showGui() {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("1 查詢全部:");
System.out.println("2 按學號查詢");
System.out.println("3 按名字查找");
System.out.println("4 添加");
System.out.println("5 刪除");
System.out.println("6 退出");
System.out.println("請輸入選項:");
int n = sc.nextInt();
switch (n) {
case 1:
Student[] s=sdi.findAll();
for(Student x:s){
System.out.println(x.toString());
}
break;
case 2:
System.out.println("請輸入需要查找的學號:");
int sid=sc.nextInt();
Student ss=sdi.findBySid(sid);
System.out.println(ss.toString());
break;
case 3:
System.out.println("請輸入需要查找的名字:");
String name=new Scanner(System.in).nextLine();
Student[] s1=sdi.findBySname(name);
for(Student z:s1){
if(z==null){
System.out.println("沒有找到與之相匹配的信息!");
}else{
System.out.println(z.toString());
}
}
break;
case 4:
System.out.println("請輸入需要添加人的學號:");
int sid3=sc.nextInt();
System.out.println("請輸入需要添加人的姓名:");
sc.nextLine();
String sname=sc.nextLine();
System.out.println("請輸入需要添加人的年齡:");
int age=sc.nextInt();
System.out.println("請輸入需要添加人的分數:");
float ff=sc.nextFloat();
Student stu=new Student(sid3, sname, age, ff);
boolean flag=sdi.add(stu);
break;
case 5:
System.out.println("請輸入需要刪除的學號:");
int sid4=sc.nextInt();
boolean flag2=sdi.delete(sid4);
if(flag2){
System.out.println("刪除成功!");
}else{
System.out.println("刪除失敗!");
}
break;
default:
System.out.println("退出成功!");
System.exit(0);
break;
}
}
}
}
public class StudentDemoTest {
public static void main(String[] args) {
//啓動
GUI.showGui();
}
}