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

}

Висновок

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


 

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

3452. Исследование совместной экстракции кислот в расслаивающихся системах ДАА – бензойная кислота – хлороводородная кислота – вода 169.55 KB
  Изучена экстракция двух кислот: НСl и C6H5COOH ДАМ и его алкильным гомологом ГДАМ в расслаивающейся системе без органического растворителя. Рассмотрено влияние концентрации минеральной и органической кислот на степень экстракции каждой из кислот в о...
3453. Реконструкция Омской ТЭЦ 335 KB
  В данном дипломном проекте предлагается реконструкция Омской ТЭЦ – 3. Реконструкция включает в себя демонтаж двух котлов ТП-230-2 и четырех турбин ПТ-25-3М, с установкой трех ГТУ типа GT8C и трех котлов – утилизаторов. СОДЕРЖАНИЕ Введение...
3454. Психологические факторы возникновения аддиктивного поведения у людей разных возрастов 230.5 KB
  Выявить особенности аддиктивного поведения. Определить условия, способствующие предупреждению аддиктивности. Экспериментально установить факторы которые способствуют появлению аддиктивного поведения.
3455. Изучение экономической структуры бюджетного учреждения здравоохранения 109.33 KB
  Здравоохранение — это наука, изучающая закономерности общественного здоровья, факторы, его формирующие, закономерности общественного здравоохранения и разрабатывающая оптимальные организационные формы охраны здоровья населения
3456. Методология управления предприятием в современных условиях. Анализ деятельности предприятий ОАО Медика ОАО Московский кондитер 400 KB
  Актуальность исследуемой темы не вызывает сомнения. От уровня разработанности теоретической базы и профессионализма ее реализации, непосредственно, на практике  зависит успех компании. Безусловно, в современных условиях количество факт...
3457. Разработка разомкнутой системы электропривода насосных агрегатов типа НМ-7000-210 нефтеперекачивающей станции Уват-1 1.59 MB
  В данном курсовом проекте производится выбор основного силового оборудования системы электропривода. В результате выполнения проекта производится выбор двигателя с применением частотно – регулируемого асинхронного электропривода насоса маги...
3458. Технологии и комплекс машин по возделыванию и уборке ячменя 166.54 KB
  Сельское хозяйство Республики Беларусь является одной из основных отраслей народнохозяйственного комплекса, задачей которого является обеспечение продовольственной безопасности государства, а перерабатывающие предприятия сырьем. Совер...
3459. Совершенствование финансового контроля в торговой организации малого бизнеса (на примере ООО «ТеплоТехноСервис» г. МОСКВА) 832 KB
  Торговые предприятия, с одной стороны, завершают производства, а с другой стороны, обеспечивают удовлетворение значительной части личных потребностей населения в товарах и услугах. Существенна роль предприятий торговли в функционировании кредитно-финансовой системы: около 90% всей денежной наличности, поступающей в банки, составляет выручка от продажи товаров и услуг.
3460. Проверка классического распределения максвелла для скоростей частиц газа термоэлектронов 178 KB
  Проверка классического распределения максвелла для скоростей частиц газа термоэлектронов На основании опытной зависимости анодного тока электронной лампы от величины задерживающего напряжения между сеткой и катодом необходимо установить вид функции ...