键盘录入多名学生的信息: 格式:姓名,数学成绩,语文成绩,英文成绩,按总分由高到低 将学生的信息进行排列到文件中

主函数类:

package cn.io;

import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Set;

public class iosort {

	/**
	 * @param args
	 * @throws IOException
	 */
	/*
	 * 例题: 键盘录入多名学生的信息: 格式:姓名,数学成绩,语文成绩,英文成绩。
	 *   按总分由高到低 将学生的信息进行排列到文件中。
	 *思路:
	 * 1,使用键盘录入技术。
	 * 2,操作的学生信息,信息很多,需要将信息封装成学生对象。
	 * 3,总分由高到低,需要排序,需要对学生对象中的总分排序。需要将多个学生对象进行容器存储。
	 * 4,将容器中的学生对象的信息写入到文件中。
	 * 容器:TreeSet
	 *
	 * 使用操作学生信息的工具类
	 */
	public static void main(String[] args) throws IOException {

		Comparator<Student> comp = Collections.reverseOrder();
		Set<Student> set = GetInfoTool.getStudents(comp);

		File destfile = new File("E:\\3.txt");

		GetInfoTool.writrFile(set,destfile);

/*	输入
xiao,13,12,13
ss,13,24,24
de,254,4,2
over
*/

	}

}

操作学生信息的工具类:
<pre class="java" name="code">package cn.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

public class GetInfoTool {

	 public static Set<Student> getStudents() throws IOException
	 {
		 return getStudents(null);
	 }
	public static Set<Student> getStudents(Comparator<Student> comp) throws IOException {

		BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));

		Set<Student> set = null;
		 if(comp!=null)
		 {
				set=new TreeSet<Student>(comp);
		 }
		 else
		 {
			 set=new TreeSet<Student>();
		 }
		String line = null;
		while((line=buf.readLine())!=null)
		{
			if(line.contains("over")){
				break;
			}
		  String[] strs =line.split(",");
		  Student stu = new Student(strs[0], Integer.parseInt(strs[1]), Integer.parseInt(strs[2]), Integer.parseInt(strs[3]));
		  set.add(stu);
		}

		return set;
	}

	public static void writrFile(Set<Student> set, File destfile) {

		BufferedWriter bfw = null;

		try {
			bfw = new BufferedWriter(new FileWriter(destfile));
			for(Student stu:set)
			{
				bfw.write(stu.getName()+"\t"+stu.getSum());
				bfw.newLine();
				bfw.flush();
			}

		 } catch (IOException e) {

			e.printStackTrace();
		 }
		finally
		{
			if(bfw!=null){
				 try {
					bfw.close();
				} catch (IOException e) {

					e.printStackTrace();
				}
			}
		}

	}

}

学生信息类:

package cn.io;

public class Student implements Comparable<Student> {

	 public int getSum() {
		return sum;
	}
	public void setSum(int sum) {
		this.sum = sum;
	}
	private  String name;
	 private int grade1;
	 private int grade2;
	 private int grade3;
	 private int sum;
	public Student(String name, int grade1, int grade2, int grade3) {
		super();
		this.setName(name);
		this.setGrade1(grade1);
		this.setGrade2(grade2);
		this.setGrade3(grade3);
		this.sum=grade1+grade2+grade3 ;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getGrade1() {
		return grade1;
	}
	public void setGrade1(int grade1) {
		this.grade1 = grade1;
	}
	public int getGrade3() {
		return grade3;
	}
	public void setGrade3(int grade3) {
		this.grade3 = grade3;
	}
	public int getGrade2() {
		return grade2;
	}
	public void setGrade2(int grade2) {
		this.grade2 = grade2;
	}

	@Override
	public int compareTo(Student o) {
		// TODO Auto-generated method stub
		int temp = this.sum-o.sum;
		 return temp == 0?this.name.compareTo(o.name):temp;
	}
}

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

时间: 2024-10-10 10:10:33

键盘录入多名学生的信息: 格式:姓名,数学成绩,语文成绩,英文成绩,按总分由高到低 将学生的信息进行排列到文件中的相关文章

Java基础知识强化之集合框架笔记49:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台

1. 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低输出到控制台: 分析: A: 定义学生类    B: 创建一个TreeSet集合       C: 总分从高到底如何实现呢?        D: 键盘录入5个学生信息       E: 遍历TreeSet集合 2. 代码示例: (1)Student.java: 1 package cn.itcast_08; 2 3 public class Student { 4 // 姓名 5 private String na

键盘录入5个学生的信息根据总分从高到低输出在控制台

第一部分: public class Student { private String name; private Integer chinese; private Integer math; private Integer english; public Student(){ super(); } public Student(String name,Integer chinese,Integer math,Integer english){ super(); this.name = name

键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件

1.先写一个Student类 public class Student { private String name; private int chinese; private int math; private int english; public Student() { super(); } public Student(String name, int chinese, int math, int english) { this.name = name; this.chinese = ch

程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据。

程序通过定义学生结构体变量,存储学生的学号.姓名和3门课的成绩.函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据.例如,若b所指变量t中的学号.姓名和三门课的成绩一次是:10002."ZhangQi".93.85.87,修改后输出t中的数据应为:10004."Lijie".93.85.87. #include <stdio.h>#include <string.h>struct student { lo

有五个学生,每个学生有3门课(语文、数学、英语)的成绩, * 写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩)

/* * 3. 有五个学生,每个学生有3门课(语文.数学.英语)的成绩, * 写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩), * 然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中. * 要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息 * */ import java.io.*; import java.util.*; public class Test3 { publi

IO流的练习4 —— 键盘录入学生成绩信息,进行排序后存入文本中

需求: 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件 分析: A:创建学生类 B:创建集合对象 TreeSet<Student> C:键盘录入学生信息存储到集合 D:遍历集合,把数据写到文本文件 首先创建个学生类 1 package zl_Test; 2 /** 3 * 这是个记录学生成绩类 4 * @author LZL 5 * 6 */ 7 public class Student { 8 private String name; 9 priva

初学Java4:从键盘录入学生信息(仅姓名和成绩)并输出

//从键盘录入学生信息(仅姓名和成绩)并输出.public class StuInformation {//此处命名用StuScore可能更恰当 String name; double score;}import java.util.Scanner; public class TextStuInformation { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int i = 0, j

初学Java3:数组-从键盘录入若干学生的成绩,计算平均值,最大值,最小值

//任务:从键盘录入若干学生的成绩,计算平均值,最大值,最小值package com.azhi;//纠正昨天的包名,今天老师说要以反域名命名,昨天还不知道,今天就这么弄了一个import java.util.Scanner;public class Text_Array { public static void main(String[] args){ Scanner sc=new Scanner(System.in);//从键盘输入 System.out.print("请输入学生个数:&quo

26 Java语言基础键盘录入的基本格式讲解

导包 格式 import java.util.Scanner 位置 在 class上面 创建键盘录入对象 Scanner sc = new Scanner(); 通过对象来获取数据  int x = sc.nextInt(); 1 import java.until.Scanner; 2 3 public class HelloWorld { 4 public static void main(String[] args) { 5 Scanner sc = new Scanner(System.