2018.4.6 java交易记录系统

题目

1、交易明细文件内容如下例:


客户号 姓名 所述机构号 性别 帐号 发生时间 发生额

000001|刘德华|0000|1|4155990188888888|20060720200005|300.00
000201|晓龙|0002|1|4155990199999999|20060720200005|500.00
000101|黄晓明|0012|1|4155990100000000|20060720200005|1000.50
000101|张东健|0012|1|4155990155555555|20060720200005|600.99
000301|梁朝伟|0013|0|4155990111111111|20060722201005|5000.00
000001|刘德华|0000|1|4155990188888888|20060725200005|200.00


2、一行是一条交易明细,每行分6列,列间用|分隔。#为注释符号。
3、类TransRecord存储一条明细
4、解析文件数据至TransRecord[]
5、实现如下功能:
public class TransRecordManager{
/**
* 记录数组
*/
private TransRecord[] records;

/**
* 加载数据
* @param in - 数据流
* @return
* @throws - 解析过程中IO错误
*/
public void load(InputStream in) throws IOException;

/**
* 加载数据
* @param fileName - 包含记录数据的文件名
* @return
* @throws - 解析过程中IO错误
*/
public void load(String fileName) throws IOException;

/**
* 取所有记录
* @return 所有记录数组或null
*/
public TransRecord[] getAll();

/**
* 按客户号查询记录
* @param customerNumber - 客户号
* @return 符合条件的记录数组或null
*/
public TransRecord[] findByCustomerNumber(String customerNumber);

/**
* 按日期段查询记录
* @param start - 开始日期
* @param end - 结束日期
* @return 符合条件的记录数组或null
*/
public TransRecord[] findByDate(String start, String end);

/**
* 取得总金额
* @return 总金额
*/
public BigDecimal totalAmount();

/**
* 按金额排序
* @return 按金额升序排序的结果
*/
public TransRecord[] sortByAmount();

/**
* 打印  
* @param out - 输出流
*/
public void print(OutputStream out);

}
提示:排序、查询采用java.util.Arrays和java.util.Collections中的方法

package com.lanqiao.dmeo5;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.util.Scanner;

public class TransRecordManager {
	private TransRecord[] records;

	Scanner sc = new Scanner(System.in);

	public void show() {
		System.out.println("=====交易记录管理系统=====");
		System.out.println("1.加载数据");
		System.out.println("2.");
		System.out.println("3.查询记录(1.根据客户号,2.根据日期)");
		System.out.println("4.总金额为");

		System.out.println("请选择:");
		int choice = sc.nextInt();
		switch (choice) {
		case 1:

			break;
		case 2:

			break;

		case 3:

			break;
		case 4:

			break;

		default:
			break;
		}
	}

	/**
	 * 加载数据
	 * 
	 * @param in
	 *            - 数据流
	 * @return
	 * @throws -
	 *             解析过程中IO错误
	 */
	public void load(InputStream in) throws IOException {
		String str = null;
		String[] strs = null;
		try {
			TransRecord tR = null;
			InputStreamReader input = new InputStreamReader(in);
			BufferedReader bfr = new BufferedReader(input);
			for (int i = 0; (str = bfr.readLine()) != null; i++) {
				if (str.startsWith("#") || str.startsWith(" ")) {
					
					 
					str = bfr.readLine();
				} else {
					strs = str.split("[|]");
					//赋值客户编号
					tR.setCustomerNumber(strs[0]);
					tR.getCustomerNumber();

					tR.setCustomerName(strs[1]);
					tR.getCustomerName();

					tR.setInstitutionNum(strs[2]);
					tR.getInstitutionNum();

					tR.setSex(Integer.parseInt(strs[3]));
					tR.getSex();

					tR.setAccountNumber(strs[4]);
					tR.getAccountNumber();

					tR.setHappenTime(strs[5]);
					tR.getHappenTime();

					tR.setAmount(new BigDecimal(strs[6]));
					tR.getAmount();

					records[i] = tR;
					System.out.println(tR.toString());

				}
			}
			bfr.close();

		} catch (IOException e) {
			System.out.println("捕获信息异常");
		}
	}

	/**
	 * 加载数据
	 * 
	 * @param fileName
	 *            - 包含记录数据的文件名
	 * @return
	 * @throws -
	 *             解析过程中IO错误
	 */
	public void load(String fileName) throws IOException {
		try {
			// 创建输入流
			FileInputStream fI = new FileInputStream(fileName);
			load(fI);
			// 关闭流
			fI.close();
		} catch (IOException e) {
			e.printStackTrace();
			System.out.print("获取IO流信息异常!");
		}

	}

	/**
	 * 取所有记录
	 * 
	 * @return 所有记录数组或null
	 */
	public TransRecord[] getAll() {
		return records;
	}

	/**
	 * 按客户号查询记录
	 * 
	 * @param customerNumber
	 *            - 客户号
	 * @return 符合条件的记录数组或null
	 */
	public TransRecord[] findByCustomerNumber(String customerNumber) {
		return records;

	}

	/**
	 * 按日期段查询记录
	 * 
	 * @param start
	 *            - 开始日期
	 * @param end
	 *            - 结束日期
	 * @return 符合条件的记录数组或null
	 */
	public TransRecord[] findByDate(String start, String end) {
		return records;

	}

	/**
	 * 取得总金额
	 * 
	 * @return 总金额
	 */
	public BigDecimal totalAmount() {
		return null;

	}

	/**
	 * 按金额排序
	 * 
	 * @return 按金额升序排序的结果
	 */
	public TransRecord[] sortByAmount() {
		return records;

	}

	/**
	 * 打印
	 * 
	 * @param out
	 *            - 输出流
	 */
	public void print(OutputStream out) {

	}

}
package com.lanqiao.dmeo5;

import java.math.BigDecimal;

public class TransRecord {
	private String customerNumber;//客户号
    private String customerName;//客户名
    private String institutionNum;//所属机构
    
    private int sex;//性别
    private static final String[] SEX = {"女","男"};
    
    private String accountNumber;//账号
    private String happenTime;//发生时间
    private BigDecimal amount;//发生额
    
    //get set方法
    public String getCustomerName() {
		return customerName;
	}
	public void setCustomerName(String customerName) {
		this.customerName = customerName;
	}
	public String getCustomerNumber() {
		return customerNumber;
	}
	public void setCustomerNumber(String customerNumber) {
		this.customerNumber = customerNumber;
	}
	public String getInstitutionNum() {
		return institutionNum;
	}
	public void setInstitutionNum(String institutionNum) {
		this.institutionNum = institutionNum;
	}
	public String getAccountNumber() {
		return accountNumber;
	}
	public void setAccountNumber(String accountNumber) {
		this.accountNumber = accountNumber;
	}
	public String getHappenTime() {
		return happenTime;
	}
	public void setHappenTime(String happenTime) {
		this.happenTime = happenTime;
	}
	
	public void setSex(int sex) {
		this.sex = sex;
	}
	public BigDecimal getAmount() {
		return amount;
	}
	public void setAmount(BigDecimal amount) {
		this.amount = amount;
	}
	public static String[] getSex() {
		return SEX;
	}
	
    
    
    //重写toString方法
	public String toString() {
		return "TransRecord [customerName=" + customerName + ", customerNumber=" + customerNumber + ", institutionNum="
				+ institutionNum + ", accountNumber=" + accountNumber + ", happenTime=" + happenTime + ", sex=" + sex
				+ ", amount=" + amount + "]";
	} 
	
    
    
    
}

package com.lanqiao.dmeo5;

import java.io.IOException;

public class Test {
	public static void main(String[] args) {
		TransRecordManager t = new TransRecordManager();
		
		try {
			t.load(System.getProperty("usr.dir")+"~/Java/src");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
原文地址:https://www.cnblogs.com/qichunlin/p/8728479.html