面对对象和数组学习——学生管理系统

面对对象和数组学习——学生管理系统

定义学生类

一个类,包含成员变量、构造方法和成员方法(属性对应的set/get方法和其他成员方法)

/**
 * 定义一个Student类{学号、姓名、年龄、性别}
 * 
 * @author 
 *
 */
public class Student {
	private int sid;//编号
	private String sname;//姓名
	private int age;//年龄
	private String gender;//性别

	public Student() {

	}

	public Student(int sid, String sname, int age, String gender) {
		super();
		this.sid = sid;
		this.sname = sname;
		this.age = age;
		this.gender = gender;
	}

	public int getSid() {
		return sid;
	}

	public void setSid(int sid) {
		this.sid = sid;
	}

	public String getSname() {
		return sname;
	}

	public void setSname(String sname) {
		this.sname = sname;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getGender() {
		return gender;
	}

	public void setGender(String gender) {
		this.gender = gender;
	}

	@Override
	public String toString() {
		return this.getSid() + "\t" + this.getSname() + "\t" + this.getAge()
				+ "\t" + this.getGender();
	}

}

规格表

对学生进行增删改查

/**
 * 针对学生操作类(数组存储、及根据条件增删改查)
 * 
 * @author 
 *
 */
public class MyStudentUtil {
	/**
	 * 获取学生实际人数(数组实际长度)
	 * 
	 * @param stuArray
	 */
	private static int getStuCount(Student[] stuArray) {
		int i = 0;
		for (; i < stuArray.length; i++) {
			Student s = stuArray[i];
			if (s == null) {
				break;
			}
		}
		return i;
	}

	/**
	 * 增加学生
	 * 
	 * @param stu
	 * @param stuArray
	 */
	public static void addStu(Student stu, Student[] stuArray) {
		int stuCount = getStuCount(stuArray);
		stuArray[stuCount] = stu;
	}

	/**
	 * 查看所有学生信息
	 * 
	 * @param stuArray
	 */
	public static void printStus(Student[] stuArray) {
		System.out.println("学号\t" + "姓名\t" + "年龄\t" + "性别\t");
		for (int i = 0; i < stuArray.length; i++) {
			Student s = stuArray[i];
			if (s != null) {
				System.out.println(s.toString());
			} else {
				break;
			}
		}
	}

	/**
	 * 根据学号修改学生信息 修改成功返回true,否则返回false
	 * 
	 * @param stuArray
	 * @param sid
	 * @param sname
	 * @param age
	 * @param gender
	 */
	public static boolean updateStuBySid(Student[] stuArray, int sid,
			String sname, int age, String gender) {
		Student s = null;
		if ((s = selectStuBySid(sid, stuArray)) != null) {
			s.setSname(sname);
			s.setAge(age);
			s.setGender(gender);
			return true;
		} else {
			return false;
		}
	}

	/**
	 * 根据学号查看某一个学生信息 查找到该学生返回该学生对象,否则返回null
	 * 
	 * @param sid
	 * @param atuArray
	 */
	public static Student selectStuBySid(int sid, Student[] stuArray) {
		for (int i = 0; i < getStuCount(stuArray); i++) {
			Student s = stuArray[i];
			if (s.getSid() == sid) {
				return s;
			} else {
				continue;
			}
		}
		return null;
	}

	/**
	 * 根据性别查看同性别的所有学生
	 * 
	 * @param gender
	 * @param stuArray
	 */
	public static void selectStusByGender(String gender, Student[] stuArray) {
		for (int i = 0; i < getStuCount(stuArray); i++) {
			Student s = stuArray[i];
			if (gender.equals(s.getGender())) {
				System.out.println(s.toString());
			}
		}
	}

	/**
	 * 根据学号删除某一个学生
	 * 
	 * @param sid
	 * @param stuArray
	 * @return
	 */
	public static boolean delStusBySid(int sid, Student[] stuArray) {
		int index = -1;
		for (int i = 0; i < getStuCount(stuArray); i++) {
			if (sid == stuArray[i].getSid()) {
				index = i;
				break;
			}
		}
		if (index == -1) {
			return false;
		}
		int j = index;
		for (; j <= getStuCount(stuArray) + index; j++) {
			stuArray[j] = stuArray[j + 1];
		}
		stuArray[j + 1] = null;
		return true;
	}
	
	// 交换学生位置
	private static void swap(Student a, Student b) {
		Student t = a;
		a = b;
		b = t;
	}

	/**
	 * 根据学号升序排序
	 * 
	 * @param stuArray
	 */
	public static void sidAscSortStus(Student[] stuArray) {
		for (int i = 0; i < getStuCount(stuArray); i++) {
			for (int j = 1; j < getStuCount(stuArray) - i; j++) {
				if (stuArray[j - 1].getSid() > stuArray[j].getSid()) {
					 swap(stuArray[j - 1],stuArray[j]);
					Student t = stuArray[j - 1];
					stuArray[j - 1] = stuArray[j];
					stuArray[j] = t;
				}
			}
		}
	}

	/**
	 * 根据学号降序排序(冒泡)
	 * 
	 * @param stuArray
	 */
	public static void sidDescSortStus(Student[] stuArray) {
		for (int i = 0; i < getStuCount(stuArray); i++) {
			for (int j = 1; j < getStuCount(stuArray) - i; j++) {
				if (stuArray[j - 1].getSid() < stuArray[j].getSid()) {
					 swap(stuArray[j - 1],stuArray[j]);
					Student t = stuArray[j - 1];
					stuArray[j - 1] = stuArray[j];
					stuArray[j] = t;
				}
			}
		}
	}
}

测试类

/**
	 * 测试
	 * 
	 * @param args
	 */
public class Test {
	public static void main(String[] args) {
		// 为了便于测试,定义好数据,并且将学生数据进行存储
		Student[] stuArray = new Student[100];

		Student stu1 = new Student(1003, "小明", 18, "男");
		Student stu2 = new Student(1002, "小红", 18, "女");
		Student stu3 = new Student(1011, "小贝", 18, "男");
		Student stu4 = new Student(1004, "小杰", 18, "男");
		Student stu5 = new Student(1008, "小张", 18, "女");

		stuArray[0] = stu1;
		stuArray[1] = stu2;
		stuArray[2] = stu3;
		stuArray[3] = stu4;
		stuArray[4] = stu5;

		System.out.println("测试输出所有学生:");
		printStus(stuArray);
		System.out.println("---------------------");

		System.out.println("测试增加学生:");
		Student stu6 = new Student(2000, "周杰伦", 30, "男");
		addStu(stu6, stuArray);
		printStus(stuArray);
		System.out.println("---------------------");

		System.out.println("测试输出性别为“男”学生:");
		selectStusByGender("男", stuArray);
		System.out.println("---------------------");

		System.out.println("测试修改对应编号学生信息:");
		// 修改学生信息
		updateStuBySid(stuArray, 2000, "昆凌", 18, "女");
		printStus(stuArray);
		System.out.println("---------------------");

		System.out.println("测试查找对应编号学生信息:");
		System.out.println(selectStuBySid(2000, stuArray));
		System.out.println("---------------------");

		System.out.println("测试升序排列学生:");
		sidAscSortStus(stuArray);
		System.out.println("---------------------");

		System.out.println("测试根据学号删除学生:");
		delStusBySid(2000, stuArray);
		printStus(stuArray);
		System.out.println("---------------------");

		System.out.println("测试降序排列学生:");
		sidDescSortStus(stuArray);
		printStus(stuArray);
	}
}

结果

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值