构造一个学生类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类为主函数类,其他的均为执行类或者对象类。

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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/keseliugeizuori/article/details/52852399

C语言实战之学生成绩管理系统

通过C语言开发一个简单的项目:学生成绩管理系统 1.C语言知识点的综合运用,加深对C语言的理解,学会结构化编程的思想 2.熟悉企业软件开发的基本流程,树立软件工程的思维和概念 3.具备独立开发一个小型甚至中型软件的能力:XX管理系统 4.具备企业初级工程师的能力和水平,实现从学生到工程师的零基础跨越 关注更多最新教程,可以关注微信号:armlinuxfun(嵌入式工程师自我修养)
  • 2016年04月18日 17:35

PTA 友元函数操作

C++考试正在进行。请设计一个学生类student,学号、本次考试成绩是其私有数据成员,同时有一个计算本次考试平均成绩的友元函数 double average(student *p,int count...
  • xuptacm
  • xuptacm
  • 2017-06-27 00:12:28
  • 517

五周任务四:设计一个学生类

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: ...
  • sdtianqing594
  • sdtianqing594
  • 2012-03-20 21:27:48
  • 545

实训C++语言设计——Student学生类设计、继承、重写

平台:VC++ 2005 测试通过!.vcproj这是使用应用程序向导生成的 VC++ 项目的主项目文件。 它包含生成该文件的 Visual C++ 的版本信息,以及有关使用应用程序向导选择的平台、配...
  • luozhuang
  • luozhuang
  • 2008-02-17 22:57:00
  • 1549

c++实现学生基本信息管理系统

  • 2014年08月28日 15:42
  • 22.62MB
  • 下载

创建类Student和对象

public class Student {//创建类Student String name; String ban; String sex; int xue; ...
  • x51200
  • x51200
  • 2017-10-10 21:25:36
  • 342

C++Student类

定义一个Student类,包含名字一个数据成员,定义无参构造函数、有参构造函数、拷贝构造函数、析构函数及对于名字的封装函数,在main函数中实例化Student对象,并访问相关函数,观察运行结果。 ...
  • qq_34803572
  • qq_34803572
  • 2017-02-15 19:55:41
  • 863

设计Student类

Java基础入门课后习题第三单元第六题一 class Student{ private String name; private double sore; public Student...
  • qq_34457443
  • qq_34457443
  • 2017-10-25 20:05:43
  • 95

集合练习。学生信息包括学号、姓名、出生日期、性别。把N个学生的信息放入一个集合中。可以根据学号,对学生信息进行检索。并可以根据生日进行排序输出。

集合练习。学生信息包括学号、姓名、出生日期、性别。把N个学生的信息放入一个集合中。可以根据学号,对学生信息进行检索。并可以根据生日进行排序输出。 Student.java package Coll...
  • liuhenghui5201
  • liuhenghui5201
  • 2012-12-05 14:47:20
  • 4787

java--运用Map接口及其实现类完成简易学生系统的管理

 import java.util.HashSet; import java.util.Set;     //创建学生类 public class student { String ...
  • java_xhg
  • java_xhg
  • 2016-11-23 16:40:11
  • 651
收藏助手
不良信息举报
您举报文章:构造一个学生类Student,每一个学生对象有基本信息,同时还有课程考试成绩信息。利用集合框架类完成。
举报原因:
原因补充:

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