新手学了编程语言一般都拿个小demo来练练手,如果你是学生党,哈哈,那一定逃不过这个学生管理系统了吧。就这个学生管理系统本人已经做了三遍啦,分别使用的是c语言,c++语言,这次是java语言,c语言对数据的存储比较麻烦,不像c++、java有容器,需要自己实现链表或者是顺序表,用c语言写个学生管理系统确实是很练手的。我用c++实现的那会也没有用到容器的概念,用的貌似也是链表,不过java就不能这么搞了,要么亏死了,不好好用用容器怎么用所学的知识练手!好了,废话不多说了,先给c语言(媒体库管理系统 )和c++语言(媒体库管理系统升级版 )的博客链接,然后我们来看看如何使用java去做今天的java版学生管理系统。

我们先来完成菜单的功能,菜单嘛,比较简单,就是打印个输出语句,然后对用户的选中加个判断,所以就上代码吧!

package student_menu;

import java.util.Scanner;
import student_service.Service;

public class Menu
{
	//将服务类作为私有成员变量
	private Service service;
	//创建scanner用来读取输入数据
	private Scanner scanner;

	//做必要的初始化工作
	public Menu()
	{
		//初始化以下的成员变量
		service = new Service();
		scanner = new Scanner(System.in);
	}

	public void showHead()
	{
		System.out.println("----------------------------------------------------");
		System.out.println("**********************************************");
		System.out.println("********学生个人成绩管理系统(小塔)********");
		System.out.println("**********************************************");
		System.out.println("**********************************************");
		System.out.println("----------------------------------------------------");
	}
	public  void showMenu()
	{
		int select = 0;
		showHead();
		System.out.println("*                   1、成绩管理>>                         *");
		System.out.println("*                   2、信息管理>>                         *");
		System.out.println("*                   3、退出系统>>                         *");
		System.out.println("----------------------------------------------------");
		System.out.println("系统已经启动,输入功能编号(1-3)>>>");

		select = scanner.nextInt();
		//循环调用二级菜单
		while(true)
		{
			switch(select)
			{
			case 1:
				if(showScore())
					return;
				break;
			case 2:
				if(showMessage())
					return;
				break;
			case 3:
				System.out.println("系统正在退出...");
				System.exit(0);
				break;
			default:
				System.out.println("菜单选择错误!请重新选择!");
			}
		}

	}

	//成绩管理菜单项
	public boolean showScore()
	{
		int select = 0;
		System.out.println("----------------------------------------------------");
		System.out.println("*                   1、增加成绩>>                   *");
		System.out.println("*                   2、删除成绩>>                   *");
		System.out.println("*                   3、修改成绩>>                   *");
		System.out.println("*                   4、显示成绩>>                   *");
		System.out.println("*                   5、汇总成绩>>                   *");
		System.out.println("*                   6、返回上一级系统              *");
		System.out.println("----------------------------------------------------");
		System.out.println("系统已经启动,输入功能编号(1-6)>>>");
		select = scanner.nextInt();
		//分别调用service的以下各个方法,来完成相应的功能
		switch(select)
		{
		case 1:
			service.addCourse();
			break;
		case 2:
			service.deleteCourse();
			break;
		case 3:
			service.modifyCourse();
			break;
		case 4:
			service.showCourse();
			break;
		case 5:
			service.summaryCourse();
			break;
		case 6:
			//直接return返回上一级菜单
			return true;
		default:
			System.out.println("菜单项选择错误!返回到主菜单!");
		}

		return false;
	}

	//学生信息管理菜单项
	public boolean showMessage()
	{
		int select = 0;
		System.out.println("----------------------------------------------------");
		System.out.println("*                   1、增加学生信息>>                   *");
		System.out.println("*                   2、删除学生信息>>                   *");
		System.out.println("*                   3、修改学生信息>>                   *");
		System.out.println("*                   4、显示学生信息>>                   *");
		System.out.println("*                   5、统计学生信息>>                   *");
		System.out.println("*                   6、查看学生课程信息>>             *");
		System.out.println("*                   7、返回上一级系统                      ");
		System.out.println("----------------------------------------------------");
		System.out.println("系统已经启动,输入功能编号(1-6)>>>");
		select = scanner.nextInt();
		//分别调用service的以下各个方法,来完成相应的功能
		switch(select)
		{
		case 1:
			service.addStudent();
			break;
		case 2:
			service.deleteStudent();
			break;
		case 3:
			service.modifyStudent();
			break;
		case 4:
			service.showStudent();
			break;
		case 5:
			service.summaryStudent();
			break;
		case 6:
			service.retriveCourse();
			break;
		case 7:
			//直接return返回上一级菜单
			return true;
		default:
			System.out.println("菜单项选择错误!返回到主菜单!");
		}

		return false;
	}
}

