
- •1.Общие требования к содержанию отчетов
- •1. Пример отчета о выполнении лабораторной работы №1
- •2.Описание входных и выходных данных
- •3.Набор тестов
- •4. Описание алгоритма.
- •6.Текст программы.
- •7.Анализ результатов и выводы
- •1. Пример отчета о выполнении лабораторной работы №2
- •6.Текст программы.
- •7.Анализ результатов и выводы.
- •2.Описание входных и выходных данных
- •3.Набор тестов
- •4. Описание алгоритма.
- •6.Текст программы.
- •7.Анализ результатов и выводы
- •1. Постановка задачи.
- •2.Описание входных и выходных данных
- •3. Набор тестов
- •4. Описание алгоритма.
- •6.Текст программы.
- •7.Анализ результатов и выводы.
- •6.Текст программы
- •7.Анализ результатов и выводы.
- •2. Пример отчета о выполнении лабораторной работы № 4
- •6.Текст программы:
- •7.Анализ результатов и выводы.
7.Анализ результатов и выводы.
Приведенная выше программа осуществляет вычисление среднего арифметического элементов расположенных в четных строках двухмерного массива, при этом используются три функции:
void CreateMas1(int a[][p], int k); - заполняет массив случ. числами;
void VivodMas1(const int a[][p], int k); - выводит массив на экран;
double SrArChetStok(int a[][p], int k); - вычис. среднее арифметическое.
В программе учитывается ввод матрицы содержащей только одну строку, в этом случае на экран выводится:
Среднее арифметическое элементов в четных строках = 0.000000
Недостатком программы является то, что отсутствует проверка на ввод отрицательных значений для размера матрицы.
2. Пример отчета о выполнении лабораторной работы № 4
ЛАБОРАТОРНАЯ РАБОТА № 2
На тему: «Работа с типизированным файлом»
Постановка задачи.
Предусмотреть в программе меню, позволяющее выполнить следующие действия:
1. Создание типизированного файла
2. Добавление в файл записей
3. Удаление из файла записей (?)
4. Просмотр всего файла
5. Обновление записи с заданным номером
6. Определить в каком году было больше всего дел связанных с банкротством
7. Выход
Описание входных и выходных данных
Исходные данные:
Результирующие данные:
Программа для работы с базой судебных дел.
Основная программа:
начало
ch
1
CreateOpenFile(NameFile,Flag)
2
RecordSudDelo(NameFile,SudDelo,flag)
3
DeleteSudDelo(NameFile,SudDelo,flag)
4
VivodFile()
5
UpdateSudDelo(NameFile,SudDelo,flag)
6
SearchDeloYear(DDD)
menu()
конец
Блок схема 6 функции:
SearchDeloYear(char DDD[10])
f=fopen(NameFile,"r+")
OutputSudDelo(SudDelo)
6.Текст программы:
//Работа с типизированным файлом
//база данных "Судебное дело"
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <iostream.h>
#include <string.h>
struct TFio
{
char SurName[15];
char Name[15];
char SecName[15];
};
//тип данных для даты
struct TIsObv
{
TFio Fio;
char Tel[25];
char Firma[25];
};
struct TData
{
int D,M,G;
};
//тип данных для времени проведения судебного разбирательства
struct TSudDelo
{
char PredSudRaz[25];
TData Data;
TIsObv Ist;
TIsObv Obv;
};
//тип данных для имени файла
typedef char TName[25];
//тип данных для файловой переменной
typedef FILE TFile;
//переменная для товара
TSudDelo SudDelo;
//переменная для имени файла
TName NameFile;
//файловая переменная
TFile *f;
//флаг открытия файла
int flag=0;
//** вывод меню ************************************************************
void menu(void)
{ clrscr();
printf("******** М Е Н Ю ********\n\n");
printf("[1]-Создание/открытие базы судебного разбирательства\n");
printf("[2]-Добавление судебного разбирательства в базу\n");
printf("[3]-Удаление судебного разбирательства из базы\n");
printf("[4]-Просмотр всей базы\n");
printf("[5]-Обновление записи с заданным номером\n");
printf("[6]-Выполнение задания. Поиск судебного разбирательства по названию.\n");
printf("[ ESC ]-Выход\n");
}
//** ввод товара **************************************************
void InputSudDelo(TSudDelo &SudDelo)
{
cout<<"Добавление предмета судебного разбирательства->:\n";
gets(SudDelo.PredSudRaz);
cout<<"дата дела:\n";
cout<<"День->"; cin>>SudDelo.Data.D;
cout<<"Месяц->"; cin>>SudDelo.Data.M;
cout<<"Год->"; cin>>SudDelo.Data.G;
cout<<"Истец\n";
cout<<"Введите Фамилию--";
cin>>SudDelo.Ist.Fio.SurName;
cout<<"Введите имя--";
cin>>SudDelo.Ist.Fio.Name;
cout<<"Введите Отчество--";
cin>>SudDelo.Ist.Fio.SecName;
cout<<"Введите телефон--";
cin>>SudDelo.Ist.Tel;
cout<<"Название фирмы--";
cin>>SudDelo.Ist.Firma;
cout<<"Обвиняемый\n";
cout<<"Введите Фамилию--";
cin>>SudDelo.Obv.Fio.SurName;
cout<<"Введите имя--";
cin>>SudDelo.Obv.Fio.Name;
cout<<"Введите Отчество--";
cin>>SudDelo.Obv.Fio.SecName;
cout<<"Введите телефон--";
cin>>SudDelo.Obv.Tel;
cout<<"Название фирмы--";
cin>>SudDelo.Obv.Firma;
}
//** вывод судебного разбирательства на экран ************************************************
void OutputSudDelo(TSudDelo SudDelo)
{
printf("Предмет судебного разбирательства: %s\n",SudDelo.PredSudRaz);
printf("Дата судебного разбирательства: %d:%d:%d\n",SudDelo.Data.D,SudDelo.Data.M,SudDelo.Data.G);
printf("Данные о исце:\n");
cout <<"ФИО->"<<SudDelo.Ist.Fio.SurName
<<" "
<<SudDelo.Ist.Fio.Name
<<" "
<<SudDelo.Ist.Fio.SecName
<<"\nTelefon->"
<<SudDelo.Ist.Tel
<<"\nFirma->"
<<SudDelo.Ist.Firma;
printf("\nДанные о обвиняемом:\n");
cout <<"ФИО->"<<SudDelo.Obv.Fio.SurName
<<" "
<<SudDelo.Obv.Fio.Name
<<" "
<<SudDelo.Obv.Fio.SecName
<<"\nTelefon->"
<<SudDelo.Obv.Tel
<<"\nFirma->"
<<SudDelo.Obv.Firma
<<"\n";
}
//** создание/открытие файла базы данных ********************************
void CreateOpenFile( TName &NameFile,int &flag )
{
char ch;
flag=0;
printf("Введите имя файла для работы-->");
//scanf("%s",&NameFile);
gets(NameFile);
f=fopen(NameFile,"r");
if (f==NULL)
do
{
clrscr();
printf("ФАЙЛА с именем %s НЕТ.\n\
Создать файл с именем %s ?\n",NameFile,NameFile);
printf("Нажмите [ Y ] / [ N ]\n");
ch=getch();
if (ch=='Y'||ch=='y')
{
f=fopen(NameFile,"w");
printf("Файл с именем %s создан.\n",NameFile);
printf("\nДля продолжения нажмите любую клавашу\n");
getch();
flag=1;
}
if (ch=='N'||ch=='n')
{
printf ("Файл не создан.\n");
printf("\nДля продолжения нажмите любую клавашу\n");
getch();
}
}
while ( ! (ch =='Y' || ch=='y' || ch=='N' || ch=='n'));
else
{flag=1;
printf("Файл успешно открыт\n");
printf("\nДля продолжения нажмите любую клавишу\n");
getch();
}
fclose(f);
}
//** добавление записи (судебного дела) в файл (в базу данных) **********
void RecordSudDelo(TName NameFile,TSudDelo &SudDelo, int flag)
{
if (flag)
{
f=fopen(NameFile,"a");
InputSudDelo(SudDelo);
fwrite(&SudDelo,sizeof(SudDelo),1,f);
fclose(f);
}
else
{
printf("\nВыберите файл для работы.\n");
printf("Нажмите [ 1 ] в разделе М Е Н Ю.");
getch();
}
}
//** вывод файла (базы данных) на экран *****************
void VivodFile()
{
int i=0;
if (flag)
{
f=fopen(NameFile,"r+");
printf("******** Вывод файла на экран ********\n");
printf("****************************************\n");
while (fread(&SudDelo,sizeof(SudDelo),1,f) )
{
//printf("%d",ftell(f));
cout<<"Номер записи = "<<i+1<<"\n\n";
OutputSudDelo(SudDelo);
printf("*************%d***************************\n",sizeof(SudDelo));
i++;
if (i % 2 == 0) //вывод по несколько записей (товаров)
{
getch();
clrscr();
printf("******** Вывод файла на экран ********\n");
printf("****************************************\n");
}
}
getch();
fclose(f);
}
else
{
printf("\nВыберите файл для работы.\n");
printf("Нажмите [ 1 ] в разделе М Е Н Ю.");
getch();
}
}
//** размер файла *****************************
long filesize(TFile *f)
{
long curpos, length;
curpos = ftell(f); //запоминаем текущее положение
fseek(f, 0L, SEEK_END); //перемещаем на конец файла
length = ftell(f); //запоминаем положение в конце файла
fseek(f, curpos, SEEK_SET); //перемещаем на старое положение
return length;
}
//** обновление записи с заданным номером ******
void UpdateSudDelo(TName NameFile, TSudDelo &SudDelo, int flag)
{
long i=0;
if (flag)
{
f=fopen(NameFile,"r+");
printf("******** Обновление записи с заданным номером ********\n\n");
printf("********************************************************\n\n");
cout<<"Введите номер записи для обновления "
<<"из "
<<(filesize(f)/sizeof(SudDelo))
<<" --> ";
cin>>i;
long q;
//перемещаемся на запись с номером i
fseek(f, (i-1) * sizeof(SudDelo) ,SEEK_CUR);
//запоминаем текущее положение
fgetpos(f,&q);
fread(&SudDelo,sizeof(SudDelo),1,f);
OutputSudDelo(SudDelo);
printf("****************************************\n");
char ch;
cout<<"Обновить данные?\nНажмите [ Y ] / [ N ]\n";
do
{
//clrscr();
ch=getch();
if (ch=='Y'||ch=='y')
{
//вводим новые значения
InputSudDelo(SudDelo);
//fseek(f, (i-1) * sizeof(SudDelo) ,SEEK_CUR);
//переходим на старое место
fsetpos(f,&q);
//записываем новые значения
fwrite(&SudDelo,sizeof(SudDelo),1,f);
cout<<"Данные обновлены.\n";
}
if (ch=='N'||ch=='n')
{
printf ("Данные не обновленны.\n");
}
}
while ( ! (ch =='Y' || ch=='y' || ch=='N' || ch=='n'));
printf("\nДля продолжения нажмите любую клавашу\n");
getch();
fclose(f);
}
else
{
printf("\nВыберите файл для работы.\n");
printf("Нажмите [ 1 ] в разделе М Е Н Ю.");
getch();
}
}
//** удаление товара из базы **********************************
void DeleteSudDelo(TName NameFile, TSudDelo &SudDelo, int flag)
{
long i=0,k=0;
TFile *g;
if (flag)
{
f=fopen(NameFile,"r+");
printf("******** Удаление записи с заданным номером ********\n\n");
printf("********************************************************\n\n");
cout<<"Введите номер записи для удаления "
<<"из "
<<(filesize(f)/sizeof(SudDelo))
<<" --> ";
cin>>i;
//перемещаемся на запись с номером i
fseek(f, (i-1) * sizeof(SudDelo) ,SEEK_CUR);
fread(&SudDelo,sizeof(SudDelo),1,f);
OutputSudDelo(SudDelo);
printf("****************************************\n");
char ch;
cout<<"Удалить данные?\nНажмите [ Y ] / [ N ]\n";
do
{
//clrscr();
ch=getch();
if (ch=='Y'||ch=='y')
{
fseek(f,0L,SEEK_SET);
cout<<"****"<<ftell(f);
g=fopen("Temp","w");
while (fread(&SudDelo,sizeof(SudDelo),1,f) )
{
if (k != (i-1) ) fwrite(&SudDelo,sizeof(SudDelo),1,g);
k++;
}
cout<<"Данные обновлены.\n";
fclose(g);
fclose(f);
remove(NameFile); //удаляем старый файл
rename("Temp",NameFile);//переименовываем временный файл
}
if (ch=='N'||ch=='n')
{
printf ("Данные не обновленны.\n");
}
}
while ( ! (ch =='Y' || ch=='y' || ch=='N' || ch=='n'));
printf("\nДля продолжения нажмите любую клавашу\n");
getch();
//fclose(f);
}
else
{
printf("\nВыберите файл для работы.\n");
printf("Нажмите [ 1 ] в разделе М Е Н Ю.");
getch();
}
}
//*******************************************
void SearchDeloYear(char DDD[10])
{
int i=0;
if (flag)
{
f=fopen(NameFile,"r+");
printf("******** ... на экран ********\n");
printf("****************************************\n");
while (fread(&SudDelo,sizeof(SudDelo),1,f) )
{
if ( strcmp( SudDelo.PredSudRaz,DDD) == 0)
{
OutputSudDelo(SudDelo);
printf("*************%d***************************\n",sizeof(SudDelo));
i++;
if (i % 2 == 0) //вывод по несколько записей (товаров)
{
getch();
clrscr();
printf("******** ...... на экран ********\n");
printf("****************************************\n");
}
}
}
getch();
fclose(f);
}
else
{
printf("\nВыберите файл для работы.\n");
printf("Нажмите [ 1 ] в разделе М Е Н Ю.");
getch();
}
}
//Начало программы
void main()
{
char ch;
clrscr();
do
{
menu();
ch=getch();
switch (ch)
{
case '1': clrscr();
CreateOpenFile(NameFile,flag);
break;
case '2': clrscr();
RecordSudDelo(NameFile,SudDelo,flag);
//getch();
break;
case '3': clrscr();
printf("Удаление товара из базы данных\n");
DeleteSudDelo(NameFile,SudDelo,flag);
getch();
break;
case '4': clrscr();
VivodFile();
break;
case '5': clrscr();
//printf("Обновление записи с заданным номером\n");
UpdateSudDelo(NameFile,SudDelo,flag);
//getch();
break;
case '6': printf("Выполнение задания в соответствии с заданием\n");
cout <<"Введите предмет суд. разбирательства-->";
char DDD[10];
cin>>DDD;
SearchDeloYear(DDD);
getch();
break;
// case '8': exit(1);
}
}
while ( ch!=27 ) ;
}