Автор работы: Пользователь скрыл имя, 20 Декабря 2011 в 11:21, курсовая работа
Основной целью курсовой является решение выданных заданий и подробное описание решений.
Для реализации цели необходимо выполнить следующие задачи:
Показать умение работать с операторами циклов, строками, матрицами и, как частный случай, массивами. Результат – небольшие программы написанные на Java и Pascal
Создать файл соответствующей предметной области
Реализовать задачу II на Java с графическим интерфейсом и максимальным использованием всех компонентов пакета Swing
Введение 4
Глава 1. Алгоритмизация - работа с массивами на Pascal и Java 5
Массивы в Pascal 5
Решение задач на работу с массивами на алгоритмическом
языке Pascal 6
1.2 Массивы в Java 17
Решение задач на работу с массивами на алгоритмическом
языке Java 19
На Turbo Pascal 28
Глава 3. Разработка графического интерфейса на Java 60
Заключение 67
Литература 68
Приложение А 69
Приложение Б 70
Приложение В 71
Приложение Г 73
Приложение Д 74
Приложение Е 75
Приложение Ж 76
Приложение З 77
Приложение И 78
Приложение К 80
Приложение Л 81
Приложение М 82
Приложение Н 83
Приложение О 87
Приложение П 91
Пояснительная записка 104
type M= array[1..500] of Longint;
var f1: File of Real;
f2: File of Integer;
fLi: File of M;
Бестиповые файлы описываются с помощью служебного слова File:
var f: File;
Файловые переменные, которые описаны в программе, называют логическими файлами. Все основные процедуры и функции, обеспечивающие ввод - вывод данных, работают только с логическими файлами. Физический файл должен быть связан с логическим до выполнения процедур открытия файлов.
Turbo Pascal вводит ряд процедур и функций, применимых для любых типов файлов: Assign, Reset, Rewrite, Close, Rename, Erase, Eof, IOResult.
Процедура Assign ( var f; FileName: String ) связывает логический файл f с физическим файлом, полное имя которого задано в строке FileName.
Процедура Reset( var f ) открывает логический файл f для последующего чтения данных или, как говорят, открывает входной файл. После успешного выполнения процедуры Reset файл готов к чтению из него первого элемента.
Процедура Rewrite( var f ) открывает логический файл f для последующей записи данных (открывает выходной файл). После успешного выполнения этой процедуры файл готов к записи в него первого элемента.
Процедура Close( var f ) закрывает открытый до этого логический файл. Вызов процедуры Close необходим при завершении работы с файлом.
Если по какой-то причине процедура Close не будет выполнена, файл все же будет создан на внешнем устройстве, но содержимое последнего буфера в него не будет перенесено. Для входных файлов использование оператора закрытия файла необязательно.
Логическая функция EOF( var f ): Boolean возвращает значение TRUE, когда при чтении достигнут конец файла. Это означает, что уже прочитан последний элемент в файле или файл после открытия оказался пуст.
Процедура Rename( var f; NewName: String ) позволяет переименовать физический файл на диске, связанный с логическим файлом f. Переименование возможно после закрытия файла.
Процедура Erase( var f )
уничтожает физический файл на диске,
который был связан с файловой переменной f.
Файл к моменту вызова процедуры Erase
должен быть закрыт.
Задание
Разработать структуру записей (классов) для следующей предметной области Складское предприятие. Создать файл соответствующей предметной области и реализовать следующие запросы и обработку:
Решение
Рис. 30. Рисунок
кода программы
Рис. 31. Рисунок
кода программы
Рис. 32. Рисунок кода программы
Программа работает
с текстовым файлом «Sklad.txt».
Рис. 33. Исходный
текстовый файл, который считывается и
изменяется
Идея решения заключается в том, что файл рассматривается как объект текстового типа. Построчно считывается. Каждая считываемая строка разбивается на слова. Каждое слово заносится в определенный массив. Таким образом, вся информация заносится в массивы. Название товаров в отдельный массив, соответственно в отдельные массивы артикул , количество и цена.
Идея нахождения свойств товара по его названию довольно проста: с клавиатуры вводится название товара, которая запоминается в определенной переменной. Далее перебирается массив с названиями товаров, каждый элемент массива сравнивается с этой переменной. Как только найдется такое название товара, выводятся искомые свойства.
Поиск товаров с заданным артикулом выполняется так: с клавиатуры вводится артикул, который запоминается в определенной переменной. Далее перебирается массив с артикулами . При совпадении элемента массива с вводимым нами артикулем выводится вся информация о товаре.
Изменение свойств конкретного товара. Опять же с клавиатуры вводится название товара, свойства которого необходимо изменить. Перебирается массив с названиями товаров. При совпадении названия товара с искомой с клавиатуры вводятся новые свойства товара (артикул, количество на складе и цена), которые заносятся в соответственные массивы вместо старых свойств. Далее текстовый файл переписывается новой информацией.
Добавление новой записи. Смысл в том, что пользователем вводятся свойства нового товара через пробел. Эта информация сохраняется в переменной строкового типа. Далее файл открывается для записи, вся информация в нем стирается, поэтому в него необходимо снова записать информацию обо всех товарах. И в конец файла дописывается строка, которая была введена пользователем. Вот таким образом происходит добавление новой записи в файл.
Для
удобства использования программы
сделано меню, которое позволяет
выбрать нужное действие над файлом.
Меню показано на рисунке
Рис. 34
При выборе
первого пункта «Вывод
всей информации, содержащейся
в файле», выводится вся информация
о товарах (Рис. 35).
Рис. 35. Результат
выбора первого пункта меню
Строка «Хотите повторить ваш запрос?» просит ввести «y» для согласия и «n» для отказа. При вводе «y» снова появляется меню, при вводе «n» осуществляется выход из программы.
При выборе второго
пункта «Найти атрибуты
товара», следует ввести название товара,
свойства которого вы хотите увидеть.
Искомые свойства выводятся на экран
Рис. 36. Результат
выбора второго пункта меню
При выборе третьего пункта «Изменить атрибуты товара», также следует ввести название товара, свойства которого хотите изменить. Далее пользователю будет предложено ввести свои свойства. Затем снова выводится списоктоваров с уже измененными свойствами искомого товара (Рис. 37.).
Рис. 37. Результат
выбора третьего пункта меню
При выборе четвертого пункта «Найти товар с нужной вам ценой», пользователю необходимо ввести цену товара. Если товары с такой ценой имеются, информация о них будет выведена на экран. (Рис. 38.).
Рис. 38. Результат
выбора четвертого пункта меню
При выборе пятого пункта «Добавить информацию о новом товаре в файл», следует ввести через пробел: название товара, артикул, количество и цену. Информация добавится в текстовый файл. Для проверки информация считается с файла и выведется на экран. (Рис. 39, 40).
Рис. 39. Результат
выбора пятого пункта меню Рис. 40. Результат
выбора пятого пункта меню
Для того чтобы полностью удостоверится, что запись была действительно добавлена в файл «Sklad.txt», добавлен скриншот файла после добавления новой записи (Рис. 42.).
Рис. 41. Скриншот
текстового файла после добавления новой
записи
При
выборе шестого пункта «Выход»
программа завершает свою работу.
Код программы
Chast_2 посмотреть в приложении Н.
2.2.
На Java
Библиотека классов языка программирования Java содержит многочисленные средства, предназначенные для работы с файлами.
Рассмотрим
работу с файлами при помощи файловых
потоков.
Файловые потоки: Классы FileInputStream и FileOutputStream
Класс FileInputStream
используется для чтения данных из файла.
Конструктор такого класса в качестве
параметра принимает название файла, из
которого будет производиться считывание.
При указании строки имени файла нужно
учитывать, что она будет напрямую передана
операционной системе, поэтому формат
имени файла и пути к нему может различаться
на разных платформах. Если при вызове
этого конструктора передать строку, указывающую
на несуществующий файл или каталог, то
будет брошено java.io.
Для
записи байт в файл используется класс FileOutputStream. При создании объектов
этого класса, то есть при вызовах его
конструкторов, кроме имени файла, также
можно указать, будут ли данные дописываться
в конец файла, либо файл будет перезаписан.
Если указанный файл не существует, то
сразу после создания FileOutputStream он будет создан. При
вызовах методов write() передаваемые значения
будут записываться в этот файл. По окончании
работы необходимо вызвать метод close(), чтобы сообщить системе,
что работа по записи файла закончена.
Конструкторы: FileInputStream
Конструкторы: FileOutputStream
При
работе с FileInputStream метод availa
Класс StreamTokenizer
Экземпляр StreamTokenizer
Как и java.util.StringTokenizer, этот класс позволяет разбивать данные на лексемы (token), выделяемые из потока по определенным свойствам для выполнения простейшего лексического анализа.
В классе StreamTokenizer определены 3 переменные реализации: