Java实训:学生信息管理系统
小刘 2022-06-13 15:38:45 2022-06-13 33 0
文章目录
- 一、程序功能
- 功能概述
- 二、程序包括的学生信息
- 三、编程实现
- 1.建立学生实体类
- 2.学生实体类代码编写
- (1)无参构造方法
- (2)有参构造方法
- (3)完整的代码
- 2.建立学生信息管理
- 3.建立学生数组列表对象
- 4.登录方法
- 5.学生信息管理方法
- (1)一级菜单
- (2)二级菜单
- (3)完整学生管理方法代码
- 6.添加学生信息方法
- 7.将学生信息保存到文件
- (1)文件名
- (2)完整代码
- (3)调用学生信息保存方法
- 8.读取学生信息并保存到学生数组列表
- (1)读取源
- (2)读取学生信息完整代码
- (3)调用读取学生信息方法
- 9.查询学生信息
- (1)判断按哪种查询
- (2)按学生姓名查询
- (3)按学生学号查询
- (4)按学生学号和姓名一起查询
- (5)三种查询情况的完整代码
- (6)调用查询学生信息方法
- 10.修改学生信息
- (1)判断学生是否找到
- (2)修改学习学习的完整代码
- (3)调用学生信息修改方法
- 11.删除学生信息
- (1)删除学生信息的完整代码
- (2)调用删除学生信息方法
- 四、编程实现完整代码
- 五、测试程序
- 1.运行程序,登录系统
- 2.添加学生信息
- 3.保存学生信息到文件
- (1)保存学生信息
- (2)查看文件
- 4.查询学生信息
- (1)按学生学号查询
- (2)按学生姓名查询
- (3)同时按学号和姓名查询
- 5.修改学生信息
- (1)将王明改成张心怡
- (2)将楚梦瑶的班级改为学前五班
- 6.删除学生信息(删除学号为202203)
- 7.读取学生信息
- 8.退出程序
- 六.实训总结
- 1.实训项目存在不足的地方
- 2.实训项目的有点
- 3.实训个人感悟
一、程序功能
功能概述
- 利用Java完成一个学生信息程序的简单改动。
- 添加学生信息
- 修改学生信息
- 查询学生信息
- 删除学生信息
二、程序包括的学生信息
1.学号 2.姓名 3.班级 4.专业 5.电话号码
- 当然,这只是简单的包括几个信息,其他的信息,如果也想要可以自己加入
三、编程实现
1.建立学生实体类
- 在test包里建立student(学生实体类)
2.学生实体类代码编写
(1)无参构造方法
(2)有参构造方法
- 我采用的是有参构造方法
(3)完整的代码
/** * 功能:学生实体类 * 作者:孤梦 * 日期:2022年05月26日 */public class Student { private String id; private String name; private String classes; private String major; private String telephone; /** * 无参构造方法 */ public Student() { } /** * 有参构造方法 * @param id * @param name * @param classes * @param major * @param telephone */ public Student(String id, String name, String classes, String major, String telephone) { this.id = id; this.name = name; this.classes = classes; this.major = major; this.telephone = telephone; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getClasses() { return classes; } public void setClasses(String classes) { this.classes = classes; } public String getMajor() { return major; } public void setMajor(String major) { this.major = major; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } @Override public String toString() { return "Card{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", classes='" + classes + '\'' + ", major='" + major + '\'' + ", telephone='" + telephone + '\'' + '}'; }}
2.建立学生信息管理
- 继续在test包里创建----StudentManagement(学生信息管理)
3.建立学生数组列表对象
private static ArrayList<Student> students = new ArrayList<>(); public static void main(String[] args) { // 声明部分 int mc1; Scanner sc = new Scanner(System.in); boolean isRunning = true; // 循环控制变量 while (isRunning) { // 绘制一级菜单 System.out.println(" 学生信息管理系统"); System.out.println("================"); System.out.println(" 1. 登录"); System.out.println(" 0. 退出"); System.out.println("================"); System.out.print("输入菜单编号[1,0]:"); mc1 = sc.nextInt(); // 根据用户选择进行相应的操作 switch (mc1) { case 1: // 调用登录方法 login(); break; case 0: System.out.println("谢谢使用~再见~"); isRunning = false; // 结束循环 break; default: System.out.println("输入的菜单编号有误!"); } } }
-创建好了列表,下面就该解决如何登录了
4.登录方法
/** * 登录方法 */ private static void login() { String username, password; Scanner sc = new Scanner(System.in); System.out.print("用户名:"); username = sc.next(); System.out.print("密 码:"); password = sc.next(); if (username.equals("gumeng") && password.equals("1314520")) { System.out.println("登录成功~"); // 调用学生信息管理方法 studentManagement(); } else { System.out.println("用户名或密码有误,登录失败~"); } }
- 这里的登录账号是:gumneg ,登录密码是:1314520
- 登录账号和密码随自己的喜好设置
5.学生信息管理方法
(1)一级菜单
- 在上面我们已经建立了一级菜单
(2)二级菜单
- 下面我们绘制二级菜单,二级菜单是我们成功登录进去后的功能面板
- 总共有七个功能面板1、添加学生信息2、修改学生信息3、查询学生信息4、删除学生信息5、读取学生信息6、保存学生信息7、返回上级菜单
- 分别对每个功能面板进行编写
(3)完整学生管理方法代码
/** * 学生信息管理方法 */ private static void studentManagement() { int mc2; Scanner sc = new Scanner(System.in); boolean isRunning = true; // 循环控制变量 while (isRunning) { // 绘制二级菜单 System.out.println("=======名片管理========"); System.out.println(" 1. 添加学生信息"); System.out.println(" 2. 修改学生信息"); System.out.println(" 3. 查询学生信息"); System.out.println(" 4. 删除学生信息"); System.out.println(" 5. 读取学生信息"); System.out.println(" 6. 保存学生信息"); System.out.println(" 7. 返回上级"); System.out.println("======================="); System.out.print("输入菜单编号[1,2,3,4,5,6,7]:"); mc2 = sc.nextInt(); switch (mc2) { case 1: System.out.println("执行添学生信息功能~"); break; case 2: System.out.println("执行修改学生信息功能~"); break; case 3: System.out.println("执行查询学生信息功能~"); break; case 4: System.out.println("执行删除学生信息功能~"); break; case 5: System.out.println("读取学生信息文件到学生数组列表~"); break; case 6: System.out.println("将学生信息数组列表写入名片文件~"); break; case 7: isRunning = false; // 结束二级菜单循环 break; default: System.out.println("输入的菜单编号有误!"); } } }
6.添加学生信息方法
/** * 添加学生信息方法 */ private static void addStudent() { // 声明变量 String id; String name; String classes; String major; String telephone; Scanner sc = new Scanner(System.in); // 输入学生信息 System.out.print("学号:"); id = sc.next(); System.out.print("姓名:"); name = sc.next(); System.out.print("班级:"); classes = sc.next(); System.out.print("专业:"); major = sc.next(); System.out.print("手机号码:"); telephone = sc.next(); // 创建学生对象 Student student = new Student(id, name, classes, major,telephone); // 将学生信息添加到学生数组列表 students.add(student); }
- 将学生添加到学生数组列表
- 添加学生总不能不保存,所以下面我们要将学生信息保存到文件
7.将学生信息保存到文件
(1)文件名
这是学生信息将要保存的文件名,当然文件可以随便自己设置(2)完整代码
/** * 保存学生信息到文件 */ private static void saveStudents() { try { // 创建文件字符输出流 FileWriter fw = new FileWriter("students.txt"); // 创建学生容器字符串缓冲对象 StringBuffer cardsBuffer = new StringBuffer(); // 用增强for循坏遍历学生数组列表 for (Student student : students) { // 输出学生对象 System.out.println(student); // 创建学生字符串缓冲对象 StringBuffer buffer = new StringBuffer(); // 添加学生字段信息(空格作为分隔符) buffer.append(student.getId() + " "); buffer.append(student.getName() + " "); buffer.append(student.getClasses() + " "); buffer.append(student.getMajor() + " "); buffer.append(student.getTelephone()); // 将学生信息写入名片容器字符串缓冲对象 cardsBuffer.append(buffer.toString() + "\n"); } // 将学生容器字符串缓冲对象的数据写入文件 fw.write(students.toString()); // 关闭文件字符输出流 fw.close(); // 提示用户写入成功 System.out.println("恭喜,学生信息数据写入文件成功~"); } catch (IOException e) { e.printStackTrace(); } }
(3)调用学生信息保存方法
- 写好了要在保存学生信息功能面板上调用
8.读取学生信息并保存到学生数组列表
(1)读取源
- 你是从哪个文件读取的学生信息,这里读取名和上面的保存名要一致,不然读取不到学生信息
(2)读取学生信息完整代码
- 在这里还有一个问题,如果文件名没有问题,但是你要读取的学生不存在的话程序要出错,所以我们正在这里要把好关
/** * 读取学生信息文件,保存到学生数组列表 */ private static void readStudentFile() { // 创建文件字符输入流 try { FileReader fr = new FileReader("students.txt"); // 创建缓冲字符输入流 BufferedReader br = new BufferedReader(fr); // 定义行变量 String nextLine = " "; // 通过循坏读取名片文件 while ((nextLine = br.readLine()) != null) { // 拆分行字符串得到字段数值 String[] fields = nextLine.split(" "); // 创建学生对象 Student student = new Student(); // 用字段数值设置对象属性 student.setId(fields[0]); student.setName(fields[1]); student.setClasses(fields[2]); student.setMajor(fields[3]); student.setTelephone(fields[4]); // 输出学生对象 System.out.println("添加" + student + "到学生数组列表"); // 将学生对象添加到学生数组列表 students.add(student); } // 关闭缓冲字符输入流 br.close(); // 关闭文件字符输入流 fr.close(); } catch (FileNotFoundException e) { System.out.println("温馨提示:学生文件不存在~"); } catch (IOException e) { e.printStackTrace(); } }
(3)调用读取学生信息方法
9.查询学生信息
(1)判断按哪种查询
- 怎样查询学生信息呢?是按学号查询还是按姓名查询呢?还是一起查询?
// 判断用户按哪种方式查询学生信息 if (id.equals("")) { if (name.equals("")) { // 查询全部学生 // 遍历名片数组列表 for (Student student : students) { System.out.println(student.getId() + " " + student.getName() + " " + student.getClasses() + " " + student.getMajor() + " " + student.getTelephone()); }
(2)按学生姓名查询
System.out.println("~按姓名查询学生信息~"); boolean found = false; // 遍历学生数组列表,按姓名来找 for (Student student : students) { if (student.getName().equals(name)) { found = true; // 找到了 break; } }
- 当查询的时候遇到同名情况怎么办,所以我们要解决这个问题
if (found) { // 针对可能存在的同名情况 for (Student student : students) { if (student.getName().equals(name)) { System.out.println(student.getId() + " " + student.getName() + " " + student.getClasses() + " " + student.getMajor() + " " + student.getTelephone()); } } } else { System.out.println("温馨提示:查无此人~"); }
(3)按学生学号查询
- 按学号查询的话就不存在学号相同的情况了
else { if (name.equals("")) { // 按学号查询学生信息 System.out.println("~按学号查询学生信息~"); boolean found = false; // 遍历学生数组列表,按学号来找 for (Student student : students) { if (student.getId().equals(id)) { found = true; // 找到了 // 输出学生信息 System.out.println(student.getId() + " " + student.getName() + " " + student.getClasses() + " " + student.getMajor() + " " + student.getTelephone()); break; // 跳出循环 } } // 根据found值提示用户 if (!found) { System.out.println("温馨提示:查无此人~"); }
(4)按学生学号和姓名一起查询
else { // 按学号和姓名查询学生信息 System.out.println("~按学号和姓名查询学生学习~"); boolean found = false; // 遍历学生数组列表,按学号和姓名来找 for (Student student : students) { if (student.getId().equals(id) && student.getName().equals(name)) { found = true; // 找到了 // 输出学生信息 System.out.println(student.getId() + " " + student.getName() + " " + student.getClasses() + " " + student.getMajor() + " " + student.getTelephone()); break; // 跳出循环 } } // 根据found值提示用户 if (!found) { System.out.println("温馨提示:查无此人~"); } }
(5)三种查询情况的完整代码
/** * 查询学生信息方法 */ private static void findStudent() { String id, name; Scanner sc = new Scanner(System.in); System.out.print("学号:"); id = sc.nextLine(); // 单行输入,敲回车确认 System.out.print("姓名:"); name = sc.nextLine(); // 单行输入,敲回车确认 // 判断用户按哪种方式查询学生信息 if (id.equals("")) { if (name.equals("")) { // 查询全部学生 // 遍历名片数组列表 for (Student student : students) { System.out.println(student.getId() + " " + student.getName() + " " + student.getClasses() + " " + student.getMajor() + " " + student.getTelephone()); } } else { // 按姓名查询学生信息 System.out.println("~按姓名查询学生信息~"); boolean found = false; // 遍历学生数组列表,按姓名来找 for (Student student : students) { if (student.getName().equals(name)) { found = true; // 找到了 break; } } // 根据found值提示用户 if (found) { // 针对可能存在的同名情况 for (Student student : students) { if (student.getName().equals(name)) { System.out.println(student.getId() + " " + student.getName() + " " + student.getClasses() + " " + student.getMajor() + " " + student.getTelephone()); } } } else { System.out.println("温馨提示:查无此人~"); } } } else { if (name.equals("")) { // 按学号查询学生信息 System.out.println("~按学号查询学生信息~"); boolean found = false; // 遍历学生数组列表,按学号来找 for (Student student : students) { if (student.getId().equals(id)) { found = true; // 找到了 // 输出学生信息 System.out.println(student.getId() + " " + student.getName() + " " + student.getClasses() + " " + student.getMajor() + " " + student.getTelephone()); break; // 跳出循环 } } // 根据found值提示用户 if (!found) { System.out.println("温馨提示:查无此人~"); } } else { // 按学号和姓名查询学生信息 System.out.println("~按学号和姓名查询学生学习~"); boolean found = false; // 遍历学生数组列表,按学号和姓名来找 for (Student student : students) { if (student.getId().equals(id) && student.getName().equals(name)) { found = true; // 找到了 // 输出学生信息 System.out.println(student.getId() + " " + student.getName() + " " + student.getClasses() + " " + student.getMajor() + " " + student.getTelephone()); break; // 跳出循环 } } // 根据found值提示用户 if (!found) { System.out.println("温馨提示:查无此人~"); } } } }
(6)调用查询学生信息方法
10.修改学生信息
(1)判断学生是否找到
- 我们要修改学生信息,首先要找到我们要修改的学生在不在这个列表里,在并且找到了我们才能进行修改
// 判断是否找到学生 if (found) { System.out.println("说明:不输入信息,直接敲回车,表明不修改字段值"); System.out.print("姓名:"); name = sc.nextLine(); System.out.print("班级:"); classes = sc.nextLine(); System.out.print("专业:"); major= sc.nextLine(); System.out.print("手机号码:"); telephone = sc.nextLine(); // 采用传统for循环遍历学生数组列表 for (int i = 0; i < students.size(); i++) { // 获取名片对象 Student student = students.get(i); if (student.getId().equals(id)) { // 按编号找到学生 // 根据用户输入修改学生对象 if (!name.equals("")) { student.setName(name); } if (!classes.equals("")) { student.setClasses(classes); } if (!major.equals("")) { student.setMajor(major); } if (!telephone.equals("")) { student.setTelephone(telephone); } // 用修改后的学生对象去更新学生数组列表对应的元素 students.set(i, student); // 显示修改的数组列表对应元素 System.out.println(students.get(i)); break; // 跳出循环 } } } else { System.out.println("温馨提示:查无此人~"); } }
(2)修改学习学习的完整代码
/** * 修改学生信息方法 */ private static void modifyStudent() { String id, name, classes, major, telephone; Scanner sc = new Scanner(System.in); boolean found = false; System.out.print("输入要修改的学生学号:"); id = sc.nextLine(); // 遍历学生列表数组 for (Student student : students) { if (student.getId().equals(id)) { found = true; // 找到了 // 输出名片信息 System.out.println(student.getId() + " " + student.getName() + " " + student.getClasses() + " " + student.getMajor() + " " + student.getTelephone()); break; // 跳出循环 } } // 判断是否找到学生 if (found) { System.out.println("说明:不输入信息,直接敲回车,表明不修改字段值"); System.out.print("姓名:"); name = sc.nextLine(); System.out.print("班级:"); classes = sc.nextLine(); System.out.print("专业:"); major= sc.nextLine(); System.out.print("手机号码:"); telephone = sc.nextLine(); // 采用传统for循环遍历学生数组列表 for (int i = 0; i < students.size(); i++) { // 获取名片对象 Student student = students.get(i); if (student.getId().equals(id)) { // 按编号找到学生 // 根据用户输入修改学生对象 if (!name.equals("")) { student.setName(name); } if (!classes.equals("")) { student.setClasses(classes); } if (!major.equals("")) { student.setMajor(major); } if (!telephone.equals("")) { student.setTelephone(telephone); } // 用修改后的学生对象去更新学生数组列表对应的元素 students.set(i, student); // 显示修改的数组列表对应元素 System.out.println(students.get(i)); break; // 跳出循环 } } } else { System.out.println("温馨提示:查无此人~"); } }
(3)调用学生信息修改方法
11.删除学生信息
(1)删除学生信息的完整代码
/** * 删除学生方法 */ private static void deleteStudent() { // 键盘录入要删除的学生,显示提示信息 Scanner sc = new Scanner(System.in); System.out.print("请输入你要删除的学生学号:"); String id = sc.nextLine(); // 在删除学生之前,对学生学号是否存在进行判断 int index = -1; for (int i = 0;i < students.size();i++) { Student student = students.get(i); if (student.getId().equals(id)) { index = i; break; } } // 如果不存在,提示信息 if (index == -1) { System.out.print("该学号不存在,请重新输入!"); } else { students.remove(index); // 提示删除成功 System.out.print("删除学生成功!"); } }
(2)调用删除学生信息方法
四、编程实现完整代码
package test;import java.io.*;import java.util.ArrayList;import java.util.Scanner;/** * 功能:学生信息管理系统 * 作者:孤梦 * 日期:2022年05月26日 */public class StudentManagement { // 创建学生数组列表对象 private static ArrayList<Student> students = new ArrayList<>(); public static void main(String[] args) { // 声明部分 int mc1; Scanner sc = new Scanner(System.in); boolean isRunning = true; // 循环控制变量 while (isRunning) { // 绘制一级菜单 System.out.println(" 学生信息管理系统"); System.out.println("================"); System.out.println(" 1. 登录"); System.out.println(" 0. 退出"); System.out.println("================"); System.out.print("输入菜单编号[1,0]:"); mc1 = sc.nextInt(); // 根据用户选择进行相应的操作 switch (mc1) { case 1: // 调用登录方法 login(); break; case 0: System.out.println("谢谢使用~再见~"); isRunning = false; // 结束循环 break; default: System.out.println("输入的菜单编号有误!"); } } } /** * 登录方法 */ private static void login() { String username, password; Scanner sc = new Scanner(System.in); System.out.print("用户名:"); username = sc.next(); System.out.print("密 码:"); password = sc.next(); if (username.equals("gumeng") && password.equals("1314520")) { System.out.println("登录成功~"); // 调用学生信息管理方法 studentManagement(); } else { System.out.println("用户名或密码有误,登录失败~"); } } /** * 学生信息管理方法 */ private static void studentManagement() { int mc2; Scanner sc = new Scanner(System.in); boolean isRunning = true; // 循环控制变量 while (isRunning) { // 绘制二级菜单 System.out.println("=======名片管理========"); System.out.println(" 1. 添加学生信息"); System.out.println(" 2. 修改学生信息"); System.out.println(" 3. 查询学生信息"); System.out.println(" 4. 删除学生信息"); System.out.println(" 5. 读取学生信息"); System.out.println(" 6. 保存学生信息"); System.out.println(" 7. 返回上级"); System.out.println("======================="); System.out.print("输入菜单编号[1,2,3,4,5,6,7]:"); mc2 = sc.nextInt(); switch (mc2) { case 1: System.out.println("执行添学生信息功能~"); addStudent(); // 调用添加学生信息方法 break; case 2: System.out.println("执行修改学生信息功能~"); modifyStudent(); // 调用修改学生信息方法 break; case 3: System.out.println("执行查询学生信息功能~"); findStudent(); // 调用查询学生信息方法 break; case 4: System.out.println("执行删除学生信息功能~"); deleteStudent(); // 调用删除学生信息方法 break; case 5: System.out.println("读取学生信息文件到学生数组列表~"); readStudentFile(); // 调用读取学生信息文件方法 break; case 6: System.out.println("将学生信息数组列表写入名片文件~"); saveStudents(); // 调用保存学生信息方法 break; case 7: isRunning = false; // 结束二级菜单循环 break; default: System.out.println("输入的菜单编号有误!"); } } } /** * 添加学生信息方法 */ private static void addStudent() { // 声明变量 String id; String name; String classes; String major; String telephone; Scanner sc = new Scanner(System.in); // 输入学生信息 System.out.print("学号:"); id = sc.next(); System.out.print("姓名:"); name = sc.next(); System.out.print("班级:"); classes = sc.next(); System.out.print("专业:"); major = sc.next(); System.out.print("手机号码:"); telephone = sc.next(); // 创建学生对象 Student student = new Student(id, name, classes, major,telephone); // 将学生信息添加到学生数组列表 students.add(student); } /** * 保存学生信息到文件 */ private static void saveStudents() { try { // 创建文件字符输出流 FileWriter fw = new FileWriter("students.txt"); // 创建学生容器字符串缓冲对象 StringBuffer studentsBuffer = new StringBuffer(); // 用增强for循坏遍历学生数组列表 for (Student student : students) { // 输出学生对象 System.out.println(student); // 创建学生字符串缓冲对象 StringBuffer buffer = new StringBuffer(); // 添加学生字段信息(空格作为分隔符) buffer.append(student.getId() + " "); buffer.append(student.getName() + " "); buffer.append(student.getClasses() + " "); buffer.append(student.getMajor() + " "); buffer.append(student.getTelephone()); // 将学生信息写入名片容器字符串缓冲对象 studentsBuffer.append(buffer.toString() + "\n"); } // 将学生容器字符串缓冲对象的数据写入文件 fw.write(studentsBuffer.toString()); // 关闭文件字符输出流 fw.close(); // 提示用户写入成功 System.out.println("恭喜,学生信息数据写入文件成功~"); } catch (IOException e) { e.printStackTrace(); } } /** * 读取学生信息文件,保存到学生数组列表 */ private static void readStudentFile() { // 创建文件字符输入流 try { FileReader fr = new FileReader("students.txt"); // 创建缓冲字符输入流 BufferedReader br = new BufferedReader(fr); // 定义行变量 String nextLine = " "; // 通过循坏读取名片文件 while ((nextLine = br.readLine()) != null) { // 拆分行字符串得到字段数值 String[] fields = nextLine.split(" "); // 创建学生对象 Student student = new Student(); // 用字段数值设置对象属性 student.setId(fields[0]); student.setName(fields[1]); student.setClasses(fields[2]); student.setMajor(fields[3]); student.setTelephone(fields[4]); // 输出学生对象 System.out.println("添加" + student + "到学生数组列表"); // 将学生对象添加到学生数组列表 students.add(student); } // 关闭缓冲字符输入流 br.close(); // 关闭文件字符输入流 fr.close(); } catch (FileNotFoundException e) { System.out.println("温馨提示:学生文件不存在~"); } catch (IOException e) { e.printStackTrace(); } } /** * 查询学生信息方法 */ private static void findStudent() { String id, name; Scanner sc = new Scanner(System.in); System.out.print("学号:"); id = sc.nextLine(); // 单行输入,敲回车确认 System.out.print("姓名:"); name = sc.nextLine(); // 单行输入,敲回车确认 // 判断用户按哪种方式查询学生信息 if (id.equals("")) { if (name.equals("")) { // 查询全部学生 // 遍历名片数组列表 for (Student student : students) { System.out.println(student.getId() + " " + student.getName() + " " + student.getClasses() + " " + student.getMajor() + " " + student.getTelephone()); } } else { // 按姓名查询学生信息 System.out.println("~按姓名查询学生信息~"); boolean found = false; // 遍历学生数组列表,按姓名来找 for (Student student : students) { if (student.getName().equals(name)) { found = true; // 找到了 break; } } // 根据found值提示用户 if (found) { // 针对可能存在的同名情况 for (Student student : students) { if (student.getName().equals(name)) { System.out.println(student.getId() + " " + student.getName() + " " + student.getClasses() + " " + student.getMajor() + " " + student.getTelephone()); } } } else { System.out.println("温馨提示:查无此人~"); } } } else { if (name.equals("")) { // 按学号查询学生信息 System.out.println("~按学号查询学生信息~"); boolean found = false; // 遍历学生数组列表,按学号来找 for (Student student : students) { if (student.getId().equals(id)) { found = true; // 找到了 // 输出学生信息 System.out.println(student.getId() + " " + student.getName() + " " + student.getClasses() + " " + student.getMajor() + " " + student.getTelephone()); break; // 跳出循环 } } // 根据found值提示用户 if (!found) { System.out.println("温馨提示:查无此人~"); } } else { // 按学号和姓名查询学生信息 System.out.println("~按学号和姓名查询学生学习~"); boolean found = false; // 遍历学生数组列表,按学号和姓名来找 for (Student student : students) { if (student.getId().equals(id) && student.getName().equals(name)) { found = true; // 找到了 // 输出学生信息 System.out.println(student.getId() + " " + student.getName() + " " + student.getClasses() + " " + student.getMajor() + " " + student.getTelephone()); break; // 跳出循环 } } // 根据found值提示用户 if (!found) { System.out.println("温馨提示:查无此人~"); } } } } /** * 修改学生信息方法 */ private static void modifyStudent() { String id, name, classes, major, telephone; Scanner sc = new Scanner(System.in); boolean found = false; System.out.print("输入要修改的学生学号:"); id = sc.nextLine(); // 遍历学生列表数组 for (Student student : students) { if (student.getId().equals(id)) { found = true; // 找到了 // 输出名片信息 System.out.println(student.getId() + " " + student.getName() + " " + student.getClasses() + " " + student.getMajor() + " " + student.getTelephone()); break; // 跳出循环 } } // 判断是否找到学生 if (found) { System.out.println("说明:不输入信息,直接敲回车,表明不修改字段值"); System.out.print("姓名:"); name = sc.nextLine(); System.out.print("班级:"); classes = sc.nextLine(); System.out.print("专业:"); major= sc.nextLine(); System.out.print("手机号码:"); telephone = sc.nextLine(); // 采用传统for循环遍历学生数组列表 for (int i = 0; i < students.size(); i++) { // 获取名片对象 Student student = students.get(i); if (student.getId().equals(id)) { // 按编号找到学生 // 根据用户输入修改学生对象 if (!name.equals("")) { student.setName(name); } if (!classes.equals("")) { student.setClasses(classes); } if (!major.equals("")) { student.setMajor(major); } if (!telephone.equals("")) { student.setTelephone(telephone); } // 用修改后的学生对象去更新学生数组列表对应的元素 students.set(i, student); // 显示修改的数组列表对应元素 System.out.println(students.get(i)); break; // 跳出循环 } } } else { System.out.println("温馨提示:查无此人~"); } } /** * 删除学生方法 */ private static void deleteStudent() { // 键盘录入要删除的学生,显示提示信息 Scanner sc = new Scanner(System.in); System.out.print("请输入你要删除的学生学号:"); String id = sc.nextLine(); // 在删除学生之前,对学生学号是否存在进行判断 int index = -1; for (int i = 0;i < students.size();i++) { Student student = students.get(i); if (student.getId().equals(id)) { index = i; break; } } // 如果不存在,提示信息 if (index == -1) { System.out.print("该学号不存在,请重新输入!"); } else { students.remove(index); // 提示删除成功 System.out.print("删除学生成功!"); } }}
五、测试程序
1.运行程序,登录系统
2.添加学生信息
将以下五个学生信息添加进去
202201 楚梦瑶 软件1班 软件技术 15981324667 202202 林海 大数据2班 大数据技术与应用 15372783998 202203 王明 人智1班 人工智能 18881588702 202204 顾瑶 计应4班 计算机技术应用 15891457734 202205 杨曦蕊 学前3班 学前教育 13891342266
可以根据自己的喜好添加更多或者更少
注意:这里每输入一条数据都要保存一次,不然最后才保存的话文件里全是一排
3.保存学生信息到文件
(1)保存学生信息
(2)查看文件
- 运行程序后,会在根目录里自动生成我们命名好的文件
- 点开文件,查看信息
4.查询学生信息
(1)按学生学号查询
(2)按学生姓名查询
(3)同时按学号和姓名查询
- 注意:这里在查询之前都要读取文件,不然查不到
5.修改学生信息
(1)将王明改成张心怡
- 修改完之后要保存,只有保存,文件里的学生信息也才跟着改变
- 再来看看文件里的学生信息
(2)将楚梦瑶的班级改为学前五班
- 查看文件的学生信息
6.删除学生信息(删除学号为202203)
- 查看文件里的学生信息
- 已经被删除了
7.读取学生信息
8.退出程序
六.实训总结
1.实训项目存在不足的地方
项目内容也就是学生的信息有点少,还可以添加学生其他的信息,如性别、年龄、家庭住址、兴趣爱好等。还有就是没有采用数据库。
2.实训项目的有点
内容紧凑,条理清晰,图文并茂,使人一看就明白
3.实训个人感悟
1、 经过一学期的学习和实训,明白自己还有许多不足的地方,很多地方需要改进,很多地方需要向同学学习,相比起上学期这学期的干劲足多了,但是还不够,还需要多多努力,正所谓奋斗是创造幸福的源泉 2、未来这个词听上去就是美好,可是你别忘了呀,每一个我们所期待的美好未来,都必须有一个努力的现在。