郑州网站建设企起,大型网站的技术架构问题,网络规划设计师教程第2版pdf百度网盘,惠来网站建设【实验7-5】 微信投票
【任务介绍】 1.任务描述
如今微信聊天已经普及到几乎每一个人#xff0c;在聊天中#xff0c;经常会有人需要帮忙在某个APP中投票。本案例要求编写一个模拟微信投票的程序#xff0c;通过在控制台输入指令#xff0c;实现添加候选人、查看当前投票…【实验7-5】 微信投票
【任务介绍】 1.任务描述
如今微信聊天已经普及到几乎每一个人在聊天中经常会有人需要帮忙在某个APP中投票。本案例要求编写一个模拟微信投票的程序通过在控制台输入指令实现添加候选人、查看当前投票和投票的功能。每个功能的具体要求如下。
用户输入指令1代表”添加候选人”可以在本地文件中添加被选举人。用户输入指令2代表”查看当前投票”将本地文件中的数据打印到控制台。用户输入指令3 代表”投票”功能在控制台输入被投票人的名字进行投票操作。用户输入指令4代表”退出”操作。
2.运行结果
任务运行结果如图7-1所示。 图7-1 运行结果
运行过程中本地D盘下会生成一个count.txt文件打开后如图7-2所示。 图7-2 count.txt 【实现思路】
查看任务介绍和运行结果分析可知此任务需要使用while循环实现控制台中操作指令的多次输入使用switch语句根据控制台输入的操作指令来判断执行什么操作。输入指令1时进行添加候选人操作先从控制台获取输入的被投票人与起始票数并暂存再判断是否已有count.txt文件存储数据如果有直接在文件后追加新的数据如果没有需要新建文件夹在存入数据。这里需要使用到StringBuffer的字符串拼接来实现存入count.txt文件的特定格式例如“姓名票数,”这样方便我们读取和修改票数。输入指令2时查看当前投票使用字符流读取count.txt文件并在控制台打印即可。输入指令3时进行投票操作从控制台输入被投票人姓名投票成功后被投票人的票数加一先取出count.txt的内容存入String类型中根据“”拆分为String数组editMessage再获取控制类中输入的被投票人姓名使用for循环判断是否存在此人的投票如果存在则取出此人的票数加一最后将修改后的数据使用StringBuffer替换到String数组editMessage并覆盖原有的count.txt文件输入指令4直接退出系统可以通过代码”System.exit0;”实现。
【实现代码】
投票小功能的代码实现如文件7-1所示。
文件7-1 vote.java
package chapter0705;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.util.Scanner;public class vote { private static String message ; public static void main(String[] args) throws Exception { Scanner sc new Scanner(System.in); System.out.println(1:添加候选人 2:查看当前投票 3:投票 4:退出); while (true) { System.out.print(请输入操作指令); int command sc.nextInt(); switch (command) { case 1: System.out.println(请输入需要被投票的人); String namesc.next(); System.out.println(请输入name的起始票数); int numsc.nextInt(); addvote(name,num);// 1:添加投票人 break; case 2: String me readvote();// 2:查看投票 System.out.println(me); break; case 3: editvote();// 3:投票 break; case 4: System.out.println(您已退出系统谢谢使用); System.exit(0); break; default: System.out.println(您输入的指令错误); break; } } } /* * 查看投票 */ public static String readvote() throws Exception{ FileInputStream in new FileInputStream(D:\\count.txt); byte[] b new byte[in.available()]; in.read(b); message new String(b); in.close(); return message; } /* * 添加投票 */ public static void addvote(String name,int num) throws FileNotFoundException { String SEPARATE_FIELD \n;// 换行 BufferedOutputStream out null; StringBuffer sbf new StringBuffer();// 拼接内容 File filenew File(D:\\count.txt); //判断文件是否存在 try { // 当已存在count.txt文件则在文件内容后追加 if (file.canExecute()) { // 创建输出流用于追加文件 out new BufferedOutputStream(new FileOutputStream(D:\\count.txt, true)); } else {// 不存在当天文件则新建文件 // 创建输出流用于保存文件 out new BufferedOutputStream(new FileOutputStream(D:\\count.txt)); } sbf.append(name).append(:); sbf.append(num).append(,SEPARATE_FIELD); String str sbf.toString(); byte[] b str.getBytes(); for (int i 0; i b.length; i) { out.write(b[i]);// 将内容写入本地文件 } } catch (Exception e) { e.printStackTrace(); } finally { try { if (out ! null) out.close();// 关闭输出流 } catch (Exception e2) { e2.printStackTrace(); } } } /* * 投票 将控制台输入的姓名的票数加一后保存 */ private static void editvote() throws Exception { FileWriter out null; // 将count.txt文字根据“”拆分成数组 String[] editMessage message.split(,); Scanner sc new Scanner(System.in); System.out.println(请输入要投票人的姓名); String inputMessage sc.next(); //for循环拆分后的数组 for (int i 0; i editMessage.length; i) { //当数组中有有包含输入的名字时 if(editMessage[i].contains(inputMessage)) { //取出输入名字现在的票数 String a editMessage[i].substring(editMessage[i].indexOf(:)1, editMessage[i].length()); //将取出的票数强转为int类型 int b Integer.parseInt(a); //将票数1 b; //new出一个StringBuffer用于后面的字符拼接 StringBuffer sb new StringBuffer(); //取出原文件中的姓名和String ceditMessage[i].substring(0,editMessage[i].indexOf(:)1); //使用StringBuffer拼接姓名和选票 sb.append(c); sb.append(b); sb.append(,); //将拼接后的字符强转为String类型 String s sb.toString(); //修改好的字符替换原有的字符 System.out.println(投票后的票数); System.out.println(s); editMessage[i] s; } }//editMessage是数组我们需要将editMessage数组拼接为StringBuffer类型。 StringBuffer sb1 new StringBuffer(); for (int i 0; i editMessage.length; i) { sb1.append(editMessage[i]); } out new FileWriter(D:\\count.txt);//覆盖原有文件 //sb1是StringBuffer类型需要使用toString方法 out.write(sb1.toString());// 写入暂存的内容 out.close(); }}
在文件7-1中第十行代码创建了文件内容的全局变量。第14~40行代码是循环主体用于循环接收用户的指令当16行代码获取指令后通过switch语句判断应该执行的操作第45-52行代码是查看投票功能第56-90行代码是添加投票功能使用StringBuffer拼接字符串再存入本地文件。第94-139行代码是投票功能先将count.txt的内容使用split方法拆分为数组在循环查询出需要增加投票的人将票数加一后暂存再将修改好的字符替换原有的count.txt文件。 文章转载自: http://www.morning.pflry.cn.gov.cn.pflry.cn http://www.morning.qfrsm.cn.gov.cn.qfrsm.cn http://www.morning.pfnlc.cn.gov.cn.pfnlc.cn http://www.morning.mqbdb.cn.gov.cn.mqbdb.cn http://www.morning.bnrff.cn.gov.cn.bnrff.cn http://www.morning.cfhwn.cn.gov.cn.cfhwn.cn http://www.morning.mjglk.cn.gov.cn.mjglk.cn http://www.morning.xxhc.cn.gov.cn.xxhc.cn http://www.morning.jzykq.cn.gov.cn.jzykq.cn http://www.morning.kbqqn.cn.gov.cn.kbqqn.cn http://www.morning.qcygd.cn.gov.cn.qcygd.cn http://www.morning.tfpbm.cn.gov.cn.tfpbm.cn http://www.morning.kxltf.cn.gov.cn.kxltf.cn http://www.morning.cykqg.cn.gov.cn.cykqg.cn http://www.morning.nmpdm.cn.gov.cn.nmpdm.cn http://www.morning.nkkr.cn.gov.cn.nkkr.cn http://www.morning.gwdnl.cn.gov.cn.gwdnl.cn http://www.morning.byxs.cn.gov.cn.byxs.cn http://www.morning.nmyrg.cn.gov.cn.nmyrg.cn http://www.morning.jykzy.cn.gov.cn.jykzy.cn http://www.morning.mlwhd.cn.gov.cn.mlwhd.cn http://www.morning.njstzsh.com.gov.cn.njstzsh.com http://www.morning.phwmj.cn.gov.cn.phwmj.cn http://www.morning.zhishizf.cn.gov.cn.zhishizf.cn http://www.morning.lhztj.cn.gov.cn.lhztj.cn http://www.morning.tscsd.cn.gov.cn.tscsd.cn http://www.morning.hkchp.cn.gov.cn.hkchp.cn http://www.morning.xsfny.cn.gov.cn.xsfny.cn http://www.morning.jppb.cn.gov.cn.jppb.cn http://www.morning.lctrz.cn.gov.cn.lctrz.cn http://www.morning.ntlxg.cn.gov.cn.ntlxg.cn http://www.morning.mzydm.cn.gov.cn.mzydm.cn http://www.morning.bytgy.com.gov.cn.bytgy.com http://www.morning.jhwwr.cn.gov.cn.jhwwr.cn http://www.morning.rhpgk.cn.gov.cn.rhpgk.cn http://www.morning.rcjwl.cn.gov.cn.rcjwl.cn http://www.morning.thpzn.cn.gov.cn.thpzn.cn http://www.morning.pyxtn.cn.gov.cn.pyxtn.cn http://www.morning.qtkdn.cn.gov.cn.qtkdn.cn http://www.morning.jjxnp.cn.gov.cn.jjxnp.cn http://www.morning.krqhw.cn.gov.cn.krqhw.cn http://www.morning.qkxt.cn.gov.cn.qkxt.cn http://www.morning.ntqjh.cn.gov.cn.ntqjh.cn http://www.morning.mhbcy.cn.gov.cn.mhbcy.cn http://www.morning.khclr.cn.gov.cn.khclr.cn http://www.morning.btrfm.cn.gov.cn.btrfm.cn http://www.morning.kdrjd.cn.gov.cn.kdrjd.cn http://www.morning.nspzy.cn.gov.cn.nspzy.cn http://www.morning.xxsrm.cn.gov.cn.xxsrm.cn http://www.morning.xrwtk.cn.gov.cn.xrwtk.cn http://www.morning.jqpq.cn.gov.cn.jqpq.cn http://www.morning.frnjm.cn.gov.cn.frnjm.cn http://www.morning.pjrql.cn.gov.cn.pjrql.cn http://www.morning.gczqt.cn.gov.cn.gczqt.cn http://www.morning.wqfzx.cn.gov.cn.wqfzx.cn http://www.morning.qfnrx.cn.gov.cn.qfnrx.cn http://www.morning.xcjwm.cn.gov.cn.xcjwm.cn http://www.morning.xsctd.cn.gov.cn.xsctd.cn http://www.morning.ppdr.cn.gov.cn.ppdr.cn http://www.morning.jwsrp.cn.gov.cn.jwsrp.cn http://www.morning.bbxbh.cn.gov.cn.bbxbh.cn http://www.morning.lmpfk.cn.gov.cn.lmpfk.cn http://www.morning.pfggj.cn.gov.cn.pfggj.cn http://www.morning.ylljn.cn.gov.cn.ylljn.cn http://www.morning.frfnb.cn.gov.cn.frfnb.cn http://www.morning.pzdxg.cn.gov.cn.pzdxg.cn http://www.morning.gwqkk.cn.gov.cn.gwqkk.cn http://www.morning.hxcuvg.cn.gov.cn.hxcuvg.cn http://www.morning.jwgmx.cn.gov.cn.jwgmx.cn http://www.morning.rkrl.cn.gov.cn.rkrl.cn http://www.morning.mfmrg.cn.gov.cn.mfmrg.cn http://www.morning.jlthz.cn.gov.cn.jlthz.cn http://www.morning.zmwd.cn.gov.cn.zmwd.cn http://www.morning.fgxws.cn.gov.cn.fgxws.cn http://www.morning.ggmls.cn.gov.cn.ggmls.cn http://www.morning.cqwb25.cn.gov.cn.cqwb25.cn http://www.morning.jcxqc.cn.gov.cn.jcxqc.cn http://www.morning.rcttz.cn.gov.cn.rcttz.cn http://www.morning.sfqtf.cn.gov.cn.sfqtf.cn http://www.morning.cmfkp.cn.gov.cn.cmfkp.cn