以上就是java的代码,对于一个搞c++的人来说,看到上边的代码,我就忍不住想对java的语法和c++的语法做一个比较,谁让我天天看c++呢,看什么都像c++哈。看到package大家想到了什么,是不是条件编译,不过他们的用途是不一样的,package代表的是个路径,用java的话说是个包,但是包在我看来就是个文件夹,不信看看你的资源文件的路径,你就明白了,c++中的条件编译是为了防止对头文件的多次包含,这么做比较确实牵强了。不过第二句的作用都差不多啦,import引入包,就是把你用到的类引入进来,这个和c++的include是一样的功能,用到哪个头文件引入哪个头文件。接下来就是类的定义了,在c++中,一般将类的声明和定义分开俩个文件来写,但是在java中,就写到一块了,而且java感觉费点事,成员前边都得声明权限,c++一个权限一个冒号就搞定了,希望java这点学学c++哈,省得老是public,private的。剩下的什么构造函数啦,重载啦,覆写啦,子类父类的继承啦,都是差不多的。不过java不允许多继承,而c++是允许的,java为了实现多继承有接口的概念,c++要想实现接口和抽象类就用纯虚函数搞定啦!其他的关于什么关键字等等啦,语言不同当然要不同啦,不过都很简单,java理解起来也比较简单。

接着我们写个主类,用来调用一下我们的菜单。然后我们照着菜单的功能,一个一个的去实现这些功能。

package student_main;

import student_menu.Menu;

public class MainStudent
{
	public static void main(String args[])
	{
		//创建菜单对象,完成显示菜单项的功能
		Menu menu = new Menu();
		//循环读取菜单项
		while(true)
		{
			menu.showMenu();
		}
	}
}

好了,先来写个课程类和学生类吧,它们各自包含自己的属性和方法,有些方法不是一次性写好的,是在后边写代码的时候添加的,大家写的时候其实写好了属性和构造函数就可以了,以后用到什么方法就添加什么方法,我这里为了说明的省事,就一次性把最后用到的所有的方法属性都添加了进来。

//学生类
package student;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import student_score.Score;

public class Student implements Comparable<Student>
{
	//学号
	private String num;
	//姓名
	private String name;
	//班级
	private String grade;
	//入学时间
	private Date date;
	//专业
	private String profession;
	//该学生的所有课程信息
	private ArrayList<Score> totalScore;

	//以下是get和set方法
	public String getNum() {
		return num;
	}

	public void setNum(String num) {
		this.num = num;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getGrade() {
		return grade;
	}

	public void setGrade(String grade) {
		this.grade = grade;
	}

	public Date getDate() {
		return date;
	}

	public void setDate(Date date) {
		this.date = date;
	}

	public String getProfession() {
		return profession;
	}

	public void setProfession(String profession) {
		this.profession = profession;
	}

	public ArrayList<Score> getTotalScore() {
		return totalScore;
	}

	public Student()
	{
		//初始化各种成员变量,分配内存空间
		num = new String();
		name = new String();
		grade = new String();
		date = new Date();
		profession = new String();
		//初始化课程信息容器
		totalScore = new ArrayList<Score>();
	}

	public int compareTo(Student student)
	{
		//根据学号进行排序
		return this.num.compareTo(student.num);
	}

	//如果学号相同则代表是同一个对象
	public boolean equals(Object obj)
	{
		if(this == obj)
			return true;

		if(obj instanceof Student)
		{
			Student student = (Student)obj;
			if(student.num.equals(this.num))
				return true;
		}

		return false;
	}

	public String toString()
	{
		SimpleDateFormat ft = new SimpleDateFormat ("yyyy.MM.dd");
		return num+"   "+name+"    "+grade+"   "+ft.format(date)+"   "+profession;
	}

}
//成绩类
package student_score;

public class Score
{
	//课程号
	private String courseNum;
	//课程名
	private String courseName;
	//成绩
	private float score;
	//学分
	private float credit;

