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

}

Висновок

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


 

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

3381. Обработка результатов измерений в физическом практикуме 303.5 KB
  Содержит изложение методики обработки результатов измерений, получаемых во время практических занятий в учебной лаборатории. Предназначен для оказания помощи студентам технических специальностей всех форм обучения при подготовке к лабораторным работ...
3382. Потенциал электростатического поля. Диэлектрики в электростатическом поле 350 KB
  Потенциал электростатического поля. Диэлектрики в электростатическом поле. Работа при перемещении заряда в электростатическом поле. Потенциал. Разность потенциалов. Связь между напряженностью и потенциалом электростатического поля. Эквип...
3383. Изучение свободных колебаний математического и пружинного маятников 398.5 KB
  Изучение свободных колебаний математического и пружинного маятников Цель работы: изучение физических основ свободных незатухающих колебаний, определение ускорения свободного падения с помощью математического маятника и коэффициента упругости пружины...
3384. Книжные социальные сети как канал распространения издательской и книготорговой библиографической информации 104 KB
  Книжные социальные сети как канал распространения издательской и книготорговой библиографической информации На сегодняшний день в мире существует более 130 миллионов компьютеров и более 80 % из них объединены в различные информационные сети от малых...
3385. Проектирование фундаментов производственных зданий 606.5 KB
  ИСХОДНЫЕ ДАННЫЕ - тип объекта – производственное здание с подвалом и гибкой конструктивной схемой    - район строительства – г. Магнитогорск; -величины нагрузок на фундаменты представлены в табл. 1. Таблица 1 Величины нагрузок...
3386. Рассчитать и спроектировать резец для обработки наружной поверхности детали 8.03 MB
  Оправки в шпинделе закрепляют штоком, проходящим через шпиндель станка. Шток имеет на конце захватное устройство. Инструментальные оправки имеют соответствующие этому устройству наружные, внутренние или резьбовые поверхности захвата...
3387. Реконструкция многоквартирного крупноблочного дома серии 1-439А 888.5 KB
  При модернизации и реконструкции жилых зданий массовой застройки предусматривается решение следующих задач: приведение планировочной структуры здания в соответствие с требованиями к потребительским и эксплуатационным качествам современного ...
3388. Проект разработки роторного снегоочистителя 857.5 KB
  В процессе подготовки будущего инженера к самостоятельному решению технических и производственных задач одно из ведущих мест принадлежит курсовому проектированию. Цель данного курсового проекта – закрепить и обобщить теоретический мате...
3389. Проектирование редуктора и выбор типа зубчатых колес 353 KB
  Целью курсовой работы является получение навыков самостоятельного применения теоретических знаний для решения практических задач, связанных с техническим моделированием и созданием несложных технических устройств практического назначения. В...