Exemple #1
0
/**
@brief Runs the program and calls funcitons from the headerfile lagerhantering.h
@return always 0
 */
int main() {
  bool should_continue = true;
  db_t db1 = malloc(sizeof(struct db_t));
  db1->amount = 0;
  db_t backup;
  int i = 0;
  while (should_continue) { 
    print_menu();
    switch (ask_char_question("What do you want to do?", "AaRrEeUuPpQq")){
      // Add
    case 'a':
      puts("You chose 'Add'");
      if (i > 0){
      free_db(backup);
      }
      backup = db_copy(db1);
      i++;
      add_item(db1);
      break;

      // Remove
    case 'r':
      puts("You chose 'Remove'");
      if(i>0){
      free_db(backup);
      }     
      backup = db_copy(db1);
      i++;
      remove_item(db1);
      break;
      
      // Edit
    case 'e':
      puts("You chose 'Edit'");
      if (i>0){
      free_db(backup);
      }
      backup = db_copy(db1);
      i++;
      edit_item(db1);
      break;
      
      // Undo
    case 'u':
      puts("You chose 'Undo'");
      if(i>0){
      free_db(db1);
      } 
     db1 = db_copy(backup);
      i++;
      // backup = db_copy(db1);
      break;
      
      // Print
    case 'p':
      puts("You chose 'Print'");
      print_db(db1);
      break;
      
      // Quit
    case 'q':
      if (ask_char_question("Do you wish to exit the programme?", "YyNn") == 'y') {
	puts("Goodbye!");
	should_continue  = false;
	free_db(db1);
	if(i > 0){
	  free_db(backup);
	}
	/*	if(db1 != NULL){
	free_db(db1);
	}
	else
	  free(db1);
	if (backup != NULL) {
	  free_db(backup);
	  }
	else if(backup == NULL){
	  free(backup);
	  }*/ 
	}
      break;
    default:
      puts("Did not enter any valid command, please try again.\n");
    }
  }
  return 0;
}
Exemple #2
0
void process_commands(enum CID cid) {
    cursor_t old_c;
    char * dbName;
    switch (cid) {
        case NOPE:
              puts("-- команда не распознана --");
              break;
        case SET_NAME:              
              if (db_ship()) {
                printf("Имя>");
                strncpy(db_ship()->name,input_str(),64);
                show();
          }
            break;
        case SET_YEAR:
              if (db_ship()) {
                printf("Год>");
                db_ship()->year = strtoul( input_str(),NULL, 10);
                show();
          }
            break;
        case COPY:
             db_copy();
             break;
        case PASTE:
             db_paste();
             show();
             break;
        case ALL:
             old_c = db_get_cursor();
             db_first();             
             while (db_get_cursor() != db_get_end()) {
                 db_load();
                 if (!db_is_deleted())
                    show();
                 db_next();
             }
             db_set_cursor(old_c);
             db_load();
             break;
        case REFRESH:
             db_load();
        case SHOW:
            show();
            break;

        case NEW:
             db_new();
             show();            
             break;
        case REMOVE:
                db_delete();        
                break;
        case SAVE:
              db_save();
             break; 

        case HELP:
              show_help();
              break;
        case OPEN:        
                printf("Файл>");
                dbName = input_str();
                db_open( strlen(dbName) == 0 ?  "ships.db" : dbName);
                break;
        case CLOSE:
                db_close();
                break;
        case  FIRST:
                first:
                db_first();
                while (db_get_cursor() != db_get_end()) {                   
                   db_load();
                   if (!db_is_deleted()) {
                       show();
                       return;
                   }                   
                   db_next();
                }
                puts("-- в базе нет записей. --");                
                break;
        case  NEXT: 
                db_next();
                while (db_get_cursor() != db_get_end()) {
                    db_load();
                    if (!db_is_deleted()) {
                       show();
                       return;
                   }
                   db_next();
                }
                puts("-- больше записей нет. перемотка в начало. --");
                goto first;                 
        case PREV:              
                while (db_get_cursor() != db_get_begin()) {
                   db_prev();
                   db_load();
                   if (!db_is_deleted()) {
                       show();
                       return;
                   }
                }
                puts("-- первая запись --");                
                goto first;             
                break;
        default:
            puts("== команда не обработана ==");

    }    
}