Методические указания ЛР10_2014 (1079947), страница 2
Текст из файла (страница 2)
14. Разработать отдельную функцию распечатки файла с записями своих структурных переменных. Проверить работу этой функции.
15. Разработать функцию определения числа записей в файле. Проверить ее работу на своем файле.
16. Разработать функцию очистки файла записей. Проверить ее работу совместно с функцией распечатки файла записей – ничего не должно напечататься, кроме сообщения “ Записей в файле нет!” – из функции печати. Кроме этого проверить размер файла в файл – менеджере. Этот размер должен быть равен нулю.
17. Проверить использование функций удаления файла и снятия атрибута защиты файла, взяв ее из проекта примера. Заполним снова и распечатаем.
18. Разработать функцию Swap двух структурных переменных (по адресу элемента) структурных переменных. Продемонстрировать и проверить работу этой функции на отдельных переменных и элементах массива.
19. На основе этой функции (Swap) выполнить сортировку массива структурных переменных по одному числовому значению, используя метод пузырьковой сортировки. Оптимизацию алгоритма сортировки не проводить. Распечатать массив до и после сортировки.
20. Разработать функцию сортировки массива структурных переменных по числовому значению. Проверить ее работу. Распечатать массив до и после сортировки.
21. Разработать функцию сортировки файла структурных переменных (записей). Алгоритм функции включает три шага: (1) чтение двоичного файла в массив – уже есть готовая функция; (2) пузырьковая сортировка массива структурных переменных– уже есть готовая функция и (3) перезапись массива в двоичный файл – уже есть готовая функция. Проверить сортировку файлов со структурными переменными.
22. Прочитать 2-ю запись из сформированного файла структурных переменных и ее распечатать с помощью собственной функции.
22. Создать функцию для чтения записи из сформированного файла структурных переменных по номеру и ее распечатать с помощью собственной функции.
22. Разработать и фрагмент программы для интегральных вычислений в БД (см. варианты в таблице). Интегральные вычисления для вашего файла структурных переменных заключаются в последовательном чтении всех записей файла. Из каждой из полученных записей для отдельного параметра выполняется суммирование, подсчет, сравнение и т.д. Шаги выполнения этой задачи могут быть такими: чтение файла в массив, вычисления по массиву в цикле (например, числа пятерок), обработка результата (например, получение среднего числа пятерок у студента) и распечатка результата. Можно в цикле по шагам читать последовательно все записи и вычислять интегральные характеристики.
22. Оформить в виде функции фрагмент программы для вычисления интегральной характеристики по вашему варианту (см. предыдущее задание).
7 Дополнительные требования для сильных студентов (Уровень С):
Варианты заданий и примеры рассмотрены для случая использования контейнера типа массив для хранения записей в программе. Студентам, которые хотят освоить программирование на самом высоком уровне предлагается также самостоятельно решить комплекс заданий, перечисленных ниже для контейнера типа список, сделанных на базе ЛР № 7 и 8.
23. Разработать специальные функции для нашей структуры и файла БД, содержащего записи структурных переменных, для следующих операций:
23. Разработать специальные функции для нашей структуры и файла БД, содержащего записи структурных переменных, для следующих операций:
23.1 Добавления записи в файл БД (в начало).
23.2 Добавления записи в файл БД (в конец).
23.3 Добавления записи в файл БД (по номеру записи).
23.4 Удаления записи в файл БД (в начало).
23.5 Удаления записи в файл БД (в конец).
23.6 Удаления записи в файл БД (по номеру записи).
23.7 Поиска и чтения записи из файла БД (по номеру записи).
23.8 Поиска и записи и прочитать ее и определить номер (по конкретному значению поля имени). – Возврат номера!!!
23.8 Замены записи в файле БД по номеру (вместо одной другая)
23.9 Взаимного обмена (swap!) записей по двум номерам в файле БД.
23.10 Удаления файла БД.
Для всех функций и операций выполнить качественную проверку ее работы: отладку и тестирование во всех режимах. Для самых продвинутых студентов предлагается вариант замены массив анна списки во всех заданиях.
8 Требование к отчету по ЛР
Требования к отчету по 10 ЛР соответствуют требованиям к другим ЛР по дисциплине ОП. См. Документ на сайте.
9 Контрольные вопросы к ДЗ/КЛР
-
Для чего нужны проекты и в чем их преимущество (три)?
-
Дайте определение понятия программа.
-
Что такое сборка программы и как ее сделать?
-
Какие составляющие циклов вы знаете?
-
В чем преимущество возможности ветвления в программах?
-
Какие элементы блок схем вы знаете?
-
Что такое динамические массивы?
-
Какие новые операции для указателей вы знаете?
-
Как вычислить размер массива при выполнении программы?
-
Как определить длину строки?
-
Как сравнить две строки?
-
Что такое Null Terminated String?
-
Как преобразовать число в строку и наоборот?
-
Что такое вызов функции, фактические параметры?
-
Что такое прототип функции, его составляющие и для чего он используется?
-
Какие параметры можно задать для функции main?
-
Как лучше задавать название функции?
-
Что такое определение функции, его составляющие?
-
В чем массивы и структуры отличаются?
-
Как выполнить инициализацию структуры при ее описании?
-
Как работать с полями структуры через указатель?
-
Для каких случаев можно использовать динамические структуры?
-
Как можно передать структурную переменную в функцию? Массив структур?
-
Могут ли в структуре использованные другие структурные переменные?
-
Дайте определение понятия файл.
-
Какие основные типы файлов вы знаете?
-
Зачем используются операции открытия и закрытия файлов?
-
Какие уровни работы с файлами вы знаете?
-
Какие функции используются для чтения файлов?
-
Какие библиотеки нужно подключить для низкоуровневого ввода и вывода?
-
Что такое список как структура данных? Дайте определение.
-
Что такое элемент списка? Какие структуры элемента списка вы знаете?
-
Какие особенности списков вы знаете по сравнению с массивами?
-
Что такое однонаправленные и двунаправленные списки? Их преимущества?
-
Как используется структура типа список? Что такое хвост и голова списка
10 Литература.
Основная литература
-
Список литературы, доступные книги и необходимые пособия для ЛР ОП размещены на сайте www.sergebolshakov.ru на страничке “2-й к СУЦ”. Пароль для доступа можно взять у преподавателя или старосты группы.
-
Керниган Б., Ритчи Д. К36 Язык программирования Си.\Пер. с англ., 3-е изд., испр. - СПб.: "Невский Диалект", 2001. - 352 с.: ил.
-
Касюк, С.Т. Курс программирования на языке Си: конспект лекций/С.Т. Касюк. — Челябинск: Издательский центр ЮУрГУ, 2010. — 175 с.
-
MSDN Library for Visual Studio 2005 (Vicrosoft Document Explorer – входить в состав дистрибутива VS. Нужно обязательно развернуть при установке VS VS или настроить доступ через Интернет.)
Дополнительная литература
-
Общее методическое пособие по курсу для выполнения ЛР и ДЗ (см. на сайте 1-й курс www.sergebolshakov.ru) – см. кнопку в конце каждого раздела сайта!!!
-
Другие методические материалы по дисциплине с сайта www.sergebolshakov.ru.
-
Конспекты лекций по дисциплине “Основы программирования”.
-
Подбельский В.В. Язык Си++: Учебное пособие. – М.: Финансы и статистика, 2003.
-
5. Подбельский В.В. Стандартный СИ++: Учебное пособие. – М.: Финансы и статистика, 2008.
-
Г. Шилдт “С++ Базовый курс”: Пер. с англ.- М., Издательский дом “Вильямс”, 2011 г. – 672с
-
Фридланд А.Я. Информатика и компьютерные технологии. Основные термины: толковый слов. : 3-е изд. Испр. и доп./ А.Я. Фридланд, Л.С. Хааамирова, И.А. Фридланд. – М.:ООО «Издательство Астрель»: ООО «Издательство АСТ». 2003 – 272с.
-
Г. Шилдт “С++ Руководство для начинающих” : Пер. с англ. - М., Издательский дом “Вильямс”, 2005 г. – 672с
-
Г. Шилдт “Полный справочник по С++”: Пер. с англ.- М., Издательский дом “Вильямс”, 2006 г. – 800с
-
Бьерн Страуструп "Язык программирования С++"- М., Бином, 2010 г.
11 Приложения
12 Главный модуль File_P3.cpp
File_P3.cpp – ГЛАВНЫЙ МОДУЛЬ
// Комплексния лабораторгная работа
#include "stdafx.h"
#include "FILE_P3.h"
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
//#include <afx.h>
#include <stdio.h>
//#include <iostream>
#include <conio.h>
#include <string>
#include <string.h>
#include <memory.h>
//
#include <errno.h>
//using namespace std;
///
///////////////////////////////////////
// Задание для работы с файлами (уровнь А)
//////////////////////////////////////
// Прототипы функций работы с файлами
// МУ п.5
void PrintStudent(Student * pS);
// МУ п.8
void StudPrintMas( Student * pMas , int Razm);
// МУ п.12
void StudFileToMas( const char * FileName , Student * pMas , int * pRazm);
// МУ п.13
void StudMasToFile( const char * FileName , Student * pMas , int Razm);
// МУ п.14
void StudPrintFile( const char * FileName );
// МУ п.15
int StudFileCount( const char * FileName , int * pRazm);
// МУ п.16
void StudClearFile(const char * FileName);
// МУ п.17
void ClearReadonlyFile(const char * FileName);
// МУ п.18
void SwapStudent ( Student * pA , Student * pB );
// МУ п.20
void StudSortMasNum( Student * pMas , int Razm );
// МУ п.21
void StudSortOklad(const char * FileName );
// МУ п.22
double StudSumm( const char * FileName , double * Sum);
///////////////////////////////////////
// Задание для работы с файлами (уровнь В и С)
//////////////////////////////////////
// МУ п.21
void StudSortName(const char * FileName );
// МУ п.21
void StudSortNum(const char * FileName );
// МУ п.23.1/2
void StudAdd(const char * FileName , Student S , TypeAddDel TAD );
// МУ п.23.4/5
void StudDel(const char * FileName , TypeAddDel TAD );
// МУ п.23.3
void StudAddNum(const char * FileName , Student S , int Numb );
// МУ п.23.6
void StudDelNum(const char * FileName , int Numb );
// МУ п.23.7
void FindStudNum( const char * FileName , Student * pS , int Numb);
// МУ п.23.8
void ChangeStudNum( const char * FileName , Student pS , int Numb);
// МУ п.23.9
int FindStudName( const char * FileName , Student * pS , const char * FindName );
// МУ п.23.10
void SwapStudFile( const char * FileName , int NumA ,int NumB);
// МУ п.17/23ю11
void StudRemoveFile(const char * FileName);
/////////////////////////////////
void main(void)
{
system(" chcp 1251 > nul");
//////////////////////////////////// СИ начало
int pFBin = 0;
/////////////////////////////////////////////////////
//////////////
//StudRemoveFile("BDStud.bin"); // Тестирование БД
////////
// МУ п.3
////////
Student Stud1 ={ "Лаптева" , 1 , 1000.0};
////////
// МУ п.4
////////
Student Stud2;
Stud2.Num = 2;
Stud2.Oklad = 2000.00;
strcpy(Stud2.Name , "Аксенова");
printf ("Пункт МУ 4:\n");
printf( "Stud2: Имя = %-15s Номер = %2d Стипендия = %8.2lf \n\n",
Stud2.Name , Stud2.Num, Stud2.Oklad );
////////
// МУ п.5
////////
printf ("Пункт МУ 5:\n");
PrintStudent(&Stud1) ;
PrintStudent(&Stud2) ;
////////
// МУ п.6















