Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
01.11.2025
Размер:
3.4 Кб
Скачать
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct {
    char plantName[50];
    int plantingMonth;
    int seedsPerPack;
    float price;
} SeedRecord;

void createFile(const char* filename) {
    FILE *f = fopen(filename, "wb");
    if (!f) return;
    
    SeedRecord records[] = {
        {"Tomato", 3, 30, 45.50},
        {"Cucumber", 4, 25, 38.00},
        {"Carrot", 5, 100, 25.75},
        {"Pepper", 2, 20, 52.30},
        {"Lettuce", 3, 50, 28.90}
    };
    
    fwrite(records, sizeof(SeedRecord), 5, f);
    fclose(f);
}

void displayAll(const char* filename) {
    FILE *f = fopen(filename, "rb");
    if (!f) return;
    
    printf("\n%-20s %-12s %-15s %-10s\n", "Plant", "Month", "Seeds/Pack", "Price");
    printf("------------------------------------------------------------\n");
    
    SeedRecord record;
    while (fread(&record, sizeof(SeedRecord), 1, f)) {
        printf("%-20s %-12d %-15d %-10.2f\n", 
               record.plantName, record.plantingMonth, 
               record.seedsPerPack, record.price);
    }
    fclose(f);
}

void marchToMayPlants(const char* filename) {
    FILE *f = fopen(filename, "rb");
    if (!f) return;
    
    printf("\nPlants for March-May planting:\n");
    printf("-----------------------------\n");
    
    SeedRecord record;
    int found = 0;
    while (fread(&record, sizeof(SeedRecord), 1, f)) {
        if (record.plantingMonth >= 3 && record.plantingMonth <= 5) {
            printf("%s (Month: %d)\n", record.plantName, record.plantingMonth);
            found = 1;
        }
    }
    
    if (!found) {
        printf("No plants found for March-May planting.\n");
    }
    fclose(f);
}

void updatePrice(const char* filename) {
    char plantName[50];
    float newPrice;
    
    printf("Enter plant name: ");
    scanf("%s", plantName);
    printf("Enter new price: ");
    scanf("%f", &newPrice);
    
    FILE *f = fopen(filename, "r+b");
    if (!f) return;
    
    SeedRecord record;
    int found = 0;
    
    while (fread(&record, sizeof(SeedRecord), 1, f)) {
        if (strcmp(record.plantName, plantName) == 0) {
            record.price = newPrice;
            fseek(f, -sizeof(SeedRecord), SEEK_CUR);
            fwrite(&record, sizeof(SeedRecord), 1, f);
            found = 1;
            break;
        }
    }
    
    if (found) {
        printf("Price updated successfully!\n");
    } else {
        printf("Plant not found!\n");
    }
    fclose(f);
}

int main() {
    const char* filename = "seeds.dat";
    int choice;
    
    createFile(filename); // Создаем начальный файл
    
    do {
        printf("\n=== Seed Store Information System ===\n");
        printf("1. Display all seeds\n");
        printf("2. Show plants for March-May planting\n");
        printf("3. Update price\n");
        printf("4. Exit\n");
        printf("Choose option: ");
        scanf("%d", &choice);
        
        switch (choice) {
            case 1: displayAll(filename); break;
            case 2: marchToMayPlants(filename); break;
            case 3: updatePrice(filename); break;
            case 4: printf("Goodbye!\n"); break;
            default: printf("Invalid choice!\n");
        }
    } while (choice != 4);
    
    return 0;
}
Соседние файлы в папке Лаба7