예제 #1
0
bool exit_program(){
  switch(ask_question_char("\nÄr du säker på att du vill avsluta?\n[J]a eller [N]ej _")){
  case 'J': return false; break;
  case 'N': return true; break;
  default:  return exit_program();
  }
}
예제 #2
0
파일: interface.c 프로젝트: zupercool/IOOPM
void regret_action_interf(){
	char q = ask_question_char("Är du säker på att du vill ångra senaste ändringen? ([J]a,[N]ej)","JA");
      if(q == 'J')
  {
    regret();
  }
}
예제 #3
0
파일: interface.c 프로젝트: zupercool/IOOPM
int edit_product(int index)
{
  //show product
  print_product(good[index]);
  
  struct goods tmp = good[index];


  int q = ask_question_char("\nVad vill du redigera?\n[N]amn\n[B]eskrivning\n[P]ris\n[L]agerhylla\nAn[t]al\n\n[a]vbryt","NBPLta");
  switch (q)
    {
    case 'N': 
      printf("Nuvarande namn:%s\n", good[index].name);
      char *new_name = ask_question_string("Nytt namn:",100);
      free(good[index].name);
      good[index].name = new_name;
      break;
      
    case 'B':
      printf("Nuvarande beskrivning:%s\n", good[index].desc);
      char *new_desc = ask_question_string("Ny beskrivning:",100);
      free(good[index].desc);
      good[index].desc = new_desc;
      break;
      
    case 'P':
      printf("Nuvarande pris:%d\n", good[index].price);
      int new_price = ask_question_int("Nytt pris:");
      good[index].price = new_price;
      break;
      
    case 'L':
      printf("Nuvarande lagerhylla:%s\n", good[index].place);
      char *new_place = ask_for_place("Ny lagerhylla:");
      free(good[index].place);
      good[index].place = new_place;
      break;
      
    case 't':
      printf("Nuvarande antal:%d\n", good[index].count);
      int new_count = ask_question_int("Nytt antal:");
      good[index].count = new_count;
      break;
      
    case 'a':
      
      break;
      
    default:
      edit_product(index);
      break;   
    }
  
  undo.copy = tmp;
  undo.merch = &good[index];
  undo.type = 3;
  return 0;
}
예제 #4
0
void db_autofill(db_t *db, int items){
  const char *names[] = {"Bullar", "Citron", "Deg", "Fisk", "Gurka", "Ingefära", "Jordnötter",
			 "Kaffe", "Lingon", "Mjölk", "Nudlar", "Päron", "Smör", "Tomat", NULL};
  int names_s = -1;
  while(names[++names_s]);
  const char desc[] = "Blah blah ";
  int names_usage[sizeof(names)/sizeof(char)];
  const int amounts[] = {100, 200, 300, 400, 1337};
  const int price_divider = 20;
  int c;
  for(c=0; c<names_s; c++){
    names_usage[c] = 1;
  }

  for(c=0; c<items; c++){
    ware_t ware;
    strcpy(ware.name, names[c%names_s]);
    strcpy(ware.description, desc);
    strcat(ware.description, names[c%names_s]);
    ware.amount=amounts[c%(sizeof(amounts)/sizeof(int))];
    ware.price=(amounts[c%(sizeof(amounts)/sizeof(int))]/price_divider);
    ware.storage_location=(storage_location_t){.character=*names[c%names_s],
	                                       .number=names_usage[c%names_s]++};
    db_insert_mute(db, ware);
  }
}

