青年大学习未看人员名单查询

  • 前言
  • 代码演示
    • compare1
    • compare2
    • compare3
  • 文件目录
  • 后记
    • Compare4(加了一个查询重复观看人物的功能)

前言

感觉自己给个智障似的,(lll¬ω¬)
几年了,才想起来自己写个程序去干这事

写一个字符串对比的程序
将青年大学习中copy出来的已观看人员名单与班级全部人员名单进行对比
最后输出为观看人员的名单。
1.将班级全部人员名单和已观看人员名单放进俩个数组中
2.对比,在班级全部人员名单的数组中删除所有的已观看人员名单
3.遍历输出剩余的人员

代码演示

compare1

所谓的未看人员名单,其实归根结底就是两个字符串数组的比较,然后输出小数组没有的元素:

/*** 两个字符串数组* 在主数组的基础上删除小数组的元素* 之后输出剩余的元素* @author Wildmess * @Date 2020.11.5*/
public class compare1 { public static void main(String[] args) {//全班名单数组String[] allStr = {"一","三","五","二","四"};//已经看完的人员名单数组String[] haveStr = {"二","五","四"};//未看完的人员名单数组String[] noStr = allStr;boolean flag=true;int count = 0;for (int i = 0; i < allStr.length; i++) {for (int j = 0; j < haveStr.length; j++) {if(allStr[i].equals(haveStr[j])) {flag = false;System.out.println(allStr[i]+"," +haveStr[j]);}}if(flag) {noStr[count++] = allStr[i];}}        for(int i=0;i<count;i++) {System.out.println(noStr[i]);}}
}

compare2

进行改进,让两个数组可以从文件中读取到响应的数据,并将字符串的比较包装成一个静态方法(主要是想后来写一个GUI界面,有机会的话):

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.util.Arrays;
/*** 在compare1的基础上增加读取文件的功能,* 从全班名单中读取出mainStr* 从已经看完的人员名单中读取出haveStr* 并将字符串的比较包装成一个静态方法* @author Wildmess* @Date 2020.11.5*/
public class compare2 {static int count;public static String[] read(File file) {count=0;String[] str = new String[100];try {FileInputStream fis = new FileInputStream(file);InputStreamReader isr = new InputStreamReader(fis,"gbk");BufferedReader br = new BufferedReader(isr);    String line = null;while((line = br.readLine())!=null) {str[count++] = line;}br.close();} catch (Exception e) {e.printStackTrace();}str = Arrays.copyOf(str, count);return str;}public static String[] compare(String[] allStr, String[] haveStr) {boolean flag=true;count = 0;String[] str = new String[100];for (int i = 0; i < allStr.length; i++) {flag=true;for (int j = 0; j < haveStr.length; j++) {if(allStr[i].equals(haveStr[j])) {flag = false;}}if(flag) {str[count++] = allStr[i];}}str = Arrays.copyOf(str, count);return str;}public static void main(String[] args) {       //全班名单数组String[] allStr = null;File allFile = new File("全班名单.txt");allStr = read(allFile);//已经看完的人员名单数组String[] haveStr = null;File haveFile = new File("已看完名单.txt");haveStr = read(haveFile);//未看完的人员名单数组String[] noStr = null;noStr = compare(allStr,haveStr);System.out.println(Arrays.toString(noStr));
//      for(int i=0;i<count;i++) {//          System.out.println(noStr[i]);
//      }}
}

compare3

compare2基本完成了要求的功能,但是,如果直接将微信后台已看完的内容复制粘贴出现的其中一行数据具体为:姓名 观看时间, 还需要进行一定的修改,麻烦
故需要继续改进

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.util.Arrays;
/*** compare2基本完成了要求的功能* 但是* 如果直接将微信后台已看完的内容复制粘贴* 出现的其中一行数据具体为:姓名    观看时间* 还需要进行一定的修改,麻烦* 需要继续改进* @author Wildmess**/
public class compare3 {static int count;public static String[] read(File file) {count=0;String[] str = new String[100];try {FileInputStream fis = new FileInputStream(file);InputStreamReader isr = new InputStreamReader(fis,"gbk");BufferedReader br = new BufferedReader(isr);    String line = null;while((line = br.readLine())!=null) {String[] msg = line.split("    ");line = msg[0]; //只要前面的名字,后面舍去//System.out.println(msg[0]);str[count++] = line;}br.close();} catch (Exception e) {e.printStackTrace();}str = Arrays.copyOf(str, count);//System.out.println(Arrays.toString(str));return str;}public static String[] compare(String[] allStr, String[] haveStr) {boolean flag=true;count = 0;String[] str = new String[100];for (int i = 0; i < allStr.length; i++) {flag=true;for (int j = 0; j < haveStr.length; j++) {if(allStr[i].equals(haveStr[j])) {flag = false;}}if(flag) {str[count++] = allStr[i];}}str = Arrays.copyOf(str, count);return str;}public static void main(String[] args) {     //全班名单数组String[] allStr = null;File allFile = new File("全班名单.txt");allStr = read(allFile);//已经看完的人员名单数组String[] haveStr = null;File haveFile = new File("已看完名单.txt");haveStr = read(haveFile);//未看完的人员名单数组String[] noStr = null;noStr = compare(allStr,haveStr);//      System.out.println(Arrays.toString(noStr));System.out.println("青年大学习后台查询无果的:");for(int i=0;i<count;i++) {System.out.println(noStr[i]);}}}

文件目录


全班名单中的数据排列为一行一个名字,已看完名单中的数据为直接复制查询结果中的数据,大概就是一个名字+空格+观看日期,具体的情况如图片所示:

这也是为什么有compare3的原因。

后记

本来还想写个GUI界面,打包成.exe文件,或者一键进入微信后台去查出对应结果,不过碍于某些原因估计要拖到后面进行了,反正暂时写好的代码基本上已经满足了正常情况下个人的需要了。

2020.11.28
最近发现可以直接输网址,然后只需输入一次验证码就可以进去看班级已看完的人员名单,我查询时具体规则如下:
http://wxtp.hefei.cc/zt2020/tuanzhishum季数_期数(特辑为季数_期数_1(2))/rank_t.php?type=detail&typename=直属高校&typename1=学校名&typename2=学院名&typename3=班级名

2020.12.6

Compare4(加了一个查询重复观看人物的功能)

发现有人会多刷几次,原因未知,但有时需要查询对应重复观看人数,加入修改程序为Compare4:

public class Compare4 {static int count;public static String[] read(File file) {count=0;String[] str = new String[100];try {FileInputStream fis = new FileInputStream(file);InputStreamReader isr = new InputStreamReader(fis,"gbk");BufferedReader br = new BufferedReader(isr); String line = null;while((line = br.readLine())!=null) {String[] msg = line.split("    ");line = msg[0]; //只要前面的名字,后面舍去//System.out.println(msg[0]);str[count++] = line;}br.close();} catch (Exception e) {e.printStackTrace();}str = Arrays.copyOf(str, count);//System.out.println(Arrays.toString(str));return str;}public static String[] compare(String[] allStr, String[] haveStr) {boolean flag=true;count = 0;String[] str = new String[100];for (int i = 0; i < allStr.length; i++) {flag=true;for (int j = 0; j < haveStr.length; j++) {if(allStr[i].equals(haveStr[j])) {flag = false;}}if(flag) {str[count++] = allStr[i];}}str = Arrays.copyOf(str, count);return str;}/*** 查看是谁看多了* @param args*/public static void CheckCopy(String[] str) {String[] a= new String[str.length];int b=0;for(int i=0;i<str.length;i++) {a[i]=str[i];for(int j=0;j<a.length;j++) {if(str[i].equals(a[j])) {b++;}}if(b!=1) {System.out.println(str[i]+"看了" + b+"次");}b=0;}}public static void main(String[] args) {        //全班名单数组String[] allStr = null;File allFile = new File("全班名单.txt");allStr = read(allFile);//已经看完的人员名单数组String[] haveStr = null;File haveFile = new File("已看完名单.txt");haveStr = read(haveFile);//未看完的人员名单数组String[] noStr = null;noStr = compare(allStr,haveStr);/** 输出没看的人的名单*///       System.out.println(Arrays.toString(noStr));System.out.println("青年大学习后台查询无果的:");for(int i=0;i<count;i++) {System.out.println(i+1 + "."+noStr[i]);}System.out.println("共有" + count +"人没有完成观看学习!");/*查看是谁多看了*/if((haveStr.length+count)>allStr.length) {/** 出现重复看的就表示* 已看完的+未看完的>全班总人数*/System.out.println("\n\n\n并且在后台中:");CheckCopy(haveStr);}}
}

2021.1.11
烦人,这域名改的也太勤了吧,最近使用的是网址是:
http://dxx.ahyouth.org.cn/zt2020/后面同上。
另外,应该是服务器的原因吧,好多人在后台查询时显示观看了数次,尽我自己就看了8次,(lll¬ω¬)
不过倒是暴露了一些上回写的关于查询重复观看的人名及次数的问题,另外为了试试新学习的技术map,修改CheckCopy方法如下:

