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

Разработка приложения "Ведомость начисления заработной платы" в среде программирования C++Builder. Алгоритм и сценарий работы программы. Проектирование интерфейса пользователя. Написание программных модулей и результаты тестирования данной программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 31.01.2016
Размер файла 597,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Резюме

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

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

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

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

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

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

Оглавление

Введение

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

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

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

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

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

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

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

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

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

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

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

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

Заключение

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В соответствии с заданием на разработку создание программы производилась в среде C++ Builder 6. C++ Builder -- программный продукт, инструмент быстрой разработки приложений (RAD), интегрированная среда программирования (IDE), система, используемая программистами для разработки программного обеспечения на языке программирования C++.

C++ Builder объединяет в себе комплекс объектных библиотек (STL, VCL, CLX, MFC и др.), компилятор, отладчик, редактор кода и многие другие компоненты. Цикл разработки аналогичен Delphi. Большинство компонентов, разработанных в Delphi, можно использовать и в C++ Builder без модификации, но обратное утверждение не верно.

C++ Builder содержит инструменты, которые делают разработку визуальной, упрощает программирование благодаря встроенному WYS/WYG -- редактору интерфейса.

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

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

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

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

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

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

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

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

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

Концепция RAD стала ответом на неуклюжие методы разработки программ 1970-х и начала 1980-х годов, такие как «модель водопада». Эти методы предусматривали настолько медленный процесс создания программы, что зачастую даже требования к программе успевали измениться до окончания разработки. Основателем RAD считается сотрудник IBM Джеймс Мартин, который в 1980-х годах сформулировал основные принципы RAD, основываясь на идеях Барри Бойма и Скотта Шульца. А в 1991 году Мартин опубликовал известную книгу, в которой детально изложил концепцию RAD и возможности её применения. В настоящее время RAD становится общепринятой схемой для создания средств разработки программных продуктов.

Технологию RAD целесообразно применять, когда четко определены некоторые приоритетные направления разработки проекта. Необходимо выполнение проекта в сжатые сроки. Быстрое выполнение проекта позволяет создать систему, отвечающую требованиям сегодняшнего дня. Если система проектируется долго, то весьма высока вероятность, что за это время существенно изменятся фундаментальные положения, регламентирующие деятельность организации, то есть, система морально устареет ещё до завершения её проектирования.

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

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

Интерфейс пользователя (GUI) есть главный фактор. Нет смысла заставлять пользователя рисовать картинки. RAD-технология дает возможность продемонстрировать интерфейс в прототипе, причем достаточно скоро после начала проекта.

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

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

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

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

Преимущества

Технология быстрой разработки приложений (RAD) позволяет обеспечить:

1) быстроту продвижения программного продукта на рынок;

2) интерфейс, устраивающий пользователя;

3) легкую адаптируемость проекта к изменяющимся требованиям;

4) простоту развития функциональности системы.

C++ Builder объединяет в себе комплекс объектных библиотек (STL, VCL, CLX, MFC и др.), компилятор, отладчик, редактор кода и многие другие компоненты.

VCL - Библиотека визуальных компонентов - объектно-ориентированная библиотека для разработки программного обеспечения, разработанная компанией Borland для поддержки принципов визуального программирования. VCL входит в комплект поставки Delphi, C++ Builder и Embarcadero RAD Studio и является, по сути, частью среды разработки, хотя разработка приложений в этих средах возможна и без использования VCL. VCL предоставляет огромное количество готовых к использованию компонентов для работы в самых разных областях программирования, таких, например, как интерфейс пользователя (экранные формы и элементы управления -- т. н. «контролы», «контроли»), работа с базами данных, взаимодействие с операционной системой, программирование сетевых приложений и прочее.

C++ - компилируемый статически типизированный язык программирования общего назначения.

Поддерживает такие парадигмы программирования как процедурное программирование, объектно-ориентированное программирование, обобщенное программирование, обеспечивает модульность, раздельную компиляцию, обработку исключений, абстракцию данных, объявление типов (классов) объектов, виртуальные функции. Стандартная библиотека включает, в том числе, общеупотребительные контейнеры и алгоритмы. C++ сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником - языком C, наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.

Синтаксис C++ унаследован от языка C. Одним из принципов разработки было сохранение совместимости с C. Тем не менее, C++ не является в строгом смысле надмножеством C; множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико, но не включает все возможные программы на C.

Как и структуры, классы могут задавать поля -- то есть переменные, принадлежащие либо непосредственно самому классу (статические), либо экземплярам класса (обычные). Статические поля существуют в одном экземпляре на всю программу (или, в более сложном варианте, -- в одном экземпляре на процесс или на поток/нить). Обычные поля создаются по одной копии для каждого конкретного объекта -- экземпляра класса. Например, общее количество строк текста, созданных в программе за время её работы, будет являться статическим полем класса «строка текста». А конкретный массив символов строки будет являться обычным полем экземпляра класса «строка текста», так же как переменная «фамилия», имеющая тип «строка текста», будет являться обычным полем каждого конкретного экземпляра класса «человек».

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

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

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

Пользователь может взаимодействовать с объектом только через этот интерфейс. Реализуется с помощью ключевого слова: public.

Пользователь не может использовать закрытые данные и методы. Реализуется с помощью ключевых слов: private, protected, internal.

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

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

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

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

Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций».

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

- внешняя общность проявляется как одинаковый набор методов с одинаковыми именами и сигнатурами (именем методов и типами аргументов и их количеством);

- внутренняя общность -- одинаковая функциональность методов. Её можно описать интуитивно или выразить в виде строгих законов, правил, которым должны подчиняться методы. Возможность приписывать разную функциональность одному методу (функции, операции) называется перегрузкой метода (перегрузкой функций, перегрузкой операций) [3].

Процесс обнаружения, локализации и устранения возможных ошибок в программе и получение требуемого результата выполняется в среде C++ Builder 6. Среда C++Builder представляет собой средство быстрой разработки приложений (Rapid Application Development - RAD). В основе RAD-систем лежит технология визуального проектирования и событийного программирования. Указанная технология состоит в том, что инструментальные средства берут на себя большую часть громоздких операций, связанных с созданием приложений для Windows, оставляя программисту работу по конструированию диалоговых окон и созданию функций обработки событий. Использование RAD-систем существенно увеличивает производительность программиста и позволяет наглядно продемонстрировать выполнение программы.

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

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

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

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

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

Входной информацией для данной программы являются:

1) 1.1.2 Спецификация входных и выходных данных

2) Входной информацией для данной программы являются:

3) Наименование изделия;

4) Норма времени на 1 изд., час;

5) Расценка на 1 изд., руб;

6) Кол-во изделий;

7) Выходной информацией для данной программы является

8) Расчет общего времени изготовления;

9) Расчет суммы необходимой на изготовление;

10) Отображение деталей у которых сумма меньше указанной;

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

12) Визуализация приложения в удобной форме

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

Выбрана RAD - система Borland C++ Builder 6.0, потому что она является удобным и мощным средством для разработки как простых консольных приложений, так и обширных комплексных приложений с графическим интерфейсом.

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

Персональный компьютер фирмы IBM серии PC (или совместимый с этими моделями), работающий под управлением операционной системы (ОС) Windows 98/XP/Vista, оперативная память объемом не менее 32 Мбайт, процессор с тактовой частотой не менее 133 MHz, клавиатура, мышь.

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

В C++ одной из конструкций, реализующих объединение разнородных данных, является структура.

Структура является объединением простых переменных. Эти переменные могут иметь различные типы: int, float и т. д. (именно разнородностью типов переменных структуры отличаются от массивов, в которых все переменные должны иметь одинаковый тип). Переменные, входящие в состав структуры, называются полями структуры.

Для тех, кто изучает язык C++, структуры являются одной из составляющих главных концепций языка - объектов и классов. На самом деле синтаксис структуры фактически идентичен синтаксису класса. На практике отличие структуры от класса заключается в следующем: структуры в языке С++, как правило, используют в качестве объединения данных, а классы -- в качестве объединения данных и функций. Таким образом, изучая структуры в языке С++, мы тем самым закладываем основы для понимания классов и объектов.

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

Алгоритм работы программы приведен на рисунке 1.1

Сценарий работы программы:

1) Ввод данных о наименовании, норме времени, расценке и количестве производимых изделий с клавиатуры либо из файла;

2) Вычисление суммы и общего времени на изготовления деталей;

