java面向对象之学生信息管理系统

 更新时间:2020年03月27日 10:37:47   作者:喜欢夜雨吗  
这篇文章主要为大家详细介绍了java面向对象之学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

通过学习的一系列知识点综合的小案例,通过控制台来完成一系列的增删查改的操作。

准备工作

开发工具IDEA2019.1.4,jdk13

思路

一共三个类,一个接口

  • Student类:封装数据
  • StudentManager类:用于管理增删查改等方法体
  • StudentView类:用于主界面的视图
  • StudentInterface接口:用于编写抽象方法体,用于继承

存放学生数据用我们学过的ArrayList,由于类是一种引用数据类型,所以我们可以将泛型指代成Student

编写逻辑

业务层调用逻辑层,逻辑层调用数据层

知识点

面向对象,ArrayList,泛型,循环,迭代,switch

具体代码实现

Student.java

package com.zxy.bean;

public class Student {
 private int id;
 private String name;
 private int age;
 private String addr;

 public Student(){
 // 无参构造方法,防止出错
 }
 public Student(int id,String name,int age,String addr){
 this.id=id;
 this.name=name;
 this.age=age;
 this.addr=addr;
 }

 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 String getAddr() {
 return addr;
 }

 public void setAddr(String addr) {
 this.addr = addr;
 }

 @Override
 public String toString() {
 return "{ID: "+this.id+",name: "+this.name+",age: "+this.age+",addr: "+this.addr+"}";
 }
}

StudentManager.java

package com.zxy.bean;

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

public class StudentManager implements StudentInterface {
 @Override
 public void addStudent(ArrayList<Student> list) {
 Scanner sc=new Scanner(System.in);
 System.out.println("请输入学号:");
 int id=sc.nextInt();

 System.out.println("请输入姓名:");
 String name=sc.next();

 System.out.println("请输入年龄:");
 int age=sc.nextInt();

 System.out.println("请输入地址:");
 String addr=sc.next();

 list.add(new Student(id,name,age,addr));

 System.out.println("添加完成");
 }

 @Override
 public void delStudent(ArrayList<Student> list) {
 // 首先删除之前还是要判断一下有没有信息
 Scanner sc=new Scanner(System.in);

 if (list.size()==0){
  // 如果为0,则说明list中没有学生信息
  System.out.println("没有学生信息");
  return;
 }
 findStudent(list);
 System.out.println("输入要删除的学号:");
 // 输入要删除的学号
 int id=sc.nextInt();

 // 判断要删除的id是不是在list中
 for (int i=0;i<list.size();i++){
  if (list.get(i).getId()==id){
  Object string = list.remove(i);
  System.out.println("删除成功,你删除的是:"+string);
  }
 }
 }

 @Override
 public void findStudent(ArrayList<Student> list) {
 if (list.size()==0){
  System.out.println("没有学生信息");
 }
 // 查询全部学生信息
 for (Student student:list){
  System.out.println(student.toString());
  System.out.println("信息已展示");
 }
 return;
 }

 @Override
 public void changeStudent(ArrayList<Student> list) {
 // 修改学生信息
 Scanner sc=new Scanner(System.in);

 if (list.size()==0){
  System.out.println("当前没有学生信息");
  return;// 这样会直接终止当前语句,不会执行下面的语句了
 }
 System.out.println("输入要修改的学生的学号:");
 int id=sc.nextInt();

 // 判断id是否在list中,如果在,就修改
 boolean flag=false;// 如果boolean为false,那么说明没有在这个人
 for (int i=0;i<list.size();i++){
  if (list.get(i).getId()==id){
  // 如果存在,就输入新的学号、姓名、年龄、地址
  System.out.println("输入新的学号:");
  int idNew=sc.nextInt();

  System.out.println("输入新的姓名:");
  String nameNew=sc.next();

  System.out.println("输入新的年龄:");
  int ageNew=sc.nextInt();

  System.out.println("输入新的地址:");
  String addrNew=sc.next();

  list.set(i,new Student(idNew,nameNew,ageNew,addrNew));

  System.out.println("修改成功");
  return;
  }
 }
 if (flag==false){
  System.out.println("没有找到该学生呢,亲");
 }
 }

 @Override
 public void findOnlyStudent(ArrayList<Student> list) {
 Scanner sc=new Scanner(System.in);
 System.out.println("输入要查找的学生id:");
 int id=sc.nextInt();

 for (Student stu:list){
  if (stu.getId()==id){
  System.out.println(stu.toString());
  }else {
  System.out.println("你输入的id不存在");
  return;
  }
 }
 }
}

