その時点であなたが持っていると仮定している従業員 ID のレコードを作成するプログラムで、クロックイン ボタンにイベントを発生させます。
次に、退勤ボタンをクリックすると、データベースに送信されるイベントが発生し、探している従業員 ID、有効な勤務時間、退勤時間の null で見つかった最初のレコードが取り込まれます。 . プログラムがそのすべての基準に一致するものを見つけられなかった場合は、必要に応じて処理する必要があります(従業員がログインしたときにルックアップを行い、記録がない場合にのみ出勤ボタンへのアクセスを許可します) ID のレコードが見つかった場合にのみ、退勤ボタンの使用を許可します)。
そのレコードをメモリに保存したら、クロック アウト時間を設定し、以前にデータベースに書き込まれたクロック イン タイムを使用して差を計算する必要があります。
データベース内のストアド プロシージャを使用して、レコードの追加/更新/管理を処理し、プログラム自体の内部で出勤/退勤時にすべての計算を実行します。しかし、実際の処理が行われる場所に関する限り、それはすべて単なる好みだと思います。
これの最も明白な理由は、何も失うことなく出勤と退勤の間にプログラムをシャットダウンできることです。すべてをメモリ内で追跡しようとすると、何らかの理由でプログラムがシャットダウンされると、すべてのクロックインが失われます (手動で閉じた/タスクマネージャーを介して「タスクを終了」した/未処理のエラー)。