基于封装,继承,多态,接口,自定义异常,Map集合的增删改查,正则匹配完成最全学生信息管理

综合利用封装,继承,多态,接口,自定义异常,Map集合的增删改查,正则匹配完成最全学生信息管理

本文是利用前期JAVA基础所写的信息管理系统由面向过程向面向对象的转变。包括了封装,继承,多态,接口,自定义接口,自定义异常和Map集合的增删改查操作以及正则匹配,代码如下

定义的类和接口如下

1,学生信息类,给学生定义基本属性,提供get,set方法便于给其进行修改,重写toString方法在这里插入图片描述
2,接口主要给学员的信息,管理员的信息提供增删改查的方法方便管理员信息和学生业务类实现主要代码

在这里插入图片描述

3,学生业务类实现增删改查的接口

在这里插入图片描述

package com.feisi.test;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class StudentBus  implements StudentsImp {

    StudentInfo stu1=new StudentInfo("060601","王五","javaee",60);
    StudentInfo stu2=new StudentInfo("060602","赵六","javaee",70);
    StudentInfo stu3=new StudentInfo("060603","李四","javaee",80);
    StudentInfo stu4=new StudentInfo("060604","张三","javaee",90);
    StudentInfo stu5=new StudentInfo("060605","田七","javaee",88);
    StudentInfo stu6=new StudentInfo("060606","刘八","javaee",78);

    Map map=new HashMap<>();
    public StudentBus() {
        map.put(stu1.getStu_id(), stu1);
        map.put(stu2.getStu_id(), stu2);
        map.put(stu3.getStu_id(), stu3);
        map.put(stu4.getStu_id(), stu4);
        map.put(stu5.getStu_id(), stu5);
        map.put(stu6.getStu_id(), stu6);
    }
    StudentInfo stu=new StudentInfo();
    @Override
    public void add() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请添加学生的id");
        String id=sc.nextLine();
        stu.setStu_id(id);
        System.out.println("请输入学生姓名\n");
        String name=sc.nextLine();
        stu.setStu_name(name);
        System.out.println("请输入学生学科\n");
        String prefession=sc.nextLine();
        stu.setStu_profession(prefession);
        System.out.println("请添加学生成绩");
        int grade=sc.nextInt();
        stu.setStu_grade(grade);
        map.put(stu.getStu_id(),stu);
        System.out.println(map);
        System.out.println("添加成功");

    }
    @Override
    public void delate() {

        while (true) {
            System.out.println("请输入想要删除的学员id:");
            Scanner sc = new Scanner(System.in);
            String id = sc.nextLine();
            if (map.containsKey(id) == true) {
                System.out.println("正在删除,请稍后!");
                map.remove(id);
                System.out.println("删除成功!");
                break;
            } else {
                System.out.println("不好意思,查无此人!请重新输入");
                continue;
            }

        }

    }
    @Override
    public void update() {
        System.out.println("请输入想要修改的学员id:");
        Scanner sc = new Scanner(System.in);
        String id = sc.nextLine();
        System.out.println("请输入想要修改的学员姓名:");
        String name = sc.nextLine();
        if(map.containsKey(id)==true){
            System.out.println("请输入想要修改的学员的分数:");
            int grade = sc.nextInt();
            StudentInfo stu=new StudentInfo(id,name,"javaee",grade);
            map.replace(id,stu);
            System.out.println("修改成功");
            System.out.println(map);
        }else {
            System.out.println("不好意思,查无此人!");
        }


    }


    @Override
    public void select() {
        System.out.println("请输入想要查询的学员id:");
        Scanner sc = new Scanner(System.in);
        String id = sc.nextLine();
        if(map.containsKey(id)==true){
            System.out.println(map.get(id));
            }else {
                System.out.println("不好意思,查无此人!");
            }

    }



}

4,管理员信息类同学生业务类重写了增删改查的接口类

在这里插入图片描述

package com.feisi.test;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.regex.Pattern;

public class AdminInfo implements StudentsImp {
private String name;
private String psw;
Map map=new HashMap();
public AdminInfo(){
this.name=“曹盛”;
this.psw=“123456”;
map.put(this.name,this.psw);
}

public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getPsw() {
    return psw;
}

public void setPsw(String psw) {
    this.psw = psw;
}

@Override
public void add() {

        System.out.println("请输入姓名");
        Scanner sc = new Scanner(System.in);
        String name = sc.nextLine();
        while (true) {
            System.out.println("请输入密码由6位数组成");
            String psw = sc.nextLine();
            if (Pattern.compile("^[0-9]{6}$").matcher(psw).matches() == true) {
                map.put(name, psw);
                System.out.println(map);
                break;
              } else {
                System.out.println("请重新输入设置的密码");
                    continue;
                }
    }
}

@Override
public void update() {

}

@Override
public void delate() {
}

@Override
public void select() {
    System.out.println("请输入想要查询的管理员的姓名:");
    Scanner sc = new Scanner(System.in);
    String name = sc.nextLine();
    if(map.containsKey(name)==true){
        System.out.println(map.get(name));
    }else {
        System.out.println("不好意思,查无此人!");
    }
}

}

5,登录类继承了AdminInfo类给其初始化了一个管理员信息并且继承了map集合,在这里实现自定义异常

在这里插入图片描述

6,系统测试类多态的体现及操作流程

在这里插入图片描述

总结

1,对Map集合用迭代器的遍历取值不会,生成部分很僵硬,没有具体体现Map集合的优势,
2,对异常的处理掌握不够熟练应用起来比较困难。但总体来说能总体将其运用起来完成相应的需求。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值