Обработка табличной информации

 

Аннотация


В данном документе описывается программа, написанная в соответствии с постановкой задачи на курсовое проектирование по теме "Обработка табличной информации" по дисциплине "Основы программирования и алгоритмические языки". Структура записей входного файла имеет следующий вид: шифр группы (6 символов), шифр дисциплины (6 символов), количество отличных, хороших, удовлетворительных, неудовлетворительных оценок, пропущено лекций, пропущено практических занятий.

Для проверки функционирования программы разработан тестовый пример. Результаты тестирования показывают, правильность выполнения программой всех операции по обработке входных данных и формированию выходных данных.

Область применения программы - любое высшее учебное заведение, где требуется анализ информации об успеваемости и количестве пропущенных занятий.


Введение


По окончанию курса Основы программирования и алгоритмические языки стоит задача в закреплении навыков программирования на ЭВМ. Она состоит в написании программы на языке высокого уровня (Си), знакомстве с организацией и принципами действия операционных систем, изучение правил оформление программной документации. В современном мире обработки информации очень удобно использование диалогового режима работы. Так как базы данных широко применяются в современном обществе то необходимо улучшать и более широко применять данный тип информации. Записи являются прообразом баз данных. Для небольших объемов данных и достаточно простых расчетов (в обучающих целях ) можно использовать высокоуровневые языки программирования , такие как Си , Паскаль и т.д. данные языки позволяют использовать динамические и статические структуры данных , которые можно использовать для обработки такой информации. Такую программу можно применять в высших учебных заведениях, где используются компьютерная техника. К программе прилагается пояснительная записка, в которой говорится о назначении и области применения этой программы, о ее технических характеристиках, показан тестовый пример выполнения, а также представлено полное описание работы программы.


1. Назначение и область применения


Данная программа пример работы базы данных высшего учебного заведения. В ней учитывается информация о студентах: шифр группы, шифр дисциплины, оценки отлично, хорошо, удовлетворительно, не удовлетворительно, пропущенных лекций и практических занятий. В результате работы программы выводится таблица, в которой подсчитывается средний балл по шифру группы, пропущенных лекций и практик у всей группы и по всем дисциплинам, то есть всего.

Программа работает в текстовом режиме под управлением операционной системы MSDOS v.5.0, а так же Windows3.1/95/98/2000/XP. Для загрузки списка требуется специально организованный файл. Вывод выходной таблицы производится как на экран, так и в файл, задаваемый пользователем. Для работы программы подходит практически любой PC компьютер, оснащенный цветным дисплеем.


1.1 Постановка задачи


Дан входной файл следующей структуры: таблицы с шапкой; в таблице присутствуют следующие поля: Структура записей входного файла имеет следующий вид: шифр группы (6 символов), шифр дисциплины (6 символов), количество отличных, хороших, удовлетворительных, неудовлетворительных оценок, пропущено лекций, пропущено практических занятий, (все последние значения представлены целым типом, ширина поля для них -6 символов, максимальное значение 32767 , минимальное - 0). Требуется обработать входные данные и вывести в файл или на экран выходную таблицу вида, представленного на таблице 2.1.


Таблица 1 - Вид выходной таблицы

Шифр группыСредний баллПропущено занятийЛекцийПрактическихВсего

Интерфейсная часть программы должна быть оформлена в виде меню:

  1. Создание
  2. Чтение Данных
  3. Добавление Данных
  4. Построить таблицу (входные)
  5. Удалить данные
  6. Корректировать данные
  7. Построить таблицу (выходные )
  8. Сохранить в файл
  9. Выход из программы

Программа также выводит выходную таблицу на дисплей и загружает входные данные из специально подготовленного файла.


.2 Входные данные


Входными данными служит специальный текстовый файл. Он представляет собой таблицу вида, соответствующего таблице 2.2.


Таблица 2.2 - Выходные данные

Шифр ГруппыШифр дисциплиныОтл.Хор.Удовл.Неуд.ПропущенолекцийПрактик


При чем шифр группы (6 символов), шифр дисциплины (6 символов), количество отличных, хороших, удовлетворительных, неудовлетворительных оценок, пропущено лекций, пропущено практических занятий, (все последние значения представлены вещественным типом). Шифр группы представляет собой группу студентов; шифр дисциплины это предмет изучаемый группой; оценки отлично, хорошо, удовлетворительно, неудовлетворительно-это успеваемость группы по изучаемой дисциплине; пропущено лекций и практик-это посещаемость группы конкретной дисциплины. Количество записей в файле ограничено только доступной оперативной памятью, все записи объединены в таблицу, нарисованную символами псевдографики (при просмотре из-под операционных систем, отличных от MSDOS может некорректно отображаться таблица из-за несоответствия кодировок символов).


1.3 Выходные данные


Выходные данные представлены в таблице 2.3. Шифр группы представляет собой группу студентов; пропущено занятий - это сумма пропущенных лекций и практик по курсу, итого-это итог по всем полям выходной таблици. Эта таблица может быть выведена на дисплей. Как уже указывалось в предыдущем пункте данная таблица может выглядеть некорректно в операционных системах отличных от MSDOS v.5.0 из-за несоответствия кодировок символов и различных шрифтов. Для корректного просмотра в программе типа блокнота для операционных систем Windows 9X следует выставит шрифт Terminal , набор символов OEM/DOS .


Таблица 2.3 - Вид выходных данных

КурсПропущено занятийКоличество оценок, %Отл.Хор.Удовл.Неуд.123Итого

1.4 Выбор и описание структур данных


Построение таблиц, требуемых по заданию, могут включать в себя неизвестное заранее количество элементов, поэтому для хранения входной информации статические переменные неприемлемы. Наиболее подходящим оказывается двунаправленный список так как только в нем возможны: перестановка порядка следования элементов без копирования самой структуры; поиск как в прямом, так и обратном направлении; вставка и удаление элементов наиболее оптимальным образом. В тоже время не требуется поддержка сложных структур данных и методов работы, как в деревьях.

Следующая структура используется для хранения записей входного файла:


struct zap{

char group[6] ; //строка из шести символов

char disc[6] ; //строка из шести символов

unsigned int otl,hor,udov,neud, //целочисленный тип,prakt;

};

Информация, содержащаяся в полях:

group - шифр группы;

disc - шифр дисциплины;

otl - количество оценок отлично;

hor - количество оценок хорошо;

udov - количество оценок удовлетворительно;

neud - количество оценок неудовлетворительно;

lekc - пропущено лекций;

prakt - пропущено практик.


Для того чтобы возможно было обрабатывать множество записей, необходимо организовать их в массив или список. В данном случае используется список, так как заранее неизвестно количество элементов, поэтому нельзя задать размер массива. Для удобства работы организуется двунаправленный список записей. При использовании двунаправленного списка возможно организовать просмотр записей как от начала в конец (прямое направление) так и из конца в начало (обратное), что используется в процедурах редактирования и удаления записей при перемещении от одной записи к другой.


.5 Описание алгоритма программы


Основная программа рассчитана на вызов меню и запуск соответствующей функции программы. Далее последовательно идут блок-схемы всех основных функций программы.


Рисунок 1.1 - Структурная схема алгоритма основной программы


Рисунок 1.2 - Продолжение структурной схемы алгоритма


.оrg1 - функция, которая создает двунаправленный список.

.оrg - функция, которая считывает данные из предварительно подготовленного файла.

.dob - функция, которая добавляет элемент в двунаправленный список.

.vivod - позволяет вводить предварительно обработанные данные, которые используются в программе.

.udal - позволяет удалять данные из двунаправленного списка как частично так и полностью удаление по шифру группы.


Рисунок 2 - Структурная схема алгоритма функции удаления


6. Korectir - позволяет корректировать данные в двунаправленном списке. Корректировка производится по шифру группы при вводе нужного шифра группы происходит корректирование всей записи.


Рисунок 3 - Структурная схема алгоритма функции корректировки


. Vihodnaya - позволяет выводить предварительно обработанные данные, которые используются в основной таблице.

. Save - Сохраняет обработанные данные на жесткий или какой-нибудь другой предварительно подготовленный(указанный) диск.

