cds.c 5.52 KiB
#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));
(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);
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(")");
}
}