Написать программу, выполняющую действия с базой данных - 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);

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


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

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

15   голосов , оценка 4.2 из 5
Похожие ответы