学生管理系统

在一所学校中,对学生人员流动的管理是很麻烦的,本案例要求编写一个学生管理系统,实现对学生信息的添加、删除、修改和查询功能。每个功能的具体要求如下:

系统的首页

用于显示系统所有的操作,并根据用户在控制台的输入选择需要使用的功能。

查询功能

用户选择该功能后,在控制台打印所有学生的信息。

添加功能

用户选择该功能后,要求用户在控制台输入学生学号、姓名、年龄和居住地的基本信息。在输入学号时,判断学号是否被占用,如果被占用则添加失败,并给出相应提示;反之则提示添加成功。

删除功能

用户选择该功能后,提示用户在控制台输入需要删除学生的学号,如果用户输入的学号存在则提示删除成功,反之则提示删除失败。

修改功能

用户选择该功能后,提示用户在控制台输入需要修改的学生学号、姓名、年龄和居住地学生信息,并使用输入的学生学号判断是否有此人,如果有则修改原有的学生信息,反正则提示需要修改的学生信息不存在。

退出功能

用户选择该功能后,程序正常关闭。
本案例要求使用List集合存储自定义的对象,使用List集合的中常用方法实现相关的操作。

分析:
由于java是一个面向对象的语言,在此系统中我们将整个学生管理系统分为三个层次,一是学生类,而是管理学生的管理类,里面定义了一些增删改查学生类的方法,三是对此系统进行测试的测试类,学生类的定义比较简单,下面主要讲一下管理类的增删改查基本操作,我们通过定义两个容器一个ArrayList存储学生类,一个存储学生的学号,方便再添加删除修改前判断学生系统中之前是否存在这个学生

学生类的实现:

分析:学生类中定义了一些基本的学生属性,并通过get set函数对各属性进行了封装,方便日后其他类访问该类的私有成员,该类也重写了object类的toString函数,方便查询输出学生类的相关信息

package com.project001.studentmanage;
/*** @ProjectName vote* @ClassName Student* @Description //* @Email 2992794262@qq.com* @Author ASUS* @Date 2021/9/26**/
public class Student {//学号 姓名 性别 年龄 居住地private int id;private String name;private int age;private String sex;private String residence;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) {//对年龄封装if ( age>0 && age<100){this.age = age;}else{System.out.println("你输入的年龄有误");}}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getResidence() {return residence;}public void setResidence(String residence) {this.residence = residence;}@Override//重写toString函数public String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", age=" + age +", sex='" + sex + '\'' +", residence='" + residence + '\'' +'}';}
}

管理类分析: 下面主要讲一下管理类的增删改查基本操作,我们通过定义两个容器一个ArrayList存储学生类,一个存储学生的学号,方便再添加删除修改前判断学生系统中之前是否存在这个学生

 //装学生类的容器arrayListstatic ArrayList<Student> arrayList=new ArrayList<Student>();//装学生学号的容器idListstatic ArrayList<Integer> idList=new ArrayList<Integer>();

添加功能:

/** @Author Mulan* @Email 2992794262@qq.com* @ClassName Manage* @Description //TODO 添加学生信息* @Date 17:48 2021/9/26**/
public  static void  add(){System.out.println("--------------添加学生信息-------- ");Student s=new Student();System.out.print("学号:");int id=input.nextInt();//如果学生的学号没有被占用,就开始存入学生信息if (!idList.contains(id)){//将学生学号存入容器,保证学号的唯一性idList.add(id);//设置学生的学号s.setId(id);System.out.print("姓名:");s.setName(input.next());System.out.print("性别:");s.setSex(input.next());System.out.print("年龄:");s.setAge(input.nextInt());System.out.print("居住地:");s.setResidence(input.next());arrayList.add(s);System.out.print("添加已完成......是否退出 回到主界面? (y/n)");String a=input.next();//继续添加学生信息if (a.equals("n")){add();}//回到主界面else{Test.main(null);}}else{System.out.println("该学号被占用......请重新输入");add();}}

删除功能:

/** @Author Mulan* @Email 2992794262@qq.com* @ClassName Manage* @Description //TODO //根据学号迭代删除学生信息* @Date 17:49 2021/9/26**/public static void remove() {System.out.println("------------删除学生信息----------");System.out.print("请输入要删除学生的学号 : ");int id = input.nextInt();//声明迭代器i 当心并发异常Iterator i = idList.iterator();//要删除的学号在学号容器中,则可删除该学生if (idList.contains(id)){while (i.hasNext()) {if (i.next().equals(id)) {i.remove();break;}}}//删除的学生不在学号容器中else {System.out.println("删除失败......学号不存在,请重新输入");remove();}//删除学生容器里的学生对象for (int j=0;j<arrayList.size();j++) {if (arrayList.get(j).getId()==id){arrayList.remove(j);break;}}System.out.println("删除已完成......是否回退出 回到主界面? (y/n)");String a = input.next();// 删除学生信息if (a.equals("n")) {remove();}//回到主界面else {Test.main(null);}}

修改功能:

/** @Author  Mulan* @Description //TODO 根据学号修改学生信息 ps:删除学号容器的原学号,*                 新学号加入到学号容器中,当前学生类的学号等相关信息发生改变,*                  但学生没有被删除,只是相关信息发生了改变* @Date  2021/9/26* @Param* @return**/public static void alter() {System.out.println("------------修改学生信息----------");System.out.print("请输入学生原学号 : ");int id = input.nextInt();//将原学生学号删除//声明迭代器i 当心并发异常Iterator i = idList.iterator();//学号在学号容器中,删除学号容器中的学号if (idList.contains(id)){while (i.hasNext()) {if (i.next().equals(id)) {i.remove();break;}}}//学号不在学号容器中else {System.out.println("要修改的学生不存在......请重新输入学号");alter();}//遍历学生列表for (Student s : arrayList) {//要修改的学生存在if (s.getId()==id) {System.out.print("新学号: ");int newId = input.nextInt();//加入新学号idList.add(newId);s.setId(newId);System.out.print("新姓名:");s.setName(input.next());System.out.print("新性别:"); s.setSex(input.next());System.out.print("新年龄:");s.setAge(input.nextInt());System.out.print("新居住地:");s.setResidence(input.next());System.out.print("修改已完成......是否退出 回到主界面? (y/n)");String a = input.next();//继续修改学生信息if (a.equals("n")) {alter();}//回到主界面else {Test.main(null);}}}}

查询功能:

/** @Author Mulan* @Email 2992794262@qq.com* @ClassName Manage* @Description //TODO 查询所有学生信息* @Date 18:45 2021/9/26****/public  static void query(){int num=1;for (Student s:arrayList ) {System.out.println(num+"."+s);num++;}System.out.print("查询已完成......输入y回到主界面");String a = input.next();//回到主界面if (a.equals("y")) {Test.main(null);}}

管理类的完整代码:

package com.project001.studentmanage;
import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
/*** @ProjectName vote* @ClassName Manage* @Description //管理学生的类* @Email 2992794262@qq.com* @Author ASUS* @Date 2021/9/26**/
public class Manage {//装学生类的容器arrayListstatic ArrayList<Student> arrayList=new ArrayList<Student>();//装学生学号的容器idListstatic ArrayList<Integer> idList=new ArrayList<Integer>();static Scanner input=new Scanner(System.in);/** @Author Mulan* @Email 2992794262@qq.com* @ClassName Manage* @Description //TODO 添加学生信息* @Date 17:48 2021/9/26**/public  static void  add(){System.out.println("--------------添加学生信息-------- ");Student s=new Student();System.out.print("学号:");int id=input.nextInt();//如果学生的学号没有被占用,就开始存入学生信息if (!idList.contains(id)){//将学生学号存入容器,保证学号的唯一性idList.add(id);//设置学生的学号s.setId(id);System.out.print("姓名:");s.setName(input.next());System.out.print("性别:");s.setSex(input.next());System.out.print("年龄:");s.setAge(input.nextInt());System.out.print("居住地:");s.setResidence(input.next());arrayList.add(s);System.out.print("添加已完成......是否退出 回到主界面? (y/n)");String a=input.next();//继续添加学生信息if (a.equals("n")){add();}//回到主界面else{Test.main(null);}}else{System.out.println("该学号被占用......请重新输入");add();}}/** @Author Mulan* @Email 2992794262@qq.com* @ClassName Manage* @Description //TODO //根据学号迭代删除学生信息* @Date 17:49 2021/9/26**/public static void remove() {System.out.println("------------删除学生信息----------");System.out.print("请输入要删除学生的学号 : ");int id = input.nextInt();//声明迭代器i 当心并发异常Iterator i = idList.iterator();//要删除的学号在学号容器中,则可删除该学生if (idList.contains(id)){while (i.hasNext()) {if (i.next().equals(id)) {i.remove();break;}}}//删除的学生不在学号容器中else {System.out.println("删除失败......学号不存在,请重新输入");remove();}//删除学生容器里的学生对象for (int j=0;j<arrayList.size();j++) {if (arrayList.get(j).getId()==id){arrayList.remove(j);break;}}System.out.println("删除已完成......是否回退出 回到主界面? (y/n)");String a = input.next();// 删除学生信息if (a.equals("n")) {remove();}//回到主界面else {Test.main(null);}}/** @Author  Mulan* @Description //TODO 根据学号修改学生信息 ps:删除学号容器的原学号,*                 新学号加入到学号容器中,当前学生类的学号等相关信息发生改变,*                  但学生没有被删除,只是相关信息发生了改变* @Date  2021/9/26* @Param* @return**/public static void alter() {System.out.println("------------修改学生信息----------");System.out.print("请输入学生原学号 : ");int id = input.nextInt();//将原学生学号删除//声明迭代器i 当心并发异常Iterator i = idList.iterator();//学号在学号容器中,删除学号容器中的学号if (idList.contains(id)){while (i.hasNext()) {if (i.next().equals(id)) {i.remove();break;}}}//学号不在学号容器中else {System.out.println("要修改的学生不存在......请重新输入学号");alter();}//遍历学生列表for (Student s : arrayList) {//要修改的学生存在if (s.getId()==id) {System.out.print("新学号: ");int newId = input.nextInt();//加入新学号idList.add(newId);s.setId(newId);System.out.print("新姓名:");s.setName(input.next());System.out.print("新性别:"); s.setSex(input.next());System.out.print("新年龄:");s.setAge(input.nextInt());System.out.print("新居住地:");s.setResidence(input.next());System.out.print("修改已完成......是否退出 回到主界面? (y/n)");String a = input.next();//继续修改学生信息if (a.equals("n")) {alter();}//回到主界面else {Test.main(null);}}}}/** @Author Mulan* @Email 2992794262@qq.com* @ClassName Manage* @Description //TODO 查询所有学生信息* @Date 18:45 2021/9/26****/public  static void query(){int num=1;for (Student s:arrayList ) {System.out.println(num+"."+s);num++;}System.out.print("查询已完成......输入y回到主界面");String a = input.next();//回到主界面if (a.equals("y")) {Test.main(null);}}}

最后当然就是进行测试的测试类啦,比较简单,直接上代码,主要就是通过一个while死循环,一直让用户选择功能,想退出的时候调用系统的退出函数就可以啦

package com.project001.studentmanage;import java.util.Scanner;/*** @ProjectName vote* @ClassName Test* @Description //* @Email 2992794262@qq.com* @Author ASUS* @Date 2021/9/26**/
public class Test {public static void main(String[] args) {while  (true){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.print("please input your choose :");Scanner input=new Scanner(System.in);int n=input.nextInt();switch (n){case 1:Manage.add(); //Manage.queryAll(Manage.arrayList);case 2:Manage.remove();case 3:Manage.alter();case 4:Manage.query();case 0:System.exit(0);}}}
}

具体运行视频见以下bilibili链接
https://www.bilibili.com/video/BV1wv411G7qg?pop_share=1

【java项目学习笔记】Java学生管理系统(纯后端基础--增删改查)相关推荐

  1. python及格率公式_python案例----学生管理系统(实现学员的增删改查功能)

    学生管理系统 系统需求 1.实现可以添加新的学员 2.修改单个学员的各项信息 3.将某个学员的所有信息全部删除 4.查看单个学员的信息 5.将所有学员的信息罗列出来 6.计算考试成绩的平均值 7.计算 ...

  2. SpringCloud学习笔记022---SpringBoot中集成使用MongoDb进行增删改查

    1.首先在Windows上安装Mongodb,当然也可以在centos上安装   我是在windows上安装的   安装的时候使用一些命令,开启服务   可以看另一篇博文:   安装后访问:http: ...

  3. oracle学习笔记系列------oracle 基本操作之表的增删改查

    --创建一个表 CREATE TABLE employee_souvc(id NUMBER(4),name VARCHAR2(20),gender CHAR(1),birth DATE,salary ...

  4. 1+X web中级 Laravel学习笔记——使用DB facade对数据库进行增删改查

  5. Java-spring数据库编程(idea)实现学生账号登录以及管理员增删改查功能

    通过所学的Spring数据库编程知识,实现学生管理系统的登录及增删改查的功能.要求学生在控制台输入用户名密码,如果用户账号密码正确则显示登录成功,如果登录失败则显示登录失败.登录成功后,可以进行增删改 ...

  6. Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作

    此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面 ...

  7. 【java】用javaSE来实现对mysql数据库的增删改查

    主程序: import Bean.StudentBean; import Impl.StudentImpl; public class T7 {     public static void main ...

  8. Java中的sqlsession_java相关:MyBatis中SqlSession实现增删改查案例

    java相关:MyBatis中SqlSession实现增删改查案例 发布于 2020-6-13| 复制链接 摘记: 前言     开博客这是第一次写系列文章,从内心上讲是有点担心自己写不好,写不全,毕 ...

  9. java对mysql进行查找替换_java对mysql的增删改查

    -----连接数据库 package connectdb; import java.sql.*; class Dbcon { // 此处连接数据库,独立开一个类,以后操作数据库的每次连接就不用写这么多 ...

最新文章

  1. 油管螺纹尺寸对照表_数控加工过程中,如何区分新旧螺纹牌号?
  2. Samba与Vsftpd结合在企业中的应用
  3. settype where used list - set type where use list - equipment download environme
  4. LeetCode 237. 删除链表中的节点(思维)
  5. django-解决-修改过的模型类不能被正常迁移的解决办法
  6. java web 缓存省市县_实现 Java 本地缓存,该从这几点开始
  7. ssh配置config文件
  8. Oracle数据库基本知识
  9. CA数字证书包含哪些文件?如何查看SSL证书信息?
  10. python是商业组织吗_基于Python的电子商务系统的弹性架构与思考
  11. 滴滴和中国优步合并:滴滴才是唯一赢家?
  12. ArcBlock ⑦ 月报 | 产品一天半迭代1个版本 全球开发者社区建设启动
  13. Python脚本--别踩小bai块
  14. libudev-dev安装错误libudev1 (= 241-7~deb10u7) but 241-7~deb10u6解决
  15. 大学四年如何有效的使用『牛客』平台
  16. vue点击事件下载音频(浏览器)(幼儿园理解级别)
  17. swagger csrf 404_从0岁用到8岁的404页夫人独家超实用中英文双面闪卡素材包
  18. 烛照幽荧是鸿蒙时期,上古圣兽:太阳烛照与太阴幽荧
  19. .NET文档处理套包GroupDocs.Total for .NET新版发布 | 附下载
  20. STM32 H743 ECC内存相关使用说明笔记

热门文章

  1. 课程设计·运动会管理系统
  2. Python数字信号处理
  3. 2018虚幻引擎技术开放日完整议程曝光
  4. 知识积累:EasyExcel导出Excel带中文水印,中文乱码处理,JDK8 jwt.font中文乱码解决方案
  5. SSM框架教程P89配置文件
  6. 【MySQL基础】SQL语言的概述、组成及特点
  7. 时间序列分析 | Python时间序列预测理论一览
  8. 提取PDF每一页,所有表格,并按页码命名保存
  9. JavaJSON处理工具类JSONUtils
  10. 掌财社寒山:什么是浮筹?