Пример: Транспортная логистика
Я ищу:
На главную  |  Добавить в избранное  

Программированиеи компьютеры /

Проектирование и реализация интерфейса пользователя (меню на Си)

←предыдущая  следующая→
1 2 3 4 



Скачать реферат


Министерство общего и профессионального образования РФ

Новосибирский Государственный Технический Университет

кафедра программных систем и баз данных

КУРСОВОЙ ПРОЕКТ

на тему: «Проектирование и реализация интерфейса пользователя»

Вариант 18

Факультет: ПМИ

Группа: ПМ-92

Студент: Мульцын К.А.

Преподаватель: Долозов Н.Л.

г. Новосибирск, 2001

План

Роль интерфейса пользователя при построении прикладного ПО. 4

Краткая характеристика программы. 6

Результаты и их анализ. 6

Структура системы меню. 7

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

Список литературы 20

Роль интерфейса пользователя при построении прикладного ПО.

Сегодня трудно не заметить, какими темпами компьютерная техника входит в нашу жизнь. Входит она и в лице персональных компьютеров, которых с каждым днем становится все больше и больше, и в лице бытовой техники, которая уже сплошь «набита» электроникой, взять хотя бы микроволновые печи, мобильные телефоны, электронные записные книжки и т.д. Обычному человеку очень трудно приспособиться к массе новой техники, и очень часто ему приходится выбирать между соблазном использовать достижения научно-технического прогресса и необходимостью «перелопачивать» тонны сопроводительной литературы и руководств пользователя. Фирмы, занимающиеся производством бытовой компьютерной техники, должны показать пользователю, что ему стоит покупать данный продукт, и немаловажную роль играет в этом построение удобного и интуитивно-понятного интерфейса. Естественно, пользователю не нужна микроволновая печь с цифровой клавиатурой, на которой необходимо набрать массу команд, прежде чем печь начнет работать. Но его вполне устроит дисплей с таймером и кнопкой пуска. Трудно не догадаться, что нужно установить время и нажать на кнопку. Опять же, еще одна крайность – что если бы перед ним была бы панелька и ему пришлось бы отсоединить проводок от одного места и присоединить к другому… Какой выбор сделал бы пользователь? (Кстати, почему многие предпочитают импортную технику? В том числе и потому, что она удобна и проста).

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

Но мы остановимся пока на чисто-графическом интерфейсе. Для сложного программного обеспечения часто оказывается невозможным представить все ее возможности на экране с помощью кнопок, списков, флажков и т.д. Тут на помощь приходит меню – структура, использующая пространство экрана динамически. Основной идеей меню является последовательная конкретизация желания пользователя. Пусть, например, пользователь хочет вставить в свой документ иллюстрацию и не знает, как это сделать. Однако он знает, что меню предоставит ему доступ к любой функции программы. Если он начнет проглядывать все опции подряд (а их может оказаться несколько сотен), он может потратить довольно много времени. Но он пойдет по другому пути. Строчка меню довольно небольшая, всего 6-10 пунктов. Просматривая их названия по очереди, он вряд ли остановится на пункте «Вид» или «Файл», зато его точно заинтересует меню «Вставка». Открыв его, он аналогичным образом проглядывает новый список. И так же не обратит внимания на «Примечание» или, например, «Закладка», но выберет «Рисунок». Нетрудно видеть, что, в конце концов, он своей цели добьется довольно быстро.

Задача проектировщика ПО состоит в том, чтобы создать это меню наиболее очевидным образом, удачно построить иерархию в соответствии с принципом пошаговой конкретизации. Задача дизайнера – оформить меню так, чтобы нужный пункт сразу бросался в глаза (например, иконками, выделением и т.д.). Задача программиста – запрограммировать все это так, чтобы можно было бы создавать меню любой сложности (дальновидный программист знает, что ему вряд ли придется писать меню один раз и только простенькое), чтобы меню работало корректно (вряд ли кому понравятся постоянные «глюки»), чтобы пользователь мог достичь одной и той же цели разными путями (например, введение «горячих клавиш»), чтобы управление было интуитивно-понятным (курсор, Enter, с учетом, что до Enter’а пользователю лишний раз тянуться лень и что пользователь может захотеть изменить свой выбор), и чтобы программа была как можно менее требовательна к аппаратуре («Ну, на Pentium III может еще и пойдет…»).

Таким образом, мы сформулировали проблему и поставили задачу. Поскольку в данной работе в основном мы представляем программистское «сословие» (с небольшими добавками дизайнеров и проектировщиков), в дальнейшем будем смотреть на задачу именно под этим углом.

Краткая характеристика программы.

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

В программе реализованы два класса: MainMenu и Menu. Класс Menu фактически может быть использован только классом MainMenu, с которым мы и ведем работу. Как программисту, владеющему таким классом, нам необходимо лишь создать экземпляр этого класса, сформировать систему меню с помощью нескольких методов класса и запустить метод Run. Дальше вся работа лежит на нашем классе. Не правда ли, просто? Это определяет доступность нашего класса широкой аудитории программистов.

Внутренняя реализация такова: компьютер переводится в графический режим и запускается так называемый «ждущий цикл», который ждет нажатия клавиши и, дождавшись, передает значение нажатой клавиши специальному обработчику класса, который уже решает, что с ним делать. Конечно, в сложных системах лучше было бы организовать принцип событий. «Ждущий цикл» ждет событие (нажатие клавиши, движение мышки, сигнал системы – что угодно), формирует объект типа Event, а затем рассылает его всем имеющимся в его распоряжении объектам, а их обработчики уже сами решают, нужно реагировать на это событие, или не нужно. Кроме того, полезно было бы определить классы Application, метод которого инициировал бы граф-режим, определял бы «ждущий цикл», класс Window, DialogWindow, добавить свойства, которые однозначно определяли бы каждый экземпляр каждого объекта, добавить канцепцию событий и т.д. Но это сильно усложнило бы программу и увело бы от цели работы. Поэтому здесь и наблюдается некоторое несоответствие принципам ООП.

Реакции класса на нажатия клавиш следующие:

♦ ВЛЕВО – находимся в подменю – выходим из него, если же выходить можно только в главное меню, то смещаем выделение в главном меню влево (если мы находимся в начале, то переходим в конец), при этом пункт остается открытым.

♦ ВВЕРХ – находимся в главном меню – открываем подменю выделенного пункта. Если же мы находимся в подменю – перемещаем курсор вверх (или переходим в конец списка, если была достигнута вершина).

♦ ВПРАВО – в главном меню просто двигаем выделение вправо. Если мы находимся в подменю и выделенный пункт еще может раскрыться, то раскрываем его. Если же пункт не раскрываем, переходим к следующему пункту главного меню, сохраняя отрытое подменю.

♦ ВНИЗ – работает аналогично ВВЕРХ.

♦ ENTER – если мы стоим на пункте с подменю – открываем пункт. Если пункт не содержит подменю, выдаем диалоговое окно с названием пункта, при этом закрывая все меню до главного.

♦ ESC – выход из программы.

Фактически, структура меню реализована двунаправленным динамическим списком, это обеспечивает экономный расход памяти.

Результаты и их анализ.

Программа работает корректно и в соответствии с характеристикой.

Структура системы меню.

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

В задании приводится таблица, которая указывает, сколько пунктов

←предыдущая  следующая→
1 2 3 4 



Copyright © 2005—2007 «Mark5»