import java.util.Scanner; public class Addstudent { static Scanner input = new Scanner(System.in); public static void addstudent() { System.out.println("添加学号"); String sid = input.next(); System.out.println("添加姓名"); String name = input.next(); System.out.println("添加年龄"); String age = input.next(); System.out.println("添加学籍"); String address = input.next(); Student bo = new Student(sid,name,age,address); add(bo); } public static void add(Student bo) { Student temp = Test.head;//把头节点赋值给一个辅助类 boolean falg = false; while(true) { if(temp.next == null) {//判断链表是否到最后 break; } if(Test.stroing %2 == 1) {//判断是否修改了显示顺序 if(temp.next.sid.compareToIgnoreCase(bo.sid)<0) {//寻找适合的位置插入节点//跳过头节点 break; }else if(temp.next.sid.compareToIgnoreCase(bo.sid)==0){ falg = true; break; } }else { if(temp.next.sid.compareToIgnoreCase(bo.sid)>0) {//寻找适合的位置插入节点//跳过头节点 break; }else if(temp.next.sid.compareToIgnoreCase(bo.sid)==0){ falg = true; break; } } //节点后移 temp = temp.next; } if(falg) {//判断是否输入相同的编号 System.out.println("插入"+bo.sid+"的数据已存在"); }else { bo.next = temp.next; temp.next = bo; } } }
时间: 2024-04-23 19:25:12 浏览: 79
这是一个Java类,名为Addstudent,它有一个静态方法addstudent()和一个静态方法add(Student bo)。addstudent()方法用于从控制台读取学生信息(学号、姓名、年龄和学籍),创建一个Student对象,然后调用add(Student bo)方法将该对象插入到单向链表中。add(Student bo)方法接受一个Student对象作为参数,它通过遍历单向链表,查找适当的位置将该节点插入到链表中。在遍历过程中,它会判断当前节点是否是最后一个节点,以及是否需要修改链表的显示顺序,然后根据学号进行比较以确定插入位置。如果插入的学号已经存在于链表中,则不插入该节点并输出相应的提示信息。如果插入的学号不存在于链表中,则将该节点插入到相应位置。
相关问题
package bean; import java.util.Scanner; public class StudentManag { static Scanner scanner = new Scanner(System.in); public static void main(String[] args) { while (true) { System.out.println("欢迎进入学生信息管理系统\n 1.添加学生信息 \n 2.修改学生信息 \n 3.查询学生信息 \n 4.删除学生信息 \n 5.退出 \n 请输入序号选择相应的管理功能:"); Scanner scanner = new Scanner(System.in); int code = scanner.nextInt(); if (code == 1) { addStudent(); System.out.println("学生信息添加成功!"); continue; } else if (code == 2) { } else if (code == 3) { } else if (code == 4) { } else if (code == 5) { break; } else { System.out.println("请输入1到5之间的整数"); } } } //添加学生的方法 public static void addStudent() { Student student = new Student(); System.out.println("请输入学号"); String id = scanner.next(); student.setSid(id); System.out.println("请输入姓名"); String name = scanner.next(); student.setSname(name); System.out.println("请输入性别"); char sex = scanner.next().charAt(0); student.setSex(sex); System.out.println("请输入年龄"); student.getAge(scanner.nextInt()); System.out.println("请输入班级"); student.setStuclass(scanner.next()); //把使用读入数据封装好的对象添加到数据集合中 BaseDate.studentData.put(student.getSid(), student); }集合的方法写修改删除查询
//修改学生信息的方法
public static void modifyStudent() {
System.out.println("请输入要修改学生的学号:");
String id = scanner.next();
Student student = BaseDate.studentData.get(id);
if (student == null) {
System.out.println("没有找到该学生!");
return;
}
System.out.println("请输入修改后的姓名:");
String name = scanner.next();
student.setSname(name);
System.out.println("请输入修改后的性别:");
char sex = scanner.next().charAt(0);
student.setSex(sex);
System.out.println("请输入修改后的年龄:");
int age = scanner.nextInt();
student.setAge(age);
System.out.println("请输入修改后的班级:");
String stuclass = scanner.next();
student.setStuclass(stuclass);
System.out.println("学生信息修改成功!");
}
//查询学生信息的方法
public static void queryStudent() {
System.out.println("请输入要查询的学生的学号:");
String id = scanner.next();
Student student = BaseDate.studentData.get(id);
if (student == null) {
System.out.println("没有找到该学生!");
return;
}
System.out.println("学号:" + student.getSid() + ",姓名:" + student.getSname() + ",性别:" + student.getSex() + ",年龄:" + student.getAge() + ",班级:" + student.getStuclass());
}
//删除学生信息的方法
public static void deleteStudent() {
System.out.println("请输入要删除的学生的学号:");
String id = scanner.next();
Student student = BaseDate.studentData.get(id);
if (student == null) {
System.out.println("没有找到该学生!");
return;
}
BaseDate.studentData.remove(id);
System.out.println("学生信息删除成功!");
}
逐行解释下面代码:package sec02; import java.io.*; import java.util.*; class Student implements Serializable { private String name; private int id; private int chineseScore; private int mathScore; private int englishScore; public Student(String name, int id) { this.name = name; this.id = id; } public void setChineseScore(int score) { this.chineseScore = score; } public void setMathScore(int score) { this.mathScore = score; } public void setEnglishScore(int score) { this.englishScore = score; } public String getName() { return name; } public int getId() { return id; } public int getChineseScore() { return chineseScore; } public int getMathScore() { return mathScore; } public int getEnglishScore() { return englishScore; } public String setName(String name) { return name; } } public class StudentSystem { private static final String FILE_NAME = "students.dat"; private static List<Student> students = new ArrayList<>(); public static void main(String[] args) { loadStudents(); Scanner scanner = new Scanner(System.in); 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("6. 退出系统"); int choice = scanner.nextInt(); switch (choice) { case 1: addStudent();//添加 break; case 2: findStudent();//寻找 break; case 3: updateStudent();//更新 break; case 4: deleteStudent();//删除
这段代码是一个简单的学生管理系统,使用了Java的序列化机制来保存和读取学生信息。
首先,代码中使用了Java的输入输出包和工具包:
```java
package sec02;
import java.io.*;
import java.util.*;
```
然后定义了一个学生类`Student`,实现了序列化接口`Serializable`,并有一些属性和方法:
```java
class Student implements Serializable {
private String name;
private int id;
private int chineseScore;
private int mathScore;
private int englishScore;
public Student(String name, int id) {
this.name = name;
this.id = id;
}
public void setChineseScore(int score) {
this.chineseScore = score;
}
public void setMathScore(int score) {
this.mathScore = score;
}
public void setEnglishScore(int score) {
this.englishScore = score;
}
public String getName() {
return name;
}
public int getId() {
return id;
}
public int getChineseScore() {
return chineseScore;
}
public int getMathScore() {
return mathScore;
}
public int getEnglishScore() {
return englishScore;
}
public String setName(String name) {
return name;
}
}
```
接下来是主类`StudentSystem`,其中定义了一个常量`FILE_NAME`,用于指定保存学生信息的文件名。还有一个`List`类型的变量`students`,用于存放所有学生信息。程序中的主要逻辑在`main`方法中,通过一个`while`循环来不断接收用户的操作:
```java
public class StudentSystem {
private static final String FILE_NAME = "students.dat";
private static List<Student> students = new ArrayList<>();
public static void main(String[] args) {
loadStudents();
Scanner scanner = new Scanner(System.in);
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("6. 退出系统");
int choice = scanner.nextInt();
switch (choice) {
case 1:
addStudent();
break;
case 2:
findStudent();
break;
case 3:
updateStudent();
break;
case 4:
deleteStudent();
break;
case 5:
inputScore();
break;
case 6:
saveStudents();
System.exit(0);
break;
default:
System.out.println("无效的选择,请重新输入。");
break;
}
}
}
```
其中,`loadStudents`方法用于从文件中读取学生信息,`saveStudents`方法用于将学生信息保存到文件中,`addStudent`方法用于添加一个新学生,`findStudent`方法用于查找学生信息,`updateStudent`方法用于更新学生信息,`deleteStudent`方法用于删除学生信息,`inputScore`方法用于输入学生成绩。
最后,程序中的各个方法实现了相应的功能,有些方法使用了Java的序列化机制来保存和读取学生信息,具体实现可以参考完整代码。
阅读全文