码云地址:https://gitee.com/Huan62201/events;
个人PSP表格:
PSP2.1 |
PSP阶段 |
预估耗时 (分钟) |
实际耗时 (分钟) |
Planning |
计划 |
270 |
180 |
· Estimate |
· 估计这个任务需要多少时间 |
180 |
120 |
Development |
开发 |
580 |
400 |
· Analysis |
· 需求分析 (包括学习新技术) |
180 |
60 |
· Design Spec |
· 生成设计文档 |
40 |
30 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
20 |
20 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
20 |
10 |
· Design |
· 具体设计 |
20 |
20 |
· Coding |
· 具体编码 |
180 |
200 |
· Code Review |
· 代码复审 |
30 |
40 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
90 |
60 |
Reporting |
报告 |
90 |
70 |
· Test Report |
· 测试报告 |
40 |
30 |
· Size Measurement |
· 计算工作量 |
20 |
10 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
30 |
30 |
合计 |
850 |
630 |
一、功能需求分析
WordCount的需求可以概括为:对程序设计语言源文件统计字符数、单词数、行数,统计结果以指定格式输出到默认文件中,以及其他扩展功能,并能够快速地处理多个文件。可执行程序命名为:wc.exe,该程序处理用户需求的模式为:
wc.exe [parameter] [input_file_name]
存储统计结果的文件默认为testCase.txt,放在与wc.exe相同的目录下。
详细:
wc.exe -c file.c //返回文件 file.c 的字符数
wc.exe -w file.c //返回文件 file.c 的单词总数
wc.exe -l file.c //返回文件 file.c 的总行数
wc.exe -o outputFile.txt //将结果输出到指定文件outputFile.txt
注意:
空格,水平制表符,换行符,均算字符。
由空格或逗号分割开的都视为单词,且不做单词的有效性校验,例如:thi#,that视为用逗号隔开的2个单词。
-c, -w, -l参数可以共用同一个输入文件,形如:wc.exe –w –c file.c 。
-o 必须与文件名同时使用,且输出文件必须紧跟在-o参数后面,不允许单独使用-o参数。
二、程序设计
A:大概设计
1):程序由主函数和方法构成。
2):程序使用main的入口参数。
B:详细设计
1):将每个指令对应一个方法。
2):将功能方法写在一个主函数的方法里。
3):使用条件判断语句来处理输入的命令。
三.java代码
主要代码
WordCount WC=new WordCount(0,0,0); String inputFile="file.c"; String stopFlie="stopFile.txt"; String outputFile="result.txt"; for(int i=0;i<args.length;i++){ if(args[i].endsWith(".c")) inputFile=args[i]; if(args[i].equals("-e")) stopFlie=args[i+1]; if(args[i].equals("-o")) outputFile=args[i+1]; } WC.wc(inputFile); for(int i=0;i<args.length;i++) { switch(args[i]){ case "-c":{ System.out.println(inputFile+",字符数:" + WC.getCharCount()); break; } case "-w":{ System.out.println(inputFile+",单词数:" + WC.getWordCount()); break; } case "-l":{ System.out.println(inputFile+",行数:" + WC.getLineCount()); break; } case "-o":{ String outText=""; for(int j=0;j<args.length;j++){ if(args[j].equals("-c")) outText=outText+"\r\n"+inputFile+",字符数:" + WC.getCharCount(); if(args[j].equals("-w")) outText=outText+"\r\n"+inputFile+",单词数:" + WC.getWordCount(); if(args[j].equals("-l")) outText=outText+"\r\n"+inputFile+",行数:" + WC.getLineCount(); } File writename = new File(outputFile); // 相对路径,如果没有则要建立一个新的output.txt文件 writename.createNewFile(); BufferedWriter out = new BufferedWriter(new FileWriter(writename)); out.write(outText); out.flush(); out.close(); break; } } } } //统计行数 public void wc(String inputFile) throws IOException{ String lineString = null; String[] buffer; File dir=new File(inputFile); BufferedReader bf = new BufferedReader(new FileReader(dir)); // 读取文件 while((lineString=bf.readLine())!=null){ buffer=lineString.split(",| "); //遇到 , 空格 就结束赋值 for(int i=0;i<buffer.length;i++){ if(!buffer[i].equals("")) wordCount++; } lineCount++; charCount+=lineString.length(); } bf.close(); } }
四.测试用例
1.在命令行执行程序
用例测试结果
六.参考链接
http://lengbingteng-163-com.iteye.com/blog/1115568
Java如何读取Resources目录下的文件:
https://blog.csdn.net/oschina_40188932/article/details/78833754
运行exe时报错:
http://www.cnblogs.com/smileinwind/p/9370054.html
用eclipse如何将java程序生成一个.exe可运行文件?
https://blog.csdn.net/u011677147/article/details/42262815
原文地址:https://www.cnblogs.com/huanxin/p/9696407.html