Java实现学生投票系统
"感谢您阅读本篇博客!如果您觉得本文对您有所帮助或启发,请不吝点赞和分享给更多的朋友。您的支持是我持续创作的动力,也欢迎留言交流,让我们一起探讨技术,共同成长!谢谢!"
代码
import java.util.Scanner;
class info{
// 定义班干人数为3
String monitor = "DPW-班长";
String hygiene = "WYQ-卫生";
String study = "ZR-学习";
public int getW() {
return w;
}
public void setW(int w) {
this.w = w;
}
public int getD() {
return d;
}
public void setD(int d) {
this.d = d;
}
public int getZ() {
return z;
}
public void setZ(int z) {
this.z = z;
}
private int w = 0;
private int d = 0;
private int z = 0;
// 输出最后的统计
public void statistics(){
System.out.println("DPW班长有"+getD()+"票\n"+"WYQ卫生有"+getW()+"票\n"+"ZR学习有"+getZ()+"票");
if (getD() >getZ() && getD() > getW() ){
System.out.println("票数最多者为"+monitor+getD()+"票");
}else if (getW() >getD() && getW() >getD()){
System.out.println("票数最多者为"+hygiene+getW()+"票");
}else {
System.out.println("票数最多者为"+study+getZ()+"票");
}
}
}
public class Student {
public static void main(String[] args) {
// 定义学生数组 里面有10个数组
String[] Student = {
"", "A同学", "B同学", "C同学", "D同学", "E同学", "F同学", "G同学", "H同学", "Y同学", "Z同学",
};
Scanner sc = new Scanner(System.in);
info elm = new info();
System.out.println("请通过首字母来选择投票给谁" +"\n"+elm.study+"\n"+elm.monitor+"\n"+elm.hygiene+"\n"+"按E退出"+"\n"+"-----------------------------------------");
// while (true) {
for (int i = 1; i < Student.length; i++) {
System.out.println("您是第" + i + "位,姓名是" + Student[i]);
// System.out.println("请选择你要投票给谁, 1.A同学, 2.B同学, 3.C同学, 4.D同学, 5.E同学, 6.F同学, 7.G同学, 8.H同学, 9.Y同学, 10.Z同学");
String classmate = sc.nextLine(); // 接收到是谁
if (classmate.equals("D") | classmate.equals("d")) {
// 投票成功那么就将票数加1
elm.setD(elm.getD()+1);
System.out.println("目前DPW的票数是"+elm.getD());
} else if (classmate.equals("W") | classmate.equals("w")) {
elm.setW(elm.getW()+1);
System.out.println("目前WYQ的票数是"+elm.getW());
} else if (classmate.equals("Z") || classmate.equals("z")) {
elm.setZ(elm.getZ()+1);
System.out.println("目前ZR的票数是"+elm.getZ());
} else if (classmate.equals("E") | classmate.equals("e")) {
System.out.println("你选择为退出不作为票数,投票结束最终的结果为");
elm.statistics();
break;
} else {
System.out.println("检测到非法字符 退出系统");
break;
}
if(i ==10) {
System.out.println("投票结束最终的结果为");
elm.statistics();
}
}
}
}
| 以上就是完成投票系统的全部代码,花费一个晚自习的时间,还是有难点的,但是我完成此功能利用到的知识点不是很多,只有封装get和set构造方法来传递数据,整体的逻辑为 数组定义10个值为学生的姓名, 利用for循环搭配 Scanner键盘录入,遍历数组的长度,每次来确定投票给谁,给出三个“班干部”,接收输入来对票数进行统计........
0X01构思
常规 定义class info类 起手, 定义需要被投票的三个班干名称, monitor(班长), hygiene(卫生),study(学习);
而后定义票数统计w,d,z对应三个干部,并且私密private 下方也是需要通过get set 方法进行传递赋值 这里就不写出,
Statisticss是定义的是普通的方法用于最后的统计票数环节,先定义好方便后续直接使用。
Mian方法里面定义了字符串数组,放置了11个值,我们知道数组是从0开始取值,为了方便后续的for循环遍历 出现问题 我提前设置好空值,后面可以直接跳过值,暂时我也想不到更好的方式解决,只能是手动length+1;
然后引入键盘录入类Scanner实例化class info 类
class info{
String monitor = "DPW-班长";
String hygiene = "WYQ-卫生";
String study = "ZR-学习";
private int w = 0;
private int d = 0;
private int z = 0;
// 输出最后的统计
public void statistics(){
}
}
public class Student {
public static void main(String[] args) {
// 定义学生数组 里面有10个数组
String[] Student = {
"", "A同学", "B同学", "C同学", "D同学", "E同学", "F同学", "G同学", "H同学", "Y同学", "Z同学",
};
Scanner sc = new Scanner(System.in);
info elm = new info();
}
0x02核心
最核心的判断代码就在 10-38 此处需要好好理解,请跟着我的思路来一一剥析
9 行是一个提示语,告诉用户投票方式为首字母即可,并且呢利用 elm 实例出的类来成员变量,我也是多写出了一个选择那就是E 可以直接退出投票
10 行的for循环从i=1开始遍历数组,至于长度肯定就是学生数组的length,搭配键盘录入就可以起到妙蛙种子进了妙蛙屋 妙到家了,遍历10 次键盘输入就有10次
11-12 提示语句判断第几位和是哪个学生在投票, classmate 键盘录入保存的值
13-38 里面全部是if判断语句,因为我们是通过首字母判断的,所以我肯定是判断 classmate 这个字符串的值
13-16 行判断我是使用的是equals() 去做比较,只是简单的 classmate == "d" 一直无法判断到,这时候肯定要打开搜索引擎去找找办法,就找到了equal() 方式,并且考虑了 | 逻辑或的情况,因为上方的提示语句虽然是 大写的 D W Z 但不排除会有小写 d w z 的情况,所以这 这里的代码就是 if (classmate.equals("D") | classmate.equals("d")) {} 这里就可以成功的判断到值,并且进行下一步的票数累加

if (classmate.equals("D") | classmate.equals("d")) {
elm.setD(elm.getD()+1);
System.out.println("目前DPW的票数是"+elm.getD());
}
这里就是判断到用户输入而后去利用实例化类的 elm.setD 赋值 +1 而后输出打印
余下的判断同样遵循这个原理

0x03功能
统计
25-28 是定义程序的退出功能,用户 E 键 退出后我们提示 System.out.println("你选择为退出不作为票数,投票结束最终的结果为");
给到 统计票数功能方法 elm.statistics(); 我们在 class info 类定义的统计方法就派上了用场,退出后调用 statistics() 方法统计票数
break 跳出并结束当前所在循环的执行 也就是退出了整个程序

statistics 方法类逻辑就非常简单了,getD.... 拿到每位的票数,if判断进行比较出最大值,这个比较方式比较傻瓜,但我也没有找别的就这样用上了,最后的结果是无误的就可以了
public void statistics(){
System.out.println("DPW班长有"+getD()+"票\n"+"WYQ卫生有"+getW()+"票\n"+"ZR学习有"+getZ()+"票");
if (getD() >getZ() && getD() > getW() ){
System.out.println("票数最多者为"+monitor+getD()+"票");
}else if (getW() >getD() && getW() >getD()){
System.out.println("票数最多者为"+hygiene+getW()+"票");
}else {
System.out.println("票数最多者为"+study+getZ()+"票");
}
}

强制退出
此处功能是自己加入,因为考虑到非法输入 索性就强制退出即可,else 没有在我们选项中的选择就强制break。
else {
System.out.println("检测到非法字符 退出系统");
break;
}
投票10次结束
结束其实是不难统计的,计算到i=10即可,但是呢常规大家肯定都会是在在程序结束统计不就好了,程序结束的条件不就是for循环10次结束,循环结束是没错,结束了就可以统计,但是这是正常的结束才可以这样做,但程序中还存在强制退出的功能点,如果写在下方的话那么就不满足10次,10次不到可能就会执行elm.statistics(); 导致强制退出和投票结束都会输出就有两个统计。 但是满足10次又需要 正常执行完,所以我就想到了一个折中的方案,额外在 for 里面加入 判断 if的语句 对i进行判断 到10次即可,10次结束了也能正常调用统计。
if(i ==10) {
System.out.println("投票结束最终的结果为");
elm.statistics();
}

以上就是程序的全部讲解,其实还是有很多需要优化改进的地方,而且还有一些不严谨之处 比如如果有2者票数一致的情况,比如输入非法字符如何不退出整个程序还可以在当次重新输入的情况..... 还需要继续努力学习,如有不正确不恰当之处 望老师同学不吝赐教!
Java实现学生投票系统的更多相关文章
- java web 程序---投票系统
1.这里会连接数据库--JDBC的学习实例 一共有3个页面. 2.第一个页面是一个form表单,第二个页面是处理数据,第三个页面是显示页面 vote.jsp <body bgcolor=&quo ...
- JAVA | 学生选课系统
这里使用JAVA语言编写的简易的学生选课系统,展现的都是这个系统核心代码. 其中有不足欢迎批评和指正! 链接数据库的代码 package connection;//连接数据库student impor ...
- java web知识点复习,重新编写学生选课系统的先关操作。
为了复习之前学习的相关的html,javaweb等知识.自己有重新编写了一遍学生选课系统. 下面主要展示登录界面的代码,以及各个大的主页面的相关jsp. <%@ page language=&q ...
- (转)投票系统,更改ip刷票
前言 相信大家平时肯定会收到朋友发来的链接,打开一看,哦,需要投票.投完票后弹出一个页面(恭喜您,您已经投票成功),再次点击的时候发现,啊哈,您的IP(***.***.***.***)已经投过票了,不 ...
- JavaWeb项目开发案例精粹-第2章投票系统-006view层
1.index.jsp <%@ page language="java" import="java.util.*" pageEncoding=" ...
- Django写的投票系统2(转)
在上一篇中 django实例:创建你的第一个应用投票系统(一) 已经介绍基本的功能,并已经启动服务了.这一节介绍数据库相关的东东. 首页打开mysite/settings.py配置文件, 设置数据库打 ...
- SSM框架整合项目 :投票系统
框架: Spring SpringMVC MyBatis 题目: 投票系统 导包: 1, spring 2, MyBatis 3, mybatis-spring 4, fastjson 5, aspe ...
- java构建学生管理系统(一)
用java搭建学生管理系统,重要还是对数据库的操作,诸如增删改查等. 1.基本的功能: 老师完成对学生信息的查看和修改,完成对班级的信息的概览. 学生可以看自己的成绩和对自己信息的修改. 学生和老师有 ...
- SSM demo :投票系统
框架: Spring SpringMVC MyBatis 题目: 投票系统 导包: 1, spring 2, MyBatis 3, mybatis-spring 4, fastjson 5, aspe ...
- 学生选课系统v1.0
最近两天写了下老师课上留的作业:学生选课系统.感觉自己写的特别麻烦,思路特别不清晰,平常自己总会偷懒,一些太麻烦细节的功能就不去实现了,用简单的功能来替代,直到自己这回写完这个系统(但自己写的比较lo ...
随机推荐
- Failed to execute goal on project WebBackend: Could not resolve dependencies for project com.lang.yi:WebBackend:jar:1.0.0
一.问题由来 自己在搭建项目的时候报一个错误,如标题所示,具体错误信息如下: Failed to execute goal on project WebBackend: Could not resol ...
- 数据处理(传值& 乱码)
处理前端提交的数据 1.提交的域名称和处理方法的参数名一致时 /hello?name=akagi @RequestMapping("/hello") public Strin ...
- 逆向通达信Level-2 续三 (KTL python控制台动态调试)
python控制台逆向分析. python 跟 js 自如切换 逆向通达信Level-2 续十一 (无帐号登陆itrend研究版) 逆向通达信Level-2 续十 (trace脱壳) 逆向通达信Lev ...
- iot梳理
近段时间一直在搞公司的iot项目,没啥时间学习新的知识(也是自己懒),这边记录下整体对iot知识领域的认识. 首先说到iot会想到物联网,对于我们开发来说物联网很明显要用到几个不太常用到的技术,如mq ...
- 🚀🚀🚀Elasticsearch 主副分片切换过程中对业务写入有影响吗
先说下结论,只要集群中的工作节点过半,有候选的master节点,挂掉的节点中不同时包含索引的主分片和副分片,那么ES是可以做到让业务无感知的进行主副分片切换的. 蓝胖子会先讲解下ES集群写入文档的原理 ...
- 第144篇:阿里低开项目 init方法
好家伙, demo-general项目运行后主界面如下 解析阿里低开引擎中的初始化方法init 拆解项目来自阿里的lowcode engine目录下的 demo general项目 0.找到入口 ...
- 记录--webpack和vite原理
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 每次用vite创建项目秒建好,前几天用vue-cli创建了一个项目,足足等了我一分钟,那为什么用 vite 比 webpack 要快 ...
- Swift Structured Concurrency
异步函数 异步函数概念 异步和并发是两个不同的概念,并发(Concurrency)是指多个任务同时执行,这里的同时不是严格意义上的同一时刻,而是在稍大时间粒度上,多个任务可以同时推进,并发的实现可以是 ...
- 容器镜像加速指南:探索 Kubernetes 缓存最佳实践
介绍 将容器化应用程序部署到 Kubernetes 集群时,由于从 registry 中提取必要的容器镜像需要时间,因此可能会出现延迟.在应用程序需要横向扩展或处理高速实时数据的情况下,这种延迟尤其容 ...
- SHELL使用教程
疑难解答 执行完shell文件后不退出 在shell文件末尾添加如下命令即可. exec /bin/bash 参考资料 为什么sh脚本运行之后自动退出,有没有让终端不自动关闭的方法. - Ubuntu ...