2009-05-16 10 views
1

私が働いた日数と働いた時間を記録したプログラムを作って、私は辞書を使いますか?そして、私は2週目の月曜日から1週目の月曜日とどう違うでしょうか?プログラムを終了した後、この情報を保存するにはどうすればよいですか? (Python言語)作業日/時間を追跡するタイムシートプログラム?

答えて

0

辞書は、プログラムの実行中にデータを保存するのに適しています。

データの永続性を追加するにはいくつかの方法があります(プログラムを終了した後に行われます)。 Pythonモジュールpickleとshelveは便利で使いやすいものです。これらの問題の1つは、Pythonプログラムの外部でデータを簡単に検査できないことです。 JSONとXML形式でテキストファイルを読み書きするモジュールもあります。また、JSONはテキストエディタで読むのが簡単です。もしあなたがまだ熟練していないのであれば、MySQLのようなデータベースはあなたが言及したような個人的なプログラムのために必要以上のものであり、それらを使う方法を学ぶのに時間を投資しない限り、より単純な解決策をとるべきです。

第1週の月曜日と第2週の月は、多くのオプションがあります。あなたは実際の日付を使用することができます(これは私にとっては良い考えです)、または( "Monday"、1)のようなタプルで辞書をキーすることができます。主なルールは、辞書のキーは不変でなければならないということです(int、文字列、タプル - 不変オブジェクトのみを含むなど)が、辞書(辞書、リストなど)はそうではありません。

+0

ありがとう –

0

おそらく毎週、または支払い期間のタイムシートオブジェクトを作成します。各タイムシートオブジェクトには、作業時間や時間がクロックイン/アウトされた曜日のコレクションが含まれている場合があります。

ウェブサイト用の永続ストレージの場合は、mysqlのようなデータベースを使用します。単一のマシン上で動作するアプリケーションでは、おそらくpickleやフラットファイルシステムを使用しています。

0

私自身がこのアプリケーションを設計するとき、私は反対のアプローチを採用しました。

私の経験では、計時アプリケーションの最大の問題はデータ入力です。そこで、私のアプリでは、最も簡単で柔軟なデータ入力ツール、テキストエディタを使用することにしました。私は、テキストファイルにノートを維持し、その中の計時エントリを混在するので、抜粋は次のようになります。

Monday 5/10/09 

release script ok this week 
open a case on the whole code-table-foreign-key thing 

- CUS1 2.0 Generate and release version 1.0.45. 

need to get dma to spec out the RESPRB configuration, see case 810 
MH section complete - one to go! 

- CUS2 4.0 Configure and test Mental Health section. 

Tuesday 5/11/09 

... and so on 

は私のように、実際の計時エントリのフォーマット、適切な見出しで1日開始で一貫しただし、あなたが見ることができる、非常に簡単です。単純なスキャナとステートマシンがデータを抽出するのに必要なすべてです - 基本的に、私は平日またはハイフンで始まる行を探し、それ以外はすべて無視します。

ノートファイルを解析するときにプログラムが遅くならないように、私は毎年新しいノートファイルを作成します。 (12月末でさえも、解析に1/16秒を要しません。)

何百という人のタイムキーピングエントリを処理しなければならない場合は、この方法はありません。ユーザーは手がかりを少し持たなければならず、しばらくしてから解析時間が足りなくなります。一方、このデータを人間が読める形式のテキストファイルに保存しておけば、他のものを保存することができます(バージョン管理や差分などを維持することもできます)。

関連する問題