Непосредственное кодирование функций на языке С и создание программы
Непосредственное кодирование функций 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; просмотров: 482;