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

}

Висновок

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


 

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

43882. Визначення та наукове обгрунтування психолого-педагогічних умов подолання особистісної тривожності у дітей молодшого шкільного віку та пятикласників 959.5 KB
  Підходи науковців до реалізації наступності зорієнтовані передусім на інтеграцію двох ланок освіти, усунення суперечок між запитами школи і амбіційним завищеними вимогами окремих батьків щодо підготовки їхніх дітей; між непідготовленістю окремих учнів, які не відвідували дошкільних установ, і необхідністю враховувати специфіку дошкільної освіти.
43883. Экономика и управление на предприятии АПК». Методические указания 605 KB
  В методических указаниях рассматриваются вопросы подготовки написания процедуры защиты дипломных работ раскрыты требования по оформлению работы. ПОДГОТОВКА КВАЛИФИКАЦИОННОЙ РАБОТЫ Выбор темы дипломной работы Назначение руководителя дипломной работы и выдача дипломного задания.
43884. Створення когнітивно-семантичного підґрунтя вибору варіантів перекладу одиниць на позначення концепту “Кількість” 249 KB
  Кількість як узагальнений когнітивний зміст – великий фрагмент кодованої засобами мови картини світу того чи іншого етносу. На першому етапі необхідно чітко визначити поняття “картина світу†“мовна картина світу†“концепт†для чого слід виконати критичний аналіз наукової літератури. Новизна одержаних результатів визначається тим що в ньому виявлено спільні і відмінні ознаки репрезентації концепту â€œКількість†в англійській та українській мовних картинах світу встановлені абсолютні і варіантні еквіваленти перекладу в...
43885. Проектування поліграфічного підприємства 3.18 MB
  Вибір напруги живлячої мережі. Вибір напруги розподільчої мережі. Характеристика джерела живлення Підприємство можна заживити від районних підстанцій що мають три рівні напруги.
43886. Изучение и систематизация теоретических аспектов организации финансов на ООО "Компания ОГАТ" 599 KB
  Финансы предприятий будучи частью общей системы финансовых отношений отражают процесс образования распределения и использования доходов на предприятиях различных отраслей народного хозяйства и тесно связаны с предпринимательством поскольку предприятие является формой предпринимательской деятельности. Целью данной дипломной работы является систематизация теоретических аспектов организации финансов на предприятиях различных форм собственности изучение аналитических сведений практической деятельности финансового состояния конкретного...
43887. Оценка уровня организации и планирования работы транспортного хозяйства на предприятии ТЧУП «Передовые технологии» на основе АВС-XYZ анализа 878 KB
  Структура и динамика грузов перевозимых предприятием и их характеристика Классификация грузов и грузовых перевозок предприятия на основе анализа АВС и XYZ Выбор рациональной структуры перевозимых грузов и видов грузовых перевозок на основе правила 80 20 и матрицы АВСXYZ анализа В третьей главе мы рассмотрим основные направления совершенствования транспортной деятельности предприятия за счет выбора рациональной структуры перевозимых грузов и видов грузовых перевозок на основе правила 80 20 и матрицы АВСXYZ анализа.
43888. Исследование взаимосвязей временных рядов курсов акций с помощью копула-функции и метода коинтеграции 5.8 MB
  Фондовый рынок - это составная часть финансового рынка на котором обращаются ценные бумаги. Для управления ценными бумагами важно знать их взаимосвязь между собой. В теоретической части подробно описываются сущность и содержание рынка ценных бумаг пакета акций методы определения взаимосвязи между временными рядами метод копулафункций и метод коинтеграции. Рынок ценных бумаг.
43889. РАЗРАБОТКА ПРОЕКТА АВТОМАТИЗАЦИИ КАДРОВОГО МЕНЕДЖМЕНТА НА ПРИМЕРЕ SRL 1.26 MB
  Основываясь на данных исследования проведенного агентством MR Reserch среди сотни быстро растущих компаний США можно утверждать что успешные и развивающиеся компании в текущем 2012 году не только не сократят а напротив увеличат свои расходы. Эксперты оценивают необходимость наличия данных качеств по семибалльной шкале которая количественно определяет не только степень необходимости но и недопустимости того или иного...
43890. ИС построения линейно-степенной регрессии 1.73 MB
  Алгоритм разделения данных на обучающую и проверочную. Проверка достоверности входных данных Проверка достоверности внутренней обработки данны. Шифрование данных.