班级投票系统
This commit is contained in:
95
src/chapter3/demo34/Voter.java
Normal file
95
src/chapter3/demo34/Voter.java
Normal file
@@ -0,0 +1,95 @@
|
||||
package chapter3.demo34;
|
||||
|
||||
/**
|
||||
* Voter类代表一个投票者
|
||||
*/
|
||||
public class Voter {
|
||||
// 最大投票人数
|
||||
private static final int MAX_COUNT = 50;
|
||||
// 当前投票人数
|
||||
private static int count = 0;
|
||||
// 存储所有投票者的数组
|
||||
private static Voter[] voters = new Voter[MAX_COUNT];
|
||||
|
||||
// 投票者姓名
|
||||
private String name;
|
||||
// 投票意见(true表示赞同,false表示反对)
|
||||
private boolean opinion;
|
||||
|
||||
/**
|
||||
* 构造方法
|
||||
* @param name 投票者姓名
|
||||
*/
|
||||
public Voter(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* 投票方法
|
||||
* @param opinion 投票意见
|
||||
*/
|
||||
public void vote(boolean opinion) {
|
||||
// 检查是否达到最大投票人数
|
||||
if (count >= MAX_COUNT) {
|
||||
System.out.println("投票已结束,已达到最大投票数。");
|
||||
return;
|
||||
}
|
||||
|
||||
// 检查是否重复投票
|
||||
if (hasVoted(this.name)) {
|
||||
System.out.println(name + ",请勿重复投票。");
|
||||
return;
|
||||
}
|
||||
|
||||
// 记录投票意见
|
||||
this.opinion = opinion;
|
||||
voters[count] = this;
|
||||
count++;
|
||||
System.out.println(name + ",感谢您的投票。");
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查指定姓名的人是否已经投票
|
||||
* @param name 要检查的姓名
|
||||
* @return 如果已投票返回true,否则返回false
|
||||
*/
|
||||
private static boolean hasVoted(String name) {
|
||||
for (int i = 0; i < count; i++) {
|
||||
if (voters[i].name.equals(name)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* 打印投票结果
|
||||
*/
|
||||
public static void printResults() {
|
||||
System.out.println("===========投票结果===========");
|
||||
System.out.println("总投票数:" + count);
|
||||
int agreeCount = 0;
|
||||
for (int i = 0; i < count; i++) {
|
||||
System.out.println(voters[i].name + " 的意见:" + (voters[i].opinion ? "赞同" : "反对"));
|
||||
if (voters[i].opinion) {
|
||||
agreeCount++;
|
||||
}
|
||||
}
|
||||
System.out.println("赞同人数:" + agreeCount);
|
||||
System.out.println("反对人数:" + (count - agreeCount));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取投票者姓名
|
||||
* @return 投票者姓名
|
||||
*/
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
// 静态初始化块,在类加载时执行
|
||||
static {
|
||||
System.out.println("Voter类已加载,准备开始投票。");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user