Программа обработки ведомости о времени выполнения задания на ЭВМ

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    36,25 Кб
  • Опубликовано:
    2012-12-27
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Программа обработки ведомости о времени выполнения задания на ЭВМ

Содержание

Содержание

Введение

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

. Технические характеристики

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

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

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

.4 Внутренние представление данных

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

. Ожидаемые технико-экономические показатели

3.1 Условия применения

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

Приложение А

Приложение Б

Введение

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

 

1. НАЗНАЧЕНИЕ И ОБЛАСТЬ ПРИМЕНЕНИЯ


В данном документе описывается программа, написанная в соответствии с постановкой задачи на курсовое проектирование по теме "Программа обработки ведомости о времени выполнения задания на ЭВМ " по дисциплине "Основы программирования и алгоритмические языки". Для проверки работы программы разработан тестовый пример. Результат примера показывает, что программа работает корректно и правильно. Программа написана на языке Си++ производства фирмы Borland версии 3.1 под операционную систему MS-DOS.

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

2. ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ

 

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


Требуется написать программу обработки экономической информации, осуществляющую ввод исходной информации из файла, необходимую её организацию, обработку в соответствии с вариантом задания №6 методических указаний. Выводимую информацию оформить в виде таблицы со всеми необходимыми полями записей и результатов расчетов.

Даны сведения о времени выполнения заданий (5 символов) на ЭВМ (время из-меряется в секундах с точностью до тысячных долей). Структура записи: шифр задания (8 символов), код отдела (3 символа), Ф.И.О. программиста (15 символов), общее время прохождения задания, время центрального процессора -5 знаков (t_ задания>t_цп). Получить процент процессорного времени по каждому заданию, а также суммы по видам времени по всем заданиям и средний процент времени центрального процессора по всем заданиям. Интерфейсная часть программы должна быть в виде меню:

1        Просмотр таблицы исходных данных

2        Редактирование таблицы

         Просмотр результатов

         Добавление записей в таблицу

         Удаление записей из таблицы

         Обработка информации (вычисление)

         Сортировка данных

         Просмотр

Выход

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

Программа также сохраняет выходную таблицу в файле на жестком диске. Также возможно редактирование введенных данных. Программа не имеет модулей и прилагаемых файлов и состоит из одного рабочего файла. Файлы с исходными и сохраненными выходными данными имеют расширение txt.

 

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


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

шифр задания 8 символов

код отдела 3 символа

Ф.И.О. 15 символов

общее время выполнения 5 символов

время CPU 5 символов

Входной файл должен заканчиваться символом «конец файла» (EOF)

Количество записей в файле ограничено только доступной оперативной памятью, все записи объединены в таблицу, нарисованную символами псевдографики. Также в программе существует возможность создание таблицы и сохранения её.

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

Выходные данные представляют собой таблицу (пример таблица 2.3.1)

Таблица2.2.1

Шрифт задания.

 Код

Ф.И.О. программиста.

Общее время задания

Время СPU

% CPU врем.

Сумма общего времен

Сумма времен CPU

Cред. % CPU

00000001

001

Валягин А. А.

34.454

21.231





00000002

009

Гордиенко И.И.

32.334

11.445





00000010

030

Митев А.А.

66.343

23.454





00000029

023

Карюшин К.К.

23.554






2.4     Внутреннее Представление Данных

Для написания данной программы был выбран язык Си++ и компилятор Borland С++ версии 3.1 для ДОС.

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

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

struct table

{

char f[16]; //фамилия

char io[5]; //инициалы имени и отчества

char shifr[9]; //шифр задания

int code,N; //код и номер строки

float alltime; //общее время

float cputime; //время CPU

float prcpu; //процент времени CPU

float srcpu; //средний %-т времени CPU

float allltime;//сумма общего времени

float allcpu; //сумма времени CPU

};

struct element

{

struct table data;

struct element *left;//указатель па предыдущую //строку

struct element *right;//указатель па следущую

}*p,*temp,*begin,*end; //строку

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

Программа состоит из 18 функций. Каждая функция вызывается из главной программы с помощью меню, каждый пункт которого вызывает отдельную функцию.

Программа состоит из следующих функций:

Функция org(int q) организовывает работу всей программы с помощью

меню.

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

Функция view выводит на экран данные в виде таблицы, при этом можно использовать прокрутку текста с помощью клавиш ,стрелок вверх и вниз.

Функция find_int(int a) ищет в списке поля, содержащие числовые данные.

Функция find_ср(int a) ищет в списке поля, содержащие литерные данные(слова).

Функция look(int a) обеспечивает вывод результатов поиска на экран.

Функции work1(int a) и work2(int a) выполняют необходимые вычисления.

Функция dob() добавляет строку в конец списка.

Функция remove() удаляет из списка строку, по выбору оператора .

Функции RW_int(int a) и RW_ch(int a) редактируют таблицу данных (изменение полей таблицы).

Функция sortir(int a) выполняет сортировки по любому полю таблицы.

Функция writeHDD() записывает отредактированную таблицу на диск.

Функции orgsortir(), orgfind() и orgRW() обеспечивают управление функциями sortir(int a), find_int(int_a) и find_ch(int a), RW_int(int a) и RW_ch(int a), соответственно, через меню.

Структурные схемы алгоритма программы и подпрограмм приведены на рисунках 5.2.1 - 5.2.7:

А) Функция чтения данных из файла (рис. 2.5.1)

Рисунок 2.5.1 - Функция readfile

Б) Функция организации работы программы (рис. 2.5.2 рис. 2.5.3)





























Рисунок 2.5.2 - Функция org(int q)

Рисунок 2.5.3 - Функция org(int q)

В) Функция просмотра данных (рис. 2.5.4)

Рисунок 2.5.4-Функция view(int a)

Г) Функция удаления строки из списка (рис. 2.5.5 )

Рисунок 2.5.5-Функция remove( )

Д) Функция добавления строки в список (рис. 2.5.6 )

Рисунок 2.5.6-Функция dob( )

E) Функция редактирования строки в списке (рис. 2.5.7)

программа строка таблица информация

Рисунок 2.5.7-Функция RW(int a )

) Функция вычислений процента времени центрального процессора от общего времени выполнения задания на ЭВМ (рис. 2.5.8)

Рисунок 2.5.7-Функция work(int a )

3. ТЕХНИКО-ЭКОНОМИЧЕСКИЕ ПОКАЗАТЕЛИ

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

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

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

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

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

Рекомендации по улучшению программы.

Программа работает правильно и корректно. Недостатком является, по сегодняшним временам интерфейс. По улучшению интерфейса программы рекомендуется перевести исходный текст на язык программирования высокого уровня, на базе С++ под ОС Windows. Конкретнее говоря, программу рекомендовано перевести на язык программирования C++ Builder Практически не изменяя текста программы можно добиться более удобного интерфейса и скорости работы пользователя с программой.

3.1 Условия применения

Для нормальной работы программы необходима следующая аппаратная база:

Совместимый IBM-PC компьютер на базе процессора Intel 80286, 640Кб оперативной памяти, накопитель жестких или гибких магнитных дисков объемом не менее 10 Мб, CGA VGA, SVGA видеоадаптеры. Программа предназначена для работы в среде операционной системы MS-DOS . Также работоспособность программы сохранится при использовании ее под линии Windows 9х. Все вышеперечисленные требования являются оптимальными. Программный продукт разрабатывался и тестировался на компьютере следующей модификации:

CPU - INTEL Celeron 667Мгц- 128Мб- 10Гб- Voodoo3 2000 16Мб- Windows 98.

3.2   Входные и выходные данные

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

Формат входных данных имеет следующий вид:

Шифр задания char[8]

Код отдела                             int

Ф.И.О. программиста                     char[15]

Общее время выполнения              float

Время центрального процессора float

Пример:

-as 100 Глушко Е.Н. 45.29 34.56

Выходные данные тоже могут быть представлены в двух видах:

) показ текущей таблицы данных

) таблица данных находится на накопителе информации в виде фай-ла. Формат данных не меняется.

Таблица имеет 10 разделов последние 4 являются расчетным.

Пример:

Шрифт задания.

Код отд.

Ф.И.О. программиста.

Общее время задания.

Время CPU


%CPU врем.

Сумма по 4 полю

Сумма по 5 полю

Сред. %


Заключение

Данный программный продукт может быть использован в любом экономическом отделе, не обязательно института, для помощи в вычислительных вопросах учреждения. С ее помощью, зная общее время выполнения задания и время центрального процессора, можно вычислить процент времени центрального процессора ,средний процент этого времени, а также сумму процессорного и сумму общего времени. Такая программа значительно облегчит данные вычисления. Программный продукт был написан на языке высокого уровня Borland C++.

ПРИЛОЖЕНИЕ А

Текст программы.

#include <iostream.h>

#include<string.h>

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#define MAXLINES 100*in,*out;table

{f[16]; //фамилияio[5]; //инициалы имени и отчестваshifr[9]; //шифр заданияcode,N; //код и номер строкиalltime; //общее времяcputime; //время CPU

float prcpu; //процент времени CPUsrcpu; //средний %-т времени CPUallltime;//сумма общего времениallcpu; //сумма времени CPU

};element

