Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>//dipake printf,scanf,FILE,dkknya
- #include<Windows.h>//Dipake Sleep(xxx), system("cls")
- #include<string.h>//dipake strcmp
- struct data{
- char al[30];//album
- char ar[30];//artist
- int rk;//rank
- };
- int x;//no array <<Var Global
- int count=0;//jumlah array <<Var Global
- int answer;//tanggapan user <<Var Global
- data dt[20];
- void home();
- void input();
- void save();
- void del();
- void effect();
- void sortal();//sort album
- void sortar();//sort artist
- void sortrk();//sort year
- void trade();
- void sortm();//sort menu
- void edit();
- int search();
- //^ dari void home sampai int search adalah Function Prototype
- int main(){
- x=1;
- FILE *a;
- a=fopen("data.txt","r");
- 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");
- if (a==NULL)
- printf("FILE TIDAK DITEMUKAN, Membuat data Baru");
- else{
- while(!feof(a)){
- fscanf(a,"%d. \"%[^\"]\", %[^\n]s\n",&dt[x].rk,dt[x].al,dt[x].ar);
- x++;
- count++;
- }
- fclose(a);
- printf("Selamat Datang di\nPERSONAL MUSIC CHART\nData Berhasil di Buka\nTekan <enter>\n");
- }getchar();
- home();
- }
- void save(){
- FILE *a;
- a=fopen("data.txt","w");
- x=1;
- do{
- fprintf(a,"%d. \"%s\", %s",dt[x].rk,dt[x].al,dt[x].ar);
- x++;
- if(x!=count+1)
- fprintf(a,"\n\n");
- }while (x<=count);
- fclose(a);
- Sleep(700);
- printf("\n\nData Berhasil Disimpan\nPROGRAM AKAN DITUTUP \n");
- Sleep(1000);
- }
- void home(){
- system("cls");
- x=1;
- printf("TOP ALBUM\n=================================\n\n");
- printf("---------------------------------------------------------\n");
- printf("Rnk|Album\t\t |Artist\t\t\t|\n");
- printf("---------------------------------------------------------\n");
- do{
- printf("%3d|%25s|%26s|\n",dt[x].rk,dt[x].al,dt[x].ar);
- x++;
- }while(x<=count);
- printf("---------------------------------------------------------\n\n");
- printf("MENU :\n1. Input New Album\n2. Delete Album\n3. Sort Album\n4. Save and Exit\n5. Edit\nMasukan Input : ");
- scanf("%d",&answer);fflush stdin;
- switch(answer){
- case 1:
- input();break;
- case 2:
- del();break;
- case 3:
- sortm();break;
- case 4:
- save();break;
- case 5:
- edit();break;
- default:
- printf("Input Error");getchar();
- home();
- break;
- }
- }
- int search(){
- int flag=0;//tanda no array maan yg dicari
- char search[30];
- printf("Masukan Nama Album : ");
- scanf("%[^\n]",search);fflush stdin;
- x=1;//search dari awal yg namanya sama
- do{
- if((strcmp(search,dt[x].al))==0){
- flag=x;
- break;
- }
- else
- x++;
- }while(x<=count);
- if (flag==0){
- printf("Data tidak ditemukan kembali ke menu utama\n");getchar();home();}
- return flag;
- }
- void edit(){
- system("cls");
- printf("EDIT MENU\n=================================\n");
- x=search();
- printf("Masukan Nama Album yang benar : ");
- scanf("%[^\n]",dt[x].al);fflush stdin;
- printf("Masukan Nama Artist yang benar : ");
- scanf("%[^\n]",dt[x].ar);fflush stdin;
- printf("Data Berhasil Diubah");
- printf("\nKembali Ke Menu Utama");
- Sleep(1000);
- home();
- }
- void input(){
- system("cls");
- printf("INPUT MENU\n=================================\n*Semua Data baru akan dimasukan ke rank terakhir\n");
- printf("Masukan Nama Album :");
- scanf("%[^\n]",dt[count+1].al);fflush stdin;
- printf("Masukan Nama Artist :");
- scanf("%[^\n]",dt[count+1].ar);fflush stdin;
- count++;
- dt[count].rk=count;
- home();
- }
- void trade(int a){//Passing By Value(int a), boleh juga kalo mau pake passing by refernce (*x/*flag)<<tergantung dari function apa
- data temp;
- temp=dt[a];
- dt[a]=dt[a+1];
- dt[a+1]=temp;
- }
- void del(){
- system("cls");
- printf("DELETE MENU\n=================================\n*rank akan disesuaikan\n");
- x=search();
- do{
- trade(x);
- dt[x].rk--;//menyesuaikan rank baru
- x++;
- }while(x<count);//pertukaran sampai data yg di hapus pindah ke array terakhir
- count--;
- effect();
- }
- void sortm(){
- system("cls");
- printf("SORT MENU\n=================================\n*semua sort akan dilakukan secara Ascending\n");
- printf("Lakukan Sort Berdasarkan : \n1. Ranking\n2. Album\n3. Artist\n");
- printf("Masukan Pilihan : ");
- scanf("%d",&answer);fflush stdin;
- switch(answer){
- case 1:
- sortrk();
- break;
- case 2:
- sortal();
- break;
- case 3:
- sortar();
- break;
- default:
- printf("Input Error Kembali ke menu");
- getchar();
- home();
- break;
- }
- }
- void effect(){
- printf("\n\nLoading . ");
- Sleep(100);
- printf(". ");
- Sleep(300);
- printf(". ");
- Sleep(500);
- printf(". ");
- Sleep(300);
- printf("DONE, Kembali ke menu");
- Sleep(500);
- home();
- }
- void sortrk(){
- x=1;
- do{
- if(dt[x].rk>dt[x+1].rk){
- trade(x);
- x=1;
- }
- else
- x++;
- }while(x<count);
- effect();
- }
- void sortal(){
- x=1;
- do{
- if((strcmp(dt[x].al,dt[x+1].al))>0){
- trade(x);
- x=1;
- }
- else
- x++;
- }while(x<count);
- effect();
- }
- void sortar(){
- x=1;
- do{
- if((strcmp(dt[x].ar,dt[x+1].ar))>0){
- trade(x);
- x=1;
- }
- else
- x++;
- }while(x<count);
- effect();
- }
- // saran
- // 1. biar ga pusing pake var global aja guna menghindari pass by reff/pass by value
- // 2. kalo mau enak menu utama jangan di int main tapi di function tersendiri(contoh di atas void home)
- // 3. kalo mau baca string yg terpisah scanf("%[^\n]",blabla) ga usah pake %s
- // 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
- // 5. untuk memudahkan sort yg bermacam-macam bisa buat function sendiri dalam contoh "void trade(int a)"
- // kalo ada pertanyaan bisa tanya gw kalo mau ^_^ SUKSES YAAA 01 PRT ALGONYA
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement