Написать программу, выполняющую действия с базой данных - C (СИ)

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

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

Доброго всем времени суток Хотел бы чтобы вы посмотрели код программы, и подсказали что нужно доработать,вроде все работает, это ргз в вузе... Задание заключается в том, чтобы "Написать программу, выполняющую действия с базой данных. Количество записей в БД:100 № поля для сортировки: 3 Выделение памяти под структуры: Статическое Тип сортировки: убывает Устройство для вывода записей: экран Вообщем у меня главный вопрос по выделению памяти, правильно ли я сделал.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. #include <conio.h>
  5. typedef struct bd{
  6. int number; // Номер записи
  7. char* name; // Название фирмы
  8. int count; // Количество работников
  9. int money;/* Уставной капитал */} ;
  10. struct bd massiv[100];
  11. int n;
  12. FILE *f;
  13.  
  14. // Функции для работы с базой данных
  15. int sozdanie_zapisi()
  16. {
  17. n=0;
  18. printf("Номер записи:");
  19. scanf("%d",&massiv[n].number);
  20. if (massiv[n].number<1) massiv[n].number=1;
  21. if (massiv[n].number>100) massiv[n].number=100;
  22. for (int i=0; i<n; i++)
  23. if (massiv[i].number==massiv[n].number) {printf("Запись с таким номером уже есть!\n"); return 0;}
  24. printf("Название фирмы:");
  25. fflush(stdin);
  26. gets(massiv[n].name);
  27. printf("Количество работников:"); scanf("%d",&massiv[n].count);
  28. printf("Уставной капитал:"); scanf("%d",&massiv[n].money);
  29. n++;
  30. }
  31. void vivod_zapisi()
  32. { int number;
  33. int notfound = 1;
  34. printf("Введите номер записи:\n"); scanf("%d",&number);
  35. for(int i=0; i<=n; i++)
  36. {if (massiv[i].number == number)
  37. {
  38. printf("%d.\nНазвание фирмы:%s\nКоличество работников:%d\nУставной капитал:%d\n",massiv[i].number, massiv[i].name, massiv[i].count, massiv[i].money);
  39. notfound = 0;}
  40. }
  41. if (notfound == 1) printf("Запись не найдена!\n");
  42. }
  43.  
  44. int sortirovka() // Отсортировать таблицу по уставному капиталу в порядке убывания
  45. { bd temp;
  46. int i, j;
  47. if (n == 0) {printf("Нечего сортировать!\n"); return 0;}
  48. for( i=0; i < n; i++)
  49. { for( j = n-1; j > i; j-- )
  50. {
  51. if ( massiv[j-1].money < massiv[j].money )
  52. { temp=massiv[j-1]; massiv[j-1]=massiv[j]; massiv[j]=temp;
  53. }
  54. }
  55. }
  56. printf("Отсортированно!\n\n");
  57. }
  58. void vivod_bd()
  59. { int j;
  60. printf("\n");
  61. for(int i=0;i<n;i++) {
  62. if (massiv[i].name != NULL)
  63. printf("%d.\nНазвание фирмы:%s\nКоличество работников:%d\nУставной каптал:%d\n",massiv[i].number, massiv[i].name, massiv[i].count, massiv[i].money);}
  64. }
  65.  
  66. void sohranenie()
  67. { f=fopen("base.txt","w");
  68. for(int i=0; i<n; i++)
  69. fprintf(f,"\n%d %s %d %d",massiv[i].number,massiv[i].name,massiv[i].count,massiv[i].money);
  70. printf("Успешно записано\n");
  71. fclose(f);
  72. }
  73. int zagruzka_bd()
  74. { f = fopen("bd.txt","r+");
  75. if (f==NULL) {printf("Файл не найден!\n"); return 0; }
  76. int j;
  77. while(!feof(f))
  78. {
  79. fscanf (f, "%d", &massiv[n].number);
  80. fscanf (f, "%s", &massiv[n].name);
  81. fscanf (f, "%d", &massiv[n].count);
  82. fscanf (f, "%d", &massiv[n].money);
  83. n++;
  84. }
  85. fclose(f);
  86. printf("Загрузка завершена!\n");
  87. }
  88. //---------------
  89. // Тело программы
  90. int main()
  91. {
  92. setlocale(LC_ALL,"");
  93. int k;
  94. n=0;
  95. while(1) {
  96. printf("1 - Ввод записи\n2 - Вывод записи\n3 - Сортировка\n4 - Вывод всех записей\n5 - Сохранить в файл\n6 - Чтение из файла\n7 - Выход\n"); scanf("%d",&k);
  97. switch(k) {
  98. case 1: {sozdanie_zapisi();
  99. break;}
  100. case 2: {vivod_zapisi();
  101. break;}
  102. case 3: {sortirovka();
  103. break;}
  104. case 4: {vivod_bd();
  105. break;}
  106. case 5: {sohranenie();
  107. break;}
  108. case 6: {zagruzka_bd();
  109. break;}
  110. case 7: {exit(0);}
  111. default:{printf("Неверная команда!\n");
  112. break;}
  113. }
  114. }
  115. getch();
  116. }

Решение задачи: «Написать программу, выполняющую действия с базой данных»

textual
Листинг программы
  1. gets(massiv[n].name);

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


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

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

15   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы