Advertisement
193030

Kursova 2 donqkyde

Sep 27th, 2020
198
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.61 KB | None
  1. #include <stdio.h>
  2. #include <string>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6.  
  7. using namespace std;
  8.  
  9. struct STUDENT{
  10. char ime[20];
  11. char EGN[10];
  12. int fakNomer;
  13. int nomerNaGrupa;
  14. int ocenki[10];
  15. float sredenUspeh;
  16. } student;
  17.  
  18. int zadadenNomer;
  19. int broqch;
  20. FILE *fl;
  21. char imefl[30];
  22. //char firmaProizvoditelInput[30];
  23.  
  24.  
  25. int exist(char *ime)
  26. {
  27. FILE *f = fopen(ime,"r"); fclose(f);
  28. return f!=NULL;
  29. }
  30.  
  31. void szdPrz(){
  32. char ch;
  33. if (exist(imefl)) {
  34. printf("Файла е създаден! \n");
  35. printf("Да го презапиша ли? \n");
  36. ch=getchar();
  37. if (ch == 'n') return;
  38. }
  39. fl=fopen(imefl,"w");
  40. fclose(fl);
  41. printf("Файла е създаден.\n");
  42. }
  43.  
  44.  
  45.  
  46. //функция за въвеждане данните за едно лице
  47. void readStudent(STUDENT *student)
  48. {
  49. printf("Въведете името на студента: \n", "");
  50. scanf(" %20s", student->ime);
  51. printf("Въведете ЕГН на студента: \n", "");
  52. scanf(" %10s", student->EGN);
  53. printf("Въведете фак. номер на студента: \n", "");
  54. scanf(" %10s", student->fakNomer);
  55. printf("Въведете номер на групата: \n", "");
  56. while(scanf("%d",&student->nomerNaGrupa) <= 0){
  57. scanf("%*s");
  58. printf("Моля, въведете цяло число.\n");
  59. }
  60.  
  61. for(int i =0; i<10;i++)
  62. {
  63. printf("Въведете оценка по дисциплина: %d \n ", i+1);
  64. while(scanf("%d",&student->ocenki[i]) <= 0){
  65. scanf("%*s");
  66. printf("Моля, въведете цяло число.\n");
  67. }
  68. }
  69.  
  70. }
  71.  
  72. void sredenUpsehStudent(STUDENT stud)
  73. {
  74. int sum = 0;
  75. for(int i =0; i<10;i++)
  76. {
  77. sum = sum +(stud.ocenki[i]);
  78.  
  79. }
  80. stud.sredenUspeh = (sum/10);
  81. }
  82.  
  83.  
  84. /*
  85. //Функция за извеждане на данните на всички машини
  86. void writeMashina(MASHINA ms){
  87.  
  88. printf("Име на машината: %s | Фирма производител: %s | Цена на закупуване: %d | година на закупуване: %d \n",
  89. ms.imeMashina,ms.firmaProizvoditel, ms.cenaNaZakupuvane, ms.godinaNaZakupuvane);
  90. if(ms.imeMashina[0]!=0)
  91. {
  92. k1++;
  93. }
  94.  
  95. }
  96.  
  97. */
  98.  
  99.  
  100. // Sreden uspeh nad 4.00 imashti 2 ili poveche dvoiki ot zadadena grupa
  101.  
  102. void studentIzvejdane(STUDENT stud)
  103. {
  104.  
  105. if((stud.sredenUspeh) > 4 && (stud.nomerNaGrupa == zadadenNomer))
  106. {
  107. int broiDvoiki = 0;
  108. for(int i=0; i++; i<10)
  109. {
  110. if(stud.ocenki[i] == 2)
  111. {
  112. broiDvoiki++;
  113. }
  114. }
  115. if(broiDvoiki>2)
  116. {
  117. printf("Фак номер: %-10s Среден успех: %d \n",
  118. stud.fakNomer,stud.sredenUspeh);
  119. broqch++;
  120. }
  121.  
  122. }
  123.  
  124. }
  125.  
  126.  
  127.  
  128.  
  129. //функция за добавяне на компоненти към файла
  130. void dobaviane(){
  131. char ch;
  132. char charChek;
  133. if (!exist(imefl)) {
  134. printf("Файлът не е създаден!\n");return;
  135. }
  136. fl=fopen(imefl,"a+b");
  137. do{
  138. readStudent(&student);
  139. fwrite(&student,sizeof(student),1,fl);
  140. printf("Ще продължите ли въвеждането(n за край)? \n");
  141. scanf(" %c", &charChek);
  142. }while (charChek != 'n');
  143. fclose(fl);
  144. }
  145.  
  146. void writeStud(STUDENT stud){
  147.  
  148. printf("Име на студента: %s | Фак. номер: %s \n",
  149. stud.ime, stud.fakNomer);
  150.  
  151. }
  152.  
  153. void obSpis(){
  154. int k;
  155. if (!exist(imefl)) {
  156.  
  157. printf("Файлът е създаден!\n");
  158. return;
  159. }
  160. fl=fopen(imefl,"rb"); k=0;
  161. fread(&student,sizeof(student),1,fl);
  162. while (!feof(fl)){
  163. //k++;
  164. writeStud(student);
  165. fread(&student,sizeof(student),1,fl);
  166. }
  167. //if (k1==0) printf("Failyt e prazen\n");
  168. fclose(fl);
  169. }
  170.  
  171.  
  172.  
  173. /*
  174. void obSpisOver(){
  175. if (!exist(imefl)) {
  176.  
  177. printf("Файлът е създаден!\n");
  178. return;
  179. }
  180. fl=fopen(imefl,"rb"); k2=0;
  181. fread(&mashina,sizeof(mashina),1,fl);
  182. while (!feof(fl)){
  183. //k2++;
  184. writeMashinaOver(mashina);
  185. fread(&mashina,sizeof(mashina),1,fl);
  186. }
  187. if (k2==0) printf("Списъкът е празен, няма машини на стойност над 100 000 лева, закупени през последните 5 години.\n");
  188. fclose(fl);
  189. }
  190.  
  191. */
  192. void obSpisInput(){
  193.  
  194. printf("Въведи името на групата: ", "");
  195. scanf("%d", &zadadenNomer);
  196. if (!exist(imefl)) {
  197.  
  198. printf("Файлът не е създаден!\n");
  199. return;
  200. }
  201. fl=fopen(imefl,"rb");
  202. fread(&student,sizeof(student),1,fl);
  203. while (!feof(fl)){
  204. //k2++;
  205. studentIzvejdane(student);
  206. fread(&student,sizeof(student),1,fl);
  207. }
  208. if (broqch==0)
  209. printf("Списъкът е празен. Липсват студенти със среден успех над 4.00 и две двойки \n");
  210. fclose(fl);
  211.  
  212. }
  213.  
  214.  
  215. /*
  216. void iztrivane(){
  217. FILE *delFl; //Помощен файл за изтриване
  218. char imeMash[30];
  219. if (!exist(imefl)) {
  220. printf("Файлът не е създаден!\n");return;
  221. }
  222. printf("Въведете име на машината: ");gets(imeMash);
  223. fl=fopen(imefl,"rb");delFl=fopen("Del","wb");
  224. fread(&mashina,sizeof(mashina),1,fl);
  225. while (!feof(fl)){
  226. if (strcmp(mashina.imeMashina,imeMash)!=0)
  227. fwrite(&mashina,sizeof(mashina),1,delFl);
  228. else printf("Данни за машина %s са изтрити.\n",imeMash);
  229. fread(&mashina,sizeof(mashina),1,fl);
  230. }
  231. fclose(fl); fclose(delFl);
  232. remove(imefl); rename("Del",imefl);
  233. }
  234. */
  235.  
  236.  
  237. int main() {
  238. int c;
  239.  
  240. setlocale(LC_ALL, "Bulgarian");
  241. printf("Име на файл: ");gets(imefl);
  242. do {
  243. printf("Меню операциите:\n","");
  244. printf("%26s1. Създаване на нов файл\n","");
  245. printf("%26s2. Добавяне на информация за студент \n","");
  246. printf("%26s3. Изтриване на компонент\n","");
  247. printf("%26s4. Извеждане на студенти с успех над 4.00 и две двойки \n","");
  248. printf("%26s5. Списък на всички студенти\n","");
  249. //printf("%26s6. Списък на всички машини над 100 000 лева, закупени през последните 5 години \n");
  250. printf("%20s Посочете 0 за край: ","");
  251. scanf("%d",&c);getchar();
  252. switch (c){
  253. case 1:szdPrz();break;
  254. case 2:dobaviane();break;
  255. //case 3:iztrivane();break;
  256. case 4:obSpisInput(); break; // 2 dvoiki i nad 4
  257. case 5:obSpis(); break;
  258. //case 6:obSpisOver(); break;
  259. }
  260. }while (c!=0);
  261. }
  262.  
Advertisement
RAW Paste Data Copied
Advertisement