文章目录

  • 一、程序功能
    • 功能概述
  • 二、程序包括的学生信息
  • 三、编程实现
    • 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;}@Overridepublic 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、未来这个词听上去就是美好,可是你别忘了呀,每一个我们所期待的美好未来,都必须有一个努力的现在。

Java实训:学生信息管理系统相关推荐

  1. Java实训学生信息_(java实训)学生信息管理系统.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava (java实训)学生信息管理系统.doc9页 本文档一 ...

  2. C语言报告书学生信息管理系统,C语言实训 学生信息管理系统

    C语言实训 学生信息管理系统 实 训 报 告 实训名称 C语言编程开发实训 专业班级 物联1541 姓 名 张禄泽 学 号 指导教师 黄标兵.王丽平 实训时间 2016.2.29-2016.3.11 ...

  3. 大一项目实训—学生成绩管理系统

    大一项目实训-学生成绩管理系统 项目实训总结 由于自己大一在Java课中没有好好听讲,导致项目实训中完全是一边学习一边敲代码.但自己付出了很多努力,早上8.30起床,晚上2,3点才睡甚至通宵,虽然做的 ...

  4. Java Swing Mysql学生信息管理系统

    通过对Swing的理解 此篇为大家推荐基于JAVA Swing Mysql学生信息管理系统 本视频教程一共分为四个阶段,每个阶段都会是上一个阶段的扩展,每一个阶段的系统都可独立作为一个完整的系统 第一 ...

  5. Java课程设计-基于Java Swing的学生信息管理系统-版本二

    Java课程设计-基于Java Swing的学生信息管理系统-版本二 1.介绍 2.相关技术 3. 代码仓库 4.所需环境 5.安装教程 6.运行截图 7.相关博客 1.介绍 设计一个简单学生个人信息 ...

  6. java毕业生设计学生信息管理系统计算机源码+系统+mysql+调试部署+lw

    java毕业生设计学生信息管理系统计算机源码+系统+mysql+调试部署+lw java毕业生设计学生信息管理系统计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开 ...

  7. Java课程设计——学生信息管理系统

    一.项目简介 二.项目构架图 三.团队成员任务简介 四.代码 五.项目运行图片 一.项目简介: 实现一个功能简单的学生信息管理系统,该系统具有按照账户名密码登录功能,登录后,可以添加,删除,修改.查询 ...

  8. Java+Swing+mysql学生信息管理系统

    Java+Swing+mysql学生信息管理系统 一.系统介绍 二.功能展示 1.管理员登陆 2.学生信息查询 3.学生信息添加 4.学生信息修改 5.删除 三.系统实现 1.StudentFrame ...

  9. java+SQL做学生信息管理系统(增删改查)

    java+SQL做学生信息管理系统(增删改查) [过程中需要用到的所有工具数据库以及数据库管理器等等] https://pan.baidu.com/s/1cLKJPKXauLCl-Vwah6wFIQ ...

  10. 学生信息管理系统java的总结,基于Java web的学生信息管理系统

    源码编号:B-E00012  点击查看分类规则 项目类型:Java EE项目(java web项目) 项目名称:基于java web的学生信息管理系统(StudentManagerWeb) 当前版本: ...

最新文章

  1. 数据库优化之统计分析实战篇
  2. 使用 Linux 系统调用的内核命令
  3. 第四范式裴沵思出席绿公司年会:传统企业要尽快完成在线化武装
  4. 广东轻工计算机多媒体,广东轻工职业技术学院2015年自主招生计算机多媒体技术专业考核大纲...
  5. vsftpd FTP Server ‘ls.c‘ 远程拒绝服务漏洞(CVE-2011-0762)漏洞修复方案
  6. 放弃Venn-Upset-花瓣图,拥抱二分网络
  7. 2006无法登录mysql_错误2006(HY000):MySQL服务器消失了
  8. 数字逻辑实验一--组合逻辑电路的设计
  9. DB2数据库报错SQL1116N
  10. bugku-逆向-5、Timer
  11. GPS脚环计步、AI“鸡”脸识别,如何确保自己吃到了一只幸福健康的鸡
  12. win10重装系统后,无限自动修复
  13. pipconda 搜索包|查看可安装包版本
  14. Android 语言国际化
  15. 解决anaconda下Spyder的tensorflow不能用karas的原因,用anaconda安装最新的TensorFlow版本
  16. java 字符串 数组 索引_如何在Java中找到数组中元素的索引?
  17. java定义常量语法错误的是_在Java接口中定义常量,下面语法错误的是( )_学小易找答案...
  18. CCS使用教程04:程序烧写与仿真
  19. 字符在计算机内二进制,在计算机内,符号采用二进制编码表示。
  20. 使用 auto-drawing 画一个户型图

热门文章

  1. Cognos刷新cube的流程
  2. 如何防止SWF文件被反编译 如何防止SWF文件被反编译(2)
  3. PMP培训机构转个圈
  4. PMP考试参加培训一定能过吗?
  5. BIM族库下载——10套知名地产Revit样板文件
  6. 快逸报表为报表添加无数据的日期(二)
  7. 【Multisim】关于Multisim仿真“过零比较器”出现的问题以及解决方法
  8. svn的安装包和中文语言包下载
  9. 【教程】适用于AIDE 2.1.5版的API文档设置
  10. fiddler mac教程_fiddler for Mac