Автор: Пользователь скрыл имя, 13 Мая 2012 в 10:37, курсовая работа
Цель работы: приобрести практические навыки в области разработки дизайна прикладного программного обеспечения (ПО), его функциональности, а также в области разработки тестов для юзабилити-тестирования пользователя ПО.
Цель такого ПО: частично совместить функциональность калькулятора и простого текстового редактора, с возможность сохранения полученных данных в тестовый файл.
Область применения: небольшие расчеты дома и на предприятиях.
Введение………………………………………………………………………………...2
1. Описание актуальности, целей и задач разрабатываемого ПО, его назначение и область применения........................3
2. Обзор программных продуктов, имеющих аналогичные цели и назначение…...4
3. Разработка интерфейса ПО и краткое описание основных элементов управления…………………….9
3. 1 Описание назначения основных окон приложения, элементов управления.....9
3. 2 Описание функциональности ПО и способов взаимодействия пользователя с ним..........................13
3. 3 Описание принципов композиции и организации элементов управления и визуализации, а также описание выбранного стиля и цветовой гаммы...............13
4. Разработка алгоритмов и блок-схем, описывающих функциональность ПО….15
5. Разработка алгоритмов и блок-схем, описывающих процесс визуализации и модификации поведения нестандартных управляющих элементов....................19
6. Разработка прикладного программного обеспечения….…………………...…...21
7. Разработка тестов юзабилити-тестирования………………………...…………...23
Выводы………………………………………………………………………………...24
Перечень ссылок…………....………………………………………………………...25
Приложение А. Техническое задание
Приложение Б. Тексты (листинги) разработанного программного обеспечения...26
Приложение В. юзабилити-тест для ПО…………………………………………….36
Все управляющие элементы являются модифицированными стандартным компонентами среды разработки Microsoft Visual Studio, но были разработаны нестандартные графические элементы интерфейса разрабатываемого программного обеспечения, являющиеся смешением возможностей языка программирования С# и визуальных компонентов.
Например, мигающая надпись названия программы в диалоговом окне входа.
Блок-схема ее работы представлена на рисунке 5.1.
Рисунок 5.1 – Блок-схема работы мигающей надписи
6 РАЗРАБОТКА ПРИКЛАДНОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Для реализации прикладного назначения данного приложения было использовано несколько функций, алгоритмы которых приведены выше.
Для выполнения всех вышеописанных действий, в которые используются как визуальные элементы, так и не визуальные, были использованы стандартные компоненты среды программирования Microsoft Visual Studio.
Рассмотрим подробнее их применение на примере.
Для реализации функциональности текстового редактора были использованы следующие компоненты:
TextBox – для представления текстового поля, в котором будет осуществлен набор текта. Является визуальным компонентом;
Button – для создания экранной клавиатуры, с помощью которой будет производится набор текста. Является визуальным компонентом;
MenuStrip - для создания главного меню управления программой, с помощью которого производится выход из программы, сохранение и открытие документа, показ калькулятора, показ окна «О программе». Является визуальным компонентом;
StatusStrip - для отображения языка ввода с экранной клавиатуры, которое изменяется в зависимости при нажатии на клавиши «Shif + Ctrl”. Является визуальным компонентом;
ImageSet - для создания коллекции изображений, которые будут использованы для задних фонов визуальных компонентов. Является не визуальным компонентом.
Для реализации функциональности диалогового окна входа в программу были использованы следующие компоненты:
Button – для создания клавиш «OK» и «CANCEL», которые позволяют пользователю либо запустить главное окно приложения (нажатие «OK»), либо закрыть приложение (нажатие «CANCEL»). Является визуальным компонентом;
Label - для создания текстового поля «ВОЙТИ». Является визуальным компонентом;
PictureBox - для воздания изображения мигающей надписи названия приложения. Является визуальным компонентом.
Timer - для контролирования частоты мигания надписи. Является не визуальным компонентом.
7 РАЗРАБОТКА ТЕСТОВ ЮЗАБИЛИТИ-ТЕСТИРОВАНИЯ
Учитывая направленность данного приложения и его общий контекст для юзабилити тестирования следует учесть следующие факторы:
особенности инсталяции;
особенности открытия данного приложения;
имеющиеся у пользователя навыки для работы с Windows-приложениями;
имеющиеся у пользователя навыки для работы с приложениями такого рода;
имеющиеся у пользователя навыки для работы с редактированием текста;
восприятие пользователем цветовой гаммы и стиля данного приложения;
соответствие данного приложения его назначению;
пожелания пользователя к разработчику по улучшению приложения.
В соответствии с этим был разработан юзабилитти тест, приведённый в приложении В.
ВЫВОДЫ
В результате выполнения данной курсовой работы было разработано прикладное программное обеспечение, а именно CyberCalk 1.0.
Как следствие были получены навыки разработки интерфейсов прикладного программного обеспечения, его функциональности, а так же навыки в области разработки тестов для юзабилити-тестирования пользователем ПО.
Естественно существуют направления по усовершенствованию данного приложения. В дальнейшем можно: разработать стоку инструментов работы с текстом (выбор шрифта, цвета и т.п.), возможность печати на внешние устройства, доработка калькулятора, добавить скинов и усовершенствовать внешний вид програмного обеспечения.
ПЕРЕЧЕНЬ ССЫЛОК
1. Королевство delphi http://www.delphikingdom.com/
2. Narod.ru
http://sea1608.narod.ru/LK2.
3. Шилд Г.Полный справочник по С#. — М. : Издательский дом "Вильямс", 2004.-752 с.
4. Лабор В. В.Си Шарп: Создание приложений для Windows.— Мн.: Харвест, 2003. -384 с.
5. Либерти Дж. Программирование на С#. – М.: Символ Плюс, 2002.- 684с.
6. Культин Н. Б. С# в задачах и примерах. – СПб.: БХВ-Петербург, 2007. -240.
ПРИЛОЖЕНИЕ Б. Тексты (листинги) разработанного программного обеспечения.
Текст Form1.cs:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;
using System.Collections;
using Microsoft.CSharp;
using Microsoft.VisualBasic;
using Microsoft.Win32;
namespace Kyrsach4
{
public partial class Form1 : Form
{
Form4 form4=new Form4();
Form3 form3 = new Form3();
public Bitmap bm = new Bitmap("Data\\buttons\\images\
public Image temp;
public bool flag;
public bool caps = true;
public bool[] rus_en = new bool[2];
public Form1()
{
this.SetStyle(ControlStyles.
this.SetStyle(ControlStyles.
InitializeComponent();
toolStripStatusLabel1.Text = "Русский"; // установка метки в строке состояния
statusStrip1.Height = 24;
form4.Deactivate+=new EventHandler(form4_Deactivate)
}
private void button36_Click(object sender, EventArgs e)
{
if (form4.flag){
textBox1.Text += ((Button)sender).Text;//вывод в текстовое поле
}
}
private void button1_Click(object sender, EventArgs e) //метод, выполняемый после нажатия КэпсЛук
{
((Button)sender).FlatStyle = ((Button)sender).FlatStyle == FlatStyle.Flat ? FlatStyle.Standard : FlatStyle.Flat;
caps = caps == true ? false : true;
}
private void button2_Click(object sender, EventArgs e)//метод, выполняемый после нажания Shift
{
//((Button)sender).FlatStyle = ((Button)sender).FlatStyle == FlatStyle.Flat ? FlatStyle.Standard : FlatStyle.Flat;
rus_en[0] = rus_en[0] == true ? false : true; // установка флажка,что был нажат Shift
if ((rus_en[0]) && (rus_en[1])) // если были нажаты Ctrl b Shift
{
toolStripStatusLabel.Text = toolStripStatusLabel1.Text == "Русский" ? "Английски" : "Русский"; // переключение метки
}
else if ((!rus_en[0]) && (!rus_en[1]))// если были нажаты Ctrl b Shift
{
toolStripStatusLabel.Text = toolStripStatusLabel1.Text == "Русский" ? "Английски" : "Русский";// переключение метки
}
}
private void button3_Click(object sender, EventArgs e)//метод, выполняемый после нажания Ctrl
{
//((Button)sender).FlatStyle = ((Button)sender).FlatStyle == FlatStyle.Flat ? FlatStyle.Standard : FlatStyle.Flat;
rus_en[1] = rus_en[1] == true ? false : true; // установка флажка,что был нажат Ctrl
if ((rus_en[0]) && (rus_en[1]))// если были нажаты Ctrl b Shift
{
toolStripStatusLabel.Text = toolStripStatusLabel.Text == "Русский" ? "Английский" : "Русский";// если были нажаты Ctrl b Shift
}
else if ((!rus_en[0]) && (!rus_en[1]))// если были нажаты Ctrl b Shift
{
toolStripStatusLabel.Text = toolStripStatusLabel.Text == "Русский" ? "Английски" : "Русский";// если были нажаты Ctrl b Shift
}
}
private void click_to_key(object sender, EventArgs e) // метод, выполняемый после нажатия на буквенных клавишах
{
if (rus_en[0] && rus_en[1]) // проверка языка
{
if (!caps) //проверка регистра букв
{
textBox1.Text += ((Button)sender).Text[0].
} //верхний регистр
else
{
textBox1.Text += ((Button)sender).Text[0].
}
//нижний регистр
}
else
{
if (!caps)//проверка регистра букв
{ //верхний регистр
textBox1.Text += ((Button)sender).Text[2].
}
else
{
textBox1.Text += ((Button)sender).Text[2].
} //нижний регистр
}
}
private void click_for_tsifri(object sender, EventArgs e)// метод, выполняемый после нажатия на кнопку не чувствительной к регистру и языку
{
textBox1.Text += ((Button)sender).Text;//вывод в текстовое поле
}
private void backsp(object sender, EventArgs e)// метод, выполняемый после нажатия на Backspace
{
if (textBox1.Text.Length != 0)
{
textBox1.Text = textBox1.Text.Remove(textBox1.
}
}
private void undoToolStripMenuItem_Click(
{
textBox1.Undo();
}
private void button34_Click(object sender, EventArgs e)// метод, выполняемый после нажатия на Tab
{
textBox1.Text += " ";
}
private void button49_Click(object sender, EventArgs e)// метод, выполняемый после нажатия на Enter
{
textBox1.Text += "\n";
}
private void button33_Click(object sender, EventArgs e)// метод, выполняемый после нажатия на пробел
{
textBox1.Text += " ";
}
private void сохранитьToolStripMenuItem1_
{
SaveFileDialog k = new SaveFileDialog();
k.Filter = "Text file (*.txt)|*.txt";//фильтр
if (k.ShowDialog() == DialogResult.OK)//если были выбраны файлы
{
//создаем файловый поток
FileStream fs = new FileStream(k.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
StreamWriter fwr = new StreamWriter(fs, Encoding.GetEncoding("windows-
fwr.Write(textBox1.Text);
fwr.Close();
form4.Deactivate+=new EventHandler(form4_Deactivate)
}
}
private void form4_Deactivate(object sender, EventArgs e)
{
if (form4.date!= null)
{
textBox1.Text += form4.date.ToString();
}
form4.Hide();
}
private void открытьToolStripMenuItem1_
{
OpenFileDialog k = new OpenFileDialog();
k.Filter = "Text file (*.txt)|*.txt";
k.Multiselect = false;
if (k.ShowDialog() == DialogResult.OK)
{
FileStream fs = new FileStream(k.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
StreamReader fwr = new StreamReader(fs, Encoding.GetEncoding("windows-
textBox1.Text = fwr.ReadToEnd();
fwr.Close();
}
}
private void выходToolStripMenuItem_Click(
{
this.Close();
}
private void Й_MouseHover_1(object sender, EventArgs e)
{
/* temp = ((Button)sender).
((Button)sender).
}
private void Й_MouseLeave(object sender, EventArgs e)
{
//((Button)sender).
}
private void показатьToolStripMenuItem1_
{
form4.date = null;
form4.Show();
}
private void скрытьToolStripMenuItem1_
{
form4.Hide();
}
private void undoToolStripMenuItem_Click_1(
{
textBox1.Undo();
}
private void redoToolStripMenuItem_Click(
{
textBox1.Redo();
}
private void оПрограммеToolStripMenuItem2_
{
form3.Show();
}
}
}
Текст Form2.cs:
using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
using System.Media;
using System.Timers;
using System.Threading;
namespace Kyrsach 4
{
public partial class Form2 : Form