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();
}
}
}
2018.4.6 java交易记录系统的更多相关文章
- 20172328 2018—2019《Java软件结构与数据结构》第二周学习总结
20172328 2018-2019<Java软件结构与数据结构>第二周学习总结 概述 Generalization 本周学习了第三章集合概述--栈和第四章链式结构--栈.主要讨论了集合以 ...
- 2018年最新Java面试题及答案整理(持续完善中…)
2018年最新Java面试题及答案整理(持续完善中…) 基础篇 基本功 面向对象特征 封装,继承,多态和抽象 封装封装给对象提供了隐藏内部特性和行为的能力.对象提供一些能被其他对象访问的方法来改变它内 ...
- 2018年,Java程序员转型大数据开发,是不是一个好选择?
近日网上有一篇关于Java程序员职场生存现状的文章“2017年 Java 程序员,风光背后的危机”,在Java程序员圈子里引起了广泛关注和热议. 2017年,Java 程序员面临更加激烈的竞争. 不得 ...
- 2018.8.3 Java中容易犯错误的问题思考与总结
Java容易犯错误的问题思考 float型 float f = 3.4 是否正确 不正确,应该用强制类型转换.如下所示:float f = (float)3.4 或float f = 3.4f 在ja ...
- 2018.2.2 java中的Date如何获取 年月日时分秒
package com.util; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; pub ...
- 2018/1/15 JAVA多线程相关
本文不说synchronized相关,它就是JAVA的一个保留关键字,jdk自己实现了它,但说真的,可应用场景真的少,相比lock接口,它还是被淘汰好吧; 首先,说说lock接口,lock接口是一个工 ...
- 链家2018春招Java工程师编程题题解
Light 题目描述 在小红家里面,有n组开关,触摸每个开关,可以使得一组灯泡点亮.现在问你,使用这n组开关,最多能够使得多少个灯泡点亮呢? 输入 第一行一个n,表示有n组开关.接下来n行,每行第一个 ...
- 爱奇艺2018春招Java工程师编程题题解
字典序最大子序列 题目描述 对于字符串a和b,如果移除字符串a中的一些字母(可以全部移除,也可以一个都不移除)就能够得到字符串b我们就称b是a的子序列. 例如."heo"是&quo ...
- 2018年最新JAVA面试题总结之框架(4)
转自于:https://zhuanlan.zhihu.com/p/40098726 1.谈谈对spring框架的了解 ,spring有什么作用(IOC,AOP),spring的核心是什么?回答:Spr ...
随机推荐
- Flask RESTful API搭建笔记
之前半年时间,来到项目的时候,已经有一些东西,大致就是IIS+MYSQL+PHP. 所以接着做,修修补补,Android/iOS与服务器数据库交换用PHP, Web那边则是JS+PHP,也没有前后端之 ...
- 洛谷P1014 Cantor表
P1014 Cantor表 题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 ...
- 四、python中表示组的概念与定义
现实世界中总是存在一组一组的事物,如俄罗斯方块.游戏中的技能.世界杯总决赛(8个小组,每组4个队) 一.python中如何表示“组”的概念 1.列表 1)定义 [1,2,3,4,5] type[1,2 ...
- hyperledger fabric 1.0.5 分布式部署 (八)
gdb debug peer 程序 在开始我们从 github 上download 下来的源码包,实际上已经包含了可执行的 peer 程序,但是该程序是使用 release 方式编译的,并不支持gdb ...
- Maven项目编译版本的问题和Spring中没有导入核心包
idea中maven项目的编译: 方案1:maven的settings.xml中指定全局默认编译版本 <profile> <id>jdk-1.8</id> < ...
- 《SQL 进阶教程》 case:在 UPDATE 语句里进行条件分支
1.对当前工资为30万日元以上的员工,降薪10%:2.对当前工资为25万日元以上且不满28万日元的员工,加薪20% update salaries set salary = case when sal ...
- mysql issue:
####0 https://yq.aliyun.com/ziliao/53466 首先,很荣幸你找到了这篇文章... 如果你忘记了mysql的密码不妨试试以下这个方法. 1.打开my.cnf 代码如 ...
- 渣渣菜鸡的 ElasticSearch 源码解析 —— 环境搭建
关注我 转载请务必注明原创地址为:http://www.54tianzhisheng.cn/2018/08/25/es-code01/ 软件环境 1.Intellij Idea:2018.2版本 2. ...
- [HNOI 2012]三角形覆盖问题
Description 二维平面中,给定 N个等腰直角三角形(每个三角形的两条直角边分别 平行于坐标轴,斜边从左上到右下).我们用三个非负整数( x, y, d)来描 述这样一个三角形 ...
- Spring 顾问
1.名称匹配方法切入点顾问 接口:ISomeService public interface ISomeService { public void doSome(); public void doSe ...