У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


Завдання: Сформувати файл “ЕХ”, що містить відомості про експорт товарів такого зразка: порядковий номер запису, найменування,

Завдання: Сформувати файл “А”, що містить інформацію про номери телефонів такого зразка: порядковий номер запису, прізвище власника, його ініціали, номер телефону, адреса. Вивести на екран прізвище та ініціали тих, які проживають по вул. Шевченка і їхній номер телефону містить цифру “3”. При вимозі користувача записати таблицю із цією інформацією у файл “В”. Забезпечити можливість поповнення файлу “А” з клавіатури, а також вилучення обраних по порядковому номеру записів. Після модифікації файлу “А” таблиця, яка виводиться на екран і файл “В” повинні оновлюватись автоматично. Забезпечити можливість відновлення попередньої версії модифікованого файлу.

#include <conio.h>

#include <conio.h>

#include <stdio.h>

#include <string.h>

struct stAbonent

{

char sPrizv[15];

char cInic1,cInic2;

char sPhone[14];

char sAddr[20];

stAbonent *next;

};

struct stAbonent *first,*rob;

int records;

void addrecord()

{

char string[100];

int i;

char q;

clrscr();

printf("\nПрiзвище: ");

scanf("%s",string);

strncpy(rob->sPrizv,string,14);

printf("Iнiцiали: ");

rob->cInic1=getch();

printf("%c.",rob->cInic1);

rob->cInic2=getch();

printf("%c.\n",rob->cInic2);

printf("Телефон: ");

scanf("%s",string);

strncpy(rob->sPhone,string,13);

printf("Адреса: ");

scanf("%s",string);

strncpy(rob->sAddr,string,19);

rob->next=new stAbonent;

rob=rob->next;

rob->next=NULL;

records++;

}

void deleterecord(void)

{

int del,i=0;

clrscr();

printf("Введiть номер запису для вилучення:");

scanf("%i",&del);

if ((del<1)||(del>records)) return;

if (del==1) {

first=first->next;

} else {

rob=first;

while(rob->next!=NULL)

{

i++;

if (i==(del-1)) {

rob->next=(rob->next)->next;

break;

}

rob=rob->next;

}

}

records--;

return;

}

void showrecords(void)

{

int i=0;

clrscr();

rob=first;

printf("%-4s %-16s %-4s %-15s %-21s\n","N",

"Прiзвище","Iнiц","Телефон","Адреса");

printf("-----------------------------------------------------");

while(rob->next!=NULL)

{

printf("\n%-4i %-16s %c.%c. %-15s %-21s", ++i,

rob->sPrizv,rob->cInic1,rob->cInic2,

rob->sPhone,rob->sAddr);

rob=rob->next;

}

records=i;

printf("\nНатиснiть будь-яку клавiшу для продовження...");

getch();

};

void showmatch(void)

{

int i=0,flag;

char *c;

FILE *out;

if ((out = fopen("B", "w+"))

== NULL)

{

printf("Cannot create file 'B'.\n");

return;

}

rob=first;

printf("%-4s %-16s %-4s %-15s %-21s\n","N","Прiзвище",

"Iнiц","Телефон","Aдреса");

printf("-----------------------------------------------------");

while(rob->next!=NULL)

{

i++;

flag=0;

c=rob->sPhone;

while (*c++)

if (*c=='3')

{

flag=1;

break;

}

if (flag==1) {

if (strcmp(rob->sAddr,"Шевченка")<0) {

flag=0;

}

}

if (flag==1) {

printf("\n%-4i %-16s %c.%c. %-15s %-21s",i,rob->sPrizv,

rob->cInic1, rob->cInic2,rob->sPhone,rob->sAddr);

fprintf(out,"%-3i %-15s %c %c %-14s %-20s\n",++i,

rob->sPrizv,rob->cInic1,rob->cInic2,

rob->sPhone,rob->sAddr);

};

rob=rob->next;

}

fclose(out);

};

int save_to_file(char *filename)

{

FILE *out;

int i=0;

if ((out = fopen(filename, "w+"))

== NULL)

{

printf("Cannot create file '%s'.\n",filename);

return 1;

}

rob=first;

while(rob->next!=NULL)

{

fprintf(out,"%-3i %-15s %c %c %-14s %-20s\n",++i,

rob->sPrizv,rob->cInic1,rob->cInic2,

rob->sPhone,rob->sAddr);

rob=rob->next;

}

fclose(out);

return 0;

}

int read_from_file(char *filename)

{

FILE *in;

int i;

if ((in = fopen(filename, "r"))

== NULL)

{

printf("Cannot open file '%s'.\n",filename);

return 1;

}

records=0;

rob=first;

while(!feof(in))

{

fscanf(in,"%i %15s %c %c %14s %20s\n",&i,rob->sPrizv,

&rob->cInic1,&rob->cInic2,rob->sPhone,rob->sAddr);

records++;

if (rob->next==NULL) {

rob->next= new stAbonent;

rob=rob->next;

rob->next=NULL;

} else {

rob=rob->next;

}

}

rob->next=NULL;

fclose(in);

return 0;

}

void main (void)

{

char c;

//create an empty list

records=0;

first = new stAbonent;

rob=first;

rob->next=NULL;

//read saved database

read_from_file("A");

//create backup copy

save_to_file("A.BAK");

do{

//show menu

clrscr();

printf("[ESC] - Вихiд\n");

printf("[ 1 ] - Додaти запис\n");

printf("[ 2 ] - Вилучити запис\n");

printf("[ 3 ] - Показати записи\n");

printf("[ 4 ] - Вiдмiнити останню дiю\n");

printf("------------------------\n");

printf("В базi записiв: %i\n\n",records);

showmatch();

c=getch();

switch (c)

{

case '1': {

save_to_file("A.BAK"); //create a backup copy

addrecord();

save_to_file("A");

break;

}

case '2': {

save_to_file("A.BAK"); //create a backup copy

deleterecord();

save_to_file("A");

break;

}

case '3': {

showrecords();

break;

}

case '4': {

//restore from backup

read_from_file("A.BAK");

save_to_file("A");

break;

}

}

}while(c!=0x1B);

}

Вміст файлу “А”

1 Мельничук Р В 203178 Шевченка,21

2 Будуркевич А О 435345 Чорновoла,12

3 Мельниченкo А А 453455 Вовчинецька,225

4 Ющенко Е T 566545 Тичини,11

5 Рондиль С Р 645645 Донцова,12

6 Iваночко Й П 648781 Симоненка,5

7 Козлюк I А 564564 Коновальця,45

8 Чорнописький Н М 264644 Бандери,1

9 Пiдпiльний Г М 541111 Прутська,11

10 Босий I А 232323 Шевченка,12

11 Мартинов Е Н 321331 Мазепи,243a

12 Падалкiн Й К 132323 Франка,11,кв.12

13 Козлодоев С Г 564565 Шевченка,123

Вміст файлу “В”

1 Мельничук Р В 203178 Шевченка,21

10 Босий I А 232323 Шевченка,12