 public static void CheckCopy(String[] str) {Map<String,Integer> map = new HashMap<String,Integer>();for(int i=0; i<str.length; i++) {//将已看完的人当作map的key值,看过的次数定为values值if( map.containsKey(str[i]) ) {int oldValue = map.get(str[i]);map.replace(str[i], oldValue, oldValue+1);} else {map.put(str[i], 1);}}//将最终生成的map数据放到一个集合中List<Entry<String,Integer>> list = new ArrayList<Entry<String,Integer>>();list.addAll(map.entrySet());//迭代遍历集合,输出需要的信息for(Entry<String,Integer> e : list) {if(e.getValue()>1) {System.out.println(e.getKey() + "看了" + e.getValue() +"次");}}}

使用修改后的方法重复输出相关语句得到修改,完毕。
感觉好像前面的代码用map写相关的东西好像更容易,有时间可以尝试。

青年大学习未看人员名单查询(JAVA)相关推荐

  1. 青年大学习未学习人员名单查询

    直接上代码. #include <string> #include <fstream> #include <iostream> #include <set&g ...

  2. 一招解决青年大学习催更提醒(团支书必看)

    唉:-( 团支书好难,开学了每一周都会有青年大学习,学校要求学完要截图发给团支书的,然后团支书在汇总发给老师,有的同学很积极完成,但也有很多同学一次都不完成,然后老师就要找团支书们谈话,心里心疼团支书 ...

  3. 简易的青年大学习完成人数统计

    首先你要有 openpyxl 第三方库,这个搜搜有很多教程的,我就不列举了 功能: 1.实现简单的excel表的录入.(前提是自己要创一个excel表格,本代码不负责这个) 2.实现人数的对比,判断输 ...

  4. 快进来看王冰冰!青年大学习提醒系统来了!!

    目录 1. 青年大学习与冰冰 2. flask后端部分 2.1 前景概要 2.2 具体细节 2.2.1 数据库部分 2.2.3 路由部分 2.2.2 数据交换部分 3. uni-app前端部分 3.1 ...

  5. 快速获取青年大学习完成截图

    在电脑微信浏览器进入青年大学习页面(我是在广东共青团公众号进去的,也可以从其他公众号进去) 只要能获得下图的链接就行 复制上面的链接 https://h5.cyol.com/special/daxue ...

  6. 安卓团课快进_青年大学习网上主题团课第十季第七期答案

    软件介绍 青年大学习网上主题团课第十季第七期答案是一款比较不错的团课学习软件,这款软件有着非常多的团课内容,而且还有超多的视频,以及各种习题,大家有什么不会的可以随时查看答案,在这里轻松的进行学习,需 ...

  7. 青年大学习自动名单核对程序(使用教程)

    青年大学习自动名单核对程序[使用教程] 前言 使用方法 创建文件夹&文本文档 写入数据 移入程序 问题详解: 1. 问题一:电脑出现系统错误弹窗 2. 问题二:发现名单是乱码 前言 本文章主要 ...

  8. 关于青年大学习提醒方法的探讨

    本人也是一枚苦逼的大学生,很不巧哈,接触了相关团支书的工作哈,由于学院抓青年大学习抓的比较严,时不时让团支书去更近一下同学们的进度,然后总会有那么几个同学忘记,这周是张三,李红,下一周可能就是王二麻子 ...

  9. 谷歌浏览器Chrome无法导出广东智慧团建青年大学习名单

    组织部叫书记们统计没青年大学习名单,好家伙! 看了看名单,还有几个没学习,就想去后台导出看看嘛,结果点了导出没反应 于是   右键->检查->console 原来是谷歌觉得这个下载连接不安 ...

最新文章

  1. Python 文件 close() 方法
  2. OpenCV中OpponentColorDescriptorExtractor
  3. VTK:Utilities之TimerLog
  4. 解决ncnn配置中缺少“vulkan”文件
  5. 《影响力》6个使人顺从的武器之一互惠原理深入剖析
  6. [NewLife.XCode]实体工厂(拦截处理实体操作)
  7. r语言library什么意思_还没张口对方就知道你是什么意思了?你的肢体语言出卖了你哦~...
  8. Python+sklearn使用支持向量机算法实现数字图片分类
  9. 平面设计中应当注意的设计原则
  10. iconv的用法,'GBK'转'utf-8'
  11. 中国能源统计年鉴面板数据-分省市主要污染物排放指标(包含ECXEL2020年中国统计年鉴)
  12. TD-SCDMA信道模式
  13. php 随机经纬度,使用php,API自动获取经纬度
  14. VMware虚拟机使用记录
  15. ros文件服务器,ros设置_服务器应用_Linux公社-Linux系统门户网站
  16. 手机java游戏下载网站
  17. 伦敦交通局设置较低的速度限制
  18. CSS3 图片旋转特效
  19. java poi 边框_java poi 设置边框
  20. 9个相见恨晚的提升办公效率的网站!

热门文章

  1. Strom整合HDFS
  2. [!] Error installing PromiseKit
  3. 退化过程及模型的简单介绍
  4. windows 向 iPad导入文件
  5. 新生代、老生代垃圾收集器总结
  6. 中国首个超导量子计算机,超导量子计算机有了首个“光电开关”
  7. 5分钟带你学懂ROC曲线
  8. 做销售,如何开发陌生市场?
  9. IDEA初次使用的设置流程
  10. MT【186】四边形中的余弦定理