java使用链表写一个简单的控制台学生管理系统

2025-10-08 18:17:40

1、新建一个学生实体类,用于存放学生的各项信息

java使用链表写一个简单的控制台学生管理系统

2、新建一个链表节点类,每个节点存放一个学生信息及下一个节点的引用

java使用链表写一个简单的控制台学生管理系统

3、添加一个主操作类,并添加本系统的菜单方法

java使用链表写一个简单的控制台学生管理系统

4、定义链表的头节点,当前最后一个节点,以及主控制逻辑信息。

java使用链表写一个简单的控制台学生管理系统

5、选择1,使用io流逐行读取存有学生信息的文本文件,对每行字符串,采用\t分割后得到一个字符串数组,数据各项即为一个学生的具体信息。然后新建一个节点加入到链表。

java使用链表写一个简单的控制台学生管理系统

java使用链表写一个简单的控制台学生管理系统

6、如果选择2,则遍历链表中的所有节点,输出每个节点的学生信息。

java使用链表写一个简单的控制台学生管理系统

7、如果选择3则根据用户从控制台输入的学生信息,初始化一个节点,添加到链表。

java使用链表写一个简单的控制台学生管理系统

8、如果选择功能4,则从链表中逐个节点对比,直到找到和用户输入的学号相匹配的节点信息,删除该节点。

java使用链表写一个简单的控制台学生管理系统

9、如果选择的是5,则从链表中逐行对比,直到找到和用户输入的学号相匹配的节点信息,然后将该节点信息更改为用户输入的新属性信息。

java使用链表写一个简单的控制台学生管理系统

10、如果选择的是6则使用io流将当前链表中的节点学生信息,写入到文本文件中。使用\t分割学生的各项属性,每个学生一行。

java使用链表写一个简单的控制台学生管理系统

11、运行结果

java使用链表写一个简单的控制台学生管理系统

java使用链表写一个简单的控制台学生管理系统

java使用链表写一个简单的控制台学生管理系统

java使用链表写一个简单的控制台学生管理系统

java使用链表写一个简单的控制台学生管理系统

java使用链表写一个简单的控制台学生管理系统

12、全部代码:

import java.io.BufferedReader;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Scanner;

class Student {

//学号

String sno;

//姓名

String name;

//班级

String clazz;

public Student(String sno, String name,

String clazz) {

super();

this.sno = sno;

this.name = name;

this.clazz = clazz;

}

}

/**

 * 链表节点

 */

class Node {

Student stu;

Node next;

}

public class Main {

private static void menu () {

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(" 0.退出");

}

public static void main(String[] args) {

Node head = new Node();

Node current = head;

Scanner scn = new Scanner(System.in);

String cmd = "";

do {

menu();

System.out.print("请输入你得选择:(0-6)");

cmd = scn.nextLine();

if (cmd.equals("1")) {

System.out.print("请输入导入的文件:");

String filepath = scn.nextLine();

try {

BufferedReader br = new BufferedReader(

new FileReader(filepath));

String line = null;

while ((line = br.readLine()) != null) {

String[] stuInfos = line.split("\t");

Student s = new Student(stuInfos[0], stuInfos[1], 

stuInfos[2]);

Node node = new Node();

node.stu = s;

current.next = node;

current = node;

}

br.close();

System.out.println("导入成功!");

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

} else if (cmd.equals("2")) {

Node tmp = head.next;

while (tmp != null) {

Student s = tmp.stu;

System.out.println(s.sno + "," + s.name

+ "," + s.clazz);

tmp = tmp.next;

}

} else if (cmd.equals("3")) {

System.out.print("请输入学号:");

String sno = scn.nextLine();

System.out.print("请输入姓名:");

String name = scn.nextLine();

System.out.print("请输入班级:");

String clazz = scn.nextLine();

Student s = new Student(sno, name, clazz);

Node node = new Node();

node.stu = s;

current.next = node;

current = node;

System.out.println("添加成功!");

} else if (cmd.equals("4")) {

System.out.print("请输入学号:");

String sno = scn.nextLine();

Node pre = head;

Node tmp = head.next;

while (tmp != null && 

!tmp.stu.sno.equals(sno)) {

pre = tmp;

tmp = tmp.next;

}

if (tmp != null) {

pre.next = tmp.next;

System.out.println("删除成功!");

}

} else if (cmd.equals("5")) {

System.out.print("请输入学号:");

String sno = scn.nextLine();

Node tmp = head.next;

while (tmp != null && 

!tmp.stu.sno.equals(sno)) {

tmp = tmp.next;

}

if (tmp != null) {

System.out.print("请输入姓名:");

String name = scn.nextLine();

System.out.print("请输入班级:");

String clazz = scn.nextLine();

Student s = tmp.stu;

s.name = name;

s.clazz = clazz;

System.out.println("修改成功!");

}

} else if (cmd.equals("6")) {

System.out.print("请输入保存路径:");

String filepath = scn.nextLine();

try {

FileWriter fw = new FileWriter(filepath);

Node tmp = head.next;

while (tmp != null) {

Student s = tmp.stu;

fw.write(s.sno + "\t" + s.name + "\t" + 

s.clazz + "\n");

fw.flush();

tmp = tmp.next;

}

fw.close();

System.out.println("导出成功!");

} catch (IOException e) {

e.printStackTrace();

}

}

} while (!cmd.equals("0"));

System.out.println("退出成功!");

scn.close();

System.exit(0);

}

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