Создание диалоговых программ с использованием структур и файлов в среде C++Builder

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

Создание диалоговых программ с использованием структур и файлов в среде C++Builder

Резюме

Тема курсовой работы «Создание диалоговых программ с использованием структур и файлов в среде C++Builder»

Ключевые слова: алгоритм, программа, структура данных, файл, обработка данных, среда программирования C++Builder.

Цель курсовой работы - обобщить знания по управляющим операторам языка C++; овладеть практическими навыками в организации ввода/вывода значений комбинированных типов данных; получить практические навыки программирования задач с использованием структур и файлов в среде C++Builder.

Объектом исследования выступают структурированные данные, которые можно представить в виде таблицы.

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

В работе были использованы методы сортировки и фильтрации данных.

Оглавление

Введение

. Теоретическая часть

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

.1.1 Название и назначение разрабатываемого приложения

.1.2 Спецификация входных и выходных данных

.1.3 Обоснование выбора средства программирования

.1.4 Требования к аппаратной части и ПО

.2 Основные аспекты обработки структур и файлов в среде C++Builder

.3 Алгоритм и сценарий работы программы

. Практическая часть

.1 Проектирование интерфейса пользователя

.2 Написание программных модулей

.3 Результаты тестирования программы

Заключение

Введение


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

Из этого определения следует, что:

Ø  информация объективна, так как это свойство материи - отражение;

Ø  информация проявляется в виде сигналов и лишь при взаимодействии объектов;

Ø  одна и та же информация различными получателями может быть интерпретирована по-разному в зависимости от "настройки" "приемника".

Последовательность действий, выполняемых с информацией, называют информационным процессом. Основными информационными процессами являются:

Ø  сбор (восприятие) информации;

Ø  подготовка (преобразование) информации;

Ø  передача информации;

Ø  обработка (преобразование) информации;

Ø  хранение информации;

Ø  отображение (воспроизведение) информации.

Так как материальным носителем информации является сигнал, то реально это будут этапы обращения и преобразования сигналов (рис.1).

На этапе восприятия информации осуществляется целенаправленное извлечение и анализ информации о каком-либо объекте (процессе), в результате чего формируется образ объекта, проводятся его опознание и оценка.

Рис. 1. Основные информационные процессы

программирование диалоговый приложение

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

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

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

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

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

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

В данной курсовой работе предусматривается выполнение следующих действий:

1)       постановка задачи в формализованном виде;

2)      построение алгоритма решения задачи;

)        реализация алгоритма на ПК путем создания программы в среде C++Builder;

)        тестирование и отладка программы;

)        анализ полученных данных и формулировка выводов;

)        создание и оформление резюме.

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

В соответствии с заданием на разработку создание программы производилась в среде C++ Builder 6. C++ Builder - программный продукт, инструмент быстрой разработки приложений (RAD), интегрированная среда программирования (IDE), система, используемая программистами для разработки программного обеспечения на языке программирования C++.++ Builder объединяет в себе комплекс объектных библиотек (STL, VCL, CLX, MFC и др.), компилятор, отладчик, редактор кода и многие другие компоненты. Цикл разработки аналогичен Delphi. Большинство компонентов, разработанных в Delphi, можно использовать и в C++ Builder без модификации, но обратное утверждение не верно.++ Builder содержит инструменты, которые делают разработку визуальной, упрощает программирование благодаря встроенному WYS/WYG - редактору интерфейса.

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

1) математическая или информационная формулировка задачи;

) выбор численного или иного метода решения поставленной задачи;

) построение алгоритма решения поставленной задачи;

) выбор языка программирования и запись построенного алгоритма по его правилам, т.е. написание текста программы;

) отладка программы - это процесс обнаружения, локализации и устранения возможных ошибок;

) выполнение программы, т.е. получение требуемого результата [2].

Формулировка задачи является темой данной курсовой работы и заключается в написании программы, которая позволяет создать анимацию неподвижного объекта в среде разработки C++ Builder 6.

Среда C++Builder представляет собой средство быстрой разработки приложений (Rapid Application Development - RAD).

Концепция RAD стала ответом на неуклюжие методы разработки программ 1970-х <#"871091.files/image002.gif">

Рисунок 1.1. - Алгоритм работы программы

2. Практическая часть

2.1 Проектирование интерфейса пользователя


При проектировании интерфейса были использованы следующие компоненты:

)        Для отображения различных надписей на форме используются в основном компоненты Label;

)        MainMenu, расположеный на странице Standard, это невизуальный компонент, т.е. место его размещения на форме в процессе проектирования не имеет никакого значения для пользователя - он все равно увидит не сам компонент, а только меню, сгенерированное им. Обычно на форму помещается один компонент MainMenu. В этом случае его имя автоматически заносится в свойство формы Menu. Но можно поместить на форму и несколько компонентов MainMenu с разными наборами разделов, соответствующими различным режимам работы приложения. В этом случае во время проектирования свойству Menu формы присваивается ссылка на один из этих компонентов. А в процессе выполнения в нужные моменты это свойство можно изменять, меняя соответственно состав главного меню приложения.

Основное свойство компонента - Items. Его заполнение производится с помощью Конструктора Меню, вызываемого двойным щелчком на компоненте MainMenu или нажатием кнопки с многоточием рядом со свойством Items в окне Инспектора Объектов.

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

Рисунок 2.1. - Скрин формы «Ведомость выработки изделий»

Для второй формы использовались следующие компоненты:

)        компонент Image - отображение картинки на форме.

)        Компонент Memo - многострочный текстовый редактор. Memo формат определяется текущим состоянием свойства Font компонента Memo.


2.2 Написание программных модулей


) Обработчик события - закрытие формы:

void __fastcall TForm1::N7Click(TObject *Sender)

Программный код каждого обработчика событий в полном размере приведен в приложении.

) Обработчик события - удаление текущей строки:

void __fastcall TForm1::N9Click(TObject *Sender).

3)      Обработчик события - Добавление строки в конец таблицы

void __fastcall TForm1::N8Click(TObject *Sender).

4)      Обработчик события - Создать (очистка таблиц):

void __fastcall TForm1::N12Click(TObject *Sender).

5)      Обработчик события - Открытие второй формы (справка):

void __fastcall TForm1::N4Click(TObject *Sender).

6)      Обработчик события - Запись таблицы в файл:

void __fastcall TForm1::N6Click(TObject *Sender).

7)      Обработчик события - Открытие файла и чтение его в таблицу:

void __fastcall TForm1::N5Click(TObject *Sender).

8)      Обработчик события - Вычислить для каждой общее время и сумму:

void __fastcall TForm1::N13Click(TObject *Sender).

9)      Обработчик события - Сортировка данных по возрастанию общего времени на изготовление изделий:

void __fastcall TForm1::N10Click(TObject *Sender).

10)    Обработчик события - Сортировка данных по № п/п (вернуться к исходной последовательности строк):

void __fastcall TForm1::N11Click(TObject *Sender).

11)    Обработчик события - Вычисление среднего времени выработки одного изделия по данным всей таблицы:

void __fastcall TForm1::Button1Click(TObject *Sender).

12) Обработчик события -Отображение данных, у которых сумма меньше указанной:

void __fastcall TForm1::Button2Click(TObject *Sender).

 

.3 Результаты тестирования программы


Для тестирования программы подготовили тестовые данные. Они вводятся в верхнюю таблицу и по команде меню Сохранить записываются в двоичный файл. Перед записью данных из таблицы в файл выполняется команда Вычислить, для вычисления средних баллов. Имя файла с тестовыми данными table.txt.

По команде меню Создать таблица с данными очищается.

По команде меню Открыть данные читаются из файла и отображаются в верхней таблице (см. рис. 5).

Были введены следующие данные:

Наименование изделия - Гайка;Гвоздь.

Норма времени на 1 изд., час - 10;15.

Расценка на 1изд., час. - 100;300.

Кол-во изделий - 2000;8000.

Результат указан на рис.2.1.

Рисунок 2.1. - Результат выполнения программы при вводе данных с клавиатуры и отображение в окне «Ведомость выработки изделий».

Следующий режим тестирования - «ввод данных из файла».

Результат указан на рис. 2.2.

Рисунок 2.1. - Результат выполнения программы при вводе данных из файла и отображение в окне «Ведомость выработки изделий»

Рисунок 2.3. Результат поиска по Сумме меньшей чем «10000000» и результат сортировка по общему времени

Заключение

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

Разработка программы производилась в среде C++ Builder 6. Интерфейс созданной программы удобен, прост, наглядно отображает её возможности.

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

Работоспособность программы позволяет сделать вывод о её пригодности для автоматизации подсчета суммы и общего времени.

Список использованных источников

1.          Основы алгоритмизации и программирования. Язык Си: учеб. пособие / М. П. Батура, В. Л. Бусько, А. Г. Корбит, Т. М. Кривоносова. - Минск: БГУИР, 2007. - 240 с. : ил.

2.      Керниган Б., Ритчи Д. Язык программирования Си = The C programming language. - 2-е изд. - М.: Вильямс, 2007.

3.          Программирование в C++ Builder 6: А.Я. Архангельский. -М.: изд. "Бином", 2003.

4.      Побельский В.В. Язык Си++: Учеб. Пособие. - М.; Финансы и статистика, 1995. - 560с.: ил.

5.      Самоучитель C++ Builder: Н.Б. Культин. -СПб.: БХВ-Петербург, 2004.

.        Вычислительная геометрия и компьютерная графика на C++: М. Ласло пер. с англ.В. Львова. -М.: изд. "Бином", 1997.

.        Романов Е.Л., Практикум по программированию на С++. СПБ, 2004 - 432с.

Приложение

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

Unit1.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <io.h>

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"*Form1;

//Ñòðóêòóðà çàïèñè:sved {namber; //Ïîðÿäêîâûé íîìåð.Naimenovanie[20]; //Íàèìåíîâàíèå Èçäåëèÿ.nachas; //Íîðìà íà 1 èçä., ÷àñ.rascenka; //Ðàñöåíêà íà 1 èçä., ÷àñ.colvo; //Êîëëè÷åñòâî èçäåëèé.obshee; //Îáùååå âðåìÿ.sum; //Ñóììà ðóá.

};

int size=sizeof(sved); //ðàçìåð â áàéòàõ îäíîé ñòðóêòóðû (çàïèñè).

//Ïåðåìåííàÿ - ñòðóêòóðû:sved sprav;

//Óêàçàòåëü íà ôàéë:*f;

//Èìÿ ôàéëà:File_Zap;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------__fastcall TForm1::FormCreate(TObject *Sender)

{

//Íà÷àëüíûå äåéñòâèÿ ïðè ñîñäàíèè ôîðìû:->Options = StringGrid1->Options << goEditing;

//Ôîðìèðîâàíèå çàãîëîâêîâ ñòîëáöîâ:->Cells[0][0]=" ¹ ï/ï";->Cells[0][1]="1";

StringGrid1->Cells[1][0]="Íàèìåíîâàíèå èçäåëèÿ";

StringGrid1->Cells[2][0]="Íîðìà âðåìåíè íà 1 èçä., ÷àñ";

StringGrid1->Cells[3][0]="Ðàñöåíêà íà 1 èçä.,ðóá.";id1->Cells[4][0]="Êîë-âî èçäåëèé";

StringGrid1->Cells[5][0]="Îáùåå âðåìÿ,÷àñ";

StringGrid1->Cells[6][0]="Ñóììà, ðóá.";->Cells[0][1]="1";

StringGrid2->Cells[1][0]="Íàèìåíîâàíèå èçäåëèÿ";

StringGrid2->Cells[2][0]="Íîðìà âðåìåíè íà 1 èçä., ÷àñ";

StringGrid2->Cells[3][0]="Ðàñöåíêà íà 1 èçä.,ðóá.";

StringGrid2->Cells[4][0]="Êîë-âî èçäåëèé";

StringGrid2->Cells[5][0]="Îáùåå âðåìÿ,÷àñ";

StringGrid2->Cells[6][0]="Ñóììà, ðóá.";

}

