构造一个学生类Student,每一个学生对象有基本信息,同时还有课程考试成绩信息。利用集合框架类完成。

原创 2016年10月18日 20:40:47

构造一个学生类Student, 每一个学生对象有id, name, sex, address等

基本信息,同时还有java语言、C语言、编译原理和Java EE等课程考试

成绩信息。利用集合框架类完成如下功能:(考试成绩用一个类实现)

1. 读取存放学生信息的文件,存储到一个集合框架类对象中,文件格式如下:

     id  name  sex address  java语言成绩  C语言成绩 编译原理成绩 Java EE成绩

     1   aaa    f  nwsuaf 98   92  32  87

     2   bbb   m  yangling 99  91  86  88

     ……………

2. 增加一个学生对象(id是唯一的不允许重复,如果有重复的给出提示,并

重新输入),要求按照学号id升序排序,并打印输出。

3. 查找一个学生,根据学生的姓名查找集合中是否存在该学生,存在打印输

出该学生信息,不存在给出提示;

4. 删除一个学生,输入一个学生的姓名,删除集合中该学生。

5. 创建一个Map对象map, map = newHashMap<Integer, TreeSet<Student>>,

其中map 的key存储为id%10,  value对象TreeSet<Student>存储的key相同的所

有学生对象。要求TreeSet <Student>中的学生对象按照学号升序排序,打印输出

map中所有的信息。

***********************************************************************

Student类,代码如下:

package collection;

