37666

Файли. Обробка файлів

Лабораторная работа

Информатика, кибернетика и программирование

Організувати послідовний файл на диску. Блок організації файла оформити окремою процедурою. Роботу бази організувати в діалоговому режимі. Окремими процедурами здійснити: редагування вибраного запису, тобто зміни запису за вибором; пошук за індексом запису в базі даних і виведення інформації про його наявність;

Украинкский

2013-09-25

449.25 KB

2 чел.

Міністерство освіти і науки, молоді та спорту України

Хмельницький національний університет

Кафедра системного програмування

ЛАБОРАТОРНА РОБОТА №6

з програмування

Файли. Обробка файлів

Студент групи КІ-10-1      _______   ___________   Ноль М.Г.

Керівник                             _______   ___________   Медзатий Д.М.

Хмельницький

2011

Лабораторна робота №6

Тема: Файли. Обробка файлів.

Мета: навчитись використовувати файли для обробки даних на мові програмування С.

Завдання

Організувати послідовний файл на диску. Блок організації файла оформити окремою процедурою. Роботу бази організувати в діалоговому режимі. Окремими процедурами здійснити:

- редагування вибраного запису, тобто зміни запису за вибором;

- пошук за індексом запису в базі даних і виведення інформації про його наявність;

- виведення всіх записів БД;

- додавання записів в кінець БД;

- видалення вибраної інформації з БД.

Програма

#include <stdio.h>

#include <string.h>

typedef struct {char PIB[20],gr[20],z[20],tz[20];} user;

char a[20];

user in_s() //ввести запис

{user s;

printf("Введіть ПІБ: "), gets(s.PIB);

printf("Введіть групу: "), gets(s.gr);

printf("Введіть обліковий запис: "), gets(s.z);

printf("Введіть тип облікового запису: "), gets(s.tz);

printf("\n");

return s;

}

void out_s(user s) //вивести запис на екран

{printf("\nПІБ: "), puts(s.PIB);

printf("Група: "), puts(s.gr);

printf("Обліковий запис: "), puts(s.z);

printf("Тип облікового запису: "), puts(s.tz);

}

void input() //створити або вибрати файл з записами

{

printf("Введіть назву файла (без розширення): "); scanf("%s",&a); strcat(a,".txt"); puts(a);

FILE *f;  

if ((f=fopen(a,"r+"))==NULL)

   {      f=fopen(a,"w+");

   int n,i;

   user s;

   do printf("Введіть кількість записів: "), scanf("%d",&n);

while (n<=0 || n>10);

   for (i=0;i<n;i++) s=in_s(), fwrite(&s,sizeof(s),1,f);

   }

fclose(f);

}

void print_all() //вивести всі записи

{

user s;

FILE *f=fopen(a,"r");

fread(&s,sizeof(s),1,f);

while (!feof(f)) out_s(s), fread(&s,sizeof(s),1,f);

fclose(f);

}

void redag() //редагувати вибраний запис

{

int i=0,n; user s;

FILE *f=fopen(a,"r");

while (!feof(f)) fread(&s,sizeof(s),1,f),i++; --i; fclose(f);

do printf("Введіть номер запису: "), scanf("%d",&n); while (n<0 || n>i);

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

for (i=0;i<n-1;i++) fread(&s,sizeof(s),1,f);

s=in_s(); fwrite(&s,sizeof(s),1,f);

fclose(f);

}

void seek() //знайти і вивести на екран шуканий запис

{

int i=0,n;

user s;

FILE *f=fopen(a,"r");

while (!feof(f)) fread(&s,sizeof(s),1,f),i++; --i; fclose(f);

do printf("Введіть номер запису: "), scanf("%d",&n); while (n<0 || n>i);

f=fopen(a,"r");

for (i=0;i<n;i++) fread(&s,sizeof(s),1,f);

out_s(s);

fclose(f);

}  

 

void add() //додати в кінець новий запис

{

user s=in_s();

FILE *f=fopen(a,"a");

fwrite(&s,sizeof(s),1,f);

fclose(f);

}

void delete() //видалити обраний запис

{

int i=0,k,n;

user s;

FILE *f=fopen(a,"r");

while (!feof(f)) fread(&s,sizeof(s),1,f),i++; --i;

fclose(f);

do printf("Введіть номер запису: "), scanf("%d",&n); while (n<0 || n>i);

FILE *ft=fopen("temp.txt","w"); f=fopen(a,"r");

for (k=0;k<i;k++) fread(&s,sizeof(s),1,f), fwrite(&s,sizeof(s),1,ft);

fclose(f); fclose(ft);

f=fopen(a,"w"); ft=fopen("temp.txt","r");

for (k=0;k<i;k++) {fread(&s,sizeof(s),1,ft); if (k!=n-1) fwrite(&s,sizeof(s),1,f);};

fclose(f); fclose(ft);

}

int choice() //вибір виконуваної операції користувачем

