Создание базы данных - 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);
}
Объяснение кода листинга программы
- Создание структуры
touringдля хранения данных о турах. - Объявление глобальной переменной
tourтипа struct touring для хранения массива данных о турах. - Ввод данных о турах с помощью функции vvod_massiva, которая принимает индекс элемента в массиве и запрашивает данные о стране, городе, продолжительности и стоимости тура.
- Вывод данных о турах с помощью функции vyvod_massiva, которая проходит по всем элементам массива и выводит данные о стране, городе, продолжительности и стоимости тура.
- Функция main() содержит основной цикл программы, который запускается при запуске приложения и обрабатывает пользовательский ввод для выбора действия (ввод данных, просмотр данных или завершение работы приложения).
- Функция punkt_menu() используется для запроса у пользователя выбора действия и возвращает выбранное значение.
- Функция vvod() используется для ввода количества туров, которые нужно добавить в массив.
- Функция vvod_razmera() используется для запроса у пользователя количества туров, которые нужно добавить в массив.
- Функция vyvod() используется для вывода данных о турах.
- Функция vyhod() используется для завершения работы приложения.
- Ошибка компиляции в функции vvod_massiva() связана с тем, что переменная
nне была объявлена в этой области видимости. - Ошибка компиляции в функции vyvod_massiva() связана с тем, что функция scanf() ожидает указатель на строку, а не строку.
- Код не содержит обработки ошибок для ввода данных пользователем, что может привести к непредсказуемому поведению программы.
- Код не содержит проверки на достаточность памяти для выделения массива структур touring, что может привести к переполнению буфера при большом количестве вводимых данных.
- Код не содержит обработки ситуации, когда пользователь вводит некорректные данные (например, отрицательное количество дней тура или нулевую стоимость).
- Код не содержит проверки на равенство введенного значения и максимального значения типа данных, что может привести к переполнению при вводе очень больших значений.
- Код не содержит обработки ситуации, когда пользователь вводит пустую строку вместо значения, что может привести к некорректному сохранению данных.
- Код не содержит обработки ситуации, когда пользователь вводит некорректный формат данных (например, вводит символ в поле для ввода целого числа), что может привести к непредсказуемому поведению программы.
- Код не содержит обработки ситуации, когда пользователь вводит значение, которое превышает размер доступной памяти, что может привести к переполнению буфера и утечке памяти.
- Код не содержит обработки ситуации, когда пользователь вводит значение, которое не соответствует ожидаемому типу данных, что может привести к непредсказуемому поведению программы.