37666

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

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

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

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

Украинкский

2013-09-25

449.25 KB

3 чел.

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

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

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

ЛАБОРАТОРНА РОБОТА №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);

}

Висновок

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


 

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

59337. Позакласний захід “Пташок викликаю з теплого краю” 57 KB
  Виходить дівчинка співає пісню: €œЩебетала пташечка€. 1 дівчинка: Благослови Боа Мати Веснукрасну зустрічати 2 дівчинка: Весну красну вітати Та віночки сплітати. 3 дівчинка: А віночки сплетемо Хороводом підемо дівчатка танцюють хоровод...
59338. Українська мова – наш скарб 70 KB
  1й учень. Люблю тебе моя Вітчизно мила Твої поля і небо голубе Бо ти дала мені малому крила Та як же не любить мені тебе 2й учень. Я буду вчитись в школі на відмінно Щоб мною ти пишатися могла 3й учень. Люблю твої ліси струмки джерельця І всеусе що є в моїм краю Тепло долонь і розуму і серця...
59339. Природа — наша мати, треба її оберігати 72.5 KB
  1й учень Губим землю топчим квіти Дерева ламаєм Що нам скажуть наші діти Чи душу ми маєм 2й учень Чи зґвалтована природа Нам гріхи відпустить Чи помститься нам за кривду Горя й зла напустить 3й учень Там Чорнобиль тут Курчатов. 4й учень Повзуть смертю по країні віруси й мікроби...
59340. Cценарій. Свято осені 73.5 KB
  Вже надходить осінь золота. Вже надходить осінь золота Молоде зелене сходить жито. Осінь осінь В гості тебе просим З щедрими хлібами З високими снопами З листопадом і дощем З перелітним журавлем.
59341. Cценарій свята „Зустріч Зими і Весни (стрітення)” 48.74 KB
  Якщо бабуся Зима 11 переможе то довго іще буде холодно а якщо красуня Весна візьме гору то поверне на тепло. Вранці на околицю села приїхала Весна а назустріч виходить стара бабуся Зима. Весна злазила із свого коня і починався двобій.
59342. APPEARANCE 31 KB
  I want to have a pen-friend from your country, Ukraine. I am a pupil of a school in London. My name is Jack. My surname is Fornson. I am 12. I study Biology, Maths, Geography, History, French. In the afternoon I have physical training lessons. I like to play football.
59343. СІМ ЧУДЕС ПРИРОДИ 39 KB
  The subjects of our todays discussion are Natures seven greatest wonders. In the 2nd century BC people made a list of the most impressive and beautiful manmade objects in the world. They were called «The Seven Wonders of the World».
59344. Сульфатна кислота та її солі 99.5 KB
  Мета: узагальнити відомості про властивості сульфатної кислоти спираючись на знання загальних властивостей кислот; удосконалити вміння складати в молекулярній повній та скороченій іонній формах рівняння реакцій взаємодії сульфатної кислоти з металами основними й амфотерними...
59345. Нехай земля квітує всюди – природу збережімо, люди! 88 KB
  Обладнання: плакати дитячі малюнки на захист природи картини із зображенням природи рідного краю гілки рослин квіти. На дошці є вислови про природу: Все на землі все треба берегти І птаха й звіра і оту рослину Не чванься тим що цар природи ти Бо врешті ти його частинка.