结队_wordcount
合作者
201631062227,201631054210
代码地址
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
测试运行的效果图如下:


总结
在这次的结队编程项目中,我感受到了团队的强大,相比于个体,团队可以让思维更加缜密,合作开发的效率也会更高。
这是我们的第一次合作,相对来说还不够默契,但是我相信我们在以后的学习生涯中会做得更好,把团队的效率更加合理的利用起来。
这一次的项目总的来说难度不大,但是让我们深刻的体会到了团队的强大,熟悉了程序的一整套开发流程。
经过了几次优化设计,对于程序的开发也更加的得心应手,在以后的学习中,我们会不断的改进与反思。
 
                    
                     
                    
                 
                    
                
 

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号