2020/10/24 刘一辰的JAVA随笔
今日目标:Java SE 综合案例:学生管理系统。
实验代码:
该系统主要功能如下:
- 定义一个 集合 容器用于存储全部学生 对象 的信息操作。
- 添加学生:通过键盘录入学生信息,添加到集合中。
- 删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除。
- 修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改。
- 查看学生:将集合中的学生对象信息进行展示。
- 退出系统:结束程序。
- 在主方法中,设计系统总界面,利用 switch 语句,根据用户选择,执行对应的操作。
- 定义两个公共 方法,用于判断学生的学号是否重复和获取对象在集合中的索引。
- 分别定义添加学生、删除学生、修改学生、查看学生。
定义学生类
public class Student
{
private String sid;
private String name;
private String age;
private String address;
public Student()
{
}
public Student(String sid, String name, String age, String address)
{
this.sid = sid;
this.name = name;
this.age = age;
this.address = address;
}
public String getSid()
{
return sid;
}
public void setSid(String sid)
{
this.sid = sid;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getAge()
{
return age;
}
public void setAge(String age)
{
this.age = age;
}
public String getAddress()
{
return address;
}
public void setAddress(String address)
{
this.address = address;
}
}
学生信息管理系统具体实现
public class StudentManager
{
public static void main(String[] args)
{
ArrayList<Student> students = new ArrayList<>();
Scanner sc = new Scanner(System.in);
while (true)
{
System.out.println("===========欢迎来到学生管理系统===========");
System.out.println("以下为操作命令:
")"
System.out.println("1. 添加学生信息:add");
System.out.println("2. 删除学生信息:delete");
System.out.println("3. 修改学生信息:update");
System.out.println("4. 查询学生信息:query");
System.out.println("5. 退出学生系统:exit");
System.out.print("请您输入您要操作的命令:");
String command = sc.nextLine();
switch (command)
{
case "add": addStudent(students);
System.out.println("添加信息成功!!");
break; case "delete": deleteStudent(students);
break; case "update": updateStudent(students);
break; case "query": queryStudent(students);
break; case "exit": System.out.println("退出系统!");
System.exit(0);
break;
default: System.out.println("您输入的命令有误,请重新输入!");
}
System.out.println("");
}
}
/** * 添加学生信息方法 * * @param students */
public static void addStudent(ArrayList<Student> students)
{
System.out.println("=================添加学生信息============");
// 直接定义扫描器,录入学生信息
Scanner sc = new Scanner(System.in);
String sid;
//
接收学生信息
while (true) {
System.out.println("请您输入学号:");
sid = sc.nextLine();
// 判断学号是否重复
boolean bool = isSIdRepeat(sid, students);
if (bool) {
System.out.println("您输入的学号重复!");
} else {
break;
}
}
System.out.println("请您输入姓名:");
String name = sc.nextLine();
System.out.println("请您输入年龄:");
String age = sc.nextLine();
System.out.println("请您输入地址:");
String address = sc.nextLine();
// 封装学生信息
Student student = new Student(sid, name, age, address);
// 添加学生对象到集合容器
students.add(student);
}
/** * 删除某个学生的信息 * * @param students */
public static void deleteStudent(ArrayList<Student> students)
{
System.out.println("=================删除学生信息============");
if (students.size() > 0)
while (true)
}
{
System.out.println("请您删除要删除的学号:");
Scanner sc = new Scanner(System.in);
String sid = sc.nextLine();
// 判断学号是否存在
Boolean bool = isSIdRepeat(sid, students);
if (bool)
{
int i = getIndex(sid, students);
students.remove(i);
break;
} else {
System.out.println("您删除的学生不存在");
System.out.println("请问您要继续吗? Y/N");
String rs = sc.nextLine();
if ("N".equals(rs))
{
break;
}
}
}
} else {
System.out.println("学生信息为空,请先添加学生信息!");
}
}
/** * 修改某个学生的信息 * * @param students */
public static void updateStudent(ArrayList<Student> students)
{
System.out.println("=================修改学生信息============");
Scanner sc = new Scanner(System.in);
if (students.size() > 0)
{
while (true)
{
System.out.println("请输入要修改的学生的学号:");
String sid = sc.nextLine();
// 判断学号是否存在
Boolean bool = isSIdRepeat(sid, students);
if (bool)
{
// 获取到对象集合中的角标
int index = getIndex(sid, students);
// 用户输入新的学生信息
System.out.println("请您输入姓名:");
String name = sc.nextLine();
System.out.println("请您输入年龄:");
String age = sc.nextLine();
System.out.println("请您输入地址:");
String address = sc.nextLine();
Student newStu = new Student(sid, name, age, address);
students.set(index, newStu);
System.out.println("修改学生信息成功");
break;
} else {
System.out.println("您需要修改的学生不存在!");
System.out.println("请问您要继续吗? Y/N");
String rs = sc.nextLine();
if ("N".equals(rs)
)
{
break;
}
}
}
} else {
S
ystem.out.println("学生信息为空,请先添加学生信息!");
}
}
/** * 查询全部学生信息 * * @param students */
private static void queryStudent(ArrayList<Student> students)
{
System.out.println("学生信息为:");
if (students.size() > 0)
{
System.out.println("学号\t\t姓名\t\t年龄\t\t住址");
for (int i = 0; i < students.size(); i++)
{
Student s = students.get(i);
StringBuilder sb = new StringBuilder();
System.out.println(sb.append(s.getSid()).
append(
"\t\t").
append(s.getName()).
append("\t\t").
append(s.getAge()).
append("\t\t").
append(s.getAddress()));
}
} else {
System.out.println("学生信息为空,请先添加学生信息!");
}
}
/** * 判断学生的学号是否重复 * * @param sid * @param students * @return true 代表重复 false 代表没有重复 */
public static boolean isSIdRepeat(String sid, ArrayList<Student> students)
{
// 遍历集合获取到所有学生对象,并判断学号是否重复
for (int i = 0; i < students.size(); i++)
{
Student s = students.get(i);
if (sid.equals(s.getSid()
)
)
{
return true;
}
}
return false;
}
/** * 获取对象在集合中的索引 * * @param sid * @param students * @return */
public static int getIndex(String sid, ArrayList<Student> students)
{
for (int i = 0; i < students.size(); i++)
{
Student s = students.get(i);
if (sid.equals(s.getSid()
)
)
{
return i;
}
}
return -1;
}
}
以上案例运用了 Java SE 知识,实现了一个简易的学生信息管理系统。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!