modified: src/db.c
modified: src/db.h modified: src/test.c modified: src/ui.cbugfixMaster
parent
08145cd4a2
commit
9b3238978b
135
src/db.c
135
src/db.c
|
@ -10,102 +10,95 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "llist.h"
|
||||||
|
#include "planner.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include "planner.h"
|
|
||||||
#include "list.h"
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
write a complete linkedlist to a task csv file.
|
write a complete linkedlist to a task csv file.
|
||||||
*/
|
*/
|
||||||
void write_linkedlist_to_csv(llist* head, const char* filename) {
|
void write_linkedlist_to_csv(llist *head, const char *filename) {
|
||||||
//Open file with write permision
|
// Open file with write permision
|
||||||
FILE* file = fopen(filename, "w");
|
FILE *file = fopen(filename, "w");
|
||||||
//if there is no file or a wrong file path you becom an error
|
// if there is no file or a wrong file path you becom an error
|
||||||
if (file == NULL) {
|
if (file == NULL) {
|
||||||
perror("Could not open file %s\n", filename);
|
fprintf(stderr, "Could not open file %s\n", filename);
|
||||||
}
|
exit(1);
|
||||||
else{
|
|
||||||
//write the file header
|
|
||||||
fprintf(file, "TaskName, Created, Deadline, Priority, Spare\n");
|
|
||||||
|
|
||||||
// Iterate through the linked list and write the data to the CSV
|
} else {
|
||||||
llist* current = head;
|
// write the file header
|
||||||
while (current != NULL) {
|
fprintf(file, "TaskName, Created, Deadline, Priority, Spare\n");
|
||||||
|
|
||||||
// Write the task data to the CSV file
|
// Iterate through the linked list and write the data to the CSV
|
||||||
fprintf(file, "%s, %lu, %lu, %d, %lu\n",
|
llist *current = head;
|
||||||
task->name,
|
Task *task;
|
||||||
task->created,
|
while (current != NULL) {
|
||||||
task->deadline,
|
task = current->data;
|
||||||
task->priority,
|
|
||||||
task->spare,
|
|
||||||
|
|
||||||
|
// Write the task data to the CSV file
|
||||||
|
fprintf(file, "%s, %lu, %lu, %d, %lu\n", task->name, task->created,
|
||||||
|
task->deadline, task->priority, task->spare);
|
||||||
|
|
||||||
current = current->next;
|
current = current->next;
|
||||||
}
|
}
|
||||||
fclose(file); // Close the file
|
fclose(file); // Close the file
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
read a task csv file and write the data in a linked list
|
read a task csv file and write the data in a linked list
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void write_csv_to_llist(const char* filename) {
|
llist *write_csv_to_llist(const char *filename) {
|
||||||
//Open file with read permision
|
llist *list = NULL; // list to return
|
||||||
FILE* file = fopen(filename, "r");
|
// Open file with read permision
|
||||||
|
FILE *file = fopen(filename, "r");
|
||||||
if (file == NULL) {
|
if (file == NULL) {
|
||||||
perror("Could not open file %s\n", filename);
|
fprintf(stderr, "Could not open file %s\n", filename);
|
||||||
}
|
|
||||||
else{
|
} else {
|
||||||
char line[1024]; //Line Buffer
|
char line[1024]; // Line Buffer
|
||||||
int count = 0; //task counter
|
int count = 0; // task counter
|
||||||
llist *list = NULL
|
fgets(line, sizeof(line), file); // read and ignore file head
|
||||||
fgets(line, sizeof(line), file); //read and ignore file head
|
|
||||||
while (fgets(line, sizeof(line), file)) {
|
while (fgets(line, sizeof(line), file)) {
|
||||||
count++;
|
count++;
|
||||||
//remove newline sign
|
// remove newline sign
|
||||||
line[strcspn(line, "\n")] = '\0';
|
line[strcspn(line, "\n")] = '\0';
|
||||||
|
|
||||||
// column slice
|
// column slice
|
||||||
char *taskname = strtok(line, ",");
|
char *taskname = strtok(line, ",");
|
||||||
char *tsakcreation_dateSTR = strtok(NULL, ",");
|
char *taskcreation_dateSTR = strtok(NULL, ",");
|
||||||
char *tsakdeadline_dateSTR = strtok(NULL, ",");
|
char *taskdeadline_dateSTR = strtok(NULL, ",");
|
||||||
char *tsakprioritySTR = strtok(NULL, ",");
|
char *taskprioritySTR = strtok(NULL, ",");
|
||||||
char *tsakspareSTR = strtok(NULL, ",");
|
char *taskspareSTR = strtok(NULL, ",");
|
||||||
|
|
||||||
|
// convert char in integer and date
|
||||||
|
unsigned long int taskcreation_date =
|
||||||
|
strtoul(taskcreation_dateSTR, NULL, 10);
|
||||||
|
unsigned long int taskdeadline_date =
|
||||||
|
strtoul(taskdeadline_dateSTR, NULL, 10);
|
||||||
|
unsigned long int taskspare = strtoul(taskspareSTR, NULL, 10);
|
||||||
|
int priority = atoi(taskprioritySTR);
|
||||||
|
|
||||||
// convert char in integer and date
|
// create Task
|
||||||
unsigned long int taskcreation_date = strtoul(taskcreation_dateSTR,NULL,10);
|
Task *task = newTask(taskname, taskcreation_date, taskdeadline_date,
|
||||||
unsigned long int taskdeadline_date = strtoul(taskdeadline_dateSTR,NULL,10);
|
priority, taskspare);
|
||||||
unsigned long int taskspare = strtoul(taskspareSTR,NULL,10);
|
|
||||||
int priority = atoi(prioritySTR);
|
|
||||||
|
|
||||||
|
// Insert task into the linked list
|
||||||
|
if (list == NULL) {
|
||||||
//create Task
|
// If the list is empty, initialize it with the first task
|
||||||
Task *task = newTask(taskname, taskcreation_date, taskdeadline_date, taskpriority, taskspare);
|
list = llistNew(task, cmpTaskN);
|
||||||
|
} else {
|
||||||
|
// Append the task to the linked list
|
||||||
|
llistAppend(list, task);
|
||||||
// Insert task into the linked list
|
}
|
||||||
if (list == NULL) {
|
|
||||||
// If the list is empty, initialize it with the first task
|
|
||||||
list = llistNew(task, cmpTaskN);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Append the task to the linked list
|
|
||||||
llistAppend(list, task);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(file);
|
fclose(file);
|
||||||
}
|
}
|
||||||
|
return list; // null on error
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
4
src/db.h
4
src/db.h
|
@ -5,5 +5,5 @@
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern void write_linkedlist_to_csv(llist* head, const char* filename)
|
extern void write_linkedlist_to_csv(llist *head, const char *filename);
|
||||||
extern void write_csv_to_llist(const char* filename)
|
extern void write_csv_to_llist(const char *filename);
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
int main() {
|
int test() {
|
||||||
|
|
||||||
time_t now = time(NULL);
|
time_t now = time(NULL);
|
||||||
|
|
||||||
|
|
178
src/ui.c
178
src/ui.c
|
@ -5,7 +5,7 @@
|
||||||
/* Created by Juergen Buechel, 13.12.2024/
|
/* Created by Juergen Buechel, 13.12.2024/
|
||||||
*/
|
*/
|
||||||
#include "ui.h"
|
#include "ui.h"
|
||||||
// #include "db.h"
|
#include "db.h"
|
||||||
#include "llist.h"
|
#include "llist.h"
|
||||||
#include "planner.h" // for subject and event structs
|
#include "planner.h" // for subject and event structs
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -31,98 +31,96 @@ int main(void) {
|
||||||
if (scanf("%d", &choice) != 1) {
|
if (scanf("%d", &choice) != 1) {
|
||||||
printf("Falsche Eingabe\n");
|
printf("Falsche Eingabe\n");
|
||||||
};
|
};
|
||||||
choice = 0;
|
// choice = 0;
|
||||||
|
|
||||||
while ((choice < 1 || choice > 5)) {
|
switch (choice) {
|
||||||
switch (choice) {
|
case 1: {
|
||||||
case 1: {
|
printf(" Geben sie das gewünschte Fach ein: \n");
|
||||||
printf(" Geben sie das gewünschte Fach ein: \n");
|
if (scanf("%c", taskname) != 1) {
|
||||||
if (scanf("%c", taskname) != 1) {
|
printf("Ungültige Eingabe für den Namen.\n");
|
||||||
printf("Ungültige Eingabe für den Namen.\n");
|
return -1;
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf(" Wie viel Zeit bleibt ihnen:\n");
|
|
||||||
if (scanf("%d", &taskdeadline_date) != 1) {
|
|
||||||
printf("Ungültige Eingabe.\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf(" Gib die Priorität des Faches an: \n");
|
|
||||||
if (scanf("%d", &taskpriority) != 1) {
|
|
||||||
printf("Ungültige Eingabe.\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf(" Wie viel Zeit habe Sie für dieses Fach: \n");
|
|
||||||
if (scanf("%d", &taskspare) != 1) {
|
|
||||||
printf("Ungültige Eingabe.\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
printf(
|
|
||||||
"Geben Sie die zur verfuegung stehende Zeit für die Fächer an: \n");
|
|
||||||
scanf("%c", &taskspare);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
// if (task == NULL) {
|
|
||||||
// printf("Die Liste ist leer");
|
|
||||||
// } else {
|
|
||||||
// llist *iterator = list;
|
|
||||||
// while (iterator != NULL) {
|
|
||||||
// Task *currentTask = (Task *)(iterator->data); // Cast zu Task
|
|
||||||
// printf("Fach: %s, Deadline: %ld, Priorität: %d\n",
|
|
||||||
// currentTask->name, currentTask->deadline,
|
|
||||||
// currentTask->priority);
|
|
||||||
// iterator = iterator->next; // Gehe zum nächsten Listenelement
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
break;
|
|
||||||
// case 4: iCAl();break;
|
|
||||||
|
|
||||||
printf(" Wie viel Zeit bleibt ihnen:\n");
|
|
||||||
if (scanf("%d", &taskdeadline_date) != 1) {
|
|
||||||
printf("Ungültige Eingabe.\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf(" Gib die Priorität des Faches an: \n");
|
|
||||||
if (scanf("%d", &taskpriority) != 1) {
|
|
||||||
printf("Ungültige Eingabe.\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf(" Wie viel Zeit habe Sie für dieses Fach: \n");
|
|
||||||
if (scanf("%d", &taskspare) != 1) {
|
|
||||||
printf("Ungültige Eingabe.\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
printf(
|
|
||||||
"Geben Sie die zur verfuegung stehende Zeit für die Fächer an: \n");
|
|
||||||
scanf("%d", &taskspare);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 5:
|
|
||||||
// if (task == NULL) {//task?
|
|
||||||
// printf("Die Liste ist leer");
|
|
||||||
// } else {
|
|
||||||
// llist *iterator = list;
|
|
||||||
// while (iterator != NULL) {
|
|
||||||
// Task *currentTask = (Task *)(iterator->data); // Cast zu Task
|
|
||||||
// printf("Fach: %s, Deadline: %ld, Priorität: %d\n",
|
|
||||||
// currentTask->name, currentTask->deadline,
|
|
||||||
// currentTask->priority);
|
|
||||||
// iterator = iterator->next; // Gehe zum nächsten Listenelement
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
break;
|
|
||||||
// case 4: iCAl();break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf(" Wie viel Zeit bleibt ihnen:\n");
|
||||||
|
if (scanf("%d", &taskdeadline_date) != 1) {
|
||||||
|
printf("Ungültige Eingabe.\n");
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf(" Gib die Priorität des Faches an: \n");
|
||||||
|
if (scanf("%d", &taskpriority) != 1) {
|
||||||
|
printf("Ungültige Eingabe.\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf(" Wie viel Zeit habe Sie für dieses Fach: \n");
|
||||||
|
if (scanf("%d", &taskspare) != 1) {
|
||||||
|
printf("Ungültige Eingabe.\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
printf(
|
||||||
|
"Geben Sie die zur verfuegung stehende Zeit für die Fächer an: \n");
|
||||||
|
scanf("%d", &taskspare);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
// if (task == NULL) {
|
||||||
|
// printf("Die Liste ist leer");
|
||||||
|
// } else {
|
||||||
|
// llist *iterator = list;
|
||||||
|
// while (iterator != NULL) {
|
||||||
|
// Task *currentTask = (Task *)(iterator->data); // Cast zu Task
|
||||||
|
// printf("Fach: %s, Deadline: %ld, Priorität: %d\n",
|
||||||
|
// currentTask->name, currentTask->deadline,
|
||||||
|
// currentTask->priority);
|
||||||
|
// iterator = iterator->next; // Gehe zum nächsten Listenelement
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
break;
|
||||||
|
// case 4: iCAl();break;
|
||||||
|
|
||||||
|
printf(" Wie viel Zeit bleibt ihnen:\n");
|
||||||
|
if (scanf("%d", &taskdeadline_date) != 1) {
|
||||||
|
printf("Ungültige Eingabe.\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf(" Gib die Priorität des Faches an: \n");
|
||||||
|
if (scanf("%d", &taskpriority) != 1) {
|
||||||
|
printf("Ungültige Eingabe.\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf(" Wie viel Zeit habe Sie für dieses Fach: \n");
|
||||||
|
if (scanf("%d", &taskspare) != 1) {
|
||||||
|
printf("Ungültige Eingabe.\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
printf(
|
||||||
|
"Geben Sie die zur verfuegung stehende Zeit für die Fächer an: \n");
|
||||||
|
scanf("%d", &taskspare);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
// if (task == NULL) {//task?
|
||||||
|
// printf("Die Liste ist leer");
|
||||||
|
// } else {
|
||||||
|
// llist *iterator = list;
|
||||||
|
// while (iterator != NULL) {
|
||||||
|
// Task *currentTask = (Task *)(iterator->data); // Cast zu Task
|
||||||
|
// printf("Fach: %s, Deadline: %ld, Priorität: %d\n",
|
||||||
|
// currentTask->name, currentTask->deadline,
|
||||||
|
// currentTask->priority);
|
||||||
|
// iterator = iterator->next; // Gehe zum nächsten Listenelement
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
break;
|
||||||
|
// case 4: iCAl();break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} while (choice != 5);
|
} while (choice != 5);
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue