Advertisement
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>
- int k1, k2, k3 = 0; // броячи, дали е празен файла/списъка
- struct MASHINA{ // Тип с данните за една машина
- char imeMashina[30];
- int cenaNaZakupuvane;
- int godinaNaZakupuvane;
- char firmaProizvoditel[30];
- } mashina;
- FILE *fl;
- char imefl[30];
- char firmaProizvoditelInput[30];
- time_t theTime = time(NULL);
- struct tm *aTime = localtime(&theTime);
- //функция за въвеждане данните за едно лице
- void readMashina(MASHINA *mach){
- printf("Въведете името на машината: \n", "");
- scanf(" %30s", mach->imeMashina);
- printf("Въведете цена на закупуване \n","");
- while(scanf("%d",&mach->cenaNaZakupuvane) <= 0){
- scanf("%*s");
- printf("Моля, въведете цяло число.\n");
- }
- printf("Въведете година на закупуване \n", "");
- while (scanf("%d", &mach->godinaNaZakupuvane) <= 0){
- scanf("%*s");
- printf("Моля, въведете цяло число.\n");
- }
- printf("Въведете фирма производител: \n", "");
- scanf("%30s", mach->firmaProizvoditel);
- }
- int getCurrentYear()
- {
- int year = aTime->tm_year + 1900; // Year is # years since 1900
- return year;
- }
- //Функция за извеждане на данните на всички машини
- void writeMashina(MASHINA ms){
- printf("Име на машината: %s | Фирма производител: %s | Цена на закупуване: %d | година на закупуване: %d \n",
- ms.imeMashina,ms.firmaProizvoditel, ms.cenaNaZakupuvane, ms.godinaNaZakupuvane);
- if(ms.imeMashina[0]!=0)
- {
- k1++;
- }
- }
- //Фукнция за извждане на данните за машини над 100 000 лева, закупени през последните 5 години
- void writeMashinaOver(MASHINA ms){
- if((ms.cenaNaZakupuvane >100000)&& ((ms.godinaNaZakupuvane+5) >getCurrentYear()))
- {
- printf("Име на машината: %s | Фирма производител: %s | Цена на закупуване: %d \n",
- ms.imeMashina,ms.firmaProizvoditel, ms.cenaNaZakupuvane);
- k2++;
- }
- }
- //Фукнция за извеждане на данните за посочена във инпута фирма
- void writeMashinaFirma(MASHINA ms)
- {
- if(strcmp(ms.firmaProizvoditel, firmaProizvoditelInput)==0)
- {
- printf("Име: %-21s Фирма производител: %s | Цена на закупуване: %d | Година на закупуване %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("Файлът е създаден! \n");
- printf("Да го презапиша ли? \n");
- ch=getchar();
- if (ch == 'n') return;
- }
- fl=fopen(imefl,"w");
- fclose(fl);
- printf("\n Файлът е създаден.\n");
- }
- //функция за добавяне на компоненти към файла
- void dobaviane(){
- char ch;
- char charChek;
- if (!exist(imefl)) {
- printf("Файлът не е създаден!\n");return;
- }
- fl=fopen(imefl,"a+b");
- do{
- readMashina(&mashina);
- fwrite(&mashina,sizeof(mashina),1,fl);
- printf("Ще продължите ли въвеждането(n за край)? \n");
- scanf(" %c", &charChek);
- }while (charChek != 'n');
- fclose(fl);
- }
- void obSpis(){
- int k;
- if (!exist(imefl)) {
- printf("Файлът е създаден!\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("Файлът е създаден!\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("Списъкът е празен, няма машини на стойност над 100 000 лева, закупени през последните 5 години.\n");
- fclose(fl);
- }
- void obSpisInput(){
- printf("Въведете името на фирмата производител, чиито машини искате да видите: ", "");
- scanf("%30s", firmaProizvoditelInput);
- if (!exist(imefl)) {
- printf("Файлът не е създаден!\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("Списъкът е празен, няма закупени машини от тази фирма. \n");
- fclose(fl);
- }
- void iztrivane(){
- FILE *delFl; //Помощен файл за изтриване
- char imeMash[30];
- if (!exist(imefl)) {
- printf("Файлът не е създаден!\n");return;
- }
- printf("Въведете име на машината: ");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("Данни за машина %s са изтрити.\n",imeMash);
- fread(&mashina,sizeof(mashina),1,fl);
- }
- fclose(fl); fclose(delFl);
- remove(imefl); rename("Del",imefl);
- }
- int main() {
- int c;
- setlocale(LC_ALL, "Bulgarian");
- printf("Име на файл: ");gets(imefl);
- do {
- printf("Меню операциите:\n","");
- printf("%26s1. Създаване на нов файл\n","");
- printf("%26s2. Добавяне на информация за машина \n","");
- printf("%26s3. Изтриване на компонент\n","");
- printf("%26s4. Извеждане на машините произведени от посочена фирма \n","");
- printf("%26s5. Списък на всички машини\n","");
- printf("%26s6. Списък на всички машини над 100 000 лева, закупени през последните 5 години \n");
- printf("%20s Посочете 0 за край: ","");
- scanf("%d",&c);getchar();
- switch (c){
- case 1:szdPrz();break;
- case 2:dobaviane();break;
- case 3:iztrivane();break;
- case 4:obSpisInput(); break;
- case 5:obSpis(); break;
- case 6:obSpisOver(); break;
- }
- }while (c!=0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement