「java批量作业」批量批改作业
今天给各位分享java批量作业的知识,其中也会对批量批改作业进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
JAVA大作业
一句一句看,其实不难的
import java.util.Random;
import java.util.Scanner;
public class Test {
public static Random r = new Random();
public static void printMenu() { //自定义的方法
System.out.println("(1) play another round");
System.out.println("(2) exit the game");
System.out.print("Selection:");
}
public static void main(String[] args) throws Exception
{
String content = null;
Scanner scan = new Scanner(System.in); //
while (true) //true在这里使得程序一直循环
{
printMenu(); //调用方法,打印出三句话 ...
content = scan.nextLine(); //读取输入
System.out.println();
// 输入内容是2,则退出程序
if (content.equals("2"))
break; //break 跳出当前的循环,也就是跳出while循环,程序往下执行,若没有可执行则结束程序
if (content.equals("1")) {
System.out.print("Text to Match: ");
int count = r.nextInt(50) + 1; //得到1~50随机数,即[1,50]
char[] letters = new char[count]; //长度为count的char数组
for (int i = 0; i count; i++) //i count等价i letters.length
{
letters[i] = (char) (r.nextInt(26) + 97); //给letters[i]赋值,字母a~z
System.out.print(letters[i]);
}
System.out.print("\n ");
long startTime = System.currentTimeMillis(); //得到开始时间
int correctCount = 0;
content = scan.nextLine(); //得到输入的字符串
for (int i = 0; i count; i++) {
if (content.charAt(i) == letters[i]) //输入的字符串的每个字母和letters中的比较
correctCount++;
}
long endTime = System.currentTimeMillis(); //得到结束时间
int time = (int) ((endTime - startTime) / 1000); //计算所花的时间
if (correctCount == 0)
System.out
.println("INCORRECTLY TYPED, YOU GET A SPEED OF 0!");
else {
System.out.println("共花了" + time + "秒,正确率为:"
+ ((int) (((double) correctCount / count)) * 100)
+ "%");
}
}
System.out.println();
}
}
}
需要一份500行的java程序,期末大作业,最好带详细注释。
Java生成CSV文件简单操作实例
CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件。在 CSV文件中,数据“栏”以逗号分隔,可允许程序通过读取文件为数据重新创建正确的栏结构,并在每次遇到逗号时开始新的一栏。如:
123 1,张三,男2,李四,男3,小红,女
Java生成CSV文件(创建与导出封装类)
package com.yph.omp.common.util;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.junit.Test;
/**
* Java生成CSV文件
*/
public class CSVUtil {
/**
* 生成为CVS文件
*
* @param exportData
* 源数据List
* @param map
* csv文件的列表头map
* @param outPutPath
* 文件路径
* @param fileName
* 文件名称
* @return
*/
@SuppressWarnings("rawtypes")
public static File createCSVFile(List exportData, LinkedHashMap map,
String outPutPath, String fileName) {
File csvFile = null;
BufferedWriter csvFileOutputStream = null;
try {
File file = new File(outPutPath);
if (!file.exists()) {
file.mkdir();
}
// 定义文件名格式并创建
csvFile = File.createTempFile(fileName, ".csv",
new File(outPutPath));
// UTF-8使正确读取分隔符","
csvFileOutputStream = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(csvFile), "GBK"), 1024);
// 写入文件头部
for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator
.hasNext();) {
java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator
.next();
csvFileOutputStream
.write("\"" + (String) propertyEntry.getValue() != null ? (String) propertyEntry
.getValue() : "" + "\"");
if (propertyIterator.hasNext()) {
csvFileOutputStream.write(",");
}
}
csvFileOutputStream.newLine();
// 写入文件内容
for (Iterator iterator = exportData.iterator(); iterator.hasNext();) {
Object row = (Object) iterator.next();
for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator
.hasNext();) {
java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator
.next();
/*-------------------------------*/
//以下部分根据不同业务做出相应的更改
StringBuilder sbContext = new StringBuilder("");
if (null != BeanUtils.getProperty(row,(String) propertyEntry.getKey())) {
if("证件号码".equals(propertyEntry.getValue())){
//避免:身份证号码 ,读取时变换为科学记数 - 解决办法:加 \t(用Excel打开时,证件号码超过15位后会自动默认科学记数)
sbContext.append(BeanUtils.getProperty(row,(String) propertyEntry.getKey()) + "\t");
}else{
sbContext.append(BeanUtils.getProperty(row,(String) propertyEntry.getKey()));
}
}
csvFileOutputStream.write(sbContext.toString());
/*-------------------------------*/
if (propertyIterator.hasNext()) {
csvFileOutputStream.write(",");
}
}
if (iterator.hasNext()) {
csvFileOutputStream.newLine();
}
}
csvFileOutputStream.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
csvFileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return csvFile;
}
/**
* 下载文件
*
* @param response
* @param csvFilePath
* 文件路径
* @param fileName
* 文件名称
* @throws IOException
*/
public static void exportFile(HttpServletRequest request,
HttpServletResponse response, String csvFilePath, String fileName)
throws IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("application/csv;charset=GBK");
response.setHeader("Content-Disposition", "attachment; filename="
+ new String(fileName.getBytes("GB2312"), "ISO8859-1"));
InputStream in = null;
try {
in = new FileInputStream(csvFilePath);
int len = 0;
byte[] buffer = new byte[1024];
OutputStream out = response.getOutputStream();
while ((len = in.read(buffer)) 0) {
out.write(buffer, 0, len);
}
} catch (FileNotFoundException e1) {
System.out.println(e1);
} finally {
if (in != null) {
try {
in.close();
} catch (Exception e1) {
throw new RuntimeException(e1);
}
}
}
}
/**
* 删除该目录filePath下的所有文件
*
* @param filePath
* 文件目录路径
*/
public static void deleteFiles(String filePath) {
File file = new File(filePath);
if (file.exists()) {
File[] files = file.listFiles();
for (int i = 0; i files.length; i++) {
if (files[i].isFile()) {
files[i].delete();
}
}
}
}
/**
* 删除单个文件
*
* @param filePath
* 文件目录路径
* @param fileName
* 文件名称
*/
public static void deleteFile(String filePath, String fileName) {
File file = new File(filePath);
if (file.exists()) {
File[] files = file.listFiles();
for (int i = 0; i files.length; i++) {
if (files[i].isFile()) {
if (files[i].getName().equals(fileName)) {
files[i].delete();
return;
}
}
}
}
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Test
public void createFileTest() {
List exportData = new ArrayListMap();
Map row1 = new LinkedHashMapString, String();
row1.put("1", "11");
row1.put("2", "12");
row1.put("3", "13");
row1.put("4", "14");
exportData.add(row1);
row1 = new LinkedHashMapString, String();
row1.put("1", "21");
row1.put("2", "22");
row1.put("3", "23");
row1.put("4", "24");
exportData.add(row1);
LinkedHashMap map = new LinkedHashMap();
map.put("1", "第一列");
map.put("2", "第二列");
map.put("3", "第三列");
map.put("4", "第四列");
String path = "d:/export";
String fileName = "文件导出";
File file = CSVUtil.createCSVFile(exportData, map, path, fileName);
String fileNameNew = file.getName();
String pathNew = file.getPath();
System.out.println("文件名称:" + fileNameNew );
System.out.println("文件路径:" + pathNew );
}
}
//注:BeanUtils.getProperty(row,(String) propertyEntry.getKey()) + "\t" ,只为解决数字格式超过15位后,在Excel中打开展示科学记数问题。
用java怎样实现批量打印
下面是实现Java批量打印功能的具体工具类,其中的Info类和UserClass为具体的快递面单中要打印的信息,以参数的方式传递过来,循环调用Java PrinterJob服务进行打印;这里的快递尺寸已经调整好,可以使用,如需添加只要根据实际的面单进行调整,也可以专门写一个接口类的形式来创建快递面单的尺寸,本人没有尝试;如遇问题欢迎留言,共同探讨!
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Paper;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.JOptionPane;
import com.myprint.model.Info;
import com.myprint.model.UserClass;
public class PrintUtil implements Printable{
/**
* 纸张尺寸
*/
private double width;
private double height;
/**
* 打印起始坐标
*/
private double startX;
private double startY;
//打印页数
private int pages;
//打印数据坐标
private MapString, Float pcoord;
//发件方信息
private SenderInfo info;
//打印数据源
private ListUserClass sourcelist;
//private int PAGES = 0;
//private PrintPaper printpaper;
private UserObject obj;
public PrintUtil(){}
public PrintUtil(int expkind, UserObject obj, ListObject sourcelist)
{
this.pcoord = this.pcoord == null ? new HashMapString, Float() : this.pcoord;
this.pcoord.clear();
this.info = info;
this.sourcelist = sourcelist;
switch(expkind)
{
case 0: //EMS
this.width = 652;
this.height = 360;
this.startX = 30;
this.startY = 80;
this.pages = this.sourcelist == null ? 0 : this.sourcelist.size();
pcoord.put("nameX", 30F);
pcoord.put("nameY", 80F + 30F);
pcoord.put("numX", 30F + 90F);
pcoord.put("numY", 80F + 30F);
pcoord.put("cmpX", 30F);
pcoord.put("cmpY", 80F + 60F);
pcoord.put("addrX", 30F);
pcoord.put("addrY", 80F + 90F);
pcoord.put("RnameX", 30F + 290F);
pcoord.put("RnameY", 80F + 30F);
pcoord.put("RnumX", 30F + 390);
pcoord.put("RnumY", 80F + 30);
pcoord.put("RcmpyX", 30F + 280);
pcoord.put("RcmpyY", 80F + 55);
pcoord.put("RaddrX", 30F + 280);
pcoord.put("RaddrY", 80F + 90);
break;
case 1://顺风快递
this.width = 632;
this.height = 412;
this.startX = 40;
this.startY = 30;
this.pages = this.sourcelist == null ? 0 : this.sourcelist.size();
pcoord.put("nameX", 285F);
pcoord.put("nameY", 126F);
pcoord.put("numX", 200F);
pcoord.put("numY", 185F);
pcoord.put("cmpX", 120F);
pcoord.put("cmpY", 126F);
pcoord.put("addrX", 120F);
pcoord.put("addrY", 145F);
pcoord.put("RnameX", 275F);
pcoord.put("RnameY", 240F);
pcoord.put("RnumX", 200F);
pcoord.put("RnumY", 300F);
pcoord.put("RcmpyX", 130F);
pcoord.put("RcmpyY", 240F);
pcoord.put("RaddrX", 130F);
pcoord.put("RaddrY", 270F);
break;
case 2://申通快递
this.width = 652;
this.height = 360;
this.startX = 30;
this.startY = 80;
this.pages = this.sourcelist == null ? 0 : this.sourcelist.size();
pcoord.put("nameX", 42F);
pcoord.put("nameY", 100F);
pcoord.put("numX", 62F);
pcoord.put("numY", 200F);
pcoord.put("cmpX", 42F);
pcoord.put("cmpY", 126F);
pcoord.put("addrX", 42F);
pcoord.put("addrY", 155F);
pcoord.put("RnameX", 320F);
pcoord.put("RnameY", 100F);
pcoord.put("RnumX", 330F);
pcoord.put("RnumY", 200F);
pcoord.put("RcmpyX", 310F);
pcoord.put("RcmpyY", 126F);
pcoord.put("RaddrX", 310F);
pcoord.put("RaddrY", 155F);
break;
default:
break;
}
}
/**
* @param Graphic指明打印的图形环境
* @param PageFormat指明打印页格式(页面大小以点为计量单位,1点为1英才的1/72,1英寸为25.4毫米。A4纸大致为595×842点)
* @param pageIndex指明页号
**/
public int print(Graphics gra, PageFormat pf, int pageIndex) throws PrinterException {
//转换成Graphics2D
Graphics2D g2 = (Graphics2D) gra;
//设置打印颜色为黑色
g2.setColor(Color.black);
switch(pageIndex){
case 0:
Font font = new Font("新宋体", Font.PLAIN, 13);
g2.setFont(font);//设置字体
//BasicStroke bs_3=new BasicStroke(0.5f);
float[] dash1 = {2.0f};
g2.setStroke(new BasicStroke(0.5f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 2.0f, dash1, 0.0f));
g2.drawString(info.getSname() == null ? "" : info.getSname(), pcoord.get("nameX"), pcoord.get("SnameY"));
g2.drawString(info.getSnum() == null ? "" : info.getSnum(), pcoord.get("numX"), pcoord.get("numY"));
g2.drawString(info.getScmp() == null ? "" : info.getScmp(), pcoord.get("cmpX"), pcoord.get("cmpY"));
g2.drawString(info.getSaddr() == null ? "" : info.getSaddr(), pcoord.get("addrX"), pcoord.get("addrY"));
g2.drawString(obj.getRname() == null ? "" : obj.getRname(), pcoord.get("rnameX"), pcoord.get("rnameY"));
g2.drawString(obj.getRnum() == null ? "" : obj.getRnum(), pcoord.get("rnumX"), pcoord.get("rnumY"));
g2.drawString(obj.getRcmpy() == null ? "" : obj.getRcmpy(), pcoord.get("rcmpyX"), pcoord.get("rcmpyY"));
g2.drawString(obj.getRaddr() == null ? "" : obj.getRaddr(), pcoord.get("raddrX"), pcoord.get("raddrY"));
return PAGE_EXISTS;
default:
return NO_SUCH_PAGE;
}
}
// 打印内容到指定位置
public void printContent()
{
if (sourcelist != null sourcelist.size() 0) // 当打印内容不为空时
{
//PAGES = printpaper.getSourcelist().size(); // 获取打印总页数
// 书、文档
Book book = new Book();
// 设置成竖打
PageFormat pf = new PageFormat();
pf.setOrientation(PageFormat.PORTRAIT);
// 通过Paper设置页面的空白边距和可打印区域。
Paper p = new Paper();
p.setSize(this.width,this.height);//纸张大小
p.setImageableArea(this.startX,this.startY, this.width,this.height);//设置打印区域
pf.setPaper(p);
// 把 PageFormat 和 Printable 添加到书中,组成一个页面
book.append(this, pf);
//获取打印服务对象
PrinterJob job = PrinterJob.getPrinterJob();
// 设置打印类
job.setPageable(book);
try {
//直接打印
for(UserObject obj: sourcelist)
{
this.obj= obj;
job.print();
}
//}
} catch (PrinterException e) {
e.printStackTrace();
}
}
else
{
// 如果打印内容为空时,提示用户打印将取消
JOptionPane.showConfirmDialog(null,
"对不起, 打印内容为空, 打印取消!",
"提示", JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE);
}
}
}
北大青鸟java培训:springbatch批处理框架的简介?
批处理任务是大多数IT项目的一个重要组成部分,批处理在业务系统中负责处理海量的数据,无须人工干预就能够自动高效的进行复杂的数据分析和处理。
批处理会定期读入批量数据,经过相应的业务处理进行归档的业务操作,批处理的特征是自动执行,处理的数据量大,定时执行。
将整个批处理的流程按逻辑划分可以分为读数据,处理数据和写数据。
以下是整理的springbatch框架的简介知识,希望能帮助到大家。
springbatch对批处理本身的特性进行了抽象,将批处理作业抽象为job和jobstep,将批处理的处理过程分解为数据读,数据处理和数据写。
将异常处理机制分为跳过,重启和重试。
将作业的分区分为多线程,并行远程和分区。
springbatch不是一个调度框架,但需要调度框架来配合完成批处理任务,它只关注批处理相关的任务问题,但没有提供相应的调度功能,如果需要使用调度功能,需要使用调度框架,这里介绍一个比较常用的调度框架quartz,可以配合springbatch完成批处理的任务调度。
springbatch的架构分为三层:基础架构层,核心层和应用层。
应用层包含所有的批处理作业,核心层主要提供JobLauncher、Job和step,基础架构层主要提供通用的读(ItemReader)、写(ItemWriter)和服务处理(如:RetryTemplate重试模板;RepeatTemplate:重复模板),Springbatch的三层架构体系使得Springbatch框架可以在不同的层级进行扩展,避免不同层级之间的相互影响。
job的介绍批处理的作业是由一组step组成,同时job本身也是配置文件的顶级元素。
每个作业都有自己的名字,可以定义step的执行顺序,以及定义作业是否可以重启。
job执行的时候会生成一个jobinstance(作业实例)和一个jobexecution(作业执行器)。
jobinstance包含执行job期间产生的数据以及job执行的状态信息;1个job可以对应多个jobinstance,1个jobinstance可以对应多个jobexecution。
job的配置的主要属性有id(作业的唯一标识)、job-repository(定义作业仓库)、incrementer(作业参数递增器)、restartable(作业是否重启)、parent(指定该作业的父作业)、abstract(定义作业是否抽象)。
step的介绍step表示作业中一个完整的步骤,一个job可以由一个或者多个step组成,step主要负责批处理运行过程中的主要业务逻辑的实现。
河北电脑培训认为每次step执行的时候会生成一个或者多个jobexecution,每次任务执行失败的时候,等到下次重新执行该任务的时候就会为该任务的step重新生成一个stepexecution。
关于java批量作业和批量批改作业的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-26,除非注明,否则均为
原创文章,转载请注明出处。