. Exit - выход из программы.


1.6 Выбор языка программирования


Программа написана на языке высокого уровня С++ и скомпилирована компилятором Borland C 3.1 для MSDOS v.5.0 с использованием бесплатно распространяемого (посредством FIDO и Internet ) пакета ComC для работы с текстовыми окнами, клавиатурой и т.д. Данный пакет предоставляет подобные TurboVision средства для работы с окнами, меню, но занимает значительно меньше места и работает быстрее.

Язык С++ и компилятор выбраны из-за его гибкости, широкого распространения, малого объема исполняемого файла и большой скорости выполнения. Компилятор Borland C++ к тому же включает в себя опциональную возможность оптимизации кода программы как по скорости, так и по размеру

[1-3].

Для разработки программ такого типа удобнее использовать язык высокого уровня;

1.Легкость в работе с указателями;

2.Достаточная скорость выполнения готовой программы;

Всем этим требованиям удовлетворяет язык программирования Borland C++

программа таблица данные алгоритм


2. Технико-экономические показатели


В результате компиляции программы компилятором Borland C++ 3.1 был получен исполняемый файл формата MSDOS EXE размером 52Кбайта, что является приемлемым как для компьютеров десятилетней давности, так тем более современных.

Для работы программа требует приблизительно 1Мбайт оперативной памяти (зависит от количества загруженных записей). Данный объем позволяет программе выполнятся на самом широком круге компьютеров, фактических всех поддерживающих операционную систему DOS.

Для выполнения требуется процессор класса 80x86, видео адаптер поддерживающий VGA, цветной монитор, поддерживающий текстовый режим 80х50 и иметь конфигурацию pal/secam, клавиатура 101keys.

При тщательной оптимизации возможна компиляция данного файла в модели памяти tiny, то есть получение исполняемого файла формата COM, что ещё снижает требования к компьютеру.

Размер входного файла зависит от количества записей в нем и для 36 записей составляет 2Кбайта.

В программе отсутствует ресурсоемкие функции, поэтому производительность центрального процессора не критична.

Программа может работать под управлением операционной системы класса MSDOS v.1.0, при этом сохраняет работоспособность и в режиме эмуляции MS-DOS операционной системой Windows9X, Me, ХР и RedHat Linux. Работоспособность в режиме эмуляции под другими операционными системами не проверялось.

Таким образом программа может выполняться практически на любом доступном PC компьютере [4].


3. Тестовый пример


Проведем тестовый эксперимент чтобы убедиться в работоспособности программы.

Создадим следующую входную таблицу, такую как таблица 4.1.


Таблица 4.1 - Вид входных данных.

Шифр ГруппыШифр дисциплиныОтл.Хор.Удовл.Неуд.ПропущенолекцийпрактикИ-14дОС123456И-21дФизика789101112И-33дБЖД131415161718И-44дТИМС192021222324

И для этого случая мы получим следующую выходную таблицу, такую же, как и та, что представлена в таблице 4.2.


Таблице 4.2 - Вид выходных данных.

КурсПропущено занятийКоличество оценок, %Отл.Хор.Удовл.Неуд.11110,020,030,040,022318,222,727,331,833520,623,526,529,444721,723,926,128,3Итого11670,590,2109,0129,5


Заключение


Данная программа, составлена в соответствии с постановкой задачи на курсовое проектирование по теме "Разработка программы обработки табличная информации" по дисциплине "Основы программирования и алгоритмические языки" (ОПиАЯ). При написании программы использованы методические указания по курсовому проектированию по дисциплине "ОПиАЯ". Для проверки работоспособности программы и правильности обработки входных и входных данных разработан тестовый пример. Тестирование программы подтвердило, что программа правильно выполняет обработку данных и выдаёт верные результаты. Всё это свидетельствует о работоспособности программы и позволяет сделать вывод о пригодности программы к решению практических задач по обработке табличной информации.


Приложение


Назначение программы

