单链表完成简易版本教师信息管理系统

package SingleLInkedList;

public class test {
    public static void main(String[] args) {

        Teacher h1=new Teacher( 1,"教师1","男","职称普通教师","博士","职务","轻大","软件");
        Teacher h2=new Teacher( 2,"教师1","男","职称普通教师","博士","职务","轻大","软件");
        Teacher h3=new Teacher( 3,"教师1","男","职称普通教师","博士","职务","轻大","软件");
        Teacher h4=new Teacher( 4,"教师1","男","职称普通教师","博士","职务","轻大","软件");
        Teacher h5=new Teacher( 5,"教师1","男","职称普通教师","博士","职务","轻大","软件");

        SingleLinkedList singleLinkedList = new SingleLinkedList();

        singleLinkedList.addOrderNo(h4);
        singleLinkedList.addOrderNo(h1);
        singleLinkedList.addOrderNo(h2);
        singleLinkedList.addOrderNo(h5);
        singleLinkedList.addOrderNo(h3);
      singleLinkedList.listAll();
        System.out.println("在进行任何操作之前的链表排序");

singleLinkedList.select(2);
        System.out.println("添加教工信息");
        Teacher h7=new Teacher( 6,"教师1","男","职称普通教师","博士","职务","轻大","软件");
singleLinkedList.addOrderNo(h7);
        singleLinkedList.listAll();
        System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`");

        singleLinkedList.delete(1);

        singleLinkedList.listAll();
    }
}

// 定义SingleLinkedList 管理教师信息
class SingleLinkedList {
    private Teacher head = new Teacher(0, "", "", "", "", "", "", "");

    public Teacher getHead() {
        return head;
    }

    // 初始化一个尾节点,指向最后一个元素,默认等于head
    private Teacher temp = head;

    //   不考虑教师编号大小的条件下将教师信息插入在链表的最后面。
    public void add(Teacher teacher) {

    }

    // 第二种方式在添加教师时, 根据排名将教师插入到指定位置(如果有这个排名,则添加失败,并给出提示)
    public void addOrderNo(Teacher teacher) {
        Teacher temp = head;
        boolean flag = false;
        while (true) {
            if (temp.getNext() == null) {
//                该链表为空
                break;
            }
            if (temp.getNext().getNo() > teacher.getNo()) {
                break;
            } else if (temp.getNext().getNo() == teacher.getNo()) {
                flag = true; // 说明编号存在
                break;
            }
            temp = temp.getNext(); // 后移,遍历当前列表
        }
        if (flag) { // 不能添加,说明编号存在
            System.out.printf("准备插入的教师编号%d已经存在了\n", teacher.getNo());
        } else {
            // 插入到链表中
            teacher.setNext(temp.getNext());
            temp.setNext(teacher);

        }
    }

    //   输出链表中所有信息
    public void listAll () {
        Teacher temp = head.getNext();
        if (temp == null) {
            System.out.println("该链表为空 无法查询");
            return;
        }
        while (temp != null) {
            System.out.println(temp);
            temp = temp.getNext();
        }
    }

//  查询链表信息
      public  void  select(int no){
          Teacher temp = head;
          boolean flag=false;
          if (temp.getNext() == null) {
              System.out.println("该链表为空 无法查询指定信息");
              return;
          }
       while(true){
           if (temp.getNext().getNo()==no){
               System.out.println(temp);
//               找到要查询的对象
               break;
           }
           temp=temp.getNext();
       }
      }


    //删除链表中指定教师信息(根据教师工号进行匹配)
    public void delete(int no) {
        Teacher temp = head;
        boolean flag = false; // 标志是否找到待删除节点
        while (true) {
            if (temp.getNext() == null) { // 已经到节点的最后
                break;
            }
            if (temp.getNext().getNo() == no) {
                // 找到待删除节点的前一个节点temp
                flag = true;
                break;
            }
            temp = temp.getNext();
        }
        // 判断flag
        if (flag) { // 找到
            // 可以删除
            temp.setNext(temp.getNext().getNext());
        } else {
            System.out.printf("要删除的 %d 教师信息不存在\n", no);
        }
    }
}



class Teacher {
    private int no;
    private String name;
    private String sex;
    private String title;
    private String degree;
    private String position;
    private String school;
    private String major;
    private Teacher next;


    public Teacher(int no, String name, String sex, String title, String degree, String position, String school, String major) {
        this.no = no;
        this.name = name;
        this.sex = sex;
        this.title = title;
        this.degree = degree;
        this.position = position;
        this.school = school;
        this.major = major;
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "no=" + no +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", title='" + title + '\'' +
                ", degree='" + degree + '\'' +
                ", position='" + position + '\'' +
                ", school='" + school + '\'' +
                ", major='" + major + '\'' +
                '}';
    }

    public int getNo() {
        return no;
    }

    public void setNo(int no) {
        this.no = no;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDegree() {
        return degree;
    }

    public void setDegree(String degree) {
        this.degree = degree;
    }

    public String getPosition() {
        return position;
    }

    public void setPosition(String position) {
        this.position = position;
    }

    public String getSchool() {
        return school;
    }

    public void setSchool(String school) {
        this.school = school;
    }

    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    public Teacher getNext() {
        return next;
    }

    public void setNext(Teacher next) {
        this.next = next;
    }
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
学生包含以下信息项:学号、姓名、学院、班级、高数成绩、英语成绩、C语言成绩、总分、平均分。 系统的主要功能包括: 1. 创建学生成绩信息文件,根据提示输入学生的各项信息,计算出总分和平均分,然后按学号对学生信息进行排序,并将排序后的学生成绩信息存储到一个二进制文件中。 2. 增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息,要求:增加后的学生信息仍按学号排序,并继续保存至原文件。 3. 删除学生信息,提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。 4. 修改学生信息,提示用户输入要进行修改操作的学号,如果在文件中有该息存在,则将提示用户输入该学号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。 5. 按不同条件对学生信息进行查询操作,输出满足条件的学生信息。 (1) 按学号查询,输入一个学号,输出对应的学生信息。 (2) 按姓名查询,包括精确查询(输入全名),模糊查询(输入姓)。 (3) 按学院查询,输入学院名称,输出该学院的全部学生的信息。 (4) 按班级查询,输入班级名称,输出该班级的全部学生的信息。 6. 按不同条件对学生成绩进行统计工作。 (1) 按总分对学生信息进行排序(由高到低),输出排序后的信息,并将排序后的学生信息存放到一个新的二进制文件中。 (2) 按平均分统计各个分数段的学生人数(不及格,60-69,70-79,80-89,90-100)。 (3) 分别找出3门课程成绩最高的学生,并输出他们的信息。 (4) 分别统计出3门课程的不及格率,并输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值