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


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

#include <conio.h>

#include <stdio.h>

#include <string.h>

struct stItem

{

char sName[16];

char sCountry[16];

int iCount;

int iSum;

stItem *next;

};

struct stItem *first,*rob;

int records;

void addrecord()

{

char string[100];

int i;

char q;

clrscr();

printf("\nНазва: ");

scanf("%s",string);

strncpy(rob->sName,string,15);

printf("Країна: ");

scanf("%s",string);

strncpy(rob->sCountry,string,15);

printf("К-ть: ");

scanf("%i",&rob->iCount);

printf("Сума: ");

scanf("%i",&rob->iSum);

rob->next=new stItem;

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 %-16s %-5s %-5s\n","N","Назва",

"Країна","К-ть","Сума");

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

while(rob->next!=NULL)

{

printf("%-4i %-16s %-16s %-5i %-5i\n",

++i,rob->sName,rob->sCountry,rob->iCount,rob->iSum);

rob=rob->next;

}

records=i;

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

getch();

};

void showmatch(void)

{

int i=0,flag;

long sum=0;

char *c;

FILE *out;

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

== NULL)

{

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

return;

};

rob=first;

printf("%-4s %-16s %-16s %-5s %-5s\n","N","Назва",

"Країна","К-ть","Сума");

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

while(rob->next!=NULL)

{

i++;

if (rob->iCount>10) {

printf("%-4i %-16s %-16s %-5i %-5i\n",

i,rob->sName,rob->sCountry,rob->iCount,rob->iSum);

fprintf(out,"%-4i %-16s %-16s %-5i %-5i\n",

i,rob->sName,rob->sCountry,rob->iCount,rob->iSum);

sum+=rob->iSum;

}

rob=rob->next;

}

printf("\nСума = %li \n",sum);

fprintf(out,"\nСума = %li \n",sum);

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,"%-4i %-16s %-16s %-5i %-5i\n",

++i,rob->sName,rob->sCountry,rob->iCount,rob->iSum);

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 %16s %16s %i %i\n",

&i,rob->sName,rob->sCountry,&rob->iCount,&rob->iSum) records++;

if (rob->next==NULL) {

rob->next= new stItem;

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

rob=first;

rob->next=NULL;

//read saved database

read_from_file("EX");

//create backup copy

save_to_file("EX.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("EX.BAK"); //create a backup copy

addrecord();

save_to_file("EX");

break;

}

case '2': {

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

deleterecord();

save_to_file("EX");

break;

}

case '3': {

showrecords();

break;

}

case '4': {

//restore from backup

read_from_file("EX.BAK");

save_to_file("EX");

break;

}

}

}while(c!=0x1B);

}

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

1 Конфети Україна 12 1200

2 Борошно Болгарiя 120 12000

3 Аспiрин Нiмеччина 123 3458

4 АН-174 Україна 1 120000

5 Голка Туреччина 7 7

6 Ел.Двигун Китай 9 9000

7 Газонокосилка Албанiя 2 20000

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

1 Конфети Україна 12 1200

2 Борошно Болгарiя 120 12000

3 Аспiрин Нiмеччина 123 3458

Сума = 16658