- 入力された出勤時間と退勤時間から、休憩時間と残業時間を計算して出力するプログラム
- 30分=0.5換算で算出したいときに便利
- フレックス勤務想定(遅刻時間の出力はしない)
※メインプログラムのbuildおよび実行はWindows上で、単体テストはWSL上で実施
- C言語(メインソースコード)
- GoogleTest(C++)(単体テストコード)
- Make
- CMake
- GitHub Actions(CI)
main branchへのpush時またはPullRequest作成時に以下を自動実行- 静的解析(CodeQL)
- READMEに結果をバッジ表示
- 単体テスト実行・カバレッジ測定
- READMEに結果をバッジ表示
- PullRequestにTest Summaryコメント追加
- 静的解析(CodeQL)
例)標準勤務時間が9:00~18:00、休憩時間が12:00~13:00・18:00~18:15の場合
- 自身の勤務状況に合わせてマクロ定義の値を変更
#define STANDARD_WORK_HOURS "8:00" // 所定労働時間 #define LUNCHBREAK_START_TIME "12:00" // 昼休みの開始時刻 #define LUNCHBREAK_END_TIME "13:00" // 昼休みの終了時刻 #define STANDARD_END_TIME "18:00" // 定時の退勤時刻 #define OVERTIME_START_TIME "18:15" // 残業の開始時刻
- ビルド(make)
cd WorkingHoursCalculator make - 実行
第1引数に出勤時間、第2引数に退勤時間を指定./WorkingHoursCalculator 9:00 18:00
- 結果出力
休憩時間と残業時間が出力される(括弧内は30分=0.5換算の値)
休憩時間: 0時間45分 (0.75) 残業時間: 0時間00分 (0.00)
flowchart TD
A[入力: ユーザー入力時刻・ユーザー設定時刻] --> B{昼休み開始時刻までに退勤?}
B --> |Yes|C[午前早退<br>休憩時間:0分<br>勤務時間:退勤時刻-出勤時刻]
B --> |No|D{昼休み開始時刻~昼休み終了時刻までに退勤?}
D --> |Yes|E[午前早退<br>休憩時間:0分<br>勤務時間:昼休み開始時刻-出勤時刻]
D --> |No|F{昼休み終了時刻~定時までに退勤?}
F --> |Yes|G[午後早退or定時退勤<br>休憩時間:昼のみ<br>勤務時間:退勤時刻-出勤時刻-休憩時間 昼]
F --> |No|H{定時~残業開始時刻までに退勤?}
H --> |Yes|I[定時退勤<br>休憩時間:昼のみ<br>勤務時間:定時退勤時刻-出勤時刻-休憩時間 昼]
H --> |No|J{残業開始時刻以降に退勤<br>残業<br>休憩時間:昼+残業<br>勤務時間:退勤時刻-出勤時刻-休憩時間 昼+残業}
flowchart TD
A[入力: ユーザー入力時刻・ユーザー設定時刻] --> B{昼休み開始時刻~昼休み終了時刻までに退勤?}
B --> |Yes|C[勤務無し<br>休憩時間:0分<br>勤務時間:0分]
B --> |No|D{昼休み終了時刻~定時までに退勤?}
D --> |Yes|E[午後早退or定時退勤<br>休憩時間:0分<br>勤務時間:退勤時刻-昼休み終了時刻]
D --> |No|F{定時~残業開始時刻までに退勤?}
F --> |Yes|G[午前休定時退勤<br>休憩時間:0分<br>勤務時間:定時退勤時刻-昼休み終了時刻]
F --> |No|H[残業開始時刻以降に退勤]
H --> I{勤務時間が所定労働時間以下?}
I --> |Yes|J[休憩時間:0分<br>勤務時間:退勤時刻-出勤時刻-休憩時間 0分]
I --> |No|K{休憩時間:昼+残業<br>勤務時間:退勤時刻-出勤時刻-休憩時間 昼+残業}
flowchart TD
A[入力: ユーザー入力時刻・ユーザー設定時刻] --> B{昼休み終了時刻~定時までに退勤?}
B --> |Yes|C[休憩時間:0分<br>勤務時間:退勤時刻-出勤時刻]
B --> |No|D{定時~残業開始時刻までに退勤?}
D --> |Yes|E[休憩時間:0分<br>勤務時間:定時退勤時刻-出勤時刻]
D --> |No|F[残業開始時刻以降に退勤]
F --> G{勤務時間が所定労働時間以下?}
G --> |Yes|H[休憩時間:0分<br>勤務時間:退勤時刻-出勤時刻-休憩時間 0分]
G --> |No|I{休憩時間:昼+残業<br>勤務時間:退勤時刻-出勤時刻-休憩時間 昼+残業}
cd build
cmake ..
make
./workinghours_calculator_test