Bensharkは2003年1月にプログラム開発に従事し、19か月間働いています。その中でも、仕事は断続的にすべてが、自分の経験不足によって開発された見掛け倒しのものであり、それがさまよえることと雇用の困難につながるためです!現在、Benshaは資格のあるプログラマーの能力に到達しています。
一般的に、新しく卒業したプログラマーの開発タスクは、プロジェクトのサブプロジェクトのモジュールにすぎません。 モジュールには、コードボリュームが約2,000行のほぼ5〜6型のフォームがあります。実際、この量のタスクは卒業設計ほど良くないため、完了することができるはずですが、開発時間は比較的小さく、学校では1〜2か月ではなく、約6〜12営業日であり、助けるクラスメートもいます。そのため、開発者の開発ツール、構文、フレームワーク、ライブラリに熟練しています。さらに、システムプラットフォームの操作メカニズムとアルゴリズムの要件を理解し、何が起こっているのかを知ることができます。プログラマーは受動的にではなく積極的に作業できることが必要です。情報を見つけたり、同僚に尋ねたり、同僚に不明なタスクの支援を提供するように依頼するイニシアチブをとることができます。
このサメは主にデータベースシステムのフロントデスクの開発タスクに従事しているため、主に一般的なデータベースコンポーネントを使用して、データシステムのフロントデスクのタスクが最も重く、常にユーザーによって批判されていることを示しています。
一般的に、このサメの開発手順は次のとおりです。
0タスク要件を理解します
1.最初に関数を実装します
2。関数の例外処理を解決します
3.ユーザーフレンドリーを達成します
4ユーザーフレンドリーを解決します
パフォーマンスの問題は、将来データボリュームが大きい場合にそれを解決するためにユーザーに任されます!現在、タスクに追いつくことが重要です。次のコンポーネントが一般的に使用されています
tedit tcombobox tlistview ttreeview tchecklistbox tlabel tdbgrid timage tmemo tbutton tdbchart tpanel tmaskedit tdatetimepicker tpagecontrol
1。インタビュー中にのみインタビュアーに影響を与えます。 。
2コンポーネント属性設定
1 Tlabel:autosize = flase;
2 tedit maxlength値デフォルト入力メソッド値を設定します
3 TCOMBOBOX選択のみが許可されている場合:= csdropdownList:= true;
アイテムにデータを追加するとき
fontcombo-> item-> beginUpdate();
fontcombo->アイテム - > add( "xxx");
fontcombo-> item-> endupdate();
どれだけのデータTLISTVIEW TTREEVIEW TDBGIRDが同様のデータ表示ブロッキング関数を持っています。
4 ttreeviewノードのテキストを変更しない場合は、reaselect = trueを読み取る必要があります。
5 TlistView ViewStyle vsReporreadonly rowselect = true;
6 TPAGECONTROL PAGECONTROL1.ACTIVEPAGEINDEX:= 0;
7 tdatetimepicker dateformat:= dflong編集に時間がコピーされている場合
edit.text:= dateTimeFormate( "yyyy-mm-dd"、datetimepicker1.date)
8 Tbuttonを設定して、ModalResultのヒントをキャンセルします
同じインターフェイスレイアウトを備えた3つのコンポーネントは、周囲、上、左、および他のコンテナのコンポーネントに合わせて配置する必要があります。親のコンテナ、そして最終的に人々にそれを与えます。
インターフェイスレイアウトの詳細
1):フレームを使用して、同じまたは同様の機能を完了するボタンをフレーム化し、一般的に使用されるボタンはショートカットをサポートする必要があります。
2):同じ関数またはタスクを完了する要素は、マウスの動きの距離を減らすために集中位置に配置されます。
3):関数に従ってインターフェイスのローカルブロックを分割し、フレームボックスでそれらを囲み、関数の説明またはタイトルを持っています。
4):インターフェイスは、キーボード自動ブラウジングボタン機能、つまりTABキーを押す自動スイッチング関数をサポートする必要があります。
5):最初に入力するコントロールとインターフェイス上の重要な情報は、タブの注文の前にある必要があり、またウィンドウ上のより目立つ位置に配置する必要があります。
6):同じインターフェイスで10個のコントロールを超えないことが最適です。ページネーションインターフェイスを使用して表示することを検討できます。
7):ページ間のページ間の迅速な切り替えと、一般的に使用されるコンビネーションキーCTRL+タブ間のクイックスイッチングをサポートする必要があります
8):デフォルトのボタンは、ENTERの[操作]を選択する必要があります。つまり、Enterを押した後、デフォルトボタンの対応する操作が自動的に実行されます。
9):手数料制御が違法な入力を検出した後、説明を指定し、焦点を自動的に取得することができます。
10):タブキーの順序とコントロールの順序は、現在、上から下へ、そして左から右側にあります。
11):チェックボックスとオプションボックスは、選択確率の高い下部に従って次々と配置されます。
12):チェックボックスとオプションボックスには、デフォルトのオプションとサポートタブの選択が必要です。
13):オプションの数が同じ場合、ドロップダウンリストボックスの代わりにオプションボックスを使用します。
14):インターフェイススペースが小さいときは、オプションボックスの代わりにドロップダウンボックスを使用します。
15):オプションの数がSmallと呼ばれる場合は、オプションボックスを使用して、代わりにドロップダウンリストボックスを使用します。
16):強力なプロフェッショナリズムを備えたソフトウェアは、関連する専門用語を使用する必要がありますが、ユニバーサルインターフェイスは普遍的な言葉の使用を提唱しています。
4つのコード
1機能検査:要件に必要なすべての機能と制限が実装されているかどうかを確認します
2境界チェック:異なるデータ型からの入力や異なる範囲のデータなどの関数を境界チェックを実行する
3違法アクセスチェック:違法なメモリアクセスエラーがあるかどうかをテストします。このタイプのエラーに属するかどうかを判断するための参照エラーメッセージは類似しています。
"…not not見つかります"、 "bounds ofboundsのインデックスをリストします…」、「住所へのアクセス違反…」
4:迅速な情報ガイダンスチェック:編集ボックス、テーブルボックス、英語や漢字を含むキャラクターを入力し、違法アクセスエラーが発生するかどうか、および容認できない文字が使用されるかどうかをテストしますガイドされるヒント。
5ユニットベースの検査:このユニットのユニットヘッダーの説明、各関数の説明、および注釈の説明が正しいかどうかを確認してください。引用手順:追加の引用はありますか
//特に、C ++ヘッダーファイルに不必要な含まれている場合、他のユニットでは不必要な問題が発生します。
実際、これらはホワイトカラーテストと単体テストコンテンツと呼ばれます。 テストブックに従ってテストコードを書きたい場合は、すべての開発者がそれを望んでいないと思います!しかし、それはうまくいきません。間違いを犯して配信するのが難しくなるのは簡単です。したがって、テストの方法、これらの方法を理解することが非常に必要です
大学のソフトウェアエンジニアリングへの紹介があり、ソフトウェアデザイナーも受講する必要があります。プログラムを書くときはいつでも、さまざまな状況でどのエラーが発生するかを検討するように注意してください! 機能を実装するときに使用する変数は空になりますか?値は有効ですか?あふれていますか?変数のスペースをクリアしますか?ケース要件ですか?前後にスペースはありますか?
これらの判断は、最初に機能とプロセスの開始に記載されている必要があります!
if(treeview-> selected == null)//変数は空になりますか?
その後、返します。
std :: vecotr <int> intarray; //あふれていますか?
if(intarray <= 0)
その後、返します。
if(i <listview.items-> count)//境界をあふれさせて横断していますか?
編集 - > text = listView-> item-item [i] .caption;
編集 - > text.trim(); //以前と後にスペースはありますか?
char a [10];
memcpy(a、 "/0"、10); //変数のスペースをクリアしますか?
a [9] = 'i';
//関数を使用する人は、関数変数を呼び出します発信者の判断条件はその効果を失います!
if(name.trim()==” delphi”)name =” bcb”;
switch(){case to break:;}
5デフォルトのデータ、プロンプト、ポジショニング、親しみやすさ
インターフェイスが表示されると、デフォルトでデータが表示されます。
combobox1.itemindex:= 0;
一般的に、新しい追加と変更は、1つのインターフェイスを使用して単一のペアで編集されます。新しい追加が完了すると、すべてのコンポーネントを新しく追加されたレコードに配置する必要があり、変更にも同じことが言えます。削除するときは、次のレコードを見つけます。
ListViewとdbgird並べ替えの関数がタイトルをクリックして、数値文字の日付で上下に移動する
ListViewとdbgird選択したデータフォーカスがボタンに移動されたとき、どの行が現在選択されていますか? !
void __fastcall tfrmgather760 :: lvdatacustomdrawitem(tcustomlistview *sender、tlistitem *item、tcustomdrawstate状態、bool&defaultdraw)//このコードは、選択した線に黄色の底を描画します
{
if(sender-> selected!= null)
if(item-> index == sender-> selected-> index)
{
送信者 - > canvas-> brush-> color = cleellow;
送信者 - > canvas-> font-> color = clblue;
}
}
通常2秒を超える操作の場合、関数にある必要があります。
Tcursor Oldcursor;
oldcursor = screen-> cursor;
画面 - > cursor = crsqlwait;
試す{ 。 。 。 。 。 。 } __最後に{screen-> cursor = oldcursor;}
手順tform1.formkeydown(sender:tobject; var key:word; shift:tshiftstate);
始める
if(shift = [])と(key = vk_return)then //タブキーをEnterに置き換えます
実行(wm_nextdlgctl、0、0);
key = vk_next then // pageupページダウンを押して、tpagecontrolスイッチページを作成します
始める
pagecontrol.activePageIndex = pagecontrol.pagecount -1の場合
pagecontrol.activePageIndex:= 0
それ以外
pagecontrol.activePageIndex:= pagecontrol.activePageIndex + 1;
終わり
それ以外の場合は、key = vk_prior thenの場合
始める
pagecontrol.activePageIndex = 0の場合
pagecontrol.activePageIndex:= pagecontrol.pagecount -1
それ以外
pagecontrol.activePageIndex:= pagecontrol.activePageIndex -1;
終わり;
終わり;
終わり。
6ボタンインターチェンジ
操作が完了すると、一部のボタンが無効になり、どのような状況で妥当性に復元されますか?段落は1つだけですが、効果がない場合は、さまざまな致命的なエラーを引き起こすことがよくあります!ユーザーがソフトウェアを操作する方法を予測できないため、Roseを使用してステータス図を描画したり、単語を使用して表現できます。
7パフォーマンス
100を超えるデータがある場合、Combobox ListBox TreeView ListView DBGRIDなどのデータ表示コンポーネントが入力され、入力中にクエリが入力されます。
ファジークエリをサポートすることは、「%xxx%」のようなものにすぎません。
void __fastcall tfrmgather760 :: edt_namekeypress(tobject *sender、char&key)
{
if(key!= vk_return)
戻る;
文字列SSQL;
ssql = "名前を選択し、販売として販売、従業員から"を選択します ";
ssql + = "ここで '%" + lowercaseのような名前(edt_name-> text.trim()) + "%'";
tfrmpubdlg *pubdlg = new tfrmpubdlg(this);
pubdlg-> executequery(ssql);
pubdlg-> showmodal();
.....
}
他の8
モジュールを開発する場合、個々のユニットとDFMが一般的なユニットとして使用されます。ユニットに文字伝送構造が作成されます
struct tablename
{
文字列名;
文字列filedName;
......
}; //主なものは、特にテーブル名が変更されたときに一貫性を保つことです
std :: vector <string> serrorarry // unifiedエラープロンプト
そして、Delphi Resoucstringセグメントはリソースを豊富に、ローカライズしやすいことができます
追加および変更するとき、すべてのデータチェックは保存ボタンの下に集中します
void __fastcall tform3 :: btn_saveclick(sender)
{
if(edt_name-> text.isempty())
{
showmessage( "");
edit_name-> setfocus();
戻る;
}
ModalResult = mrok;
}
学校の生徒の卒業設計のほとんどは、2つまたは3つのレイヤーなどのデータベースです。卒業設計プログラムを真剣に行い、クラスメートにテストを支援するように依頼するためにお金を費やし、より運用上の利便性を提案する必要があります。他の人のテストに合格することによってのみ、あなたの能力を向上させることができ、ほとんどのコードは例外処理とユーザーフレンドリーです!あなたの作品で仕事を探しているとき、良い会社を見つけるのはとても簡単です
実際、データベースのフロントデスク開発に従事する場合、重要なことは、ユーザーフレンドリーなコードを書くことです。