193030

kursova_working_almost_ready

Apr 20th, 2020
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.79 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string>
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6.  
  7. struct LICE { //Тип с данните за едно лице
  8. char ime[31]; char EGN[11];
  9. };
  10.  
  11. int k1, k2, k3 = 0; // броячи, дали е празен файла/списъка
  12. struct MASHINA{
  13. char imeMashina[30];
  14. int cenaNaZakupuvane;
  15. int godinaNaZakupuvane;
  16. char firmaProizvoditel[30];
  17. };
  18.  
  19. FILE *fl;
  20. char imefl[30];
  21. char firmaProizvoditelInput[30];
  22. //LICE lice;
  23. MASHINA mashina;
  24. time_t theTime = time(NULL);
  25. struct tm *aTime = localtime(&theTime);
  26.  
  27. //функция за във. данните за едно лице
  28. void readMashina(MASHINA *mach){
  29. int tempInt = 0;
  30. printf("%Vudedete imeto na mashinata: ", "");
  31. scanf(" %30s", mach->imeMashina);
  32. printf("Vuvedete cena na zakupuvane ","");
  33. scanf("%d", &tempInt);
  34. mach->cenaNaZakupuvane = tempInt;
  35. printf("Vuvedete godina na zakupuvane ", "");
  36. scanf("%d", &mach->godinaNaZakupuvane);
  37. printf("%Vudedete firma proizvoditel: ", "");
  38. scanf("%30s", mach->firmaProizvoditel);
  39.  
  40. }
  41.  
  42. int getCurrentYear()
  43. {
  44. //int day = aTime->tm_mday;
  45. //int month = aTime->tm_mon + 1; // Month is 0 - 11, add 1 to get a jan-dec 1-12 concept
  46. int year = aTime->tm_year + 1900; // Year is # years since 1900
  47. return year;
  48. }
  49.  
  50. //функция за изв. данните за едно лице
  51. void writeMashina(MASHINA ms){
  52.  
  53. printf("Ime: %-21s FirmaProizvoditel: %s cena na zakupuvane: %d , godina na zakupuvane: %d\n ",
  54. ms.imeMashina,ms.firmaProizvoditel, ms.cenaNaZakupuvane, ms.godinaNaZakupuvane);
  55. if(ms.imeMashina[0]!=0)
  56. {
  57. k1++;
  58. }
  59.  
  60. }
  61.  
  62. void writeMashinaOver(MASHINA ms){
  63. if((ms.cenaNaZakupuvane >100000)&& ((ms.godinaNaZakupuvane+5) >getCurrentYear()))
  64. {
  65. printf("Ime: %-21s FirmaProizvoditel: %s cena na zakupuvane: %d\n ",
  66. ms.imeMashina,ms.firmaProizvoditel, ms.cenaNaZakupuvane);
  67. k2++;
  68. }
  69.  
  70. }
  71.  
  72. void writeMashinaFirma(MASHINA ms)
  73. {
  74.  
  75. if(strcmp(ms.imeMashina, firmaProizvoditelInput)==1)
  76. {
  77. printf("Ime: %-21s FirmaProizvoditel: %s cena na zakupuvane: %d godina na zakupuvane %d\n ",
  78. ms.imeMashina,ms.firmaProizvoditel, ms.cenaNaZakupuvane, ms.godinaNaZakupuvane);
  79. k3++;
  80.  
  81. }
  82. }
  83.  
  84. int exist(char *ime){
  85. FILE *f = fopen(ime,"r");fclose(f);
  86. return f!=NULL;
  87. }
  88. //функция за създаване на празен файл}
  89. void szdPrz(){
  90. char ch;
  91. if (exist(imefl)) {
  92. printf("Failty sushtestvuna! ");
  93. printf("Da go prezapisha li?");
  94. ch=getchar();
  95. if (ch == 'n') return;
  96. }
  97. fl=fopen(imefl,"w");
  98. fclose(fl);
  99. printf("\n Failyt e suzdaden.\n");
  100. }
  101. //функция за добавяне на компоненти към файла
  102. void dobaviane(){
  103. char ch;
  104. char charChek;
  105. if (!exist(imefl)) {
  106. printf("Failyt ne e suzdaden!\n");return;
  107. }
  108. fl=fopen(imefl,"a+b");
  109. do{
  110. readMashina(&mashina);
  111. fwrite(&mashina,sizeof(mashina),1,fl);
  112. printf("Shte prodylzhite li vuvejdaneto? ");
  113. scanf(" %c", &charChek);
  114. }while (charChek != 'n');
  115. fclose(fl);
  116. }
  117.  
  118.  
  119. void obSpis(){
  120. int k;
  121. if (!exist(imefl)) {
  122.  
  123. printf("Failyt ne e suzdaden!\n");
  124. return;
  125. }
  126. fl=fopen(imefl,"rb"); k=0;
  127. fread(&mashina,sizeof(mashina),1,fl);
  128. k1 = 0;
  129. while (!feof(fl)){
  130. //k++;
  131. writeMashina(mashina);
  132. fread(&mashina,sizeof(mashina),1,fl);
  133. }
  134. //if (k1==0) printf("Failyt e prazen\n");
  135. fclose(fl);
  136. }
  137.  
  138.  
  139. void obSpisOver(){
  140. if (!exist(imefl)) {
  141.  
  142. printf("Failyt ne e suzdaden!\n");
  143. return;
  144. }
  145. fl=fopen(imefl,"rb"); k2=0;
  146. fread(&mashina,sizeof(mashina),1,fl);
  147. while (!feof(fl)){
  148. //k2++;
  149. writeMashinaOver(mashina);
  150. fread(&mashina,sizeof(mashina),1,fl);
  151. }
  152. if (k2==0) printf("Failyt e prazen, nqma mashini, na stoinost nad 100000 zakupeni v poslednite 5 godini\n");
  153. fclose(fl);
  154. }
  155.  
  156. void obSpisInput(){
  157. printf("%Vudedete imeto na firmata proizvoditel na mashinite, koito iskate da vidite: ", "");
  158. scanf("%30s", firmaProizvoditelInput);
  159. if (!exist(imefl)) {
  160.  
  161. printf("Failyt ne e suzdaden!\n");
  162. return;
  163. }
  164. fl=fopen(imefl,"rb"); k3=0;
  165. fread(&mashina,sizeof(mashina),1,fl);
  166. while (!feof(fl)){
  167. //k2++;
  168. writeMashinaFirma(mashina);
  169. fread(&mashina,sizeof(mashina),1,fl);
  170. }
  171. if (k3==0) printf("Failyt e prazen, nqma zakupeni mashini, ot tazi firma. \n");
  172. fclose(fl);
  173. }
  174.  
  175.  
  176.  
  177. void iztrivane(){
  178. FILE *delFl; //Помощен файл, за изтриването
  179. // char EGN[11]; //ЕГН за изтриване
  180. char imeMash[30];
  181. if (!exist(imefl)) {
  182. printf("Failyt ne e suzdaden!\n");return;
  183. }
  184. printf("Vuvedete ime na mashinata: ");gets(imeMash);
  185. fl=fopen(imefl,"rb");delFl=fopen("Del","wb");
  186. fread(&mashina,sizeof(mashina),1,fl);
  187. while (!feof(fl)){
  188. if (strcmp(mashina.imeMashina,imeMash)!=0)
  189. fwrite(&mashina,sizeof(mashina),1,delFl);
  190. else printf("danni za mashina %s sa iztriti.\n",imeMash);
  191. fread(&mashina,sizeof(mashina),1,fl);
  192. }
  193. fclose(fl); fclose(delFl);
  194. remove(imefl); rename("Del",imefl);
  195. }
  196.  
  197.  
  198. int main() {
  199. int c;
  200.  
  201. printf("Ime na fail: ");gets(imefl);
  202. do {
  203. printf("%Menu na operaciite:\n","");
  204. printf("%26s1. suzdavane na nov fail\n","");
  205. printf("%26s2. dobavqne na kompoenenti\n","");
  206. printf("%26s3. iztrivane na komponenenti\n","");
  207. printf("%26s4. izvejda mashini ot posochena firma \n","");
  208. printf("%26s5. rodeni prez dadena godina\n","");
  209. printf("%26s6. spisyk na vsichki\n","");
  210. printf("%26s7. spisyk na vsichki nad 100000 i zakupeni prez poslednite godini");
  211. printf("%20s Posochete 0 za krai: ","");
  212. scanf("%d",&c);getchar();
  213. switch (c){
  214. case 1:szdPrz();break; //
  215. case 2:dobaviane();break; //
  216. case 3:iztrivane();break;
  217. case 4:obSpisInput(); break;
  218. // case 4:zamiana();break;
  219. // case 5:spisGod();break;
  220. case 6:obSpis(); break;
  221. case 7:obSpisOver(); break;
  222. }
  223. }while (c!=0);
  224. }
Advertisement
Add Comment
Please, Sign In to add comment