{table data;element *left;element *right;

}*p,*t,*temp,*begin,*end;

int i=1;rezall=0,rezcpu=0;//Cумма общего времени и времени CPU

//*************************ЧТЕНИЕ ДАННЫХ ИЗ ФАЙЛА

void readfile()

{key=0;put[70];();

gotoxy(16,7);cout<<"Введите путь к файлу исходнах данных"<<"\n";

gotoxy(16,9);scanf("%s",put);( (in=fopen( put, "r"))==NULL)//открытие файла

{(25,11);cout<<"Файл не найден...";

gotoxy(29,20);cout<<"Esc:выход"<<"\n";(28,22);cout<<"Enter:заново"<<"\n";=getch();(key==27) exit(0);readfile();

}=(struct element *) malloc( sizeof(struct element));//выделение памяти(in, "%s%i%s%s%f%f", &p->data.shifr, &p->data.code, &p->data.f,

&p->data.io, &p->data.alltime,&p->data.cputime);//считываем строку

begin=end=p;//указатели начала и конца списка=p;>left=NULL;//указатель на предыдущую строку>right=NULL;//указатель на следущую строку>data.N=i;//номер строки>data.prcpu=0; //обнуление полей>data.allltime=0;//которые не>data.allcpu=0; //считываются

temp->data.srcpu=0; //из файла(!feof(in))

{=(struct element *) malloc( sizeof(struct element) );//выделение памяти(in, "%s%i%s%s%f%f", &p->data.shifr,&p->data.code,&p->data.f,

&p->data.io, &p->data.alltime, &p->data.cputime);//считываем строку

temp->right=p;//следующему temp присваиваем считанный элемент>left=temp;//предедующему p присваиваем temp>right=NULL;//указатель на следущую строку=p;//конец списка=p;>data.N=++i;//увеличиваем номер строки

temp->data.prcpu=0;>data.allltime=0;>data.allcpu=0;>data.srcpu=0;

}(in);//закраваем файл

}

//*************************ПРОСМОТР ИСХОДНЫХ ДАННЫХ

void view(int a)

{j=0;//кол-во видимых строкkey=0;//ключ к скролингу

temp=t=begin;(1,1);cout<<"г===T====1===T=2=T=======3=======T==4===T==5===TT==6==T========T========T=====¬\n";

gotoxy(1,2);cout<<"¦ N ¦ Шифр ¦Код¦ ФИО ¦Общее ¦Время ¦¦ % ¦Cумма по¦Сумма по¦Средн¦\n";(1,3);cout<<"¦ ¦ задания¦отд¦ ¦время ¦ CPU ¦¦ CPU ¦6му полю¦5му полю¦%по6у¦\n";

gotoxy(1,4);cout<<"¦===+========+===+===============+======+======++=====+========+========+=====¦\n";(1,a+1);cout<<"L===¦========¦===¦===============¦======¦======¦¦=====¦========¦========¦=====-";

{(j=5;j<=a;j++)//выводим первые 10 строк

{(1,j);("¦%2i.¦%8s¦%3i¦%10s %4s¦%6.3f¦%6.3f¦¦%5.2f¦%8.2f¦%8.2f¦%5.2f¦\n",temp->data.N,temp->data.shifr,temp->data.code,>data.f,temp->data.io,temp->data.alltime,temp->data.cputime,temp->data.prcpu,temp->data.allltime,temp->data.allcpu,temp->data.srcpu);=temp->right;

}=getch();(key)

{72:if(t->left!=NULL) t=t->left;break;//передвигаем на одну строку вниз80:if(temp!=NULL) t=t->right;break;//передвигаем на одну строку вверх

// case 'a':break;

}=t;//начало просмотра очередных 10 строк

}while((temp!=NULL)&&(key!=13));

}

//*************************ПРОЦЕНТ ВРЕМЕНИ CPU ОТ ОБЩЕГО ВРЕМЕНИ ВЫПОЛНЕНИЯpusk1;//cчетчик кол-ва выполнений вычислений

void work1(int a)

{temprez=0;//сумма весго % времени CPU=begin;(temp!=0)

{>data.prcpu=((temp->data.cputime)*100)/(temp->data.alltime);//% времени CPU=temprez+temp->data.prcpu;//сумма % времени cpu=temp->right;

}=end;(temp!=0)

{>data.srcpu=temprez/i;//средний % времени CPU=temp->left;

}=1;(a!=1)

{<<"\n"<<"Вычисление завершено...";();

}

}

