结队-WordCount

合作者

  201631054210,201631062227

代码地址

  https://gitee.com/e_minem/first_homework

本次作业链接地址

  https://edu.cnblogs.com/campus/xnsy/2018Systemanalysisanddesign/homework/2188


 

PSP表格

 PSP2.1 PSP阶段

预估耗时

(分钟)

实际耗时

(分钟)

 Planning  计划  20 30
· Estimate · 估计这个任务需要多少时间 20  30
 Development  开发 420 390
 · Analysis  · 需求分析 (包括学习新技术)  60 50
· Design Spec  生成设计文档 40 30 
· Design Review · 设计复审 (和同事审核设计文档)  20 10
· Coding Standard  · 代码规范 (为目前的开发制定合适的规范)  10  10 
  · Design  · 具体设计  50   40
  · Coding   · 具体编码   180  170 
 · Code Review   · 代码复审   40  40
  · Test   · 测试(自我测试,修改代码,提交修改)   20  10
  Reporting   报告   50  60 
 · Test Report   · 测试报告  20  30 
 · Size Measurement   · 计算工作量  10  10 
  · Postmortem & Process Improvement Plan  · 事后总结, 并提出过程改进计划   20   10
    合计  490  430

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

互相审查代码

  该程序我与队员共同完成,在审查阶段对代码进行检查,未发现明确bug。

设计过程

  该程序主要设计思想是对每行代码进行划分,统计非空行的个数,每行单词的个数,每行的长度(字符数)。

  算法实现:用python仅需要一个循环便解决了这类问题。

代码说明

import sys
import os
gpus = sys.argv[2]
#gpus = [int(gpus.split(','))]
batch_size = sys.argv[1]
file_name=gpus
line_count=0
word_count=0
character_count=0
with open(file_name,'r',encoding='utf-8') as f:
    for line in f:
        if line.strip()=='':
            continue
        word=line.split()
        line_count+=1
        word_count+=len(word)
        character_count+=len(line)
if batch_size=='-c':
    print('%s,字符数:%d'% (file_name,character_count))
elif batch_size=='-w':
    print('%s,单词数:%d'%(file_name,word_count))
elif batch_size=='-l':
    print('%s,行数:%d'%(file_name,line_count))
elif batch_size == '-o':
    try:
        f = open("result.txt", 'w+')
        f.write('%s: 字母数:%s\n单词数:%s\n行数:%s' % (file_name, character_count, word_count, line_count))
    except Exception as err:
        print(err)
    finally:
        f.close()
else:
    print("karma is bitch")

  该程序代码十分简洁归功于python这门语言的强大

  首先导入的两个包 一个是sys,主要用来传递参数用。另一个是os,用来输出结果到文件上。

  sys从命令行读取命令,该命令是字符串的形式,共有两个参数一个是关于执行的操作参数,例如-w,-l等,一个是目标文件的名称,例如doupan.py:

  获取目标文件的代码主要是:

with open(file_name,'r',encoding='utf-8') as f:
    for line in f:
        if line.strip()=='':
            continue
        word=line.split()
        line_count+=1
        word_count+=len(word)
        character_count+=len(line)

  我们首先打开目标文件,再从目标文件中以行为单位读取。

  如果这一行是空值的话就跳过,如果不是的话就进行相应的计数。这是一个必要的步骤不然行数会多算。

  len()函数和split()函数都使统计变得十分简单。

 

  最后我们根据从命令行读取的第一个参数判断要返回的形式,关键代码如下:

if batch_size=='-c':
    print('%s,字符数:%d'% (file_name,character_count))
elif batch_size=='-w':
    print('%s,单词数:%d'%(file_name,word_count))
elif batch_size=='-l':
    print('%s,行数:%d'%(file_name,line_count))
elif batch_size == '-o':
    try:
        f = open("result.txt", 'w+')
        f.write('%s: 字母数:%s\n单词数:%s\n行数:%s' % (file_name, character_count, word_count, line_count))
    except Exception as err:
        print(err)
    finally:
        f.close()
else:
    print("karma is bitch")

  我们还需将py文件生成exe可执行文件 只需要在命令行如下操作:

  pyinstaller -F wc.py 

 

  测试运行的效果图如下:

总结

  1+1>2?是的,团结的力量会无限放大个体的能力,在这次简单的结队编程中让我有了对团队有了新的认知。也明白了结队编程在以后的开发软件过程中是非常必要的。

  该次作业属于比较简单的程序设计,但其实包含的步骤内容是作为软件工程的学生应该熟练掌握的,

  熟悉一套完整的工作流程是我们今后在工作中,无比重要的。

  从PSP表格到需求分析设计到编程总结让我们体验了一次比较完整的开发过程,受益匪浅,

  此次作业还存在着明显的不足,不过自己会慢慢改进且反思的。

posted @ 2018-10-17 19:23  城中大雨  阅读(345)  评论(0编辑  收藏  举报