重学Java 18.学生管理系统项目

臣无祖母,无以至今日,祖母无臣,无以终余年

母孙二人,更相为命,是以区区不能废远

                                                ——  陈情表.李密

                                                             —— 24.2.20

一、编写JavaBean

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.age = age;this.name = name;this.id = id;this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}
}

二、添加功能 addStudent()

    private void addStudent() {System.out.println("添加功能");//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("添加成功!");}

三、查看功能 findAllStudent()

    private void findAllStudent() {System.out.println("学号"+"   "+"姓名"+"    "+"年龄"+"    "+"性别");//排序为了防止删除后在添加原序号代表学生导致发生乱序结果for (int i = 0; i < count-1; i++) {for (int j = 0; j < count-1-i; j++) {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 {for (int i = 0; i < count; i++) {System.out.println("  "+students[i].getId()+"    "+students[i].getName()+"   "+students[i].getAge()+"    "+students[i].getSex());}}}

四、修改功能 deleteStudent

    private void updateStudent() {//1.录入要修改的学生学号System.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("修改成功!");}

五、删除功能 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("删除成功!");
}

六、退出功能

    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("是否退出?按0为退出/按9为取消");int key = sc.nextInt();if(key==0){System.out.println("再见,欢迎下次使用!");return;//结束方法}else if(key == 9){break;}default:System.out.println("输入数字有误");}}}

七、总代码

1.增删改查方法

import java.lang.reflect.Array;
import java.util.Scanner;public class StudentView {//后面会反复键盘录入,所以Scanner键盘录入方法放在开头Scanner sc = new Scanner(System.in);/*老数组,长度为50,代表班级最多能放50个人后面每个功能都需要使用数组,所以可以将数组放到成员位置*/Student[] students = new Student[50];/*定义一个count变量,记录数组中有多少个对象,遍历元素不能全部遍历因为没有存对象的位置遍历出来是null,在调用get xxx方法,会出现空指针所以我们应该记录存储对象的个数,存多少个对象,就遍历多少次而且,后面可能会反复使用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("是否退出?按0为退出/按9为取消");int key = sc.nextInt();if(key==0){System.out.println("再见,欢迎下次使用!");return;//结束方法}else if(key == 9){break;}default:System.out.println("输入数字有误");}}}private void findAllStudent() {System.out.println("学号"+"   "+"姓名"+"    "+"年龄"+"    "+"性别");//排序for (int i = 0; i < count-1; i++) {for (int j = 0; j < count-1-i; j++) {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 {for (int i = 0; i < count; i++) {System.out.println("  "+students[i].getId()+"    "+students[i].getName()+"   "+students[i].getAge()+"    "+students[i].getSex());}}}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("删除成功!");
}private void updateStudent() {//1.录入要修改的学生学号System.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("修改成功!");}private void addStudent() {System.out.println("添加功能");//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("添加成功!");}
}

2.测试类 main函数

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

3.复制数组内容

public class Test02 {public static void main(String[] args) {int[] arr1 = {1,2,3,4,5,6,7,8};int[] arr2 = new int[8];/*工具类:System静态方法:arrayCopy参数1:源数组 -> 从哪个数组中开始复制参数2:从源数组的哪个索引开始复制参数3:目标数组 -> 复制到哪里去参数4:从目标数组的哪个索引开始粘贴参数5:复制多少个*/System.arraycopy(arr1,0,arr2,0,3);for (int i = 0; i < arr2.length; i++) {System.out.println(arr2[i]);}}
}

4.查找数组中与查询学号值相同的索引

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;}
}

5.测试运行结果

添加学生

查看学生

删除学生

修改学生

 退出系统

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

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

相关文章

【C++精简版回顾】12.友元函数

1.友元函数 1.class class MM { public:MM(int age,string name):age(age),name(name){}friend void print(MM mm); private:int age;string name;void print() {cout << age << "岁的" << name << "喜欢你" << endl;} }; f…

用html编写的小广告板

用html编写的小广告板 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</tit…

【洛谷 P8780】[蓝桥杯 2022 省 B] 刷题统计 题解(贪心算法+模拟+四则运算)

[蓝桥杯 2022 省 B] 刷题统计 题目描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a a a 道题目&#xff0c;周六和周日每天做 b b b 道题目。请你帮小明计算&#xff0c;按照计划他将在第几天实现做题数大于等于 n n n 题? 输入格式 输入一…

可视化图文报表

Apache Echarts介绍 Apache Echarts是一款基于Javascript的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的数据可视化图表。 官网&#xff1a;Apache ECharts 入门案例&#xff1a; <!DOCTYPE html> <html>…

Springboot+vue图书管理系统(小白)

图书管理系统 简介&#xff1a;一个最简约的图书管理系统&#xff0c;适用于小白用来练手 前端&#xff1a;VueElementUIechars 后端&#xff1a;SpringbootMybatisMySQL 功能模块&#xff1a; 信息管理&#xff1a;公告信息 操作日志 用户管理&#xff1a;用户信息 图书…

快速搭建宠物医院服务小程序的步骤,无需编程经验

如果你是一家宠物医院或者宠物服务机构&#xff0c;想要拥有一款方便用户预约、查询信息的小程序&#xff0c;那么乔拓云网提供的轻应用小程序是你的不二选择。下面将为你详细介绍如何轻松打造宠物医院服务小程序。 1. 进入乔拓云网后台&#xff0c;点击【轻应用小程序】中的【…

Three.js-05坐标轴AxesHelper

1.构建对象 说明&#xff1a;参数一表示坐标轴的长度。红色代表 X 轴. 绿色代表 Y 轴. 蓝色代表 Z 轴. const axesHelper new THREE.AxesHelper( 1 ); 2.设置位置 axesHelper.position.y1 axesHelper.position.x1 axesHelper.position.z1 3. 网格 说明&#xff1a;立方体…

Python爬虫-爬取B站番剧封面

本文是本人最近学习Python爬虫所做的小练习。如有侵权&#xff0c;请联系删除。 页面获取url 代码 import requests import os import re# 创建文件夹 path os.getcwd() /images if not os.path.exists(path):os.mkdir(path)# 当前页数 page 1 # 总页数 total_page 2# 自动…

MySQL:开始深入其数据(一)DML

在上一章初识MySQL了解了如何定义数据库和数据表&#xff08;DDL&#xff09;&#xff0c;接下来我们开始开始深入其数据,对其数据进行访问&#xff08;DAL&#xff09;、查询DQL&#xff08;&#xff09;和操作(DML)等。 通过DML语句操作管理数据库数据 DML (数据操作语言) …

2/22作业

1.按位置插入 void insert_pos(seq_p L,datetype value,int pos) { if(LNULL) { printf("入参为空\n"); return; } if(seq_full(L)) { printf("表已满\n"); return; } if(pos>L->len|…

学生成绩管理系统

用单链表数据结构完成c的学生成绩管理系统&#xff0c;此系统的具体功能如下&#xff1a; 本人小萌新一个&#xff0c;遇到BUG是正常现象。并且类与对象写的不太理想。- 写了一个Database存放所有数据&#xff0c;但这肯定浪费资源&#xff0c;你们看着改改吧。 class DataBase…

SpringCloud Alibaba 2022之Nacos学习

SpringCloud Alibaba 2022使用 SpringCloud Alibaba 2022需要Spring Boot 3.0以上的版本&#xff0c;同时JDK需要是17及以上的版本。具体的可以看官网的说明。 Spring Cloud Alibaba版本说明 环境搭建 这里搭建的是一个聚合项目。项目结构如下&#xff1a; 父项目的pom.xm…

矩阵的范数 matrix norm Frobenius norm 弗罗贝尼乌斯 范数

1&#xff0c;矩阵范数的定义 矩阵的范数&#xff0c;matrix norm即矩阵的模&#xff1b;它把一个矩阵空间变成为赋范线性空间&#xff1b; 从一个矩阵空间映射到非负实数的函数 满足以下条件&#xff1a; 1&#xff0c;严格的正定性。对于 , 则 ; and if , must ; 2&…

Vue3前端实现一个本地消息队列(MQ), 让消息延迟消费或者做缓存

MQ功能实现的具体代码(TsMQ.ts)&#xff1a; import { v4 as uuidx } from uuid;import emitter from /utils/mitt// 消息类 class Message {// 过期时间&#xff0c;0表示马上就消费exp: number;// 消费标识&#xff0c;避免重复消费tag : string;// 消息体body : any;constr…

大语言模型推理加速技术:模型压缩篇

原文&#xff1a;大语言模型推理加速技术&#xff1a;模型压缩篇 - 知乎 目录 简介 量化(Quantization) LLM.int8() GPTQ SmoothQuant AWQ 精简Attention 共享Attention参数 Multi-Query Attention Grouped-Query Attention 稀疏Attention Sliding Window Attenti…

uniapp的微信小程序授权头像昵称(最新版)

前面我出过两期博客关于小程序授权登录,利用php实现一个简单的小程序授权登录并存储授权用户信息到数据库的完整流程。无奈&#xff0c;小程序官方又整幺蛾子了。wx.getUserInfo接口收回&#xff0c;wx.getUserProfile接口也不让用。导致我的个人小程序&#xff1a;梦缘 的授权…

ESP32语音转文字齐护百度在线语音识别

一、导入(10分钟&#xff09; 学习目的 二、新授(70分钟) 1.预展示结果(5分钟) 2.本节课所用的软硬件(5分钟) 4.图形化块介绍(10分钟) 5.单个模块的简单使用(10分钟) 6.在线语音转换工具逻辑分析(10分钟) 7.在线语音转换工具分步实现(30分钟) 三、巩固练习(5分钟) 四、课堂小结…

transformer--输入(位置编码)

原理参考这篇文章&#xff0c; 这里是原始文章 import torch.nn as nn import torch import math from torch.autograd import Variable# 词嵌入 class Embeddings(nn.Module):# dim:词嵌入的维度&#xff0c;vocab:词表的大小def __init__(self, dim, vocab) -> None:supe…

Dledger部署RocketMQ高可用集群(9节点集群)

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容规划集群准备工作节点0配置&#xff08;ip地址为192.168.80.101的机器&#xff09;节点1配置&#xff08;ip地址为192.168.80.102的机器&#xff09;节点2配置&#xff08;ip地址为192.168.80.103的机器&#xff09;在所有…

【Java多线程】对线程池的理解并模拟实现线程池

目录 1、池 1.1、线程池 2、ThreadPoolExecutor 线程池类 3、Executors 工厂类 4、模拟实现线程池 1、池 “池”这个概念见到非常多&#xff0c;例如常量池、数据库连接池、线程池、进程池、内存池。 所谓“池”的概念就是&#xff1a;&#xff08;提高效率&#xff09; 1…