Отчет по лабораторной работе Тема: «Простые языковые конструкции»



бет15/16
Дата16.02.2022
өлшемі2,87 Mb.
#132011
түріОтчет
1   ...   8   9   10   11   12   13   14   15   16
Байланысты:
bIST-201 Lebedev









Лабораторная работа 21




Постановка задачи

Исходные данные:
Взаимодействие с меню.


Алгоритм решения:

  1. Реализуем программу для загрузки данных из файла.

  2. Реализуем программу для изменения записи.

  3. Реализуем программу для поиска записи в массиве.

  4. Реализуем программу для сортировки массива по полю.

  5. Реализуем программу для сохранения файла.

  6. Сделаем для каждой из функций интерфейс пользователя.



Контрольный пример:
Входные данные и результат продемонстрированы на рисунке 53.


Словесное описание программы:
Шаг 1 (реализация функции для загрузки данных из файла):
int inputFile(FILE* f, char* filename, products* arr)
{

if ((f = fopen(filename, "r")) == NULL) {


fprintf(stderr, "Не удалось открыть файл 1 \n");
return 1;
}
else {
for (int n = 0; n < N; n++) {
fprintf(stdout, " ______________________________________\n");
fprintf(stdout, "|\n");
fgets(arr[n].name, 20, f);
fprintf(stdout, "| %d product is %s", n + 1, arr[n].name);
fgets(arr[n].dateOfProduction, 20, f);
fprintf(stdout, "| %d date of production is %s", n + 1, arr[n].dateOfProduction);
fgets(arr[n].dateOfEnlife, 20, f);
fprintf(stdout, "| %d date of endlife is %s", n + 1, arr[n].dateOfEnlife);
fscanf(f, "%d", &arr[n].price);
fprintf(stdout, "| %d price is %d", n + 1, arr[n].price);
fprintf(stdout, "\n|");
fprintf(stdout, "______________________________________\n");
}

}
};


Шаг 2 ( реализация функции для изменения поля):
int changeProduct(products* arr)
{
int fieldName = 0;
int productNumber;
int choiseChecker = 0;
do {
printf("| Which field do you want to change?\n|\t1-Name\t2-Date of production\t3-Date of endlife\t4-Price|\n");
printf("| Input a value :\t");
scanf("%d", &fieldName);
printf("|Which product field do you want to change?\n|\t1 - 1\t2 - 2\t3 - 3 |\n");
printf("| Input a value :\t");
scanf("%d", &productNumber);
switch (fieldName) {
case 1:
printf("| Input a value of name:");
gets(arr[productNumber].name);
printf("\n| You inputed : %s\n", arr[productNumber].name);
choiseChecker = 0;
break;
case 2:
printf("|Input a value of date of production:");
gets(arr[productNumber].dateOfProduction);
printf("You inputed : %s\n", arr[productNumber].dateOfProduction);
choiseChecker = 0;
break;
case 3:
printf("|Input a value of date of endlife:");
gets(arr[productNumber].dateOfEnlife);
printf("You inputed : %s\n", arr[productNumber].dateOfEnlife);
choiseChecker = 0;
break;
case 4:
printf("|Input a value of price:");
scanf("%d",&arr[productNumber].price);
printf("You inputed : %d\n", arr[productNumber].price);
choiseChecker = 0;
break;
default: printf("|Input a correct range!"); choiseChecker = 1; break;
};
} while (choiseChecker != 0);
};
int saveFile(products* arr) {

FILE* f;


if ((f = fopen("savedfile.txt", "wt")) == NULL) {
fprintf(stderr, "| Не удалось открыть файл 1 \n");
return 1;
}
else {
for (int n = 0; n < N; n++) {
fprintf(f, " ______________________________________\n");
fprintf(f, "|\n");
fprintf(f, "| %d product is %s", n + 1, arr[n].name);;
fprintf(f, "| %d date of production is %s", n + 1, arr[n].dateOfProduction);
fprintf(f, "| %d date of endlife is %s", n + 1, arr[n].dateOfEnlife);
fprintf(f, "| %d price is %d", n + 1, arr[n].price);
fprintf(f, "\n|");
fprintf(f, "|_____________________________________\n");
}
}
printf("| File has been saved!\n");
};
Шаг 3 (реализация функции поиска по записи):
int findElement(products* arr) {
int fieldName = 0;
int valueFieldPrice = 0;
char valueField[20];
printf("| Which field do you want to find?\n|\t1-Name\t2-Date of production\t3-Date of endlife\t4-Price|\n");
printf("| Input a value :\t");
scanf("%d", &fieldName);
switch (fieldName) {
case 1:
printf("| Input a value of this field :\t");
gets(valueField);
printf("\n| You inputed : %s \n", valueField);
for (int i = 0; i < N; i++) {
if (arr[i].name == valueField[20])printf("| This is %d product |\n", i ); else printf("| There's no products with inputed value |\n");
}; break;
case 2:
printf("\n| Input a value of this field :\t");
gets(valueField);
printf("\n| You inputed : %s \n", valueField);
for (int i = 0; i < N; i++) {
if (arr[i].dateOfProduction == valueField[20])printf("| This is %d product |\n", i ); else printf("| There's no products with inputed value |\n");
}; break;
case 3:
printf("\n| Input a value of this field :\t");
gets(valueField);
printf("\n| You inputed : %s \n", valueField);
for (int i = 0; i < N; i++) {
if (arr[i].dateOfEnlife == valueField[20])printf("| This is %d product |\n", i ); else printf("| There's no products with inputed value |\n");
}; break;
case 4:
printf("\n| Input a value of this field :\t");
scanf("%d",&valueFieldPrice);
printf("\n| You inputed : %d \n", valueFieldPrice);
for (int i = 0; i < N; i++) {
if (arr[i].price == valueFieldPrice)printf("| This is %d product |\n", i ); else printf("| There's no products with inputed value |\n");
}; break;
}
};
Шаг 4 (реализация функции сортировки):
int sorting(products* arr) {
int fieldName = 0;
printf("| Which field do you want to find?\n|\t1-Name\t2-Date of production\t3-Date of endlife\t4-Price|\n");
printf("| Input a value :\t");
scanf("%d", &fieldName);
printf("|\n");
switch (fieldName)
{
case 1:
for (int i = 0; i < N; i++) {
printf("| %d name is %s\n", i + 1, arr[i].name);
}; break;
case 2:
for (int i = 0; i < N; i++) {
printf("| %d date of production is %s\n", i + 1, arr[i].dateOfProduction);
}; break;
case 3:
for (int i = 0; i < N; i++) {
printf("| %d date of endlife is %s\n", i + 1, arr[i].dateOfEnlife);
}; break;
case 4:
for (int i = 0; i < N; i++) {
printf("| %d price is %d\n", i + 1, arr[i].price);
};
break;
}
printf("|_____________________________________\n");
};
Шаг 5 (объявление переменных, локализация и стартовое меню):
int main() {

system("chcp 1251");
system("cls");

setlocale(LC_ALL, "Rus");


int startValue =0;


int continueChecker;
FILE* fileInput;

products database[N];

printf(" _______________________________________________________________________\n");


printf("| Welcome to the prosucts database! |\n");
printf("|_______________________________________________________________________|\n");
do {
printf(" _______________________________________________________________________\n");
printf("| |\n");
printf("| What are you gonna do? |\n");
printf("| 1-Load a database 2-Change a field 3-Find element 4-Sort for a field |\n");
printf("|_______________________________________________________________________|\n");
printf("| Input a value: ");
scanf("%d", &startValue);
Шаг 6 (выбор действия и предложение продолжения программы):
switch (startValue) {
case 1:
inputFile(&fileInput, "products.txt", database);
break;
case 2:
changeProduct(database);
break;
case 3:
findElement(database);
break;
case 4: sorting(database);
};
printf(" _______________________________________________________________________\n");
printf("| |\n");
printf("| Do you wanna contunie a program? |\n");
printf("| 1-Yes 0 No |\n");
printf("|_______________________________________________________________________|\n");
printf("| Input a value: ");
scanf("%d", &continueChecker);
switch (continueChecker)
{
case 1: continueChecker = 1; break;
case 0: continueChecker = 0; break;
default:printf("You inputed incorrect value!");
break;
}
} while (continueChecker != 0);
Шаг 7 (предложение сохранения программы и выход из нее):
int saveChecker = 0;
printf(" _______________________________________________________________________\n");
printf("| |\n");
printf("| Do you wanna save a program? |\n");
printf("| 1-Yes 0 No |\n");
printf("|_______________________________________________________________________|\n");
printf("| Input a value: ");
scanf("%d", &saveChecker);
if (saveChecker == 1) saveFile(database);
printf(" _______________________________________________________________________\n");
printf("| |\n");
printf("| Good bye! See you soon |\n");
printf("|_______________________________________________________________________|\n");
}




Достарыңызбен бөлісу:
1   ...   8   9   10   11   12   13   14   15   16




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет