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


案例学习:学生管理系统

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

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

案例代码:

StudentMethod类:

package cn.itcast.studentpack;

public class StudentMethod {

	private long sno;
	private String name;
	private int age;
	private String address;

	public StudentMethod() {
	}

	public StudentMethod(long sno, String name, int age, String address) {
		this.sno = sno;
		this.name = name;
		this.age = age;
		this.address = address;
	}

	public long getSno() {
		return sno;
	}

	public void setSno(long sno) {
		this.sno = sno;
	}

	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 getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}
}

StudentTest类:

/**
 * @author LHB 学生管理系统 编写一个模拟学生管理系统程序,可以实现对学生信息的添加、删除、修改和查询功能,
 *         要求使用List集合存储自定义的对象集合,并熟练使用List集合的中常用方法实现相关的操作。
 */
package cn.itcast.studentpack;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class StudentTest {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		List<StudentMethod> list = new ArrayList<>();

		while (true) {
			printInfo();
			switch (sc.nextInt()) {
			case 1:
				showStudent(list);
				break;
			case 2:
				addStudent(list);
				break;
			case 3:
				deleteStudent(list);
				break;
			case 4:
				updateStudent(list);
				System.out.println("修改学生");
				break;
			case 5:
				System.out.println("退出系统");
				System.exit(0);
				break;
			default:
				System.out.println("输入有误,请重新输入!");
				break;
			}
		}
	}

	public static void printInfo() {
		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("请输入你的选择:");
	}

	private static void addStudent(List<StudentMethod> list) {
		StudentMethod s = new StudentMethod();
		Scanner sc = new Scanner(System.in);
		long sno;
		while (true) {
			System.out.print("学号:");
			sno = sc.nextLong();
			boolean flag = false;
			for (StudentMethod stu : list) {
				if (sno == stu.getSno()) {
					flag = true;
					break;
				}
			}
			if (flag) {
				System.out.println("学号重复了!请重新输入:");
			} else {

				System.out.print("姓名:");
				String name = sc.next();
				System.out.print("年龄:");
				int age = sc.nextInt();
				System.out.print("地址:");
				String address = sc.next();

				s.setSno(sno);
				s.setName(name);
				s.setAge(age);
				s.setAddress(address);
				list.add(s);
				System.out.println("添加完成!\n");
				break;
			}
		}
	}

	private static void deleteStudent(List<StudentMethod> list) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要删除的学生的学号:");
		long sno = sc.nextLong();
		int idx = -1;
		for (int i = 0; i < list.size(); i++) {
			StudentMethod stu = list.get(i);
			if (sno == stu.getSno()) {
				idx = i;
				break;
			}
		}
		if (idx != -1) {
			System.out.println("删除成功!\n");
			list.remove(idx);
		} else {
			System.out.println("没有此位同学的信息!请重新选择!");
		}
	}

	private static void updateStudent(List<StudentMethod> list) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入要修改的学生的学号:");
		long sno = sc.nextLong();
		int idx = -1;
		for (int i = 0; i < list.size(); i++) {
			StudentMethod s = list.get(i);
			if (s.getSno() == sno) {
				idx = i;
				break;
			}
		}
		if (idx != -1) {
			StudentMethod s = new StudentMethod();
			System.out.println("修改姓名:");
			String name = sc.next();
			s.setName(name);
			System.out.println("修改年龄:");
			int age = sc.nextInt();
			s.setAge(age);
			System.out.println("修改地址:");
			String address = sc.next();
			s.setAddress(address);

			list.set(idx, s);
			System.out.println("修改完成!\n");
		} else {
			System.out.println("没有此同学的信息,请重新操作!\n");
		}

	}

	private static void showStudent(List<StudentMethod> list) {
		boolean empty = isEmpty(list);
		if (empty) {
			System.out.println("不好意思,目前没有学生信息可供查询,请回去重新选择你的操作!\n");
			return;
		} else {
			for (StudentMethod student : list) {
				System.out.println(student.getSno() + ", " + student.getName() + ", " + student.getAge() + ", "
						+ student.getAddress());
			}
			System.out.println();
		}
	}

	private static boolean isEmpty(List<StudentMethod> list) {
		if (list.isEmpty())
			return true;
		else
			return false;
	}
}

案例学习:斗地主洗牌

斗地主洗牌(参考书籍)

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

案例代码:

playcards类:

/**
 * @author LHB  斗地主
 *
 */
package cn.cards;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;

public class playcards {
	public static void main(String[] args) {
		// 花色
		ArrayList<String> color = new ArrayList<String>();
		color.add("♠");
		color.add("♥");
		color.add("♦");
		color.add("♣");
		// 排序
		ArrayList<String> number = new ArrayList<String>();
		for (int i = 3; i <= 10; i++) {
			number.add(i + "");
		}
		number.add("J");
		number.add("Q");
		number.add("K");
		number.add("A");
		number.add("2");
		HashMap<Integer, String> map = new HashMap<Integer, String>();
		int index = 0;
		for (String thisNumber : number) {
			for (String thisColor : color) {
				map.put(index++, thisColor + thisNumber);
			}
		}
		// 大小王
		map.put(index++, "小☺");
		map.put(index++, "大☻");
		ArrayList<Integer> cards = new ArrayList<Integer>();
		for (int i = 0; i <= 53; i++) {
			cards.add(i);
		}
		Collections.shuffle(cards);
		ArrayList<Integer> iPlayer = new ArrayList<Integer>();
		ArrayList<Integer> iPlayer2 = new ArrayList<Integer>();
		ArrayList<Integer> iPlayer3 = new ArrayList<Integer>();
		ArrayList<Integer> iSecretCards = new ArrayList<Integer>();
		for (int i = 0; i < cards.size(); i++) {
			if (i >= 51) {
				iSecretCards.add(cards.get(i));
			} else {
				if (i % 3 == 0) {
					iPlayer.add(cards.get(i));
				} else if (i % 3 == 1) {
					iPlayer2.add(cards.get(i));
				} else {
					iPlayer3.add(cards.get(i));
				}
			}
		}
		Collections.sort(iPlayer);
		Collections.sort(iPlayer2);
		Collections.sort(iPlayer3);
		ArrayList<String> sPlayer = new ArrayList<String>();
		ArrayList<String> sPlayer2 = new ArrayList<String>();
		ArrayList<String> sPlayer3 = new ArrayList<String>();
		ArrayList<String> sSecretCards = new ArrayList<String>();
		for (Integer key : iPlayer) {
			sPlayer.add(map.get(key));
		}
		for (Integer key : iPlayer2) {
			sPlayer2.add(map.get(key));
		}
		for (Integer key : iPlayer3) {
			sPlayer3.add(map.get(key));
		}
		for (Integer key : iSecretCards) {
			sSecretCards.add(map.get(key));
		}
		// 显示
		System.out.println("玩家1:" + sPlayer);
		System.out.println("玩家2:" + sPlayer2);
		System.out.println("玩家3:" + sPlayer3);
		System.out.println("底牌:" + sSecretCards);
	}
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式up

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值