JAVASE进阶(文末附微型学生信息管理系统代码)

1.分类思想

package->class

  1. domain->Xx类:标准类,封装键盘录入的基本信息
  2. dao->XxDao类:用于访问存储数据的数组集合,即和数据库直接交互类
  3. service->XxService类:用来进行业务的逻辑处理
  4. controller->XxController类:和用户打交道
  5. entry->XxxEntry类:程序的入口类,提供一个main方法

2.分包思想

  1. 不同类文件放到不同的包下,包即相当于文件夹
  2. 命名规则:字母都是小写,多级包-公司网站地址翻转

2.1 类与类之间的访问

  1. 同一个包下:不需要访问,直接导包
  2. 不同包下:import导包后访问或通过全类名(包名+类名)访问
    3. 应用场景:多个包下出现相同的类名称

3.使用IDEA

  1. 新建empty project,取名Xxx
  2. 在Xxx下new module,选择Java,选择Java版本,取名xxxx
  3. 如果没有iml文件,
  4. java class默认在src下,如果要在src下的package下,需要用“package+路径名”声明

4.学生老师信息管理系统实操

需求说明:(代码逻辑只会展示学生,老师是一样的)

  1. 添加学生:键盘录入学生信息(id、name、age、birthday),使用数组存放学生信息,要求学生的id不能重复

  2. 删除学生:键盘录入要删除学生的id值,将该学生从数组中移除,如果录入的id在数组中不存在,需要重新录入

  3. 修改学生:键盘录入学生的id值和修改后的学生信息,将数组中该学生的信息修改,如果录入的id在数组中不存在,则需要重新录入

  4. 查询学生信息:将数组中存储的所有学生的信息输出到控制台

  5. 添加老师:键盘录入老师信息(id、name、age、birthday),使用数组存放老师信息,要求老师的id不能重复

  6. 删除老师:键盘录入要删除老师的id值,将该老师从数组中移除,如果录入的id在数组中不存在,需要重新录入

  7. 修改老师:键盘录入老师的id值和修改后的老师信息,将数组中该老师的信息修改,如果录入的id在数组中不存在,则需要重新录入

  8. 查询老师信息:将数组中存储的所有老师的信息输出到控制台

代码
增删改查的逻辑后续再补哈哈哈哈哈哈我太拖啦

被Static修饰的成员会被该类所有对象共享
被Static修饰的成员会随着类的加载而加载,优先于对象而存在
被Static修饰的成员可以使用“类名+.”的方式被调用

  • break只能跳出当前switch语句,如果想要跳出指定循环语句,只需要在循环语句前加一个标号即可
lo:while(true){
	switch(){
		case 1:
			break lo;
	}
}

又或者是使用System,exit(0)语句,表示退出当前正在运行的JVM虚拟机

分包分析

  • 用户逻辑有关的代码应该放在Controller类中。

main

package com.bianting.Administration.entry;

import com.bianting.Administration.controller.StudentController;
import com.bianting.Administration.controller.TeacherController;

import java.util.Scanner;

/**
 * Created by 边婷
 * on 2024/1/7 17:41
*
* 添加学生:键盘录入学生信息(id、name、age、birthday),使用数组存放学生信息,要求学生的id不能重复
* 删除学生:键盘录入要删除学生的id值,将该学生从数组中移除,如果录入的id在数组中不存在,需要重新录入
* 修改学生:键盘录入学生的id值和修改后的学生信息,将数组中该学生的信息修改,如果录入的id在数组中不存在,则需要重新录入
* 查询学生信息:将数组中存储的所有学生的信息输出到控制台
* */
public class Administration {
    public static void main(String[] args) {


        // 1. 创建Scanner对象
        Scanner sc = new Scanner(System.in);
//        进入不同的端系统
        while (true) {
            //        搭建主菜单
            System.out.println("********************************************************");
            System.out.println("欢迎进入学生教师信息管理系统");
            System.out.println("********************************************************");
            System.out.println("请选择您要进入的端系统号:1-学生端;2-教师端;0-退出系统");
            System.out.println("********************************************************");
            System.out.println("请输入端系统号:");
            String systemPortNum = sc.next();
            switch (systemPortNum) {
                case "1":
                    StudentController studentController = new StudentController();
                    studentController.start();
                    break;
                case "2":
                    TeacherController teacherController = new TeacherController();
                    teacherController.start();
                    break;
                case "0":
                    //System.out.println("T0");
                    System.exit(0);
                    break;
                default:
                    System.out.println("您输入的信息有误,请重新输入");
                    break;
            }
        }
    }
}

Controller

package com.bianting.Administration.controller;

import com.bianting.Administration.domain.Student;
import com.bianting.Administration.service.StudentsService;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * Created by 边婷
 * on 2024/1/13 12:35
 */

/***
 * 方法中接受用户输入的信息
 * 将学生信息封装为学生对象传递给Service
 * 接受方法的boolean类型返回值,根据结果在控制台打印输入成功、输入失败
 */
