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


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

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

#include <conio.h>

#include <stdio.h>

#include <string.h>

struct stSpivrobitnuk

{

char sPrizv[11];

char sImja[11];

char sPobat[11];

char sPosada[11];

int iOklad;

int iYear;

stSpivrobitnuk *next;

};

struct stSpivrobitnuk *first,*rob;

int records;

void addrecord()

{

char string[100];

int i;

char q;

clrscr();

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

scanf("%s",string);

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

printf("Iм`я: ");

scanf("%s",string);

strncpy(rob->sImja,string,10);

printf("По-батьковi: ");

scanf("%s",string);

strncpy(rob->sPobat,string,10);

printf("Посада: ");

scanf("%s",string);

strncpy(rob->sPosada,string,10);

printf("Оклад: ");

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

printf("Рiк: ");

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

rob->next=new stSpivrobitnuk;

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 %-11s %-11s %-11s %-11s %-5s %-5s\n","N",

"Прізвище","Iм`я","По-батьковi","Посада","Оклад","Рiк");

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

while(rob->next!=NULL)

{

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

rob->sPrizv,rob->sImja,rob->sPobat,rob->sPosada,

rob->iOklad,rob->iYear);

rob=rob->next;

}

records=i;

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

getch();

};

void showmatch(void)

{

int i=0,flag,min,max;

char *c;

rob=first;

min=32767;

max=0;

//find min and max

while(rob->next!=NULL)

{

if (strcmp(rob->sPosada,"Iнженер")==0) {

if (min>rob->iOklad) min=rob->iOklad;

if (max<rob->iOklad) max=rob->iOklad;

}

rob=rob->next;

}

printf("%-4s %-11s %-11s %-11s %-11s %-5s %-5s\n","N",

"Прiзвище","Iм`я","По-батьковi","Посада","Оклад","Рiк");

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

//print

rob=first;

while(rob->next!=NULL)

{

i++;

if (strcmp(rob->sPosada,"Iнженер")==0) {

if ((rob->iOklad==min) || (rob->iOklad==max))

{

if(rob->iOklad==min)

printf(" MIN: ");

else

printf(" MAX: ");

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

i,rob->sPrizv,rob->sImja,rob->sPobat,

rob->sPosada, rob->iOklad,rob->iYear);

}

}

rob=rob->next;

}

};

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

++i,rob->sPrizv,rob->sImja,rob->sPobat,

rob->sPosada,rob->iOklad,rob->iYear);

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

rob->sPrizv,rob->sImja,rob->sPobat,

rob->sPosada,&rob->iOklad,&rob->iYear);

records++;

if (rob->next==NULL) {

rob->next= new stSpivrobitnuk;

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

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 Кузнецов Василь Романович Iнженер 440 1980

2 Перебийнic Олег Степанович Технiк 360 1984

3 Перейма Вiталiй Борисович Дизайнер 500 1980

4 Джмiль Олена Петрiвна Секретар 300 1985

5 Стаканов Степан Васильович Сантехнiк 270 1960

6 Дейнега Валентина Василiвна Iнженер 460 1979

7 Шлемко Тарас Павлович Програмicт 600 1986

8 Цибульский Євген Михайлович Iнженер 500 1970

9 Шеремета Василь Павлович Iнженер 700 1984

10 Коваленко Олена Михайлiвна Лаборант 400 1986