cds.c 5.16 KiB
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "datastructure.h"
#include "cds.h"
#include "tools.h"
#include "datetime.h"
#include "sort.h"
#include "menu.h"
#define NUMBER_OF_MENU_ITEMS 8
unsigned int countCDs = 0;
sCD CDData[MAXCDS];
void createCD()
{
if (countCDs == MAXCDS)
{
puts("Maximum number of cds reached!");
exit(0);
}
clearScreen();
puts("Erfassung einer neuen CD");
printLine('=', 50);
(CDData + countCDs)->numberOfSongs = 0;
getText("Geben Sie bitte den Titel der CD ein:", 35, &(CDData + countCDs)->title, 0);
getText("Geben Sie bitte den Interpreten ein:", 35, &(CDData + countCDs)->artist, 1);
getNumber("Geben Sie bitte das Erscheinungsjahr ein:", &(CDData + countCDs)->publicationYear, 1982, 2022);
puts("Geben Sie bitte die Daten der Lieder ein:");
creatSong();
countCDs++;
}
void creatSong()
{
do
{
printf("Lied %i:\n", ((CDData + countCDs)->numberOfSongs) + 1);
getText("Geben Sie bitte den Titel des Liedes ein:", 35, &(CDData + countCDs)->Songs[(CDData + countCDs)->numberOfSongs].title, 0);
getText("Geben Sie bitte den Interpreten ein:", 35, &(CDData + countCDs)->Songs[(CDData + countCDs)->numberOfSongs].artist, 1);
inputTime("Geben Sie bitte die Dauer des Liedes ein\n (Format hh:mm:ss oder mm:ss):\n -> ", &(CDData + countCDs)->Songs[(CDData + countCDs)->numberOfSongs].duration);
(CDData + countCDs)->numberOfSongs++;
} while ((askYesOrNo("Moechten Sie noch ein weiteres Lied eingeben (j/n)?")) && ((CDData + countCDs)->numberOfSongs) < MAXSONGS);
}
void editCd()
{
puts("editCd");
waitForEnter();
}
void deleteCD()
{
puts("deleteCd");
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()
{
int gesamtLaufZeit = 0;
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();
}
for (unsigned int i = 0; i < countCDs; i++)
{
putchar('\n');
printf("Titel : %s\n", (CDData + i)->title);
if ((CDData + i)->artist)
printf("artist : %s\n", (CDData + i)->artist);
printf("Erscheinungsjahr : %i\n", (CDData + i)->publicationYear);
printf("Anzahl Lieder : %i\n", (CDData + i)->numberOfSongs);
puts("Lieder");
for (unsigned int j = 0; j < (CDData + i)->numberOfSongs; j++)
{
listOneSong(i, j);
gesamtLaufZeit += durationConverter((CDData + i)->Songs[j].duration);
}
addTime(gesamtLaufZeit);
gesamtLaufZeit = 0;
}
waitForEnter();
}
void listOneSong(unsigned int i, unsigned int j)
{
if ((CDData + i)->Songs[j].artist)
{
printf("%.1i. %s (%s; ", (j + 1), (CDData + i)->Songs[j].title, (CDData + i)->Songs[j].artist);
printTime((CDData + i)->Songs[j].duration, 1);
puts(")");
}
else
{
printf("%.1i. %s ( ", (j + 1), (CDData + i)->Songs[j].title);
printTime((CDData + i)->Songs[j].duration, 1);
puts(")");
}
}