学生管理系统(javaSE第一阶段项目)

JavaSE第一阶段项目_学生管理系统

1.项目介绍

此项目是JavaSE第一阶段的项目,主要完成学生对象在数组中的增删改查,大家可以在此项目中发挥自己的想象力做完善,添加其他功能等操作,但是重点仍然是咱们前9个模块的知识点

2.项目展示

2.1.添加功能

在这里插入图片描述

2.2.查看功能

在这里插入图片描述

2.3.修改功能

在这里插入图片描述

2.4.删除功能

在这里插入图片描述

2.5.退出功能

在这里插入图片描述

3.功能实现

3.1.JavaBean_Student

public class Student {//学号private int id;//姓名private String name;//年龄private int age;//性别private String sex;public Student() {}public Student(int id, String name, int age, String sex) {this.id = id;this.name = name;this.age = age;this.sex = sex;}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 getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}
}

3.2.启动项目_Test01

public class Test01 {public static void main(String[] args) {new StudentView().start();}
}

3.3.操作页面_StudentView

public class StudentView {/*后面会反复键盘录入,所以我们没要执行一个方法就new一次Scanner所以将Scanner对象放到成员位置*/Scanner sc = new Scanner(System.in);/*老数组,长度为 50,代表班级最多能放50个人后面每个功能都需要使用数组,所以可以将数组放到成员位置*/Student[] students = new Student[50];/*定义一个count,记录数组中有多少个对象,遍历元素不能全部遍历,因为没有存对象的位置遍历出来是null,再调用getxxx方法,会出现空指针所以我们应该记录存储对象的个数,存多少个对象,就遍历多少次而且,后面可能会反复使用count,所以提到成员位置*/int count = 0;/*新数组,一会删除元素的时候需要将删除后剩下的元素复制到新数组中因为数组定长,不能直接在原来的数组基础上随意改变长度由于一次删一个,所以新数组长度为老数组长度-1后面可能会反复使用新数组,所以定义到成员位置*/Student[] newStudents = new Student[students.length-1];/*start方法用于展示页面以及调用对应的功能*/public void start(){while(true){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("请选择(1-5):");int num = sc.nextInt();System.out.println("--------------------------------");switch (num){case 1:addStudent();break;case 2:updateStudent();break;case 3:deleteStudent();break;case 4:findAllStudent();break;case 5:System.out.println("退出功能");break;}}}private void findAllStudent() {System.out.println("查看功能");}private void deleteStudent() {System.out.println("删除功能");}private void updateStudent() {System.out.println("修改功能");}private void addStudent() {System.out.println("添加功能");}
}

3.4.工具类_ArrayUtils

public class ArrayUtils {private ArrayUtils(){}public static int findIndexById(Student[] students,int id,int count){//遍历,查找for (int i = 0; i < count; i++) {if (id==students[i].getId()){return i;}}return -1;}
}

3.5.添加功能_addStudent

