项目:集合实现学生信息管理系统

存储自定义学生类

一、需求

添加学生:通过键盘录入学生信息,添加到集合中
删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除
修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
查看学生:将集合中的学生对象信息进行展示
退出系统:结束程序

二、实现步骤

1. 定义学生类,包含以下成员变量学生类: Student成员变量:学号:sid姓名:name年龄:age生日:birthday构造方法:无参构造带四个参数的构造成员方法:每个成员变量对应给出get/set方法
2. 学生管理系统主界面的搭建步骤2.1 用输出语句完成主界面的编写2.2 用Scanner实现键盘录入数据2.3 用switch语句完成操作的选择2.4 用循环完成再次回到主界面
3. 学生管理系统的添加学生功能实现步骤3.1 用键盘录入选择添加学生3.2 定义一个方法,用于添加学生显示提示信息,提示要输入何种信息键盘录入学生对象所需要的数据创建学生对象,把键盘录入的数据赋值给学生对象的成员变量将学生对象添加到集合中(保存)给出添加成功提示3.3 调用方法
4. 学生管理系统的查看学生功能实现步骤4.1 用键盘录入选择查看所有学生信息4.2 定义一个方法,用于查看学生信息显示表头信息将集合中数据取出按照对应格式显示学生信息,年龄显示补充“岁”4.3 调用方法
5. 学生管理系统的删除学生功能实现步骤5.1 用键盘录入选择删除学生信息5.2 定义一个方法,用于删除学生信息显示提示信息键盘录入要删除的学生学号调用getIndex方法,查找该学号在集合的索引如果索引为-1,提示信息不存在如果索引不是-1,调用remove方法删除并提示删除成功5.3 调用方法
6. 学生管理系统的修改学生功能实现步骤6.1 用键盘录入选择修改学生信息6.2 定义一个方法,用于修改学生信息显示提示信息键盘录入要修改的学生学号调用getIndex方法,查找该学号在集合的索引如果索引为-1,提示信息不存在如果索引不是-1,键盘录入要修改的学生信息集合修改对应的学生信息给出修改成功提示6.3 调用方法
7. 退出系统使用System.exit(0);退出JVM

三、从代码分析

三一、学生实现类

1.包含四个成员变量:学号、姓名、年龄、生日
2.构造方法:无参构造、带四个成员变量的有参构造
3.每个成员都给出get/set方法
package com.lyz.stusys;public class Student {private String sid;private String name;private int age;private String birthday;public Student() {}public Student(String sid, String name, int age, String birthday) {this.sid = sid;this.name = name;this.age = age;this.birthday = birthday;}public String getSid() {return sid;}public void setSid(String sid) {this.sid = sid;}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 getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}@Overridepublic String toString() {return "Student{" +"sid='" + sid + '\'' +", name='" + name + '\'' +", age='" + age + "岁\'" +", birthday='" + birthday + '\'' +'}';}
}

三二、main下

2.1 main

    /*** @author lyzLoser* @version 1.0* @since 集合实现学生信息管理系统* @param args*/public static void main(String[] args) {List<Student> list = new ArrayList<>();menuStu(list);}

