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

}

Висновок

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


 

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

16809. Поиск критериев золотого оруденения мурунтауского рудного поля 55 KB
  Поиск критериев золотого оруденения мурунтауского рудного поля Голищенко Г.Н. главный геофизик Центрального рудоуправления НГМК канд. геол.мин. наук; Беленко А.П.главный геолог Центрального рудоуправления НГМК Большая часть территории Кызылкумского региона перек
16810. Потенциальные возможности развития минерально сырьевой базы золота России в ХХI веке 175.5 KB
  Потенциальные возможности развития минеральносырьевой базы золота России в ХХI веке ВведениеТеоретические основы металлогенического прогнозированияПрогнозная оценка золоторудных ресурсов РоссииЛитература Введение Кризисное по ряду показателей поло...
16811. ПРАКТИКА ПРИМЕНЕНИЯ КОНЦЕНТРАТОРОВ ИТОМАК ДЛЯ ДОБЫЧИ МЕЛКОГО, ТОНКОГО И СВЯЗАННОГО ЗОЛОТА ИЗ ТЕХНОГЕННОГО СЫРЬЯ 49 KB
  ПРАКТИКА ПРИМЕНЕНИЯ КОНЦЕНТРАТОРОВ ИТОМАК ДЛЯ ДОБЫЧИ МЕЛКОГО ТОНКОГО И СВЯЗАННОГО ЗОЛОТА ИЗ ТЕХНОГЕННОГО СЫРЬЯ. С.И. АФАНАСЕНКО А.Н. ЛАЗАРИДИ ЗАО ИТОМАК г. Новосибирск Попытки использовать для улавливания мелкого и тонкого золота возможности центрифугирования...
16812. ПРАКТИКА ПРИМЕНЕНИЯ КОНЦЕНТРАТОРОВ ИТОМАК ДЛЯ ДОБЫЧИ МЕЛКОГО, ТОНКОГО И СВЯЗАННОГО ЗОЛОТА ИЗ ТЕХНОГЕННОГО СЫРЬЯ 88.5 KB
  ПРАКТИКА ПРИМЕНЕНИЯ КОНЦЕНТРАТОРОВ ИТОМАК ДЛЯ ДОБЫЧИ МЕЛКОГО ТОНКОГО И СВЯЗАННОГО ЗОЛОТА ИЗ ТЕХНОГЕННОГО СЫРЬЯ С.И. АФАНАСЕНКО А.Н. ЛАЗАРИДИ ЗАО ИТОМАК г. Новосибирск Потери мелкого золота при добыче общеизвестны. Используемые традиционно в технологических проц
16813. Применение СВЧ печей для разложения золотосодержащих проб 63 KB
  УДК 622.765.063 Применение СВЧ печей для разложения золотосодержащих пробХайдарова З.Р. магистрант НГГИ; Музафаров А.М. начальник бюро ЦНИЛ НГМК Методов обогащения золотосодержащих проб применяемых в промышленности очень много и они разнообразны. В последнее время с появ
16814. Пробирный анализ: от древнего мира до наших дней. Обзор 137 KB
  Пробирный анализ: от древнего мира до наших дней. Обзор Т.И.Маякова к.х.н. рекламномаркетинговый отдел ОАО Иргиредмет Золотодобыча №97 Декабрь 2007 Первые зачатки пробирного анализа относятся к истории древнего мира. Уже несколько тысяч лет назад был известен проц...
16815. Проблемы классификации запасов и стандартизации запасов золота 56 KB
  Проблемы классификации запасов и стандартизации запасов золота Проблемы классификации запасов и стандартизации их разных типов в последнее время весьма актуальны для российских золотодобывающих компаний. Ведь правильная т.е. наиболее понятная инвестору классифик...
16816. Революция в геологии золота 42.5 KB
  Революция в геологии золота М.М. Константинов ПРИ слове революция мы поеживаемся уж слишком неоднозначными бывают иногда результаты. Между тем революции происходят непрерывно: и в науке и в технологиях и в духовном мире. С легкой руки академика А.Е.Ферсмана средн...
16817. Россыпные месторождения золота в Западной Якутии 148.5 KB
  Россыпные месторождения золота в Западной Якутии Округин Александр Витальевичдоктор геолого-минералогических наук ведущий научный сотрудник Института геологии алмаза и благородных металлов СО РАН ИГАБМ. Промышленная добыча золота в Якутии началась в 1923 г. с откр