如何用Java制作小型投票统计系统

该系统用Java实现了候选人管理、投票记录与结果统计。1. 定义候选人名单并初始化得票数;2. 使用Map存储候选人及其票数,Set记录已投票用户防止重复;3. 提供vote方法校验用户是否重复投票及候选人有效性,成功则更新票数;4. showResults方法按票数降序显示结果;5. 主程序测试创建候选人、模拟投票,输出最终排名。核心逻辑清晰,便于扩展图形界面或持久化功能。

如何用java制作小型投票统计系统

制作一个小型投票统计系统可以用Java实现基本的候选人管理、投票记录和结果统计功能。下面是一个简单但完整的实现思路和代码示例,适合初学者理解和扩展。

1. 系统需求分析

这个小型系统需要实现以下功能:

定义候选人名单接收用户投票防止重复投票(可选)统计各候选人的得票数显示最终投票结果

2. 候选人与投票数据结构设计

使用Map来存储候选人及其得票数,键为候选人姓名,值为票数。同时可以使用Set记录已投票的用户ID,防止重复投票。

import java.util.*;public class VoteSystem {    // 存储候选人姓名 -> 得票数    private Map votes = new HashMap();    // 记录已投票的用户ID,防止重复投票    private Set votedUsers = new HashSet();    // 初始化候选人    public VoteSystem(List candidates) {        for (String candidate : candidates) {            votes.put(candidate, 0);        }    }

3. 投票与统计功能实现

提供投票方法,检查用户是否已投过票,并更新计数。

立即学习“Java免费学习笔记(深入)”;

    // 用户投票    public boolean vote(String userId, String candidate) {        if (votedUsers.contains(userId)) {            System.out.println("用户 " + userId + " 已经投过票了!");            return false;        }        if (!votes.containsKey(candidate)) {            System.out.println("候选人 " + candidate + " 不存在!");            return false;        }        votes.put(candidate, votes.get(candidate) + 1);        votedUsers.add(userId);        System.out.println("用户 " + userId + " 成功投票给 " + candidate);        return true;    }    // 显示当前投票结果    public void showResults() {        System.out.println("n=== 当前投票结果 ===");        votes.entrySet().stream()             .sorted(Map.Entry.comparingByValue().reversed())             .forEach(entry ->                  System.out.println(entry.getKey() + " : " + entry.getValue() + " 票")             );    }}

4. 主程序测试

编写主函数进行测试。

public class Main {    public static void main(String[] args) {        // 定义候选人        List candidates = Arrays.asList("张三", "李四", "王五");        // 创建投票系统        VoteSystem system = new VoteSystem(candidates);        // 模拟用户投票        system.vote("user1", "张三");        system.vote("user2", "李四");        system.vote("user3", "张三");        system.vote("user1", "李四"); // 重复投票,应被拒绝        system.vote("user4", "王五");        system.vote("user5", "张三");        // 显示结果        system.showResults();    }}

运行结果示例:

用户 user1 成功投票给 张三用户 user2 成功投票给 李四用户 user3 成功投票给 张三用户 user1 已经投过票了!用户 user4 成功投票给 王五用户 user5 成功投票给 张三

=== 当前投票结果 ===张三 : 3 票李四 : 1 票王五 : 1 票

基本上就这些。你可以在此基础上加入图形界面(Swing/JavaFX)、文件保存数据或命令行交互,让系统更完整。核心逻辑清晰,易于维护和扩展。

以上就是如何用Java制作小型投票统计系统的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/32043.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
vivoS系列手机应用卸载不了怎么办?清除预装软件的实用教程
上一篇 2026年10月6日 19:08:51
windows10 Linux子系统(wsl)文件目录
下一篇 2025年11月8日 06:14:42

相关推荐

  • 男子传保时捷女销冠不雅内容被拘:被判行政拘留五日

    青岛%ignore_a_1%中心牟女士近期遭遇AI合成虚假视频的恶意诽谤,她勇敢地向造谣者“宣战”。最新消息显示,一名在微信群中传播相关不雅视频及图文的男子,已被警方依法处以行政拘留。 受害者不再沉默!维权之路如何走? 1、主动出击固定证据:牟女士发现被诽谤后,并未选择沉默,而是第一时间收集了相关虚…

    2026年10月6日
    000
  • win10关机后鼠标键盘灯还亮着_解决win10关机后键鼠灯亮的问题

    win10关机后鼠标键盘灯还亮着_解决win10关机后键鼠灯亮的问题win10关机后鼠标键盘灯还亮着_解决win10关机后键鼠灯亮的问题win10关机后鼠标键盘灯还亮着_解决win10关机后键鼠灯亮的问题win10关机后鼠标键盘灯还亮着_解决win10关机后键鼠灯亮的问题

    电脑关机后鼠标键盘灯仍亮,是因USB供电未完全切断。1、通过设备管理器禁用键盘鼠标的“允许此设备唤醒计算机”选项;2、在电源选项中关闭“快速启动”功能;3、进入BIOS设置,将ErP设为Enabled或关闭Always On USB,以实现彻底断电。 如果您发现电脑已经关机,但鼠标和键盘的指示灯依然…

    2026年10月6日 • 用户投稿
    000
  • 强化硬件领域布局,OpenAI以65亿美元收购AI设备初创公司

    强化硬件领域布局,OpenAI以65亿美元收购AI设备初创公司强化硬件领域布局,OpenAI以65亿美元收购AI设备初创公司强化硬件领域布局,OpenAI以65亿美元收购AI设备初创公司强化硬件领域布局,OpenAI以65亿美元收购AI设备初创公司

    近期,openai 宣布将以全股票形式完成对 io 的收购,这家由 openai ceo 萨姆·奥特曼(sam altman)以及前苹果首席设计官乔尼·艾维(jony ive)联手创办的 ai 设备初创企业。该笔交易的估值高达 65 亿美元,这不仅是 openai 历史上规模最大的一次收购,也标志着…

    2026年10月6日 • 用户投稿
    200
  • 构建Java文件统计类:实现文件行数与内容匹配计数

    构建Java文件统计类:实现文件行数与内容匹配计数构建Java文件统计类:实现文件行数与内容匹配计数构建Java文件统计类:实现文件行数与内容匹配计数构建Java文件统计类:实现文件行数与内容匹配计数

    本文详细指导如何在Java中构建一个FileStats类,用于统计文件的总行数以及查找包含特定文本内容的行数。教程涵盖了类的设计、方法实现、文件I/O操作的最佳实践(如try-with-resources),并着重纠正了在使用Scanner读取文件时常见的初始化错误,确保代码的健壮性和正确性。 1.…

    2026年10月6日 • 用户投稿
    000
  • 笔灵ai降重文件到底多久生成?

    笔灵ai降重文件到底多久生成?笔灵ai降重文件到底多久生成?笔灵ai降重文件到底多久生成?笔灵ai降重文件到底多久生成?

    笔灵ai降重文件的生成时间通常为几秒到几分钟,具体取决于文件大小、服务器负载和网络连接。小文件(几百到几千字)几秒到一分钟,大文件(几万字以上)几分钟甚至更长时间。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 关于笔灵AI降重文件生成时间…

    2026年10月6日 • 用户投稿
    000
  • win10怎么映射网络驱动器_win10映射网络驱动器操作教程

    win10怎么映射网络驱动器_win10映射网络驱动器操作教程win10怎么映射网络驱动器_win10映射网络驱动器操作教程win10怎么映射网络驱动器_win10映射网络驱动器操作教程win10怎么映射网络驱动器_win10映射网络驱动器操作教程

    将网络驱动器映射到本地可简化局域网共享文件夹访问。1、通过文件资源管理器:打开“此电脑”,点击“映射网络驱动器”,设置驱动器号、输入路径如IP共享名,勾选自动重新连接及使用其他凭据(如需),完成即可;2、通过“运行”命令:Win+R输入共享路径,连接后右键文件夹选择“映射网络驱动器”,按向导完成;3…

    2026年10月6日 • 用户投稿
    100
  • 两刀见祖宗!《空洞骑士:丝之歌》Steam国区已多半差评

    两刀见祖宗!《空洞骑士:丝之歌》Steam国区已多半差评两刀见祖宗!《空洞骑士:丝之歌》Steam国区已多半差评两刀见祖宗!《空洞骑士:丝之歌》Steam国区已多半差评两刀见祖宗!《空洞骑士:丝之歌》Steam国区已多半差评

    《空洞骑士:丝之歌》于9月4日正式上线,结束了漫长的等待。team cherry的这款续作一经推出便迅速登顶steam热销榜,火爆程度可见一斑,甚至因大量玩家涌入导致多个数字平台短暂瘫痪。 然而,当粉丝们满怀期待地投入游戏后,负面反馈也随之而来。不少玩家抱怨游戏难度过高,“一刀送走,两刀归西”成为社…

    2026年10月6日 • 用户投稿
    300
  • 如何解决Laravel邮件发送的复杂性?MailerSendLaravelDriver与Composer助你高效管理邮件服务

    如何解决Laravel邮件发送的复杂性?MailerSendLaravelDriver与Composer助你高效管理邮件服务如何解决Laravel邮件发送的复杂性?MailerSendLaravelDriver与Composer助你高效管理邮件服务如何解决Laravel邮件发送的复杂性?MailerSendLaravelDriver与Composer助你高效管理邮件服务如何解决Laravel邮件发送的复杂性?MailerSendLaravelDriver与Composer助你高效管理邮件服务

    可以通过一下地址学习composer:学习地址 在日常的Laravel项目开发中,邮件发送是一个再常见不过的需求。无论是用户注册验证、密码重置通知,还是营销活动邮件,我们都离不开它。起初,我使用Laravel内置的邮件功能,配合一些SMTP服务,一切都还算顺利。 然而,随着项目需求的增长,问题开始浮…

    2026年10月6日 • 用户投稿
    100
  • win8桌面背景怎么更换 Win8个性化设置更换桌面壁纸方法

    win8桌面背景怎么更换 Win8个性化设置更换桌面壁纸方法win8桌面背景怎么更换 Win8个性化设置更换桌面壁纸方法win8桌面背景怎么更换 Win8个性化设置更换桌面壁纸方法win8桌面背景怎么更换 Win8个性化设置更换桌面壁纸方法

    1、通过右键菜单选择个性化进入桌面背景设置,可从系统库或本地添加图片并调整显示方式;2、在开始屏幕搜索“背景”快速跳转至设置页面;3、通过控制面板的外观和个性化选项进入更改桌面背景界面,完成图片选择与应用。 如果您希望为您的Windows 8系统桌面更换一张新的背景图片,但不确定如何操作,则可以通过…

    2026年10月6日 • 用户投稿
    800
  • DeepSeek如何与Premiere结合 智能剪辑视频全流程教学

    DeepSeek如何与Premiere结合 智能剪辑视频全流程教学DeepSeek如何与Premiere结合 智能剪辑视频全流程教学DeepSeek如何与Premiere结合 智能剪辑视频全流程教学DeepSeek如何与Premiere结合 智能剪辑视频全流程教学

    deepseek与premiere结合可以大大简化智能剪辑视频的流程。具体步骤是:1. 安装deepseek和premiere;2. 将视频导入deepseek并生成时间码列表;3. 在premiere中创建项目并导入视频;4. 使用deepseek的时间码在premiere中进行剪辑;5. 进行人…

    2026年10月6日 • 用户投稿
    200
  • 三分钟学会用 DeepSeek 生成 Gamma 炫酷 PPT

    三分钟学会用 DeepSeek 生成 Gamma 炫酷 PPT三分钟学会用 DeepSeek 生成 Gamma 炫酷 PPT三分钟学会用 DeepSeek 生成 Gamma 炫酷 PPT三分钟学会用 DeepSeek 生成 Gamma 炫酷 PPT

    deepseek 是强大的 ai 工具,可与 gamma 结合生成炫酷 ppt,只需三分钟。1. 打开 deepseek,输入主题。2. 选择生成的文本和图像,复制。3. 在 gamma 中创建新 ppt,粘贴内容并调整布局和样式。使用动画、独特字体和互动元素可增强 ppt 吸引力。 ☞☞☞AI 智…

    2026年10月6日 • 用户投稿
    000
  • Java文件内容统计:实现行数与关键词查找功能及常见陷阱

    Java文件内容统计:实现行数与关键词查找功能及常见陷阱Java文件内容统计:实现行数与关键词查找功能及常见陷阱Java文件内容统计:实现行数与关键词查找功能及常见陷阱Java文件内容统计:实现行数与关键词查找功能及常见陷阱

    本文详细介绍了如何使用Java编写一个FileStats类,用于统计文本文件的总行数和包含特定关键词的行数。重点讲解了在文件处理中,Scanner对象正确初始化以读取文件内容的最佳实践,并指出常见的Scanner(String)误用陷阱,通过提供修正后的代码示例,帮助开发者构建健壮的文件统计功能。 …

    2026年10月6日 • 用户投稿
    000
  • win10怎么设置才能盖上盖子不休眠_win10笔记本合盖不睡眠的电源选项设置

    win10怎么设置才能盖上盖子不休眠_win10笔记本合盖不睡眠的电源选项设置win10怎么设置才能盖上盖子不休眠_win10笔记本合盖不睡眠的电源选项设置win10怎么设置才能盖上盖子不休眠_win10笔记本合盖不睡眠的电源选项设置win10怎么设置才能盖上盖子不休眠_win10笔记本合盖不睡眠的电源选项设置

    合上笔记本盖子后电脑继续运行的设置方法:通过控制面板或系统设置将“合盖功能”在电池和电源状态下均设为“不采取任何操作”,或使用管理员权限的命令行执行powercfg命令修改电源策略,确保系统不会自动休眠。 如果您希望在合上笔记本盖子后电脑仍能继续运行,例如进行文件下载或远程访问,但系统却自动进入休眠…

    2026年10月6日 • 用户投稿
    100
  • 如何使用Composer引入Handlebars.php,告别PHP模板代码的混乱与低效

    如何使用Composer引入Handlebars.php,告别PHP模板代码的混乱与低效如何使用Composer引入Handlebars.php,告别PHP模板代码的混乱与低效如何使用Composer引入Handlebars.php,告别PHP模板代码的混乱与低效如何使用Composer引入Handlebars.php,告别PHP模板代码的混乱与低效

    可以通过一下地址学习composer:学习地址 告别 PHP 模板代码的“意大利面”,拥抱清晰与高效! 相信很多PHP开发者都曾遇到过这样的场景:为了动态生成HTML页面,我们在PHP文件中直接嵌入大量的HTML标签,并用 echo、print 或者短标签 = … ?> 来输出变量和控制逻…

    2026年10月6日 • 用户投稿
    000
  • Java加密算法库BouncyCastle使用教程

    Java加密算法库BouncyCastle使用教程Java加密算法库BouncyCastle使用教程Java加密算法库BouncyCastle使用教程Java加密算法库BouncyCastle使用教程

    bouncycastle是java平台中用于扩展加密能力的第三方库,当jdk自带的jce无法满足高级、小众或特定国际标准的加密需求时,它成为首选解决方案。其核心使用步骤为:1. 在项目中引入bouncycastle依赖,如maven配置bcprov-jdk18on和bcpkix-jdk18on;2.…

    2026年10月6日 • 用户投稿
    100
  • 思必驰发布 AI 办公本 X5 系列:以多智能体协作与端侧大模型重构会议体验

    日前,思必驰正式发布全新一代 ai 办公本 x5 系列。作为首款实现大模型端侧完整部署的柔彩屏办公设备,x5 凭借多智能体协同与离线运行大模型等前沿技术,全面优化会议办公场景体验,推动办公模式由“记录”向“决策”升级跃迁。 X5 的核心亮点在于打造了“记录 – 归纳 – 决策…

    2026年10月6日
    000
  • win10输入法图标不见了怎么办_win10输入法图标恢复教程

    首先检查任务栏设置中“语言栏”是否启用,再通过控制面板确认“高级文字服务”开启,并确保ctfmon.exe进程运行;若无效,则在语言设置中重新添加微软拼音输入法,并排查第三方软件冲突导致的问题。 如果您发现Windows 10任务栏上的输入法图标突然消失,导致无法切换中英文输入状态,这可能是由于系统…

    2026年10月6日
    000
  • 如何用Java开发小型论坛帖子搜索功能

    答案是:通过定义Post类存储帖子信息,使用ArrayList管理帖子,实现按关键词在标题和内容中不区分大小写搜索,并支持多关键词同时匹配,最后通过测试验证功能正确性。 实现一个小型论坛的帖子搜索功能,不需要复杂的框架也能做到。核心思路是:用户输入关键词,系统在帖子标题和内容中匹配,返回相关结果。以…

    2026年10月6日
    100
  • Spring Boot 应用中加载资源文件的最佳实践

    Spring Boot 应用中加载资源文件的最佳实践Spring Boot 应用中加载资源文件的最佳实践Spring Boot 应用中加载资源文件的最佳实践Spring Boot 应用中加载资源文件的最佳实践

    本文旨在探讨Spring Boot应用中资源文件加载的最佳实践,尤其针对将应用打包为JAR后传统方式失效的问题。我们将详细介绍如何利用Spring Framework提供的ClassPathResource和FileCopyUtils工具类,以稳定可靠的方式读取src/main/resources目…

    2026年10月6日 • 用户投稿
    000
  • composer提示“curl error 60”的SSL证书问题如何彻底解决

    composer提示“curl error 60”的SSL证书问题如何彻底解决composer提示“curl error 60”的SSL证书问题如何彻底解决composer提示“curl error 60”的SSL证书问题如何彻底解决composer提示“curl error 60”的SSL证书问题如何彻底解决

    答案是下载并配置CA证书包。首先从https://curl.se/ca/cacert.pem下载cacert.pem,保存至指定路径如C:phpextrasssl;然后在php.ini中设置curl.cainfo和openssl.cafile指向该文件;最后重启服务并通过composer diagn…

    2026年10月6日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信