Advertisement
akevintg

MATERI UAP III (CLIENT)

Jan 20th, 2016
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.81 KB | None | 0 0
  1. //LINK : https://www.dropbox.com/s/8z3yo9b72hd17i1/Screen%20Shot%202016-01-21%20at%2011.29.16%20AM.png?dl=0
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <stdlib.h>
  6. #include <ctype.h>
  7. #include <string.h>
  8. #include <sys/types.h>
  9. #include <sys/sem.h>
  10. #include <sys/shm.h>
  11. #include <sys/ipc.h>
  12.  
  13. struct data{
  14.     char nama_pelanggan[20];
  15.     char gender[10];
  16.     char majalah[100];
  17.     int bulan;
  18.     char alamat[100];
  19. };
  20.  
  21. int main(){
  22.     struct sembuf s;
  23.     int h=shmget(123456,sizeof(struct data),IPC_CREAT|0666);
  24.     int e=semget(123456,1,IPC_CREAT|0666);
  25.     struct data *langananan=(struct data*)shmat(h,NULL,0666);
  26.     int flag=0,i;
  27.     printf("\n===================================\nPROGRAM PENDAFTARAN MAJALAH-CLIENT\n===================================\n\n");
  28.     do{
  29.         do{
  30.             flag=0;
  31.             printf("Masukan Nama [5..15][EXIT to close] : ");
  32.             scanf("%[^\n]",langananan->nama_pelanggan);getchar();
  33.             if(strcasecmp(langananan->nama_pelanggan,"exit")==0)
  34.                 break;
  35.             else if(strlen(langananan->nama_pelanggan)>=5&&strlen(langananan->nama_pelanggan)<=15)
  36.                 flag=1;
  37.             for(i=0;i<strlen(langananan->nama_pelanggan);i++){
  38.                 if(isdigit(langananan->nama_pelanggan[i]))
  39.                     flag=0;
  40.             }
  41.         }while(flag==0);
  42.         if(strcasecmp(langananan->nama_pelanggan,"exit")!=0){
  43.             do{
  44.                 flag=0;
  45.                 printf("Masukan Gender [Male|Female] : ");
  46.                 scanf("%[^\n]",langananan->gender);getchar();
  47.                 if(strcasecmp(langananan->gender,"Male")==0||strcasecmp(langananan->gender,"Female")==0)
  48.                     flag=1;
  49.             }while(flag==0);
  50.             do{
  51.                 flag=0;
  52.                 printf("Pilih Majalah [TIME|National Geographic|Femina](case sesnitive): ");
  53.                 scanf("%[^\n]",langananan->majalah);getchar();
  54.                 if(strcmp(langananan->majalah,"TIME")==0||strcmp(langananan->majalah,"National Geographic")==0||strcmp(langananan->majalah,"Femina")==0)
  55.                     flag=1;
  56.             }while(flag==0);
  57.             do{
  58.                 flag=0;
  59.                 printf("Periode Langganan[3...24 bulan](Kelipatan 3 Bulan): ");
  60.                 scanf("%d",&langananan->bulan);getchar();
  61.                 if(langananan->bulan%3==0&&langananan->bulan>=3&&langananan->bulan<=24)
  62.                     flag=1;
  63.             }while(flag==0);
  64.             do{
  65.                 flag=0;
  66.                 printf("Masukan Alamat [diakhiri dengan Street): ");
  67.                 scanf("%[^\n]",langananan->alamat);getchar();
  68.                 int j=strlen(langananan->alamat);
  69.                 if(j>8){
  70.                     if(langananan->alamat[j-6]=='S'&&langananan->alamat[j-5]=='t'&&
  71.                         langananan->alamat[j-4]=='r'&&langananan->alamat[j-3]=='e'&&
  72.                         langananan->alamat[j-2]=='e'&&langananan->alamat[j-1]=='t')
  73.                         flag=1;
  74.                 }
  75.             }while(flag==0);
  76.             printf("\nMasukan Data\n");
  77.         }
  78.         else{
  79.             printf("\nExiting Program\n");
  80.         }
  81.         s.sem_num=0;
  82.         s.sem_op=1;
  83.         s.sem_flg=0;
  84.         semop(e,&s,1);
  85.         printf("<Press Enter>");
  86.         getchar();
  87.         printf("\n");
  88.     }while(strcasecmp(langananan->nama_pelanggan,"exit")!=0);
  89.     shmdt(&langananan);
  90.     shmctl(h,IPC_RMID,0);
  91.     semctl(e,0,IPC_RMID);
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement