软工:结对编程

结对伙伴学号 201831061428
结对伙伴姓名 钟宜轩
伙伴博客地址 博客
Github地址 git

PSP表格

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 60
Estimate 估计这个任务需要多少时间 40 30
Development 开发 200 200
Analysis 需求分析 (包括学习新技术) 50 40
Design Spec 生成设计文档 20 20
Design Review 设计复审 (和同事审核设计文档) 25 25
Coding Standard 代码规范 (为目前的开发制定合适的规范) 15 15
Design 具体设计 100 80
Coding 具体编码 600 630
Code Review 代码复审 25 20
Test 测试(自我测试,修改代码,提交修改) 30 50
Reporting 报告 30 20
Test Report 测试报告 25 30
Size Measurement 计算工作量 30 20
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计 40 50
合计 1220 1290

遇到了很多困难,但也花费了很多时间去努力克服。虽然不是很完善,但我们确实尽力了。

讨论过程

图片

设计实现过程

代码设计流程如下:

图片

代码实现

#include<iostream>
#include<string>
#include<cstring>
#include<stdlib.h> 
#include<ctype.h>
#include<fstream>
#define N 20
using namespace std;
/*定义结构体*/
typedef struct wenjian{
    char data[N];
    int shu;
    struct wenjian *zuo;
    struct wenjian *you;
}wenjian,*bwenjian;
class Word{//定义一个词汇的类 
public:
    Word();
    int get_word(int start, int end, char* p, char* word);
    void create_wenjian(char* m, bwenjian& b);
    void Order(bwenjian b, FILE* q);
    int sum;
    int j;
    int i;
    char liang[N];
    char liang1[N];
    char word[N];
    char fwen[20];
    
};
/*初始化*/
Word::Word()
{
    sum = 0;
    j = 0;
    i = 0;
}
/*定义获取单词数的函数*/
int Word::get_word(int start, int end, char* p, char* word)
{
    memset(word, 0, sizeof(char));
    for (  i = start; i<end; i++)//使用循环读取文件 
    {
        if (isalpha(p[i]))
        {
            word[j] = p[i];
            j++;
        }
        else if (j == 0)
        {
            continue;
        }
        else
        {
            word[j] = '\0';
            j = 0;
            sum++;
            break;
        }
    }
    return i;
}
/*查找函数*/
void Word::create_wenjian(char* m, bwenjian& b)
{
    strcpy(liang, m);
    liang[0] = tolower(m[0]);
    if (b == NULL)
    {
        b = (bwenjian)malloc(sizeof(wenjian));//创建堆栈
        strcpy(b->data, m);
        b->shu = 1;
        b->zuo = NULL;
        b->you = NULL;
    }
    else
    {
        strcpy(liang1, b->data);
        liang1[0] = tolower(b->data[0]);
        if (strcmp(liang, liang1) == -1)
        {
            create_wenjian(m, b->zuo);
        }
        else if (strcmp(liang, liang1) == 1)
        {
            create_wenjian(m, b->you);
        }
        else
        {
            b->shu++;
        }
    }
}
/*写入文件*/
void Word::Order(bwenjian b, FILE* q)
{
    if (b != NULL)
    {
        Order(b->zuo, q);
        fprintf(q, "world:%-10s 次数:%-9d\n", b->data, b->shu);
        printf("world:%-10s 次数:%-9d\n", b->data, b->shu);
        Order(b->you, q);
    }
}
int main()
{
    Word w;//定义Word的类
    while (true)
    {
        memset(w.fwen, 0, sizeof(w.fwen));
        cout << "请输入你想打开的函数" << endl;
        cin >> w.fwen;
        FILE *q;  
        q=fopen(w.fwen,"rb");
        if (q==NULL)
        {
            cout << "打开文件失败!" << endl;
            return false;
        }
        cout << "已打开!" << w.fwen << endl;
        //开始进行文件统计 
        fseek(q, 0, SEEK_END);
        int len = ftell(q);
        rewind(q);
        char *p = new char[len + 1];
        p[len] = 0;
        fread(p, 1, len, q);
        fclose(q);
        cout << p << endl;
        bwenjian b = NULL;
        while (w.i<len)
        {
            w.i = w.get_word(w.i, len, p, w.word);
            if (strlen(w.word) == 0)
            {
                break;
            }
            w.create_wenjian(w.word, b);
        }
        memset(w.fwen, 0, sizeof(w.fwen));
       cout<<"\n"<<"请输入写你想存储的文件: "<<endl;
        cin >> w.fwen;
        q=fopen(w.fwen,"w");
        if (q == NULL)
        {
            cout << "不能写入文件" << endl;
            return false;
        }
        fprintf(q, "词频统计结果: \n");
        cout<<"词频统计结果:\n"<<endl;
        fprintf(q, "\n");
        w.Order(b,q);
        fprintf(q, "\n");
        fprintf(q, "world总数: %d\n", w.sum);
        printf("world总数:%d\n", w.sum);
        fclose(q);
        cout<<"\n" << "已写入文件:" << w.fwen << endl;
    }
    return 0;
}

代码说明

(运行测试与结果)
图片

图片

总结

作业好难啊!!花费了很多时间,也同学一起努力,才能算是勉强完成,和同学一起努力,一起流汗,在一起付出中收获,确实是不错的体验,可是作业的难度太大了!!提交也遇到了很多麻烦。不过幸好和同伴在一个寝室,大家一起敲代码,一起研究怎么交,如果不在一个寝室,沟通不方便的话,我们可能会死。万幸,还是在作业截止之前交了上来,以后希望可以再可以和同学一起努力。

猜你喜欢

转载自www.cnblogs.com/Drac/p/11684584.html