	//以下是变量的set和set方法
	public void setCourseNum(String courseNum) {
		this.courseNum = courseNum;
	}

	public String getCourseNum() {
		return courseNum;
	}

	public void setCourseName(String courseName) {
		this.courseName = courseName;
	}

	public void setScore(float score) {
		this.score = score;
	}

	public void setCredit(float credit) {
		this.credit = credit;
	}

	public String getCourseName() {
		return courseName;
	}

	public float getScore() {
		return score;
	}

	public float getCredit() {
		return credit;
	}

	//覆写toString方法
	public String toString()
	{
		return "           "+courseName+"           "+courseNum+"          "+score+"          "+credit;
	}

	//在构造函数中进行必要的初始化
	public Score()
	{
		//初始化各个变量,为变量分配内存空间
		this.courseNum = new String();
		this.courseName = new String();
		this.score = 0;
		this.credit = 0;
	}
}

上边的实现中,有几个函数我是要说一下的,比较重要。Student类实现了Comparable接口,覆写了它的方法compareTo,这个接口是用来做对象的比较的,我们都知道,set和map集合是不允许在容器中存放相同的元素或者是键的,那么如何判断元素是否是相同的呢,对于HashSet和HashMap来说,底层的实现是hash表,它判断的时候是调用对象的hashcode方法和equals方法,hashcode返回的值相同就调用equals方法,因此如果将元素存入到这俩个集合中,一般会覆写类的hashcode方法和equals方法。而tree除了有不允许元素相同的功能外,还可以用来排序,排序用的函数,一种方法就是像student类那样继承comparable接口,实现compareTo方法,另一种就是传入一个比较器,来做比较,具体怎么用,我前面的博客有说明,大家看看就知道了。接下来就是equals方法,这个方法是用来判断俩个对象是否相同,如上所述,但是不仅仅就用在集合的时候判断等与不等,任何情况下你想判断俩个对象等和不等就调用它们的equals方法,而不是使用==,==会判断它们的内存地址是否相同,可能和你所要的是不符合的。到了这里,我不得不说下c++是怎么做的了,如果判断俩个对象是否相等,c++使用了操作符重载的概念,重载==操作符就可以了,或者你也可以写个equals方法啊,就用来判断来个对象等或者是不等。在c++的容器中,vector、list和java中的list是类似的,包括底层的实现,它们是不可以排序的,而set、map对应了java中的set和map,它们的排序方式是重载了<操作符,用这个来排序。toString方法就是打印输出了,返回字符串形式,主要用来输出嘛,这个和c++中对<<的重载是一样的。

好了,接下来我们做一个服务类,用来处理用户的输入和对用户的输出,以及对刚才俩个类的操作。

package student_service;

//引入下列的包
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeSet;
import  student.Student;
import  student_score.Score;

//学生服务类
public class Service
{
	//用来读取输入
	private Scanner scanner;
	//array集合用来存放课程信息
	private ArrayList<Score> courseList;
	//这个集合是用来存放汇总成绩信息的,有排序的功能
	private TreeSet<Summary> courseTree;
	//studentTree是用来保存学生信息的集合
	private TreeSet<Student> studentTree;

	//构造函数中完成一些初始化的操作
	public Service()
	{
		//初始化成员变量
		scanner = new Scanner(System.in);
		courseList = new ArrayList<Score>();
		courseTree = new TreeSet<Summary>();
		studentTree = new TreeSet<Student>();
	}

	/*
	 * 以下函数是和学生信息处理相关的一些操作,包括增删改查
	 */

	//完成添加学生信息的功能
	public void addStudent()
	{

		System.out.println("----------------------------------------------------");
		System.out.println("请输入学生的学号,姓名,班级,入学时间,专业,输入数据以空格间隔>>>");

		//调用getStudent函数,从控制台中读取输入数据
		Student student = this.getStudent();
		if(student != null)
		{
			//添加到集合中保存起来
			if(studentTree.add(student))
				System.out.println("添加学生信息成功!");
			else
				System.out.println("已经存在相同的学号!");
		}

		//为学生添加成绩记录
		this.addCourseForStudent(student);
	}

