面向对象oop编程

类:模板 规范

         属性:姓名 年龄 职业 性别

         方法:思考 学习 吃饭

对象   类实例化之后 new

方法:动态方法    public

    静态方法   static

    构造方法/构造器  同名

    有参—无参

运行控制:

控制权限

     Public  完全公开

     Private  私有的(属性api)

     Default  同包/不同包子类

特点:

     封装:拆解思维 权限控制

     继承:超类/父类/基类  extends 子类/派生类

     多态:重载  方法明一样 参数不一样

Java

大项目

代码比较规范

分包分层

设计思想:

     M V C:

Model模型:数据处理相关

            View   视图层:用户相关

            Control 控制层:请求转发

Php

重点:

     “JavaBean”

      Java实体类(设置值,获取值)

          ALT+INSERT

  “Pojo”

       接口Interface     全部实现接口中方法

       抽象类abstract    只能被子类继承,并实现抽象方法

 

类:Student.java

package JavaBean;
//实现接口类
public class Student {
    private Integer id;
    private String xueHao;
    private String name;
    private Integer age;
    private String major;
    private String classZ;

    public Student() {
    }

    //引入项目所需要的数组
    public Student(Integer id, String xueHao, String name, Integer age, String major, String classZ) {
        //this(当前类的父类的对象):调用当前类中的方法(表示调用这个方法的对象)
        this.id = id;
        this.xueHao = xueHao;
        this.name = name;
        this.age = age;
        this.major = major;
        this.classZ = classZ;
    }

//设置值
    public Integer getId() {
        return id;
    }
//获取值
    public void setId(Integer id) {
        this.id = id;
    }

    public String getXueHao() {
        return xueHao;
    }

    public void setXueHao(String xueHao) {
        this.xueHao = xueHao;
    }

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getMajor() {
        return major;
    }

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

    public String getClassZ() {
        return classZ;
    }

    public void setClassZ(String classZ) {
        this.classZ = classZ;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", xueHao='" + xueHao + '\'' +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", major='" + major + '\'' +
                ", classZ='" + classZ + '\'' +
                '}';
    }
}

 

类:Studentrun.java

package UserView;

import HandleDataLogic.DoStudentInterfaceLogic;
import JavaBean.Student;

import java.util.Scanner;

public class StudentRun {
    public static void main(String[] args){
        System.out.println("------------欢迎进入学生管理系统-------------");

        //定义操作的数据类型
        Student[] students =new Student[200];
        int stuNum=0;
        //调用操作的方法 实现对数组的增删改查
        DoStudentInterfaceLogic doStudentInterfaceLogic = new DoStudentInterfaceLogic() {
            @Override
            public Student addStudent() {
                return null;
            }
        };


        while(true)
        {
            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.print("请输入");
            Scanner scanner = new Scanner(System.in);
            int anInt = scanner.nextInt();
            switch(anInt)
            {
                case 1:
                    //判断输入的学号是否相同
                    Student data=doStudentInterfaceLogic.addStudent(students,stuNum);
                    if(data==null){
                        System.out.println("学生已经找到了!请重新输入!");
                }else{
                        students[stuNum++]=data;
                    }

                   // System.out.println("student[0].toString() = "+students[0].toString());
                    break;
                case 2:
                    //查询所有学生的信息
                    System.out.println("-------------查询的学生信息如下---------------");
                    doStudentInterfaceLogic.findAllStudent(students,stuNum);break;
                case 3:
                    System.out.println("请输入查找同学的学号");
                    //通过学号查询学生信息,判断学号是否存在并输出结果
                    String findXueHao = scanner.next();
                    Student studentOne=doStudentInterfaceLogic.findOneStudent(students,stuNum,findXueHao);
                    if(studentOne!=null){
                        System.out.println("studentOne.toString() ="+studentOne.toString());
                    }else{
                        System.out.println("查无此人");
                    }
                    break;

                case 4:
                    //通过学号进行学生信息更改 判断该学号相应学生是否存在
                    System.out.println("请输入要更新的学号");
                    String xuehaoUp = scanner.next();
                    //定义的数组  需要查询的学生信息,提供数组、数量查找的数组
                    //null如果=则更新的用户不存在,不=则更新成功
                    if(doStudentInterfaceLogic.updateStudent(students,stuNum,xuehaoUp)!=null)
                {
                    System.out.println("恭喜!更新成功!");
                }else{
                        System.out.println("更新用户不存在!");
                    }
                    break;

                case 5:
                    //通过输入要删除的学号实现对该学生信息的删除
                    System.out.println("请输入要删除的学号");
                    String xuehao = scanner.next();
                    if(doStudentInterfaceLogic.delStudent(students,stuNum,xuehao)){
                        System.out.println("您已经成功删除了学号是:"+xuehao+"的同学!");
                        stuNum--;
                    }else{
                        System.out.println("您要删除的同学不存在!");
                    }
                    break;
                case 6:
                    System.exit(0);
            }
        }
    }
}



接口:StudentInterface.java
package HandleDataLogic;

import JavaBean.Student;
/*
* 设计实现的接口,给整个项目指定实现的逻辑规范
* */
public interface StudentInterface {
    //1.实现学生信息的添加
    Student addStudent();

    //添加学生信息
    Student addStudent(Student[] stuAll, int count);

    //2.实现查找所有学生信息
    void findAllStudent(Student stuAll[], int count);
    //3.实现通过学号查找对应的学生信息
    Student findOneStudent(Student stuArr[],int count,String name);
    //4.实现通过学号修改学上的信息
    Student updateStudent(Student stuArr[],int count,String xuehao);
    //5.实现通过学号删除学生信息
    boolean delStudent(Student stuAll[],int count,String xuehao);

}