3) Сортировка по возрастанию общего времени на изготовление изделий и №п/п;

4) Сохранение информации в файл;

5) Отображение изделий, у которых сумма меньше указанной.

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

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

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

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

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

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

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

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

3) Компоненты OpenDialog - диалог «Открыть файл» и SaveDialog - диалог «Сохранить файл как...» используются чаще всего, в большинстве приложений. Все свойства этих компонентов одинаковы, только их смысл несколько различен для открытия и сохранения файлов. Основное свойство, в котором возвращается в виде строки выбранный пользователем файл -- FileName. Значение этого свойства можно задать и перед обращением к диалогу. Тогда оно появится в диалоге как значение по умолчанию в окне Имя файла.

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

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

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

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

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

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

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

void __fastcall TForm1::N7Click(TObject *Sender)

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

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

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).

2.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.

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

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

Приложение

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

Unit1.cpp

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

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <io.h>

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//Структура записи:

struct sved {

int namber; //Порядковый номер.

char Naimenovanie[20]; //Наименование Изделия.

float nachas; //Норма на 1 изд., час.

float rascenka; //Расценка на 1 изд., час.

int colvo; //Колличество изделий.

float obshee; //Общеее время.

float sum; //Сумма руб.

};

int size=sizeof(sved); //размер в байтах одной структуры (записи).

//Переменная - структуры:

struct sved sprav;

//Указатель на файл:

FILE *f;

//Имя файла:

AnsiString File_Zap;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

void __fastcall TForm1::FormCreate(TObject *Sender)

{

//Начальные действия при сосдании формы:

StringGrid1->Options = StringGrid1->Options << goEditing;

//Формирование заголовков столбцов:

StringGrid1->Cells[0][0]=" № п/п";

StringGrid1->Cells[0][1]="1";

StringGrid1->Cells[1][0]="Наименование изделия";

StringGrid1->Cells[2][0]="Норма времени на 1 изд., час";

StringGrid1->Cells[3][0]="Расценка на 1 изд.,руб.";

StringGrid1->Cells[4][0]="Кол-во изделий";

StringGrid1->Cells[5][0]="Общее время,час";

StringGrid1->Cells[6][0]="Сумма, руб.";

StringGrid2->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]="Сумма, руб.";

}

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

void __fastcall TForm1::Save1Click(TObject *Sender)

{

//Запись таблицы в файл:

int i,n;

AnsiString str;

try { //Блок защиты операторов.

//Пересчет средних баллов перед сохранением:

//Открытие файла для записи:

if (SaveDialog1->Execute()){

File_Zap = SaveDialog1->FileName;

f=fopen(File_Zap.c_str(),"wb");

n=StringGrid1->RowCount-1;

//Запись строк таблицы в файл:

for(i=1;i<=n;i++) {

sprav.namber=StrToInt(StringGrid1->Cells[0][i]);

str=StringGrid1->Cells[1][i];

strcpy(sprav.Naimenovanie,str.c_str());

sprav.nachas=StrToFloat(StringGrid1->Cells[2][i]);

sprav.rascenka=StrToFloat(StringGrid1->Cells[3][i]);

sprav.colvo=StrToInt(StringGrid1->Cells[4][i]);

sprav.obshee=StrToFloat(StringGrid1->Cells[5][i]);

sprav.sum=StrToFloat(StringGrid1->Cells[6][i]);

fwrite(&sprav,size,1,f);

}

//Закрытие файла:

fclose(f);

ShowMessage("Данные с таблицы успешно записаны в файл!");

}

}

catch ( ... ){

//Обработка ошибки некорректности данных:

fclose(f);

ShowMessage("Некорректные данные!");

}

}

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

void __fastcall TForm1::Open1Click(TObject *Sender)

{

if (OpenDialog1->Execute()){

File_Zap = OpenDialog1->FileName;

f=fopen(File_Zap.c_str(),"rb");

//Чтение n (количество записей):

int D_f = fileno(f); // Находим дескриптор файла

int len = filelength(D_f); // Находим размер файла

int i,n;

n = len/size; //Количество записей в файле

StringGrid1->RowCount=n+1;

//Чтение n записей из файла в таблицу:

for(i=1;i<=n;i++) {

fread(&sprav,size,1,f);

StringGrid1->Cells[0][i]=IntToStr(sprav.namber);

StringGrid1->Cells[1][i]=sprav.Naimenovanie;

StringGrid1->Cells[2][i]=FloatToStr(sprav.nachas);

StringGrid1->Cells[3][i]=FloatToStr(sprav.rascenka);

StringGrid1->Cells[4][i]=IntToStr(sprav.colvo);

StringGrid1->Cells[5][i]=FloatToStr(sprav.obshee);

StringGrid1->Cells[6][i]=FloatToStr(sprav.sum);

}

fclose(f);

}

}

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

void __fastcall TForm1::N2Click(TObject *Sender)

{

int j;

StringGrid1->RowCount=2;

for(j=1;j<=StringGrid1->ColCount-1;j++)

StringGrid1->Cells[j][1]="";

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{

StringGrid1->RowCount++;

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

}

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

void __fastcall TForm1::Button2Click(TObject *Sender)

{

int i,j;

if(StringGrid1->RowCount>2) {

for(i=StringGrid1->Row;i<StringGrid1->RowCount-1;i++) {

StringGrid1->Cells[0][i]=IntToStr(i);

for(j=1;j<=StringGrid1->ColCount-1;j++) {

StringGrid1->Cells[j][i]=StringGrid1->Cells[j][i+1];

}

}

StringGrid1->RowCount--;

}

}

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

void __fastcall TForm1::Edit1Change(TObject *Sender)

{

Edit1->Clear();

}

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

void __fastcall TForm1::N6Click(TObject *Sender)

{

int i;

for(i=1;i<StringGrid1->RowCount;i++) {

sprav.nachas=StrToFloat(StringGrid1->Cells[2][i]);

sprav.rascenka=StrToFloat(StringGrid1->Cells[3][i]);

sprav.colvo=StrToFloat(StringGrid1->Cells[4][i]);

sprav.obshee=sprav.nachas*sprav.colvo;

sprav.sum=sprav.rascenka*sprav.colvo;

StringGrid1->Cells[5][i]=FloatToStrF(sprav.obshee,ffFixed,8,2);

StringGrid1->Cells[6][i]=FloatToStrF(sprav.sum,ffFixed,8,2);

}}

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

void __fastcall TForm1::N4Click(TObject *Sender)

{

float sb,sb_next;

int i,j,n;

bool p;

AnsiString st;

n=StringGrid1->RowCount-1;

do {

p=false;

for(i=1;i<n;i++) {

sb=StrToFloat(StringGrid1->Cells[0][i]);

sb_next=StrToFloat(StringGrid1->Cells[0][i+1]);

if(sb>sb_next) {

for(j=0;j<=StringGrid1->ColCount-1;j++) {

st=StringGrid1->Cells[j][i];

StringGrid1->Cells[j][i]=StringGrid1->Cells[j][i+1];

StringGrid1->Cells[j][i+1]=st;

}

p=true;

}

}

}

while(p);

}

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

void __fastcall TForm1::N5Click(TObject *Sender)

{

float sb,sb_next;

int i,j,n;

bool p;

AnsiString st;

n=StringGrid1->RowCount-1;

do {

p=false;

for(i=1;i<n;i++) {

sb=StrToFloat(StringGrid1->Cells[5][i]);

sb_next=StrToFloat(StringGrid1->Cells[5][i+1]);

if(sb>sb_next) {

for(j=0;j<=StringGrid1->ColCount-1;j++) {

st=StringGrid1->Cells[j][i];

StringGrid1->Cells[j][i]=StringGrid1->Cells[j][i+1];

StringGrid1->Cells[j][i+1]=st;

}

p=true;

}

}

}

while(p);

}

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

void __fastcall TForm1::Exit1Click(TObject *Sender)

{

Form1->Close();

}

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

void __fastcall TForm1::Button4Click(TObject *Sender)

{

int i,n, k;

float Summ;

float enteredsumm;

n=StringGrid1->RowCount;

k=0;

enteredsumm=StrToFloat(Edit1->Text);

for(i=1;i<n;i++) {

Summ=StrToFloat(StringGrid1->Cells[6][i]);

if (Summ<enteredsumm){

k++;

//StringGrid2->Cells[0][k]=IntToStr(k);

StringGrid2->Cells[1][k]=StringGrid1->Cells[1][i];

StringGrid2->Cells[2][k]=StringGrid1->Cells[2][i];

StringGrid2->Cells[3][k]=StringGrid1->Cells[3][i];

StringGrid2->Cells[4][k]=StringGrid1->Cells[4][i];

StringGrid2->Cells[6][k]=StringGrid1->Cells[6][i];

StringGrid2->Cells[5][k]=StringGrid1->Cells[5][i];

}

}

}

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

Unit1.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>

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

class TForm1 : public TForm

{

__published: // IDE-managed Components

TStringGrid *StringGrid1;

TButton *Button1;

TButton *Button2;

TButton *Button4;

TOpenDialog *OpenDialog1;

TSaveDialog *SaveDialog1;

TMainMenu *MainMenu1;

TMenuItem *N1;

TMenuItem *Open1;

TMenuItem *Save1;

TMenuItem *Exit1;

TMenuItem *N2;

TMenuItem *N3;

TMenuItem *N4;

TMenuItem *N5;

TEdit *Edit1;

TMenuItem *N6;

TStringGrid *StringGrid2;

void __fastcall FormCreate(TObject *Sender);

void __fastcall Save1Click(TObject *Sender);

void __fastcall Open1Click(TObject *Sender);

void __fastcall N2Click(TObject *Sender);

void __fastcall Button1Click(TObject *Sender);

void __fastcall Button2Click(TObject *Sender);

void __fastcall Edit1Change(TObject *Sender);

void __fastcall N6Click(TObject *Sender);

void __fastcall N4Click(TObject *Sender);

void __fastcall N5Click(TObject *Sender);

void __fastcall Exit1Click(TObject *Sender);

void __fastcall Button4Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm1(TComponent* Owner);

};

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

extern PACKAGE TForm1 *Form1;

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

#endif

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

Размещено на Allbest.ru


Подобные документы

  • Разработка прикладной программы для операций создания и уничтожения объектов в системе визуального объектно-ориентированного программирования C++Builder. Алгоритм работы программы, набор функций и операторов, компонент и модулей, кнопки событий.

    дипломная работа [672,5 K], добавлен 16.08.2012

  • Разработка программы для сбора и анализа информации об автобусах на парковке. Назначение и область применения. Алгоритм в словесной форме. Состав технических и программных средств. Разработка приложения в среде визуального программирования C++Builder 6.

    курсовая работа [1,5 M], добавлен 06.09.2014

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

    курсовая работа [191,5 K], добавлен 07.01.2015

  • Создание консольных приложений с использованием графического интерфейса пользователя. Содержание палитры компонентов программы С++ Builder. Использование возможностей объектно-ориентированного программирования, особенности редактора кода и форм в С++.

    лекция [27,0 K], добавлен 22.12.2010

  • Визуальное проектирование и событийное программирование. Повышение производительности программиста при использовании RAD-систем. Составление алгоритмов, разработка приложения для решения прикладных задач на примере консольных приложений C++ Builder 6.

    курсовая работа [258,7 K], добавлен 30.10.2013

  • Разработка программы для рисования различных правильных многоугольников с помощью объектно-ориентированного языка программирования. Использование для разработки среды C++ Builder 6 и библиотеки VCL. Разработка интерфейса приложения и алгоритма его работы.

    курсовая работа [616,4 K], добавлен 18.10.2010

  • Проектирование программы в среде Delphi для тестирования знаний студентов по программированию, с выводом оценки по окончанию тестирования. Разработка экранных форм и алгоритма программы. Описание программных модулей. Алгоритм процедуры BitBtn1Click.

    курсовая работа [365,0 K], добавлен 18.05.2013

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

    дипломная работа [4,6 M], добавлен 28.10.2013

  • Разработка программы для работы с базой данных "Библиотека" в среде Borland C++Builder 6 на языке программирования C++ с использованием визуальных средств. Структура информации, подключение к ней и ее отображение. Описание пользовательского интерфейса.

    курсовая работа [1,5 M], добавлен 19.05.2014

  • Краткая история UML. Объектный подход к разработке программных средств. Визуальная среда программирования С++ Builder. Сведения о диаграмме вариантов использования. Диаграмма классов программы "Вычисления нерабочих дней". Алгоритм работы программы.

    курсовая работа [545,0 K], добавлен 31.10.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.