Initial Commit

This commit is contained in:
Marc Koch 2020-05-11 16:45:47 +02:00
parent 150081e5f4
commit e59038ce18
Signed by: marc
GPG Key ID: AC2D4E00990A6767
4 changed files with 212 additions and 1 deletions

93
.idea/.gitignore vendored Normal file
View File

@ -0,0 +1,93 @@
# Created by https://www.gitignore.io/api/intellij
# Edit at https://www.gitignore.io/?templates=intellij
### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
.idea/**/sonarlint/
# SonarQube Plugin
.idea/**/sonarIssues.xml
# Markdown Navigator plugin
.idea/**/markdown-navigator.xml
.idea/**/markdown-navigator/
# End of https://www.gitignore.io/api/intellij

View File

@ -1 +1,2 @@
arbeitszeiterfassung # Arbeitszeiterfassung
![Aufgabenblatt](img/Arbeitszeiterfassung.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

117
src/gfn/marc/Main.java Normal file
View File

@ -0,0 +1,117 @@
package gfn.marc;
import java.time.YearMonth;
public class Main {
// Testdaten
static int[][] zeiten = {
{2, 480},
{2, 1_040},
{3, 470},
{6, 480},
{6, 960},
{7, 990},
{8, 480},
{8, 960},
{30, 990}
};
public static void main(String[] args) {
int persnr = 12345;
erzeugeListe(persnr, zeiten, 2013, 5);
}
// zu programmierende Methode
static void erzeugeListe(int persnr, int[][] zeiten, int jahr, int monat) {
int anwesenheitMonat = 0;
int tag = 1;
schreibeKopfzeile(persnr, jahr, monat);
for (int i = 0; tag <= tageImMonat(monat, jahr); ) {
int min1 = -1;
int min2 = -1;
int anwesenheitTag = -1;
String bemerkung = "";
if (i < zeiten.length && zeiten[i][0] == tag) {
min1 = zeiten[i][1];
}
if (i + 1 < zeiten.length && zeiten[i + 1][0] == tag) {
min2 = zeiten[i + 1][1];
}
if (min1 == -1 ^ min2 == -1) {
bemerkung = "eine Buchung fehlt";
i++;
}
if (min1 != -1 && min2 != -1) {
anwesenheitTag = min2 - min1;
anwesenheitMonat += anwesenheitTag;
i += 2;
}
if (min1 == -1 && min2 == -1)
bemerkung = "nicht anwesend";
schreibeZeile(tag, min1, min2, anwesenheitTag, bemerkung);
tag++;
}
schreibeFusszeile(anwesenheitMonat);
}
// gegebene Methoden
static int tageImMonat(int monat, int jahr) {
YearMonth yearMonth = YearMonth.of(jahr, monat);
return yearMonth.lengthOfMonth();
}
static void schreibeKopfzeile(int persnr, int jahr, int monat) {
String[] monate = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September",
"Oktober", "November", "Dezember"};
System.out.println("\nMitarbeiter: " + persnr + " " + monate[monat + 1] + " " + jahr + "\n");
System.out.println("Tag Kommen Gehen Anwesenheit Bemerkung");
System.out.println("========================================================");
}
static void schreibeZeile(int tag, int min1, int min2, int anwesenheitTag, String bemerkung) {
String kommen = " ";
String gehen = " ";
String anwesenheit = "00:00";
String tagString = tag < 10 ? " " + tag : "" + tag;
if (min1 != -1) {
int h = min1 / 60;
int m = min1 % 60;
String stunde = h < 10 ? "0" + h : "" + h;
String minute = m < 10 ? "0" + m : "" + m;
kommen = stunde + ":" + minute + " ";
}
if (min2 != -1) {
int h = min2 / 60;
int m = min2 % 60;
String stunde = h < 10 ? "0" + h : "" + h;
String minute = m < 10 ? "0" + m : "" + m;
gehen = stunde + ":" + minute + " ";
}
if (anwesenheitTag != -1) {
int h = anwesenheitTag / 60;
int m = anwesenheitTag % 60;
String stunde = h < 10 ? "0" + h : "" + h;
String minute = m < 10 ? "0" + m : "" + m;
anwesenheit = stunde + ":" + minute;
}
System.out.println(tagString + " " + kommen + " " + gehen + " " + anwesenheit + " " + bemerkung);
}
static void schreibeFusszeile(int anwesenheitMonat) {
int h = anwesenheitMonat / 60;
int m = anwesenheitMonat % 60;
String stunde = h < 10 ? "0" + h : "" + h;
String minute = m < 10 ? "0" + m : "" + m;
System.out.println("========================================================");
System.out.println("Summe Anwesenheit: " + stunde + ":" + minute);
}
}