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;
}
}
学生管理系统
最新推荐文章于 2024-07-28 21:57:13 发布