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

}

Висновок

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


 

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

421. Построение с помощью компьютерной графики 767.5 KB
  Построение третьего вида по двум данным. Построение трех видов с простыми разрезами. Местные виды, сечения, выносные элементы, местные разрезы (на примере вала) в среде AutoCAD 2011.
422. Построение эмпирических формул методом наименьших квадратов 575.5 KB
  Нахождение эмпирических формул методом наименьших квадратов (МНК) посредством возможностей пакета Microsoft Excel, Mathcad, MATLAB. Уравнения различных видов с помощью аппроксимации линейной, квадратичной и экспоненциальной зависимостей.
423. Привод к роликовому конвейеру 4.24 MB
  Выбор электродвигателя и кинематический расчет привода. Предварительный расчет валов редуктора и выбор подшипников. Проверка прочности шпоночных соединений. Конструирование корпуса редуктора.
424. Философское учение о ценностях (аксиология) 164.5 KB
  В качестве философской категории ценность — то, что чувства людей диктуют признать стоящим над всем и к чему можно стремиться, созерцать, относиться с уважением, признанием, почтением. Жизненные ценности: их роль в воспитательной деятельности. Типы ценностного сознания в истории культуры.
425. Использование стекла в архитектуре 79 KB
  Сырьем для производства обычного стекла служит главным образом оксид кремния (71-73%), или, иначе говоря, обычный песок. Оксиды магния и алюминия выполняют стабилизирующую функцию, повышая прочность стекла.
426. Финансовые институты. Биржа как финансовый институт 136 KB
  Банки, их виды и функции. Совокупность кредитно-финансовых учреждений, аккумулирующих и предоставляющих в долг денежные средства. Биржа как финансовый институт, её роль и функции. Прочие финансовые институты, их роль в организации финансового обращения.
427. Общепринятые теории происхождения жизни на планете Земля 83.5 KB
  Теории происхождения жизни на Земле. Абиогенная теория происхождения жизни на Земле. Поиск жизни во Вселенной. Вероятность самозарождения живого организма из неорганических веществ практически равняется нулю.
428. Вибір стратегічного профілю зовнішньоекономічної діяльності 132 KB
  Нині у практиці міжнародного бізнесу сформувалося чотири основних стратегічних профілі міжнародних компаній, з урахуванням яких доцільно виробляти основні стратегічні рішення. Процес формування, оцінювання і прийняття стратегій розвитку бізнесу.
429. Разработка программы Каталогизатор дисков 605.5 KB
  В данной пояснительной записке рассматривается описание программы Dark Catalog. В качестве основного инструмента разработки применяется Microsoft Visual Studio 2005. Язык программирования C#.