Skip to content
Snippets Groups Projects
cds.c 5.65 KiB
Newer Older
T.Wadi's avatar
T.Wadi committed
#include <stdio.h>
#include <stdlib.h>
T.Wadi's avatar
T.Wadi committed
#include <string.h>
T.Wadi's avatar
T.Wadi committed
#include "datastructure.h"
#include "cds.h"
#include "tools.h"
#include "datetime.h"
T.Wadi's avatar
T.Wadi committed
#include "menu.h"
T.Wadi's avatar
T.Wadi committed
#include "list.h"
T.Wadi's avatar
T.Wadi committed

#define NUMBER_OF_MENU_ITEMS 8
T.Wadi's avatar
T.Wadi committed
unsigned int countCDs = 0;
T.Wadi's avatar
T.Wadi committed
sCD *first = NULL;
sCD *last = NULL;
T.Wadi's avatar
T.Wadi committed
void createCD()
{
    if (countCDs == MAXCDS)
    {
        puts("Maximum number of cds reached!");
        exit(0);
    }

    clearScreen();
    puts("Erfassung einer neuen CD");
    printLine('=', 50);
T.Wadi's avatar
T.Wadi committed
    sCD *CDData = calloc(1, sizeof(sCD));
T.Wadi's avatar
T.Wadi committed
    if (!CDData)
        exit(0);
T.Wadi's avatar
T.Wadi committed
    (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);
T.Wadi's avatar
T.Wadi committed
    puts("Geben Sie bitte die Daten der Lieder ein:");
T.Wadi's avatar
T.Wadi committed
    creatSong(CDData);
T.Wadi's avatar
T.Wadi committed
    countCDs++;
T.Wadi's avatar
T.Wadi committed
    insertListElement(CDData);
T.Wadi's avatar
T.Wadi committed
}
T.Wadi's avatar
T.Wadi committed
void creatSong(sCD *CDData)
T.Wadi's avatar
T.Wadi committed
        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++;
T.Wadi's avatar
T.Wadi committed
    } while ((askYesOrNo("Moechten Sie noch ein weiteres Lied eingeben (j/n)?")) && ((CDData)->numberOfSongs) < MAXSONGS);
T.Wadi's avatar
T.Wadi committed
}
void editCd()
{

    puts("editCd");
    waitForEnter();
}

void deleteCD()
{
T.Wadi's avatar
T.Wadi committed
    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);
T.Wadi's avatar
T.Wadi committed
        return;
T.Wadi's avatar
T.Wadi committed
    }
    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);
T.Wadi's avatar
T.Wadi committed
    
    for (unsigned int i = 1; i < input; i++)
    {
        CDData = CDData->next;
    }
T.Wadi's avatar
T.Wadi committed

    deleteNode(&first, CDData);

T.Wadi's avatar
T.Wadi committed
    waitForEnter();
}

void searchSong()
{
    puts("deleteCd");
    waitForEnter();
}

T.Wadi's avatar
T.Wadi committed
/*void sortCDs()
T.Wadi's avatar
T.Wadi committed
{
T.Wadi's avatar
T.Wadi committed
    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;
    }
T.Wadi's avatar
T.Wadi committed
}*/
T.Wadi's avatar
T.Wadi committed
void ListCDs()
{
T.Wadi's avatar
T.Wadi committed

T.Wadi's avatar
T.Wadi committed
    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();
    }
T.Wadi's avatar
T.Wadi committed
    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
T.Wadi's avatar
T.Wadi committed
    {
T.Wadi's avatar
T.Wadi committed
        switch (choice)
T.Wadi's avatar
T.Wadi committed
        {
T.Wadi's avatar
T.Wadi committed
        case 1:
            printVoward();
            break;
        case 2:
            printReverse();
            break;
        case 3:
            break;
        default:
            choice = 0;
            break;
T.Wadi's avatar
T.Wadi committed
        }
T.Wadi's avatar
T.Wadi committed
    } while (choice == 0);
T.Wadi's avatar
T.Wadi committed

    waitForEnter();
}
T.Wadi's avatar
T.Wadi committed
void listOneSong(unsigned int j, sCD *CDData)
T.Wadi's avatar
T.Wadi committed
{
T.Wadi's avatar
T.Wadi committed
    if ((CDData)->Songs[j].artist)
T.Wadi's avatar
T.Wadi committed
    {
T.Wadi's avatar
T.Wadi committed
        printf("%.1i. %s (%s; ", (j + 1), (CDData)->Songs[j].title, (CDData)->Songs[j].artist);
        printTime((CDData)->Songs[j].duration, 1);
T.Wadi's avatar
T.Wadi committed
        puts(")");
    }
T.Wadi's avatar
T.Wadi committed
    else
T.Wadi's avatar
T.Wadi committed
    {
T.Wadi's avatar
T.Wadi committed
        printf("%.1i. %s ( ", (j + 1), (CDData)->Songs[j].title);
        printTime((CDData)->Songs[j].duration, 1);
T.Wadi's avatar
T.Wadi committed
        puts(")");
    }
}