Непосредственное кодирование функций на языке С и создание программы

Непосредственное кодирование функций LoadFromFile, AddRecord, PrintTable, SavetoFile на языке С выполняется при помощи текстового редактора Borland C++.

Кодирование начинается с разработки алгоритмов указанных функций и функции main, в которой реализуется алгоритм управления программой (в данном случае через меню). В зависимости от используемых стандартных функций, к тексту программы подключается файлы-библиотеки с описанием прототипов (с описанием стандартных функций) при помощи оператора #include.

В программе // - это признак строчного комментария в Borland C++.

 

Окончательный вариант программы

#include <dos.h> // библиотека, содержащая функцию delay

#include <stdio.h> // библиотека, содержащая функции ввода-вывода

#include <conio.h> // библиотека, содержащая функцию clrscr

struct Man{ // базовая структура содержит:

 

char Name[12]; // поле, содержащее фамилию

char Profession[20]; // поле, содержащее профессию

int Age; // поле, содержащее возраст

};

Man Records[20]; // массив элементов базовой структуры Man

// (максимально может быть 20 записей)

int countRecord; // количество определенных элементов в массиве Records

 

void LoadFromFile(){ // функция считывания информации из файла

FILE *in; // объявление логического имени файла,

// представляющего собой указатель на экземпляр структуры FILE,

// описанный в библиотеке stdio.h

countRecord=0; // обнуление количества считанных

// элементов массива Records

// конструкция if ((out = fopen(...))= = NULL)while( !=EOF) позволяет

// осуществлять на возможность открытия файла для чтения

if ((in = fopen("c:\\work\\1.DAT", "rt"))== NULL){ // открытия файла

printf("Cannot open input file.\n");

return; // выход в случае неудачи открыть файл

}

while (fscanf(in, "%s", Records[countRecord].Name)!=EOF){ // считывание поля Name и

// проверяет не является ли

// считанная информация

// признаком конца файла

if(!fscanf(in, "%s", Records[countRecord].Profession)) // считывание поля Profession

break;

if(!fscanf(in, "%d", &Records[countRecord].Age)) // считывание поля Age

break;

countRecord++; // увеличение количества введенных записей в массив на 1

}

fclose(in);

}

void SavetoFile(){ // функция записи информации в файл

FILE *out; // объявление логического имени файла,

// представляющего собой указатель на экземпляр структуры FILE,

// описанный в библиотеке stdio.h

if ((out = fopen("c:\\work\\1.DAT", "wt"))== NULL){ // открытие файла и проверка на

printf("Cannot open input file.\n"); // УСПЕШНОСТЬ ЗАВЕРШЕНИЯ ОПЕРАЦИИ

return ; // выход в случае неудачи открыть файл

}

for(int i=1;i<=countRecord;i++){ // цикл записи информации в файл

// из массива элементов

fprintf(out, "%s ", Records[i-1].Name); // запись поля Name в файл

fprintf(out, "%s ", Records[i-1].Profession); // запись поля Profession в файл

fprintf(out, "%d\n", Records[i-1].Age); // запись поля Age в файл

}

fclose(out);

}

void PrintTable(){ // функция вывода таблицы на экран

// создание шапки таблицы

printf("\n ");

printf(" Table 1");

printf("\n***************************************");

printf("*****************************************");

printf("\n Name Profession Age\n");

printf("\n***************************************");

printf("*****************************************\n");

// цикл формирования строк таблицы

for(int i=1;i<=countRecord;i++){

printf("%12s ",Records[i-1].Name);

printf("%20s ",Records[i-1].Profession);

printf("%5d\n",Records[i-1].Age);

}

// нижняя часть рамка таблицы

printf("***************************************");

printf("*****************************************\n");

delay(2000); // задержка выполнения программы на 2 секунды

}

void AddRecord(){ // функция добавления нового элемента в массив

printf("input Name: "); // ввод имени или фамилии

scanf("%s",Records[countRecord].Name);

printf("input Profession: "); // ввод адреса

scanf("%s",Records[countRecord].Profession);

printf("input Age: "); // ввод возраста

scanf("%d",&Records[countRecord].Age);

countRecord++;

}

void main(void){

char ch;

do{

clrscr();

// вывод меню на экран

printf("L - загрузить данные из файла в массив\n");

printf("A - добавить сотрудника в массив\n");

printf("P - распечатать таблицу\n");

printf("S - запись данных из массива в файл\n");

printf("V - выход из программы\n");

// приглашение для ввода и ввод управляющего символа

printf("Выберите операцию:");

scanf("%c",&ch);

// обработка результатов выбора элемента меню

switch(ch){

case 'L': LoadFromFile(); // вызов функции считывания информации из файла

break;

case 'A': AddRecord (); // вызов функция добавления

// нового элемента в массив

break;

case 'P': PrintTable(); // вызов функция вывода таблицы на экран

break;

case 'S': SavetoFile(); // вызов функция записи информации в файл

break;

}

}while(ch!='V');

}

 








Дата добавления: 2016-04-14; просмотров: 434;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.015 сек.