int main(int argc, char *argv[]){
  bool running = true;
  char input;
  ware_t wares[1024];
  db_t db = {.current_index=0, .max_index=sizeof(wares)/sizeof(ware_t), .wares=wares, .copy_index=-1};

  db_autofill(&db, 10);

  while(running){     
    input = ask_question_char("\nVälkommen till lagerhantering 1.0\n=================================\n[L]ägga till en vara\n[T]a bort en vara\n[R]edigera en vara\nÅn[g]ra senaste ändringen\nLista [h]ela varukatalogen\n[A]vsluta\n\nVad vill du göra idag? _");

    switch(input){
    case 'L': add_goods(&db); break;
    case 'T': remove_goods(&db); break;
    case 'R': edit_goods(&db); break;
    case 'G': undo_goods(&db); break;
    case 'H': list_goods(&db); break;
    case 'A': running = exit_program(); break;
    default:  puts("Okänt kommando.");
    }
  }
  return 0;
}
예제 #5
0
파일: interface.c 프로젝트: zupercool/IOOPM
void remove_product_interf()
{
  puts("Ta bort en vara");
  puts("Välj en vara att ta bort:");
  int i = list_products();
  
  if(i > 0 && i < amount){
      print_product(good[i]);
      char q = ask_question_char("Ta bort varan? [J]a,[N]ej","JN");
      if(q == 'J'){
        remove_product(i);
      }
    }
  
}
예제 #6
0
파일: interface.c 프로젝트: zupercool/IOOPM
void add_product_interf()
{
  puts("\n...Lägga till produkt...");
  char *name  =   ask_question_string("Namn: ",100);
  char *desc  =   ask_question_string("Beskrivning: ",100);
  char *place =   ask_for_place("Lagerhylla: ");

  int price = ask_question_int("Pris:");
  int count = ask_question_int("Antal:");
     
  puts("\n\nDin produkt:");
  printf("Namn: %s \n Beksrivning:%s \n Lagerhylla:%s \n Pris:%d \n Antal:%d \n", name, desc, place, price, count);
  char q = ask_question_char("Vill du lägga till varan? [J]a,[N]ej,[R]edigera","JNR");

  struct goods god=
    {
      .name  = name,
      .desc  = desc,
      .place = place,
      .price = price,
      .count = count
    };
  
  switch (q)
    {
    case 'J': 
      add_good(god);
      break;

    case 'N':
      free(name);
      free(desc);
      free(place);
      break;

    case 'R':
      add_good(god);
      edit_product(amount-1);
      break;
    }   

  // free(name);
  // free(desc);
  // free(place);
  
}
예제 #7
0
void edit_goods(db_t *db){
  bool running = true;
  int value = ask_question_int("Ange numret på den vara du vill ändra:_ ");

  if(value > db->current_index || value < 0){
    puts("Varan finns ej.");
    return;
  }

  print_ware(&db->wares[value-1]);

  db->copy_flag = EDIT;
  db->copy_ware = db->wares[value-1];
  db->copy_index = value-1;

  while(running){
    char answer = ask_question_char("Välj vad du vill redigera\n[N]amn\n[B]eskrivning\n[P]ris\n[L]agerhylla\nAn[t]al\neller [A]vbryt:_");
    switch(answer){
    case 'N':
      printf("Nuvarande namn: %s\n", db->wares[value-1].name);
      ask_question_string("Nytt namn:_", db->wares[value-1].name);
      break;
    case 'B':
      printf("Nuvarande beskrivning: %s\n", db->wares[value-1].description);
      ask_question_string("Ny beskrivning:_", db->wares[value-1].description);
      break;
    case 'P':
      printf("Nuvarande pris: %i\n", db->wares[value-1].price);
      db->wares[value-1].price = ask_question_int("Nytt pris:_");
      break;
    case 'L':
      printf("Nuvarande lagerhylla: %c%i\n", db->wares[value-1].storage_location.character, db->wares[value-1].storage_location.number);

      int status = 2;
      while(status == 2){
	db->wares[value-1].storage_location = (storage_location_t){.character=ask_question_char("Ange hylla: "),
								   .number=ask_question_int("Ange plats: ")};
	status = db_search_location(db, &db->wares[value-1]);
	if(status == 2){
	  puts("Platsen är upptagen");
	}
	else if(status == 1){
	  puts("Varan finns redan på den platsen, antalet ökat.");
	  remove_goods_aux(db, (value-1));
	}
      }
      break;
	
    case 'T':
      printf("Nuvarande antal: %i\n", db->wares[value-1].amount);
      db->wares[value-1].amount = ask_question_int("Nytt antal:_");
      break;
    case 'A': running = false;
      break;
    }
  }
}

void undo_goods(db_t *db){
  if(db->copy_flag == UNCHANGED){
    puts("Du måste göra något innan du kan ångra.");
  }
  else if(db->copy_flag == ADD){
    printf("Ångrade %s.\n", db->wares[db->copy_index].name);
    remove_goods_aux(db, db->copy_index);
  }
  else if(db->copy_flag == EDIT){
    printf("Ångrade %s.\n", db->wares[db->copy_index].name);
    db->wares[db->copy_index] = db->copy_ware;
  }
  else if(db->copy_flag == REMOVE){
    printf("Ångrade %s.\n", db->copy_ware.name);
    if(db->copy_flag == db->current_index)
      db->current_index++;
    else{
      for(int c=db->current_index; c>db->copy_index; c--){
	db->wares[c] = db->wares[c-1];
      }
      db->wares[db->copy_index] = db->copy_ware;
      db->current_index++;
    }
  }

  db->copy_flag = UNCHANGED;
}

void list_goods(db_t *db){
  bool running = true;
  int  index = 0;
  char answer;
  bool next_page_exists;
  while(running){
    next_page_exists = db_print_threaded(db, index, index + 19);    
    
    answer = ask_question_char("=================================\n[V]älj ett nummer för att visa mer information om varan.\nVisa [m]er\n[A]vsluta.\n_ ");
    
    if(answer == 'A'){
      running = false;
    }
    else if(answer == 'M'){
      if(next_page_exists)
	index += 20;
      else
	puts("Finns ej fler varor");
    }
    else if(answer == 'V'){
      int value = ask_question_int("Ange ett nummer _");
      if(value > db->current_index || value < 0){
	puts("Varan finns ej.");
	return;
      }
      print_ware(&db->wares[value-1]);
    }
  }
}