类:DoStudentInterfaceLogic.java

 

package HandleDataLogic;

import JavaBean.Student;

import java.util.Scanner;

//快捷键自动生成是实现接口 Alt+Ins
public abstract class DoStudentInterfaceLogic implements StudentInterface {
     static int id = 0;

    @Override
    //添加学生信息
    public Student addStudent(Student[] stuAll, int count) {
        /*Student student创建一个对象的引用
        new 在内存中开辟空间,初始化对象
        Student()构造器,给对象的属性赋初值*/
        Student student = new Student();
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学生姓名");
        //作用是将用户输入的字符串赋值给一个名为 “name” 的变量。
        student.setName(scanner.next());

        //输入语句从控制台中读取用户输入的学生学号,将其赋值给student的对象的xueHao属性。
        System.out.println("请输入学生学号");
        // next()一定要读取到有效字符后才能结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符
        String xh = scanner.next();
        //boolean flag=false;//判断学号的标志位
        //判断学号是否相同
        for (int i =0;i<count;i++){
            /*判断stuAll中是否存在输入的XueHao
            equals比较两个对象的内存地址
             */
            if(stuAll[i].getXueHao().equals(xh))
            {
                return null;
            }
        }
        student.setXueHao(xh);

        /*判断年龄是否正确输入
        try...catch跳过异常继续处理循环
         */
        while (true){
            try {
                System.out.println("请输入学生年龄");
                Scanner lnScanner= new Scanner(System.in);
                student.setAge(lnScanner.nextInt());
                break;
            }catch (Exception e){
                System.out.println();
            }
        }

        System.out.println("请输入学生专业");
        student.setMajor(scanner.next());

        System.out.println("请输入学生班级");
        student.setClassZ(scanner.next());

        student.setId(++DoStudentInterfaceLogic.id);
        return student;
    }

    @Override
    //查询所有学生信息
    //stuAll是一个存储学生信息的数组
    public void findAllStudent(Student[] stuAll, int count) {
        Student student = new Student();
        /*for循环代码,用于stuArr数组
        count是学生数组的长度 stuAll是学生数组*/
        for (int i = 0; i < count; i++) {
            System.out.println("stuArr[i]toString()=" + stuAll[i].toString());
        }
    }

    @Override
    //通过学号查询学生信息
    public Student findOneStudent(Student[] stuArr, int count, String XueHao) {
        for (int i = 0; i < count; i++) {
            if (stuArr[i].getXueHao().equals(XueHao)) {
                return stuArr[i];
            }
        }
        return null;
    }

    @Override
    //通过学号修改学生信息
    public Student updateStudent(Student[] stuArr, int count,String XueHao) {
       /*
       定义一个布尔类型的变量flag,并将其初始化为false
       通过判断flag的值来执行不同的操作
       成立则将flag设置为true,否则保持为false
        */
        boolean flag=false;
        //index    所查询的学号的位置是否存在数值
        int index=0;
        Scanner scanner = new Scanner(System.in);
        for (int i=0;i<count;i++) {
            if (stuArr[i].getXueHao().equals(XueHao)) {
                flag = true;
                index = i;
                break;
            }
        }
            if(flag)
            {
                System.out.println("原来的学号:"+stuArr[index].getXueHao());
                System.out.println("请输入要更新的学号");
                //1.获取输入内容
                String xh = scanner.nextLine();
                //2.判断输入内容是否为空  Java中的if-else语句
                if(xh.equals(""))
                {
                    System.out.println();
                }else{
                    stuArr[index].setXueHao(xh);
                }



                System.out.println("原来的姓名:"+stuArr[index].getName());
                System.out.println("请输入要更新的姓名");
                String xm = scanner.nextLine();
                if(xm.equals(""))
                {
                    System.out.println();
                }else{
                    stuArr[index].setName(xm);
                }


                System.out.println("原来的年龄:"+stuArr[index].getAge());
                System.out.println("请输入要更新的年龄");
                String nl = scanner.nextLine();
                if(nl.equals(""))
                {
                    System.out.println();
                }else{
                    //年龄数值转型  Integer规定的整形
                    stuArr[index].setAge(Integer.parseInt(nl));
                }


                System.out.println("原来的专业:"+stuArr[index].getMajor());
                System.out.println("请输入要更新的专业");
                String zy = scanner.nextLine();
                if(zy.equals(""))
                {
                    System.out.println();
                }else{
                    stuArr[index].setMajor(zy);
                }



                System.out.println("原来的班级:"+stuArr[index].getClassZ());
                System.out.println("请输入要更新的班级");
                String bj = scanner.nextLine();
                if(bj.equals(""))
                {
                    System.out.println();

                }else{
                    stuArr[index].setClassZ(bj);
                }


                return stuArr[index];
            }else{
                System.out.println("您更新的数据不存在!");
                return null;
            }
        }

    @Override
    //删除学生信息
    public boolean delStudent(Student[] stuArr, int count, String xueHao) {
        boolean flag = false;
        /*删除元素的索引
        index  如果找到相应的数值则flag变成ture执行下一步操作,
                没找到则是数值false输出结果
         */
        int index = 0;
        for (int i = 0; i < count; i++){
            if (stuArr[i].getXueHao().equals(xueHao)) {
                index = i;
                flag = true;
                break;

            }
    }

        if (flag) {
            //进行删除操作
            for (int j = index; j < count - 1; j++) {
                stuArr[j] = stuArr[j + 1];
            }
            return true;
        } else {
            return false;
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值