zoukankan      html  css  js  c++  java
  • 软件工程-个人项目

    软件工程-个人项目

    1.相关

    github地址

    2·PSP表格

    3.解题思路

    ·需求

    既然是软件工程实践,那最重要的就是明确需求。刚开始大致看了二十分钟需求,大致将软件分为三个模块。

    ·统计字符和行数都不难,要注意的是对空格回车的处理。

    ·计算单词的问题,重点在单词的判定,因为的题目的要求实在很有意思。

    ·至于排序和统计的需求,表示是最难的,到现在还没有调好orz。

    ·学习&回顾

    表示现在的泪都是在补前面的债。庆幸有这种机会吧,值得一提的是大致又完整地复习了一边文件读取。

    4.设计实现

    表示今天软工理论课上老师说得十分有道理,要先设计好来,在开始写代码的时候效率才会高。当初就大致想了想一共三个模块,每个模块大致会有什么函数,然后就一把梭了,结果是浪费了很多时间。吸取教训!

    关键函数自然是要画出流程图的了,比如单词判定中的函数,当时想着用正则做,但是没有实现的能力(似乎没有认真去看文档,因为刚好想到了自动机,感谢编译原理)

    【假装这里有图片】可惜图画在ipad上,时间已经不允许我来贴图了(稍后更新)

    5.改进&分析

    作为一个自觉能写得出来就已经庆幸的弱鸡,觉得我自己能改进的应该就是把 cout改进成printf了。

    性能分析如下

    6.代码说明

    用自动机实现单词的识别是个不错的选择,还有一种思路是正则表达式(下次可以试试)。

    int is_word(int state, char input, int * count)//通过自动机实现单词筛选
    {
    	switch (state)
    	{
    	case Begin:
    		if (isspace(input) || (!(input >= '0') && !(input <= '9'))) return Begin;
    
    		if (isalpha(input)) return L2;
    		if ((input >= '0'&&input <= '9')) return Wrong;
    
    	case Wrong:
    
    		if (isspace(input) || (!(input >= '0') && !(input <= '9'))) return Begin;
    		else return Wrong;
    
    	case L2:
    		if ((input >= '0'&&input <= '9')) return Wrong;
    		if (isalpha(input)) return L3;
    		else return Begin;
    
    	case L3:
    		if ((input >= '0'&&input <= '9')) return Wrong;
    		if (isalpha(input)) return L4;
    		else return Begin;
    
    	case L4:
    		if ((input >= '0'&&input <= '9')) return Wrong;
    		if (isalpha(input)) return Final;
    		else return Begin;
    
    	case Final:
    		if (isalnum(input)) return Final;
    		else { (*count)++; return Begin; }
    	}
    	return ERROR;
    }
    

    通过参考网上的博客,词频统计可采用哈希表来实现,再加上一个队列就可以排出前十名。【还有部分bug】

    7.感想

    ·开发之前要先设计好框架

    ·阅读文档的能力很关键

    ·代码能力急需提高

  • 相关阅读:
    Ubuntu 12.04下GAMIT10.40安装说明
    GAMIT 10.50在Ubuntu 12.04系统下的安装
    tomcat 5.5 动态加载类
    GAMIT 10.50在Ubuntu 12.04系统下的安装
    RHCE 系列(九):如何使用无客户端配置 Postfix
    Nginx+Keepalived(带Nginx监控脚本)
    黑马程序员_java08_多线程
    oracle 表类型变量的使用
    如何在win7系统中安装redis
    bzoj 2816: [ZJOI2012]网络(splay)
  • 原文地址:https://www.cnblogs.com/wuji-walden/p/9637890.html
Copyright © 2011-2022 走看看