//*************************СУММА ПО ВИДАМ ВРЕМЕНИpusk2;//cчетчик кол-ва выполнений вычислений

void work2(int a)

{sum=0,sum2=0;=begin;(temp!=0)

{=sum+temp->data.alltime;=sum2+temp->data.cputime;=temp->right;

}=begin;(temp!=0)

{>data.allltime=sum;>data.allcpu=sum2;=temp->right;

}

pusk2=2;

if(a==1)<<"\n"<<"Новые данные занесены... ";cout<<"\n"<<"Вычисление завершено...";

getch();

}sortir_int(int a)

{element *min, *buf;=begin;dat;node;(temp!=NULL)

{=temp->data;=temp;=temp->right;(buf!=NULL)

{(a)

{2:if(buf->data.code>dat.code) node=1;node=0;break;4:if(buf->data.alltime>dat.alltime) node=1;node=0;break;5:if(buf->data.cputime>dat.cputime) node=1;node=0;break;6:if(buf->data.prcpu>dat.prcpu) node=1;node=0;break;7:if(buf->data.N>dat.N) node=1;node=0;break;

}(node==0)

{=buf->data;=buf;

}=buf->right;

}>data=temp->data;>data=dat;=temp->right;

}

}

//*************************ПРОСМОТР ПОИСКАlook(int a)

{(a==2) goto suda;<<"г===T====1===T=2=T=======3=======T==4===T==5===TT==6==T========T========T=====¬\n";

cout<<"¦ N ¦ Шифр ¦Код¦ ФИО ¦Общее ¦Время ¦¦ % ¦Cумма по¦Сумма по¦Средн¦\n";<<"¦ ¦ задания¦отд¦ ¦время ¦ CPU ¦¦ CPU ¦6му полю¦5му полю¦%по6у¦\n";

cout<<"¦===+========+===+===============+======+======++=====+========+========+=====¦\n";: printf("¦%2i.¦%8s¦%3i¦%10s %4s¦%6.3f¦%6.3f¦¦%5.2f¦%8.2f¦%8.2f¦%5.2f¦\n",temp->data.N,>data.shifr,temp->data.code,temp->data.f,temp->data.io,temp->data.alltime,>data.cputime,temp->data.prcpu,temp->data.allltime,temp->data.allcpu,temp->data.srcpu);

}

//*************************ПОИСК ПО СТРОКОВЫМ ПОЛЯМfind_char(int pole)

{el[16];//искомый элементrep;//repeatj=0;//проверка поиска=begin;

cout<<"Введите искомый элемент: ";

cin>>el;

while(temp!=0)

{(pole)

{3:if(strcmp(el,temp->data.f)==0) {j++;look(j);}break;1:if(strcmp(el,temp->data.shifr)==0) {j++;look(j);}break;0:if(strcmp(el,temp->data.io)==0) {j++;look(j);}break;

}=temp->right;

}(j==0) cout<<"\n"<<"Введенное поле отсутствует"<<"\n";cout<<"L===¦=====¦===¦=======¦======¦======¦¦=====¦=====¦=====¦==-";<<"\n"<<"Новый поиск (Y-да,N-нет) ";>>rep;(rep=='y')

{clrscr();_char(pole);//рекурсия

}

}

//*************************ПОИСК ПО ЧИСЛОВЫМ ПОЛЯМfind_int(int pole)

{rep;//repeatel=0,j=0;el2=0;_t x;=begin;(pole!=2)

{<<"Введите искомый элемент: ";

cin>>el2;

}

else

{<<"Введите искомый элемент: ";

cin>>el;

}(temp!=0)

{(pole)

{2:if(el==temp->data.code) {j++;look(j);}break;4:if(el2==temp->data.alltime) {j++;look(j);}break;5:if(el2==temp->data.cputime) {j++;look(j);}break;6:x=div(temp->data.prcpu,100); if(el2==x.rem) {j++;look(j);}break;

}=temp->right;

}(j==0) cout<<"\n"<<"Введенное поле отсутствует"<<"\n";cout<<"L===¦=====¦===¦=======¦======¦======¦¦=====¦====¦=====¦===-";<<"\n"<<"Новый поиск (Y-да,N-нет) ";>>rep;(rep=='y')

{clrscr();_int(pole);

}

//*************************ДОБАВЛЕНИЕ СТРОКИdob()

{_int(7);=end;=(struct element *) malloc( sizeof(struct element) );//выделение памяти

cout<<"Введете элементы через enter"<<"\n";

cout<<"г====1===T=2=T=======3=======T==4===T==5===¬\n";

cout<<"¦ Шифр ¦Код¦ ФИО ¦Общее ¦Время ¦\n";<<"¦ задания¦отд¦ ¦время ¦ CPU ¦\n";

cout<<"¦========+===+==========T====+======+======¦\n";(1,7);cout<<"¦ ¦ ¦ ¦ ¦ ¦"<<"\n";(1,8);cout<<"L========¦===¦======¦====¦======¦===-"<<"\n";(2,7);scanf("%s", &p->data.shifr);(11,7);scanf("%i", &p->data.code);(15,7);scanf("%s", &p->data.f);(26,7);scanf("%s", &p->data.io);(31,7);scanf("%f", &p->data.alltime);(38,7);scanf("%f", &p->data.cputime);>right=p;>left=temp;>right=NULL;=end=p;>data.N=++i;>data.prcpu=0;>data.allltime=0;>data.allcpu=0;->data.srcpu=0;(pusk1+pusk2==3) //проверка на выполнение вычислений

{(1);//вызов расчетных функций

work2(1);

}if(pusk1==1) work1(1);if(pusk2==2) work2(1);

view(20);//просмотр

}q=0;

//*************************УДАЛЕНИЕ СТРОКИ

void remove()

{j=0;c=0;_int(7);(15);(1,17);=begin;

cout<<"Введите номер удаляемой строки: ";

cin>>j;(temp!=0)

{(temp->data.N==j);//прерывание while=temp->right;

}<<"г===T====1===T=2=T===3====T==4===T==5===TT==6==T======T======T=====¬\n";

cout<<"¦ N ¦ Шифр ¦Код¦ ФИО ¦Общее ¦Время ¦¦ % ¦Cумма по¦Сумма по¦Средн¦\n";<<"¦ ¦ задания¦отд¦ ¦время ¦ CPU ¦¦ CPU ¦6му полю¦5му полю¦%по6у¦\n";

cout<<"¦===+========+===+===============+======+======++=====+========+========+=====¦\n";("¦%2i.¦%8s¦%3i¦%10s %4s¦%6.3f¦%6.3f¦¦%5.2f¦%8.2f¦%8.2f¦%5.2f¦\n",temp->data.N,>data.shifr,temp->data.code,temp->data.f,temp->data.io,temp->data.alltime,>data.cputime,temp->data.prcpu,temp->data.allltime,temp->data.allcpu,temp->data.srcpu);

cout<<"L===¦========¦===¦===============¦======¦======¦¦=====¦========¦========¦=====-";<<"\n"<<"Удалить данную строку?(да:y,нет:n)";

cin>>c;(c=='y')

{>left->right=temp->right;>right->left=temp->left;(temp);=temp->right;(temp!=0)

{

-temp->data.N;=temp->right;

}();gotoxy(1,23);cout<<"\n"<<"Удаление завершено...";

if(pusk1+pusk2==3)//проверка на выполнение вычислений

{(1);//вызов расчетных функций

work2(1);

}if(pusk1==1) work1(1);if(pusk2==2) work2(1);

}(15);//просмотр=7;

}ell=0,ell2=0,jj=0;ell3=0,ell4=0;ch=0,ell5[11];

//*************************РЕДАКТИРОВАНИЕchange(int a)

{();<<"Строка до замены:"<<"\n";

cout<<"г===T====1===T=2=T=======3=======T==4===T==5===TT==6==T========T========T=====¬\n";

cout<<"¦ N ¦ Шифр ¦Код¦ ФИО ¦Общее ¦Время ¦¦ % ¦Cумма по¦Сумма по¦Средн¦\n";<<"¦ ¦ задания¦отд¦ ¦время ¦ CPU ¦¦ CPU ¦6му полю¦5му полю¦%по6у¦\n";

cout<<"¦===+========+===+===============+======+======++=====+========+========+=====¦\n";("¦%2i.¦%8s¦%3i¦%10s %4s¦%6.3f¦%6.3f¦¦%5.2f¦%8.2f¦%8.2f¦%5.2f¦\n",temp->data.N,>data.shifr,temp->data.code,temp->data.f,temp->data.io,temp->data.alltime,>data.cputime,temp->data.prcpu,temp->data.allltime,temp->data.allcpu,temp->data.srcpu);<<"L===¦========¦===¦===============¦======¦======¦¦=====¦========¦========¦=====-";(a)//замена поля

{0:cout<<"\n"<<"Заменить "<<ell5<<" на ";>>temp->data.io;;1:cout<<"\n"<<"Заменить "<<ell5<<" на ";>>temp->data.shifr;;2:cout<<"\n"<<"Заменить "<<ell<<" на ";>>ell2;>data.code=ell2;break;3:cout<<"\n"<<"Заменить "<<ell5<<" на ";>>temp->data.f;;4:cout<<"\n"<<"Заменить "<<ell3<<" на ";>>ell4;>data.alltime=ell4;break;5:cout<<"\n"<<"Заменить "<<ell3<<" на ";>>ell4;>data.cputime=ell4;break;

}++;<<"Строка после изменений:"<<"\n";

cout<<"г===T====1===T=2=T=======3=======T==4===T==5===TT==6==T========T========T=====¬\n";

cout<<"¦ N ¦ Шифр ¦Код¦ ФИО ¦Общее ¦Время ¦¦ % ¦Cумма по¦Сумма по¦Средн¦\n";<<"¦ ¦ задания¦отд¦ ¦время ¦ CPU ¦¦ CPU ¦6му полю¦5му полю¦%по6у¦\n";

cout<<"¦===+========+===+===============+======+======++=====+========+========+=====¦\n";("¦%2i.¦%8s¦%3i¦%10s %4s¦%6.3f¦%6.3f¦¦%5.2f¦%8.2f¦%8.2f¦%5.2f¦\n",temp->data.N,>data.shifr,temp->data.code,temp->data.f,temp->data.io,temp->data.alltime,>data.cputime,temp->data.prcpu,temp->data.allltime,temp->data.allcpu,temp->data.srcpu);<<"L===¦========¦===¦===============¦======¦======¦¦=====¦========¦========¦=====-\n";jj;

}

//редактирование по string данным

void RW_ch(int a)

{

clrscr();

view(15);

temp=begin;<<"\n"<<"Введите заменяемый элемент(не более 10 символов) ";

scanf("%s",&ell5);(temp!=0)

{

switch(a)//выбор,редактируемого поля

{

case 0:if(strcmp(ell5,temp->data.io)==0) change(a);break;1:if(strcmp(ell5,temp->data.shifr)==0) change(a);break;3:if(strcmp(ell5,temp->data.f)==0) change(a);break;

}(jj!=0) break;//проверка:найден ли заменяемый елемент

else temp=temp->right;

}(jj==0)

{<<"\n"<<"введенный елемент отсутствует"<<"\n";<<"Продолжить редоктирование?(да:y,нет:n)";

cin>>ch;(ch=='y') RW_ch(a);

}<<"Изменения приняты...";

jj=0;

getch();

clrscr();(20);

}

//редактирование по числовым данным

void RW_int(int a)

{();(15);//просмотр=begin;

cout<<"\n"<<"Введите заменяемый элемент: ";

if(a!=2) cin>>ell3;cin>>ell;(temp!=0)

{2:if(ell==temp->data.code) change(a);break;4:if(ell3==temp->data.alltime) change(a);break;5:if(ell3==temp->data.cputime) change(a);break;

}(jj!=0) break;//проверка:найден ли заменяемый елемент

temp=temp->right;

}(jj==0)

{<<"\n"<<"введенный елемент отсутствует"<<"\n";<<"Продолжить редоктирование?(да:y,нет:n)";

cin>>ch;(ch=='y')

{_int(a);

}

}

{ cout<<"\n"<<"Сохранить изменения?(да:y,нет:n)";>>ch;(ch=='n')(a)//отмена изменений

{2:temp->data.code=ell;break;4:temp->data.alltime=ell3;break;5:temp->data.cputime=ell3;break;

}if(ch=='y') cout<<"\n"<<"Изменения приняты...";

}=0;();(20);

}sortir_ch(int a)

{element *min, *buf;=begin;dat;node;(temp!=NULL)

{=temp->data;=temp;=temp->right;(buf!=NULL)

{(a)

{0:if(strcmp(buf->data.io,dat.io)>0) node=1;node=0;break;1:if(strcmp(buf->data.shifr,dat.shifr)>0) node=1;node=0;break;3:if(strcmp(buf->data.f,dat.f)>0) node=1;node=0;break;

}(node==0)

{=buf->data;=buf;

}=buf->right;

}>data=temp->data;>data=dat;=temp->right;

}

}org(int q);writeHDD()//ЗАПИСЬ В ФАЙЛ

{j=1;();=begin;=fopen("a:\выход.txt","w");//открытие файла для записи

fprintf(out,"г===T====1===T=2=T=======3=======T==4===T==5===TT==6==T========T========T=====¬\n");

fprintf(out,"¦ N ¦ Шифр ¦Код¦ ФИО ¦Общее ¦Время ¦¦ % ¦Cумма по¦Сумма по¦Средн¦\n");(out,"¦ ¦ задания¦отд¦ ¦время ¦ CPU ¦¦ CPU ¦6му полю¦5му полю¦%по6у¦\n");

fprintf(out,"¦===+========+===+===============+======+======++=====+========+========+=====¦\n");(temp!=0)

{(out,"¦%2i.¦%8s¦%3i¦%10s %4s¦%6.3f¦%6.3f¦¦%5.2f¦%8.2f¦%8.2f¦%5.2f¦\n",j,>data.shifr,temp->data.code,temp->data.f,temp->data.io,temp->data.alltime,>data.cputime,temp->data.prcpu,temp->data.allltime,temp->data.allcpu,temp->data.srcpu);=temp->right;++;

}(out,"L===¦========¦===¦===============¦======¦======¦¦=====¦========¦========¦=====-");

cout<<"\n"<<"...выполнена";

fclose(out);//закратие файла

getch();

}

