Advertisement
weeez

másikzsolt

Mar 28th, 2015
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.90 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <errno.h> //perror, errno
  5.  
  6. void list_bikes(int station_id){
  7.         printf("ID\tS_ID\tSTATUS\n");
  8.         FILE *f;
  9.         f = fopen("OP_BIKE", "r");
  10.     if (f==NULL){perror("File opening error\n"); exit(1);}
  11.     char line[160];
  12.     int bike_id;
  13.     int bike_station_id;
  14.     char status[50];
  15.     while (!feof(f))
  16.         {
  17.                 fgets(line,sizeof(line),f);
  18.         sscanf(line,"%d %d %s",&bike_id,&bike_station_id,status);
  19.                         if(station_id == 0 || station_id == bike_station_id)
  20.                         {
  21.                                 printf("%s",line);
  22.             }
  23.         }
  24.         printf("\n");
  25.         fclose(f);
  26. }
  27.  
  28. void list_rents(char* username){
  29.         printf("ID\tNAME\tACTION\t\tTIME\n");
  30.         FILE *f;
  31.         f = fopen("OP_BIKE.RENT", "r");
  32.     if (f==NULL){perror("File opening error\n"); exit(1);}
  33.         int bike_id;
  34.         char user_name[50];
  35.         char user_action[50];
  36.         char action_time[5];
  37.         char all[] = "all_";
  38.        char line[160];
  39.        while (!feof(f))
  40.         {
  41.                 fgets(line,sizeof(line),f);
  42.                 sscanf(line,"%d %s %s %s",&bike_id,user_name,user_action,action_time);
  43.                 if(strcmp(user_name, username) == 0 || strcmp(all, username) == 0 )
  44.                 {
  45.                         printf("%s",line);
  46.                 }    
  47.         }
  48.        printf("\n");
  49.        fclose(f);
  50. }
  51.  
  52. void add_bike()
  53. {
  54.         FILE *f;
  55.         f = fopen("OP_BIKE","a+");
  56.        
  57.         int bike_id;
  58.         int bike_station_id;
  59.         char status[50];
  60.        
  61.         printf("Add meg a bicikli adatait:");
  62.         printf("\nBicikli azonositoja:\t");
  63.         scanf("%d",&bike_id);
  64.         printf("\nAllomas azonositoja:\t");
  65.         scanf("%d",&bike_station_id);
  66.         printf("\nBicikli statusza:\t");
  67.         scanf("%s",status);
  68.        
  69.         fprintf(f,"%d\t%d\t%s",bike_id, bike_station_id, status);
  70.        
  71.         fclose(f);
  72.         printf("Bicikli hozzaadva\r\n");
  73. }
  74.  
  75. void copy_file(const char *from,const char *to)
  76. {
  77.         FILE *f;
  78.         FILE *temp;
  79.         f = fopen(from,"r");
  80.         temp = fopen(to,"w");
  81.         int length;
  82.         char line[160];
  83.         while(fgets(line,sizeof(line),f) != NULL)
  84.         {
  85.                 length = strlen(line);
  86.                 printf("%d ,",length);
  87.                 if( strcmp(" ",line) != 0){
  88.                         fputs(line,temp);      
  89.                 }
  90.         }
  91.        
  92.         fclose(f);
  93.         fclose(temp);
  94.        
  95.         remove("TEMP");
  96. }
  97.  
  98. void delete_wrong_bikes()
  99. {
  100.         FILE *f;
  101.         FILE *temp;
  102.         f = fopen("OP_BIKE","r");
  103.         temp = fopen("TEMP","w");
  104.         char line[160];
  105.        
  106.         while(fgets(line,sizeof(line),f) != NULL)
  107.         {
  108.                 int bike_id;
  109.                 int bike_station_id;
  110.                 char status[50];
  111.                 char wrong[] = "rossz";
  112.  
  113.                 sscanf(line,"%d %d %s",&bike_id,&bike_station_id,status);
  114.                 if( strcmp(status,wrong) != 0 )
  115.                 {
  116.                         fputs(line,temp);
  117.                 }
  118.         }
  119.        
  120.         printf("Sikeres törles\n");
  121.         //remove("OP_BIKE");
  122.         //rename("TEMP","OP_BIKE");
  123.  
  124.         fclose(f);
  125.         fclose(temp);
  126.  
  127.         copy_file("TEMP","OP_BIKE");
  128. }
  129.  
  130. void rent_or_return_bike(int i, char* username,char* action_time)
  131. {
  132.         FILE *f;
  133.         FILE *temp;
  134.         f = fopen("OP_BIKE","r");
  135.         temp = fopen("TEMP","w");
  136.         char line[160];
  137.         int station_index;
  138.         char status_at_i[50];
  139.         int found = 0;
  140.         while(fgets(line,sizeof(line),f) != NULL)
  141.         {
  142.                 int bike_id;
  143.                 int bike_station_id;
  144.                 char status[50];
  145.  
  146.                 sscanf(line,"%d %d %s",&bike_id,&bike_station_id,status);
  147.                 if(i != bike_id)
  148.                 {
  149.                         fputs(line,temp);
  150.                 }
  151.                 else
  152.                 {
  153.                         if(strcmp("rossz",status) != 0)
  154.                         {
  155.                                 found = 1;
  156.                                 station_index = bike_station_id;
  157.                                 strcpy(status_at_i,status);
  158.                         }
  159.                 }
  160.         }
  161.         remove("OP_BIKE");
  162.         rename("TEMP","OP_BIKE");
  163.  
  164.         fclose(f);
  165.         fclose(temp);
  166.        
  167.         if(found == 1)
  168.         {
  169.                 FILE *f1;
  170.                 FILE *f2;
  171.                 f1 = fopen("OP_BIKE","a");
  172.                 f2 = fopen("OP_BIKE.RENT","a");
  173.                 if (strcmp(status_at_i,"szabad") != 0){
  174.                         fprintf(f1,"\n%d\t%d\t%s",i, station_index, "szabad");
  175.                         fprintf(f2,"\n%d\t%s\t%s\t%s",i, username, "visszahozas", action_time);
  176.                         printf("Sikeres visszavétel\n");
  177.                 } else {
  178.                         fprintf(f1,"\n%d\t%d\t%s",i, station_index, "foglalt");
  179.                         fprintf(f2,"\n%d\t%s\t%s\t%s",i, username, "kolcsonzes", action_time);
  180.                         printf("Sikeres kölcsönzés\n");
  181.                 }
  182.                 fclose(f1);
  183.                 fclose(f2);
  184.         }
  185.         else
  186.         {
  187.                 printf("Nem található szabad bicikli.\n");
  188.         }
  189.         printf("\n");  
  190. }
  191.  
  192. int main()
  193. {
  194.         int exit = 0;
  195.         char c = '0';
  196.         while(exit != 'E'){
  197.                 printf("1. Kerékpárok teljes listázása\n");
  198.                 printf("2. Egy állomás kerékpárjainak listázása\n");
  199.                 printf("3. Rossz kerékpárok törlése\n");
  200.                 printf("4. Új hozzáadása\n");
  201.                 printf("5. Kölcsönzése // Visszahozása\n");
  202.                 printf("6. Kölcsönzések teljes listázása\n");
  203.                 printf("7. Egy személy kölcsönzésének listázása\n");
  204.                 printf("E. Kilépés\n\n");
  205.                 scanf("%s", &c);
  206.                 char name[50];
  207.                 char time[50];
  208.                 char all[5] = "all_";
  209.                 int i;
  210.                
  211.                 switch(c){
  212.                         case '1':
  213.                                 list_bikes(0);
  214.                                 break;
  215.                         case '2':
  216.                                 printf("\nÁllomás azonosítóját: ");
  217.                                 scanf("%d", &i);
  218.                                 list_bikes(i);
  219.                                 break;
  220.                         case '3':
  221.                                 delete_wrong_bikes();
  222.                                 break;
  223.                         case '4':
  224.                                 add_bike();
  225.                                 break;
  226.                         case '5':
  227.                                 printf("\nBicikli azonosítóját: ");
  228.                                 scanf("%d", &i);
  229.                                 printf("\nAdja meg a felhasználónevét: ");
  230.                                 scanf("%s", name);
  231.                                 printf("\nAdja meg a kölcsönzés vagy a visszavitel idejét (oo:pp): ");
  232.                                 scanf("%s", time);
  233.                                 rent_or_return_bike(i, name, time);    
  234.                                 break;
  235.                         case '6':
  236.                                 list_rents(all);
  237.                                 break;
  238.                         case '7':
  239.                                 printf("\nAdja meg a felhasználónevét: ");
  240.                                 scanf("%s", name);
  241.                                 list_rents(name);
  242.                                 break;
  243.                         case 'E':
  244.                                 exit = 'E';
  245.                                 break;
  246.                 }
  247.         }
  248.        
  249.         return 0;
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement