Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodicheskie_ukazania_po_vypolneniyu_laborator...doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
358.91 Кб
Скачать

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 ) ;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]