#include <stdio.h> #include <stdlib.h> #include <string.h> #include "datastructure.h" #include "cds.h" #include "tools.h" #include "datetime.h" #include "menu.h" #include "list.h" #define NUMBER_OF_MENU_ITEMS 8 unsigned int countCDs = 0; sCD *first = NULL; sCD *last = NULL; void createCD() { if (countCDs == MAXCDS) { puts("Maximum number of cds reached!"); exit(0); } clearScreen(); puts("Erfassung einer neuen CD"); printLine('=', 50); sCD *CDData = calloc(1, sizeof(sCD)); if (!CDData) exit(0); (CDData)->numberOfSongs = 0; getText("Geben Sie bitte den Titel der CD ein:", 35, &(CDData)->title, 0); getText("Geben Sie bitte den Interpreten ein:", 35, &(CDData)->artist, 1); getNumber("Geben Sie bitte das Erscheinungsjahr ein:", &(CDData)->publicationYear, 1982, 2022); puts("Geben Sie bitte die Daten der Lieder ein:"); creatSong(CDData); countCDs++; insertListElement(CDData); } void creatSong(sCD *CDData) { do { printf("Lied %i:\n", ((CDData)->numberOfSongs) + 1); getText("Geben Sie bitte den Titel des Liedes ein:", 35, &(CDData)->Songs[(CDData)->numberOfSongs].title, 0); getText("Geben Sie bitte den Interpreten ein:", 35, &(CDData)->Songs[(CDData)->numberOfSongs].artist, 1); inputTime("Geben Sie bitte die Dauer des Liedes ein\n (Format hh:mm:ss oder mm:ss):\n -> ", &(CDData)->Songs[(CDData)->numberOfSongs].duration); (CDData)->numberOfSongs++; } while ((askYesOrNo("Moechten Sie noch ein weiteres Lied eingeben (j/n)?")) && ((CDData)->numberOfSongs) < MAXSONGS); } void editCd() { puts("editCd"); waitForEnter(); } void deleteCD() { sCD *CDData = first; unsigned int input; unsigned int menuPoints = 0; puts("Liste der CDs"); printLine('=', 50); if (!CDData) { puts("No CD loaded or created to be delated!"); delay(2.0); return; } while (CDData) { menuPoints++; printf("%i: %s\n", menuPoints, CDData->title); CDData = CDData->next; } CDData = first; do { puts("Welche CD moechten Sie loeschen (0 fuer Abbrechen) ?"); scanf("%u", &input); } while (input > menuPoints); for (unsigned int i = 1; i < input; i++) { CDData = CDData->next; } deleteNode(&first, CDData); waitForEnter(); } void searchSong() { puts("deleteCd"); waitForEnter(); } /*void sortCDs() { int choice; char *menuTitle = "CDs sortieren"; char *menuItems[] = {"Sortieren nach CD-Titel", "Sortieren nach CD-Interpret", "Sortieren nach Erscheinungsjahr", "Sortieren nach Anzahl Lieder", "Sortieren nach Song-Titel", "Sortieren nach Song-Interpret", "Sortieren nach Song-Duration", "Zurueck zum Hauptmenue"}; choice = getMenu(menuTitle, menuItems, NUMBER_OF_MENU_ITEMS); switch (choice) { case 1: quickSort(0, countCDs - 1, stringSort, 0); puts("°Sorrting has been suceffully done ..... ok!"); waitForEnter(); break; case 2: quickSort(0, countCDs - 1, stringSort, 1); puts("°Sorrting has been suceffully done ..... ok!"); waitForEnter(); break; case 3: quickSort(0, countCDs - 1, numSort, 2); puts("°Sorrting has been suceffully done ..... ok!"); waitForEnter(); break; case 4: quickSort(0, countCDs - 1, numSort, 3); puts("°Sorrting has been suceffully done ..... ok!"); waitForEnter(); break; case 5: for (int i = 0; i < countCDs; i++) { quickSort1(0, (CDData + i)->numberOfSongs - 1, stringSort, 1, i); } puts("°Sorrting has been suceffully done ..... ok!"); waitForEnter(); break; case 6: for (int i = 0; i < countCDs; i++) { quickSort1(0, (CDData + i)->numberOfSongs - 1, stringSort, 0, i); } puts("°Sorrting has been suceffully done ..... ok!"); waitForEnter(); break; case 7: for (int i = 0; i < countCDs; i++) { quickSort1(0, (CDData + i)->numberOfSongs - 1, numSort, 2, i); } puts("°Sorrting has been suceffully done ..... ok!"); waitForEnter(); break; case 8: puts("Press Enter to get back to the main menue ..!"); waitForEnter(); break; default: waitForEnter(); break; } }*/ void ListCDs() { if (countCDs == 0) { puts("No song created or loaded yet!, you need first of all to load or creat at least one song to be able to see the listed itmes!"); waitForEnter(); } unsigned int choice; char *menuTitle = "CDs auflisten"; char *menuItems[] = {"Ausgabe nach CD-Titel aufwaerts sortiert", "Ausgabe nach CD-Titel abwaerts sortiert", "Zurueck zum Hauptmenue"}; choice = getMenu(menuTitle, menuItems, 3); do { switch (choice) { case 1: printVoward(); break; case 2: printReverse(); break; case 3: break; default: choice = 0; break; } } while (choice == 0); waitForEnter(); } void listOneSong(unsigned int j, sCD *CDData) { if ((CDData)->Songs[j].artist) { printf("%.1i. %s (%s; ", (j + 1), (CDData)->Songs[j].title, (CDData)->Songs[j].artist); printTime((CDData)->Songs[j].duration, 1); puts(")"); } else { printf("%.1i. %s ( ", (j + 1), (CDData)->Songs[j].title); printTime((CDData)->Songs[j].duration, 1); puts(")"); } }