//-----------------------------=== PROGRAM ===--------------------------------char string[100];

const string menu[10] = {"1:Просмотр исходных данных ","2:Сортировка",

"3:Процент времени CPU от общего времени выполнения",

"3:Cумма общего времени и времени CPU","5:Поиск","6:Редактирование","7:Добавление",

"8:Удаление","9:Запись","10:Выход"};string menufind[8]={"1:Поиск по шифру","2:Поиск по коду","3:Поиск по фамилии",

"4:Поиск по инициалам имени и отчества","5:Поиск по общему времени",

"6:Поиск по времени CPU","7:Поиск по проценту времени CPU","назад"};string menusortir[9]={"1:По номеру","2:По шифру","3:По коду","4:По фамилии",

"0:По инициалам имени и отчества","4:По общему времени","5:По времени CPU",

"5:По процентам времени CPU","назад"};string menuRW[7]={"1:По шифру","2:По коду","3:По фамилии",

"4:По инициалам имени и отчества","5:По общему времени","6:По времени CPU","назад"};chet=0;//счётчик кол-ва вызовов main()

void orgfind();orgwriteHDD();orgRW();orgsortir();org(int q)

{key;w=0;(chet==0)

{();//чтение данных=1;

}w=q;(2);//bukva(0);<<" ";

{(1);//fon();(25,1);(0);("%s%s", menu[0], "\n\t\t\t");("%s%s", menu[1], "\n\t\t\t");("%s%s", menu[2], "\n\t\t\t");("%s%s", menu[3], "\n\t\t\t");("%s%s", menu[4], "\n\t\t\t");("%s%s", menu[5], "\n\t\t\t");("%s%s", menu[6], "\n\t\t\t");("%s%s", menu[7], "\n\t\t\t");("%s%s", menu[8], "\n\t\t\t");("%s%s", menu[9], "\n\t\t\t\t");(25,w+1);(0);//vadelenie(menu[w]);=getch();(key)

{72:w--; break;80:w++; break;13:clrscr();(w)

{0: view(20); break;//вызов просмотра1:orgsortir();break;//сортировка2:work1(0);break;//вычисления3:work2(0);break;4:orgfind();break;//поиск

case 6:cout<<"Добавление в конец таблицы:"<<"\n";dob();break;

case 7:remove();break; //удаление5:orgRW();break;8:writeHDD();break;9:exit(0); break;

}

}(w>9) w=0;(w<0) w=9;

}while (key!=27);

}main()

{(0);

}orgfind()

{w2=0,key=0;(2);//поиск(0);<<" ";

{(1);//fon();(25,1);(0);("%s%s", menufind[0], "\n\t\t\t");("%s%s", menufind[1], "\n\t\t\t");("%s%s", menufind[2], "\n\t\t\t");("%s%s", menufind[3], "\n\t\t\t");("%s%s", menufind[4], "\n\t\t\t");("%s%s", menufind[5], "\n\t\t\t");("%s%s", menufind[6], "\n\t\t\t");("%s%s", menufind[7], "\n\t\t\t\t");(25,w2+1);(0);//выделение(menufind[w2]);=getch();(key)

{72:w2--; break;80:w2++; break;13:clrscr(); (w2)

{3:cout<<"Выполняется поиск по инициалам имени и отчества..."<<"\n"; find_char(0);break;0:cout<<"Выполняется поиск по шифру..."<<"\n";find_char(1);break;1:cout<<"Выполняется поиск по коду..."<<"\n";find_int(2);break;2:cout<<"Выполняется поиск по фамилии..."<<"\n";find_char(3);break;4:cout<<"Выполняется поиск по общему времени..."<<"\n";find_int(4);break;5:cout<<"Выполняется поиск по времени CPU..."<<"\n";find_int(5);break;6:cout<<"Выполняется поиск по % времени CPU..."<<"\n";find_int(6);break;7: org(4);break;//возвращение в главное меню

}

}(w2>7) w2=0;(w2<0) w2=7;

}while (key!=27);

}orgsortir()

{w4=0,key=0;(2);//bukva(0);<<" ";

{(1);//fon();(25,1);(0);("%s%s", menusortir[0], "\n\t\t\t");("%s%s", menusortir[1], "\n\t\t\t");("%s%s", menusortir[2], "\n\t\t\t");("%s%s", menusortir[3], "\n\t\t\t");("%s%s", menusortir[4], "\n\t\t\t");("%s%s", menusortir[5], "\n\t\t\t");("%s%s", menusortir[6], "\n\t\t\t");("%s%s", menusortir[7], "\n\t\t\t");("%s%s", menusortir[8], "\n\t\t\t\t");(25,w4+1);(0);//выделение(menusortir[w4]);=getch();(key)

{72:w4--; break;80:w4++; break;13:clrscr();(w4)//вызов сортировки

}

}(w4>8) w4=0;(w4<0) w4=8;

}while (key!=27);

}orgRW()

{w5=0,key=0;(2);//редактирование(0);<<" ";

{(1);//fon();(25,1);(0);("%s%s", menuRW[0], "\n\t\t\t");("%s%s", menuRW[1], "\n\t\t\t");("%s%s", menuRW[2], "\n\t\t\t");("%s%s", menuRW[3], "\n\t\t\t");("%s%s", menuRW[4], "\n\t\t\t");("%s%s", menuRW[5], "\n\t\t\t");("%s%s", menuRW[6], "\n\t\t\t\t");(25,w5+1);(0);//выделение(menuRW[w5]);=getch();(key)

{72:w5--; break;80:w5++; break;13:clrscr();(w5)//вызов редактирования

{0:cout<<"Редактирование по шифру...";RW_ch(1);break;

case 1:cout<<"Редактирование по коду..."<<"\n";RW_int(2);break;2:cout<<"Редактирование по фамилии...";RW_ch(3);break;3:cout<<"Редактирование по инициалам имени и оотчества...";RW_ch(0);break;4:cout<<"Редактирование по общему времени..."<<"\n";RW_int(4);break;5:cout<<"Редактирование по времени CPU..."<<"\n";RW_int(5);break;6: org(5);break;//возвращение в главное меню

}

}(w5>6) w5=0;(w5<0) w5=6;

}while (key!=27);

}

ПРИЛОЖЕНИЕ Б

1        НАЗНАЧЕНИЕ ПРОГРАММЫ

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

2        УСЛОВИЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ

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

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

Размер входного файла зависит от размера текста в нем, для 30 записей составляет 4,17 Кбайта.

3        ВЫПОЛНЕНИЕ ПРОГРАММЫ

После запуска программы на экране по центру возникнет строка

“Введите путь к файлу данных”. Здесь необходимо указать файл, содержащий исходные данные. Длина пути не должна превышать 70 символов. После ввода правильного пути к файлу появится меню программы.

Управление программой состоит в выборе того или иного пункт меню. Ниже рассматриваются все пункты последовательно (рис 3.1).

Рисунок 3.1-Изображение меню программы.

1:Просмотр данных- показывает данные файла в виде таблицы .

:Сортировка- упорядочивает строки таблицы по какому-либо полю.

При выборе этого пункта появляется меню сортировки (рис3.2).

Необходимо выбрать нужный пункт для соответствующей сортировки.

Рисунок 3.2- Изображение меню сортировки.

:Процент времени CPU от общего времени выполнения- вычисление процента времени CPU от общего времени выполнения

:Сумма общего времени и времени CPU- Вычисление суммы общего времени и суммы времени CPU.

:Поиск-поиск поля таблицы. При выборе этого пункта появляется меню поиска аналогичное меню сортировки.

:Редактирование- изменение поля таблицы.

:Добавление- Добавление строки в конец списка.

:Удаление- Удаление строки, по выбору, из списка.

:Запись-Запись таблицы данных.

:Выход- обеспечивает выход из программы.

СООБЩЕНИЯ ОПЕРАТОРУ

Если при не был найден входной файл (при загрузке программы) то по центру экрана выводится сообщение "Файл не найден!". Для указания нового

пути следует нажать ENTER, а для выхода из программы ESC.

Рис. 4.5. Процедура EditList

Похожие работы на - Программа обработки ведомости о времени выполнения задания на ЭВМ

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!