{

int n;

printf("Оберіть потрібну дію:\n\t1 - створити новий файл з записами;\n\t2 - вивести всі записи; \n\t3 - редагувати обраний запис; \n\t4 - знайти і вивести шуканий елемент;\n\t5 - додати новий елемент в кінець файла; \n\t6 - видалити обраний елемент; \n\t0 - вийти з програми\n\n");

do scanf("%d",&n); while (n<0 || n>6);

if (n==1) input(); else

if (n==2) print_all(); else

if (n==3) redag(); else

if (n==4) seek(); else

if (n==5) add(); else

if (n==6) delete();

return n;

}  

void main()

{

int n;  

do n=choice(); while (n!=0);

}

Висновок

Виконавши лабораторну роботу, я навчився працювати з файлами послідовного доступу в мові програмування С, а також закріпив навички щодо створення структур та записів.


 

А также другие работы, которые могут Вас заинтересовать

20256. Поширення звуку в газах 64.5 KB
  Поширення звуку в газах Для ізотермічного середовища запишемо рівняння неперервності. Хвилі в газах поширюються переважно в одному напрямку: Звук в газах – повздовжня хвиля згущення і розрідження Тоді: ; підставити 1 .
20257. В`язкість газів 51 KB
  Основний закон в`язкої течії був встановлений Ньютоном: де F – тангенційна дотична сила що викликає зсув шарів газу один відносно одного. Схема однорідного зсуву: шар газу рідини висотою h між двома пластинами з яких А нерухома а В під дією тангенційної сили F рухається з постійною швидкістю υ0. динамічної в`язкості характеризує опір газу зміщенню його шарів. [м2 c] В газах відстань між молекулами значно більша за радіус дії молекулярних сил тому в’язкість газів – наслідок хаотичного теплового руху молекул в результаті якого...
20258. Одержання рівняння стану методом статистичних сум 70.5 KB
  Для ідеального газу: Для неідеального газу: Враховуючи лише парні взаємодії: Розіб’ємо весь фазовий простір на область де суттєві взаємодії між молекулами і на де вони несуттєві.
20259. Полегшена дифузія. Перенос кисню за допомогою Hb i Mb 150.5 KB
  В залежності від конц. При високій конц. Нехай: С – конц. О2 ; Ср – конц.
20260. Модель Ізінга Теорія середнього поля (ще наз наближення Брега-Вільямса) 93.5 KB
  Модель Ізінга Теорія середнього поля ще наз наближення БрегаВільямса. Модельний Гамільтоніан такої системи: 1 де Н – напруженість магнітного поля. Тобто в системі за відсутності магнітного поля існує спонтанна намагнічуваність. Наближення для моделі Ізінга наближення середнього поля.
20261. Дифузія в газах 43 KB
  Дифузія має місце в газах рідинах і твердих тілах причому дифундувати можуть як частинки сторонніх речовин що в них знаходяться так і власні частинки самодифузії якщо речовина неоднорідна. Швидкість дифузії залежить від температури. При дифузії молекули переміщуються з тих частин речовини де їх концентрація більше в ті її частини де вона менше. Основній закон дифузії – закон Фіка: густина дифузійного потоку I пропорційна градієнту концентрації n взятому з протилежним знаком: D – коеф.
20262. Другий віріальний коефіцієнт для різних моделей потенціалу взаємодії 114 KB
  Методом статистичних сум можна отримати рівняння стану: 1 Співвідношення Камерлінг – Онеса: 2 Порівнюючи 1 і 2: другий віріальний коефіцієнт Ідеальний газ: U=0 BT=0 pV=RT Модель твердих сфер: де об’єм молекули де не враховуємо притягання В 2 підставляємо ВТ: b V Модель Сюзерленда: = дорівнює першому доданку з 2. При реальний газ веде себе як ідеальний ТБ ТК критична температура тут ми використали 5 та глибина потенціальної ями Оскільки для моделі...
20263. Теорія Перкуса-Йєвіка 94.5 KB
  Теорія ПеркусаЙєвіка. Теорія ПеркусаЙєвіка – це спроба встановити ще одне рівняння. Теорія ПеркусаЙєвіка використовує умовні корелятивні функції. Нехай існує функціонал який може бути розкладений у ряд Тейлора по варіації в положенні частинки s1 за визначенням: Розглядались такі функціонали: 1 ; приводить до результатів Перкуса Йевіка; 2 ; приводить до результатів ББГКІ 3 .
20264. Теорія Ван-дер-Ваальса (ВдВ) критичних явищ 99.5 KB
  Теорія ВандерВаальса ВдВ критичних явищ. Одне з рівнянь що описує реальні гази – рівняння ВдВ: для 1го моля газу 1 де а і b –сталі пов’язані із силами притягання і відштовхуванням відповідно. Перепишемо 1: При Т1 : ізотерма ВдВ ліва вітка – рідкий стан права – газоподібний.Перехід із рідкого стану в газоподібний і в зворотному напрямку при звичайних умовах відбувається не вздовж ізотерми ВдВ АВСDE а вздовж ізотерми АЕ яка одночасно є і реальною ізотермою.