1. 程式人生 > 實用技巧 >C語言 | 讓使用者選擇1或2輸出max或min

C語言 | 讓使用者選擇1或2輸出max或min

package firstjavapackage;

import java.util.Arrays;

/**
 * .學生管理系統: .學生的基本特徵: 學號、姓名、性別、分數 .String、String、char、double
 */
public class StudentManagement {

	// 儲存多個學生資訊,使用陣列
	Student[] students;// 成員變數
	// 定義一個初始化長度為5
	final int CAPACITY = 5;
	// 陣列元素的有效個數
	int size;

	// 構造方法
	public StudentManagement() {
		// 初始化陣列
students = new Student[CAPACITY]; size = 0; // ************************************** // 中間新增一些測試的學生物件資料 Student s1 = new Student(); s1.sid = "s1001"; s1.name = "張三"; s1.gender = '男'; s1.score = 90; Student s2 = new Student(); s2.sid = "s1002"; s2.name =
"李四"; s2.gender = '女'; s2.score = 99; // 新增到陣列中 students[size++] = s1; students[size++] = s2; // ************************************** } // 新增一個學生物件 public void add(Student student) { // size + 1:新增之後的個數 if (size + 1 > students.length) {// 是否擴容 // 陣列的複製 students = Arrays.
copyOf(students, CAPACITY + students.length); } // 新增元素 students[size++] = student; } // 刪除學生物件 public boolean delete(String sid) { // 通過學號查詢此學生是否存在 int index = indexOf(sid); // 判斷是否存在 if (index == -1) { return false; } /* * arraycopy(Object src, int srcPos, Object dest, int destPos, int length); src:源陣列 srcPos:從源陣列的哪個下標開始 dest:目標陣列 destPos:從目標陣列的哪個下標開始 length:需要複製的元素個數 */ // 複製 System.arraycopy(students, index + 1, students, index, size - (index + 1)); // 計數器減少 size--; // 返回刪除成功的標誌 return true; } // 修改學生物件 public boolean update(Student student) { // 通過學號查詢此學生是否存在 int index = indexOf(student.sid); // 判斷是否存在 if (index == -1) { return false; } // 修改操作 students[index] = student; // 返回修改成功的標誌 return true; } // 通過學號查詢學生資訊 public Student select(String sid) { // 通過學號查詢此學生是否存在 int index = indexOf(sid); // 判斷是否存在 if (index == -1) { return null; } // 如果存在,直接返回該下標對應的元素 return students[index]; } // 通過傳入的學號,得到此學生物件在陣列中的下標 private int indexOf(String sid) { // 判斷陣列長度是否為0 if (size == 0) { return -1;// 找不到 } // 遍歷陣列 for (int i = 0; i < size; i++) { // 通過下標取出陣列中的元素 if (sid.equals(students[i].sid)) { return i;// 返回找到的下標 } } // 找不到。返回-1 return -1; } // 得到陣列的實際有效元素的個數 public int getLength() { return size; } // 遍歷所有的學生資訊 public void printStudent() { if (size == 0) { System.out.println("暫無學生資訊..."); return; } System.out.println("學號\t姓名\t性別\t分數"); for (int i = 0; i < size; i++) { System.out.println(students[i]); } } //按成績降序排序 public void sortDownAtScore(){ if (size == 0) { System.out.println("暫無學生資訊,無法排序"); return; } double swap=0; for(int i=0;i<size-1;i++) { for(int j=i+1;j<size;j++) { if(students[i].score<students[j].score) { swapDownAtScore(i,j); } } } System.out.println("排序成功,結果如下:"); printStudent(); } //交換資料 public void swapDownAtScore(int i,int j) { String sid="";// 學號 String name="";// 姓名 char gender='\0';// 性別 double score=0;// 分數 sid=students[j].sid; name=students[j].name; gender=students[j].gender; score=students[j].score; students[j].sid=students[i].sid; students[j].name=students[i].name; students[j].gender=students[i].gender; students[j].score=students[i].score; students[i].sid=sid; students[i].name=name; students[i].gender=gender; students[i].score=score; } // 程式入口函式 public static void main(String[] args) { StudentManagement sm = new StudentManagement(); Student s1 = new Student(); s1.sid = "s1003"; s1.name = "王五"; s1.gender = '男'; s1.score = 97; // 新增方法 sm.add(s1); int length = sm.getLength(); System.out.println("學生個數:" + length); // 遍歷所有的學生資訊 sm.printStudent(); // 刪除一個學生資訊 boolean isSuccess = sm.delete("s10020"); System.out.println(isSuccess); sm.printStudent(); sm.sortDownAtScore(); } } //自定義學生實體類 class Student { // 下面是屬性 String sid;// 學號 String name;// 姓名 char gender;// 性別 double score;// 分數 public String toString() { return sid + "\t"+ name + "\t" + gender + "\t" + score; } }