Добавил:
vvrstcnho
Рад, если кому-то помог
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторные работы С (для ИВТ) / Готовые лабы С / Лаба7 / Laba 7 (4)
.c#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
