この間は主にC++におけるSTLクラスライブラリの紹介と使用方法について述べた.以前はvector、マッピング、反復器の使用などの簡単なSTLクラスライブラリの方法について少し理解していましたが、前学期にjavaの集合クラスプログラムをいくつか書いたことがありますが、1つのプロジェクトを実現する上で一部の困難を感じています.
この方面の内容について完成しなければならない宿題は簡単な図書館のバックエンド管理プログラムを書くことです.当時、宿題をしていたとき、この任務は実現しにくいかもしれないと思っていたが、自主的に実現する過程で多くの問題が発生した.
一つは、実現が面倒すぎる内容があることです.たとえば日付の加減は、一日一日判断を1サイクル書くというのが本来の方法です.この方法は確かに考えやすいですが、実際の応用では、後で日数を加えて日付を調整する方法よりも効率が低いです.およびmapの検索での使用について.過去に考えられた方法は、1冊の本や1人の読者を名前や番号で検索するには、図書や読者ベクトル全体を巡り、文字列ごとに比較する必要がある.データ規模が大きいと、機械がデータを処理する効率が低くなります.しかしmapという構造があれば、この操作をより効率的にし、対応するmapで文字列に対応するベクトルの下付き文字を検索してからベクトルの下付き文字に対応する要素を出力すればよい.プログラム設計のある具体的な関数を習得することは比較的容易であるが,実際の操作過程で必要に応じて実現される機能を適切な特性を選択してプログラムの実行効率を最大化することは容易ではない.
二つ目は膨大なプロジェクトに対する心理的な恐怖である.これまであまりシステム設計に触れたことがなく、接触したばかりの頃はこのようなコード量の大きい項目に対しても確かに恐れていた.しかし、これも乗り越えなければならない壁で、今のところはまだ骨が折れるが、時間が長くなると道がわかるはずだ.システム設計の構造は比較的明確で、明確な構想と対応するツールを加えて実現するのは想像していたほど難しくないことが多い.以前は書類を書いてデータを読み書きするのが難しかったが、書類の読み書きの特性を知らなかったためか、当時はたくさんの行を書いていたが、明確なようなものはなかった.しかし、その後の説明を経て、考え方が明確になり、実現も容易になった.現在のあいまいなクエリーなど、いくつかのクエリー方式は依然として明確な考え方がなく、これと少し関係があるかもしれません.
この時間の宿題は実はいい加減で、比較的に急いで、心の中はやはり少しせっかちです.収穫もあり、学んだ新しいものをたくさん使うのもいい体験ですが、もっといいはずです.以前清華自動化大学1年のC++大宿題を見て、心の中で名門校の学生の学習効率の高さを感服すると同時に、自分の知識のレベルがまだ十分ではないことを深く感じて、学習の上で少し怠っています.次は前の知識を整理して振り返り、基礎を築くべきだ.
添付:今回の作業コード及び要求
図書管理システム(バックグラウンド管理者)
データクラス:
基礎類:読者の最大借書量、最長借書時間(日単位).この2つはクラスメンバーです.
日付類:年月日を含み、演算子を再ロードする場合、データの合法性検査を行う.出力演算子を再ロードする場合は、年/月/日の形式で出力します.リロード+演算子;
貸し出し記録類:日付、書番号、読者学号、タイプ(貸し出し/返却/継続)、図書タイプ(基礎/文学レジャー/専門);
読者類:学号(常メンバー)、氏名、専門、クラス、借りた図書の数、借りた記録ベクトル;
図書類:書号(常メンバー)、書名、著者、出版社、出版日、図書タイプ(基礎/文学レジャー/専門)、館蔵総量、在館数、借読記録ベクトル;
操作クラス:
データ・メンバー:図書/学生/貸し出し記録ベクトル
メンバー関数:図書に対してファイルの読み書きを行い、図書ベクトル内で図書の基本情報の添削・修正を完成する.
学生に対して書類の読み書きを行い、学生ベクトル内で学生の基本情報に対する削除・修正を完成する.
貸し出し記録の管理と統計機能の後続追加;
#include
#include
#include
#include
#include
#include
#include