• 软工第二次作业


    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("无法打开此文件!
    ");
    			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] = '';
    			p = head->next;
    			while (p)                                
    			//旧单词,词频加1 
    			{
    				if (!strcmp(temp, p->name))
    				{
    					p->num++;
    					wordnum++;
    					break;
    				}
    				p = p->next;
    			}
    			if (!p&&temp[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很多。

  • 相关阅读:
    EXCEL中统计个数问题
    Boot Windows XP from a USB flash drive
    转:用VHD文件将Windows 7安装到虚拟磁盘
    CPU性能排名
    活动目录维护
    IE7占用CPU资源非常高
    不得不看:Windows Data Protection
    硬盘模式为UDMA 2.
    转载:NC6400安装Win7系统驱动列表及注意事项
    HP笔记本电池
  • 原文地址:https://www.cnblogs.com/onezya/p/9637181.html
Copyright © 2020-2023  润新知