1.プロジェクトアドレス
https://github.com/namoyuwen/word-count
2.プロジェクトの要件
2.1プロジェクトの説明
ワード数は、
シンプルかつ完全なソフトウェアツール(ソースプログラムの統計的特性)を達成1.。
2.ユニットテスト、回帰試験、性能試験、上記のプログラムを達成する過程で関連ツールの使用。
3.実践パーソナルソフトウェアプロセス(PSP)、そして徐々にソフトウェアエンジニアリングの各部分で過ごした自分の時間を記録します。
2.2 WCプロジェクトの要件
wc.exeが一般的なツールである、それはテキストファイル、ワード、行の文字数をカウントすることができます。このプロジェクトは、既存のwc.exeの機能を模倣するために、コマンドラインプログラムを書くために、プログラミング言語のソースファイル、ワード、行の文字数与えられ、拡張することが尋ねました。
統計プログラムを実装し、文字の数は、それが統計プログラムファイル、単語数、行を修正し、また、他の拡張機能があり、かつ迅速に複数のファイルを扱うことができます。
具体的な機能要件:
モードのハンドル、ユーザーのニーズに:
wc.exe [パラメータ] [ファイル名]
機能の基本的なリスト:
wc.exe -c file.cと//はファイルFILE.C(完成品)の文字数を返します。
wc.exe -w FILE.C //ファイルのFILE.Cワード(完成品)の数を返します。
返される行の数(完成品)FILE.C wc.exe -l FILE.C //ファイル
拡張機能:
ディレクトリの条件を満たし-s再帰処理ファイル。
-aリターンより複雑なデータ(ライン/スペースライン/コメント行)。
空白行は、次のようなこれ以上表示可能な文字以外のコードを、含まれていない場合銀行は、すべての制御文字やスペースをフォーマット「{。」
ライン:銀行コードは複数の文字を含んでいます。
コメント行:代わりに、銀行のコードの行、および銀行コメントが含まれています。興味深い例は、いくつかのプログラマが単一の文字の後ろにコメントを追加するということです。
} // NOTE
この場合、行はコメント行に属します。
[ファイル名]:ファイルまたはディレクトリ名は、一般的なワイルドカードを扱うことができます。
高度な機能:
-xパラメータ。このパラメータは、単独で使用されます。あなたは、コマンドラインパラメータを使用している場合、プログラムはグラフィカルインターフェイスを表示し、ユーザーがインターフェイスを介して1つのファイルを選択することができ、プログラムは文字など、ライン、すべての統計情報のファイル番号が表示されます。
たとえば、需要:
wc.exe -s -a * .C
コードの行数は、現在のディレクトリを返し、すべてのサブディレクトリは.cファイル、空白行の数、コメント、行数を*。
問題解決のためのアイデアの3 Aの説明
のみおなじみのC言語は、C言語でそれを行うと考えられているので、まず、この問題を取得するには、C言語の使用は、時間がおなじみのより多くの時間再費やしたので役に立たないものを、いくつかの時間をされています
2.困難と主題はまた、学習されたファイルを操作するためのファイル操作のためのフォーカスがあるときに、オンラインでこのドキュメントのキーポイントを操作する方法を学びます
前記被験体は4つのモジュール、メイン機能モジュール、および3つの基本的な機能ブロックに分割されています
4.設計と実装プロセス。
1.まず、三つのサブ機能、単語数、単語数と行数を書きます
2.主な機能は、次の3つの機能を呼び出します
5.コード説明。
1.主な機能
書式#include <stdio.hに>
する#include <stdlib.h>に含ま
int型教会(CHAR *ファイル)。
int型wordc(CHAR *ファイル)。
int型linec(CHAR *ファイル)。
メインINT(){
FILE * FP;
INT CH、WO、リチウム;
CHARファイル[50]; //ファイルアドレス
のprintf( "\ nを入力ファイルアドレス:\ N-");
scanfの( "%のS"、ファイル) ;
IF((FP =はfopen(ファイル、 "R&LT"))== NULL)
{
のprintf( "ファイルが存在しない")、
終了(-1);
}
他{
CH = charc(ファイル);
WO = wordc(ファイル);
リー= linec(ファイル);
のprintf( "ファイルの文字の\ n個%D \ n個の単語の数である%D \ N行の数は%D \ n"は、CH、WO、リチウム);
}
}
2.文字カウント
charc int型(CHAR *ファイル){
FILE * fpを= NULL;
int型はcharCount = 0;
IF( "R"(FP =のfopen(ファイル))== NULL){
のprintf( "ファイルを見つけることができませんでした。\ n!");
出口(-1);
}
チャーCH;
CH = fgetc関数(FP);
(!FEOF(FP)){一方
CH = fgetc関数(FP); //は、文書内の文字読み取り
charcountにし++; //文字の数をカウント
}
FCLOSE (FP);
リターンはcharCount;
}
3.言葉の統計情報の数
wordc int型(CHAR *ファイル){
FILE * fpを= NULL;
int型語数= 0;
IF((FP =のfopen(ファイル、 "R"))== NULL){
のprintf( "ファイル\ nは見つかりませんでした!");
出口(-1);
}
チャーCH;
INTワード;
一方、{(FEOF(FP)!)
CH = fgetc関数(FP)。
IF(CH < 'A' ||(CH> 'Z' && CH < 'A')|| CH> 'Z')
{
ワード= 0。
}
そうであれば(ワード== 0)
{
ワード= 1。
語数++;
}
}
戻りWORDCOUNT。
}
4.行の統計数
INT linec(CHAR *ファイル){//计算行数
INTラインカウント= 0;
チャーCH、李= 0。
FILE * fpを。
IF((FP =のfopen(ファイル、 "R"))== NULL)
{
出口(-1)。
}
CH = fgetc関数(FP)。
しばらく(FEOF(FP)!)
{
場合(CH == '\ n'の)
ラインカウントを++;
李= CH;
}
(LI = '\ n'の!)であれば
ラインカウント++;
ラインカウントを返します。
}
6.試運転。
1.空のファイル
2.ワードファイル
3.ラインファイル
4.代表的なソースファイル
7.プロジェクト概要。
個人的なプロジェクト、C言語の見直しの過程で長い時間を過ごした、だけでなく、多くの人々のデータへの参照と間接作られたが、C言語ではなく、コーディングのアイデアに彼の多くの欠点を発見しました非常に混乱し、基本的に重要な点を考慮していません。
自分はまだ多くの欠点がある意識、革命は完了していないプロジェクトは、同志は闘争しなければなりません。私はまた、言語の学習に毎日時間を費やすより多くの知識を習得する必要があります。また、予想よりも時間がかかる実際のPSPテーブルこの時間
主に未熟練コードの学習に多くの時間を費やしています。
PSP | パーソナルソフトウェアプロセス段階 | 推定時間がかかる(分) | 実際の時間がかかる(分) |
---|---|---|---|
プランニング | 計画 | 50 | 75 |
・見積り | このタスクが必要とどのくらいの時間を見積もります | 20 | 15 |
開発 | 開発 | 120 | 150 |
分析 | (新しい技術を学ぶ含む)ニーズ分析 | 30 | 120 |
・デザインスペック | 設計ドキュメントの生成 | 20 | 30 |
・デザインレビュー | デザインレビュー(と同僚が設計文書を見直し) | 0 | 0 |
・コーディング標準 | コードの仕様(現在の開発のための適切な規範の開発) | 5 | 5 |
・設計 | 具体的な設計 | 30 | 60 |
・コーディング | 具体的なコーディング | 100 | 160 |
・コードレビュー | コードレビュー | 30 | 45 |
・テスト | 検査(セルフテスト、コードを変更し、変更を提出) | 10 | 5 |
報告 | レポート | 10 | 30 |
・試験報告書 | テストレポート | 10 | 10 |
・サイズ測定 | コンピューティングワークロード | 30 | 60 |
・死後&プロセス改善計画 | その後まとめ、およびプロセス改善計画 | 20 | 30 |
トータル | 485 | 795 | |