//---------------------------------------------------------------------------__fastcall TForm1::Save1Click(TObject *Sender)

{

//Çàïèñü òàáëèöû â ôàéë:i,n;str;

try { //Áëîê çàùèòû îïåðàòîðîâ.

//Ïåðåñ÷åò ñðåäíèõ áàëëîâ ïåðåä ñîõðàíåíèåì:

//Îòêðûòèå ôàéëà äëÿ çàïèñè:(SaveDialog1->Execute()){_Zap = SaveDialog1->FileName;=fopen(File_Zap.c_str(),"wb");=StringGrid1->RowCount-1;

//Çàïèñü ñòðîê òàáëèöû â ôàéë:(i=1;i<=n;i++) {.namber=StrToInt(StringGrid1->Cells[0][i]);=StringGrid1->Cells[1][i];(sprav.Naimenovanie,str.c_str());.nachas=StrToFloat(StringGrid1->Cells[2][i]);.rascenka=StrToFloat(StringGrid1->Cells[3][i]);.colvo=StrToInt(StringGrid1->Cells[4][i]);.obshee=StrToFloat(StringGrid1->Cells[5][i]);.sum=StrToFloat(StringGrid1->Cells[6][i]);(&sprav,size,1,f);

}

//Çàêðûòèå ôàéëà:(f);

ShowMessage("Äàííûå ñ òàáëèöû óñïåøíî çàïèñàíû â ôàéë!");

}

}( ... ){

//Îáðàáîòêà îøèáêè íåêîððåêòíîñòè äàííûõ:(f);

ShowMessage("Íåêîððåêòíûå äàííûå!");

}

}

//---------------------------------------------------------------------------__fastcall TForm1::Open1Click(TObject *Sender)

{(OpenDialog1->Execute()){_Zap = OpenDialog1->FileName;=fopen(File_Zap.c_str(),"rb");

//×òåíèå n (êîëè÷åñòâî çàïèñåé):D_f = fileno(f); // Íàõîäèì äåñêðèïòîð ôàéëàlen = filelength(D_f); // Íàõîäèì ðàçìåð ôàéëài,n;= len/size; //Êîëè÷åñòâî çàïèñåé â ôàéëå->RowCount=n+1;

//×òåíèå n çàïèñåé èç ôàéëà â òàáëèöó:(i=1;i<=n;i++) {(&sprav,size,1,f);->Cells[0][i]=IntToStr(sprav.namber);->Cells[1][i]=sprav.Naimenovanie;->Cells[2][i]=FloatToStr(sprav.nachas);->Cells[3][i]=FloatToStr(sprav.rascenka);->Cells[4][i]=IntToStr(sprav.colvo);->Cells[5][i]=FloatToStr(sprav.obshee);->Cells[6][i]=FloatToStr(sprav.sum);

}(f);

}

}

//---------------------------------------------------------------------------__fastcall TForm1::N2Click(TObject *Sender)

{j;->RowCount=2;(j=1;j<=StringGrid1->ColCount-1;j++)->Cells[j][1]="";

}

//---------------------------------------------------------------------------__fastcall TForm1::Button1Click(TObject *Sender)

{->RowCount++;->Cells[0][StringGrid1->RowCount-1]=IntToStr(StringGrid1->RowCount-1);

}

//---------------------------------------------------------------------------__fastcall TForm1::Button2Click(TObject *Sender)

{i,j;(StringGrid1->RowCount>2) {(i=StringGrid1->Row;i<StringGrid1->RowCount-1;i++) {->Cells[0][i]=IntToStr(i);(j=1;j<=StringGrid1->ColCount-1;j++) {->Cells[j][i]=StringGrid1->Cells[j][i+1];

}

}->RowCount--;

}

}

//-------------------------------------------------------------------------__fastcall TForm1::Edit1Change(TObject *Sender)

{->Clear();

}

//---------------------------------------------------------------------------__fastcall TForm1::N6Click(TObject *Sender)

