Требуется разрабоать редактор расписаний пассажирских поездов с графическим интерфейсом, использующим средства библиотеки Qt.
Особенности программы:
При написании программы значительное внимание было уделено минимизации требований к ресурсам системы. Разработанный формат файла расписаний позволяет отводить на хранение записи всего лишь 9 байт, это досигается хранением информации о станциях в отдельном теством файле, который можно редактировать с помощью любого текстового редактора, т.е. в самих файлах расписаний не храняться строки, описывающие названия станций, т.к. это нерационально – пришлось бы резервировать для каждого элемента переменную максимально возможного размера.
Для переноса названий станций из файлов расписаний в отдельный файл в файлах расписаний используется стандартный семизначный код системы “Экспресс-2”, который позволяет однозначно идентифицировать станцию.
Кроме того, программа поддерживает интернационализацию (i18n), значительная часть поддержки которой реализована средствами Qt, но также можно добиться перевода (или транслитерации) на другой язык названий станций редактированием файла списка станций. При этом не требуется редактирование самих файлов расписаний. В базовом варианте программы доступен русскоязычный и англоязычный интерфейс.
Редактор разрабатывался в OS RedHat Linux 9.0, но теоретически он должен быть переносимым в другие операционные системы
Программа разрабатывалась при помощи следующих средств: Qt Designer 3.1, gmake1.04a, GNU Make 3.79.1, перевод Qt Linguist 3.1.1, lupdate 3.1.1, lrelease 3.1.1.
В программе используются следующие стандартные возможности языков С/С++:
•структуры;
•задание длин полей структур в битах;
•указатели;
•динамическая память;
•классы и объекты;
•циклы;
•операторы циклов, ветвления и выбора.
Кроме того из-за необходимости минимизации потребления ресурсов системы я был вынужден использовать одно из нестандартных GNU-расширений компилятора gcc – задание атрибутов переменных.
1 Qt Reference Documentation
2 gcc info page
3 gcc man page
При разработке программы серьёзную помеху составляло отсутствие встроенной в язык C поддержки динамического задания размеров массивов, поэтому для минимизации использования памяти массив состоит не из самих записей, а из указателей на записи.
Также весомым ограничением языка C/C++ является отсутствие поддержки многобайтных символов (Unicode).
Конечно, эти ограничения были преодолены некоторыми библиотеками и компиляторами, но переносимыми их назвать нельзя.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.