用java创建一个学生类,从键盘上输入学生信息,可以把学生信息保存在指定文本文件中的指定位置;从文本文件中读取特定学生信息;实现学生信息的增加、删除、修改、插入等操作

时间: 2024-01-22 15:20:45 浏览: 49
以下是一个简单的Java学生类的实现,包括从键盘输入学生信息、将学生信息保存到指定文本文件中、从文本文件中读取特定学生信息、以及实现学生信息的增加、删除、修改、插入等操作。 ```java import java.io.*; import java.util.*; public class Student { private String name; private int age; private String gender; private String department; private String id; // 构造方法 public Student(String name, int age, String gender, String department, String id) { this.name = name; this.age = age; this.gender = gender; this.department = department; this.id = id; } // 无参构造方法 public Student() {} // toString方法 public String toString() { return "姓名:" + name + ",年龄:" + age + ",性别:" + gender + ",所在系:" + department + ",学号:" + id; } // 从键盘输入学生信息 public static Student inputStudent() { Scanner sc = new Scanner(System.in); System.out.print("请输入学生姓名:"); String name = sc.nextLine(); System.out.print("请输入学生年龄:"); int age = sc.nextInt(); sc.nextLine(); System.out.print("请输入学生性别:"); String gender = sc.nextLine(); System.out.print("请输入学生所在系:"); String department = sc.nextLine(); System.out.print("请输入学生学号:"); String id = sc.nextLine(); return new Student(name, age, gender, department, id); } // 将学生信息保存到指定文本文件中 public static void saveStudentToFile(Student student, String filePath) { try { FileWriter fw = new FileWriter(filePath, true); BufferedWriter bw = new BufferedWriter(fw); bw.write(student.toString()); bw.newLine(); bw.close(); fw.close(); System.out.println("学生信息已保存到" + filePath + "文件中。"); } catch (IOException e) { e.printStackTrace(); } } // 从文本文件中读取特定学生信息 public static List<Student> readStudentFromFile(String filePath, String id) { List<Student> students = new ArrayList<>(); try { FileReader fr = new FileReader(filePath); BufferedReader br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) { String[] fields = line.split(","); if (fields[4].equals(id)) { students.add(new Student(fields[0].substring(3), Integer.parseInt(fields[1].substring(4)), fields[2].substring(3), fields[3].substring(5), fields[4].substring(4))); } } br.close(); fr.close(); } catch (IOException e) { e.printStackTrace(); } return students; } // 实现学生信息的增加、删除、修改、插入等操作 public static void main(String[] args) { Scanner sc = new Scanner(System.in); List<Student> students = new ArrayList<>(); String filePath = "students.txt"; System.out.println("请选择操作:1.添加学生信息 2.删除学生信息 3.修改学生信息 4.插入学生信息 5.查询学生信息"); int choice = sc.nextInt(); switch (choice) { case 1: System.out.println("请输入要添加的学生信息:"); Student student = inputStudent(); students.add(student); saveStudentToFile(student, filePath); break; case 2: System.out.println("请输入要删除的学生学号:"); String deleteId = sc.next(); Iterator<Student> iter = students.iterator(); while (iter.hasNext()) { Student s = iter.next(); if (s.id.equals(deleteId)) { iter.remove(); break; } } break; case 3: System.out.println("请输入要修改的学生学号:"); String modifyId = sc.next(); for (int i = 0; i < students.size(); i++) { Student s = students.get(i); if (s.id.equals(modifyId)) { System.out.println("请输入修改后的学生信息:"); Student modifiedStudent = inputStudent(); students.set(i, modifiedStudent); break; } } break; case 4: System.out.println("请输入要插入的学生位置:"); int insertIndex = sc.nextInt(); System.out.println("请输入要插入的学生信息:"); Student insertedStudent = inputStudent(); students.add(insertIndex, insertedStudent); break; case 5: System.out.println("请输入要查询的学生学号:"); String searchId = sc.next(); List<Student> searchedStudents = readStudentFromFile(filePath, searchId); if (searchedStudents.size() == 0) { System.out.println("未找到学号为" + searchId + "的学生信息。"); } else { for (Student s : searchedStudents) { System.out.println(s); } } break; default: System.out.println("输入有误,请重新选择操作。"); break; } } } ``` 在上述代码中,我们通过一个简单的菜单来实现学生信息的增加、删除、修改、插入等操作。具体来说: - 当用户选择1时,程序会从键盘输入学生信息,并将其保存到指定的文本文件中。 - 当用户选择2时,程序会从键盘输入要删除的学生学号,并在学生列表中查找该学生,如果找到则删除该学生信息。 - 当用户选择3时,程序会从键盘输入要修改的学生学号,并在学生列表中查找该学生,如果找到则从键盘输入修改后的学生信息,并将其更新到学生列表中。 - 当用户选择4时,程序会从键盘输入要插入的学生位置(索引),并从键盘输入要插入的学生信息,然后将其插入到学生列表中。 - 当用户选择5时,程序会从键盘输入要查询的学生学号,并从指定的文本文件中查找该学生信息,并输出到控制台。 需要注意的是,上述代码中的学生信息保存到文本文件中的格式为: ``` 姓名:XXX,年龄:XX,性别:XXX,所在系:XXX,学号:XXXXX ``` 因此,在从文本文件中读取学生信息时,我们需要按照这个格式进行解析。另外,为了方便起见,我们在程序中使用了Java集合类来管理学生列表,而不是使用数组等数据结构。

相关推荐

最新推荐

recommend-type

Java实现读取键盘输入保存到txt文件,再统计并输出每个单词出现次数的方法

主要介绍了Java实现读取键盘输入保存到txt文件,再统计并输出每个单词出现次数的方法,涉及java文件I/O操作及字符串遍历、运算实现统计功能相关技巧,需要的朋友可以参考下
recommend-type

Java实现从jar包中读取指定文件的方法

主要介绍了Java实现从jar包中读取指定文件的方法,涉及java针对jar文件的读取及查找相关操作技巧,需要的朋友可以参考下
recommend-type

java面向对象之学生信息管理系统

主要为大家详细介绍了java面向对象之学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Java 读取指定路径的文本文件并返回String的方法

今天小编就为大家分享一篇Java 读取指定路径的文本文件并返回String的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

java实现简单的学生信息管理系统代码实例

主要介绍了java实现简单的学生信息管理系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
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://img-blog.csdnimg.cn/img_convert/4b823f2c5b14c1129df0b0031a02ba9b.png) # 1. 回归分析模型的基础** **1.1 回归分析的基本原理** 回归分析是一种统计建模技术,用于确定一个或多个自变量与一个因变量之间的关系。其基本原理是拟合一条曲线或超平面,以最小化因变量与自变量之间的误差平方和。 **1.2 线性回归和非线性回归** 线性回归是一种回归分析模型,其中因变量与自变量之间的关系是线性的。非线性回归模型则用于拟合因变量与自变量之间非
recommend-type

引发C++软件异常的常见原因

1. 内存错误:内存溢出、野指针、内存泄漏等; 2. 数组越界:程序访问了超出数组边界的元素; 3. 逻辑错误:程序设计错误或算法错误; 4. 文件读写错误:文件不存在或无法打开、读写权限不足等; 5. 系统调用错误:系统调用返回异常或调用参数错误; 6. 硬件故障:例如硬盘损坏、内存损坏等; 7. 网络异常:网络连接中断、网络传输中断、网络超时等; 8. 程序异常终止:例如由于未知原因导致程序崩溃等。
recommend-type

JSBSim Reference Manual

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