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