Эта работа является примером программного продукта, который может быть использован в учебных целях. Программа предназначена для подсчета количества пропущенных занятий и количество оценок (в %) в высшем учебном заведении это удобно если в высшем учебном заведении много групп студентов. Она позволяет наглядно представить информацию и проследить своеобразные тенденции рабочего процесса.

Условия выполнения программы:

Для работы программа требует приблизительно 200 Кбайт оперативной памяти (зависит от количества загруженных записей). Данный объем позволяет программе выполнятся на самом широком круге компьютеров, фактических всех поддерживающих операционную систему MSDOS v5,0.

Для выполнения требуется процессор класса 80x86, цветной монитор, поддерживающий текстовый режим 80х50.

Размер входного файла зависит от количества записей в нем и для 36 записей составляет 2Кбайта. Размер выходного файла - 742 байта.

Выполнение программы:

Управление программой состоит в выборе того или иного пункт меню. Итак, рассмотрим все пункты последовательно.

a)Организация списка:



Данный пункт служит для создания полей структуры непосредственно с клавиатуры. При выборе пункта отображается поля, при последовательном введении данных создаются поля записи об определенных группах.

Для того, чтобы выйти из функции необходимо в поле шифр группы ввести «end».

  • При выборе пункта отображается поля, при последовательном введении данных создаются поля записи об определенных группах.
  • После введения нового значения следует нажать «enter» или «Для того, чтобы выйти из функции необходимо в поле шифр группы ввести «end». Далее пользователь вернется к пункту 1 и сможет выбрать следующую запись для изменения. Измененные значения сразу отображаются в выходной таблице на заднем плане.

б) Чтение данных из файла:

  • При выборе этого пункта текстовый фаил загружается автоматически.

в) Добавление данных в список:

  • После нажатия клавиши enter предлагается ввести данные, при выборе пункта отображаются поля, при последовательном введении данных добавляются поля записи об определенных рабочих.
  • г) Входная таблица:
  • Строит выходную таблицу и отображает её на экране.


г) Удаление:

  • Удаление элемента происходит по шифру группы.

После нажатии клавиши Enter предлагается ввести поле шифра группы, если в списке есть искомая группа то происходит её удаление, а если нет то выводится сообщение о том что её нет.

е) Корректировка данных:

  • В появившемся окне пользователь может ввести шифр группы. При этом если группы нет, то будет выведено соответствующее.

Иначе поле будет откорректировано.

ж) Выходная таблица:

Строит выходную таблицу и отображает её на экране. При этом происходит подсчет соответствующих значений.



з) Сохранение данных:

В появившемся окне пользователь может ввести имя выходного файла. При этом если файл уже присутствовал до того или недоступен для записи пользователь получит соответствующее сообщение.

и) Выход из программы:

Осуществляется клавишей «ESC» или пункта меню. Выходит из программы без сохранения выходного файла.

Содержимое выходной таблицы будет утеряно, так что следует сохранить её заранее.


#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

#include <stdio.h>

#include <string.h>char string[30]; string menu[9] = {

" Создание ",

" Чтение ",

" Добавление ",

" Входная таблица ",

" Удаление ",

" Корректировка ",

" Выходная таблица ",

" Сохранение ",

" Выход "};

struct zap

{

char group[6] ;

char disc[7] ;otl,hor,udov,neud,lekc,prakt;

};query

{inf;query *nr,*nl;

};query *left,*right,*temp,*temp1,*newe;zap z;vihod

{char kurs;lekc_prakt;otl,hor,udov,neud;

};query_v

{inf;query_v *nr,*nl;

};query_v *left_v,*right_v,*temp_v;vihod z_v;org1();org(FILE *open);dob();udal(query *);korectir(query *);save();vivod(query *);vihodnaya(query *);

//-----------------------------------------------------------main()

