C語言 | 讓使用者選擇1或2輸出max或min
阿新 • • 發佈:2020-12-22
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;
}
}