package 学生信息管理;
import java.util.Scanner;
class Queue {
//链结点
Student front;
Student rear;
// public LQ() {}
}
public class Student {
String name;
int score;
int xuehao;
private Student next;
private int size;
//初始化操作
public void init(Queue q){
this.size = 0;
q.front = q.rear = null;
}
//判队空
public boolean isEmpty(Queue q) {
if((q.front == q.rear)&&(size == 0)) {
return true;
}else {
return false;
}
}
//入队
public void add(Queue q) {
Scanner sc = new Scanner(System.in);
Student stu = new Student();
System.out.println("请输入该学生的信息:");
System.out.print("姓名:");
String name=sc.next();
stu.name = name;
System.out.print("成绩:");
int score=sc.nextInt ();
stu.score = score;
System.out.print("学号:");
int xuehao=sc.nextInt ();
stu.xuehao = xuehao;
if(isEmpty(q)) {
q.front = stu;
q.rear = stu;
size++;
}else {
q.rear.next = stu;
q.rear = stu;
size++;
}
}
//出队
public void pop(Queue q) {
if(isEmpty(q)) {
System.out.println("队列为空!");
}else {
Student stu = q.front;
q.front = stu.next;
size--;
System.out.println("出队成功!");
}
}
//插入
public void insert(Queue q) {
System.out.println("您想在第几个学生后插入?:");
Scanner sc = new Scanner(System.in);
int index = sc.nextInt();
if(index<=0 || index>size) {
System.out.println("序号非法,插入失败!");
}
Student stu = new Student();
System.out.println("请输入该学生的信息:");
System.out.print("姓名:");
String name=sc.next();
stu.name = name;
System.out.print("成绩:");
int score=sc.nextInt ();
stu.score = score;
System.out.print("学号:");
int xuehao=sc.nextInt ();
stu.xuehao = xuehao;
Student s = q.front;
for(int i=1;i<index;i++) {
s = s.next;
}
stu.next = s.next;
s.next = stu;
System.out.println("操作成功!");
size++;
}
//删除
public void del(Queue q) {
System.out.println("请输入想删除的学生学号:");
Scanner sc = new Scanner(System.in);
int xh = sc.nextInt();
Student s = q.front;
for(int i=1;i<size;i++) {
if((i == 1)&&(s.xuehao == xh)) {
System.out.println("查找到该学生:"+"姓名:"+s.name+" 成绩:"+s.score+" 学号:"+s.xuehao);
pop(q);
size--;
break;
}else if(s.next.xuehao == xh){
System.out.println("查找到该学生:"+"姓名:"+s.next.name+" 成绩:"+s.next.score+" 学号:"+s.next.xuehao);
s.next = s.next.next;
System.out.println("删除成功!");
size--;
break;
}else if(s == null) {
System.out.println("未找到该学号!");
}else {
s = s.next;
}
}
}
//修改
public void change(Queue q) {
System.out.println("请输入想修改的学生学号:");
Scanner sc = new Scanner(System.in);
int xh = sc.nextInt();
Student s = q.front;
for(int i=1;i<=size;i++) {
if(s.xuehao == xh){
System.out.println("查找到该学生:"+"姓名:"+s.name+" 成绩:"+s.score+" 学号:"+s.xuehao);
System.out.print("姓名:");
String name=sc.next();
s.name = name;
System.out.print("成绩:");
int score=sc.nextInt ();
s.score = score;
System.out.print("学号:");
int xuehao=sc.nextInt ();
s.xuehao = xuehao;
System.out.println("修改成功!");
break;
}else if(s.next == null) {
System.out.println("该学生不存在!");
}else {
s = s.next;
}
}
}
//查找
public void check(Queue q) {
System.out.println("请输入想查找的学生学号:");
Scanner sc = new Scanner(System.in);
int xh = sc.nextInt();
Student s = q.front;
for(int i=1;i<=size;i++) {
if(s.xuehao == xh){
System.out.println("查找到该学生:");
System.out.println("姓名:"+s.name+" 成绩:"+s.score+" 学号:"+s.xuehao);
break;
}else if(s == null) {
System.out.println("该学生不存在!");
}else {
s = s.next;
}
}
}
//打印
public void print(Queue q) {
Student s = q.front;
while(s != null) {
System.out.println("姓名:"+s.name+" 成绩:"+s.score+" 学号:"+s.xuehao);
s = s.next;
}
if(q.front == null) {
System.out.println("队列为空!");
}
}
//排序
public void sort(Queue q) {
Student s1 = q.front;
while(s1 != null) {
Student s2 = q.front;
while(s2 != null) {
if(s2.score>s1.score) {
int tem1 = s2.score;
s2.score = s1.score;
s1.score = tem1;
int tem2 = s2.xuehao;
s2.xuehao = s1.xuehao;
s1.xuehao = tem2;
String tem3 = s2.name;
s2.name = s1.name;
s1.name = tem3;
}
s2 = s2.next;
}
s1 = s1.next;
}
print(q);
}
public static void main(String[] args) {
Queue q = new Queue();
Student stu = new Student();
stu.init(q);
System.out.println("学生队列基本功能菜单");
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("8.将学生按成绩由高到低排序");
System.out.println("9.退出学生信息队列操作");
System.out.println("=====================");
System.out.print("请选择功能:");
while(true) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if(num==1) {
stu.add(q);
System.out.println("入队成功!");
}else if(num==2) {
stu.pop(q);
}else if(num==3) {
stu.insert(q);
}else if(num==4) {
stu.del(q);;
}else if(num==5) {
stu.change(q);
}else if(num==6) {
stu.check(q);;
}else if(num==7) {
stu.print(q);;
}else if(num==8) {
stu.sort(q);;
}else if(num==9) {
break;
}
}
}
}