{key, i, s=0; // key - Нажатая клавиша; s - пункт меню

_setcursortype(_NOCURSOR);//убираем курсорfilename1[20]; //описание переменной типа char

{textbackground(1);();(7);

//очистка экрана(26,9); printf("??????????????????????????");//Вывод на экран(26,10); printf("? ?");//Вывод на экран(26,11); printf("? ?");//Вывод на экран(26,12); printf("? ?");//Вывод на экран(26,13); printf("? ?");//Вывод на экран(26,14); printf("? ?");//Вывод на экран(26,15); printf("? ?");//Вывод на экран(26,16); printf("? ?");//Вывод на экран(26,17); printf("? ?");//Вывод на экран(26,18); printf("? ?");//Вывод на экран(26,19); printf("??????????????????????????");//Вывод на экран(i=0;i<=8;i++)

{(28,i+10);("%s", menu[i]); //Вывод на экран меню

}(28,s+10);(0);(menu[s]); //подсвечивание=getch();(28,s+10);(key) {72:s--; break;80:s++; break;13:switch (s) {0 : {

/*clrscr();*/org1();break;}

case 1 :{ clrscr();

FILE *open;//указатель на файл

open=fopen("e:\\input1.txt","r");//открытие файла в режиме записи

if(open!=NULL)

org(open);

else {

clrscr();printf("Такого файла нет!\n");

getch();

break;

}

}break;2 : dob();break;3 : /*clrscr();*/vivod(right);break;4 : udal(right);break;5 : korectir(right);break;6 : vihodnaya(right);break;7 : save();break;

case 27,8 : {exit(1); break;}

} }(s>8) s=0; //ограничения для курсора меню(s<0) s=8;

}(key!=27); //Условие выхода из цикла - нажатие клавиши ESC

} //1

//-----------------------------------------------------------------org1()

{(" выполняется функция создания файла\n");(" для окончания ввода введите 'end' \n");("Введите шифр группы:\n");

scanf("%s",&z.group);(strcmp(z.group,"end")==0);("Введите шифр дисциплины:\n");

scanf("%s",&z.disc);("Введите количество оценок отлично :\n");("%f",&z.otl);("Введите количество оценок хорошо:\n");("%f",&z.hor);("Введите количество оценок удовлетворительно:\n");("%f",&z.udov);("Введите количество оценок неудовлетворительно:\n");("%f",&z.neud);("Введите количество пропущенно лекций:\n");("%f",&z.lekc);("Введите количество пропущенных практических занятий:\n");

scanf("%f",&z.prakt);=(struct query*) malloc(sizeof(struct query));>inf=z;>nr=NULL;>nl=NULL;=newe;=newe;(z.group!="end")

{(" для окончания ввода введите 'end'\n");("Введите шифр группы:\n");

scanf("%s",&z.group);(strcmp(z.group,"end")==0);("Введите шифр дисциплины:\n");

scanf("%s",&z.disc);("Введите количество оценок отлично :\n");("%f",&z.otl);("Введите количество оценок хорошо:\n");("%f",&z.hor);("Введите количество оценок удовлетворительно:\n");("%f",&z.udov);("Введите количество оценок неудовлетворительно:\n");("%f",&z.neud);("Введите количество пропущенно лекций:\n");("%f",&z.lekc);("Введите количество пропущенных практических занятий:\n");

scanf("%f",&z.prakt);=(struct query*) malloc(sizeof(struct query));>inf=z;>nr=left;>nl=newe;=newe;

}>nl=NULL;

}

//-------------------------------------------------------------------org(FILE *open){(open,"%s",&z.group);(open,"%s",&z.disc);(open,"%f",&z.otl);(open,"%f",&z.hor);(open,"%f",&z.udov);(open,"%f",&z.neud);(open,"%f",&z.lekc);(open,"%f",&z.prakt);=(struct query*) malloc(sizeof(struct query));>inf=z;>nr=NULL;>nl=NULL;=newe;=newe;(!feof(open))

{(open,"%s",&z.group);(open,"%s",&z.disc);(open,"%f",&z.otl);(open,"%f",&z.hor);(open,"%f",&z.udov);(open,"%f",&z.neud);(open,"%f",&z.lekc);(open,"%f",&z.prakt);=(struct query*) malloc(sizeof(struct query));>inf=z;>nr=left;>nl=newe;=newe;

}>nl=NULL;(feof(open)==0);

}

//------------------------------------------dob()

