• 【java养成】:案例:学生管理系统、斗地主洗牌



    案例学习:学生管理系统

         学生管理系统(参考书籍)

    1. 系统首页:用于显示系统的所有操作,并根据用户在控制台的输入选择需要使用的功能。
    2. 查询功能:用户选择该功能后,在控制台打印所有学生的信息。
    3. 添加功能:用户选择该功能后,要求用户在控制台输入学生学号、姓名、年龄和居住地的基本信息。在输入学号时,判断学号是否被占用,如果被占用则添加失败,并给出相应的提示,反之则添加成功
    4. 修改功能:用户选择该功能后,提示用户在控制台输入需要修改的学生的学号、姓名、年龄和居住地学生信息,并使用输入的学生学号判断是否有此人,如果有则修改原有的学生信息,反正则提示需要修改的学生信息不存在。
    5. 退出功能:用户选择该功能后,程序正常关闭。

    案例代码:

    StudentMethod类:

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

    StudentTest类:

    1. /**
    2. * @author LHB 学生管理系统 编写一个模拟学生管理系统程序,可以实现对学生信息的添加、删除、修改和查询功能,
    3. * 要求使用List集合存储自定义的对象集合,并熟练使用List集合的中常用方法实现相关的操作。
    4. */
    5. package cn.itcast.studentpack;
    6. import java.util.ArrayList;
    7. import java.util.List;
    8. import java.util.Scanner;
    9. public class StudentTest {
    10. public static void main(String[] args) {
    11. Scanner sc = new Scanner(System.in);
    12. List list = new ArrayList<>();
    13. while (true) {
    14. printInfo();
    15. switch (sc.nextInt()) {
    16. case 1:
    17. showStudent(list);
    18. break;
    19. case 2:
    20. addStudent(list);
    21. break;
    22. case 3:
    23. deleteStudent(list);
    24. break;
    25. case 4:
    26. updateStudent(list);
    27. System.out.println("修改学生");
    28. break;
    29. case 5:
    30. System.out.println("退出系统");
    31. System.exit(0);
    32. break;
    33. default:
    34. System.out.println("输入有误,请重新输入!");
    35. break;
    36. }
    37. }
    38. }
    39. public static void printInfo() {
    40. System.out.println("--------学生信息管理系统--------");
    41. System.out.println("1. 查看所有学生");
    42. System.out.println("2. 添加学生");
    43. System.out.println("3. 删除学生");
    44. System.out.println("4. 修改学生");
    45. System.out.println("5. 退出系统");
    46. System.out.println("请输入你的选择:");
    47. }
    48. private static void addStudent(List list) {
    49. StudentMethod s = new StudentMethod();
    50. Scanner sc = new Scanner(System.in);
    51. long sno;
    52. while (true) {
    53. System.out.print("学号:");
    54. sno = sc.nextLong();
    55. boolean flag = false;
    56. for (StudentMethod stu : list) {
    57. if (sno == stu.getSno()) {
    58. flag = true;
    59. break;
    60. }
    61. }
    62. if (flag) {
    63. System.out.println("学号重复了!请重新输入:");
    64. } else {
    65. System.out.print("姓名:");
    66. String name = sc.next();
    67. System.out.print("年龄:");
    68. int age = sc.nextInt();
    69. System.out.print("地址:");
    70. String address = sc.next();
    71. s.setSno(sno);
    72. s.setName(name);
    73. s.setAge(age);
    74. s.setAddress(address);
    75. list.add(s);
    76. System.out.println("添加完成!\n");
    77. break;
    78. }
    79. }
    80. }
    81. private static void deleteStudent(List list) {
    82. Scanner sc = new Scanner(System.in);
    83. System.out.println("请输入要删除的学生的学号:");
    84. long sno = sc.nextLong();
    85. int idx = -1;
    86. for (int i = 0; i < list.size(); i++) {
    87. StudentMethod stu = list.get(i);
    88. if (sno == stu.getSno()) {
    89. idx = i;
    90. break;
    91. }
    92. }
    93. if (idx != -1) {
    94. System.out.println("删除成功!\n");
    95. list.remove(idx);
    96. } else {
    97. System.out.println("没有此位同学的信息!请重新选择!");
    98. }
    99. }
    100. private static void updateStudent(List list) {
    101. Scanner sc = new Scanner(System.in);
    102. System.out.println("请输入要修改的学生的学号:");
    103. long sno = sc.nextLong();
    104. int idx = -1;
    105. for (int i = 0; i < list.size(); i++) {
    106. StudentMethod s = list.get(i);
    107. if (s.getSno() == sno) {
    108. idx = i;
    109. break;
    110. }
    111. }
    112. if (idx != -1) {
    113. StudentMethod s = new StudentMethod();
    114. System.out.println("修改姓名:");
    115. String name = sc.next();
    116. s.setName(name);
    117. System.out.println("修改年龄:");
    118. int age = sc.nextInt();
    119. s.setAge(age);
    120. System.out.println("修改地址:");
    121. String address = sc.next();
    122. s.setAddress(address);
    123. list.set(idx, s);
    124. System.out.println("修改完成!\n");
    125. } else {
    126. System.out.println("没有此同学的信息,请重新操作!\n");
    127. }
    128. }
    129. private static void showStudent(List list) {
    130. boolean empty = isEmpty(list);
    131. if (empty) {
    132. System.out.println("不好意思,目前没有学生信息可供查询,请回去重新选择你的操作!\n");
    133. return;
    134. } else {
    135. for (StudentMethod student : list) {
    136. System.out.println(student.getSno() + ", " + student.getName() + ", " + student.getAge() + ", "
    137. + student.getAddress());
    138. }
    139. System.out.println();
    140. }
    141. }
    142. private static boolean isEmpty(List list) {
    143. if (list.isEmpty())
    144. return true;
    145. else
    146. return false;
    147. }
    148. }

    案例学习:斗地主洗牌

    斗地主洗牌(参考书籍)

            编写一个斗地主的洗牌发牌程序,按照斗地主的规则完成洗牌发牌的过程。一副扑克总共有54张牌,牌面由花色和数字组成(包括J、Q、K、A字母)组成,花色有♠、♥、♦、♣ 四种,分别表示黑桃、红桃、方块、梅花,小☺、大☻分别表示小王和大王。斗地主游戏共有三位玩家参与,首先将这54张牌的顺序打乱每人轮流摸一次牌,剩余3张留作底牌,然后在控制台打印三位玩家的牌和三张底牌。

    案例代码:

    playcards类:

    1. /**
    2. * @author LHB 斗地主
    3. *
    4. */
    5. package cn.cards;
    6. import java.util.ArrayList;
    7. import java.util.Collections;
    8. import java.util.HashMap;
    9. public class playcards {
    10. public static void main(String[] args) {
    11. // 花色
    12. ArrayList color = new ArrayList();
    13. color.add("♠");
    14. color.add("♥");
    15. color.add("♦");
    16. color.add("♣");
    17. // 排序
    18. ArrayList number = new ArrayList();
    19. for (int i = 3; i <= 10; i++) {
    20. number.add(i + "");
    21. }
    22. number.add("J");
    23. number.add("Q");
    24. number.add("K");
    25. number.add("A");
    26. number.add("2");
    27. HashMap map = new HashMap();
    28. int index = 0;
    29. for (String thisNumber : number) {
    30. for (String thisColor : color) {
    31. map.put(index++, thisColor + thisNumber);
    32. }
    33. }
    34. // 大小王
    35. map.put(index++, "小☺");
    36. map.put(index++, "大☻");
    37. ArrayList cards = new ArrayList();
    38. for (int i = 0; i <= 53; i++) {
    39. cards.add(i);
    40. }
    41. Collections.shuffle(cards);
    42. ArrayList iPlayer = new ArrayList();
    43. ArrayList iPlayer2 = new ArrayList();
    44. ArrayList iPlayer3 = new ArrayList();
    45. ArrayList iSecretCards = new ArrayList();
    46. for (int i = 0; i < cards.size(); i++) {
    47. if (i >= 51) {
    48. iSecretCards.add(cards.get(i));
    49. } else {
    50. if (i % 3 == 0) {
    51. iPlayer.add(cards.get(i));
    52. } else if (i % 3 == 1) {
    53. iPlayer2.add(cards.get(i));
    54. } else {
    55. iPlayer3.add(cards.get(i));
    56. }
    57. }
    58. }
    59. Collections.sort(iPlayer);
    60. Collections.sort(iPlayer2);
    61. Collections.sort(iPlayer3);
    62. ArrayList sPlayer = new ArrayList();
    63. ArrayList sPlayer2 = new ArrayList();
    64. ArrayList sPlayer3 = new ArrayList();
    65. ArrayList sSecretCards = new ArrayList();
    66. for (Integer key : iPlayer) {
    67. sPlayer.add(map.get(key));
    68. }
    69. for (Integer key : iPlayer2) {
    70. sPlayer2.add(map.get(key));
    71. }
    72. for (Integer key : iPlayer3) {
    73. sPlayer3.add(map.get(key));
    74. }
    75. for (Integer key : iSecretCards) {
    76. sSecretCards.add(map.get(key));
    77. }
    78. // 显示
    79. System.out.println("玩家1:" + sPlayer);
    80. System.out.println("玩家2:" + sPlayer2);
    81. System.out.println("玩家3:" + sPlayer3);
    82. System.out.println("底牌:" + sSecretCards);
    83. }
    84. }

  • 相关阅读:
    使用antd的上传组件做上传附件数据校验踩坑
    2023/8/8 下午10:42:04 objectarx
    数据集成测试支持工具
    海量短视频打标问题之多模态机器学习
    29、分块式内存管理[malloc、free]
    linux 强大的搜索命令 grep
    royi-vue
    如何将图片识别为可编辑的Word文件
    【机器学习】Metrics: 衡量算法性能的关键指标
    【思科交换机命令大全,含巡检命令,网工建议收藏!】
  • 原文地址:https://blog.csdn.net/oxygen23333/article/details/127699687