Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Звіт_1.doc
Скачиваний:
3
Добавлен:
06.05.2019
Размер:
299.52 Кб
Скачать

Текст програми

#include <iostream.h>

#include <stdio.h>

#include <windows.h>

#include <conio.h>

struct avto{

int id;

char virob[10];

char mod[10];

char kom[10];

int obem;

int ks;

int rik;

int max;

char shin[10];

char shasi[10];

int var;

};

int a,b,c,r;

int q=0,x=0,i=0,j=0,k=0,w=0,l=0,p=0,z=0,v=0;

char *name,str[50],st[10],u[10];

FILE *f,*g,*t,*t2;

avto s0,s,s1;

void Create();

void Insert();

void Insert_n();

void Print();

void Reading();

void Deleting();

void Rename();

void Create_Pov();

void Insert_Pov(int e);

void Insert_n2();

void Print_Pov();

void Rename_Pov();

void End_Pov();

void Reading_Pov();

//Головна функція з меню програми

int main()

{

setlocale(0,"");

cout<<"Лабораторна робота №1"<<endl<<"Тема:"<<endl<<"Послiдовний метод доступу до файлiв на зовнiшнх запам’ятовуючих пристроях";

cout<<endl<<"Виконав"<<endl;

cout<<"cтудент групи КН-24"<<endl<<"Гурський Андрiй"<<endl;

cout<<"Тема завдання: Спортивнi болiди\n"<<endl;

a0:

cout<<"Виберiть варiант дiї:"<<endl;

cout<<"1-Послiдовний метод доступу до файлiв на ЗЗП"<<endl;

cout<<"2-Введення файлу шляхом створення файлу групової обробки повiдомлень"<<endl;

cout<<"0-Вихiд iз програми"<<endl;

cin>>a;

system("cls");

switch(a)

{

case 1:goto a1;

break;

case 2:goto a2_1;

break;

case 0:goto a3;

break;

default:

{

cout<<"Такого варiанту не iснує"<<endl;

goto a0;

}

}

a1:

system("cls");

cout<<"Послiдовний метод доступу до файлiв на ЗЗП"<<endl;

cout<<"Виберiть варiант дiї:"<<endl;

cout<<"1-Створення файлу БД"<<endl;

cout<<"2-Друк БД"<<endl;

cout<<"3-Читання за вказаним ключем"<<endl;

cout<<"4-Пошук за вказаним ключем"<<endl;

cout<<"5-Вставлення запису"<<endl;

cout<<"6-Видалення запису"<<endl;

cout<<"7-Модифiкацiя запису"<<endl;

cout<<"0-Вихiд в головне меню програми"<<endl;

cin>>b;

system("cls");

switch(b)

{

case 1: Create();

cout<<"Натиснiть будь-яку клавiшу...";

getch();

system("cls");

goto a1;

break;

case 2: Print();

cout<<"Натиснiть будь-яку клавiшу...";

getch();

system("cls");

goto a1;

break;

case 3: Reading();

cout<<"Натиснiть будь-яку клавiшу...";

getch();

system("cls");

goto a1;

break;

case 4: Reading();

cout<<"Натиснiть будь-яку клавiшу...";

getch();

system("cls");

goto a1;

break;

case 5:

cout<<"Введiть елементи полiв БД:"<<endl;

cout<<"ID:";

cin>>s0.id;

cout<<"Виробник:";

cin>>s0.virob;

cout<<"Модель:";

cin>>s0.mod;

cout<<"Рiк випуску:";

cin>>s0.rik;

cout<<"Max швидiксть:";

cin>>s0.max;

cout<<"Шини:";

cin>>s0.shin;

cout<<"Команда:";

cin>>s0.kom;

cout<<"Кiнськi сили:";

cin>>s0.ks;

cout<<"Об'єм двигуна:";

cin>>s0.obem;

cout<<"Шасi:";

cin>>s0.shasi;

cout<<endl;

k=0;l=0;

if(s0.id==0){system("cls");cout<<"Ви ввели ID=0"<<endl;k=1;w=1;}

if(s0.id<0){system("cls");cout<<"Ви ввели вiдємне ID"<<endl;k=1;w=1;}

if(s0.id>32767){system("cls");cout<<"Ви вийшли за межi можливих ID"<<endl;k=1;w=1;}

if(k!=1&&w!=1)

Insert();

cout<<"Натиснiть будь-яку клавiшу...";

getch();

system("cls");

goto a1;

break;

case 6: cout<<"Введiть ID елемента для видалення"<<endl;

cin>>s0.id;

Deleting();

cout<<"Натиснiть будь-яку клавiшу...";

getch();

system("cls");

goto a1;

break;

case 7: Rename();

cout<<"Натиснiть будь-яку клавiшу...";

getch();

system("cls");

goto a1;

break;

case 0: goto a0;

break;

default:

{

cout<<"Такого варiанту не iснує"<<endl;

goto a1;

}

}

a2_1:

cout<<"Введення файлу шляхом створення файлу групової обробки повiдомлень"<<endl;

cout<<"Виберiть варiант дiї:"<<endl;

cout<<"1-Створення файлу повiдомлення"<<endl;

cout<<"2-Друк файлу повiдомлення"<<endl;

cout<<"3-Пошук за вказаним ключем у файлi повiдомлення"<<endl;

cout<<"4-Вставлення запису у файл повiдомлення"<<endl;

cout<<"5-Видалення запису у файл повiдомлення"<<endl;

cout<<"6-Модифiкацiя запису у файлi повiдомлення"<<endl;

cout<<"0-Внесення змiн у файл БД i вихiд в головне меню програми"<<endl;

cin>>b;

system("cls");

switch(b)

{

case 1: Create_Pov();

cout<<"Натиснiть будь-яку клавiшу...";

getch();

system("cls");

goto a2_1;

break;

case 2: Print_Pov();

cout<<"Натиснiть будь-яку клавiшу...";

getch();

system("cls");

goto a2_1;

break;

case 3: Reading_Pov();

cout<<"Натиснiть будь-яку клавiшу...";

getch();

system("cls");

goto a2_1;

break;

case 4:

cout<<"Введiть елементи полiв БД:"<<endl;

cout<<"ID:";

cin>>s0.id;

cout<<"Виробник:";

cin>>s0.virob;

cout<<"Модель:";

cin>>s0.mod;

cout<<"Рiк випуску:";

cin>>s0.rik;

cout<<"Max швидiксть:";

cin>>s0.max;

cout<<"Шини:";

cin>>s0.shin;

cout<<"Команда:";

cin>>s0.kom;

cout<<"Кiнськi сили:";

cin>>s0.ks;

cout<<"Об'єм двигуна:";

cin>>s0.obem;

cout<<"Шасi:";

cin>>s0.shasi;

cout<<endl;

k=0;

if(s0.id==0){system("cls");cout<<"Ви ввели ID=0"<<endl;k=1;}

if(s0.id<0){system("cls");cout<<"Ви ввели вiдємне ID"<<endl;k=1;}

if(s0.id>=32767){system("cls");cout<<"Ви вийшли за межi можливих ID"<<endl;k=1;}

if(k!=1)

Insert_Pov(4);

system("cls");

cout<<"Операцiю виконано"<<endl;

cout<<"Натиснiть будь-яку клавiшу...";

getch();

system("cls");

goto a2_1;

break;

case 5: cout<<"Введiть значення елемента для видалення"<<endl;

cout<<"ID:";

cin>>s0.id;

cout<<"Виробник:";

cin>>s0.virob;

cout<<"Модель:";

cin>>s0.mod;

cout<<"Рiк випуску:";

cin>>s0.rik;

cout<<"Max швидiксть:";

cin>>s0.max;

cout<<"Шини:";

cin>>s0.shin;

cout<<"Команда:";

cin>>s0.kom;

cout<<"Кiнськi сили:";

cin>>s0.ks;

cout<<"Об'єм двигуна:";

cin>>s0.obem;

cout<<"Шасi:";

cin>>s0.shasi;

cout<<endl;

Insert_Pov(5);

cout<<"Натиснiть будь-яку клавiшу...";

getch();

system("cls");

goto a2_1;

break;

case 6: cout<<"Введiть ID елемента для модифiкацiї"<<endl;

cin>>s0.id;

cout<<"Введiть новi елементи поля БД:"<<endl;

cout<<"Виробник:";

cin>>s0.virob;

cout<<"Модель:";

cin>>s0.mod;

cout<<"Рiк випуску:";

cin>>s0.rik;

cout<<"Max швидiксть:";

cin>>s0.max;

cout<<"Шини:";

cin>>s0.shin;

cout<<"Команда:";

cin>>s0.kom;

cout<<"Кiнськi сили:";

cin>>s0.ks;

cout<<"Об'єм двигуна:";

cin>>s0.obem;

cout<<"Шасi:";

cin>>s0.shasi;

cout<<endl;

Insert_Pov(6);

cout<<"Натиснiть будь-яку клавiшу...";

getch();

system("cls");

goto a2_1;

break;

case 0: End_Pov();

cout<<"Натиснiть будь-яку клавiшу...";

getch();

system("cls");

goto a0;

break;

default:

{

cout<<"Такого варiанту не iснує"<<endl;

goto a1;

}

}

a3:

cout<<"Програму завершено";

}

//Функція для створення нового файлу БД або продовження попереднього

void Create()

{ system("cls");

cout<<"Введiть адресу створення файлу БД:"<<endl;

cin>>str;

name=str;

if((f=fopen(name, "r")) != NULL)

{

cout<<"Файл вже створено"<<endl;

a4: cout<<"Виберiть варiант дiї:"<<endl;

cout<<"1-Створити нову БД"<<endl;

cout<<"2-Продовжити роботу з поточною БД"<<endl;

cin>>q;

system("cls");

switch(q){

case 1:

f=fopen(name, "w");

cout<<"Файл створено"<<endl;

break;

case 2:

f=fopen(name, "a+");

cout<<"Файл продовжено"<<endl;

break;

default:{

cout<<"Такого варiанту не iснує"<<endl;

goto a4;}

}

}

else

{

f=fopen(name, "w");

cout<<"Файл створено"<<endl;

}

fclose(f);

}

//Функція вставки елемента в БД із сортуванням

void Insert()

{

int vv=0;

if((f=fopen(name, "r")) == NULL)

cout<<"БД не iснує"<<endl;

else

{

f=fopen(name, "a+");

j=0;k=0;w=0;

//Пошук кількості рядків у файлі БД

while(!feof(f))

{

fscanf(f,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi);

if(s.id==s0.id){ vv=1;goto vvv;}

w++;

}

//Перевірка чи файл БД не є пустим

long size;

fseek(f, 0, SEEK_END);

size = ftell(f);

if (size==0)

fprintf(f,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s\n",s0.id,s0.virob,s0.mod,s0.rik,s0.max,s0.shin,s0.kom,s0.ks,s0.obem,s0.shasi);

else {

f=fopen(name, "r");

g=fopen("D:\\test.txt", "a+");

for(l=0;l<w-1;l++)//Прхід по циклу і запис даних в тимчасовий файл

{

fscanf(f,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi);

if(j==0)

{

if(s.id<s0.id)

fprintf(g,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi);

else

{

fprintf(g,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s\n",s0.id,s0.virob,s0.mod,s0.rik,s0.max,s0.shin,s0.kom,s0.ks,s0.obem,s0.shasi);

j=1;k=1;

}

}

if(k==1)

fprintf(g,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi);

if((j==0)&&((l+1)==(w-1)))

fprintf(g,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s\n",s0.id,s0.virob,s0.mod,s0.rik,s0.max,s0.shin,s0.kom,s0.ks,s0.obem,s0.shasi);

}

}

fclose(g);

fclose(f);

if(size!=0)

Insert_n();//Виклик функції передачі даних з тимчасового файлу в основний файл БД

system("cls");

vvv:if(vv==0)

cout<<"Операцiю виконано"<<endl;else

cout<<"Елемент з таким ID вже є в БД!!!"<<endl;

}

}

//Функція для виводу даних з файлу БД на екран

void Print()

{

cout<<"ID Виробник Модель Рiк Max шв. Шини Команда Кн. сили Об'єм дв. Шасi"<<endl;

f=fopen(name, "r");

w=0;

while(!feof(f))

{

fscanf(f,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi);

w++;

}

fclose(f);

f=fopen(name, "r");

for(k=0;k<w-1;k++)

{

fscanf(f,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi);

printf("%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi);

}

fclose(f);

}

//Функція для знаходження і читаня даних за введеним ключем по файлу БД

void Reading()

{

f=fopen(name, "r");

q=0;w=0;

while(!feof(f))

{

fscanf(f,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi);

w++;

}

fclose(f);

long size;

fseek(t, 0, SEEK_END);

size = ftell(t);

if (size==0){ cout<<"Файл пустий"<<endl;goto e4;}

a6: cout<<"Введiть ID елементa:"<<endl;

cin>>w;

cout<<"ID Виробник Модель Рiк Max шв. Шини Команда Кн. сили Об'єм дв. Шасi"<<endl;

f=fopen(name, "r");

for(k=0;k<w-1;k++)

{

fscanf(f,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi);

if(w==s.id){

printf("%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi);

q=1;}

}

if(q!=1)

{

system("cls");

cout<<"Такого варiанту не iснує"<<endl;

goto a6;

}

fclose(f);

cout<<"Операцiю виконано"<<endl;

e4:fclose(f);

}

//Функція для видалення вказаного ключа з БД

void Deleting()

{

f=fopen(name, "r");

w=0;

while(!feof(f))

{

fscanf(f,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi);

w++;

}

fclose(f);

j=0;

g=fopen("D:\\test.txt", "a+");

f=fopen(name, "r");

for(k=0;k<w-1;k++)

{

fscanf(f,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi);

if(s.id!=s0.id)

fprintf(g,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi);

else j=1;

}

fclose(f);

fclose(g);

Insert_n();

if(j!=1)

cout<<"Операцiю виконано"<<endl;

else

cout<<"Такого елемента не має"<<endl;

}

//Функція для модифікації елементів БД

void Rename()

{

cout<<"Введiть ID елемента для модифiкацiї"<<endl;

cin>>s0.id;

f=fopen(name, "r");

w=0;j=0;

while(!feof(f))

{

fscanf(f,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi);

w++;

} fclose(f);

f=fopen(name, "r");

g=fopen("D:\\test.txt", "a+");

for(k=0;k<w-1;k++){

fscanf(f,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi);

if(s.id==s0.id){

cout<<"Введiть новi елементи поля БД:"<<endl;

cout<<"ID:";

cin>>s.id;

cout<<"Виробник:";

cin>>s.virob;

cout<<"Модель:";

cin>>s.mod;

cout<<"Рiк випуску:";

cin>>s.rik;

cout<<"Max швидiксть:";

cin>>s.max;

cout<<"Шини:";

cin>>s.shin;

cout<<"Команда:";

cin>>s.kom;

cout<<"Кiнськi сили:";

cin>>s.ks;

cout<<"Об'єм двигуна:";

cin>>s.obem;

cout<<"Шасi:";

cin>>s.shasi;

cout<<endl;

j=1;

}

fprintf(g,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi);

}

fclose(f);

fclose(g);

system("cls");

if(j!=1){

cout<<"Такого елемента не має"<<endl; remove("D:\\test.txt");}

else {cout<<"Операцiю виконано"<<endl; Insert_n();}

}

//Функція для запису даних з тимчасового в основний файл БД

void Insert_n()

{

g=fopen("D:\\test.txt", "r");

w=0;

while(!feof(g))

{

fscanf(g,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi);

w++;

}

fclose(g);

g=fopen("D:\\test.txt", "r");

f=fopen(name, "w");

fclose(f);

f=fopen(name, "a+");

for(l=0;l<w-1;l++)

{

fscanf(g,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi);

fprintf(f,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi);

}

fclose(f);

fclose(g);

remove("D:\\test.txt");

}

//Функція для створення файлу групової обробки

void Create_Pov()

{

t=fopen("D:\\group.txt","w");

fclose(t);

cout<<"Файл створено"<<endl;

}

//Функція вставки даних в файл групової обробки

void Insert_Pov(int e)

{

t=fopen("D:\\group.txt", "r");

j=0;w=0;

s0.var=e;

while(!feof(t))

{

fscanf(t,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s%1d",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi,&s.var);

w++;

}

fclose(t);

t=fopen("D:\\group.txt", "a+");

long size;

fseek(t, 0, SEEK_END);

size = ftell(t);

if (size==0)

fprintf(t,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s%-1d\n",s0.id,s0.virob,s0.mod,s0.rik,s0.max,s0.shin,s0.kom,s0.ks,s0.obem,s0.shasi,s0.var);

else {

t=fopen("D:\\group.txt", "r");

t2=fopen("D:\\group2.txt", "a+");

s0.var=e;

for(l=0;l<w-1;l++)

{

fscanf(t,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s%1d",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi,&s.var);

//Перевірка пріорітетів операцій і зміни файлу групової обробки

if(s.id==s0.id)

{

switch(s0.var){

case 4:fprintf(t2,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s%-1d\n",s0.id,s0.virob,s0.mod,s0.rik,s0.max,s0.shin,s0.kom,s0.ks,s0.obem,s0.shasi,s0.var);

break;

case 5:s0.var=0;

fprintf(t2,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s%-1d\n",s0.id,s0.virob,s0.mod,s0.rik,s0.max,s0.shin,s0.kom,s0.ks,s0.obem,s0.shasi,s0.var);j=1;k=1;

break;

case 6:s0.var=4;

if(s.var==0)fprintf(t2,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s%-1d\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi,s.var);

else fprintf(t2,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s%-1d\n",s0.id,s0.virob,s0.mod,s0.rik,s0.max,s0.shin,s0.kom,s0.ks,s0.obem,s0.shasi,s0.var);

j=1;k=1;

break;

}

}

if(j==0)

{

if(s.id<s0.id)

fprintf(t2,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s%-1d\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi,s.var);

else

{

s0.var=e;

fprintf(t2,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s%-1d\n",s0.id,s0.virob,s0.mod,s0.rik,s0.max,s0.shin,s0.kom,s0.ks,s0.obem,s0.shasi,s0.var);

fprintf(t2,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s%-1d\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi,s.var);

j=1;k=1;

}

}

else

if(k!=1)

fprintf(t2,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s%-1d\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi,s.var);k=0;

if((j==0)&&((l+1)==(w-1)))

fprintf(t2,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s%-1d\n",s0.id,s0.virob,s0.mod,s0.rik,s0.max,s0.shin,s0.kom,s0.ks,s0.obem,s0.shasi,s0.var);

}

}

fclose(t);

fclose(t2);

if(size!=0)

Insert_n2();//Виклик функції передачі даних з тимчасового файлу в основний файл групової обробки

system("cls");

cout<<"Операцiю виконано"<<endl;

}

//функції передачі даних з тимчасового файлу в основний файл групової обробки

void Insert_n2()

{

t2=fopen("D:\\group2.txt", "r");

w=0;

while(!feof(t2))

{

fscanf(t2,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s%1d",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi,&s.var);

w++;

}

fclose(t2);

t2=fopen("D:\\group2.txt", "r");

t=fopen("D:\\group.txt", "w");

fclose(t);

t=fopen("D:\\group.txt", "a+");

for(l=0;l<w-1;l++)

{

fscanf(t2,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s%1d",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi,&s.var);

fprintf(t,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s%-1d\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi,s.var);

}

fclose(t);

fclose(t2);

remove("D:\\group2.txt");

}

//Функція для виводу файлу групової обробки на екран

void Print_Pov()

{

cout<<"ID Виробник Модель Рiк Max шв. Шини Команда Кн. сили Об'єм дв. Шасi Вар.дiї\n";

t=fopen("D:\\group.txt", "r");

w=0;

while(!feof(t))

{

fscanf(t,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s%1d",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi,&s.var);

w++;

}

fclose(t);

t=fopen("D:\\group.txt", "r");

if(w!=0)

for(k=0;k<w-1;k++)

{

fscanf(t,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s%1d",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi,&s.var);

printf("%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s%1d\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi,s.var);

}

else cout<<"Файл пустий"<<endl;

fclose(t);

}

//Функція для зміни даних в БД з використанням файлу групової обробки

void Rename_Pov()

{

t=fopen(name, "r");

w=0;j=0;

while(!feof(t))

{

fscanf(t,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi);

w++;

} fclose(t);

t=fopen(name, "r");

t2=fopen("D:\\test.txt", "a+");

for(k=0;k<w-1;k++){

fscanf(t,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi);

if(s.id==s0.id){

j=1;

fprintf(t2,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s\n",s0.id,s0.virob,s0.mod,s0.rik,s0.max,s0.shin,s0.kom,s0.ks,s0.obem,s0.shasi);}

else fprintf(t2,"%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi);

}

fclose(t);

fclose(t2);

system("cls");

if(j!=1){

cout<<"Такого елемента не має"<<endl; remove("D:\\test.txt");}

else {cout<<"Операцiю виконано"<<endl; Insert_n();}

j=0;

}

//Функція завершення файлу групової обробки і занесення змін в БД

void End_Pov()

{

t=fopen("D:\\group.txt", "r");

v=0;

while(!feof(t))

{

fscanf(t,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s%1d",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi,&s.var);

v++;

} fclose(t);

t=fopen("D:\\group.txt", "r");

for(z=0;z<v-1;z++){

fscanf(t,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s%1d",&s0.id,&s0.virob,&s0.mod,&s0.rik,&s0.max,&s0.shin,&s0.kom,&s0.ks,&s0.obem,&s0.shasi,&s0.var);

switch(s0.var){

case 4: Insert();

break;

case 5: Deleting();

break;

case 6: Rename_Pov();

break;

default:{}

}

}

fclose(t);

remove("D:\\group.txt");

}

//Функція пошуку даних за ключем по файлі групової обробки

void Reading_Pov()

{

t=fopen("D:\\group.txt", "r");

q=0;w=0;

while(!feof(t))

{

fscanf(t,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s%1d",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi,&s.var);

w++;

}

fclose(t);

a6:

long size;

fseek(t, 0, SEEK_END);

size = ftell(t);

if (size==0){ cout<<"Файл пустий"<<endl;goto e3;}

cout<<"Введiть ID елементa:"<<endl;

cin>>w;

cout<<"ID Виробник Модель Рiк Max шв. Шини Команда Кн. сили Об'єм дв. Шасi Варiант дiї"<<endl;

t=fopen("D:\\group.txt", "r");

for(k=0;k<w-1;k++)

{

fscanf(t,"%6d%10s%10s%10d%10d%10s%10s%10d%10d%10s%1d",&s.id,&s.virob,&s.mod,&s.rik,&s.max,&s.shin,&s.kom,&s.ks,&s.obem,&s.shasi,&s.var);

if(w==s.id){

printf("%-6d%-10s%-10s%-10d%-10d%-10s%-10s%-10d%-10d%-10s%1d\n",s.id,s.virob,s.mod,s.rik,s.max,s.shin,s.kom,s.ks,s.obem,s.shasi,s.var);

q=1;}

}

if(q!=1)

{

system("cls");

cout<<"Такого варiанту не iснує"<<endl;

goto a6;

}

fclose(t);

cout<<"Операцiю виконано"<<endl;

e3:fclose(t);

}

Результати виконання програми

Друк бази даних

Пошук запису за ключем

Вставлення запису в базу даних

Видалення запису з бази даних

Модифікація запису в базі даних

Висновки

На цій лабораторній роботі я розглянув органiзацiю i ведення файлiв послiдовного доступу; набув практичнi навички у програмуваннi алгоритмiв роботи з файлами послiдовного доступу. Під час розробки алгоритму я передбачив більшість варіантів подій. А також розробив захист від вводу неправильних даних. Під час реалізації програми виникла складність з файлом групової обробки через те що потрібно було передбачити пріорітет операцій. Я вирішив це питання за допомогою заміни операцій з нищим пріорітетом на операції із вищим. Також були і інші складності, але і їх я зміг вирішити. В наслідок чого я розробив власну базу даних на мові високого рівня С++.

21

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