public class Student extends Scores implements Comparable<Student>{
	//学生信息类
	private int id;//学号
	private String name;//姓名
	private String sex;//性别
	private String address;//地址
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public void Student(int id,String name,String sex,String address,int javayuyan,int cyuyan,int bianyi,int javaee){
		this.id=id;
		this.name =name;
		this.sex=sex;
		this.address =address;
		this.javayuyan=javayuyan;
		this.cyuyan=cyuyan;
		this.bianyi=bianyi;
		this.javaee=javaee;
	}
	@Override
	public String toString() {
		return id + "  "+ name + "  " + sex + "  " + address + "  "+
				javayuyan+ "  " + cyuyan + "  "+ bianyi + "  " + javaee   ;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result + ((address == null) ? 0 : address.hashCode());
		result = prime * result + id;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result + ((sex == null) ? 0 : sex.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (address == null) {
			if (other.address != null)
				return false;
		} else if (!address.equals(other.address))
			return false;
		if (id != other.id)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (sex == null) {
			if (other.sex != null)
				return false;
		} else if (!sex.equals(other.sex))
			return false;
		return true;
	}
	@Override
	public int compareTo(Student o) {
		int result =this.getId()>o.getId()? 1:
			(this.getId()==o.getId()?0:-1);
		return result;
	}
}
Scores类,代码如下:

package collection;

public class Scores {
	//学生的分数类
	protected int javayuyan;//Java语言
	protected int cyuyan;//c语言
	protected int bianyi;//编译原理
	protected int javaee;//JavaEE
	public int getJavayuyan() {
		return javayuyan;
	}
	public void setJavayuyan(int javayuyan) {
		this.javayuyan = javayuyan;
	}
	public int getCyuyan() {
		return cyuyan;
	}
	public void setCyuyan(int cyuyan) {
		this.cyuyan = cyuyan;
	}
	public int getBianyi() {
		return bianyi;
	}
	public void setBianyi(int bianyi) {
		this.bianyi = bianyi;
	}
	public int getJavaee() {
		return javaee;
	}
	public void setJavaee(int javaee) {
		this.javaee = javaee;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + bianyi;
		result = prime * result + cyuyan;
		result = prime * result + javaee;
		result = prime * result + javayuyan;
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Scores other = (Scores) obj;
		if (bianyi != other.bianyi)
			return false;
		if (cyuyan != other.cyuyan)
			return false;
		if (javaee != other.javaee)
			return false;
		if (javayuyan != other.javayuyan)
			return false;
		return true;
	}
	@Override
	public String toString() {
		return "Scores [bianyi=" + bianyi + ", cyuyan=" + cyuyan + ", javaee="
				+ javaee + ", javayuyan=" + javayuyan + "]";
	}
}
Operation类,代码如下:

package collection;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeSet;

public class Operation {
	public void Read(Map<Integer, TreeSet<Student>> map){
		//读入数据
		String fileName="data/11.txt";
		try {
			BufferedReader reader = new BufferedReader(new FileReader(fileName));
			String line = null;
	        
	        while((line=reader.readLine())!=null){//循环赋值读入
	        	String str[] = line.split("\\s+");
	        	Student op=new Student();
	        	op.setId( Integer.parseInt(str[0].trim()));
	        	op.setName( str[1].trim());
	        	op.setSex(str[2].trim());
	        	op.setAddress(str[3].trim());
	        	op.setJavayuyan(Integer.parseInt(str[4].trim()));
	        	op.setCyuyan(Integer.parseInt(str[5].trim()));
	        	op.setBianyi(Integer.parseInt(str[6].trim()));
	        	op.setJavaee(Integer.parseInt(str[7].trim()));
	        	if(map.containsKey(op.getId()%10)){
	        		map.get(op.getId()%10).add(op);
	        	}else{
	        		TreeSet<Student> ts=new TreeSet<Student>();
	        		ts.add(op);
	        		map.put(op.getId()%10, ts);
	        	}
	        }
		}catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public void OutPrint(Map<Integer, TreeSet<Student>> map){
		//按一定的顺序输出信息
		System.out.println("学号  姓名  性别  地址    java语言成绩    C语言成绩    编译原理成绩    JavaEE成绩");
		for(Iterator<Integer> it = map.keySet().iterator();
		             it.hasNext();)
		{
			TreeSet<Student> tp2=new TreeSet<Student>();
			tp2.addAll(map.get(it.next()));
			for(Iterator<Student> it1 = tp2.iterator();
             it1.hasNext();)
			{
				System.out.println(it1.next().toString());
			}
		}
	}
	
	public void AddStudent(Map<Integer, TreeSet<Student>> map){
		//添加学生信息,如果相同则重新添加
		System.out.println("输入学生信息:");
		System.out.println("输入格式为:学号  姓名  性别  地址    java语言成绩    C语言成绩    编译原理成绩    JavaEE成绩");
		Scanner in=new Scanner(System.in);
		String line=in.nextLine();
		String str[] = line.split("\\s+");
    	Student op=new Student();
    	op.setId( Integer.parseInt(str[0].trim()));
    	op.setName( str[1].trim());
    	op.setSex(str[2].trim());
    	op.setAddress(str[3].trim());
    	op.setJavayuyan(Integer.parseInt(str[4].trim()));
    	op.setCyuyan(Integer.parseInt(str[5].trim()));
    	op.setBianyi(Integer.parseInt(str[6].trim()));
    	op.setJavaee(Integer.parseInt(str[7].trim()));
    	if(map.containsKey(op.getId()%10)){
    		if(map.get(op.getId()%10).contains(op)){
    			System.out.println("学号信息已经存在,不能插入!");
    		}else{
    			map.get(op.getId()%10).add(op);
    			System.out.println("信息添加成功!");
    		}
    	}else{
    		TreeSet<Student> ts=new TreeSet<Student>();
    		ts.add(op);
    		map.put(op.getId()%10, ts);
    		System.out.println("信息添加成功!");
    	}
	}
	
	public void FindStudent(Map<Integer, TreeSet<Student>> map){
		//按学生的姓名进行查找学生,如果找到则打印输出信息
		System.out.println("输入要查找的学生姓名:");
		Scanner in=new Scanner(System.in);
		String line=in.nextLine();
		String str= line.trim();
		boolean a=true;
		for (Iterator<Integer> it = map.keySet().iterator(); it.hasNext();) {
			TreeSet<Student> tp2 = new TreeSet<Student>();
			tp2.addAll(map.get(it.next()));
			for (Iterator<Student> it1 = tp2.iterator(); it1.hasNext();) {
				Student stu=new Student();
				stu=it1.next();
				if(stu.getName().equals(str)){
					System.out.println("要查找的姓名为"+str+"的学生已找到,信息打印如下:");
					System.out.println(stu.toString());
					a=false;
				}
			}
		}
		if(a){
			System.out.println("要查找的姓名为"+str+"的学生姓名不存在!");
		}
    	
	}
	
	public void DelStudent(Map<Integer, TreeSet<Student>> map){
		//按照学生姓名删除学生信息,如果存在则删除,如果不存在则提示输入的信息不存在
		System.out.println("输入要删除的学生姓名:");
		Scanner in=new Scanner(System.in);
		String line=in.nextLine();
		String str= line.trim();
		boolean a=true;
		for (Iterator<Integer> it = map.keySet().iterator(); it.hasNext();) {
			TreeSet<Student> tp2 = new TreeSet<Student>();
			tp2.addAll(map.get(it.next()));
			for (Iterator<Student> it1 = tp2.iterator(); it1.hasNext();) {
				Student stu=new Student();
				stu=it1.next();
				if(stu.getName().equals(str)){
					System.out.println("要查找的姓名为"+str+"的学生已删除!");
					map.get(stu.getId()).remove(stu);
					a=false;
				}
			}
		}
		if(a){
			System.out.println("要删除的姓名为"+str+"的学生姓名不存在!");
		}
    	
	}
	
}
Main类,代码如下:

package collection;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeSet;

public class Main {
public static void main(String[] args) {
	Map<Integer, TreeSet<Student>> map=new HashMap<Integer, TreeSet<Student>>();
	Operation op=new Operation();
	op.Read(map);
	int i;
	while(true){
		System.out.println("1:打印学生信息\t"+"2:查找学生信息\t"+"3:插入学生信息\t"+"4:删除学生信息\t"+"5:退出系统\n");			
		i=(new Scanner(System.in)).nextInt();
		switch (i)
		{
		case 1:op.OutPrint(map);break;
		case 2:op.FindStudent(map);break;
		case 3:op.AddStudent(map);break;
		case 4:op.DelStudent(map);break;
		}
		if(i==5){
			break;
		}
	}
}
}
main类为主函数类,其他的均为执行类或者对象类。

以上代码可能存在一些冗余的部分,没有进行修改,如果需要可以自行拷贝和修改。

版权声明:本文为博主原创文章,未经博主允许不得转载。

定义一个表示学生信息的类Student,要求如下:  (1)类Student的成员变量: sNO 表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示Java课程成绩。

/*定义一个表示学生信息的类Student,要求如下: (1)类Student的成员变量: sNO 表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示Java课程成...
  • qq_33151859
  • qq_33151859
  • 2016年09月13日 15:30
  • 10497

java程序——用集合框架实现学生类的排序输出

编写一个学生成绩管理程序。 要求: 1. 应用集合 2. 按成绩的高低输出学生信息。 (用java实现)//导入包 import java.util.ArrayList; import jav...
  • firstchange
  • firstchange
  • 2016年11月29日 13:05
  • 1136

【OC复合题】之定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建5个对象,属性可以任意值。(Objective-C)

题目: 定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建5个对象,属性可以任意值。(Objective-C) 1)    不使用@property,手动编写他们的访问器方法(getter和...
  • u011349387
  • u011349387
  • 2015年05月26日 15:20
  • 3434

定义一个表示学生信息的类Student,要求如下:  (1)类Student的成员变量: sNO 表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示Java课程成绩。

/*定义一个表示学生信息的类Student,要求如下: (1)类Student的成员变量: sNO 表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示Java课程成...
  • qq_33151859
  • qq_33151859
  • 2016年09月13日 15:30
  • 10497

Java学习篇之Map集合的遍历方法集锦

Map集合的两类遍历方法,四种具体方式
  • sun15732621550
  • sun15732621550
  • 2016年12月08日 23:33
  • 691

要求从用户输入的多行文本中提取学生的姓名、学号及登录日期,并封装到 Student 类中作为类的私有属性。创建一个 Student 类型的对象数组,对学号进行 升序排序并输出

/*从键盘输入多行文本,格式如下:学生端名称,姓名,班级名称,学生 ID,注册时间 姜涛,姜涛,,20092212232,2011-11-4 9:06:56 任超,任超,,20092212239,...
  • Kansas_Jason
  • Kansas_Jason
  • 2016年04月15日 10:00
  • 1664

Day14作业 三、编程题 写一个Student类,属性:名字,年龄,分数,班级 (注意分包)

三、编程题 写一个Student类,属性:名字,年龄,分数,班级 (注意分包) 写一个测试类:创建一个集合,里面装6个学生(有三个班级class01,class02,class03) 例如:...
  • hacker754
  • hacker754
  • 2017年12月23日 20:43
  • 63

Java笔试题:将集合中的学生信息按照学生的年龄升序排列

青年教育社 2017-01-16 13:45 最近很多学员在参加笔试时都被问到集合中排序的问题,在新年的第一篇文章中给大家分享一下相关内容。“将集合中的学生信息按照学生的年龄升序排列”这个题目主...
  • u011277123
  • u011277123
  • 2017年01月17日 09:20
  • 1086

数据操作语句-1

1.查询SC表中的全部数据 2.查询计算机系学生的姓名和年龄 3查询成绩在70~80分的学生的学号、课程号和成绩 4.查询计算机系年龄在18~20岁的男生姓名和年龄   5.查询C00...
  • qq_34803572
  • qq_34803572
  • 2017年05月01日 23:17
  • 727

java实验题——学生成绩排序并打印

编写一个程序,提示用户输入学生数量、各自的姓名和他们的成绩,并按照成 绩的降序来打印学生的姓名。import java.util.*; class StudentInfo{ private Stri...
  • HLK_1135
  • HLK_1135
  • 2016年04月01日 13:09
  • 4882
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:构造一个学生类Student,每一个学生对象有基本信息,同时还有课程考试成绩信息。利用集合框架类完成。
举报原因:
原因补充:

(最多只允许输入30个字)