Song management system-provides functions such as reading, writing, browsing, sorting, searching, and deleting songs in files.
# Include "stdio. H "<br/> # include" stdlib. H "<br/> # include" malloc. H "<br/> # include" string. H "<br/> int I = 0; <br/> struct song/* struct array */<br/> {<br/> char writer [20]; <br/> char singer [20]; <br/> char time [20]; <br/> char name [20]; <br/>} son [100]; </P> <p>/* the following are the Input Functions */<br/> void enter () <br/> {<br/> Int J; <br/> char C [2]; <br/> file * FP; <br/> If (FP = fopen ("data.txt", "W ")) = NULL)/* open the file in write mode, and determine whether to read the file */<br/> {<B R/> printf ("the file cannot be opened! /N "); <br/> exit (0); <br/>}< br/> for (j = 0; j <I; j ++) <br/>{< br/> fwrite (& Son [J], sizeof (struct song), 1, FP);/* data block output function, used to output data to a disk file */<br/>}< br/> while (1) <br/>{< br/> printf ("Enter the publisher: /n "); <br/> scanf (" % s ", son [I]. writer); <br/> printf ("Enter the song name:/N"); <br/> scanf ("% s", son [I]. name); <br/> printf ("Enter ARTIST:/N"); <br/> scanf ("% s", son [I]. singer); <br/> printf ("Enter the release date:/N"); <br/> scanf ("% s", son [I]. time); <br/> If (fwrite (& Son [I ++], sizeof (struct song), 1, FP )! = 1) // write the file <br/> printf ("file write error! /N "); <br/> else <br/> printf (" successful! /N "); <br/> printf (" do you want to continue inputting? (Yes [y]/No [N])/n "); <br/> scanf (" % s ", c); <br/> If (strcmp (C, "N") = 0) <br/> break; <br/>}< br/> fclose (FP ); <br/>}< br/> int CMP (const void * a, const void * B) <br/>{< br/> return strcmp (SONG *) a)-> name, (SONG *) B)-> name); <br/>}< br/> void sort () <br/>{< br/> Int J, V; <br/> file * FP; <br/> fp = fopen ("data.txt", "rb "); <br/> for (j = 0; j <100; j ++) <br/> {<br/> If (fread (& Son [J], sizeof (struct song), 1, FP )! = 1) <br/> break; <br/>}< br/> V = J; <br/> fclose (FP); <br/> qsort (son, j, sizeof (son [0]), CMP); <br/> fp = fopen ("data.txt", "WB"); <br/> for (j = 0; j <v; j ++) <br/>{< br/> fwrite (& Son [J], sizeof (struct song), 1, FP ); <br/>}< br/> fclose (FP); <br/> printf ("sorting completed! /N "); <br/>}< br/>/* The following is the deletion module */<br/> void del () <br/>{< br/> Int J, V, C; <br/> char W [20]; <br/> file * FP; <br/> printf ("enter the name of the file you want to delete:"); <br/> scanf ("% s", W ); <br/> fp = fopen ("data.txt", "rb"); <br/> for (j = 0; j <100; j ++) <br/>{< br/> If (fread (& Son [J], sizeof (struct song), 1, FP )! = 1) <br/> break; <br/>}< br/> V = J; <br/> for (j = 0; j <v; j ++) <br/>{< br/> If (strcmp (W, son [J]. name) = 0) <br/>{< br/> C = J; <br/> break; <br/>}< br/> fclose (FP); <br/> fp = fopen ("data.txt", "WB "); <br/> for (j = 0; j <v; j ++) <br/>{< br/> If (J! = C) <br/> fwrite (& Son [J], sizeof (struct song), 1, FP); <br/>}< br/> fclose (FP ); <br/> printf ("deleted successfully! /N "); <br/> I --; <br/>}</P> <p>/* the following functions are used to browse */<br/> void scan () <br/>{< br/> Int J; <br/> file * FP; <br/> fp = fopen ("data.txt", "rb "); <br/> for (j = 0; j <100; j ++) <br/> {<br/> If (fread (& Son [J], sizeof (struct song), 1, FP) = 1) <br/>{< br/> printf ("song name: % s/n", son [J]. name); <br/> printf ("publisher: % s/n", son [J]. writer); <br/> printf ("singer: % s/n", son [J]. singer); <br/> printf ("Release Date: % s/n", son [J]. time); <br/> printf ("**************** **************************************** * ***** 88/N "); <br/>}< br/> else <br/> break; <br/>}< br/> fclose (FP ); <br/>}</P> <p>/* search module */<br/> void search () <br/>{< br/> int flag, j, X; <br/> char W [20]; <br/> file * FP; <br/> char V [20]; <br/> printf ("1. publisher/N "); <br/> printf (" 2. artist/N "); <br/> printf (" 3. song name/N "); <br/> printf (" Please choose which you want to search:/N "); <br/> scanf (" % d ", & X); <br/> If (x = 3) <br/> {<br /> Flag = 0; <br/> printf ("Please input the song's name:"); <br/> scanf ("% s", W ); <br/> fp = fopen ("data.txt", "rb"); <br/> for (j = 0; j <100; j ++) <br/>{< br/> If (fread (& Son [J], sizeof (struct song), 1, FP )! = 1) <br/> break; <br/> If (strcmp (son [J]. name, W) = 0) <br/> {<br/> printf ("song name: % s/n", son [J]. name); <br/> printf ("publisher: % s/n", son [J]. writer); <br/> printf ("singer: % s/n", son [J]. singer); <br/> printf ("Release Date: % s/n", son [J]. time ); <br/> printf ("/n ******************************* * ****************************/N "); <br/> flag = 1; </P> <p >}< br/> If (flag = 0) <br/> printf ("the song does not exist! /N "); <br/> fclose (FP); <br/>}< br/> else if (x = 2) <br/> {<br/> flag = 0; <br/> printf ("Enter the Artist:"); <br/> scanf ("% s ", v); <br/> fp = fopen ("data.txt", "rb"); <br/> for (j = 0; j <100; j ++) <br/>{< br/> If (fread (& Son [J], sizeof (struct song), 1, FP )! = 1) <br/> break; <br/> If (strcmp (son [J]. singer, v) = 0) <br/> {<br/> printf ("song name: % s/n", son [J]. name); <br/> printf ("publisher: % s/n", son [J]. writer); <br/> printf ("singer: % s/n", son [J]. singer); <br/> printf ("Release Date: % s/n", son [J]. time ); <br/> printf ("********************************* * ***********************************/n "); <br/> flag = 1; <br/>}< br/> If (flag = 0) <br/> printf ("the song does not exist! /N "); <br/> fclose (FP); <br/>}< br/> else if (x = 1) <br/> {<br/> flag = 0; <br/> printf ("Enter the publisher:"); <br/> scanf ("% s ", w); <br/> fp = fopen ("data.txt", "rb"); <br/> for (j = 0; j <100; j ++) <br/>{< br/> If (fread (& Son [J], sizeof (struct song), 1, FP )! = 1) <br/> break; <br/> If (strcmp (son [J]. writer, W) = 0) <br/> {<br/> printf ("song name: % s/n", son [J]. name); <br/> printf ("publisher: % s/n", son [J]. writer); <br/> printf ("singer: % s/n", son [J]. singer); <br/> printf ("Release Date: % s/n", son [J]. time ); <br/> printf ("********************************* * ********************************/N "); <br/> flag = 1; </P> <p >}< br/> If (flag = 0) <br/> printf ("the song does not exist! /N "); <br/> fclose (FP); <br/>}< br/> else printf (" error! /N "); <br/>}< br/> int main (void) <br/>{< br/> int A; <br/> while (1) <br/> {<br/> printf ("/n/T ****************** * Main Menu ********************/n "); <br/> printf ("/T 1. input/N "); <br/> printf ("/T 2. delete/N "); <br/> printf ("/T 3. browse/N "); <br/> printf ("/T 4. search/N "); <br/> printf ("/T 5. sort/N "); <br/> printf ("/T 6. exit/N "); <br/> printf ("/T ***************************** * *******************/N "); <br/> printf ("/n/T select a number to enter the system (1-6 ):"); <br/> scanf ("% d", & A); <br/> if (a = 0) <br/> break; <br/> switch () <br/>{< br/> case 1: Enter (); break; <br/> case 2: del (); break; <br/> case 3: scan (); break; <br/> case 4: Search (); break; <br/> case 5: Sort (); scan (); break; <br/> case 6: Return 0; <br/> default: <br/> break; <br/>}< br/> system ("pause"); <br/> return 0; <br/>}