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

}

Висновок

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


 

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

20947. Запис і читання інформації в інженерні циліндри диска 53.38 KB
  MODEL SMALL STS segment para stack 'stack' dw 1000 dup 0 TOS label word STS ends DATA segment track80 db 801011 ;дорожкаголовкасектордлина сектора db 801021 db 801031 db 801041 db 801051 db 801061 db 801071 db 801081 db 801091 db 801101 db 801111 db 801121 db 801131 db 801141 ;таблица параметров контроллера дисководов DCP db 0DFh ;задержка переключения головок0Dh=3мс ;задержка при загрузке головокFh db 002h ;время загрузки=4мс db 025h ;задержка перед выключением двигателя db 001h ;размер...
20948. Запис і читання інформації диска с зміною чергуванням секторів 51.33 KB
  h Номер форматируемой дорожки define TRK 20 Код размера сектора 1024 байт define SEC_SIZE 2 таблица параметров дискеты typedef struct _DPT_ { unsigned char srt_hut; unsigned char dma_hlt; unsigned char motor_w; unsigned char sec_size; unsigned char eot; unsigned char gap_rw; unsigned char dtl; unsigned char gap_f; unsigned char fill_char; unsigned char hst; unsigned char mot_start; } DPT; union REGS inregs outregs; char _far diskbuf[1024]; void mainvoid; void mainvoid { struct diskinfo_t di; unsigned status; unsigned char...
20949. Стиснення даних 55.23 KB
  define MAX_VALUE 1 BITS 1 Отметим что на MSDOSмашине при define MAX_CODE MAX_VALUE 1 длине кода 14 бит необходимо компи лировать используя largeмодель. define TABLE_SIZE 9029 endif if BITS = 12 define TABLE_SIZE 5021 endif void malloc; Это массив для значений кодов int code_value; Этот массив содержит префиксы кодов unsigned int prefix_code; Этот массив содержит...
20950. Стеганографічні перетворення 33.98 KB
  h int checkchar; char rmallwschar; int main { int us = 1; char ss1ptr; cout vvedite nabor simvolov ; cin s; cout endl vvedite nabor simvolov dlya poiska i udaleniya ; cin s1; whileptr=0 { int ik; ptr=strstrss1; for i=1;i = strlens1;i { ptr=1; ptr=' '; } s=rmallwss; } return 0; } char rmallwschar str { char obuf nbuf; for obuf = str nbuf = str; obuf obuf; obuf { if isspaceobuf nbuf = obuf; } nbuf = ' 0'; return str; } Висновок: за час виконання практичноъ роботи роздивився тему...
20951. Робота з командним рядком. Мережна активність 377.58 KB
  Мережна активність Ціль роботи: одержання практичних навичок по роботі з Командним рядком і по виявленню шкідливих програм на локальному комп'ютері під керуванням Microsoft Windows XP за допомогою Командного рядка. Завдання: одержати навички роботи з Командним рядком вивчити й проаналізувати мережну активність можна за допомогою Командного рядка. Робота з Командним рядком Cmd.
20952. Захист від несанкціонованого доступу в операційній системі Windows 366.5 KB
  Завдання: Вивчити настроювання Брандмауера Windows .Центру забезпечення безпеки Windows. Брандмауер Windows Меню Пуск – Панель керування – Брандмауер Windows Рис.
20953. Керування правами користувачів в операційній системі Windows 243 KB
  Домен або глобальні користувачі й групи управляються мережним адміністратором. Операційна система містить кілька вбудованих облікових записів користувачів і груп які не можуть бути вилучені Групи Адміністратори Користувачі що входять у групу Адміністратори мають повний доступ на керування комп'ютером. Оператори архіву Члени групи Оператори архіву можуть архівувати й відновлювати файли на комп'ютері незалежно від усіх дозволів якими захищені ці файли. Досвідчені користувачі Члени групи досвідчених користувачів можуть створювати...
20954. Основні ознаки присутності на комп'ютері шкідливих програм 571.5 KB
  Вивчення настроювань браузера Рис. Значення цього поля збігається з тим адресою яка була автоматично заданий при відкритті браузера Рис. C її допомогою можна в режимі реального часу відслідковувати запущені процеси що виконуються додатки й оцінювати завантаженість системних ресурсів комп'ютера й використання мережі Рис.
20955. Профілактика проникнення шкідливого програмного забезпечення. Реєстр Windows 186.5 KB
  Реєстр Windows Ціль: практичне освоєння студентами науковотеоретичних положень дисципліни з питань захисту інформації від впливу шкідливого програмного забезпечення на основі використання методів і засобів профілактики вірусних атак а також оволодіння ними технікою експериментальних досліджень і аналізу отриманих результатів прищеплювання навичок роботи з обчислювальною технікою. Профілактика проникнення шкідливого програмного забезпечення за допомогою дослідження Реєстру ОС Windows XP Реєстр операційної системи Windows це більша база...