Создание базы данных - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите,нужно создать базу данных,которая содержит страну тура,город ,кол-во дней и стоимость тура.Программу я написал ,но она выдает ошибки.Кто может помочь их исправить?
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
int vvod(void);
int vvod_razmera(void);
void vvod_massiva(int);
int punkt_menu(void);
void vyvod_massiva(int);
int vyvod(void);
void vyhod(void);
 
struct touring
{char country[50];
 char city [50];
 int tour_duration ;
 int cost ;

};
 
int main (void)
{struct touring tour[8];
 char punky_menu [8];
 int razmer;
 int razmer1;
 int p,e;
 p=punkt_menu();
 printf("%d",p);
 switch(p)
  {case 1 :
          razmer=vvod();
          break;
   case 2:
         razmer1=vyvod();
           break;
   case 3:
            vyhod();
            break;
   default: printf("\n\t Any of points isn't chosen");
  }
  getch();
}
    
int punkt_menu(void)
{int p; 
printf("\n\t Enter 1 if you want to enter data\n");
printf("\n\t Enter 2 if you want to look at data\n");
printf("\n\t Enter 3 if you want to finish work with application\n");
scanf("%d",&p);
return(p);
}
 
int vvod (void)
 
{
 int razmer;
 razmer=vvod_razmera();
 vvod_massiva(razmer);
 return(razmer);
}
 
int vvod_razmera()
{
  int n;
  printf("Enter number of tours \n");
  scanf("%d",&n);
  return (n);   
}
 
void vvod_massiva(n)              //71   'n' was not declared in this scope  //variable or field 'vvod_massiva' declared void
{
  int i;
  for(i=1;i<=n;i++)
   {
    printf("Enter element number &d\n",i);
    printf("Enter country of tour:");
    scanf("%s",&tour[i].country);
    printf("\n Enter city of tour:");
    scanf("%s",&tour[i].city);
    printf("\n Enter number of days of tour:");
    scanf("%d",&tour[i].tour_duraction);
    printf("Enter cost of tour:");
    scanf("ds",&tour[i].cost);
    
   }
   }
 
 int vyvod(void)
 {
   int razmer1;
   
   razmer1=vvod_razmera();
   vyvod_massiva(razmer1));
   return(razmer1);
    }
  void vyvod_massiva(n)
  {
    int i;
    for(i=1;i<=n;i++)
     {
        printf("Country of tour:%s\n",&tour[i].country);
        printf("City of tour:%s\n",&tour[i].city);
        printf("Number of days of tour :%d\n",&tour[i].tour_duraction);
        printf("Cost of tour:%d\n",&tour[i].cost);
     }
  }
 void vyhod(void)
{
    exit(0);
}

Решение задачи: «Создание базы данных»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
int vvod(void);
int vvod_razmera(void);
void vvod_massiva(int);
int punkt_menu(void);
void vyvod_massiva(int);
int vyvod(void);
void vyhod(void);
 
struct touring
{char country[50];
 char city [50];
 int tour_duration ;
 int cost ;
 
 
};
// глобальные переменные
struct touring tour[8];
// char punky_menu [8];
 //-------------------
int main (void)
{
 int razmer;
 int razmer1;
 int p;//e;
 p=punkt_menu();
 printf("%d",p);
 switch(p)
  {case 1 :
          razmer=vvod();
          break;
   case 2:
         razmer1=vyvod();
           break;
   case 3:
            vyhod();
            break;
   default: printf("\n\t Any of points isn't chosen");
  }
  getch();
}
    
int punkt_menu(void)
{int p; 
printf("\n\t Enter 1 if you want to enter data\n");
printf("\n\t Enter 2 if you want to look at data\n");
printf("\n\t Enter 3 if you want to finish work with application\n");
scanf("%d",&p);
return(p);
}
 
int vvod (void)
 
{
 int razmer;
 razmer=vvod_razmera();
 vvod_massiva(razmer);
 return(razmer);
}
 
