Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string>
- #include <string.h>
- #include <stdlib.h>
- #include <time.h>
- struct LICE { //Тип с данните за едно лице
- char ime[31]; char EGN[11];
- };
- int k1, k2, k3 = 0; // броячи, дали е празен файла/списъка
- struct MASHINA{
- char imeMashina[30];
- int cenaNaZakupuvane;
- int godinaNaZakupuvane;
- char firmaProizvoditel[30];
- };
- FILE *fl;
- char imefl[30];
- char firmaProizvoditelInput[30];
- //LICE lice;
- MASHINA mashina;
- time_t theTime = time(NULL);
- struct tm *aTime = localtime(&theTime);
- //функция за във. данните за едно лице
- void readMashina(MASHINA *mach){
- int tempInt = 0;
- printf("%Vudedete imeto na mashinata: ", "");
- scanf(" %30s", mach->imeMashina);
- printf("Vuvedete cena na zakupuvane ","");
- scanf("%d", &tempInt);
- mach->cenaNaZakupuvane = tempInt;
- printf("Vuvedete godina na zakupuvane ", "");
- scanf("%d", &mach->godinaNaZakupuvane);
- printf("%Vudedete firma proizvoditel: ", "");
- scanf("%30s", mach->firmaProizvoditel);
- }
- int getCurrentYear()
- {
- //int day = aTime->tm_mday;
- //int month = aTime->tm_mon + 1; // Month is 0 - 11, add 1 to get a jan-dec 1-12 concept
- int year = aTime->tm_year + 1900; // Year is # years since 1900
- return year;
- }
- //функция за изв. данните за едно лице
- void writeMashina(MASHINA ms){
- printf("Ime: %-21s FirmaProizvoditel: %s cena na zakupuvane: %d , godina na zakupuvane: %d\n ",
- ms.imeMashina,ms.firmaProizvoditel, ms.cenaNaZakupuvane, ms.godinaNaZakupuvane);
- if(ms.imeMashina[0]!=0)
- {
- k1++;
- }
- }
- void writeMashinaOver(MASHINA ms){
- if((ms.cenaNaZakupuvane >100000)&& ((ms.godinaNaZakupuvane+5) >getCurrentYear()))
- {
- printf("Ime: %-21s FirmaProizvoditel: %s cena na zakupuvane: %d\n ",
- ms.imeMashina,ms.firmaProizvoditel, ms.cenaNaZakupuvane);
- k2++;
- }
- }
- void writeMashinaFirma(MASHINA ms)
- {
- if(strcmp(ms.imeMashina, firmaProizvoditelInput)==1)
- {
- printf("Ime: %-21s FirmaProizvoditel: %s cena na zakupuvane: %d godina na zakupuvane %d\n ",
- ms.imeMashina,ms.firmaProizvoditel, ms.cenaNaZakupuvane, ms.godinaNaZakupuvane);
- k3++;
- }
- }
- int exist(char *ime){
- FILE *f = fopen(ime,"r");fclose(f);
- return f!=NULL;
- }
- //функция за създаване на празен файл}
- void szdPrz(){
- char ch;
- if (exist(imefl)) {
- printf("Failty sushtestvuna! ");
- printf("Da go prezapisha li?");
- ch=getchar();
- if (ch == 'n') return;
- }
- fl=fopen(imefl,"w");
- fclose(fl);
- printf("\n Failyt e suzdaden.\n");
- }
- //функция за добавяне на компоненти към файла
- void dobaviane(){
- char ch;
- char charChek;
- if (!exist(imefl)) {
- printf("Failyt ne e suzdaden!\n");return;
- }
- fl=fopen(imefl,"a+b");
- do{
- readMashina(&mashina);
- fwrite(&mashina,sizeof(mashina),1,fl);
- printf("Shte prodylzhite li vuvejdaneto? ");
- scanf(" %c", &charChek);
- }while (charChek != 'n');
- fclose(fl);
- }
- void obSpis(){
- int k;
- if (!exist(imefl)) {
- printf("Failyt ne e suzdaden!\n");
- return;
- }
- fl=fopen(imefl,"rb"); k=0;
- fread(&mashina,sizeof(mashina),1,fl);
- k1 = 0;
- while (!feof(fl)){
- //k++;
- writeMashina(mashina);
- fread(&mashina,sizeof(mashina),1,fl);
- }
- //if (k1==0) printf("Failyt e prazen\n");
- fclose(fl);
- }
- void obSpisOver(){
- if (!exist(imefl)) {
- printf("Failyt ne e suzdaden!\n");
- return;
- }
- fl=fopen(imefl,"rb"); k2=0;
- fread(&mashina,sizeof(mashina),1,fl);
- while (!feof(fl)){
- //k2++;
- writeMashinaOver(mashina);
- fread(&mashina,sizeof(mashina),1,fl);
- }
- if (k2==0) printf("Failyt e prazen, nqma mashini, na stoinost nad 100000 zakupeni v poslednite 5 godini\n");
- fclose(fl);
- }
- void obSpisInput(){
- printf("%Vudedete imeto na firmata proizvoditel na mashinite, koito iskate da vidite: ", "");
- scanf("%30s", firmaProizvoditelInput);
- if (!exist(imefl)) {
- printf("Failyt ne e suzdaden!\n");
- return;
- }
- fl=fopen(imefl,"rb"); k3=0;
- fread(&mashina,sizeof(mashina),1,fl);
- while (!feof(fl)){
- //k2++;
- writeMashinaFirma(mashina);
- fread(&mashina,sizeof(mashina),1,fl);
- }
- if (k3==0) printf("Failyt e prazen, nqma zakupeni mashini, ot tazi firma. \n");
- fclose(fl);
- }
- void iztrivane(){
- FILE *delFl; //Помощен файл, за изтриването
- // char EGN[11]; //ЕГН за изтриване
- char imeMash[30];
- if (!exist(imefl)) {
- printf("Failyt ne e suzdaden!\n");return;
- }
- printf("Vuvedete ime na mashinata: ");gets(imeMash);
- fl=fopen(imefl,"rb");delFl=fopen("Del","wb");
- fread(&mashina,sizeof(mashina),1,fl);
- while (!feof(fl)){
- if (strcmp(mashina.imeMashina,imeMash)!=0)
- fwrite(&mashina,sizeof(mashina),1,delFl);
- else printf("danni za mashina %s sa iztriti.\n",imeMash);
- fread(&mashina,sizeof(mashina),1,fl);
- }
- fclose(fl); fclose(delFl);
- remove(imefl); rename("Del",imefl);
- }
- int main() {
- int c;
- printf("Ime na fail: ");gets(imefl);
- do {
- printf("%Menu na operaciite:\n","");
- printf("%26s1. suzdavane na nov fail\n","");
- printf("%26s2. dobavqne na kompoenenti\n","");
- printf("%26s3. iztrivane na komponenenti\n","");
- printf("%26s4. izvejda mashini ot posochena firma \n","");
- printf("%26s5. rodeni prez dadena godina\n","");
- printf("%26s6. spisyk na vsichki\n","");
- printf("%26s7. spisyk na vsichki nad 100000 i zakupeni prez poslednite godini");
- printf("%20s Posochete 0 za krai: ","");
- scanf("%d",&c);getchar();
- switch (c){
- case 1:szdPrz();break; //
- case 2:dobaviane();break; //
- case 3:iztrivane();break;
- case 4:obSpisInput(); break;
- // case 4:zamiana();break;
- // case 5:spisGod();break;
- case 6:obSpis(); break;
- case 7:obSpisOver(); break;
- }
- }while (c!=0);
- }
Advertisement
Add Comment
Please, Sign In to add comment