Skip to content
Snippets Groups Projects
Commit 4ef07367 authored by Dennis Toth's avatar Dennis Toth
Browse files

Merge branch 'kevin_local' into 'dennis_local'

# Conflicts:
#   .gitignore
#   .idea/misc.xml
parents 8d627382 9edf403b
No related branches found
No related tags found
2 merge requests!3jpa+gui+logic,!1Gui-V1
Showing
with 936 additions and 0 deletions
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DBNavigator.Project.DataEditorManager">
<record-view-column-sorting-type value="BY_INDEX" />
<value-preview-text-wrapping value="true" />
<value-preview-pinned value="false" />
</component>
<component name="DBNavigator.Project.DataExportManager">
<export-instructions>
<create-header value="true" />
<friendly-headers value="false" />
<quote-values-containing-separator value="true" />
<quote-all-values value="false" />
<value-separator value="" />
<file-name value="" />
<file-location value="" />
<scope value="GLOBAL" />
<destination value="FILE" />
<format value="EXCEL" />
<charset value="windows-1252" />
<charset value="windows-1252" />
</export-instructions>
</component>
<component name="DBNavigator.Project.DatabaseBrowserManager">
<autoscroll-to-editor value="false" />
<autoscroll-from-editor value="true" />
<show-object-properties value="true" />
<loaded-nodes />
</component>
<component name="DBNavigator.Project.DatabaseFileManager">
<open-files />
</component>
<component name="DBNavigator.Project.EditorStateManager">
<last-used-providers />
</component>
<component name="DBNavigator.Project.ExecutionManager">
<retain-sticky-names value="false" />
</component>
<component name="DBNavigator.Project.MethodExecutionManager">
<method-browser />
<execution-history>
<group-entries value="true" />
<execution-inputs />
</execution-history>
<argument-values-cache />
</component>
<component name="DBNavigator.Project.ObjectDependencyManager">
<last-used-dependency-type value="INCOMING" />
</component>
<component name="DBNavigator.Project.ObjectQuickFilterManager">
<last-used-operator value="EQUAL" />
<filters />
</component>
<component name="DBNavigator.Project.ParserDiagnosticsManager">
<diagnostics-history />
</component>
<component name="DBNavigator.Project.ScriptExecutionManager" clear-outputs="true">
<recently-used-interfaces />
</component>
<component name="DBNavigator.Project.Settings">
<connections />
<browser-settings>
<general>
<display-mode value="TABBED" />
<navigation-history-size value="100" />
<show-object-details value="false" />
</general>
<filters>
<object-type-filter>
<object-type name="SCHEMA" enabled="true" />
<object-type name="USER" enabled="true" />
<object-type name="ROLE" enabled="true" />
<object-type name="PRIVILEGE" enabled="true" />
<object-type name="CHARSET" enabled="true" />
<object-type name="TABLE" enabled="true" />
<object-type name="VIEW" enabled="true" />
<object-type name="MATERIALIZED_VIEW" enabled="true" />
<object-type name="NESTED_TABLE" enabled="true" />
<object-type name="COLUMN" enabled="true" />
<object-type name="INDEX" enabled="true" />
<object-type name="CONSTRAINT" enabled="true" />
<object-type name="DATASET_TRIGGER" enabled="true" />
<object-type name="DATABASE_TRIGGER" enabled="true" />
<object-type name="SYNONYM" enabled="true" />
<object-type name="SEQUENCE" enabled="true" />
<object-type name="PROCEDURE" enabled="true" />
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
<object-type name="ARGUMENT" enabled="true" />
<object-type name="DIMENSION" enabled="true" />
<object-type name="CLUSTER" enabled="true" />
<object-type name="DBLINK" enabled="true" />
</object-type-filter>
</filters>
<sorting>
<object-type name="COLUMN" sorting-type="NAME" />
<object-type name="FUNCTION" sorting-type="NAME" />
<object-type name="PROCEDURE" sorting-type="NAME" />
<object-type name="ARGUMENT" sorting-type="POSITION" />
</sorting>
<default-editors>
<object-type name="VIEW" editor-type="SELECTION" />
<object-type name="PACKAGE" editor-type="SELECTION" />
<object-type name="TYPE" editor-type="SELECTION" />
</default-editors>
</browser-settings>
<navigation-settings>
<lookup-filters>
<lookup-objects>
<object-type name="SCHEMA" enabled="true" />
<object-type name="USER" enabled="false" />
<object-type name="ROLE" enabled="false" />
<object-type name="PRIVILEGE" enabled="false" />
<object-type name="CHARSET" enabled="false" />
<object-type name="TABLE" enabled="true" />
<object-type name="VIEW" enabled="true" />
<object-type name="MATERIALIZED VIEW" enabled="true" />
<object-type name="INDEX" enabled="true" />
<object-type name="CONSTRAINT" enabled="true" />
<object-type name="DATASET TRIGGER" enabled="true" />
<object-type name="DATABASE TRIGGER" enabled="true" />
<object-type name="SYNONYM" enabled="false" />
<object-type name="SEQUENCE" enabled="true" />
<object-type name="PROCEDURE" enabled="true" />
<object-type name="FUNCTION" enabled="true" />
<object-type name="PACKAGE" enabled="true" />
<object-type name="TYPE" enabled="true" />
<object-type name="DIMENSION" enabled="false" />
<object-type name="CLUSTER" enabled="false" />
<object-type name="DBLINK" enabled="true" />
</lookup-objects>
<force-database-load value="false" />
<prompt-connection-selection value="true" />
<prompt-schema-selection value="true" />
</lookup-filters>
</navigation-settings>
<dataset-grid-settings>
<general>
<enable-zooming value="true" />
<enable-column-tooltip value="true" />
</general>
<sorting>
<nulls-first value="true" />
<max-sorting-columns value="4" />
</sorting>
<tracking-columns>
<columnNames value="" />
<visible value="true" />
<editable value="false" />
</tracking-columns>
</dataset-grid-settings>
<dataset-editor-settings>
<text-editor-popup>
<active value="false" />
<active-if-empty value="false" />
<data-length-threshold value="100" />
<popup-delay value="1000" />
</text-editor-popup>
<values-actions-popup>
<show-popup-button value="true" />
<element-count-threshold value="1000" />
<data-length-threshold value="250" />
</values-actions-popup>
<general>
<fetch-block-size value="100" />
<fetch-timeout value="30" />
<trim-whitespaces value="true" />
<convert-empty-strings-to-null value="true" />
<select-content-on-cell-edit value="true" />
<large-value-preview-active value="true" />
</general>
<filters>
<prompt-filter-dialog value="true" />
<default-filter-type value="BASIC" />
</filters>
<qualified-text-editor text-length-threshold="300">
<content-types>
<content-type name="Text" enabled="true" />
<content-type name="Properties" enabled="true" />
<content-type name="XML" enabled="true" />
<content-type name="DTD" enabled="true" />
<content-type name="HTML" enabled="true" />
<content-type name="XHTML" enabled="true" />
<content-type name="Java" enabled="true" />
<content-type name="SQL" enabled="true" />
<content-type name="PL/SQL" enabled="true" />
<content-type name="JSON" enabled="true" />
<content-type name="JSON5" enabled="true" />
<content-type name="Groovy" enabled="true" />
<content-type name="AIDL" enabled="true" />
<content-type name="YAML" enabled="true" />
<content-type name="Manifest" enabled="true" />
</content-types>
</qualified-text-editor>
<record-navigation>
<navigation-target value="VIEWER" />
</record-navigation>
</dataset-editor-settings>
<code-editor-settings>
<general>
<show-object-navigation-gutter value="false" />
<show-spec-declaration-navigation-gutter value="true" />
<enable-spellchecking value="true" />
<enable-reference-spellchecking value="false" />
</general>
<confirmations>
<save-changes value="false" />
<revert-changes value="true" />
</confirmations>
</code-editor-settings>
<code-completion-settings>
<filters>
<basic-filter>
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
<filter-element type="RESERVED_WORD" id="function" selected="true" />
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
<filter-element type="OBJECT" id="schema" selected="true" />
<filter-element type="OBJECT" id="role" selected="true" />
<filter-element type="OBJECT" id="user" selected="true" />
<filter-element type="OBJECT" id="privilege" selected="true" />
<user-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="false" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</user-schema>
<public-schema>
<filter-element type="OBJECT" id="table" selected="false" />
<filter-element type="OBJECT" id="view" selected="false" />
<filter-element type="OBJECT" id="materialized view" selected="false" />
<filter-element type="OBJECT" id="index" selected="false" />
<filter-element type="OBJECT" id="constraint" selected="false" />
<filter-element type="OBJECT" id="trigger" selected="false" />
<filter-element type="OBJECT" id="synonym" selected="false" />
<filter-element type="OBJECT" id="sequence" selected="false" />
<filter-element type="OBJECT" id="procedure" selected="false" />
<filter-element type="OBJECT" id="function" selected="false" />
<filter-element type="OBJECT" id="package" selected="false" />
<filter-element type="OBJECT" id="type" selected="false" />
<filter-element type="OBJECT" id="dimension" selected="false" />
<filter-element type="OBJECT" id="cluster" selected="false" />
<filter-element type="OBJECT" id="dblink" selected="false" />
</public-schema>
<any-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</any-schema>
</basic-filter>
<extended-filter>
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
<filter-element type="RESERVED_WORD" id="function" selected="true" />
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
<filter-element type="OBJECT" id="schema" selected="true" />
<filter-element type="OBJECT" id="user" selected="true" />
<filter-element type="OBJECT" id="role" selected="true" />
<filter-element type="OBJECT" id="privilege" selected="true" />
<user-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</user-schema>
<public-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</public-schema>
<any-schema>
<filter-element type="OBJECT" id="table" selected="true" />
<filter-element type="OBJECT" id="view" selected="true" />
<filter-element type="OBJECT" id="materialized view" selected="true" />
<filter-element type="OBJECT" id="index" selected="true" />
<filter-element type="OBJECT" id="constraint" selected="true" />
<filter-element type="OBJECT" id="trigger" selected="true" />
<filter-element type="OBJECT" id="synonym" selected="true" />
<filter-element type="OBJECT" id="sequence" selected="true" />
<filter-element type="OBJECT" id="procedure" selected="true" />
<filter-element type="OBJECT" id="function" selected="true" />
<filter-element type="OBJECT" id="package" selected="true" />
<filter-element type="OBJECT" id="type" selected="true" />
<filter-element type="OBJECT" id="dimension" selected="true" />
<filter-element type="OBJECT" id="cluster" selected="true" />
<filter-element type="OBJECT" id="dblink" selected="true" />
</any-schema>
</extended-filter>
</filters>
<sorting enabled="true">
<sorting-element type="RESERVED_WORD" id="keyword" />
<sorting-element type="RESERVED_WORD" id="datatype" />
<sorting-element type="OBJECT" id="column" />
<sorting-element type="OBJECT" id="table" />
<sorting-element type="OBJECT" id="view" />
<sorting-element type="OBJECT" id="materialized view" />
<sorting-element type="OBJECT" id="index" />
<sorting-element type="OBJECT" id="constraint" />
<sorting-element type="OBJECT" id="trigger" />
<sorting-element type="OBJECT" id="synonym" />
<sorting-element type="OBJECT" id="sequence" />
<sorting-element type="OBJECT" id="procedure" />
<sorting-element type="OBJECT" id="function" />
<sorting-element type="OBJECT" id="package" />
<sorting-element type="OBJECT" id="type" />
<sorting-element type="OBJECT" id="dimension" />
<sorting-element type="OBJECT" id="cluster" />
<sorting-element type="OBJECT" id="dblink" />
<sorting-element type="OBJECT" id="schema" />
<sorting-element type="OBJECT" id="role" />
<sorting-element type="OBJECT" id="user" />
<sorting-element type="RESERVED_WORD" id="function" />
<sorting-element type="RESERVED_WORD" id="parameter" />
</sorting>
<format>
<enforce-code-style-case value="true" />
</format>
</code-completion-settings>
<execution-engine-settings>
<statement-execution>
<fetch-block-size value="100" />
<execution-timeout value="20" />
<debug-execution-timeout value="600" />
<focus-result value="false" />
<prompt-execution value="false" />
</statement-execution>
<script-execution>
<command-line-interfaces />
<execution-timeout value="300" />
</script-execution>
<method-execution>
<execution-timeout value="30" />
<debug-execution-timeout value="600" />
<parameter-history-size value="10" />
</method-execution>
</execution-engine-settings>
<operation-settings>
<transactions>
<uncommitted-changes>
<on-project-close value="ASK" />
<on-disconnect value="ASK" />
<on-autocommit-toggle value="ASK" />
</uncommitted-changes>
<multiple-uncommitted-changes>
<on-commit value="ASK" />
<on-rollback value="ASK" />
</multiple-uncommitted-changes>
</transactions>
<session-browser>
<disconnect-session value="ASK" />
<kill-session value="ASK" />
<reload-on-filter-change value="false" />
</session-browser>
<compiler>
<compile-type value="KEEP" />
<compile-dependencies value="ASK" />
<always-show-controls value="false" />
</compiler>
<debugger>
<debugger-type value="ASK" />
<use-generic-runners value="true" />
</debugger>
</operation-settings>
<ddl-file-settings>
<extensions>
<mapping file-type-id="VIEW" extensions="vw" />
<mapping file-type-id="TRIGGER" extensions="trg" />
<mapping file-type-id="PROCEDURE" extensions="prc" />
<mapping file-type-id="FUNCTION" extensions="fnc" />
<mapping file-type-id="PACKAGE" extensions="pkg" />
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
<mapping file-type-id="TYPE" extensions="tpe" />
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
</extensions>
<general>
<lookup-ddl-files value="true" />
<create-ddl-files value="false" />
<synchronize-ddl-files value="true" />
<use-qualified-names value="false" />
<make-scripts-rerunnable value="true" />
</general>
</ddl-file-settings>
<general-settings>
<regional-settings>
<date-format value="MEDIUM" />
<number-format value="UNGROUPED" />
<locale value="SYSTEM_DEFAULT" />
<use-custom-formats value="false" />
</regional-settings>
<environment>
<environment-types>
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
</environment-types>
<visibility-settings>
<connection-tabs value="true" />
<dialog-headers value="true" />
<object-editor-tabs value="true" />
<script-editor-tabs value="false" />
<execution-result-tabs value="true" />
</visibility-settings>
</environment>
</general-settings>
</component>
<component name="DBNavigator.Project.StatementExecutionManager">
<execution-variables />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/notenmanager.iml" filepath="$PROJECT_DIR$/notenmanager.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
public interface Calcuable
{
double calculateAverage();
int calculateMedian(); //Wird vielleicht spaeter benoetigt
double calculateModus();
}
import enumeration.BachelorSemester;
import enumeration.CourseType;
import enumeration.ExamType;
import enumeration.Mark;
public class Course
{
// most attributes are concrete and can't be changed easily without changing the whole system
private final int id; // PK // FK
private final String name;
private final BachelorSemester bachelorSemester;
private final CourseType courseType;
private final int sws;
private final double ects;
private ExamType examType;
public Course(int id, String name, BachelorSemester bachelorSemester, CourseType courseType, int sws, double ects, ExamType examType)
{
this.id = id;
this.name = name;
this.bachelorSemester = bachelorSemester;
this.courseType = courseType;
this.sws = sws;
this.ects = ects;
this.examType = examType;
}
public int getId(){
return id;
}
@Override
public String toString() {
return "\nCourse: " +
"id=" + id +
", name='" + name + '\'' +
", bachelorSemester=" + bachelorSemester +
", courseType=" + courseType +
", sws=" + sws +
", ects=" + ects +
", examType=" + examType;
}
}
import enumeration.BachelorDegree;
import enumeration.FieldOfStudy;
import java.util.List;
public class CoursesOfStudy
{
private final int id;
private final String name;
private final BachelorDegree bachelorDegree;
private final int duration;
private final int fees;
private final List<Course> courses;
private FieldOfStudy fieldOfStudy;
public CoursesOfStudy(int id, String name, BachelorDegree bachelorDegree, int duration, int fees, List<Course> courses, FieldOfStudy fieldOfStudy)
{
this.id = id;
this.name = name;
this.bachelorDegree = bachelorDegree;
this.duration = duration;
this.fees = fees;
this.courses = courses;
this.fieldOfStudy = fieldOfStudy;
}
}
public class Enrollment
{
private final int id;
private final int studentID;
private final int lecturerID;
private final int courseID;
public Enrollment(int id, int studentID, int lecturerID, int courseID)
{
this.id = id;
this.studentID = studentID;
this.lecturerID = lecturerID;
this.courseID = courseID;
}
}
import enumeration.Gender;
import enumeration.Mark;
import enumeration.Status;
import java.util.List;
public class Lecturer extends UniversityMember {
public Lecturer(int id, String firstName, String lastName, String placeOfResidence, String birthPlace,
String officialEmail, String privateEmail, List<Course> personalCourses, Gender gender, Status status) {
super(id, gender, firstName, lastName, placeOfResidence, birthPlace,
officialEmail, privateEmail, personalCourses);
}
public boolean rateStudent(Student student, Course course, Mark mark) {
if (isSignedUpForCourse(course)) {
return student.setGrade(course, mark);
}
return false;
}
}
import enumeration.*;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Course> kevCourses = new ArrayList<>();
Course a1 = new Course(1, "test1", BachelorSemester.FIFTH, CourseType.COMPULSORY, 5, 5.5, ExamType.ASSIGNMENT);
Course a2 = new Course(2, "test2", BachelorSemester.FIFTH, CourseType.COMPULSORY, 5, 5.5, ExamType.ASSIGNMENT);
Course a3 = new Course(3, "test3", BachelorSemester.FIFTH, CourseType.COMPULSORY, 5, 5.5, ExamType.ASSIGNMENT);
Course a4 = new Course(4, "test4", BachelorSemester.FIFTH, CourseType.COMPULSORY, 5, 5.5, ExamType.ASSIGNMENT);
Course a5 = new Course(4, "test4", BachelorSemester.FIFTH, CourseType.COMPULSORY, 5, 5.5, ExamType.ASSIGNMENT);
Course a6 = new Course(4, "test4", BachelorSemester.FIFTH, CourseType.COMPULSORY, 5, 5.5, ExamType.ASSIGNMENT);
Course a7 = new Course(4, "test4", BachelorSemester.FIFTH, CourseType.COMPULSORY, 5, 5.5, ExamType.ASSIGNMENT);
kevCourses.add(a1);
kevCourses.add(a2);
kevCourses.add(a3);
kevCourses.add(a4);
kevCourses.add(a5);
kevCourses.add(a6);
kevCourses.add(a7);
Student kev = new Student(1, Gender.MALE, "Kevin",
"Thaller", "Tittling", "Freyung", "kevin.thaller@stud.th-deg.de",
"123", kevCourses, Status.ENROLLED, BachelorSemester.FIFTH);
kev.setGrade(a1, Mark.VIER_NULL);
kev.setGrade(a2, Mark.FUENF_NULL);
kev.setGrade(a3, Mark.DREI_DREI);
kev.setGrade(a4, Mark.EINS_NULL);
kev.setGrade(a5, Mark.EINS_NULL);
kev.setGrade(a6, Mark.FUENF_NULL);
kev.setGrade(a7, Mark.FUENF_NULL);
System.out.println(kev.getGrades());
System.out.println(kev.calculateAverage());
System.out.println(kev.calculateMedian());
}
}
\ No newline at end of file
import enumeration.BachelorSemester;
import enumeration.Gender;
import enumeration.Mark;
import enumeration.Status;
import java.util.*;
public class Student extends UniversityMember implements Calcuable {
// no static because variables don't make any sense without the created object
private Status status;
private boolean paidFees;
private BachelorSemester bachelorSemester;
private Map<Course, Mark> grades = new HashMap<>();
public Student(int id, Gender gender, String firstName, String lastName, String placeOfResidence, String birthPlace,
String officialEmail, String privateEmail, List<Course> personalCourses,
Status status, BachelorSemester bachelorSemester) {
super(id, gender, firstName, lastName, placeOfResidence, birthPlace,
officialEmail, privateEmail, personalCourses);
this.status = status;
this.paidFees = true;
this.bachelorSemester = bachelorSemester;
this.initGrades();
}
private void initGrades() {
for (Course course : this.getPersonalCourses()) {
grades.put(course, null);
}
}
public boolean setGrade(Course course, Mark mark) {
if (isSignedUpForCourse(course)) {
grades.replace(course, mark);
return true;
}
return false;
}
public Map<Course, Mark> getGrades() {
return grades;
}
public boolean increaseSemester() {
if (paidFees) {
bachelorSemester.increaseSemester();
return true;
} else {
return false;
}
}
@Override
public double calculateAverage() {
double average = 0.0;
int counter = 0;
for (Map.Entry<Course, Mark> grade : grades.entrySet()) {
if (grade.getValue() != null) {
Mark temp = grade.getValue();
average += temp.getValue();
counter++;
}
}
return average / counter;
}
@Override
public int calculateMedian() {
List<Mark> markList = new ArrayList<>();
int median = 0;
for (Map.Entry<Course, Mark> grade : grades.entrySet()) {
if (grade.getValue() != null) {
markList.add(grade.getValue());
}
}
markList.sort(Comparator.comparing(Mark::getValue));
median = (int) markList.get(markList.size() / 2).getValue();
if (markList.size() % 2 == 0)
median = (int) ((median + markList.get(markList.size() / 2 - 1).getValue()) / 2);
return median;
}
@Override
public double calculateModus() {
return 0.0;
}
}
\ No newline at end of file
import enumeration.Gender;
import java.util.ArrayList;
import java.util.List;
public abstract class UniversityMember {
// final for the ID because it will remain the same for the whole duration of studying or being employed
// PK & FK
private final int id;
private Gender gender;
private String firstName;
private String lastName;
private String placeOfResidence;
private final String birthPlace;
private String officialEmail;
private String privateEmail;
private List<Course> personalCourses = new ArrayList<>();
public UniversityMember(int id, Gender gender, String firstName, String lastName, String placeOfResidence, String birthPlace,
String officialEmail, String privateEmail, List<Course> personalCourses) {
this.id = id;
this.gender = gender;
this.firstName = firstName;
this.lastName = lastName;
this.placeOfResidence = placeOfResidence;
this.birthPlace = birthPlace;
this.officialEmail = officialEmail;
this.privateEmail = privateEmail;
this.personalCourses = personalCourses;
}
public Course getCourseForId(int id) {
for (Course course : personalCourses) {
if (course.getId() == id) {
return course;
}
}
return null;
}
public List<Course> getPersonalCourses() {
return personalCourses;
}
public boolean signUpForCourse(Course course) {
if (isSignedUpForCourse(course)) {
return false;
} else {
return personalCourses.add(course);
}
}
public boolean leaveCourse(Course course) {
if (isSignedUpForCourse(course)) {
return personalCourses.remove(course);
} else {
return false;
}
}
public boolean isSignedUpForCourse(Course course) {
return personalCourses.contains(course);
}
}
package enumeration;
public enum BachelorDegree
{
BACHELOR_OF_SCIENCE("B. Sc."),
BACHELOR_OF_ENGINEERING("B. Eng."),
BACHELOR_OF_ARTS("B. A.");
private String degree;
private BachelorDegree(String degree)
{
this.degree = degree;
}
}
package enumeration;
public enum BachelorSemester
{
FIRST(1),
SECOND(2),
THIRD(3),
FOURTH(4),
FIFTH(5),
SIXTH(6),
SEVENTH(7);
private int semester;
//Max-Grenze festlegen
private BachelorSemester(int semester)
{
this.semester = semester;
}
public void increaseSemester(){
this.semester++;
}
}
package enumeration;
public enum CourseType
{
REQUIRED("required"),
ELECTIVE("AWP"),
COMPULSORY("FWP"),
PLV("PLV");
private String courseType;
private CourseType(String courseType)
{
this.courseType = courseType;
}
}
package enumeration;
public enum ExamType
{
WRITTEN("written ex."),
RESEARCH_PROJECT("written student research project"),
BACHELOR_THESIS("bachelor thesis"),
ORAL("oral ex."),
ASSIGNMENT("assignment"),
PERFORMANCE_RECORD("TN");
private String examType;
private ExamType(String examType)
{
this.examType = examType;
}
}
package enumeration;
public enum FieldOfStudy
{
EMBEDDED_SYSTEMS,
MOBILE_AND_SPATIAL_SYSTEMS;
}
package enumeration;
public enum Gender
{
MALE("Male"),
FEMALE("Female"),
OTHER("Other");
private String gender;
private Gender(String gender)
{
this.gender = gender;
}
}
package enumeration;
public enum Mark {
EINS_NULL(1.0),
EINS_DREI(1.3),
EINS_SIEBEN(1.7),
ZWEI_NULL(2.0),
ZWEI_DREI(2.3),
ZWEI_SIEBEN(2.7),
DREI_NULL(3.0),
DREI_DREI(3.3),
DREI_SIEBEN(3.7),
VIER_NULL(4.0),
FUENF_NULL(5.0);
private double mark;
private Mark(double mark) {
this.mark = mark;
}
public double getValue() {
return mark;
}
}
package enumeration;
public enum Status
{
ENROLLED("enrolled"),
WITHDRAWAL("withdrawing"),
DISMISSAL("dismissed");
private String status;
private Status(String status)
{
this.status = status;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment