mini系统主页面:
系统说明:
由于是mini系统,所以很多功能没有特别完善,整个信息保存至内存链表,没有利用IO流导出保存,所以实施各项功能的前提都是先进行2号功能,逐个添加学生信息,然后才可实现其它功能,否则会提示返回信息。一旦退出程序进程,所有信息都不被保存。(共四个文件,放至同一包下即可!)
2号功能,可连续录入,信息录入完毕后,根据相关提示,可进行不同选项。
1号功能,展示所有录入学生信息
其它功能分别安札提示,输入学号,完成其相应的功能操作,由于mini系统,所以要保证学号为主键(唯一性)的前提,否则可能会影响功能的实现
系统代码:
学生信息结构类
public class StuNode {
public int id; //学号
public String name; //姓名
public String classid; //班级
public double score; //分数
public StuNode next;
//生成构造函数
public StuNode(int id, String name, String classid, double score) {
super();
this.id = id;
this.name = name;
this.classid = classid;
this.score = score;
}
}
mini系统主页面及相关框架类
import java.util.Scanner;
public class Index {
Scanner scanf = new Scanner(System.in);
//创建头结点
StuNode head = new StuNode(0,"","",0);
//获取头结点的方法
public StuNode getHead() {
return head;
}
//主页面显示方法
public void show_index() {
System.out.println("---------------欢迎使用mini学生管理系统---------------");
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("请输入您需要的功能号:");
//调用选择方法
choice(scanf.nextInt());
}
public void choice(int n) {
//生成StulistDemo对象,用于相关功能进行
StulistDemo stu = new StulistDemo();
//增强程序健壮性,排出其他乱码干扰程序进行(对于非法数字进行再输入)
while(true) {
if(n >= 1 && n <= 5)
break;
else {
System.out.println("您所输入的号码无效,请重新输入!!!");
System.out.print("请重新输入您需要的功能号:");
n = scanf.nextInt();
}
}
//开关语句选择相应的功能,然后调用其具体方法
while(true){
switch(n){
case 1:stu.show(getHead());break;
case 2:stu.add(getHead(),stu.create());break;
case 3:stu.modifi(getHead());break;
case 4:stu.delete(getHead());break;
case 5:stu.find(getHead());break;
}
//创建死循环,完成功能后再次返回主页面
show_index();
}
}
}
学生系统功能实现类
import java.util.Scanner;
public class StulistDemo {
Scanner scanf = new Scanner(System.in);
//学生信息展示
public void show(StuNode head) {
StuNode temp = head;
//链表判空
if(temp.next == null) {
System.out.println("(还没有存储学生信息,链表为空,先试试功能2吧!!!)");
return;
}
//遍历输出每一个结点信息
else {
System.out.println("-----------mini学生管理系统学生信息表-----------");
System.out.println(" 学号 姓名 班级 总成绩 ");
System.out.println();
while(temp.next != null) {
temp = temp.next;
System.out.println(" "+temp.id+" "+temp.name+" "+temp.classid+" "+temp.score);
}
}
System.out.println();
}
//添加学生信息方法
public void add(StuNode head,StuNode pre) {
//获取头结点
StuNode temp = head;
//遍历找到尾结点
while(true) {
if(temp.next == null)
break;
temp = temp.next;
}
temp.next = pre;
temp = pre;
temp.next = null;
System.out.println("(该学生信息已录入完毕!!) 是否继续录入? 0否 1是");
int flag = -1;
flag = scanf.nextInt();
//增强程序健壮性,排出其他乱码干扰程序进行(对于非法数字进行再输入)
if(flag == 1)
add(head,create());
}
public StuNode create() {
System.out.println("请输入所要添加的学生信息");
System.out.print("学号:");
int id = scanf.nextInt();
System.out.print("姓名:");
String name = scanf.next();
System.out.print("班级:");
String classid = scanf.next();
System.out.print("成绩:");
double socer = scanf.nextInt();
StuNode pre = new StuNode(id,name,classid,socer);
return pre;
}
//学生成绩修改方法(保证学号为主键)
public void modifi(StuNode head) {
StuNode temp = head;
//判空条件
if(temp.next == null) {
System.out.println("(还没有存储学生信息,链表为空,先试试功能2吧!!!)");
return;
}
System.out.print("请输入要修改学生的学号:");
int num = scanf.nextInt();
boolean flag = false;
//遍历寻找该学生信息
while(temp.next != null) {
temp = temp.next;
if(temp.id == num) {
flag = true;
break;
}
}
//若找到则修改并输出修改后结果
if(flag) {
System.out.print("请输入修改后的分数:");
temp.score = scanf.nextInt();
System.out.println("-----------mini学生管理系统学生信息表-----------");
System.out.println(" 学号 姓名 班级 总成绩 ");
System.out.println();
System.out.println(" "+temp.id+" "+temp.name+" "+temp.classid+" "+temp.score+" (修改成功!!)");
System.out.println();
}
else
System.out.println("很抱歉!!没有查找到该学生信息。");
}
//学生信息删除方法
public void delete(StuNode head) {
StuNode temp = head;
//判空条件
if(temp.next == null) {
System.out.println("(还没有存储学生信息,链表为空,先试试功能2吧!!!)");
return;
}
System.out.print("请输入要删除学生的学号:");
int num = scanf.nextInt();
boolean flag = false;
//遍历查找
while(temp.next != null) {
if(temp.next.id == num) {
flag = true;
break;
}
temp = temp.next;
}
//若找到则删除相关信息
if(flag) {
temp.next = temp.next.next;
System.out.println("(该学生信息已删除!!!)");
System.out.println();
}
else
System.out.println("很抱歉!!没有查找到该学生信息。");
}
//单个学生信息查找方法
public void find(StuNode head) {
StuNode temp = head;
//判空条件
if(temp.next == null) {
System.out.println("(还没有存储学生信息,链表为空,先试试功能2吧!!!)");
return;
}
System.out.print("请输入要查找学生的学号:");
int num = scanf.nextInt();
boolean flag = false;
//判空条件
while(temp != null) {
temp = temp.next;
if(temp.id == num) {
flag = true;
break;
}
}
if(flag) {
System.out.println("-----------mini学生管理系统学生信息表-----------");
System.out.println(" 学号 姓名 班级 总成绩 ");
System.out.println();
System.out.println(" "+temp.id+" "+temp.name+" "+temp.classid+" "+temp.score);
System.out.println();
}
else
System.out.println("很抱歉!!没有查找到该学生信息。");
}
}
创建对象,开始生成系统
public class Main {
public static void main(String[] args) {
//生成系统主界面类对象
Index index = new Index();
index.show_index();
}
}