Java基础——学生管理系统

article/2025/9/28 10:05:10
  1. 用内存存储学生信息。(采用集合的方式)
    步骤:
    A. 定义学生类
    B. 学生管理系统的主界面的代码编写
    C. 学生管理系统的查看所有学生的代码编写
    D. 学生管理系统的添加学生的代码编写
    E. 学生管理系统的删除学生的代码编写
    F. 学生管理系统的修改学生的代码编写

代码:
学生类:Student.java

public class Student {private String id;private String name;private String age;private String address;public Student(){}public Student(String id, String name, String age, String address) {this.id = id;this.name = name;this.age = age;this.address = address;}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 getAge() {return age;}public void setAge(String age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}
import java.util.ArrayList;
import java.util.Scanner;public class StudentManage {public static void main(String[] args) {ArrayList<Student> array = new ArrayList<Student>();while(true) {   //停止的另一种方式,设置标志位flag = true  while(flag)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("--------------------------------------------------------------");System.out.print("请输入您的选择:");Scanner sc = new Scanner(System.in);String choice = sc.nextLine();switch (choice) {case "1"://查看所有学生findAllStudent(array);System.out.println();break;case "2"://添加学生addStudent(array);System.out.println();break;case "3":deleteStudent(array);System.out.println();break;case "4":updateStudent(array);System.out.println();break;case "5":default:// System.out.println("------              5. 退出                              -----");System.out.println("                     感谢您的使用                               ");//flag = false;System.exit(0);break;}}}//查看所有学生public static void findAllStudent(ArrayList<Student> array){if(array.size() == 0){System.out.println("无学生信息,请重新选择");return;}System.out.println();System.out.println("学号\t\t\t\t姓名\t\t\t\t年龄\t\t\t\t居住地");System.out.println("-------------------------------------------------------------------------");for(int x = 0; x < array.size(); x++){Student s = array.get(x);System.out.println(s.getId()+"\t\t\t\t" + s.getName() + "\t\t\t\t" + s.getAge() + "\t\t\t\t" + s.getAddress());}System.out.println("-------------------------------------------------------------------------");}//添加学生public static void addStudent(ArrayList<Student> array){Scanner in = new Scanner(System.in);String id ="";while(true) {System.out.print("输入学号:");id = in.nextLine();int x;boolean flag = false;for(x = 0; x < array.size(); x++ ){Student s = array.get(x);if(id.equals(s.getId())) {flag = true;break;}}if(flag){System.out.println("学号被占用,请重新输入");}else{break;}}System.out.print("输入姓名:");String name = in.nextLine();System.out.print("输入年龄:");String age = in.nextLine();System.out.print("输入地址:");String address = in.nextLine();//创建学生对象Student s = new Student(id,name,age,address);/*Student s = new Student();s.setId(id);s.setName(name);s.setAge(age);s.setAddress(address);*/array.add(s);System.out.println("添加学生成功");}//删除学生public static void deleteStudent(ArrayList<Student> array){//思路:根据学号删除。先遍历学生列表查看学生是否存在Scanner in = new Scanner(System.in);System.out.print("输入要删除学生的学号:");String id = in.nextLine();int index = -1;for(int x = 0; x < array.size(); x++){Student s = array.get(x);if(id.equals(s.getId())){index = x;break;}}if(index == -1){System.out.print("该学生信息不存在,是否继续当前删除操作(Yes or No):");String choice = in.nextLine();if(choice.equalsIgnoreCase("Yes")){deleteStudent(array);}else if(choice.equalsIgnoreCase("No")){return;}else{System.out.println("输入信息有误,返回主界面");return;}}else{array.remove(index);System.out.println("删除学生成功");}}//修改学生信息public static void updateStudent(ArrayList<Student> array){//输入学号查找学生是否存在Scanner in = new Scanner(System.in);System.out.print("输入要更新学生的学号:");String id = in.nextLine();int index = -1;for(int x = 0; x < array.size(); x++){Student s = array.get(x);if(id.equals(s.getId())){index = x;break;}}if(index == -1){System.out.print("该学生信息不存在,是否继续当前更新操作(Yes or No):");String choice = in.nextLine();if(choice.equalsIgnoreCase("Yes")){updateStudent(array);}else if(choice.equalsIgnoreCase("No")){return;}else{System.out.println("输入信息有误,返回主界面");return;}}else{Student s = array.get(index);boolean flag = true;System.out.println("-----选择更新学生信息选项------");System.out.println("--      1. 姓名         --");System.out.println("--      2. 年龄         --");System.out.println("--      3. 地址         --");System.out.println("--      4. 返回主界面    --");System.out.println("--------------------------");while(flag) {System.out.print("请输入您的选择:");Scanner sc = new Scanner(System.in);String choice = sc.nextLine();switch (choice) {case "1":System.out.print("输入修改姓名:");String name = in.nextLine();s.setName(name);System.out.print("继续更新操作(Yes or No):");String a = in.nextLine();if(a.equalsIgnoreCase("Yes"))break;else if(a.equalsIgnoreCase("No")){array.set(index,s);System.out.println("更新操作完成,返回主界面");return;}else{System.out.println("输入信息有误,返回主界面");return;}case "2":System.out.print("输入修改年龄:");String age = in.nextLine();s.setAge(age);System.out.print("继续更新操作(Yes or No):");String b = in.nextLine();if(b.equalsIgnoreCase("Yes"))break;else if(b.equalsIgnoreCase("No")){array.set(index,s);System.out.println("更新操作完成,返回主界面");return;}else{System.out.println("输入信息有误,返回主界面");return;}case "3":System.out.print("输入修改地址:");String address = in.nextLine();s.setAddress(address);System.out.print("继续更新操作(Yes or No):");String c = in.nextLine();if(c.equalsIgnoreCase("Yes"))break;else if(c.equalsIgnoreCase("No")){array.set(index,s);System.out.println("更新操作完成,返回主界面");return;}else{System.out.println("输入信息有误,返回主界面");return;}case "4":array.set(index,s);System.out.println("修改信息完成。");return;default:System.out.println("输入信息有误。返回主界面");return;}}}}
}

无信息,查看信息时:
在这里插入图片描述

添加学生:
在这里插入图片描述
在这里插入图片描述
在查看信息:
在这里插入图片描述
删除学生:
在这里插入图片描述
修改学生:
在这里插入图片描述
在这里插入图片描述

退出:
在这里插入图片描述

  1. 文本存储学生信息

学生类:

public class Student {private String id;private String name;private String age;private String address;public Student(){}public Student(String id, String name, String age, String address) {this.id = id;this.name = name;this.age = age;this.address = address;}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 getAge() {return age;}public void setAge(String age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}

思路:
在这里插入图片描述

(1)输出流:将集合中的内容输出到文本文件中
集合写入文本文件:
需求:键盘录入学生信息(学号,姓名,年龄,居住地)存入集合。然后遍历集合把每一个学生信息存入文本文件(每一个学生信息为一行数据,自己定义分割标记)

分析:
A. 定义学生类
B. 创建集合对象
C. 写方法实现键盘录入学生信息,并把学生对象作为元素添加集合
D. 创建输出缓冲流对象
E. 遍历集合,得到每一个学生信息,并把学生信息按照一定的格式写入文本文件。(123456,wang,22,wuhan)
F. 释放资源

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;public class WriteDemo {public static void main(String[] args) throws IOException {ArrayList<Student> array = new ArrayList<Student>();Student s1 = new Student("123456","wang","22","wuhan");Student s2 = new Student("123457","zhang","28","beijing");Student s3 = new Student("123458","lisi","20","wixi");array.add(s1);array.add(s2);array.add(s3);BufferedWriter bw = new BufferedWriter(new FileWriter("array.txt"));for(int x = 0; x < array.size(); x++){Student s = array.get(x);StringBuilder sb = new StringBuilder();sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge()).append(",").append(s.getAddress());bw.write(sb.toString());bw.newLine();bw.flush();}bw.close();}
}

(2)输入流:从文本文件中读取信息到集合中

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;public class ReaderDemo {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new FileReader("array.txt"));ArrayList<Student> array = new ArrayList<Student>();String line;while((line = br.readLine())!= null){String[] strArray = line.split(",");Student s = new Student(strArray[0],strArray[1],strArray[2],strArray[3]);array.add(s);}br.close();System.out.println("学号\t\t姓名\t年龄\t居住地");for(int x = 0; x < array.size(); x++){Student s = array.get(x);System.out.println(s.getId() + "\t\t" + s.getName() + "\t" + s.getAge() + "\t\t" + s.getAddress());}}
}

IO版本代码如下所示:
代码:
注意:一定要先在本项目下创建文件Student.txt,要不然会报错找不到文件

import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;public class StudentManage {public static void main(String[] args) throws IOException {String fileName = "Student.txt";while(true) {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("--------------------------------------------------------------");System.out.print("请输入您的选择:");Scanner sc = new Scanner(System.in);String choice = sc.nextLine();switch (choice) {case "1"://查看所有学生findAllStudent(fileName);System.out.println();break;case "2"://添加学生addStudent(fileName);System.out.println();break;case "3":deleteStudent(fileName);System.out.println();break;case "4":updateStudent(fileName);System.out.println();break;case "5":default:// System.out.println("------              5. 退出                              -----");System.out.println("                     感谢您的使用                               ");//flag = false;System.exit(0);break;}}}//IO输入流:读文件public static void readData(String fileName, ArrayList<Student> array) throws IOException {//创建输入缓冲流对象BufferedReader br = new BufferedReader(new FileReader(fileName));String line;while((line = br.readLine()) != null){String[] datas = line.split(",");Student s = new Student(datas[0],datas[1],datas[2],datas[3]);array.add(s);}br.close();}//IO输出流:写文件public static void writeData(String fileName, ArrayList<Student> array) throws IOException {//创建输入缓冲流对象BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));for(int x = 0; x < array.size(); x++){Student s = array.get(x);StringBuilder sb = new StringBuilder();sb.append(s.getId()).append(",").append(s.getName()).append(",").append(s.getAge()).append(",").append(s.getAddress());bw.write(sb.toString());bw.newLine();bw.flush();}bw.close();}//查看所有学生public static void findAllStudent(String fileName) throws IOException {ArrayList<Student> array = new ArrayList<Student>();readData(fileName,array);if(array.size() == 0){System.out.println("无学生信息,请重新选择");return;}System.out.println();System.out.println("学号\t\t\t\t姓名\t\t\t\t年龄\t\t\t\t居住地");System.out.println("-------------------------------------------------------------------------");for(int x = 0; x < array.size(); x++){Student s = array.get(x);System.out.println(s.getId()+"\t\t\t\t" + s.getName() + "\t\t\t\t" + s.getAge() + "\t\t\t\t" + s.getAddress());}System.out.println("-------------------------------------------------------------------------");}//添加学生public static void addStudent(String fileName) throws IOException {ArrayList<Student> array = new ArrayList<Student>();readData(fileName,array);Scanner in = new Scanner(System.in);String id ="";while(true) {System.out.print("输入学号:");id = in.nextLine();int x;boolean flag = false;for(x = 0; x < array.size(); x++ ){Student s = array.get(x);if(id.equals(s.getId())) {flag = true;break;}}if(flag){System.out.println("学号被占用,请重新输入");}else{break;}}System.out.print("输入姓名:");String name = in.nextLine();System.out.print("输入年龄:");String age = in.nextLine();System.out.print("输入地址:");String address = in.nextLine();//创建学生对象Student s = new Student(id,name,age,address);/*Student s = new Student();s.setId(id);s.setName(name);s.setAge(age);s.setAddress(address);*/array.add(s);writeData(fileName, array);System.out.println("添加学生成功");}//删除学生public static void deleteStudent(String fileName) throws IOException {ArrayList<Student> array = new ArrayList<>();readData(fileName,array);//思路:根据学号删除。先遍历学生列表查看学生是否存在Scanner in = new Scanner(System.in);System.out.print("输入要删除学生的学号:");String id = in.nextLine();int index = -1;for(int x = 0; x < array.size(); x++){Student s = array.get(x);if(id.equals(s.getId())){index = x;break;}}if(index == -1){System.out.print("该学生信息不存在,是否继续当前删除操作(Yes or No):");String choice = in.nextLine();if(choice.equalsIgnoreCase("Yes")){deleteStudent(fileName);}else if(choice.equalsIgnoreCase("No")){return;}else{System.out.println("输入信息有误,返回主界面");return;}}else{array.remove(index);writeData(fileName,array);System.out.println("删除学生成功");}}//修改学生信息public static void updateStudent(String fileName) throws IOException {ArrayList<Student> array = new ArrayList<Student>();readData(fileName,array);//输入学号查找学生是否存在Scanner in = new Scanner(System.in);System.out.print("输入要更新学生的学号:");String id = in.nextLine();int index = -1;for(int x = 0; x < array.size(); x++){Student s = array.get(x);if(id.equals(s.getId())){index = x;break;}}if(index == -1){System.out.print("该学生信息不存在,是否继续当前更新操作(Yes or No):");String choice = in.nextLine();if(choice.equalsIgnoreCase("Yes")){updateStudent(fileName);}else if(choice.equalsIgnoreCase("No")){return;}else{System.out.println("输入信息有误,返回主界面");return;}}else{Student s = array.get(index);boolean flag = true;System.out.println("-----选择更新学生信息选项------");System.out.println("--      1. 姓名         --");System.out.println("--      2. 年龄         --");System.out.println("--      3. 地址         --");System.out.println("--      4. 返回主界面    --");System.out.println("--------------------------");while(flag) {System.out.print("请输入您的选择:");Scanner sc = new Scanner(System.in);String choice = sc.nextLine();switch (choice) {case "1":System.out.print("输入修改姓名:");String name = in.nextLine();s.setName(name);System.out.print("继续更新操作(Yes or No):");String a = in.nextLine();if(a.equalsIgnoreCase("Yes"))break;else if(a.equalsIgnoreCase("No")){array.set(index,s);writeData(fileName,array);System.out.println("更新操作完成,返回主界面");return;}else{System.out.println("输入信息有误,返回主界面");return;}case "2":System.out.print("输入修改年龄:");String age = in.nextLine();s.setAge(age);System.out.print("继续更新操作(Yes or No):");String b = in.nextLine();if(b.equalsIgnoreCase("Yes"))break;else if(b.equalsIgnoreCase("No")){array.set(index,s);writeData(fileName,array);System.out.println("更新操作完成,返回主界面");return;}else{System.out.println("输入信息有误,返回主界面");return;}case "3":System.out.print("输入修改地址:");String address = in.nextLine();s.setAddress(address);System.out.print("继续更新操作(Yes or No):");String c = in.nextLine();if(c.equalsIgnoreCase("Yes"))break;else if(c.equalsIgnoreCase("No")){array.set(index,s);writeData(fileName,array);System.out.println("更新操作完成,返回主界面");return;}else{System.out.println("输入信息有误,返回主界面");return;}case "4":array.set(index,s);writeData(fileName,array);System.out.println("修改信息完成。");return;default:System.out.println("输入信息有误。返回主界面");return;}}}}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


http://chatgpt.dhexx.cn/article/fEwcQLJw.shtml

相关文章

学生管理系统(Java版)

学生管理系统&#xff08;Java版&#xff09; 前言&#xff1a;这个是大二做的课设&#xff08;还是学生管理系统…&#xff09;&#xff0c;理论上虽然是4个人一组一起做的&#xff0c;但是&#xff0c;注意这个“但是”&#xff0c;还是我一个人承担了所有…代码和文档基本都…

Java 版学生成绩管理系统,附源码

前言 对于计算机专业的学生来讲&#xff0c;一定对于学生成绩管理系统课程设计十分印象深刻。设计、上机、编码、写报告、答辩等一系列流程&#xff0c;虽然很简单&#xff0c;但也可以综合运用我们所学的一些知识了。 今天就来复习以下这个课题&#xff0c;用 Java SE 来实现…

用Java实现一个学生管理系统(附源码)

目录 一、题目要求 二、设计思路 &#xff08;2&#xff09;代表课程的类——Course类 &#xff08;3&#xff09;具体功能实现类——Function类 &#xff08;4&#xff09;测试类——Test类 三、代码实现 &#xff08;1&#xff09;Student.java文件 &#xff08;2&…

Java实现学生管理系统(完整代码)

案例需求 完成一个综合案例&#xff1a;学生管理系统&#xff01;该系统主要功能如下&#xff1a; 添加学生&#xff1a;通过键盘录入学生信息&#xff0c;添加到集合中 删除学生&#xff1a;通过键盘录入要删除学生的学号&#xff0c;将该学生对象从集合中删除 修改学生&…

Java学生信息管理系统

一、选题设计思想 学生信息管理系统是典型的信息管理系统(MIS)&#xff0c;其开发主要包括后台数据库的建立和维护以及前端应用程序的开发。对于前者要求建立起数据一致性和完整性强、安全性高的数据库&#xff1b;对于后者则要求应用程序具有功能完备、易使用、易维护等特点。…

学生管理系统(Java实现)

一、学生信息管理程序 基本要求&#xff1a; 1&#xff0e;要求实现学生信息的使用添加、查找、删除、修改等几个功能&#xff0c;每个功能模块均能实现从模块中退出&#xff0c;从而完成一个学生管理系统所需功能。 2&#xff0e;要使用结构体来实现对学生信息的存储。 3&am…

【JAVA】学生信息管理系统

目录 前言 一、环境搭建 二、功能实现 1.学生信息类的创建 2.学生信息的添加功能 3.学生信息的删除功能 4.学生信息的修改功能 5.学生信息的查看功能 三、主类的调用 1.界面的搭建 2.学生端和教师端 3.系统和功能的选择 总结 前言 JAVA实现的学生信息管理…

Java 学生管理系统(详解)

文章目录 学生类main方法首界面登录功能选择界面添加学生信息删除学生信息修改学生信息查看学生信息 学号遍历 和 清空控制台方法附&#xff1a;学生管理系统代码Student .JavaMain.JavaFunctionModule.javaExtents.Java 总结 下面会分享我在做这个练习时的一些方法以及程序代码…

【超详细】Java实现学生信息管理系统

项目介绍&#xff1a;用java实现学生信息的管理&#xff0c;其中录入的数据包括&#xff1a;学号、姓名、年龄、居住地等&#xff0c;并且能够实现对学生信息的添加、修改、删除、查看功能。 一、创建项目 1、项目名称&#xff1a;myStudentManager 二、创建包 1、包名称&a…

基于JAVA实现的简易学生信息管理系统(附源码)

一、前言 最近在学习JAVA&#xff0c;这几天跟着网上的视频学完基础知识之后&#xff0c;做了一个学生信息管理系统&#xff0c;写的比较普通&#xff0c;没太大亮点&#xff0c;希望可以给初学者一些参考经验&#xff0c;另外&#xff0c;如有不恰当的地方还请各位指正&am…

java学生管理系统(简单版)

简单实现学生信息添加、删除&#xff0c;修改、查询功能。根据需求&#xff0c;创建一个学生类和学生管理类&#xff0c;用容器存储学生信息&#xff0c;这里用到ArrayList<E>(ArrayList类是一个可动态修改的数组&#xff0c;使用之前需要导包import java.util.ArrayList…

Keil打开工程时,解决“Loading PDSC Debug Description Failed”错误

网上搜到一个方法是&#xff0c;把Keil.STM32Lxxx_DFP.pdsc文件中&#xff0c;删除行“Message(2, "Not a genuine ST Device! Abort connection.");”&#xff0c; 这个方法属于掩耳盗铃&#xff0c;只是不让他弹出错误而已。 正确的解决方法是&#xff0c;安装与…

STM32 Keil新建工程报错“Loading PDSC Debug Description Failed for STMicroelectronics STM32Lxxxxxxx”

在使用STM32L0xx系列和STM32L4xx系列的单片机时都遇到了打开keil工程报“Loading PDSC Debug Description Failed for STMicroelectronics STM32Lxxxxxxx”错误的问题&#xff0c;具体现象和解决方法如下图文所示&#xff1a; 找到keil的Build Output窗口提示的File路径&#x…

解决Keil安装Pack包的“Loading PDSC Debug Description Failed”错误

vision Loading PDSC Debug Description failed for STMicroelectronics STM32F103ZE Disabling usage of PDSC Debug DescriptionSee Build Output for details. connection.");" 具体的错误信息&#xff0c;可以在Build Output中查看&#xff0c;如下图所示。这个…

Disabling usage of PDSC Debug Description

STM32 Keil新建工程报错“Loading PDSC Debug Description Failed for STMicroelectronics STM32Lxxxxxxx” 在使用STM32L0xx系列和STM32L4xx系列的单片机时都遇到了打开keil工程报“Loading PDSC Debug Description Failed for STMicroelectronics STM32Lxxxxxxx”错误的问题…

Loading PDSC Debug Description failed for STMicroelectronics STM32F103ZF Disabling usage of PDSC Deb

用 STM32F103 软件仿真 &#xff0c;还需要下载安装 STM32F103 pack 文件&#xff0c;如果在 MDK 中下载较慢&#xff0c;也可以点击此处下载&#xff0c;下载后双击安装即可。 当Keil新建或者打开工程出现“ Loading PDSC Debug Description failed for STMicroelectronics S…

PD协议

最近在搞PD充电部分&#xff0c;资料记录下&#xff0c;以前搞了很多项目 也记录了很多文档资料&#xff0c;不过感觉平时喜欢乱打开网站&#xff0c;而那些word文档 经常被放在一个文件夹中&#xff0c;一放就好几年。所以开始在csdn记录自己整理的东西。 定义&#xff1a; U…

N32G45导入芯片包出现Cannot install Pack Nationstech.N32G45x_DFP.1.0.4: Cannot find PDSC file at root direct

Cannot install Pack Nationstech.N32G45x_DFP.1.0.4: Cannot find PDSC file at root directory of Pack archive 最近训练营要求用到国产芯片N32G45X系列的芯片&#xff0c;但是在keil中导入芯片包时出现了以下问题&#xff1a; Cannot install Pack Nationstech.N32G45x_DF…

SDP简介

1 概述 SDP制订的目的是描述多媒体会话&#xff0c;如会话通知、会话邀请或其他发起多媒体会话的形式。 SDP是纯粹的会话的描述格式而不是一个传输协议。它可以使用不同的传输协议&#xff0c;包括会话通知协议&#xff08;SAP&#xff09;、会话初始协议&#xff08;SIP&…

MDK5/KeiluVsion5安装报错“Download of PDSC index file failed”

一、原因一分析&#xff1a; 1.先从字面分析&#xff1a;Download of PDSC index file failed中文意思是PDSC这个索引文件下载错误。首先我们要知道&#xff0c;刚开始安装软件或当你进入Pack Installer界面时&#xff0c;软件会从Keil官网更新下载keil软件所需要的一些芯片包…