    private void addStudent() {//1.键盘录入学生信息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 sex = sc.next();//2.将学生信息封装到Student对象中Student student = new Student(id, name, age, sex);//3.将封装好的Student对象放到students数组中students[count] = student;//4.count++记录存储了多少个对象count++;System.out.println("添加成功!!!");}

3.6.查看功能_findAllStudent

     private void findAllStudent() {System.out.println("学号"+"\t"+"姓名"+"\t"+"年龄"+"\t"+"性别");/*排序是为了防止:删除完之后再重新添加之前删除的序号对应的学生而发生乱序的情况*/for (int j = 0; j < count-1; j++) {for (int i = 0; i < count-1-j; i++) {if (students[i].getId()>students[i+1].getId()){Student temp = students[i];students[i] = students[i+1];students[i+1] = temp;}}}//如果count为0(证明没有添加过学生),证明没有学生if (count==0){System.out.println("对不起,现在班级没有学生,待开班.........");}else{//我们应该是添加了多少个学生,count就是几,就应该遍历几次for (int i = 0; i < count; i++) {System.out.println(students[i].getId()+"\t"+students[i].getName()+"\t"+students[i].getAge()+"\t"+students[i].getSex());}}}

3.7.修改功能_updateStudent

    private void updateStudent() {//1.录入要修改的学生学号  idSystem.out.println("请您输入要修改的学生学号:");int id = sc.nextInt();/*2.注意:修改完之后不能直接将id当成索引去存储新的学生对象原因:id和学生在数组中的索引不是对应的解决:根据id查询对应的学生在数组中的索引位置*/int updateIndex = ArrayUtils.findIndexById(students,id,count);System.out.println("请您输入学生姓名:");String name = sc.next();System.out.println("请您输入学生年龄:");int age = sc.nextInt();System.out.println("请您输入学生性别:");String sex = sc.next();Student student = new Student(id, name, age, sex);students[updateIndex] = student;System.out.println("修改成功!!!");}

3.8.删除功能_deleteStudent

    private void deleteStudent() {//1.输入要删除的学生学号System.out.println("请您输入要删除的学生学号:");int id = sc.nextInt();//2.根据id查询学生对应的索引位置int removeIndex = ArrayUtils.findIndexById(students, id, count);//复制被删除元素前面一部分System.arraycopy(students,0,newStudents,0,removeIndex);//再复制被删除元素后面一部分System.arraycopy(students,removeIndex+1,newStudents,removeIndex,students.length-removeIndex-1);//将新数组的地址值给老数组students = newStudents;//删除完之后count--count--;System.out.println("删除成功");}

3.9.退出功能_switch

 case 5:System.out.println("是否退出?按0为退出/按9为取消");int key = sc.nextInt();if (key == 0) {System.out.println("再见,欢迎再来");return;//结束方法} else if (key == 9) {break;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/459588.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库管理-第145期 最强Oracle监控EMCC深入使用-02(20240205)

数据库管理145期 2024-02-05 数据库管理-第145期 最强Oracle监控EMCC深入使用-02&#xff08;20240205&#xff09;1 监控方式2 度量配置3 阻塞4 DG监控总结 数据库管理-第145期 最强Oracle监控EMCC深入使用-02&#xff08;20240205&#xff09; 作者&#xff1a;胖头鱼的鱼缸&…

【C#】.net core 6.0 设置根目录下某个文件夹可访问,访问创建的图片等资源

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…

移动光猫gs3101超级密码及改桥接模式教程

文章目录 超级管理员账号改桥接模式路由器连接光猫&#xff0c;PPPOE拨号即可&#xff01;附录&#xff1a;如果需要改桥接的话不知道拨号密码咋办打开光猫Telnet功能Telnet 登录 参考文章 移动光猫吉比特GS3101超级账号获取更改桥接 移动光猫gs3101超级密码及改桥接模式教程 …

蓝桥杯Web应用开发-CSS3 新特性【练习二:获得焦点验证】

页面上有一个姓名输入框和一个密码输入框&#xff0c;当聚焦输入框时&#xff0c;输入框的背景颜色会发生改变&#xff0c; 新建一个 index3.html 文件&#xff0c;在其中写入以下内容。 <!DOCTYPE html> <html lang"en"><head><meta charset&…

android studio下开发flutter

文章目录 1. 配置环境 https://flutter.cn/docs/get-started/install2. android studio下开发flutter 1. 配置环境 https://flutter.cn/docs/get-started/install 2. android studio下开发flutter 打开Android Studio -> File -> Settings -> Plugins 搜索Dart插件 …

如何使用websocket

如何使用websocket 之前看到过一个面试题&#xff1a;吃饭点餐的小程序里&#xff0c;同一桌的用户点餐菜单如何做到的实时同步&#xff1f; 答案就是&#xff1a;使用websocket使数据变动时服务端实时推送消息给其他用户。 最近在我们自己的项目中我也遇到了类似问题&#xf…

【浙大版《C语言程序设计实验与习题指导(第4版)》】实验7-2-7 方阵循环右移(附测试点)

本题要求编写程序&#xff0c;将给定nn方阵中的每个元素循环向右移m个位置&#xff0c;即将第0、1、⋯、n−1列变换为第n−m、n−m1、⋯、n−1、0、1、⋯、n−m−1列。 输入格式&#xff1a; 输入第一行给出两个正整数m和n&#xff08;1≤n≤6&#xff09;。接下来一共n行&am…

项目02《游戏-09-开发》Unity3D

基于 项目02《游戏-08-开发》Unity3D &#xff0c; 本次任务是做抽卡界面&#xff0c;获取的卡片增添在背包中&#xff0c;并在背包中可以删除卡片&#xff0c; 首先在Canvas下创建一个空物体&#xff0c;命名为LotteryPanel&#xff0c;作为抽卡界面&#xff0c; …

labelimg 在pycharm下载使用

labelimg 使用数据标注工具 labelimg 制作数据集 在pycharm中搜索labelimg 选择版本安装 labelimg install 使用数据标注工具制作数据集 启动 带参数启动 1、cmd cd到指定目录 2、带参数启动标注工具 左侧可以选择切换为需要的数据格式 一些快捷键 和自动保存&#xff0c…

芋道--如何新建自定义业务模块

由于自己的业务逻辑想要单独放到一个model中&#xff0c;所以这里讲讲在芋道中如何新建自定义Model。芋道官网的教程其实已经很详细了&#xff0c;这里讲一下社区版的Idea如何创建&#xff0c;同时针对一些细节做一下说明。 一、创建对应的业务模块 1&#xff09;创建对应的mod…

DFS深度优先搜索与回溯算法

目录 递归遍历的三步骤&#xff1a; DFS/回溯模板 练习 1.三角形路径和最大搜索 &#xff08;一&#xff09;前序DFS&#xff08;从上至下搜索&#xff0c;实际是暴力解法&#xff0c;测试超时&#xff09; &#xff08;二&#xff09;后序DFS&#xff08;自底向上搜索&am…

222. 完全二叉树的节点个数 - 力扣(LeetCode)

题目描述 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都集中在该层最左边的若干…