• Java学生管理系统


    需求:

    采取控制台的方式去书写学生管理系统

    分析:

    初始菜单:

    学生类:

    属性:id、姓名、年龄、家庭住址

    添加功能:

    键盘录入每一个学生信息并添加,需要满足以下要求:

    • id唯一

    删除功能:

    键盘录入要删除的学生id,需要满足以下要求:

    • id存在删除

    • id不存在,需要提示不存在,并回到初始菜单

    修改功能:

    键盘录入要修改的学生id,需要满足以下要求

    • id存在,继续录入其他信息

    • id不存在,需要提示不存在,并回到初始菜单

    查询功能:

    打印所有的学生信息,需要满足以下要求

    • 如果没有学生信息,提示:当前无学生信息,请添加后再查询

    • 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)

    id          姓名      年龄      家庭住址
    heima001    张三      23       南京
    heima002    李四      24       北京
    heima003    王五      25       广州
    heima004    赵六      26       深圳

    实现代码:

    student.java:

    1. public class Student {
    2. private String id;
    3. private String name;
    4. private int age;
    5. private String address;
    6. public Student() {
    7. }
    8. public Student(String id, String name, int age, String address) {
    9. this.id = id;
    10. this.name = name;
    11. this.age = age;
    12. this.address = address;
    13. }
    14. public String getId() {
    15. return id;
    16. }
    17. public void setId(String id) {
    18. this.id = id;
    19. }
    20. public String getName() {
    21. return name;
    22. }
    23. public void setName(String name) {
    24. this.name = name;
    25. }
    26. public int getAge() {
    27. return age;
    28. }
    29. public void setAge(int age) {
    30. this.age = age;
    31. }
    32. public String getAddress() {
    33. return address;
    34. }
    35. public void setAddress(String address) {
    36. this.address = address;
    37. }
    38. }

    StudentSystem.java:

    1. import java.util.ArrayList;
    2. import java.util.Scanner;
    3. public class StudentSystem {
    4. public static void main(String[] args) {
    5. ArrayList list = new ArrayList<>();
    6. loop: while (true) {
    7. System.out.println("-------------欢迎来到ZZULI学生管理系统-------------");
    8. System.out.println("1:添加学生");
    9. System.out.println("2:删除学生");
    10. System.out.println("3:修改学生");
    11. System.out.println("4:查询学生");
    12. System.out.println("5:退出");
    13. System.out.println("请输入您的选择:");
    14. Scanner sc = new Scanner(System.in);
    15. String choose = sc.next();
    16. switch (choose){
    17. case "1" -> addStudent(list);
    18. case "2" -> deleteStudent(list);
    19. case "3" -> updateStudent(list);
    20. case "4" -> queryStudent(list);
    21. case "5" -> {
    22. //方法一
    23. System.out.println("退出");
    24. break loop;
    25. //方法二
    26. /*System.out.println("退出");
    27. System.exit(0);*/
    28. }
    29. default -> System.out.println("没有这个选项");
    30. }
    31. }
    32. }
    33. //添加学生
    34. public static void addStudent(ArrayList list){
    35. System.out.println("添加学生");
    36. Scanner sc = new Scanner(System.in);
    37. System.out.println("请输入学的的ID");
    38. String id = null;
    39. //判断ID是否唯一
    40. while (true) {
    41. id = sc.next();
    42. boolean flag = contains(list, id);
    43. if(flag){
    44. System.out.println("id已经存在,请重新录入");
    45. }else {
    46. break;
    47. }
    48. }
    49. System.out.println("请输入学的的姓名");
    50. String name = sc.next();
    51. System.out.println("请输入学的的年龄");
    52. int age = sc.nextInt();
    53. System.out.println("请输入学的的家庭住址");
    54. String address = sc.next();
    55. //创建学生对象,存入学生信息
    56. Student s = new Student(id,name,age,address);
    57. //将学生对象加入到集合中
    58. list.add(s);
    59. System.out.println("\n学生信息添加成功");
    60. }
    61. //删除学生
    62. public static void deleteStudent(ArrayList list){
    63. System.out.println("删除学生");
    64. Scanner sc = new Scanner(System.in);
    65. System.out.println("请输入要删除的学生ID");
    66. String id = sc.next();
    67. //查询ID在集合中的索引
    68. int index = getIndex(list, id);
    69. //判断索引值
    70. if(index>=0){
    71. //如果返回值>=0,删除学生信息
    72. list.remove(index);
    73. System.out.println("ID为"+index+"的学生删除成功");
    74. }else {
    75. System.out.println("ID不存在,删除失败");
    76. }
    77. }
    78. //修改学生
    79. public static void updateStudent(ArrayList list){
    80. System.out.println("修改学生");
    81. Scanner sc = new Scanner(System.in);
    82. System.out.println("请输入要修改学生的ID");
    83. String id = sc.next();
    84. int index = getIndex(list, id);
    85. if(index==-1){
    86. System.out.println("要修改的ID:"+id+"不存在,请重新输入");
    87. return;
    88. }
    89. Student stu = list.get(index);
    90. System.out.println("请输入新的学生姓名");
    91. String newName = sc.next();
    92. stu.setName(newName);
    93. System.out.println("请输入新的学生年龄");
    94. int newAge = sc.nextInt();
    95. stu.setAge(newAge);
    96. System.out.println("请输入要新的学生家庭住址");
    97. String newAddress = sc.next();
    98. stu.setAddress(newAddress);
    99. System.out.println("学生信息修改成功");
    100. }
    101. //查询学生
    102. public static void queryStudent(ArrayList list){
    103. System.out.println("查询学生");
    104. if(list.size() == 0){
    105. System.out.println("当前无学生信息,请添加后再查询");
    106. return;
    107. }
    108. System.out.println("id\t\t姓名\t年龄\t家庭住址");
    109. for (int i = 0; i < list.size(); i++) {
    110. Student stu = list.get(i);
    111. System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getAge()+"\t"+stu.getAddress());
    112. }
    113. }
    114. //判断id是否唯一
    115. public static boolean contains(ArrayList list,String id){
    116. /*for (int i = 0; i < list.size(); i++) {
    117. Student stu = list.get(i);
    118. String sid = stu.getId();
    119. if(sid.equals(id)){
    120. return true;
    121. }
    122. }
    123. return false;*/
    124. return getIndex(list,id) >=0;
    125. }
    126. //通过ID获取索引的方法
    127. public static int getIndex(ArrayList list,String id){
    128. //遍历集合
    129. for (int i = 0; i < list.size(); i++) {
    130. //获取每一个学生对象
    131. Student stu = list.get(i);
    132. //获取每一个学生对象ID
    133. String sid = stu.getId();
    134. //集合中学生ID和输入的学生ID进行比较
    135. if(sid.equals(id)){
    136. //存在,返回索引
    137. return i;
    138. }
    139. }
    140. //循环结束,不存在,返回-1
    141. return -1;
    142. }
    143. }

  • 相关阅读:
    Flutter安卓混淆的相关问题
    Effective Java 第二版第11章 序列化
    10.SpringBoot实战演练
    【(难)828. 统计子串中的唯一字符】(HashMap)
    叶酸&适配体修饰DNA纳米载体|CdS纳米颗粒修饰DNA|科研试剂
    java反射的使用
    【Android -- 开发】一份详细的 Android 知识体系
    【MySQL】DML
    生产管理系统
    千年荒漠变绿洲,看沙漠“卫士”携手昇腾AI植起绿色希望
  • 原文地址:https://blog.csdn.net/qq_61228493/article/details/127423669