	//为学生添加成绩记录,参数是需要添加课程记录的学生
	private boolean addCourseForStudent(Student student)
	{
		System.out.println("----------------------------------------------------");
		System.out.println("               以下将为学生添加成绩记录                 ");
		if(courseList.size() == 0)
		{
			System.out.println("成绩记录为空!暂时不能为该学生添加成绩单!");
			return false;
		}

		System.out.println("选择为该学生添加的成绩记录,例如添加第1条成绩记录到该学生,则输入1>>>");
		this.showCourse();
		System.out.println("----------------------------------------------------");
		while(scanner.hasNextInt())
		{
			int input = scanner.nextInt();
			if(input == 0)
				break;
			else if(input > courseList.size())
			{
				System.out.println("不存在这条记录!请出入其他记录>>>");
				continue;
			}
			student.getTotalScore().add(courseList.get(input-1));
			System.out.println("添加记录"+input+"到学生成功!输入0代表不再添加记录>>>");
		}

		return true;
	}

	//删除学生信息
	public void deleteStudent()
	{
		System.out.println("----------------------------------------------------");
		//如果集合为空,直接返回
		if(studentTree.size() == 0)
		{
			System.out.println("您还没有添加任何记录!");
			return;
		}

		//不为空,继续判断
		System.out.println("请输入你要删除的学生的学号>>>");
		String tem = scanner.nextLine();
		Student student = this.getStudentByNum(tem);
		if(student != null)
		{
			//移除这条学生记录
			studentTree.remove(student);
			System.out.println("删除成功!");
		}
		else
			System.out.println("不存在该学生记录,删除失败!");
	}

	//修改学生信息
	public void modifyStudent()
	{
		System.out.println("----------------------------------------------------");
		//如果集合为空,直接返回
		if(studentTree.size() == 0)
		{
			System.out.println("您还没有添加任何记录!");
			return;
		}

		//这里的处理和删除的操作类似
		System.out.println("请输入你要修改的学生的学号>>>");
		String tem = scanner.nextLine();
		Student student = this.getStudentByNum(tem);
		if(student != null)
		{
			System.out.println("请输入新的学生的学号,姓名,班级,入学时间,专业,输入数据以空格间隔>>>");
			Student newStudent = this.getStudent();
			if(newStudent != null)
			{
				//如果满足条件的话就修改这个记录,即删除原纪录,添加一条新的纪录
				if(studentTree.add(newStudent))
				{
					studentTree.remove(student);
				}
				//如果要修改的学生的学号和修改之后的学生的学号是相同的,允许修改
				else if(student.equals(newStudent))
				{
					studentTree.remove(student);
					studentTree.add(newStudent);
				}
				else
				{
					System.out.println("已经存在相同学号的学生!修改失败!");
					return;
				}
				System.out.println("修改成功!");
				return;
			}
		}
		else
			System.out.print("不存在该学生记录,");

		System.out.println("修改失败!");
	}

	//显示学生信息
	public void showStudent()
	{
		System.out.println("----------------------------------------------------");
		//如果集合为空,直接返回
		if(studentTree.size() == 0)
		{
			System.out.println("您还没有添加任何记录!");
			return;
		}

		System.out.println("学号       姓名       班级       入学时间           专业");
		Iterator<Student> iterator = studentTree.iterator();
		while(iterator.hasNext())
		{
			System.out.println(iterator.next());
		}
	}

	//统计学生信息
	public void summaryStudent()
	{
		System.out.println("----------------------------------------------------");
		//如果集合为空,直接返回
		if(studentTree.size() == 0)
		{
			System.out.println("您还没有添加任何记录!");
			return;
		}

		System.out.println("一共有学生"+studentTree.size()+"名");
	}

	//查看学生的课程记录
	public void retriveCourse()
	{
		System.out.println("----------------------------------------------------");
		//如果集合为空,直接返回
		if(studentTree.size() == 0)
		{
			System.out.println("您还没有添加任何记录!");
			return;
		}

		//不为空,继续判断
		System.out.println("请输入你要查看课程信息的学生的学号>>>");
		String tem = scanner.nextLine();
		Student student = this.getStudentByNum(tem);
		if(student != null)
		{
			System.out.println("----------------------------------------------------");
			System.out.println("学号       姓名       班级       入学时间           专业");
			System.out.println(student);
			System.out.println("                        成绩单如下:                           ");
			System.out.println("        课程名      课程号         成绩         学分       ");
			Iterator<Score> iterator = student.getTotalScore().iterator();
			while(iterator.hasNext())
			{
				System.out.println(iterator.next());
			}
		}
		else
			System.out.println("不存在该学生记录,检索失败!");
	}

	//从控制台中获取用户的输入
	private Student getStudent()
	{
		//从控制台中读取一行输入数据
		String tem = scanner.nextLine();
		//使用空格将该行数据分隔
		String input[] = tem.split(" ");

		//取出每一个值赋给相应的变量
		String num = input[0];
		String name = input[1];
		String grade = input[2];
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		String buf = input[3];
		Date date;
		try
		{
			date = format.parse(buf);
		}
		catch (ParseException e)
		{
			System.out.println("日期输入的格式错误!添加学生信息失败!");
			return null;
		}
		String profession = input[4];

		//创建课程对象
		Student student = new Student();
		//为每个变量赋值
		student.setNum(num);
		student.setName(name);
		student.setGrade(grade);
		student.setDate(date);
		student.setProfession(profession);

		return student;
	}

	//通过学号来获得学生

	//通过学号来获取学生对象
	private Student getStudentByNum(String num)
	{
		Iterator<Student> iterator = studentTree.iterator();
		Student tem;
		//遍历集合,查看是否存在该学生信息
		while(iterator.hasNext())
		{
			tem = iterator.next();
			if(num.equals(tem.getNum()))
			{
				return tem;
			}
		}
		return null;
	}

	/*
	 * 以下函数是和课程信息处理相关的一些操作,包括增删改查
	 */

	//完成添加课程信息的功能

	//添加课程信息
	public void addCourse()
	{
		System.out.println("----------------------------------------------------");
		System.out.println("请输入课程名,课程号,成绩,学分,输入以空格间隔 >>>");

		Score temScore = this.getCourse();
		if(temScore != null)
		{
			//添加到集合中保存起来
			courseList.add(temScore);
			System.out.println("添加课程信息成功!");
		}
	}

	//删除课程信息

	//删除课程信息
	public void deleteCourse()
	{
		System.out.println("----------------------------------------------------");
		//如果集合为空,直接返回
		if(courseList.size() == 0)
		{
			System.out.println("您还没有添加任何记录!");
			return;
		}

		//不为空,继续判断
		System.out.println("请输入你要删除的课程的课程号>>>");
		String tem = scanner.nextLine();
		Score score = this.getCourseNum(tem);
		if(score != null)
		{
			//移除这条课程记录
			courseList.remove(score);
			System.out.println("删除成功!");
		}
		else
			System.out.println("不存在该课程记录,删除失败!");
	}

	//修改成绩记录

	//修改课程信息
	public void modifyCourse()
	{
		System.out.println("----------------------------------------------------");
		//如果集合为空,直接返回
		if(courseList.size() == 0)
		{
			System.out.println("您还没有添加任何记录!");
			return;
		}

		//这里的处理和删除的操作类似
		System.out.println("请输入你要修改的课程的课程号>>>");
		String tem = scanner.nextLine();
		Score score = this.getCourseNum(tem);
		if(score != null)
		{
			System.out.println("请输入新的课程名,课程号,成绩,学分,输入以空格间隔 >>>");
			Score newScore = this.getCourse();
			if(newScore != null)
			{
				//如果满足条件的话就修改这个记录
				int index = courseList.indexOf(score);
				courseList.set(index, newScore);
				System.out.println("修改成功!");
				return;
			}
		}
		else
			System.out.print("不存在该课程记录,");

		System.out.println("修改失败!");
	}

	//显示课程信息

	//显示课程信息
	public void showCourse()
	{
		System.out.println("----------------------------------------------------");
		//如果集合为空,直接返回
		if(courseList.size() == 0)
		{
			System.out.println("您还没有添加任何记录!");
			return;
		}

		Iterator<Score> iterator = courseList.iterator();
		System.out.println("        课程名      课程号         成绩         学分      ");
		while(iterator.hasNext())
		{

			System.out.println(iterator.next());
		}
	}

	//完成汇总的功能