public class StudentController {
    Scanner sc = new Scanner(System.in);
    StudentsService studentsService = new StudentsService();
    //    1.菜单
    public void start(){
       StudentLoop: while (true) {
            //        搭建主菜单
            System.out.println("********************************************************");
            System.out.println("欢迎进入学生端信息管理系统");
            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("********************************************************");
            System.out.println("请输入你想选择的操作:");
            String Snum = sc.next();

            switch (Snum) {
//                            增
                case "1":
//                    System.out.println("S1");
                    addStudent();
                    break;
//                            删
                case "2":
//                    System.out.println("S2");
                    deleteStudent();
                    break;
//                            改
                case "3":
//                    System.out.println("S3");
                    modifyStudent();
                    break;
//                            查
                case "4":
//                    System.out.println("S4");
                    findAllStudent();
                    break;
//                            退出
                case "0":
//                    System.out.println("S0");
//                                System.exit(0);
                    break StudentLoop;
                default:
                    System.out.println("您输入的信息有误,请重新输入");
                    break;
            }
        }

    }

//    2.添加学生
    public void addStudent() {
        while (true) {
//        输入学生的id、age、name、birthday
            System.out.println("请输入学生的id:");
            String id = sc.next();
//        判断id是否合法是否存在(在Service类里)

            int idNumStudent = studentsService.idNumStudent(id);
            if (idNumStudent==0) {
                System.out.println("请输入学生的名字:");
                String name = sc.next();
                System.out.println("请输入学生的年龄:");
                String age = sc.next();
                System.out.println("请输入学生的生日:");
                String birthday = sc.next();
//          封装为学生对象
                Student student = new Student();
                student.setAge(age);
                student.setBirthday(birthday);
                student.setId(id);
                student.setName(name);
//          传入Service
                studentsService.addStudent(student);
//         输出添加成功信息
                System.out.println("添加成功");
                break;
            }
            System.out.println("id重复,请重新输入:");
        }
    }

//    5.展示所有学生的信息
    public void findAllStudent(){
        System.out.println("学号\t\t姓名\t\t年龄\t\t生日");
        ArrayList<Student> stuArr = studentsService.findAllStudent();
        for (Student student : stuArr) {
            System.out.println(student.getId()+"\t"+student.getName()+"\t\t"+student.getAge()+"\t\t"+student.getBirthday());
        }

    }
//    3.删除学生
    public void deleteStudent() {
        while (true) {
//        拿到键盘输入的学生id
            System.out.println("请输入您想要删除的学生id:");
            String Sid = sc.next();
            int i = studentsService.idNumStudent(Sid);
            if(i == 0){
                System.out.println("目前还不存在此id的学生");
                break;
            }
            else {
                boolean result = studentsService.deleteStudent(Sid);
                if (result) {
                    System.out.println("删除成功!");
                    break;
                } else System.out.println("删除失败,请重新输入");
            }
        }
    }

//    4.修改学生信息(根据指定id修改学生其他信息)
    public void modifyStudent(){
        while (true){
            System.out.println("请输入你要修改的学生id:");
            String id = sc.next();
            if(studentsService.idNumStudent(id) == 0){
                System.out.println("不存在此id的学生");
                break;
            }
            if(studentsService.idNumStudent(id) ==1){
                boolean remove = studentsService.deleteStudent(id);
                if (remove){
                    addStudent();
                    break;
                }
            }
            System.out.println("输入id有误!");
        }
    }

}



domain

package com.bianting.Administration.domain;

import java.util.Date;

/**
 * Created by 边婷
 * on 2024/1/7 17:44
 * 键盘录入学生信息(id、name、age、birthday),使用数组存放学生信息,要求学生的id不能重复
 */

//JavaBean类
public class Student {
    private int id;//学生id
    private String name;
    private int age;
    private Date birthday;
//    有参构造和无参构造

    public Student(int id, String name, int age, Date birthday) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.birthday = birthday;
    }

    public Student() {
    }

    //    set、get
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }


}

service

package com.bianting.Administration.service;

/**
 * Created by 边婷
 * on 2024/1/9 1:21
 */

import com.bianting.Administration.dao.StudentDao;
import com.bianting.Administration.domain.Student;

import java.util.ArrayList;

/**
 * service类主要注重业务逻辑的处理
 */
public class StudentsService {

    StudentDao studentDao = new StudentDao();

    //    添加学生
    public boolean addStudent(Student student){
        return studentDao.addStudent(student);
    }
//    判断学生id是否合法
    public int idNumStudent(String id){
        return studentDao.idNumStudent(id);
    }
//    展示所有学生信息
    public ArrayList<Student> findAllStudent(){
        return studentDao.findAllStudent();
    }
//    通过学生id删除学生对象
    public boolean deleteStudent(String id){
        return studentDao.deleteStudent(id);
    }

}


dao

package com.bianting.Administration.dao;

/**
 * Created by 边婷
 * on 2024/1/13 14:33
 */

import com.bianting.Administration.domain.Student;

import java.util.ArrayList;

/**
 * 主要和数据库打交道
 * 即数据容器的创建、增删改查
 * 或是与数据库进行连接
 */
public class StudentDao {
    private  ArrayList<Student> stuArr = new ArrayList<>();
//    查找所有学生信息
    public ArrayList<Student> findAllStudent(){
        return stuArr;
    }

//    根据指定id查找学生
    public int idNumStudent(String id){
        int flag=0;//记录集合中含有此id的学生数量
        for (Student student : stuArr) {
            if(id.equals(student.getId())){
                flag++;
            }
        }
        return flag;
    }
//    根据指定id查找学生信息
//    在集合中添加学生信息
    public boolean addStudent(Student student) {
        return stuArr.add(student);
    }
//    根据指定id删除对应学生对象
    public boolean deleteStudent(String id) {
        boolean remove=false;
        for (Student student : stuArr) {
            if(student.getId().equals(id)) {
                remove = stuArr.remove(student);
                return remove;
            }
        }
        return remove;
    }
}


5.一些碎碎念

2024.01.13
代码都跑起来了,有些逻辑依旧很简单没有完全想到但是作为练手我想是够了
有些小地方是改过不能照搬,稍微的看一下就都明白了
一年不写代码的恶果就是四五个小时就只能写这么点,我真是废物呜呜呜
2024.01.15
基本都完结了,该有的闭合都有了应该,以上只有学生端,教师端使用cv大法即可,终于!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值