文章目录
- 一、程序功能
- 二、程序包括的学生信息
- 三、编程实现
- 四、编程实现完整代码
- 五、测试程序
- 六.实训总结
一、程序功能
功能概述
- 利用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() + "
");
}
// 将学生容器字符串缓冲对象的数据写入文件
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() + "
");
}
// 将学生容器字符串缓冲对象的数据写入文件
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、未来这个词听上去就是美好,可是你别忘了呀,每一个我们所期待的美好未来,都必须有一个努力的现在。