Advertisement
akevintg

BAHAN UAS

Feb 9th, 2014
1,482
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.57 KB | None | 0 0
  1. #include<stdio.h>//dipake printf,scanf,FILE,dkknya
  2. #include<Windows.h>//Dipake Sleep(xxx), system("cls")
  3. #include<string.h>//dipake strcmp
  4.  
  5. struct data{
  6.     char al[30];//album
  7.     char ar[30];//artist
  8.     int rk;//rank
  9. };
  10.  
  11. int x;//no array <<Var Global
  12. int count=0;//jumlah array <<Var Global
  13. int answer;//tanggapan user <<Var Global
  14.  
  15. data dt[20];
  16.  
  17. void home();
  18. void input();
  19. void save();
  20. void del();
  21. void effect();
  22. void sortal();//sort album
  23. void sortar();//sort artist
  24. void sortrk();//sort year
  25. void trade();
  26. void sortm();//sort menu
  27. void edit();
  28. int search();
  29.  
  30. //^ dari void home sampai int search adalah Function Prototype
  31.  
  32. int main(){
  33.     x=1;
  34.     FILE *a;
  35.     a=fopen("data.txt","r");
  36.     printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  37.     if (a==NULL)
  38.         printf("FILE TIDAK DITEMUKAN, Membuat data Baru");
  39.     else{
  40.     while(!feof(a)){
  41.         fscanf(a,"%d. \"%[^\"]\", %[^\n]s\n",&dt[x].rk,dt[x].al,dt[x].ar);
  42.         x++;
  43.         count++;
  44.     }
  45.     fclose(a);
  46.     printf("Selamat Datang di\nPERSONAL MUSIC CHART\nData Berhasil di Buka\nTekan <enter>\n");
  47.     }getchar();
  48.     home();
  49. }
  50.  
  51. void save(){
  52.     FILE *a;
  53.     a=fopen("data.txt","w");
  54.     x=1;
  55.     do{
  56.         fprintf(a,"%d. \"%s\", %s",dt[x].rk,dt[x].al,dt[x].ar);
  57.         x++;
  58.         if(x!=count+1)
  59.             fprintf(a,"\n\n");
  60.     }while (x<=count);
  61.     fclose(a);
  62.     Sleep(700);
  63.     printf("\n\nData Berhasil Disimpan\nPROGRAM AKAN DITUTUP \n");
  64.     Sleep(1000);
  65. }
  66.  
  67. void home(){
  68.     system("cls");
  69.     x=1;
  70.     printf("TOP ALBUM\n=================================\n\n");
  71.     printf("---------------------------------------------------------\n");
  72.     printf("Rnk|Album\t\t     |Artist\t\t\t|\n");
  73.     printf("---------------------------------------------------------\n");
  74.     do{
  75.         printf("%3d|%25s|%26s|\n",dt[x].rk,dt[x].al,dt[x].ar);
  76.         x++;
  77.     }while(x<=count);
  78.     printf("---------------------------------------------------------\n\n");
  79.     printf("MENU :\n1. Input New Album\n2. Delete Album\n3. Sort Album\n4. Save and Exit\n5. Edit\nMasukan Input : ");
  80.     scanf("%d",&answer);fflush stdin;
  81.     switch(answer){
  82.         case 1:
  83.             input();break;
  84.         case 2:
  85.             del();break;
  86.         case 3:
  87.             sortm();break;
  88.         case 4:
  89.             save();break;
  90.         case 5:
  91.             edit();break;
  92.         default:
  93.             printf("Input Error");getchar();
  94.             home();
  95.             break;
  96.     }
  97. }
  98.  
  99. int search(){
  100.     int flag=0;//tanda no array maan yg dicari
  101.     char search[30];
  102.     printf("Masukan Nama Album : ");
  103.     scanf("%[^\n]",search);fflush stdin;
  104.     x=1;//search dari awal yg namanya sama
  105.     do{
  106.         if((strcmp(search,dt[x].al))==0){
  107.             flag=x;
  108.             break;
  109.         }
  110.         else
  111.             x++;
  112.     }while(x<=count);
  113.     if (flag==0){
  114.         printf("Data tidak ditemukan kembali ke menu utama\n");getchar();home();}
  115.     return flag;
  116. }
  117.  
  118.  
  119. void edit(){
  120.     system("cls");
  121.     printf("EDIT MENU\n=================================\n");
  122.     x=search();
  123.     printf("Masukan Nama Album yang benar : ");
  124.     scanf("%[^\n]",dt[x].al);fflush stdin;
  125.     printf("Masukan Nama Artist yang benar : ");
  126.     scanf("%[^\n]",dt[x].ar);fflush stdin;
  127.     printf("Data Berhasil Diubah");
  128.     printf("\nKembali Ke Menu Utama");
  129.     Sleep(1000);
  130.     home();
  131. }
  132.  
  133. void input(){
  134.     system("cls");
  135.     printf("INPUT MENU\n=================================\n*Semua Data baru akan dimasukan ke rank terakhir\n");
  136.     printf("Masukan Nama Album :");
  137.     scanf("%[^\n]",dt[count+1].al);fflush stdin;
  138.     printf("Masukan Nama Artist :");
  139.     scanf("%[^\n]",dt[count+1].ar);fflush stdin;
  140.     count++;
  141.     dt[count].rk=count;
  142.     home();
  143. }
  144.  
  145. void trade(int a){//Passing By Value(int a), boleh juga kalo mau pake passing by refernce (*x/*flag)<<tergantung dari function apa
  146.     data temp;
  147.     temp=dt[a];
  148.     dt[a]=dt[a+1];
  149.     dt[a+1]=temp;
  150. }
  151.  
  152. void del(){
  153.     system("cls");
  154.     printf("DELETE MENU\n=================================\n*rank akan disesuaikan\n");
  155.     x=search();
  156.     do{
  157.         trade(x);
  158.         dt[x].rk--;//menyesuaikan rank baru
  159.         x++;
  160.     }while(x<count);//pertukaran sampai data yg di hapus pindah ke array terakhir
  161.     count--;
  162.     effect();
  163. }
  164.  
  165. void sortm(){
  166.     system("cls");
  167.     printf("SORT MENU\n=================================\n*semua sort akan dilakukan secara Ascending\n");
  168.     printf("Lakukan Sort Berdasarkan : \n1. Ranking\n2. Album\n3. Artist\n");
  169.     printf("Masukan Pilihan : ");
  170.     scanf("%d",&answer);fflush stdin;
  171.     switch(answer){
  172.     case 1:
  173.         sortrk();
  174.         break;
  175.     case 2:
  176.         sortal();
  177.         break;
  178.     case 3:
  179.         sortar();
  180.         break;
  181.     default:
  182.         printf("Input Error Kembali ke menu");
  183.         getchar();
  184.         home();
  185.         break;
  186.     }
  187. }
  188.  
  189. void effect(){
  190.     printf("\n\nLoading . ");
  191.     Sleep(100);
  192.     printf(". ");
  193.     Sleep(300);
  194.     printf(". ");
  195.     Sleep(500);
  196.     printf(". ");
  197.     Sleep(300);
  198.     printf("DONE, Kembali ke menu");
  199.     Sleep(500);
  200.     home();
  201.  
  202. }
  203.  
  204. void sortrk(){
  205.     x=1;
  206.     do{
  207.         if(dt[x].rk>dt[x+1].rk){
  208.             trade(x);
  209.             x=1;
  210.         }
  211.         else
  212.             x++;
  213.     }while(x<count);
  214.     effect();
  215. }
  216.  
  217. void sortal(){
  218.     x=1;
  219.     do{
  220.         if((strcmp(dt[x].al,dt[x+1].al))>0){
  221.             trade(x);
  222.             x=1;
  223.         }
  224.         else
  225.             x++;
  226.     }while(x<count);
  227.     effect();
  228. }
  229.    
  230. void sortar(){
  231.     x=1;
  232.     do{
  233.         if((strcmp(dt[x].ar,dt[x+1].ar))>0){
  234.             trade(x);
  235.             x=1;
  236.         }
  237.         else
  238.             x++;
  239.     }while(x<count);
  240.     effect();
  241. }
  242.    
  243. // saran
  244. // 1. biar ga pusing pake var global aja guna menghindari pass by reff/pass by value
  245. // 2. kalo mau enak menu utama jangan di int main tapi di function tersendiri(contoh di atas void home)
  246. // 3. kalo mau baca string yg terpisah scanf("%[^\n]",blabla) ga usah pake %s
  247. // 4. cara baca data dari file @makan#minum itu "@%[^#]#\n" pake @ didepan berati baru dibaca setelah lambang @ pake \n buat baca data di line berikutnya
  248. // 5. untuk memudahkan sort yg bermacam-macam bisa buat function sendiri dalam contoh "void trade(int a)"
  249. // kalo ada pertanyaan bisa tanya gw kalo mau ^_^ SUKSES YAAA 01 PRT ALGONYA
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement