文本文件读入学生信息 排序后输出c语言,IO流的练习4 —— 键盘录入学生成绩信息,进行排序后存入文本中...

发布时间:2025-02-20 15:01

需求:

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

分析:

A:创建学生类

B:创建集合对象

TreeSet

C:键盘录入学生信息存储到集合

D:遍历集合,把数据写到文本文件

首先创建个学生类

package zl_Test;

/**

* 这是个记录学生成绩类

* @author LZL

*

*/

public class Student {

private String name;

private int chinese;

private int math;

private int english;

public Student() {

super();

// TODO Auto-generated constructor stub

}

public Student(String name, int chinese, int math, int english) {

super();

this.name = name;

this.chinese = chinese;

this.math = math;

this.english = english;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getChinese() {

return chinese;

}

public void setChinese(int chinese) {

this.chinese = chinese;

}

public int getMath() {

return math;

}

public void setMath(int math) {

this.math = math;

}

public int getEnglish() {

return english;

}

public void setEnglish(int english) {

this.english = english;

}

public int getsum() {

return this.chinese + this.english + this.math;

}

}

具体实现类:

package zl_Test;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Comparator;

import java.util.Scanner;

import java.util.TreeSet;

public class StudentDemo {

public static void main(String[] args) throws IOException {

// 创建集合对象

TreeSet ts = new TreeSet(new Comparator() {

// 比较器

public int compare(Student s1, Student s2) {

int num1 = s2.getsum() - s1.getsum();

int num2 = num1 == 0 ? s2.getChinese() - s1.getChinese() : num1;

int num3 = num2 == 0 ? s2.getMath() - s1.getMath() : num2;

int num4 = num3 == 0 ? s2.getName().compareTo(s1.getName())

: num3;

return num4;

}

});

// 键盘录入学生信息

for (int x = 0; x < 5; x++) {

Scanner sc = new Scanner(System.in);

System.out.println("请输入学生姓名:");

String name = sc.nextLine();

System.out.println("请输入语文成绩");

int chinese = sc.nextInt();

System.out.println("请输入数学成绩");

int math = sc.nextInt();

System.out.println("请输入英语成绩");

int english = sc.nextInt();

// 创建学生对象,调用学生类

Student s = new Student();

s.setName(name);

s.setChinese(chinese);

s.setMath(math);

s.setEnglish(english);

// 把信息添加到集合中

ts.add(s);

}

// 文本打开能看得懂的信息,用缓冲字符流

// 创建缓冲字符输出流对象

BufferedWriter bw = new BufferedWriter(new FileWriter("student.txt"));

// 先写文本里面的内容

bw.write("学生成绩记录");

bw.newLine();

bw.flush();

bw.write("语文成绩" + "\t" + "数学成绩" + "\t" + "英语成绩");

bw.newLine();

bw.flush();

// 遍历集合,把得到的数据添加到文件中

for (Student student : ts) {

// 对得到的信息进行拼接

StringBuilder sb = new StringBuilder();

sb.append(student.getName() + "\t\t")

.append(student.getChinese() + "\t\t")

.append(student.getMath() + "\t\t")

.append(student.getEnglish());

bw.write(sb.toString());

bw.newLine();

}

bw.close();

System.out.println("学生成绩存储完毕");

}

}

Java基础知识强化之IO流笔记51:IO流练习之 键盘录入学生信息按照总分排序写入文本文件中的案例

1.  键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分排序写入文本文件中 分析:   A:创建学生类   B:创建集合对象      TreeSet   ...

键盘录入6个int类型的数据存入数组arr中,将arr数组中的内容反转...

一.有一道很有意思的数组操作相关编程题,闲来无事用JS解决了一下,问题描述如下: (1) 键盘录入6个int类型的数据存入数组arr中: (2) 将arr数组中的内容反转: (3) 将反转后的数组角标 ...

java从键盘输入学生成绩,找出最高分,并输出学生成绩等级。

/*从键盘输入学生成绩,找出最高分,并输出学生成绩等级:成绩 >=最高分-10 等级为A成绩 >=最高分-20 等级为B成绩 >=最高分-30 等级为C其余为 等级为D 提示:先输入 ...

从键盘读入学生成绩,找出最高分, 并输出学生成绩等级(Java)

从键盘读入学生成绩,找出最高分, 并输出学生成绩等级 一.题目 从键盘读入学生成绩,找出最高分,并输出学生成绩等级. 成绩>=最高分-10 等级为'A' 成绩>=最高分-20 等级为'B' ...

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

1.先写一个Student类 public class Student { private String name; private int chinese; private int math; pr ...

java可变参数例子:求学生成绩信息,不确定课程数

可变参数特点: 1)...只能出现在参数列表的最后2)...位于变量类型和变量名之间3)调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数 //可变参数也可用 ...

[项目记录] 用c语言完成的一个学生成绩管理系统

一.要求: 学生成绩管理系统 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).使用链表编程实现如下菜单驱动的学生成绩管理系统. 从文件读入每个学生个人信 ...

Day_14【IO流】扩展案例1_缓冲区字符输入、输出流,键盘录入,contains()方法的统一运用

分析以下需求,并用代码实现 实现一个验证码小程序,要求如下: 1. 在项目根目录下新建一个文件:data.txt,键盘录入3个字符串验证码,并存入data.txt中,要求一个验证码占一行: 2. 键盘 ...

Java基础---Java---IO流-----读取键盘录入、InputStreamReader、转换流、OutputStreamWriter、InputStreamReader

字符流: FileReader FileWriter BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream Buffe ...

随机推荐

Xcode 8 日志输出乱码问题

更新到Xcode 8的同学应该都遇到了这个问题:用Xcode 8运行项目,日志会疯狂的刷,就像下面这种图一样:

如何发布带静态资源的库——android 篇

1.首先要使用 android sdk 提供的命令行工具处理已有的项目: cd YourProjectDir android update project -p ./ 2.上一步生成的 build.x ...

MySql取得日期(前一天、某一天)

在测试一个统计表格,发现每次手写一个地址实在很烦,干脆就搞个自动计算好时间区间的东西.以下内容作为收获吧! 取得当天: SELECT curdate(); mysql> SELECT curda ...

CSS3:不可思议的border属性&;Web字体图标Font Awesome

CSS3:不可思议的border属性 转载至——译文:不可思议的CSS border属性 原文:Magic of CSS border property Web字体图标Font Awesome 转载 ...

Android开发 设置开机自动启动

原文:http://blog.csdn.net/kevinmeng_ini58/article/details/7700786 片段一:

docker数据管理2

3. 定义数据卷容器: 只是为了共享数据 docker run -itd -v /data/ --name centeos_testv centos bash /data/ 就是虚拟机内的目录,和宿主 ...

Visual Studio 2017离线安装包,百度云分流

Visual Studio正式版发布了,然而只能在线安装.虽然官方有提供了离线的方法,但还是蛮复杂的,所以我打包了两个版本发布至百度云分享. 离线分流 地址:http://pan.baidu.com/ ...

python输出彩色字体

Python终端如何输出彩色字体 实现过程:       终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关.       转义序列是以ESC开头,即用\033来完成(ES ...

Linux 用户身份与进程权限

在学习 Linux 系统权限相关的主题时,我们首先关注的基本都是文件的 ugo 权限.ugo 权限信息是文件的属性,它指明了用户与文件之间的关系.但是真正操作文件的却是进程,也就是说用户所拥有的文件访 ...

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号