二、实验目的 学会分析“学生投票系统”程序任务实现的逻辑思路。 能够独立完成“学生投票系统”程序的源代码编写、编译、运行。 掌握static关键字的使用。 区分实例变量和类变量、实例方法和类方法的区别。 软件框架的认识和综合项目的应用能力的培养。 三、实验步骤及实验数据(源代码) 1.分析问题 (1)通过任务描述可知,需要定义一个参与投票的学生类Voter类,它具有姓名,最大投票数,当前投票总数,和投票意见。 (2)因为所有参与投票的学生都会改变同一个数据,即投票次数,一次把它定义成静态变量:private static int count; (3)另外,为了防止学生重复投票,必须保存参与投票的学生信息,可采用一个集合来存放已经投票的学生对象。 private static Set<Voter> voters = new HashSet<Voter>(); ### 《学生投票系统(Java)》实验报告 #### 实验目的 本次实验的主要目标有以下几点: 1. **理解并分析**:“学生投票系统”的程序实现逻辑。 2. **编程实践**:能够独立地完成“学生投票系统”程序的源代码编写、编译以及运行。 3. **掌握静态关键字**:熟悉`static`关键字在Java中的使用场景及其功能。 4. **区分实例变量与类变量、实例方法与类方法**:明确这两种变量和方法之间的差异及其应用场景。 5. **软件框架的认知与项目应用能力**:通过对该实验的学习,培养对软件框架的基本认识以及在实际项目中的应用能力。 #### 实验步骤及实验数据(源代码) ##### 分析问题 根据任务需求,首先需要定义一个学生类`Voter`,该类具备以下几个属性: - 姓名`name` - 最大投票数`MAX_COUNT` - 当前投票总数`count` - 投票意见`answer` 由于所有参与投票的学生都将影响同一数据——投票次数,因此将投票次数定义为静态变量`private static int count`。此外,为了避免学生重复投票,需要存储已投票学生的相关信息。这里选择使用一个`HashSet`集合`private static Set<Voter> voters = new HashSet<Voter>();`来保存已投票的学生对象。 ##### 设计与实现 接下来,我们将具体实现这个系统的核心逻辑。 ```java package ShiYan.Voter; import java.util.HashSet; import java.util.Set; public class Voter { // 属性定义 private static final int MAX_COUNT = 100; // 最大投票数 private static int count; // 当前投票总数 private static Set<Voter> voters = new HashSet<Voter>(); // 已投票的学生集合 private String name; // 学生姓名 private String answer; // 投票意见 // 构造方法 public Voter(String name) { this.name = name; } // 投票方法 public void voterFor(String answer) { if (count == MAX_COUNT) { // 判断是否达到最大投票数 System.out.println("投票结束。"); return; } if (voters.contains(this)) { // 防止重复投票 System.out.println(name + ",请勿重复投票。"); } else { this.answer = answer; count++; // 投票次数加一 voters.add(this); // 添加到已投票集合中 System.out.println(name + " 感谢你的投票。"); } } // 打印投票结果的方法 public static void printVoterResult() { System.out.println("当前投票数为:" + count); System.out.println("参与投票的学生和结果如下:"); for (Voter voter : voters) { System.out.println(voter.name + " 意见 " + voter.answer); } } // 主方法 public static void main(String[] args) { // 创建参与投票的学生对象 Voter tom = new Voter("Tom"); Voter jack = new Voter("Jack"); Voter mike = new Voter("Mike"); // 学生开始投票 tom.voterFor("是"); tom.voterFor("否"); // 应该提示不可重复投票 jack.voterFor("是"); mike.voterFor("是"); // 打印投票结果 printVoterResult(); } } ``` #### 实验总结 1. **整体框架**:在设计程序时,我们首先从整体功能的角度考虑软件架构,确保系统的完整性和可行性。 2. **关键技术掌握**:通过实践,加深了对`static`关键字的理解,并且掌握了如何正确地区分实例变量和类变量、实例方法和类方法。 3. **测试调试**:通过具体的测试数据,验证了程序的功能和逻辑是否符合预期。 4. **软件工程思维**:本实验不仅强化了编程技能,还培养了从全局角度思考问题的能力,以及在实践中解决问题的实际操作能力。 5. **项目管理能力**:通过完成整个项目,学习了如何合理规划时间、分配资源等项目管理方面的知识。 通过此次实验,我们不仅提高了自己的编程能力,还增强了团队协作和项目管理的能力,对于今后的学习和工作都具有重要的意义。
- 粉丝: 461
- 资源: 28
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助