Главная страница
Навигация по странице:

  • 3. ВЫПОЛНЕНИЕ РАБОТЫ

  • Варианты заданий

  • 4. КОНТРОЛЬНЫЕ ВОПРОСЫ

  • Список литературы

  • Практикум по дисциплине Программирование для образовательной программы по направлению 09. 03. 01 Информатика и вычислительная техника


    Скачать 192.5 Kb.
    НазваниеПрактикум по дисциплине Программирование для образовательной программы по направлению 09. 03. 01 Информатика и вычислительная техника
    Дата18.04.2023
    Размер192.5 Kb.
    Формат файлаdoc
    Имя файлаlab_iwt(1).doc
    ТипПрактикум
    #1070115
    страница3 из 3
    1   2   3
    Пример обработки бинарного файла

    Составить программу, выполняющую следующие функции:

    1. Создание нового файла;

    2. Просмотр файла;

    3. Добавление информации в конец файла;

    4. Поиск по названию товара и изменение цены и количества;

    Файл создать из структур вида: название товара, его цена и количество.

    Задание выполнить в отдельных функциях. Использовать меню для выбора функций.

    //lab10_1

    #include

    #include

    #include

    struct tov {char name[10]; float c; int kol;} t1;

    void input(FILE *); // создание нового файла

    void print(FILE *); // просмотр файла

    void app(FILE *); // добавление в файл

    void find(FILE *); // поиск и изменение

    main()

    { char c;

    FILE *tf;

    while (1)

    { clrscr();

    puts(" 1 – новый файл");

    puts(" 2 – просмотр файла");

    puts(" 3 – добавление в файл");

    puts(" 4 – поиск и изменение");

    puts(" 0 - выход");

    c=getch();

    switch(c)

    { case '1':input(tf);break;

    case '2':print(tf);break;

    case '3':app(tf);break;

    case '4':find(tf);break;

    case '0':return 0;

    default : puts(" неверный режим");

    }

    }

    }

    void input(FILE *tf)

    { char ch;

    tf=fopen("file1.dat","wb"); // открытие бинарного файла для записи

    clrscr();

    printf("\n Ввод товаров\n");

    do

    { printf("\n название: "); scanf("%s",&t1.name);

    printf(" цена: "); scanf("%f",&t1.c);

    printf(" количество: "); scanf("%d",&t1.kol);

    fwrite(&t1,sizeof(t1),1,tf); // запись в файл одной структуры t1

    printf("\n Закончить? y/n ");

    ch=getch();

    }

    while (ch != 'y');

    fclose(tf);

    }

    void print(FILE *tf)

    { int i;

    clrscr();

    tf=fopen("file1.dat","rb"); // открытие бинарного файла для чтения

    i=1;

    fread(&t1,sizeof(t1),1,tf); // чтение из файла одной структуры t1

    while (!feof(tf))

    { printf("\n %3d tovar %10s cena %6.2f kolic %4d",i,t1.name,t1.c,t1.kol);

    fread(&t1,sizeof(t1),1,tf);

    i++;

    }

    getch();

    }

    void app(FILE *tf)

    { char ch;

    tf=fopen("file1.dat","ab"); // открытие бинарного файла для добавления

    clrscr();

    printf("\n Ввод товаров \n");

    do

    { printf("\n название: "); scanf("%s",&t1.name);

    printf(" цена: "); scanf("%f",&t1.c);

    printf(" количество: "); scanf("%d",&t1.kol);

    fwrite(&t1,sizeof(t1),1,tf);

    printf(" Закончить? y/n ");

    ch=getch();

    }

    while (ch != 'y');

    fclose(tf);
    }

    void find(FILE *tf)

    { char c,tov[10];

    long int i;

    tf=fopen("file1.dat","rb+"); // открытие бинарного файла для чтения и записи

    clrscr();

    puts(" Название искомого товара: ");

    gets(tov);

    fread(&t1,sizeof(t1),1,tf);

    while (!feof(tf))

    { if (strcmp(t1.name,tov)==0)

    { printf(" tovar %10s cena %6.2f kolic %d",t1.name,t1.c,t1.kol);

    printf("\n изменить? y/n ");

    c=getch();

    if (c=='y')

    { printf("\n количество: ");scanf("%d",&t1.kol);

    printf("\n цена: ");scanf("%f",&t1.c);

    i=sizeof(t1);

    fseek(tf,-i,1); // возврат на sizeof(t1) байт назад

    fwrite(&t1,sizeof(t1),1,tf); // запись изменённой структуры на прежнее место

    }

    }

    fread(&t1,sizeof(t1),1,tf);

    }

    fclose(tf);

    }
    3. ВЫПОЛНЕНИЕ РАБОТЫ

    3.1. Проанализировать приведенную программу.

    3.2. Используя функции и режим меню, создать файл из 10 записей, просмотреть файл, добавить в файл новую информацию и, при­меняя режим прямого доступа, выполнить задание по своему варианту.

    Варианты заданий

    1. Запись имеет вид: фамилия, пол, год рождения и рост. Вывести данные о самом высоком спортсмене.

    2. Запись имеет вид: название вуза, число студентов, количес­тво факультетов. Добавить в конец файла информацию о трех новых вузах и посчитать общее число студентов.

    3. Запись имеет вид: название издания, газеты или журнала, стоимость одного экземпляра, количество экземпляров в год. Вывести на печать информацию о самом дешевом издании.

    4. Запись имеет вид: фамилия студента, номер зачетной книжки, 4 оценки за экзамен. Выводить информацию о всех двоечниках и корректировать ее.

    5. Запись имеет вид: фамилия спортсмена, его номер, количество набранных очков. Поменять местами в файле записи о первых двух спортсменах. *

    6. Запись имеет вид: фамилия, номер телефона, дата рождения. Внести в начало списка информацию о четырех новых знакомых.

    7. Запись имеет вид: название инструмента, число, месяц и год изготовления. Вывести на печать информацию об инструменте с самым большим сроком использования и выполнить корректировку этой записи.

    8. Запись имеет вид: номер читательского билета, автор книги, название, дата заказа. Вывести на экран содержимое файла. Поменять местами первую и последнюю записи в файле.

    9. Запись имеет вид: фамилия спортсмена, его номер, количество набранных очков. Удалить из списка информацию о спортсмене с наименьшим количеством очков.

    10. Запись имеет вид: фамилия, количество вещей, общий вес. Удалите из файла сведения о багаже, общий вес вещей в котором меньше, чем 10 кг.

    4. КОНТРОЛЬНЫЕ ВОПРОСЫ

    1. Чем отличается файл от массива?

    2. Что понимается под чтением, и что под записью в файл?

    3. Режимы доступа к файлам.

    4. Назначение функций fseek, ftell.

    Привести пример корректировки К-той записи в файле прямого доступа
    Список литературы

    1. Баженова И.Ю. Введение в программирование [Электронный ресурс]: учебное пособие/ Баженова И.Ю., Сухомлин В.А.— Электрон. текстовые данные.— М.: БИНОМ. Лаборатория знаний, Интернет-Университет Информационных Технологий (ИНТУИТ), 2007.— 326 c.— Режим доступа: http://www.iprbookshop.ru/22400.— ЭБС «IPRbooks»

    2. Борисенко В.В. Основы программирования [Электронный ресурс]/ Борисенко В.В.— Электрон. текстовые данные.— М.: Интернет-Университет Информационных Технологий (ИНТУИТ), 2016.— 323 c.— Режим доступа: http://www.iprbookshop.ru/52206.— ЭБС «IPRbooks»

    3. Поляков А.Ю. Программирование [Электронный ресурс]: практикум/ Поляков А.Ю., Полякова А.Ю., Перышкова Е.Н.— Электрон. текстовые данные.— Новосибирск: Сибирский государственный университет телекоммуникаций и информатики, 2015.— 55 c.— Режим доступа: http://www.iprbookshop.ru/55494.— ЭБС «IPRbooks»

    4. Устинов В.В. Основы алгоритмизации и программирование. Часть 2 [Электронный ресурс]: конспект лекций/ Устинов В.В.— Электрон. текстовые данные.— Новосибирск: Новосибирский государственный технический университет, 2013.— 32 c.— Режим доступа: http://www.iprbookshop.ru/44675.— ЭБС «IPRbooks»
    1   2   3


    написать администратору сайта