#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h>  typedef struct { char nama[20]; char noreg[20]; float tugas; float UTS; float UAS; }siswa;  char menu(); void inputdata(siswa *); void inputnilai(siswa *); void editdata(siswa *); void editnilai(siswa *); void cetakdata(siswa *); void cetakdata2(siswa *); float NilaiAkhir(float, float,float); void ubahdata(siswa *,int,siswa); void tampilanubahdata(siswa *); int max;  float NilaiAkhir(float t,float uts,float uas){ return(0.3*t+0.3*uts+0.4*uas); }  int main(){ int i; siswa mahasiswa[20]; char pilihan='0'; for(i=0;i<20;i++){ strcpy(mahasiswa[i].nama,""); strcpy(mahasiswa[i].noreg,""); mahasiswa[i].tugas = -1; mahasiswa[i].UTS = -1; mahasiswa[i].UAS = -1; }  do{ pilihan=menu(); if(pilihan=='1'){ inputdata(mahasiswa);} else if(pilihan=='2'){ inputnilai(mahasiswa);} else if(pilihan=='3'){ tampilanubahdata(mahasiswa);} else if(pilihan=='4'){ editnilai(mahasiswa);} else if(pilihan=='5'){ cetakdata(mahasiswa);} else if(pilihan=='6'){ cetakdata2(mahasiswa);} } while(pilihan!='7'); return 0; }  char menu(){ char pilih; system("cls"); printf("PROGRAM PENYIMPAN DATA MAHASISWA\n\n"); printf("1. Input Data Mahasiswa \n"); printf("2. Input Nilai Mahasiswa \n"); printf("3. Edit Data Mahasiswa \n"); printf("4. Edit Nilai Mahasiswa \n"); printf("5. Cetak Nilai Mahasiswa \n"); printf("6. Cetak Nilai Mahasiswa Perorangan\n"); printf("7. Exit \n\n"); printf("Silakan pilih (1/2/3/4/5/6/7) : "); scanf("%c",&pilih); return pilih; }  void inputdata(siswa *mahasiswa){ int i; system("cls"); printf("INPUT DATA\n\n"); printf("Input Jumlah Mahasiswa : ");scanf("%d",&max); system("cls"); printf("INPUT DATA\n\n"); printf("Jumlah Maksimum Siswa : %d\n\n",max); for(i=0;i<max;i++){ printf("Masukkan nama mahasiswa ke %d : ",i+1);scanf(" %[^\n^]",&mahasiswa[i].nama); printf("Masukkan noreg mahasiswa ke %d : ",i+1);scanf(" %[^\n^]",&mahasiswa[i].noreg); printf("\n"); } }  void inputnilai(siswa *mahasiswa){ int i; system("cls"); printf("INPUT NILAI\n\n"); for(i=0;i<max;i++){ printf("Nilai Tugas Mahasiswa ke %d : ",i+1);scanf(" %f",&mahasiswa[i].tugas); printf("Nilai UTS Mahasiswa ke %d : ",i+1);scanf(" %f",&mahasiswa[i].UTS); printf("Nilai UAS Mahasiswa ke %d : ",i+1);scanf(" %f",&mahasiswa[i].UAS); printf("\n"); } system("pause"); }  void editdata(siswa *mahasiswa){ int i=0; system("cls"); printf("EDIT DATA\n\n"); printf("Data ke berapa yang akan diganti (Tekan 0 untuk batal)? : ");scanf("%d",&i); if(i<=0){ menu(); }else if(i>max){ system("cls"); printf("MAKSIMAL MAHASISWA ADALAH %d, HARAP INPUT DATA YANG BENAR",max); getch(); }else{ system("cls"); printf("EDIT DATA\n\n"); printf("SILAHKAN MASUKKAN DATA \n\n"); printf("Nama Mahasiswa ke %d : ",i);scanf(" %[^\n^]",&mahasiswa[i-1].nama); printf("Noreg Mahasiswa ke %d : ",i);scanf(" %[^\n^]",&mahasiswa[i-1].noreg); } }  void editnilai(siswa *mahasiswa){ int i=0; system("cls"); printf("EDIT NILAI\n\n"); printf("Data ke berapa yang akan diganti (Tekan 0 untuk batal)? : ");scanf("%d",&i); if(i<=0){ menu(); }else if(i>max){ system("cls"); printf("MAKSIMAL MAHASISWA ADALAH %d, HARAP INPUT DATA YANG BENAR",max); getch(); }else{ system("cls"); printf("EDIT NILAI\n\n"); printf("SILAHKAN MASUKKAN NILAI \n\n"); printf("Nilai Tugas Mahasiswa ke %d : ",i);scanf(" %f",&mahasiswa[i].tugas); printf("Nilai UTS Mahasiswa ke %d : ",i);scanf(" %f",&mahasiswa[i].UTS); printf("Nilai UAS Mahasiswa ke %d : ",i);scanf(" %f",&mahasiswa[i].UAS); } }  void cetakdata(siswa *mahasiswa){ int i; int z=1; system("cls"); printf("CETAK DATA\n\n"); printf("%-3s%-12s%-30s%-8s%-8s%-8s%-8s\n","No","No.Reg","Nama","Tugas","UTS","UAS","Akhir"); printf("===============================================================================\n"); for(i=0;i<max;i++){ printf("%-3d",z++); printf("%-12s",mahasiswa[i].noreg); printf("%-30s",mahasiswa[i].nama); printf("%-8.2f",mahasiswa[i].tugas); printf("%-8.2f",mahasiswa[i].UTS); printf("%-8.2f",mahasiswa[i].UAS); printf("%-8.2f",NilaiAkhir(mahasiswa[i].tugas,mahasiswa[i].UTS,mahasiswa[i].UAS)); printf("\n"); } getch(); }  void cetakdata2(siswa *mahasiswa){ int i; system("cls"); printf("Cetak data mahasiswa ke (Tekan 0 untuk batal) = ");scanf("%d",&i); if(i<=0){ menu(); }else if(i>max){ system("cls"); printf("MAKSIMAL MAHASISWA ADALAH %d, HARAP INPUT DATA YANG BENAR",max); getch(); }else{ system("cls"); printf("Data Mahasiswa ke %d\n\n",i); printf("%-12s%-30s%-8s%-8s%-8s%-8s\n","No.Reg","Nama","Tugas","UTS","UAS","Akhir"); printf("===============================================================================\n"); printf("%-12s",mahasiswa[i-1].noreg); printf("%-30s",mahasiswa[i-1].nama); printf("%-8.2f",mahasiswa[i-1].tugas); printf("%-8.2f",mahasiswa[i-1].UTS); printf("%-8.2f",mahasiswa[i-1].UAS); printf("%-8.2f",NilaiAkhir(mahasiswa[i-1].tugas,mahasiswa[i-1].UTS,mahasiswa[i-1].UAS)); } getch(); }  void tampilanubahdata(siswa *mhs){ int idx;//Deklarasi index, untuk menyimpan no urut data yg akan diubah siswa mBaru;//Deklarasi variabel mBaru, untuk menampung data baru system("cls"); //Input data baru printf("DATA BARU\n"); printf("Nama Mahasiswa : ");scanf(" %[^\n^]",&mBaru.nama); printf("Noreg Mahasiswa : ");scanf(" %[^\n^]",&mBaru.noreg); printf("Nilai Tugas Mahasiswa : ");scanf(" %f",&mBaru.tugas); printf("Nilai UTS Mahasiswa : ");scanf(" %f",&mBaru.UTS); printf("Nilai UAS Mahasiswa : ");scanf(" %f",&mBaru.UAS); printf("Index data yang akan diubah : ");scanf("%d",&idx); //Panggil fungsi ubah data ubahdata(mhs,idx,mBaru); getch(); }  void ubahdata(siswa *mhs,int idx,siswa mBaru){ //Ubah masing-masing elemen ke idx-1 mhs dengan //elemen-elemen mBaru strcpy(mhs[idx-1].nama,mBaru.nama); strcpy(mhs[idx-1].noreg,mBaru.noreg); mhs[idx-1].tugas = mBaru.tugas; mhs[idx-1].UTS = mBaru.UTS; mhs[idx-1].UAS = mBaru.UAS; }