首页 > 其他 > 详细

软工第二次作业

时间:2018-09-12 20:59:48      阅读:192      评论:0      收藏:0      [点我收藏+]

github


技术分享图片

解题思路
刚拿到题目,我先看了几遍,大致的了解题目的含义。因为有些工具不会使用,如vs2017,我就先去学习工具的使用了。从工具的配置以及大致的使用过程,我都通过上网查资料以及询问同学。查资料以及学习资料的过程花费了我不少的时间,但有很大的收获,起码我些许懂得如何使用当下最时髦的编译软件。至于编码,因为我的代码能力较弱,我一开始没有自己动手打,而是去网上找了一个和题目有相似性的c代码,自己再将c改成了c++,还补充了一些功能上去,虽然还是有bug,但是编译过了,我也有些许安慰。

设计实现过程
以下是我的流程图
技术分享图片

单元测试功能因为代码有bug,然后没有通过,不过知道怎么设置附加依赖项。
技术分享图片

性能分析
由于自己水准不够,代码没有实现全部的功能,所以我就只是尝试了一下什么是性能分析功能,不过我会利用课余时间,拿一段简单易实现的代码,去测试一下分析功能。
技术分享图片

代码说明

void readfile(struct word * &head)
    {
        FILE *fp;
        linecount l;![](https://images2018.cnblogs.com/blog/1092899/201809/1092899-20180912203349918-1068576763.png)


        if ((fp = fopen("in.txt" ,"r") )== NULL)
        {
            printf("无法打开此文件!\n");
            exit(0);
        }
        while (!feof(fp))
        {
            int i = 0;
            ch = fgetc(fp);
            if (ch != 32 && ch != 10 && ch != 9) flag1 = 1;
            temp[0] = ‘ ‘;                                //保证单词的开始一定是有效字符 
            do
            {
                charnum++;                              //统计字符数 
                if (ch >= ‘a‘&&ch <= ‘z‘ || ch >= ‘A‘&&ch <= ‘Z‘ || ch >= ‘0‘&&ch <= ‘9‘)
                {
                    if (ch >= ‘A‘&&ch <= ‘Z‘)                //大写化小写 
                    {
                        temp[i] = ch - 32;
                        i++;
                    }
                    else
                    {
                        temp[i] = ch;
                        i++;
                    }
                    if (i <= 3 && ch >= ‘0‘&&ch <= ‘9‘)  flag = 0;   //如果字符序列前四个有数字则不算单词 
                }
                ch = fgetc(fp);
                if (ch != 32 && ch != 10 && ch != 9) flag1 = 1;
                if (ch = 10)
                {
                    l.line(flag1);
                    flag1 = 0;
                }
                if (feof(fp))
                {
                    charnum--;                            //多加了一个EOF 
                    break;
                }
            } while (ch >= ‘a‘&&ch <= ‘z‘ || ch >= ‘A‘&&ch <= ‘Z‘ || ch >= ‘0‘&&ch <= ‘9‘ || temp[0] == ‘ ‘);
            charnum++;
            temp[i] = ‘\0‘;
            p = head->next;
            while (p)                                
            //旧单词,词频加1 
            {
                if (!strcmp(temp, p->name))
                {
                    p->num++;
                    wordnum++;
                    break;
                }
                p = p->next;
            }
            if (!p&&temp[0] != ‘\0‘&&flag == 1)                      
            //新单词存入链表
            {
                p = new word;
                strcpy_s(p->name, temp);
                p->num = 1;
                wordnum++;
                p->next = head->next;
                head->next = p;
            }
            flag = 1;
        }
    }
};

以上就是我的核心代码。我的思路是通过逐个字符的读取文本文件,将相似于单词的字符串存入一个字符数组,然后在通过一个判断,判断这个字符串是不是单词,是就存储进结构体链表中。

心得体会
这次的实践,由于c++使用的较少,然后也是初次使用vs2017,我的代码实现挺糟糕的,只完成字符的统计功能。如果是用c写的话到可以完成全部的功能,由于时间问题我是不能在deadline之前实现全部功能,之后自己会找时间改进自己的代码,让自己能收获到更多,总之让我自己意识到自己的代码水平有很大的进步空间。然后就是上网学习资料,我觉得这获得知识都是比较实用,多看看别人的博客对自己也是有很大的提升。还有就是以前从来没有很系统的为一道题目做很系统的安排计划,这次实践让我感觉到有一个系统的过程会省事h很多。

软工第二次作业

原文:https://www.cnblogs.com/onezya/p/9637181.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!