StudentView.java

package com.zxy.bean;

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

public class StudentView {


 public static void main(String[] args) {

 menu();
 }
 // 封装一个主菜单的方法
 public static void menu(){
 // 数组保存学生信息,类型使用Student类型
 ArrayList<Student> list=new ArrayList<>();
 StudentManager stu=new StudentManager();
 boolean flag=true;
 while (flag){
 System.out.println("***** 欢迎来到学生信息管理系统 *****");
 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.println("**********************************");
 System.out.println("请输入您要操作的序号: ");
 // 序号选择
 int choice=new Scanner(System.in).nextInt();
  switch (choice){
  case 1:
   // 查询学生
   stu.findStudent(list);
   break;
  case 2:
   // 查询单个学生
   stu.findOnlyStudent(list);
   break;
  case 3:
   // 添加学生
   stu.addStudent(list);
   break;
  case 4:
   // 修改学生
   stu.changeStudent(list);
   break;
  case 5:
   // 删除学生
   stu.delStudent(list);
   break;
  case 6:
   // 退出程序
   flag=false;
   System.out.println("程序退出成功,欢迎下次使用");
   break;
  }
 }
 }
}

StudentInterface.java

package com.zxy.bean;

import java.util.ArrayList;

public interface StudentInterface {
 void addStudent(ArrayList<Student> list);
 void delStudent(ArrayList<Student> list);
 void findStudent(ArrayList<Student> list);
 void changeStudent(ArrayList<Student> list);
 void findOnlyStudent(ArrayList<Student> list);
}

运行截图

关于管理系统的更多内容请点击《管理系统专题》进行学习

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。

相关文章

  • Springboot+Redis实现API接口限流的示例代码

    Springboot+Redis实现API接口限流的示例代码

    本文主要介绍了Springboot+Redis实现API接口限流的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • SpringBoot调用对方webService接口的几种方法示例

    SpringBoot调用对方webService接口的几种方法示例

    平常我们开发调用接口一般会用到几种数据格式,比如有restful的,这个是目前最流行的,也是最简单开发的,还有一种就是webservice数据格式,本文给大家介绍了几种SpringBoot调用对方webService接口的方法,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2023-11-11
  • Spring Boot Hazelcast Caching 使用和配置详解

    Spring Boot Hazelcast Caching 使用和配置详解

    这篇文章主要介绍了Spring Boot Hazelcast Caching 使用和配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Java实体映射工具MapStruct使用方法详解

    Java实体映射工具MapStruct使用方法详解

    MapStruct是用于代码中JavaBean对象之间的转换,例如DO转换为DTO,DTO转换为VO,或Entity转换为VO等场景,这篇文章主要给大家介绍了关于Java实体映射工具MapStruct使用的相关资料,需要的朋友可以参考下
    2021-11-11
  • 浅谈SpringMVC HandlerInterceptor诡异问题排查

    浅谈SpringMVC HandlerInterceptor诡异问题排查

    这篇文章主要介绍了浅谈SpringMVC HandlerInterceptor诡异问题排查,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • 说明Java的传递与回调机制的代码示例分享

    说明Java的传递与回调机制的代码示例分享

    这篇文章主要介绍了说明Java的传递与回调机制的代码示例分享,传递与回调机制是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • 解析springboot整合谷歌开源缓存框架Guava Cache原理

    解析springboot整合谷歌开源缓存框架Guava Cache原理

    本文主要为大家解析了springboot整合谷歌开源缓存框架Guava Cache的原理以及在实际开发过程中的使用,附含源码,有需要的朋友可以参考下
    2021-08-08
  • 浅谈javaSE 面向对象(Object类toString)

    浅谈javaSE 面向对象(Object类toString)

    下面小编就为大家带来一篇浅谈javaSE 面向对象(Object类toString)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Java中volatile关键字的作用与用法详解

    Java中volatile关键字的作用与用法详解

    volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。这篇文章主要介绍了Java中volatile关键字的作用与用法详解的相关资料,需要的朋友可以参考下
    2016-09-09
  • Java树形菜单的创建

    Java树形菜单的创建

    这篇文章主要为大家详细介绍了Java图形用户界面中树形菜单的创建树形菜单的创建,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-10-10

最新评论

?


http://www.vxiaotou.com