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

}

Висновок

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


 

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

47898. Розвиток енергетики України 259 KB
  Організація роботи робітників енергетики. Цехи допоміжного виробництва забезпечують основному виробництву необхідні умови для нормальної роботи здійснюють ремонт обладнання постачання матеріалами інструментами та пристосуванням запасними частинами різними видами енергії транспортом. Для кожного виду палива існує своя спеціальна система паливоподачи на підставі котрої організується свій режим роботи цеху. Завдання що поставлені перед майстром потребують від нього не тільки технічної підготовки але й знань економіки виробництва...
47899. Економічний аналіз 435 KB
  Зміст предмет та види економічного аналізу Зміст та предмет економічного аналізу Принципи економічного аналізу
47900. Антропологія як філософська дисципліна 384.5 KB
  Людина як проблема. Людина і все що її стосується завжди були предметом уваги з боку філософії. Кант: Що я можу знати Що я повинен робити На що я можу сподіватися Що таке людина 123 зводиться до 4 а всі науки до антропології.
47901. Аналіз використання капіталу 227.5 KB
  Обертання оборотних коштів розраховується тривалістю одного обороту в днях чи кількістю оборотів за звітній період коефіцієнт обертання Тривалість одного обороту в днях це відношення суми середнього залишку оборотних коштів до суми одноденної виручки за період що аналізується: Z = О х t ...
47902. Проектирование районной понизительной подстанции напряжения в 35/6 кВ разных мощностей 1.64 MB
  В процессе проектирования было сделано следующее: выбрано число и мощность силовых трансформаторов, а так же схема электрических соединений как на ВН, так и на НН. На основе этого были выбраны необходимые аппаратура, токоведущие части и изоляторы в соответствии с предъявляемыми к ним требованиями.
47903. ІСТОРІЯ УКРАЇНИ 1.74 MB
  ГРИГОРЕНКО ІСТОРІЯ УКРАЇНИ КУРС ЛЕКЦІЙ Хмельницький 2011 Передмова Історія України це наша дорогоцінна спадщина в якій акумульовано багатовіковий історичний досвід українського народу в усіх сферах життєдіяльності від доісторичних часів до сьогодення. Вивчення і грунтовне знання історії свого народу є однією з найважливіших складових формування високих патріотичних почуттів виховання високих моральних якостей громадянина України пошани і любові до своєї Батьківщини готовності до захисту її священних рубежів та примноження її матеріальних...
47904. Іменник як частина мови 873 KB
  Лексикограматичні розряди іменників: іменники з конкретним та абстрактним значенням; назви істот і неістот; іменники загальні і власні назви; збірні іменники; − іменники з речовинним значенням; одиничні іменники. Предмет у граматиці мислиться широко: це усе те що відповідає на питання хто або що Іменники із значенням реальної предметності є первинними. Наприклад це іменники на позначення назв властивостей якостей дій станів в абстрагуванні від їх субєктів тобто опредмеченіâ властивості якості дії радість честь...
47905. Інвестиційні операції 139 KB
  Інвестиційні операції Мета заняття: дати характеристику економічній суті інвестицій та основним їх видам; ознайомити студентів з основними методами оцінки привабливості інвестиційних операцій. Економічна суть інвестицій. Економічна діяльність окремих суб'єктів господарювання і країни в цілому значною мірою характеризується обсягом і формами здійснюваних інвестицій.