{i;(i=1;i<StringGrid1->RowCount;i++) {.nachas=StrToFloat(StringGrid1->Cells[2][i]);.rascenka=StrToFloat(StringGrid1->Cells[3][i]);.colvo=StrToFloat(StringGrid1->Cells[4][i]);.obshee=sprav.nachas*sprav.colvo;.sum=sprav.rascenka*sprav.colvo;->Cells[5][i]=FloatToStrF(sprav.obshee,ffFixed,8,2);->Cells[6][i]=FloatToStrF(sprav.sum,ffFixed,8,2);

//---------------------------------------------------------------------------__fastcall TForm1::N4Click(TObject *Sender)

{sb,sb_next;i,j,n;p;st;=StringGrid1->RowCount-1;{=false;(i=1;i<n;i++) {=StrToFloat(StringGrid1->Cells[0][i]);_next=StrToFloat(StringGrid1->Cells[0][i+1]);(sb>sb_next) {(j=0;j<=StringGrid1->ColCount-1;j++) {=StringGrid1->Cells[j][i];->Cells[j][i]=StringGrid1->Cells[j][i+1];->Cells[j][i+1]=st;

}=true;

}

}

}(p);

}

//---------------------------------------------------------------------------__fastcall TForm1::N5Click(TObject *Sender)

{sb,sb_next;i,j,n;p;st;=StringGrid1->RowCount-1;{=false;(i=1;i<n;i++) {=StrToFloat(StringGrid1->Cells[5][i]);_next=StrToFloat(StringGrid1->Cells[5][i+1]);(sb>sb_next) {(j=0;j<=StringGrid1->ColCount-1;j++) {=StringGrid1->Cells[j][i];->Cells[j][i]=StringGrid1->Cells[j][i+1];->Cells[j][i+1]=st;

}=true;

}

}

}(p);

}

//---------------------------------------------------------------------------__fastcall TForm1::Exit1Click(TObject *Sender)

{->Close();

}

//---------------------------------------------------------------------------__fastcall TForm1::Button4Click(TObject *Sender)

{i,n, k;Summ;enteredsumm;=StringGrid1->RowCount;=0;=StrToFloat(Edit1->Text);(i=1;i<n;i++) {=StrToFloat(StringGrid1->Cells[6][i]);(Summ<enteredsumm){++;

//StringGrid2->Cells[0][k]=IntToStr(k);->Cells[1][k]=StringGrid1->Cells[1][i];->Cells[2][k]=StringGrid1->Cells[2][i];->Cells[3][k]=StringGrid1->Cells[3][i];->Cells[4][k]=StringGrid1->Cells[4][i];->Cells[6][k]=StringGrid1->Cells[6][i];->Cells[5][k]=StringGrid1->Cells[5][i];

}

}

}

//---------------------------------------------------------------------------.h

//---------------------------------------------------------------------------

#ifndef Unit1H

#define Unit1H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Grids.hpp>

#include <Dialogs.hpp>

#include <ActnCtrls.hpp>

#include <ActnMan.hpp>

#include <ToolWin.hpp>

#include <Menus.hpp>

//---------------------------------------------------------------------------TForm1 : public TForm

{

__published: // IDE-managed Components*StringGrid1;*Button1;*Button2;*Button4;*OpenDialog1;*SaveDialog1;*MainMenu1;*N1;*Open1;*Save1;*Exit1;*N2;*N3;*N4;*N5;*Edit1;*N6;*StringGrid2;__fastcall FormCreate(TObject *Sender);__fastcall Save1Click(TObject *Sender);__fastcall Open1Click(TObject *Sender);__fastcall N2Click(TObject *Sender);__fastcall Button1Click(TObject *Sender);__fastcall Button2Click(TObject *Sender);__fastcall Edit1Change(TObject *Sender);__fastcall N6Click(TObject *Sender);__fastcall N4Click(TObject *Sender);__fastcall N5Click(TObject *Sender);__fastcall Exit1Click(TObject *Sender);__fastcall Button4Click(TObject *Sender);: // User declarations:  // User declarations

__fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

-----------------------------------------

Похожие работы на - Создание диалоговых программ с использованием структур и файлов в среде C++Builder

 

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