Make a subject and learn
- 撰寫一個類別Student
- Student有四個屬性 1.座號(int) 2.班級(String) 3.姓名(String) 4.成績(int)
- Student的方法自行添加
- 主程式有一個Student的陣列
- 可以讓使用者有以下功能
- 新增一個學生(空間不構請使用doubleArr)
- 印出指定"座號"的學生成績
- 依照成績由大到小排序學生
- 依照座號由小到大排序學生
- 更改指定"座號"的學生成績
- 結束程式
public class Student {
Scanner sc = new Scanner(System.in);
private int seat_number; //座號
private String class_name; //班級名稱
private String name; //學生姓名
private int score; //分數
//讀取學生座號
public int getSeat_number() {
return seat_number;
}
//讀取班級名稱
public String getClass_name() {
return class_name;
}
//讀取學生姓名
public String getName() {
return name;
}
//讀取學生分數
public int getScore() {
return score;
}
//輸入學生座號(輸入防呆未做)
public void setSeat_number() {
System.out.println("請輸入學生座位:");
this.seat_number = sc.nextInt();
}
//輸入學生班級(輸入防呆未做)
public void setClass_name() {
System.out.println("請輸入學生班級:");
this.class_name = sc.next();
}
//輸入學生姓名(輸入防呆未做)
public void setName() {
System.out.println("請輸入學生姓名:");
this.name = sc.next();
}
//輸入學生成績(輸入防呆未做)
public void setScore() {
while (true) {
System.out.println("請輸入學生分數:");
int score = sc.nextInt();
if (score > 100 || score < 0) {
System.out.println("請輸入正確的成績!");
} else {
this.score = score;
break;
}
}
}
- 全域變數
public static Student[] students = new Student[1]; //預設兩筆資料空格座使用
public static Scanner sc = new Scanner(System.in);
public static int count = 0; // 紀錄資料數量
- 建立功能介面
//建立功能選項介面
while (true) {
System.out.println("功能說明:\n1.新增學生\n2.搜尋學生\n3.學生成績排序(由大到小)" +
"\n4.學生座號排序\n5.更改學生成績\n6.結束程式\n請輸入指令:");
int select = sc.nextInt();
switch (select) {
case 1:
create_student();
break;
case 2:
find_student_score();
break;
case 3:
print_student_socre();
break;
case 4:
print_student_seat_number();
break;
case 5:
modify_student_score();
break;
case 6:
System.exit(0);
break;
}
- 建立學生(create_student())
//建立學生資料(Done)
public static void create_student() {
//Array資料不足,新增空間
if (students.length == count) {
increaseArray();
}
Student student = new Student();
student.setSeat_number();
student.setClass_name();
student.setName();
student.setScore();
students[count] = student;
count++;
}
- 查詢學生成績(find_student_score())
private static void find_student_score() {
System.out.println("請輸入座號:");
int seat_number = sc.nextInt();
for (Student student : students) {
if (seat_number == student.getSeat_number()) {
System.out.println("學生" + student.getName() + " 成績:" + student.getScore() + "分");
}
}
}
- 排序學生成績(print_student_socre())
//排序學生成績,並印出
private static void print_student_socre() {
if (students.length != 1) { //資料數量未達兩筆以上,不排序
bubbleSort_student(1);
}
for (Student student : students) {
System.out.println("學生座號:" + student.getSeat_number() + " 學生班級:" + student.getClass_name() +
" 學生姓名:" + student.getClass_name() + " 學生成績:" + student.getScore() + "分");
}
}
- 排序學生座位(print_student_seat_number())
private static void print_student_seat_number() {
if (students.length != 1) { //資料數量未達兩筆以上,不排序
bubbleSort_student(2);
}
for (Student student : students) {
System.out.println("學生座號:" + student.getSeat_number() + " 學生班級:" + student.getClass_name() +
" 學生姓名:" + student.getClass_name() + " 學生成績:" + student.getScore() + "分");
}
}
- 修改學生成績(modify_student_score())
//修改學生成績
private static void modify_student_score() {
while (true) {
boolean state = true;//標記查詢狀態(true表示找到,false表示沒找到)
System.out.println("請輸入學生座號: ");
int set_number = sc.nextInt();
for (int i = 0; i < students.length; i++) {
if (students[i].getSeat_number() == set_number) {
System.out.println("該學生的成績為: " + students[i].getScore());
students[i].setScore();
System.out.println("學生: "+students[i]+"成績修改為: "+students[i].getScore());
state = false;
break;
}
}
if (state) {
System.out.println("查無此學生!!");
} else {
break;
}
}
- 結束程式(System.exit(0))
- 擴充陣列(increaseArray())
//建立陣列擴充
public static void increaseArray() {
Student[] student_Array = new Student[students.length + 1];
for (int i = 0; i < students.length; i++) {
student_Array[i] = students[i];
}
students = student_Array;
}
- 排序(氣泡排序法)(bubbleSort_student(int num)) 1 => 表示分數排序 2 => 表示座號排序
//排序(氣泡排序法)
public static void bubbleSort_student(int num) {
Student temp;
for (int i = 0; i < students.length - 1; i++) {
for (int j = 0; j < students.length - 1 - i; j++) {
switch (num) {
case 1:
if (students[i].getScore() < students[i + 1].getScore()) {
temp = students[i];
students[i] = students[i + 1];
students[i + 1] = temp;
}
break;
case 2:
if (students[i].getSeat_number() > students[i + 1].getSeat_number()) {
temp = students[i];
students[i] = students[i + 1];
students[i + 1] = temp;
}
}
}
}