modified: src/db.c

modified:   src/db.h
	modified:   src/test.c
	modified:   src/ui.c
bugfixMaster
ketrptr 2024-12-15 12:18:32 +01:00
parent 08145cd4a2
commit 9b3238978b
4 changed files with 155 additions and 164 deletions

135
src/db.c
View File

@ -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
} }

View File

@ -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);

View File

@ -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
View File

@ -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);
{ {