一个具有良好编程习惯的系统,是将对象的属性、行为封装进不同的类中方法中,在主方法中直接调用需要的方法属性,大大的减少的代码的冗余度和易维护性,方便后期功能的扩展。目前实现的系统还有许多不完美的地方,对异常输入的处理比较少,等以后学习到异常处理再加以完善,不过对刚入门的小白来说,这是个不错的练手机会,对Java的面向对象特点,封装,模块复用有良好的体现,再接再厉。
###### 主方法,调用其他类中的属性和方法
import java.util.Scanner;
public class StudentManagement_1 {
	//学生管理系统主程序
	public static void main(String[] args) {
		Scanner in=new Scanner(System.in);
		System.out.println("--------------------请定义学生总数:--------------------");
		int n=in.nextInt();
		Student_1[] stuArr=new Student_1[n];          //创建学生类数组,存储学生所有的信息
		Admin_1 admin=new Admin_1();
		while(true) {
			System.out.println("------------------请选择您需要执行的功能------------------");
			System.out.println("10、添加一个学生");
			System.out.println("11、查找一个学生");
			System.out.println("12、根据学号修改学生基本信息");
			System.out.println("13、根据学号删除学生基本信息");
			System.out.println("14、根据学号输入学生各科成绩");
			System.out.println("15、根据某门成绩进行排序");
			System.out.println("16、根据总分进行排序");
			System.out.println("99、退出系统");
			String num=in.nextInt();

			//执行添加操作
			if(num.equals(10)) {
				System.out.println("请输入新加学生学号:");
				int on=in.nextInt();
				System.out.println("请输入姓名:");
				String name=in.next();
				System.out.println("请输入年龄:");
				int age=in.nextInt();
				System.out.println("请输入性别:");
				String sex=in.next();
				admin.add(on,name,age,sex,stuArr);
			}
			
			//执行查找操作
			else if(num.equals(11)) {
				System.out.println("请输入你想查找学生学号:");
				int on=in.nextInt();
				admin.select(on,stuArr);
			}
			
			//执行修改操作
			else if(num.equals(12)) {
				System.out.println("请输入您想修改学生的原始学号:");
				int on=in.nextInt();
				System.out.println("请输入修改后的学生姓名:");
				String name=in.next();
				System.out.println("请输入修改后的学生年龄:");
				int age=in.nextInt();
				System.out.println("请输入修改后的学生性别:");
				String sex=in.next();
				admin.update(on,name,age,sex,stuArr);
			}
			
			//执行删除操作,根据学号进行修改操作
			else if(num.equals(13)) {
				System.out.println("请输入需要删除学生的学号:");
				int on=in.nextInt();
				admin.delete(on,stuArr);
			}
			
			//根据学号输入学生各科成绩
			else if(num.equals(14)) {
				System.out.println("请输入待添加学生的学号:");
				int on=in.nextInt();
				System.out.println("请输入Java成绩:");
				int java=in.nextInt();
				System.out.println("请输入sql成绩:");
				int sql=in.nextInt();
				System.out.println("请输入html成绩:");
				int html=in.nextInt();
				System.out.println("请输入web成绩:");
				int web=in.nextInt();
				admin.score(on,java,sql,html,web,stuArr);
			}
			
			//根据某门成绩进行排序
			else if(num.equals(15)) {
				System.out.println("请输入您需要排序的科目:1、Java 2、sql 3、html 4、web");
				int number=in.nextInt();
				admin.sourceSort(number,stuArr);
			}
			
			//根据总分进行排序
			else if(num.equals(16)) {
				admin.sumSort(stuArr);
			}
			
			//退出系统
			else if(num.equals(99)) {
				System.out.println("系统已经成功退出!");
				System.exit(0);
			}
		}
	}
}
学生属性类
//学生属性类
public class Student_1 {
	//封装每个对象的属性
	private int on;
	private String name;
	private int age;
	private String sex;
	private int java;
	private int sql;
	private int html;
	private int web;
	private int sum;
	private double avg;
	//给每个属性的调用提供接口
	public int getOn() {
		return on;
	}
	public void setOn(int on) {
		this.on = on;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getJava() {
		return java;
	}
	public void setJava(int java) {
		this.java = java;
	}
	public int getSql() {
		return sql;
	}
	public void setSql(int sql) {
		this.sql = sql;
	}
	public int getHtml() {
		return html;
	}
	public void setHtml(int html) {
		this.html = html;
	}
	public int getWeb() {
		return web;
	}
	public void setWeb(int web) {
		this.web = web;
	}
	public int getSum() {
		return sum;
	}
	//sum有各科成绩相加得到,无参
	public void setSum() {
		this.sum = this.java+this.sql+this.html+this.web;
	}
	public double getAvg() {
		return avg;
	}
	//avg值由sum/4得到,无参
	public void setAvg() {
		this.avg = this.sum/4;
	}
	
	//重写toString方法
	public String toString() {
		String str=this.on+"\t"+this.name+"\t"+this.age+"\t"+
					this.sex+"\t"+this.java+"\t"+this.sql+"\t"+
					this.html+"\t"+this.web+"\t"+this.sum+"\t"+this.avg;
		return str;
	}
}
对象的行为,增删改查的具体实现方法
public class Admin_1 {
	Student_1 stu=new Student_1();
	//判断这个位置是否有人根据的是:该位置是否为空,为空无人,反之
	public int setIndex(Student_1[] arr) {
		for(int i=0;i<arr.length;i++) {
			if(arr[i]==null) {         
				return i;
			}
		}
		return 999;
	}

