课程名称 | 2016级计算机科学与工程学院软件工程(西北师范大学) |
---|---|
做业要求 | 实验二 软件工程我的项目 |
课程目标 | 经过学习这门课程,深刻了解软件开发的标准过程,从软件生命周期的8个阶段分析各个阶段的开发任务,摒弃以往开发软件的方法。 |
做业意义 | 这次做业能帮助我掌握软件项目我的开发流程和Github上发布软件项目的操做方法 |
1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个。 2.程序须要很壮健,能读取容纳英文原版《哈利波特》10万词以上的文章。 3.指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图。 4.高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k个单词的词频及单词。 5.统计该文本全部单词数量及词频数,并能将单词及词频数按字典顺序输出到文件result.txt。
1.能够读取指定的英文文本文件。 2.能够对指定文本进行单词词频统计。 3.对统计的单词及频数按字典字母顺序打印。 4.采用图形化界面方便操做。
这个程序包含5个函数,包括1个主函数main函数和5个功能函数,分别是main函数、srwj函数、px函数、pv函数、dy函数、menu函数。其中main函数主要负责控制整个程序的运行,而剩下5个函数功能分别以下: 1.srwj函数用来读取指定文件,并将相关信息输入结构体变量wd中; 2.pv函数用来统计单词的频数; 3.px函数用来对已统计的单词进行英文字母顺序的排序; 4.dy函数用来输出单词的相关统计信息; 5.menu函数用来进行图形化界面操做;
用户界面html
程序运行界面
git
int main() { srwj(); px(); pv(); menu(); }
void pv(){ int m,n,flag=1; for(m=0;m<cc;m++){ for(n=0;n<m;n++){ if(strcmp(wd[n].dc,wd[m].dc)==0){ flag=0; break; } else flag=1; } while(flag){ for(n=m;n<cc;n++){ if(strcmp(wd[n].dc,wd[m].dc)==0){ wd[m].nn++; } flag=0; } } } }
void px(){ int m,n,k; char temp[20]; for(m=0;m<cc-1;m++){ k=m; for(n=m+1;n<cc;n++){ if(strcmp(wd[k].dc,wd[n].dc)>0){ k=n; } if(k!=m){ // temp=wd[m].dc; // wd[m].dc=wd[k].dc; // wd[k].dc=temp; strcpy(temp,wd[m].dc); strcpy(wd[m].dc,wd[k].dc); strcpy(wd[k].dc,temp); } } } }
int menu() { int ii; printf("\n"); printf(" *********************************************************\n"); printf(" # #\n"); printf(" # 词频统计 #\n"); printf(" # #\n"); printf(" *********************************************************\n"); printf(" # 1.显示单词总数、所有单词及频数 #\n"); // printf(" # 2. 显示高频词及频数 #\n"); printf(" # #\n"); printf(" # 3.退出系统 #\n"); printf(" *********************************************************\n"); printf(" 请选择您须要的操做序号(1-3)按回车确认:"); scanf("%d",&ii); printf("\n"); switch(ii) { case 1:dy();break; // case 2:gpc();break; case 3: break; default:printf("请在1-3之间选择\n");break; } }
- 在此次项目中,我查阅了一些之前看过的c语言书籍,因为很长时间没用过c语言,因此编程颇为费力。 - 在编程过程当中,用到了一些冒泡排序之类的算法,并且采用了文件相关的函数来作。 - 第一次编写这么大代码量的程序,有些手忙脚乱,不过总算把每一个模块编写完毕。 - 程序编写过程当中还有不少没有实现,好比说高频词的显示,因为对指针的运用还不熟练,因此相关的代码实现没有完成。
PSP2.1 | 任务内容 | 计划共完成须要 的时间(min) |
实际完成须要 的时间(min) |
---|---|---|---|
Planning | 计划 | 20 | 18 |
Estimate | 估计这个任务须要多少 时间,并规划大体工做步骤 |
半天 | 半天 |
Development | 开发 | 180 | 200 |
Analysis | 需求分析 (包括学习新技术) | 60 | 80 |
Design Spec | 生成设计文档 | 10 | 20 |
Design Review | 设计复审 (和同窗审核设计文档) | 7 | 8 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 5 | 7 |
Design | 具体设计 | 30 | 60 |
Coding | 具体编码 | 120 | 240 |
Code Review | 代码复审 | 30 | 60 |
Test | 测试(自我测试,修改代码,提交修改) | 20 | 30 |
Reporting | 报告 | 10 | 10 |
Test Report | 测试报告 | 5 | 4 |
Size Measurement | 计算工做量 | 5 | 3 |
Postmortem & Process Improvement Plan | 过后总结 ,并提出过程改进计划 | 5 | 5 |
github源码github