{(right==NULL)

{("\nНеправильно, нажмите 1 или 0:");();;

}("Добавим элемент:\n");("Для окончания ввода введите в поле Шифр группы 'end'\n");("Введите шифр группы:\n");

scanf("%s",&z.group);(strcmp(z.group,"end")==0);("Введите шифр дисциплины:\n");

scanf("%s",&z.disc);("Введите количество оценок отлично :\n");("%f",&z.otl);("Введите количество оценок хорошо:\n");("%f",&z.hor);("Введите количество оценок удовлетворительно:\n");("%f",&z.udov);("Введите количество оценок неудовлетворительно:\n");("%f",&z.neud);("Введите количество пропущенно лекций:\n");("%f",&z.lekc);("Введите количество пропущенных практических занятий:\n");

scanf("%f",&z.prakt);=(struct query*) malloc(sizeof(struct query));>inf=z;>nl=right;>nr=newe;=newe;>nr=NULL;

}

//-------------------------------------------------------------------udal(query *)

{();group[6];a;g=0;=right;=left;

printf("Вы, хотите очистить весь список? Y or N\n");=getch();((a!='n') && (a!='y')&&(a!='т') && (a!='н')){();(" Нажмите Y или N! ");=getch();

}((a=='n')||(a=='y')||(a=='т')||(a=='н'))

{(right==NULL)

{("Список пуст!");();(right);;

}((a=='y')||(a=='н'))

{(temp!=NULL)

{(temp);=temp->nl;

}=NULL;();("Список удалён");();

}((a=='n')||(a=='т'))

{();("Удаление элемента:\n");("Введите шифр группы:\n");

scanf("%s",&group);(temp!=NULL)

{(strcmp(group,temp->inf.group)==0)(temp==right)

{=temp->nl;(right);=newe;>nr=NULL;=right;=1;

}=temp->nl;

}

if (g==0)

printf("Такой группы нет!\n");

else

printf("Строка удалена!\n");

getch();

}

}

}

//-------------------------------------------------------------------vivod(query *)

{int j, key; // j - Счётчик;key - Нажатая клавиша

struct query *first_i, *last_i;// i - Порядковый номер; first_i - элемент, который

clrscr();("выполняется функция просмотра таблицы\n");("для выхода нажмите клавишу ESC\n");

first_i=right;

_setcursortype(_NOCURSOR);

do

// первым выводится на экран; j - Счётчик;

{textbackground(1);(); // key - Нажатая клавиша(" Просмотр входной таблицы!\n");("???????????????ТАБЛИЦА№1????????????\n;("???????????????????????????????????\;("?шифр?шифр ?отл?хор.?удовл.?неуд.?___пропущено____?\n");("?груп?дисц ? ? ? ? ? лекций практик?\n");("??????????????????????????????????\;

gotoxy(1,7);

temp=first_i;

if (temp==NULL){ //uslovie pustogo spiska("?????????????????????????????????\;(" Список пуст!\n");

getch();;

}// первым выводится на экран;(j=1;j<=15;j++) // выводится на экран 15 элементов

{("? %-7s",temp->inf.group);("? %-11s",temp->inf.disc);("? %-5.0f",temp->inf.otl);("? %-5.0f",temp->inf.hor);("? %-6.0f ",temp->inf.udov);("? %-5.0f ",temp->inf.neud);("? %-6.0f ",temp->inf.lekc);("? %-6.0f ? ",temp->inf.prakt);("\n");(temp==NULL)break;=temp->nl;(temp==NULL){("?????????????????????????????????????\;("Нажмите что-нибудь..\n");();;

}

}("????????????????????????????????\;("Передвижение по списку стрелками _ и _\n");

printf("Для выхода нажмите ESC");

last_i=temp;=getch();//считывает нажатую клавишу(key){72: if(first_i->nr!=NULL) {first_i=first_i->nr;} break;80: if(last_i->nl!=NULL) {first_i=first_i->nl;} break;

}

}while(key!=27); //Условие выхода из цикла - нажатие клавиши ESC

}

//-------------------------------------------------------------------save(){filename1[20];*open; //=fopen("d:\\output.txt","w+");

printf("\nВведите путь и название файла:\n");

scanf("%s",filename1);=fopen(filename1,"w+");//открытие файла в режиме записи=right;(temp!=NULL){(open,"%s %s %f %f %f %f %f %f \n",temp->inf.group,temp->inf.disc,temp->inf.otl,temp->inf.hor,temp->inf.udov,temp->inf.neud,temp->inf.lekc,temp->inf.prakt);=temp->nl;(temp->nl==NULL);

}(open);

}