	//输出操作
	String str="学号\t\t姓名\t年龄\t性别\tJava\tsql\thtml\tweb\t总分\t平均分";
	public void printf(Student_1[] arr) {
		System.out.println(str);
		for(int i=0;i<arr.length;i++) {
			if(arr[i]!=null) {           //如果是空的没必要输出
				arr[i].setSum();
				arr[i].setAvg();
				System.out.println(arr[i]);
			}
		}
		System.out.println("\n\n");
	}
	
	//判断学生是否为空操作
	public boolean check(int on,Student_1 stu) {
		if(stu!=null) {
			if(stu.getOn()==on) {
				return true;
			}
			return false;
		}
		return false;
	}

	//执行添加操作
	public void add(int no,String name, int age,String sex,Student_1[] arr) {
		Student_1 stu=new Student_1();
		stu.setOn(no);
		stu.setName(name);
		stu.setAge(age);
		stu.setSex(sex);
		int i=this.setIndex(arr);
		if(i==999) {
			System.out.println("添加学生人数已经达到最大值,添加失败!");
		}else {
			System.out.println("添加成功!");
			arr[i]=stu;
		}
		printf(arr);
	}
	
	//执行查找操作
	public void select(int on, Student_1[] arr) {
		for(int i=0;i<arr.length;i++) {
			if(check(on,arr[i])) {
				System.out.println("查找成功!");
				//这里不能调用printf方法,因为只需要查找到的这个学生信息,不需要全部
				System.out.println(str);
				System.out.println(arr[i]);
				return;
			}
		}
		System.out.println("查找失败!");
	}
	
	//执行修改操作
	public void update(int on, String name, int age, String sex, Student_1[] arr) {
		//执行修改操作,首先判断该学生是否存在
		for(int i=0;i<arr.length;i++) {
			if(check(on,arr[i])) {
				arr[i].setOn(on);
				arr[i].setName(name);
				arr[i].setAge(age);
				arr[i].setSex(sex);
				System.out.println("修改成功!");
				printf(arr);
				return;
			}
		}
		System.out.println("修改失败!");
	}

	//执行删除操作,同样需要考虑删除的学生是否存在
	public void delete(int on, Student_1[] arr) {
		for(int i=0;i<arr.length;i++) {
			if(check(on,arr[i])) {
				arr[i]=null;
				System.out.println("删除成功!");
				printf(arr);
				return;
			}
		}
		System.out.println("删除失败!");
	}
	
	//添加学生成绩操作
	public void score(int on, int java, int sql, int html, int web, Student_1[] arr) {
		for(int i=0;i<arr.length;i++) {
			if(check(on,arr[i])) {
				arr[i].setJava(java);
				arr[i].setSql(sql);
				arr[i].setHtml(html);
				arr[i].setWeb(web);
				printf(arr);
				return;
			}
		}
		System.out.println("添加学生成绩失败!该生不存在!");
	}
	
	/**
	 * 这里使用选择排序,不采用冒泡排序
	 * 因为冒泡排序有bug,是相邻的学生进行排序的,当这两个学生中间
	 * 有一个学生是null时,就没办法交换了,所以用选择排序
	 * @param num
	 * @param arr
	 */
	public void sourceSort(int num, Student_1[] arr) {
		//Java成绩
		if(num==1) {
			for(int i=0;i<arr.length;i++) {
				for(int j=i+1;j<arr.length;j++) {
					if(arr[j].getJava()>arr[i].getJava()) {
						Student_1 t=arr[j];
						arr[j]=arr[i];
						arr[i]=t;
					}
				}
			}
			printf(arr);
		}
		//sql成绩
		else if(num==2) {
			for(int i=0;i<arr.length;i++) {
				for(int j=i+1;j<arr.length;j++) {
					if(arr[j].getSql()>arr[i].getSql()) {
						Student_1 t=arr[j];
						arr[j]=arr[i];
						arr[i]=t;
					}
				}
			}
			printf(arr);
		}
		//html成绩
		else if(num==3) {
			for(int i=0;i<arr.length;i++) {
				for(int j=i+1;j<arr.length;j++) {
					if(arr[j].getHtml()>arr[i].getHtml()) {
						Student_1 t=arr[j];
						arr[j]=arr[i];
						arr[i]=t;
					}
				}
			}
			printf(arr);
		}
		//web成绩
		else if(num==4) {
			for(int i=0;i<arr.length;i++) {
				for(int j=i+1;j<arr.length;j++) {
					if(arr[j].getWeb()>arr[i].getWeb()) {
						Student_1 t=arr[j];
						arr[j]=arr[i];
						arr[i]=t;
					}
				}
			}
			printf(arr);
		}
	}
	
	//根据总分进行排序操作
	public void sumSort(Student_1[] arr) {
		for(int i=0;i<arr.length;i++) {
			for(int j=i+1;j<arr.length;j++) {
				if(arr[j].getSum()>arr[i].getSum()) {
					Student_1 t=arr[j];
					arr[j]=arr[i];
					arr[i]=t;
				}
			}
		}
		printf(arr);
	}	
}