int vvod_razmera()
{
  int n;
  printf("Enter number of tours \n");
  scanf("%d",&n);
  return (n);   
}
 
void vvod_massiva(int n)              //71   'n' was not declared in this scope  //variable or field 'vvod_massiva' declared void
{
  int i;
  for(i=1;i<=n;i++)
   {
    printf("Enter element number &d\n",i);
    printf("Enter country of tour:");
    scanf("%s",&tour[i].country);
    printf("\n Enter city of tour:");
    scanf("%s",&tour[i].city);
    printf("\n Enter number of days of tour:");
    scanf("%d",&tour[i].tour_duration);
    printf("Enter cost of tour:");
    scanf("ds",&tour[i].cost);
    
   }
   }
 
 int vyvod(void)
 {
   int razmer1;
   
   razmer1=vvod_razmera();
   vyvod_massiva(razmer1);
   return(razmer1);
    }
  void vyvod_massiva(int n)
  {
    int i;
    for(i=1;i<=n;i++)
     {
        printf("Country of tour:%s\n",&tour[i].country);
        printf("City of tour:%s\n",&tour[i].city);
        printf("Number of days of tour :%d\n",&tour[i].tour_duration);
        printf("Cost of tour:%d\n",&tour[i].cost);
     }
  }
 void vyhod(void)
{
    exit(0);
}

Объяснение кода листинга программы

  1. Создание структуры touring для хранения данных о турах.
  2. Объявление глобальной переменной tour типа struct touring для хранения массива данных о турах.
  3. Ввод данных о турах с помощью функции vvod_massiva, которая принимает индекс элемента в массиве и запрашивает данные о стране, городе, продолжительности и стоимости тура.
  4. Вывод данных о турах с помощью функции vyvod_massiva, которая проходит по всем элементам массива и выводит данные о стране, городе, продолжительности и стоимости тура.
  5. Функция main() содержит основной цикл программы, который запускается при запуске приложения и обрабатывает пользовательский ввод для выбора действия (ввод данных, просмотр данных или завершение работы приложения).
  6. Функция punkt_menu() используется для запроса у пользователя выбора действия и возвращает выбранное значение.
  7. Функция vvod() используется для ввода количества туров, которые нужно добавить в массив.
  8. Функция vvod_razmera() используется для запроса у пользователя количества туров, которые нужно добавить в массив.
  9. Функция vyvod() используется для вывода данных о турах.
  10. Функция vyhod() используется для завершения работы приложения.
  11. Ошибка компиляции в функции vvod_massiva() связана с тем, что переменная n не была объявлена в этой области видимости.
  12. Ошибка компиляции в функции vyvod_massiva() связана с тем, что функция scanf() ожидает указатель на строку, а не строку.
  13. Код не содержит обработки ошибок для ввода данных пользователем, что может привести к непредсказуемому поведению программы.
  14. Код не содержит проверки на достаточность памяти для выделения массива структур touring, что может привести к переполнению буфера при большом количестве вводимых данных.
  15. Код не содержит обработки ситуации, когда пользователь вводит некорректные данные (например, отрицательное количество дней тура или нулевую стоимость).
  16. Код не содержит проверки на равенство введенного значения и максимального значения типа данных, что может привести к переполнению при вводе очень больших значений.
  17. Код не содержит обработки ситуации, когда пользователь вводит пустую строку вместо значения, что может привести к некорректному сохранению данных.
  18. Код не содержит обработки ситуации, когда пользователь вводит некорректный формат данных (например, вводит символ в поле для ввода целого числа), что может привести к непредсказуемому поведению программы.
  19. Код не содержит обработки ситуации, когда пользователь вводит значение, которое превышает размер доступной памяти, что может привести к переполнению буфера и утечке памяти.
  20. Код не содержит обработки ситуации, когда пользователь вводит значение, которое не соответствует ожидаемому типу данных, что может привести к непредсказуемому поведению программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5