688
社区成员
发帖
与我相关
我的任务
分享| 这个作业属于哪个课程 | 2023年福大-软件工程实践-W班 |
|---|---|
| 这个作业要求在哪里 | 软件工程实践第二次作业——个人实战 |
| 这个作业的目标 | Gitcode上传文件、制定代码风格规范、编写代码实现一个命令行程序、撰写博客 |
| 其他参考文献 | 工程师的能力评估和发展 、源代码管理 |
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
|---|---|---|---|
| Planning | 计划 | 25 | 30 |
| · Estimate | · 估计这个任务需要多少时间 | 25 | 30 |
| Development | 开发 | 830 | 1000 |
| · Analysis | · 需求分析(包括学习新技术) | 60 | 100 |
| · Design Spec | · 生成设计文档 | 30 | 30 |
| · Design Review | · 设计复审 | 30 | 40 |
| · Coding Standard | · 代码规范(为目前的开发制定合适的规范) | 30 | 50 |
| · Design | · 具体设计 | 30 | 50 |
| · Coding | · 具体编码 | 500 | 550 |
| · Code Review | · 代码复审 | 30 | 60 |
| · Test | · 测试(自我测试,修改代码,提交修改) | 120 | 120 |
| Reporting | 报告 | 110 | 110 |
| · Test Repor | · 测试报告 | 60 | 60 |
| · Size Measurement | · 计算工作量 | 10 | 10 |
| · Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 40 | 40 |
| 合计 | 965 | 1140 |
使用阿里巴巴开源的fastjson对json文件进行解析。引用fastjson的jar包使用fastjson提供的方法对json数据进行处理。
代码分为两个类:AOSearch类和Lib类;其中AOSearch类只含有主函数,通过调用Lib类的方法实现要求。
Lib类:
/*
*功能:读取input.txt中的命令
*/
public String[] GainCommands(String path){}
/*
*方法:读取文件内容
*/
public String GetFile(String path) {}
/*
* 功能:判断日期的是否合法
*/
public boolean isValidDate(String str){}
/*
* 功能:输出指定日期的比赛信息
*/
public String GetSchedule(String path){}
/*
*功能: 输出全体运动员字符串
*/
public String GainAllPlayers(){}
/*
*功能:通过id查找队伍
*/
public JSONArray GainTeamPlayersById(JSONArray arr,String id){}
/*
*功能:根据队伍处理比分
*/
public String GainScores(JSONArray arr1,JSONArray arr2){}
/*
*功能:通过id和队伍查找名字
*/
public String GetWinnerNames(JSONArray playerArr,JSONArray winnerId){}
/*
*功能:根据command数组来执行各种命令
*/
public void Command(){}
输出全体运动员字符串
public String GainAllPlayers(){
String jsonStr = GetFile("src/data/players.json");
JSONObject obj = JSON.parseObject(jsonStr);
JSONArray arr = obj.getJSONArray("players");
String result = "";
for(int i = 0;i < arr.size();i++){
result += "full_name:"+arr.getJSONObject(i).getString("full_name");
result += "\ngender:";
if((arr.getJSONObject(i).getString("gender").equals("M"))){
result += "male";
}else{
result += "female";
}
result += "\nnationality"+arr.getJSONObject(i).getJSONObject("nationality").getString("name")
+"\n------\n";
}
return result;
}
输出指定日期的比赛信息
public String GetSchedule(String path){
String jsonStr = GetFile(path);
JSONObject obj = JSONObject.parseObject(jsonStr);
JSONArray arr = obj.getJSONArray("matches");
String result = "";
for (int i = 0;i < arr.size(); i++){
if(arr.getJSONObject(i).getJSONObject("match_status").getString("abbr").equals("W/O")){
result += "W/O------\n";
System.out.println("W/O");
}
result+="time:"+arr.getJSONObject(i).getString("actual_start_time");
JSONArray teams = arr.getJSONObject(i).getJSONArray("teams");
JSONObject teamA = teams.getJSONObject(0);
JSONObject teamB = teams.getJSONObject(1);
String winner = teamB.getString("status");
if(winner == null)
winner = teamB.getString("team_id");
else
winner = teamA.getString("team_id");
result += "\nwinner:";
JSONArray winner_arr = GainTeamPlayersById(obj.getJSONArray("teams"),winner);
result += GetWinnerNames(obj.getJSONArray("players"),winner_arr);
result += "\nscore:";
result += GainScores(teamA.getJSONArray("score"),teamB.getJSONArray("score"));
result += "\n------\n";
}
return result;
}
假如输入无法处理的指令,例如:
无法识别的指令,则输出Error
result后的日期不符合以下要求,则输出N/A
else if(!(lone_cmd.length == 2 && isValidDate(lone_cmd[1]))){
try {
fos.write(NA_STRING.getBytes(StandardCharsets.UTF_8));
}catch (IOException e){
System.out.println("写入文件失败!");
}
} else{
try {
fos.write(ERROR_STRING.getBytes(StandardCharsets.UTF_8));
}catch (IOException e){
System.out.println("写入文件失败!");
}
}
catch(FileNotFoundException e){
System.out.println("未找到文件!");
}
本次作业让我对git的使用有了更多的了解,让我对java编写代码进行了一次回顾,发现有许多内容由于不经常使用忘记了,例如:对文件的读写操作;本次作业以后我会抽时间重新学习java,增加代码编写的熟练度。第一次浏览作业需求时,脑子里是一团乱麻,不知从何下手,在搜集网上资料和同学的帮助下完成了这次作业,从中也体现了我项目经验的不足,遇到难题就乱了章法,希望以后能越来越好吧。
作业未完成部分较多,希望之后能够认真阅读相关博客,按要求完成作业