用单链表实现学生信息管理系统

User

package user;

public abstract class User {
    protected String name; //使用这个系统的名字
    public User(String name){

        this.name=name;
    }
    public abstract int menu();

}

 

package user;

import java.util.Scanner;
//管理员身份代码
public class AdminUser extends User{

    public AdminUser(String name) {
        super(name);
    }

    public int menu(){
        System.out.println("*******管理员用户*******");
        System.out.println("1: 查找学生信息");
        System.out.println("2: 新增学生信息");
        System.out.println("3: 删除学生信息");
        System.out.println("4: 显示学生信息");
        System.out.println("0: 退出系统");
        System.out.println("**********************");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你的操作");
        return scanner.nextInt();
    }
}

 

package user;
import java.util.Scanner;
//用户身份代码
public class NormalUser extends User{
    public NormalUser(String name){
        super(name);

    }
    public int menu(){
        System.out.println("*******管理员用户*******");
        System.out.println("1: 查找学生信息");
        System.out.println("2: 显示学生信息");
        System.out.println("0: 退出系统");
        System.out.println("**********************");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你的操作");
        return scanner.nextInt();
    }
}

Student 

 

package Student;

import java.util.Scanner;

public class Students {

        public int sno;//学号
        public String Sname;//姓名
        public String sex;//性别
        public int age;//年龄
        public String phone;//手机号
        public String zy;//专业
        public String Sclass;//班级
        public Students next;//指向下一个结点

    public Students() {}
        public Students (int sno,String Sname,String sex,int age,String phone,String zy,String Sclass){

            this.sno = sno;
            this.Sname = Sname;
            this.sex = sex;
            this.age = age;
            this.phone = phone;
            this.zy = zy;
            this.Sclass = Sclass;
        }
        public void setinfo(){
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入学号: ");
            this.sno=scanner.nextInt();
            System.out.println("请输入姓名: ");
            this.Sname=scanner.next();
            System.out.println("请输入性别: ");
            this.sex=scanner.next();
            System.out.println("请输入年龄: ");
            this.age=scanner.nextInt();
            System.out.println("请输入手机号: ");
            this.phone=scanner.next();
            System.out.println("请输入专业: ");
            this.zy=scanner.next();
            System.out.println("请输入班级: ");
            this.Sclass=scanner.next();
        }

    @Override//重写toString方法
    public String toString() {
        return "学号: "+sno+" "+"姓名: "+Sname+" "+"性别: "+sex+" "+"年龄: "+age+" "+"手机号: "+phone+" "+"专业: "+zy+" "+"班级: "+Sclass;
    }
}

 operation 增删改查各种方法

package operation;

import Student.Students;

public class Operation {
    //初始化一个头指针,不用动,主要方便计算
    private static Students head=new Students(0,"","",0,"","","");
    //增加学生信息
    public static void add(Students stunode){
        Students cur=head;//头节点不能动,所以来一个辅助节点cur
        while (cur.next != null) {//循环条件是单链表走完,循环结束
            cur = cur.next;//如果当前结点不是尾巴节点,cur向后移动
        }
        cur.next=stunode;//出了循环 说明cur指向尾巴结点
    }
    //删除学生信息
    public static void del(int sno){
        Students cur=head;//同上
        while(cur!=null){
            if(cur.sno==sno){//如果找到这个学生,让cur的下一个节点指向cur的下下一个节点,把符合要求的节点隔过去就删除了
                cur.next=cur.next.next;
                return;
            }
            cur=cur.next;//如果没找到,cur就往后移动一位
        }
        System.out.println("抱歉!此学号不存在");
        return;
    }
    //查找学生信息
    public static void find(String key){
        Students cur=head;
        while(cur!=null){
            if(cur.Sname.equals(key)){
                System.out.println("找到此学生: ");
                System.out.println(cur.sno+" "+cur.Sname+" "+cur.sex+" "+cur.age+" "+cur.phone+" "+cur.zy+" "+cur.Sclass);
                return;
            }
            cur=cur.next;
        }
        System.out.println("抱歉,没有找到此学生信息");
    }
    //展示全部学生信息
    public static void Show(){
        if(head.next==null){
            System.out.println("此系统还没有录入学生信息!");
            return;
        }
        Students cur=head.next;
        while (cur != null) {
            System.out.println("以下是全部学生信息");
            System.out.print(cur);//前面写了toString方法
            System.out.println();
            cur = cur.next;
        }
    }
}

 

 //退出系统

package operation;

public class ExitOperation {
    public static void Exit(){
        System.out.println("退出系统!");
        System.exit(0);
    }
}

主函数 

 

import Student.Students;
import operation.*;
import user.AdminUser;
import user.NormalUser;
import user.User;

import java.util.Scanner;

public class Main {
    public static User login(){
        System.out.println("请输入你的姓名");
        Scanner scanner = new Scanner(System.in);
        String name=scanner.nextLine();
        System.out.println("请输入你的身份, 1:管理员 2:普通用户");
        int choice =scanner.nextInt();
        if(choice==1){
            return new AdminUser(name);
        }else {
            return new NormalUser(name);
        }
    }
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        User user=login();
        while(true){
        int choice=user.menu();
        switch (choice){
            case 1:
                System.out.println("请输入要查询的学生信息!");
                String name=scanner.next();
                Operation.find(name);
                break;
            case 2:
                System.out.println("请输入学生信息!");
                Students stu2=new Students();
                stu2.setinfo();
                Operation.add(stu2);
                break;
            case 3:
                System.out.println("请输入你要删除的学生信息!");
                int sno=scanner.nextInt();
                Operation.del(sno);
                break;
            case 4:
                Operation.Show();
                break;
            case 0:
                ExitOperation.Exit();
                break;
        }
    }
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值