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

}

Висновок

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


 

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

9866. Общественная и духовная жизнь России в 19 веке. Русский либерализм 31.7 KB
  Общественная и духовная жизнь России в 19 веке. Русский либерализм. Либерализм был изначально продуктом западной цивилизации, построенной на индивидуализме и рациональном познании мира. Истоки западного либерализма следует искать в античном наследии...
9867. Информационные ресурсы местного самоуправления в регионе 101 KB
  Развитие торговли, которая становится основой жизни городских общин Германии в IX-XI вв., вызвало потребность не только охраны от внешних врагов, но и защиты свободы и независимости от местных феодалов, внутренней самоорганизации и самоуправления. Так, экономическое развитие обуславливает становление свободных общин...
9868. Общественная и духовная жизнь России в 19 веке. Русский Радикализм 36.35 KB
  Общественная и духовная жизнь России в 19 веке. Русский Радикализм. Радикал (от латинского radicalis - коренной) - сторонник крайних, решительных действий и взглядов. Радикализм как общественно-политическое направление нацелено на коренное изменение...
9870. Формы собственности на землю в России 9-17 век особенности крепостного права 29.81 KB
  Формы собственности на землю в России 9-17 век особенности крепостного права. В IX-XII веках экономику Древнерусского государства можно охарактеризовать как раннефеодальную. В это время еще только закладываются основы прочной системы взаимоотношений...
9871. Понятие о скважине, ее элементах и параметрах, характеризующих пространственное положение ствола 15.35 KB
  Понятие о скважине, ее элементах и параметрах, характеризующих пространственное положение ствола. Скважина - это горная выработка приблизительно имеющая форму цилиндра. Может быть длиной до...
9872. Свойства бурового раствора, порядок их определения 15.9 KB
  Свойства бурового раствора, порядок их определения. Основные параметры, которые характеризуют свойство БР относятся: плотность, условная вязкость, показатель фильтрации, СНС, толщины глинистой корки, содержание песка, содержание водородных ионов. 1....
9873. Профили наклонно-направленных скважин. Предельно допустимые темпы искривления 15.19 KB
  Профили наклонно-направленных скважин. Предельно допустимые темпы искривления. Направленной называют скважину, которую бурили вдоль запроектированной пространственной трассы и попали в заданную цель, а ее забой и фильтровая зона не только располагаю...
9874. Способы ликвидации прихватов бурильных колонн 18.81 KB
  Способы ликвидации прихватов бурильных колонн. 1)Расхаживание и отбивка ротора. Расхаживание - способ ликвидации прихвата, прикотором к БИ прикладывается нагрузка на какое-то значение превышающая его вес (буровик может превышать нагрузку...