	//汇总课程信息
	public void summaryCourse()
	{
		System.out.println("----------------------------------------------------");
		//如果集合为空,直接返回
		if(courseList.size() == 0)
		{
			System.out.println("您还没有添加任何记录!");
			return;
		}

		//遍历集合,进行汇总
		Iterator<Score> iterator = courseList.iterator();
		//汇总之前清空汇总表
		courseTree.clear();
		while(iterator.hasNext())
		{
			Score score = iterator.next();
			//查看汇总表中是否存在课程号记录
			Summary tem = this.getSummary(score.getCourseNum());
			if(tem == null)
			{
				//如果不存在的话,就添加一条汇总记录
				Summary summary = new Summary();
				summary.id = score.getCourseNum();
				summary.name = score.getCourseName();
				summary.credit = score.getCredit();
				summary.count++;
				summary.sum += score.getScore();
				//添加到汇总集合中
				courseTree.add(summary);
			}
			else
			{
				//存在的话,就进行统计,对已有的记录进行修改
				tem.count++;
				tem.sum += score.getScore();
			}
		}
		System.out.println("总的记录个数为:"+courseTree.size());
		//最后打印输出汇总信息
		System.out.println("课程名     课程号    学分    考试人数    平均分");
		Iterator<Summary> sum = courseTree.iterator();
		while(sum.hasNext())
		{
			Summary summary = sum.next();
			System.out.println(summary.name+"       "+summary.id+"       "
			+summary.credit+"           "+summary.count+"          "+summary.sum/summary.count);
		}
	}

	//从标准输入中读取课程记录

	//从控制台中获取用户输入
	private Score getCourse()
	{
		//从控制台中读取一行输入数据
		String tem = scanner.nextLine();
		//使用空格将该行数据分隔
		String input[] = tem.split(" ");

		//取出每一个值赋给相应的变量
		String name = input[0];
		String num = input[1];
		float score;
		float credit;

		//用户输入的数据格式可能存在问题,所以在这里需要捕获异常
		try
		{
			score = Float.parseFloat(input[2]);
			credit = Float.parseFloat(input[3]);
		}
		catch(NumberFormatException e)
		{
			System.out.println("数据输入格式错误!添加课程信息失败!");
			return null;
		}

		//创建课程对象
		Score temScore = new Score();
		//为每个变量赋值
		temScore.setCourseName(name);
		temScore.setCourseNum(num);
		temScore.setScore(score);
		temScore.setCredit(credit);

		return temScore;
	}

	//传入一个课程号,然后判断是否存在该课程记录

	//通过课程号来获取课程对象
	private Score getCourseNum(String num)
	{
		Iterator<Score> iterator = courseList.iterator();
		Score tem;
		//遍历集合,查看是否存在该课程信息
		while(iterator.hasNext())
		{
			tem = iterator.next();
			if(num.equals(tem.getCourseNum()))
			{
				return tem;
			}
		}
		return null;
	}

	//判断汇总表中是否存在记录

	//获取汇总记录
	private Summary getSummary(String num)
	{
		Iterator<Summary> iterator = courseTree.iterator();
		while(iterator.hasNext())
		{
			Summary summary =  iterator.next();
			if(num.equals(summary.id))
			{
				return summary;
			}
		}
		return null;
	}
}

//这个类是用来汇总的
class Summary implements Comparable<Summary>
{
	//课程号
	public String id;
	//课程名
	public String name;
	//学分
	public float credit;
	//保存人数的变量
	public int count;
	//保存总分的变量
	public float sum;

	Summary()
	{
		//在构造函数中初始化以下的成员变量
		id = new String();
		name = new String();
		credit = 0;
		count = 0;
		sum =0.0f;
	}
	/*
	//覆写hashcode方法
	public int hashCode()
	{
		int result = 17;
		result = result*37+id.hashCode();
		result = result*37+name.hashCode();
		result = result*37+(int)credit;
		result = result*37+count;
		result = result*37+(int)sum;

		return result;
	}

	//覆写equals方法
	public boolean equals(Object obj)
	{
		if(this == obj)
			return true;

		if(obj instanceof Summary)
		{
			Summary sum = (Summary)obj;
			return id.equals(sum.id);
		}

		return false;
	}
	*/

	//继承Comparable接口必须覆写compareTo方法,用来排序
	//这里有一点需要注意,TreeSet使用的是compareTo方法来比较俩个对象是否相同,如果相同的话就不会添加对象了
	public int compareTo(Summary score)
	{
		return this.id.compareTo(score.id);
	}
}

其实这个服务类对各个功能的实现无非就是对集合的一种操作,什么增删改查啦,都是通过集合完成的,使用不同的集合需要覆写的一些方法我刚才都说过了,其他的东西就没什么好说的了,我注释加的很清楚了,好了,这个小demo就完成了,最后运行起来看看效果吧!
java版学生管理系统 java版学生管理系统 java版学生管理系统