Java一键对比未交作业学生信息名单(使用Hutool工具类)【SmallProject系列】

目录

功能概述

开发工具与环境

导入依赖

操作步骤

1.准备学生信息Excel

2.准备学生作业存放文件夹

3.代码实现 

4.效果展示


功能概述

用来对比所交作业的情况,查看谁没交作业。支持有扩展名的所有文件类型如:.txt、.java、.zip等和子文件夹的对比。

开发工具与环境

1.IntelliJ IDEA 2021.2.2

2.jdk 1.8.0_144

3.Maven

导入依赖

导入Hutool工具类,具体详见官网:Hutool

cn.hutoolhutool-all5.8.1org.apache.poipoi-ooxml4.1.2

操作步骤

1.准备学生信息Excel

 注意:Excel只能有这两列信息,且顺序不能反,否则代码需要改动

2.准备学生作业存放文件夹

3.代码实现 

package com.fjw.ex;import cn.hutool.core.io.FileUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;import java.io.File;
import java.util.*;/*** @Author: AOGU* @Date: 2022/5/26**/
public class Main {public static void get(Map students, List fileNames) {//将文件名全部变成:学号+姓名(不修改真实文件名,当然hutool有改文件名的方法,这里不多展示)//这里只考虑要么:学号+姓名,要么:姓名+学号,且学号为三位(当然可以改)Map modifiedFiles = new HashMap<>();int idLen = 3;//学号位数for (int i = 0; i < fileNames.size(); i++) {String fileName = fileNames.get(i);if (fileName.charAt(0) < '0' || (fileName.charAt(0) > '9')) {String studentId = fileName.substring(fileName.length() - idLen, fileName.length());String name = fileName.substring(0, fileName.length() - idLen);modifiedFiles.put(studentId, name);} else {String studentId = fileName.substring(0, idLen);String name = fileName.substring(idLen, fileName.length());modifiedFiles.put(studentId, name);}}//获取Excel中的所有KeySet keySet = students.keySet();for (String key : keySet) {if (!modifiedFiles.containsKey(key)) {System.out.println(key + students.get(key) + "没交作业");}}}public static void main(String[] args) {//只需改动这两个路径即可String excelPath = "D:\\hutool\\class.xlsx";//Excel的路径String workStagePath = "D:\\hutool";//存放作业的路径//获取Excle的名单,学号,信息等ExcelReader reader = ExcelUtil.getReader(excelPath);List> readAll = reader.read();//这里的效果:[ [学号, 姓名], [501, 小方], [502, 小文] ]Map students = new HashMap<>();//先将学号名字分别存起来for (int i = 1; i < readAll.size(); i++) {//下标从一开始是因为0为[学号, 姓名]students.put(readAll.get(i).get(0).toString(), readAll.get(i).get(1).toString());}//获取该 D:\hutool 路径下的所有文件名(就是存放学生作业的目录)File file = FileUtil.file(workStagePath);String[] listFileNames = file.list();
//        System.out.println("listFileNames" + Arrays.toString(listFileNames));//获取扩展名的前半部分,例如:501小方.docx 获取为 501小方List fileNames = new ArrayList<>();if (listFileNames != null) {for (int i = 0; i < listFileNames.length; i++) {fileNames.add(listFileNames[i].split("\\.")[0]);}} else {System.out.println("目标目录无任何文件");}//        System.out.println(students);
//        System.out.println(fileNames);//开始对比//注意: excel的左边为学号,右边为姓名//一般交作业都是要求:学号后三位+姓名//因为可能有些人不听话,不按要求来,所以需要分两种情况:1.学号+名字  2.名字+学号System.out.println("正在比对中..................");get(students, fileNames);}
}

4.效果展示

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部