Написать программу, выполняющую действия с базой данных - C (СИ)
Формулировка задачи:
Доброго всем времени суток
Хотел бы чтобы вы посмотрели код программы, и подсказали что нужно доработать,вроде все работает, это ргз в вузе...
Задание заключается в том, чтобы "Написать программу, выполняющую действия с базой данных.
Количество записей в БД:100
№ поля для сортировки: 3
Выделение памяти под структуры: Статическое
Тип сортировки: убывает
Устройство для вывода записей: экран
Вообщем у меня главный вопрос по выделению памяти, правильно ли я сделал.
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <locale.h>
- #include <conio.h>
- typedef struct bd{
- int number; // Номер записи
- char* name; // Название фирмы
- int count; // Количество работников
- int money;/* Уставной капитал */} ;
- struct bd massiv[100];
- int n;
- FILE *f;
- // Функции для работы с базой данных
- int sozdanie_zapisi()
- {
- n=0;
- printf("Номер записи:");
- scanf("%d",&massiv[n].number);
- if (massiv[n].number<1) massiv[n].number=1;
- if (massiv[n].number>100) massiv[n].number=100;
- for (int i=0; i<n; i++)
- if (massiv[i].number==massiv[n].number) {printf("Запись с таким номером уже есть!\n"); return 0;}
- printf("Название фирмы:");
- fflush(stdin);
- gets(massiv[n].name);
- printf("Количество работников:"); scanf("%d",&massiv[n].count);
- printf("Уставной капитал:"); scanf("%d",&massiv[n].money);
- n++;
- }
- void vivod_zapisi()
- { int number;
- int notfound = 1;
- printf("Введите номер записи:\n"); scanf("%d",&number);
- for(int i=0; i<=n; i++)
- {if (massiv[i].number == number)
- {
- printf("%d.\nНазвание фирмы:%s\nКоличество работников:%d\nУставной капитал:%d\n",massiv[i].number, massiv[i].name, massiv[i].count, massiv[i].money);
- notfound = 0;}
- }
- if (notfound == 1) printf("Запись не найдена!\n");
- }
- int sortirovka() // Отсортировать таблицу по уставному капиталу в порядке убывания
- { bd temp;
- int i, j;
- if (n == 0) {printf("Нечего сортировать!\n"); return 0;}
- for( i=0; i < n; i++)
- { for( j = n-1; j > i; j-- )
- {
- if ( massiv[j-1].money < massiv[j].money )
- { temp=massiv[j-1]; massiv[j-1]=massiv[j]; massiv[j]=temp;
- }
- }
- }
- printf("Отсортированно!\n\n");
- }
- void vivod_bd()
- { int j;
- printf("\n");
- for(int i=0;i<n;i++) {
- if (massiv[i].name != NULL)
- printf("%d.\nНазвание фирмы:%s\nКоличество работников:%d\nУставной каптал:%d\n",massiv[i].number, massiv[i].name, massiv[i].count, massiv[i].money);}
- }
- void sohranenie()
- { f=fopen("base.txt","w");
- for(int i=0; i<n; i++)
- fprintf(f,"\n%d %s %d %d",massiv[i].number,massiv[i].name,massiv[i].count,massiv[i].money);
- printf("Успешно записано\n");
- fclose(f);
- }
- int zagruzka_bd()
- { f = fopen("bd.txt","r+");
- if (f==NULL) {printf("Файл не найден!\n"); return 0; }
- int j;
- while(!feof(f))
- {
- fscanf (f, "%d", &massiv[n].number);
- fscanf (f, "%s", &massiv[n].name);
- fscanf (f, "%d", &massiv[n].count);
- fscanf (f, "%d", &massiv[n].money);
- n++;
- }
- fclose(f);
- printf("Загрузка завершена!\n");
- }
- //---------------
- // Тело программы
- int main()
- {
- setlocale(LC_ALL,"");
- int k;
- n=0;
- while(1) {
- printf("1 - Ввод записи\n2 - Вывод записи\n3 - Сортировка\n4 - Вывод всех записей\n5 - Сохранить в файл\n6 - Чтение из файла\n7 - Выход\n"); scanf("%d",&k);
- switch(k) {
- case 1: {sozdanie_zapisi();
- break;}
- case 2: {vivod_zapisi();
- break;}
- case 3: {sortirovka();
- break;}
- case 4: {vivod_bd();
- break;}
- case 5: {sohranenie();
- break;}
- case 6: {zagruzka_bd();
- break;}
- case 7: {exit(0);}
- default:{printf("Неверная команда!\n");
- break;}
- }
- }
- getch();
- }
Решение задачи: «Написать программу, выполняющую действия с базой данных»
textual
Листинг программы
- gets(massiv[n].name);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д