用java中集合的方法实现创建学生类(学号,姓名),键盘输入N个学生信息,将学生信息保存到List中 要求: 1.写一个方法,完成按照学号升序显示学生信息 2.写一个方法,根据学号修改学生姓名3.将输入的N个学生信息保存到文件中,在从文件中查询所有学生信息输出在控制台上

时间: 2024-04-21 07:27:30 浏览: 17
好的,以下是实现您需求的Java代码示例: ```java import java.io.*; import java.util.*; class Student { private int id; private String name; public Student(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public String getName() { return name; } } public class Main { public static void main(String[] args) { List<Student> studentList = new ArrayList<>(); Scanner scanner = new Scanner(System.in); System.out.print("请输入学生数量: "); int n = scanner.nextInt(); scanner.nextLine(); for (int i = 0; i < n; i++) { System.out.print("请输入学生学号: "); int id = scanner.nextInt(); scanner.nextLine(); System.out.print("请输入学生姓名: "); String name = scanner.nextLine(); Student student = new Student(id, name); studentList.add(student); } showStudentInfoAsc(studentList); modifyStudentNameById(studentList); saveStudentInfoToFile(studentList); readStudentInfoFromFile(); } public static void showStudentInfoAsc(List<Student> studentList) { Collections.sort(studentList, Comparator.comparingInt(Student::getId)); System.out.println("按学号升序显示学生信息:"); for (Student student : studentList) { System.out.println("学号:" + student.getId() + ",姓名:" + student.getName()); } } public static void modifyStudentNameById(List<Student> studentList) { Scanner scanner = new Scanner(System.in); System.out.print("请输入要修改的学生学号: "); int id = scanner.nextInt(); scanner.nextLine(); for (Student student : studentList) { if (student.getId() == id) { System.out.print("请输入新的学生姓名: "); String name = scanner.nextLine(); studentList.remove(student); student.setName(name); studentList.add(student); System.out.println("学生信息修改成功!"); return; } } System.out.println("未找到该学生学号!"); } public static void saveStudentInfoToFile(List<Student> studentList) { try { FileWriter writer = new FileWriter("student_info.txt"); for (Student student : studentList) { writer.write(student.getId() + "," + student.getName() + "\n"); } writer.close(); System.out.println("学生信息保存成功!"); } catch (IOException e) { System.out.println("保存学生信息失败:" + e.getMessage()); } } public static void readStudentInfoFromFile() { try { FileReader reader = new FileReader("student_info.txt"); BufferedReader bufferedReader = new BufferedReader(reader); String line; System.out.println("从文件中查询所有学生信息:"); while ((line = bufferedReader.readLine()) != null) { String[] info = line.split(","); int id = Integer.parseInt(info[0]); String name = info[1]; System.out.println("学号:" + id + ",姓名:" + name); } bufferedReader.close(); } catch (IOException e) { System.out.println("读取学生信息失败:" + e.getMessage()); } } } ``` 这段代码实现了以下功能: 1. 根据输入的学生数量,从键盘读取学生的学号和姓名,并将学生信息保存到List中。 2. 按照学号升序显示学生信息。 3. 根据输入的学号修改学生的姓名。 4. 将学生信息保存到文件中,并从文件中读取并输出所有学生信息到控制台。 请注意,代码中会提示您输入学生数量、学号、姓名等信息。根据具体需求,您可以根据这个示例进行修改和扩展。

相关推荐

实验任务: 编写一个程序,模拟学生管理系 统。可以实现对学生信息的添加、 删除、修改和查询功能,要求使用 List 集合存储自定义的对象集合, 并熟练使用 List 集合的中常用方 法实现相关的操作。 预期效果: 1.定义学生类,自定义对象属性。 2.学生管理系统的主界面的代码 编写,创建集合对象,用于存储学 生数据,打印学生管理系统主界面 的相关功能,创建键盘输入功能, 用 switch 语句实现选择的功能。 最后实现多次操作并且手动退出 系统。 3.学生管理系统查询所有学生信 息的代码编写,首先判断集合中是 否有数据,如果没有数据就给出提 示,并让该方法不在继续往下执 行。如果有数据。遍历集合输出打 印数据。 4.学生管理系统添加学生信息的 代码编写,首先输入学生学号,判 断学号有没有被人占用,如果被占 用重新输入学号,没有被占用继续 录入学生姓名、年龄。家庭住址等 信息。创建学生对象,将录入的数 据存入对象。最后将学生对象添加 入集合,添加学生信息成功。 5.学生管理系统删除学生信息的 代码编写,键盘录入一个学号,到 集合中去查找,看是否有学生使用 该学号,如果有就删除该学生信 息。如果没有学生使用该学号,返 回主界面。 6.学生管理系统修改学生信息的 代码编写。键盘录入一个学号,到 集合中去查找,看是否有学生使用 该学号,如果过有就修改学生信 息。反之返回主界面

最新推荐

recommend-type

电影票房.csv

电影票房
recommend-type

ASP.NET技术在网站开发设计中的研究与开发(论文+源代码+开题报告)【ASP】.zip

ASP.NET技术在网站开发设计中的研究与开发(论文+源代码+开题报告)【ASP】
recommend-type

WebShell-Password.txt

WebShell-Password
recommend-type

基于 Unet++ 对自动驾驶车道线分割实战【包含数据集、完整代码、训练好的结果】

基于 UnetPlusPlus 网络自动驾驶车道线分割实战 代码均为手写,全网无重复,训练自己数据很简单,只需要摆放好数据即可,具体参考README文件,小白均可使用 代码详细介绍:https://blog.csdn.net/qq_44886601/article/details/138858574 数据集:自动驾驶车道线分割(2类别,约3200张数据和标注图像) 网络仅仅测试30个epoch,全局像素点的准确度达到0.995,精确度为0.907,召回率为0.908,dice为0.91,训练epoch加大的话,性能还会更加优越! 代码介绍: 训练过程提供了多种优化器选择(Adam、SGD、RMSProp),损失函数采用BCE 逻辑损失,学习率的衰减提供了常规恒定lr、余弦退火算法、以及step学习率衰减。可以自行选择 【训练过程会生成最好和最后一个权重,以及数据预处理完的可视化效果图、dice、loss曲线、训练日志等等】
recommend-type

asp.net某公司员工管理系统的设计与实现(源代码+论文)【ASP】.zip

asp.net某公司员工管理系统的设计与实现(源代码+论文)【ASP】
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性

![MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性](https://picx.zhimg.com/80/v2-8132d9acfebe1c248865e24dc5445720_1440w.webp?source=1def8aca) # 1. MATLAB结构体基础** MATLAB结构体是一种数据结构,用于存储和组织相关数据。它由一系列域组成,每个域都有一个名称和一个值。结构体提供了对数据的灵活访问和管理,使其成为组织和处理复杂数据集的理想选择。 MATLAB中创建结构体非常简单,使用struct函数即可。例如: ```matlab myStruct
recommend-type

详细描述一下STM32F103C8T6怎么与DHT11连接

STM32F103C8T6可以通过单总线协议与DHT11连接。连接步骤如下: 1. 将DHT11的VCC引脚连接到STM32F103C8T6的5V电源引脚; 2. 将DHT11的GND引脚连接到STM32F103C8T6的GND引脚; 3. 将DHT11的DATA引脚连接到STM32F103C8T6的GPIO引脚,可以选择任一GPIO引脚,需要在程序中配置; 4. 在程序中初始化GPIO引脚,将其设为输出模式,并输出高电平,持续至少18ms,以激活DHT11; 5. 将GPIO引脚设为输入模式,等待DHT11响应,DHT11会先输出一个80us的低电平,然后输出一个80us的高电平,
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。