2.2 主体方法:menuStu

    /*** @since 菜单:定义标识flag,do-while循环接收chooseN方法的选项值。*         当出现输入次数过多错误时、或选择退出系统选项时,改变标识退出循环* @param list*/public static void menuStu(List<Student> list) {//标识状态boolean flag = false;do {faceStu();int n = chooseN();switch (n) {case 1:inPutStu(list);System.out.println("*********************************");System.out.println("返回菜单");System.out.println("*********************************");break;case 2:deleteStu(list);System.out.println("*********************************");System.out.println("返回菜单");System.out.println("*********************************");break;case 3:changeStu(list);System.out.println("*********************************");System.out.println("返回菜单");System.out.println("*********************************");break;case 4:findStu(list);System.out.println("*********************************");System.out.println("返回菜单");System.out.println("*********************************");break;case 5:showAllStu(list);System.out.println("*********************************");System.out.println("返回菜单");System.out.println("*********************************");break;case 6:outStu();flag = true;break;default:if (n == -1) {System.out.println("有误功能选项错误次数过多,自动退出系统,请重启。");flag = true;}break;}} while (!flag);}

2.2.1 界面面板:faceStu。

    /*** @since 面板:通过输出语句打印面板*/public static void faceStu() {System.out.println("===========================================");System.out.println("\t\t1.增");System.out.println("\t\t2.删");System.out.println("\t\t3.改");System.out.println("\t\t4.查");System.out.println("\t\t5.查看现有数据");System.out.println("\t\t6.退出");System.out.println("\t请输入数字1~5选择功能");System.out.println("===========================================");}

2.2.2 菜单功能选项:chooseN

    /*** @return n:选择功能编号* @since 菜单功能选项:输入错误跳出当前循环,正确退出循环同时返回n,* 输入错误到达三次返回n=-1*/public static int chooseN() {Scanner input = new Scanner(System.in);int n = -1;System.out.println("输入功能选项:(1~6),有三次错误的机会");for (int i = 0; i < 5; i++) {if (i == 4) {//                System.out.println("错误次数过多。退出系统");return  -1;}if (input.hasNextInt()) {n = input.nextInt();if (n > 0 && n < 7) {System.out.println("输入正确");break;} else {if (i==3){System.out.println("你没有机会了。");continue;}else {System.out.println("内容输入错误!");System.out.println("还有" + (3 - i) + "次机会");continue;}}} else {System.out.println("输入类型错误");return -1;}}return n;}

2.3 增:inPutStu

    /*** @since 增:直接调用showStu方法,进行判空:非空则录入,空则结束方法* @param list*/public static void inPutStu(List<Student> list) {Student stu=showStu(list);if (stu==null){return;}else {//将stu对象插入list集合中list.add(stu);System.out.println("添加成功");}}

2.3.1 输入学生类方法:showStu

    /*** @since 输入学生类方法:实例化学生类,边接收键盘选项边set学术类,出错是直接返回null* @return Student*/
public static Student showStu(List<Student> list){Student stu = new Student();Scanner input = new Scanner(System.in);System.out.println("请输入学生学号:");if (input.hasNext()) {String sId = input.next();//查询集合内是否已存在同学号信息if (list.isEmpty()){//将输入的录入stu中stu.setSid(sId);}else {//遍历集合for (int i=0;i<list.size();i++){Student stuTemp=list.get(i);//集合内已存在对应学号信息if (stuTemp.getSid().equals(sId)){System.out.println("已存在对应学号信息。默认内容输入错误。");return null;}else {//将输入的录入stu中stu.setSid(sId);}}}} else {System.out.println("内容输入错误!");return null;}System.out.println("请输入学生姓名:");if (input.hasNext()) {String name = input.next();stu.setName(name);} else {System.out.println("内容输入错误!");return null;}System.out.println("请输入学生年龄:");if (input.hasNextInt()) {int age = input.nextInt();stu.setAge(age);} else {System.out.println("内容输入错误!");return null;}System.out.println("请输入学生生日:");if (input.hasNext()) {String bir = input.next();stu.setBirthday(bir);} else {System.out.println("内容输入错误!");return null;}return stu;}

2.4 删:deleteStu

    /*** @since 删:判空,判输入,遍历查询,删除对应* @param list*/public static void deleteStu(List<Student> list) {if (list.isEmpty()) {System.out.println("数据为空,请先添加学生信息。");} else {Scanner input = new Scanner(System.in);System.out.println("输入删除学生的学号");if (input.hasNext()) {String index = input.nextLine();//标识记录状态boolean flag = false;for (int i = 0; i < list.size(); i++) {Student temp = list.get(i);if (temp.getSid().equals(index)) {list.remove(i);System.out.println("删除" + temp + "学生信息成功");flag = true;}}if (!flag) {System.out.println("数据中查无此人。");}}}}

2.5 改:changeStu

    /*** @since 改:判空,判输入,遍历修改对象,调用输入学术类方法,修改* @param list*/public static void changeStu(List<Student> list) {if (list.isEmpty()) {System.out.println("数据为空,请先添加学生信息。");} else {Scanner input = new Scanner(System.in);System.out.println("输入修改学生的学号");if (input.hasNext()) {String index = input.nextLine();//标识记录状态boolean flag = false;for (int i = 0; i < list.size(); i++) {Student temp = list.get(i);if (temp.getSid().equals(index)) {Student stu=showStu(list);if (stu==null){return;}else {list.set(i, stu);}System.out.println("修改学生信息成功");flag = true;}}if (!flag) {System.out.println("数据中查无此人。");}}}}

2.5.1 输入学生类方法:showStu(同2.3.1)

    /*** @since 输入学生类信息:实例化学生类,边接收键盘选项边set学术类,出错是直接返回null* @return Student*/public static Student showStu(List<Student> list){Student stu = new Student();Scanner input = new Scanner(System.in);System.out.println("请输入学生学号:");if (input.hasNext()) {String sId = input.next();//查询集合内是否已存在同学号信息if (list.isEmpty()){//将输入的录入stu中stu.setSid(sId);}else {//遍历集合for (int i=0;i<list.size();i++){Student stuTemp=list.get(i);//集合内已存在对应学号信息if (stuTemp.getSid().equals(sId)){System.out.println("已存在对应学号信息。默认内容输入错误。");return null;}else {//将输入的录入stu中stu.setSid(sId);}}}} else {System.out.println("内容输入错误!");return null;}System.out.println("请输入学生姓名:");if (input.hasNext()) {String name = input.next();stu.setName(name);} else {System.out.println("内容输入错误!");return null;}System.out.println("请输入学生年龄:");if (input.hasNextInt()) {int age = input.nextInt();stu.setAge(age);} else {System.out.println("内容输入错误!");return null;}System.out.println("请输入学生生日:");if (input.hasNext()) {String bir = input.next();stu.setBirthday(bir);} else {System.out.println("内容输入错误!");return null;}return stu;}

2.6 查:findStu

    /*** @since 查:判空,判输入,遍历查询对象,输出查找结果* @param list*/public static void findStu(List<Student> list) {if (list.isEmpty()) {System.out.println("数据为空,请先添加学生信息。");} else {Scanner input = new Scanner(System.in);System.out.println("输入查询学生的学号");if (input.hasNext()) {String index = input.nextLine();//标识记录状态boolean flag = false;for (int i = 0; i < list.size(); i++) {Student temp = list.get(i);if (temp.getSid().equals(index)) {System.out.println(list.get(i));System.out.println("查询学生信息成功");flag = true;}}if (!flag) {System.out.println("数据中查无此人。");}}}}

2.7 遍历现存数据

    /*** @since 遍历存储数据:判空,增强for遍历* @param list*/public static void showAllStu(List<Student> list) {if (list.isEmpty()) {System.out.println("数据为空,请先添加学生信息。");} else {for (Object obj : list) {System.out.println(obj);System.out.println("以上为现存储学生信息。");}}}

2.8 退出:outStu

    /*** @since 调用System.exit(0);退出 */public static void outStu() {System.out.println("退出系统。");System.exit(0);}

四、看完都不点赞?

public class Test03 {public static void main(String[] args) throws IOException {System.out.println("谢谢");}
}

五、懒人大全copy

package com.lyz.stusys;import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class stuSystem {/*** @author lyzLoser* @version 1.0* @since 集合实现学生信息管理系统* @param args*/public static void main(String[] args) {List<Student> list = new ArrayList<>();menuStu(list);}/*** @since 输入学生类信息:实例化学生类,边接收键盘选项边set学术类,出错是直接返回null* @return Student*/public static Student showStu(List<Student> list){Student stu = new Student();Scanner input = new Scanner(System.in);System.out.println("请输入学生学号:");if (input.hasNext()) {String sId = input.next();//查询集合内是否已存在同学号信息if (list.isEmpty()){//将输入的录入stu中stu.setSid(sId);}else {//遍历集合for (int i=0;i<list.size();i++){Student stuTemp=list.get(i);//集合内已存在对应学号信息if (stuTemp.getSid().equals(sId)){System.out.println("已存在对应学号信息。默认内容输入错误。");return null;}else {//将输入的录入stu中stu.setSid(sId);}}}} else {System.out.println("内容输入错误!");return null;}System.out.println("请输入学生姓名:");if (input.hasNext()) {String name = input.next();stu.setName(name);} else {System.out.println("内容输入错误!");return null;}System.out.println("请输入学生年龄:");if (input.hasNextInt()) {int age = input.nextInt();stu.setAge(age);} else {System.out.println("内容输入错误!");return null;}System.out.println("请输入学生生日:");if (input.hasNext()) {String bir = input.next();stu.setBirthday(bir);} else {System.out.println("内容输入错误!");return null;}return stu;}/*** @since 增:直接调用showStu方法,进行判空:非空则录入,空则结束方法* @param list*/public static void inPutStu(List<Student> list) {Student stu=showStu(list);if (stu==null){return;}else {//将stu对象插入list集合中list.add(stu);System.out.println("添加成功");}}/*** @since 删:判空,判输入,遍历查询,删除对应* @param list*/public static void deleteStu(List<Student> list) {if (list.isEmpty()) {System.out.println("数据为空,请先添加学生信息。");} else {Scanner input = new Scanner(System.in);System.out.println("输入删除学生的学号");if (input.hasNext()) {String index = input.nextLine();//标识记录状态boolean flag = false;for (int i = 0; i < list.size(); i++) {Student temp = list.get(i);if (temp.getSid().equals(index)) {list.remove(i);System.out.println("删除" + temp + "学生信息成功");flag = true;}}if (!flag) {System.out.println("数据中查无此人。");}}}}/*** @since 改:判空,判输入,遍历修改对象,调用输入学术类方法,修改* @param list*/public static void changeStu(List<Student> list) {if (list.isEmpty()) {System.out.println("数据为空,请先添加学生信息。");} else {Scanner input = new Scanner(System.in);System.out.println("输入修改学生的学号");if (input.hasNext()) {String index = input.nextLine();//标识记录状态boolean flag = false;for (int i = 0; i < list.size(); i++) {Student temp = list.get(i);if (temp.getSid().equals(index)) {Student stu=showStu(list);if (stu==null){return;}else {list.set(i, stu);}System.out.println("修改学生信息成功");flag = true;}}if (!flag) {System.out.println("数据中查无此人。");}}}}/*** @since 查:判空,判输入,遍历查询对象,输出查找结果* @param list*/public static void findStu(List<Student> list) {if (list.isEmpty()) {System.out.println("数据为空,请先添加学生信息。");} else {Scanner input = new Scanner(System.in);System.out.println("输入查询学生的学号");if (input.hasNext()) {String index = input.nextLine();//标识记录状态boolean flag = false;for (int i = 0; i < list.size(); i++) {Student temp = list.get(i);if (temp.getSid().equals(index)) {System.out.println(list.get(i));System.out.println("查询学生信息成功");flag = true;}}if (!flag) {System.out.println("数据中查无此人。");}}}}/*** @since 遍历存储数据:判空,增强for遍历* @param list*/public static void showAllStu(List<Student> list) {if (list.isEmpty()) {System.out.println("数据为空,请先添加学生信息。");} else {for (Object obj : list) {System.out.println(obj);System.out.println("以上为现存储学生信息。");}}}/*** @since 调用System.exit(0);退出*/public static void outStu() {System.out.println("退出系统。");System.exit(0);}/*** @since 面板:通过输出语句打印面板*/public static void faceStu() {System.out.println("===========================================");System.out.println("\t\t1.增");System.out.println("\t\t2.删");System.out.println("\t\t3.改");System.out.println("\t\t4.查");System.out.println("\t\t5.查看现有数据");System.out.println("\t\t6.退出");System.out.println("\t请输入数字1~5选择功能");System.out.println("===========================================");}/*** @since 菜单功能选项:输入错误跳出当前循环,正确退出循环同时返回n,*          输入错误到达三次返回n=-1* @return n:选择功能编号*/public static int chooseN() {Scanner input = new Scanner(System.in);int n = -1;System.out.println("输入功能选项:(1~6),有三次错误的机会");for (int i = 0; i < 4; i++) {if (i == 3) {//                System.out.println("错误次数过多。退出系统");return n = -1;}if (input.hasNext()) {n = input.nextInt();if (n > 0 && n < 7) {System.out.println("输入正确");break;} else {System.out.println("还有" + (i + 1) + "次机会");System.out.println("内容输入错误!");continue;}} else {System.out.println("还有" + (i + 1) + "次机会");System.out.println("内容输入错误!");continue;}}return n;}/*** @since 菜单:定义标识flag,do-while循环接收chooseN方法的选项值。*         当出现输入次数过多错误时、或选择退出系统选项时,改变标识退出循环* @param list*/public static void menuStu(List<Student> list) {//标识状态boolean flag = false;do {faceStu();int n = chooseN();switch (n) {case 1:inPutStu(list);System.out.println("*********************************");System.out.println("返回菜单");System.out.println("*********************************");break;case 2:deleteStu(list);System.out.println("*********************************");System.out.println("返回菜单");System.out.println("*********************************");break;case 3:changeStu(list);System.out.println("*********************************");System.out.println("返回菜单");System.out.println("*********************************");break;case 4:findStu(list);System.out.println("*********************************");System.out.println("返回菜单");System.out.println("*********************************");break;case 5:showAllStu(list);System.out.println("*********************************");System.out.println("返回菜单");System.out.println("*********************************");break;case 6:outStu();flag = true;break;default:if (n == -1) {System.out.println("有误功能选项错误次数过多,自动退出系统,请重启。");flag = true;}break;}} while (!flag);}}

项目:ArrayList集合实现学生(自定义类)信息管理系统相关推荐

  1. Java(运用ArrayList集合)实现学生系统搜索学生信息功能

    需求: 学生信息系统:展示数据,并按照学号完成搜索学生信息(学号,姓名,年龄,班级) 测试数据: "20180302","叶孤城",23,"护理一班& ...

  2. 【计算机毕业设计】017学生公寓电费信息管理系统

    一.系统截图(需要演示视频可以私聊) 摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微信小程 ...

  3. (附源码)SSM学生健康饮食信息管理系统JAVA计算机毕业设计项目

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  4. C++学生志愿填报信息管理系统

    /*学生志愿填报信息管理系统 博主水平有限,如有错误请谅解! 要求: (1) 考生信息包括:姓名.考号.毕业学校.高考总分.住址.联系电话等. (2) 专业信息包括:招生代码.专业名称.学科分类.所属 ...

  5. mysql学生管理系统er图_java swing mysql实现的学生选课成绩信息管理系统附带视频指导教程及数据库ER图...

    <p> <span style="color:#4F4F4F;font-family:"font-size:16px;background-color:#FFFF ...

  6. 详细介绍idea实现javaweb项目登入注册(华东交通大学教务处信息管理系统)、模糊查询...

    详细介绍idea实现javaweb项目登入注册(华东交通大学教务处信息管理系统).模糊查询 1,创建数据库,我的用户名:root 密码:root,数据库名称:lianwei,表名:login 2,效果 ...

  7. android学生移动考勤信息管理系统

    android学生移动考勤信息管理系统 emmmm 本系统带程序说明书   有需要的可以去我上传的资源里面找,找不到的话,评论我,或者站内私信留下邮箱, 我看到机会给你发,也可以主动联系我博客名. 因 ...

  8. c语言课程设老师信息管理,学生和教师信息管理系统C语言课程设计

    学生和教师信息管理系统C语言课程设计 1目 录一.课题内容 -------------------2二.总体设计 -------------------51.系统要求 ---------------- ...

  9. 使用ArrayList集合实现学生管理系统

    文章目录 实现思路 定义学生类 添加学生代码编写 查看学生代码编写 删除学生代码编写 修改学生代码编写 主界面代码编写 测试 添加信息 查看信息 删除信息 修改信息 实现思路 定义学生类 添加学生的代 ...

最新文章

  1. SalttSack自动化运维(四)——JINJA模块
  2. DGA域名——可以每天只生成一个域名,因此最多存在365个 DGA域名;
  3. w7怎么查看电脑配置_2020年之学习UI设计需要什么样的电脑配置?
  4. 手游特效太多怎么办?这里有一份性能优化方案可参考
  5. get_locked_objects_rpt.sql
  6. mysql的安装真不爽
  7. GatewayWorker Not Support On Windows.
  8. py函数两个返回值_Python 函数为什么会默认返回 None?
  9. 制作双足机器人用易拉罐_小学生手工小制作用易拉罐做飞机模型的方法
  10. [最小割] Luogu P4662 黑手党
  11. SpringCloud SpringBoot mybatis分布式微服务云架构开发Web应用
  12. unityAPI文档离线下载
  13. 13到21年蓝桥杯真题及解析
  14. 集线器(hub),交换机以及路由器异同;冲突域和广播域详解
  15. gitlab 添加了 ssh keys, git clone git@xxx:xx.git 无法拉取的解决思路及办法
  16. java技术英文名词读音_Java开发,Java development,音标,读音,翻译,英文例句,英语词典...
  17. java分词器加词库_Elasticsearch配置IK分词器的远程词库
  18. Swap(交换函数)
  19. 键盘哪个键是锁定计算机,笔记本键盘锁定键在哪_笔记本电脑的“键盘锁”是哪一个键-win7之家...
  20. 循环神经网络RNN 2—— attention注意力机制(附代码)

热门文章

  1. linux下如何运行c编译,Linux下如何编译并运行C程序
  2. make menuconfig错误scripts/kconfig/lxdialog/checklist.o的解决方法
  3. vs下载错误变成code咋办?
  4. 怎样更改计算机网络密码怎么办,Wifi密码怎么改 教你如何修改Wifi密码
  5. EasyExcel和POI学习笔记
  6. 使用yarn install时报错:00h00m00s 0/0: : ERROR: [Errno 2] No such file or directory: ‘install‘
  7. Anaconda的镜像源添加和删减
  8. 华硕平板锁屏设置和输入法
  9. java iterator remove_Iterator remove()详解
  10. pve 不订阅更新_刺激战场:首个PVE模式年兽大作战,落地全是大菠萝,CF既视感!...