//-------------------------------------------------------------------korectir(query *){group[6];f=0;=right;

printf("\nВведите шифр группы:\n");

scanf("%s",&group);(temp!=NULL){(strcmp(group,temp->inf.group)==0){

printf("Корректировка Строки:\n");("Введите шифр группы:\n");

scanf("%s",&temp->inf.group);

printf("Введите шифр дисциплины:\n");

scanf("%s",&temp->inf.disc);

printf("Введите количество оценок отлично:\n");

scanf("%f",&temp->inf.otl);

printf("Введите количество оценок хорошо:\n");

scanf("%f",&temp->inf.hor);

printf("Введите количество оценок удовлетворительно:\n");

scanf("%f",&temp->inf.udov);

printf("Введите количество оценок неудовлетворительно:\n");

scanf("%f",&temp->inf.neud);

printf("Введите количество пропущенных лекций:\n");

scanf("%f",&temp->inf.lekc);

printf("Введите количество пропущенных практических занятий:\n");

scanf("%f",&temp->inf.prakt);=1;

}=temp->nl;

}(f==0)

{("Нет такой группы!\n");

getch();

}

}

//-------------------------------------------------------------------vihodnaya(query *)

{vihod group_v[5];=right;i=1;v=0;vsego=0;_v[i].kurs=10;(temp!=NULL){(group_v[i].kurs!=temp->inf.group[2])_v[i].kurs=temp->inf.group[2];++;=temp->nl;=i;}(1);=right;f1,f2,f3,f4;itog2,itog3,itog4,itog5;itog1;=0;=0;f2=0;f3=0;f4=0;h=0;int k=0;(i=1;i<=v;i++){(temp!=NULL){(group_v[i].kurs==temp->inf.group[2]){ vsego=vsego+(temp->inf.otl+temp->inf.hor+temp->inf.udov+temp->.neud);=f1+temp->inf.otl;f2=f2+temp->inf.hor;=f3+temp->inf.udov;f4=f4+temp->inf.neud;_v[i].lekc_prakt=temp->inf.lekc+temp->inf.prakt;=itog1+group_v[i].lekc_prakt;}=temp->nl;

}_v[i].otl=f1*100/vsego;_v[i].hor=f2*100/vsego;_v[i].udov=f3*100/vsego;_v[i].neud=f4*100/vsego;=right;

}();(" Выходная таблица №2\n");("???????????????????ТАБЛИЦА№2????????????????????????????\n");("????????????????????????????????????????????????????????\n");("? ? ? Количество оценок % ?\n");("? курс ? пропущено ????????????????????????????????????\n");("? ? занятий ? Отл. ? Хор. ? Удовл. ? Неуд. ?\n");("????????????????????????????????????????????????????????\n");(i=1;i<=(v-1);i++)

{printf("? %-7d ? %-13d ? %-6.1f ? %-6.1f ? %-6.1f ? %-6.1f ?\n",_v[i].kurs-'0',_v[i].lekc_prakt,group_v[i].otl,_v[i].hor,group_v[i].udov,group_v[i].neud);=itog2+group_v[i].otl;=itog3+group_v[i].hor;=itog4+group_v[i].udov;=itog5+group_v[i].neud;}("? Итого ?");(" %-13d ? %-6.1f ? %-6.1f ? %-6.1f ? %-6.1f ?\n",itog1,itog2,itog3,itog4,itog5);("????????????????????????????????????????????????????????\n");("Для продолжения нажмите что-нибудь!\n");

getch();

}


Аннотация В данном документе описывается программа, написанная в соответствии с постановкой задачи на курсовое проектирование по теме "Обработка таб

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2019 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