688
社区成员
发帖
与我相关
我的任务
分享| 这个作业属于哪个课程 | 2023年福大-软件工程实践-W班 |
|---|---|
| 这个作业要求在哪里 | 软件工程实践第二次作业——个人实战 |
| 这个作业的目标 | Json数据读取、Git代码管理、代码测试 |
| 其他参考文献 | gson官方文档 |
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 30 | 40 |
| • Estimate | • 估计这个任务需要多少时间 | 20 | 30 |
| Development | 开发 | 800 | 1200 |
| • Analysis | • 需求分析 (包括学习新技术) | 100 | 150 |
| • Design Spec | • 生成设计文档 | 20 | 30 |
| • Design Review | • 设计复审 | 10 | 30 |
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
| • Design | • 具体设计 | 40 | 90 |
| • Coding | • 具体编码 | 500 | 600 |
| • Code Review | • 代码复审 | 20 | 50 |
| • Test | • 测试(自我测试,修改代码,提交修改) | 20 | 20 |
| Reporting | 报告 | 60 | 90 |
| • Test Repor | • 测试报告 | 20 | 20 |
| • Size Measurement | • 计算工作量 | 20 | 10 |
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 10 | 15 |
| 合计 | 1680 | 2385 |
分为4个步骤:命令行参数的处理、读取input文件,获取相关指令、读取json文件的数据、写入output文件。
其中,json文件按内容分为两种,players.json和0116.json ~ 0122.json。players.json文件结构较简单,需要的三个信息full_name、gender、nationality均可较直接地获取。
而输出正式赛每日结果需要的三个信息time、winner、score则较为复杂。流程如下:schdule->courts->sessions->activities(注:activities里的actual_start_time即为需要的tiam)->teams(注:teams里的score即为所需的score)。winner的获取需要用teams里的team_id,根据team_id在schdule同级的teams中寻找对应的team,再根据找到的team里的players在schdule同级的players中寻找对应的player,player的short_name即为需要的winner。
if (args.length != 2) {
System.out.println("请输入正确的指令格式");
}
else {
if(args[0].endsWith(".txt")&&args[1].endsWith(".txt")){
ArrayList<String> file = lib.readFile(args[0]);
System.out.print(file);
}
else {
System.out.println("请输入正确的指令格式");
}
}
public JsonObject readJson(String fileName) {
try {
String filePath;
//创建json解析器
JsonParser parser = new JsonParser();
String root = System.getProperty("user.dir");
String FileName = fileName;
if (fileName.equals("players.json")) {
filePath = root + File.separator + "222000129" +
File.separator + "src" + File.separator + "data" +
File.separator + FileName;
} else {
filePath = root + File.separator + "222000129" +
File.separator + "src" + File.separator + "data" +
File.separator + "schedule" + File.separator + FileName;
}
//创建json对象
JsonObject obj = (JsonObject) parser.parse(new FileReader(filePath));
return obj;
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
}
实现readFile函数,传入文件名,逐行读取文件,将文件的内容存入ArrayList并返回。
public static ArrayList<String> readFile(String file){
String root = System.getProperty("user.dir");
String filePath = root + File.separator + "222000129" +File.separator + file;
ArrayList<String> arrayList = new ArrayList<>();
try{
// 构造一个BufferedReader类来读取文件
BufferedReader br = new BufferedReader(new FileReader(filePath));
String s = null;
// 使用readLine方法,一次读一行
while((s = br.readLine())!=null){
arrayList.add(s);
}
br.close();
}catch(Exception e){
e.printStackTrace();
}
return arrayList;
}
//写入文件中
FileWriter fileWriter = null;
String root = System.getProperty("user.dir");
String filePath = root + File.separator + "222000129" +File.separator + "output.txt";
try {
fileWriter = new FileWriter(filePath);//创建文本文件
fileWriter.write("full_name:" + full_name+"\r\n");
fileWriter.write("gender:" + gender+"\r\n");
fileWriter.write("nationality:" + nationality+"\r\n");
fileWriter.write("-----" + nationality+"\r\n");
} catch (IOException e) {
e.printStackTrace();
}
public JsonObject fromIdToTeam(String teamId, JsonArray teamArray) {
for (int i = 0; i < teamArray.size(); i++) {
JsonObject teamObject = teamArray.get(i).getAsJsonObject();
if (teamObject.get("uuid").getAsString().equals(teamId)) {
return teamObject;
}
}
return null;
}
学会了json数据读取,git代码管理能力得到了练习,但开发效率太低,以至于没有时间对程序进行性能改进。今后的作业一定要合理规划时间,提高开发效率。
帖子前面需要给出目录信息,作业缺失部分比较多,性能改进,单元测试展示,异常处理等缺失。