1) Вызов диалогового окна выбора файла с тестовыми заданиями.
2) Создание потока для чтения данных из файла.
3) Циклическое чтение (пока не прочитана пустая строка) сток из файла в таком порядке:
Рисунок 2.4 – Окно после нажатия на кнопку "Начать тестирование"
А) чтение строки с вопросом.
Б) чтение строки с количеством вопросов и номером правильного ответа.
В) циклическое чтение строк с вариантами ответа.
Г) вывод на экран запрос о вводе номера правильного ответа.
Д) проверка правильности введенного номера ответа
4) Определение общего результата тестирования как произведение 12 на отношение числа правильных ответов к общему числу вопросов.
Для вывода диалогового окна с текстом вопроса, вариантами ответа и элементом для ввода номера правильного ответа будем использовать функцию InputBox (Рисунок 2.5). А для этого необходимо подключит библиотеку Microsoft.VisualBasic.dll к ссылкам проекта.
Рисунок 2.5 – Ввод вопросов и вариантов ответа
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace tester
{
public partial class Form1 : Form
{
int indexVopros = 0;
int kolPrav = 0;
string vopr, otv;
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
Close();
}
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK) //открытиедиалоговогоокна
{
using (StreamReader sr = new StreamReader(openFileDialog1.FileName, Encoding.GetEncoding(1251)))// открытиепотокадлячтенияизфайла, которыйсодержитсимволы "кирилица 1251"
{
String line;
int kol, prav;//номер правильного ответа и количество ответов для каждого вопроса
label1.Text = "";
indexVopros = 0;
kolPrav = 0;
while (sr.Peek() != -1)
{
indexVopros = indexVopros + 1;
// чтениевопроса
line = sr.ReadLine();
vopr = /*Convert.ToString(indexVopros) + ". " + */ line;
// чтение количества ответов и номера правильного ответа
line = sr.ReadLine();
string s = Convert.ToString(line[0]);
kol = Convert.ToInt32(s);
s = Convert.ToString(line[2]);
prav = Convert.ToInt32(s);
// циклическое чтение перечня вариантов ответа
otv = "";
for (int i = 1; i <= kol; i++)
{
line = sr.ReadLine();// чтение вариантов ответа
otv = otv + Convert.ToString(i) + ")" + line + (char)13;
}
// вывод на экран нового окна с текстом вопроса и вариантами ответа и запросом на ввод номера правильного ответа
string otvet = Microsoft.VisualBasic.Interaction.InputBox(otv, vopr, "", Location.X, Location.Y);
//сравнение номера правильного ответа с номером введым пользователем
if (Convert.ToInt32(otvet) == prav)
{
//правильныйответ
kolPrav = kolPrav + 1;
label1.Text = label1.Text + Convert.ToString(indexVopros) + ". " + "Правильно" + (char)13;
}
else
{
//неправильныйответ
label1.Text = label1.Text + Convert.ToString(indexVopros) + ". " + "Неправильно" + (char)13;
}
}
//оцениваниерезультатовтестирования
int rez = Convert.ToInt32(12* kolPrav / indexVopros);
if (rez >= 10)
{
MessageBox.Show("Отлично: "+Convert.ToString(rez));
}
else
{
if (rez >= 7)
{
MessageBox.Show("Хорошо: " + Convert.ToString(rez));
}
else
{
if (rez >= 4)
{
MessageBox.Show("Удовлетворительно: " + Convert.ToString(rez));
}
else
{
MessageBox.Show("Неудовлетворительно: " + Convert.ToString(rez));
} } } } } } }
}
После запуска приложения на экране появляется окно (Рисунок 2.6):
Рисунок 2.6 – Окно после запуска приложения
Для выбора файла файла нажимаем на кнопку "Начать тестирование" (Рисунок 2.7).
Рисунок 2.7 – Выбор файла
Ответы предоставляются пользователю в следующем виде(Рисунок 2.8):
Рисунок 2.8 – Варианты ответов на вопрос
Далее выбирается вариант ответа и цифра с правильным ответом заносится в поле и нажимается "ОК". Ответ производится на все поставленные вопросы аналогично.
Результат тестирования выглядит следующим образом (Рисунок 2.9).
Рисунок 2.9 – Результат тестирования
На этом работа программы заканчивается.
Для выхода из программы следует нажать на кнопку "Закрыть программу". Следует заметить, что поскольку программа написана в среде Visual Studio 2008 на языке С#, то для ее запуска необходимо наличие библиотеки Microsoft FrameWork 3.5, которую безплатно можно скачать с сайта http://www.mictosoft.com.
РАЗДЕЛ 3. ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ ОБЪЕКТА РАЗРАБОТКИ
В данном разделе проводится технико-экономический расчет программного обеспечения, расчет расходов на разработку, внедрение, эксплуатацию разработанного программного обеспечения.
3.1 Расчет расходов ПО, которое разрабатывается
Таблица 3.1 – Данные для расчета экономического эффекта ПО на 1.01.2010г.
№п/п | Статьи затрат | Усл. обозн. | Ед. изм. | Значения |
Проектирование и разработка ПЗ | ||||
1 | Часовая тарифная ставка программиста | Зпр | грн. | 8,00 |
2 | Коэффициент сложности программы | с | коэф. | 1,40 |
3 | Коэффициент коррекции программы | Р | коэф. | 0,05 |
4 | Коэффициент увеличения расходов труда | Z | коэф. | 1,3 |
5 | Коэффициент квалификации программиста | k | коэф. | 1,0 |
6 | Амортизационные отчисления | Амт | % | 10,0 |
7 | Мощность компьютера, принтера | WМ | Квт/час | 0,40 |
8 | Стоимость ПЕОМ IBM Sempron LE1150(AM2)/1GB/TFT | Втз | грн. | 3200,00 |
9 | Тариф на электроэнергию | Це/е | грн. | 0,56 |
10 | Норма дополнительной зарплаты | Нд | % | 15,0 |
11 | Отчисление на социальные расходы | Нсоц | % | 37,2 |
12 | Транспортно-заготовительные расходы | Нтр | % | 4,0 |
Эксплуатация П0 | ||||
13 | Численность обслуживающего персонала | Чо | чел | 1 |
14 | Часовая тарифная ставка обслуживающего персонала | Зперс | грн. | 6,00 |
15 | Время обслуживания систем | То | час/г | 150 |
16 | Стоимость ПЕОМ | Втз | грн. | 3200,00 |
17 | Норма амортизационных отчислений на ПЕОМ | На | % | 10,0 |
18 | Норма амортизационных отчислений на ПЗ | НаП | % | 10,0 |
19 | Накладные расходы | Рнак | % | 25,0 |
20 | Отчисление на содержание и ремонт ПЕОМ и ПО | Нр | % | 10,0 |
21 | Стоимость работы одного часа ПЕОМ | Вг | грн. | 6,5 |
Первичными исходными данными для определения себестоимости ПО является количество исходных команд (операторов) конечного программного продукта. Условное количество операторов Q в программе задания может быть оценено по формуле:
, (3.1)где у – расчетное количество операторов в программе, что разрабатывается (единиц);
с – коэффициент сложности программы;
р – коэффициент коррекции программы в ходе ее разработки.
Рассчитанное количество операторов в разработанной программе – 100.
Коэффициент с – относительная сложность задания относительно отношения к типичной задаче, сложность которой принята более 1, лежит в границах от 1,25 до 2,0 и выбирается равным 1,30. Коэффициент коррекции программы р – увеличение объема работ за счет внесения изменений в программу лежит в границах от 0,05 до 0,1 и выбирается равным 0,05.
Подставим выбранные значения в формулу (3.1) и определим величину Q:
Q = 100∙1,3 (1 + 0,05) = 14.
3.2 Расчет расходов на создание ПО
Расчет расходов на ПО проводится методом калькуляции расходов, в основу которого положена трудоемкость и заработная плата разработчиков. Трудоемкость разработки ПЗ рассчитывается по формуле:
(3.2)где То – расходы труда на описание задания;
Ти – расходы труда на изучение описания задания;
Та – расходы труда на разработку алгоритма решения задания;
Тп– расходы труда на составление программы по готовой блок-схеме;
Тотл – расходы труда на отладку программы на ЭВМ;
Тд– расходы труда на подготовку документации.
Составные расходы труда, в свою очередь, можно определить по числу операторов Q для ПО, что разрабатывается. При оценке составных расходов труда используются:
– коэффициенты квалификации разработчика алгоритмов и программ – к;
– увеличение расходов труда в результате недостаточного описания задания – Z.
Коэффициент квалификации разработчика характеризует меру подготовленности исполнителя к порученной ему работе (он задается в зависимости от стажа работы), к = 1,0. Коэффициент увеличения расходов труда в результате недостаточного описания задания характеризует качество постановки задания, выданной для разработки программы, в связи с тем, что задание требовало уточнения и некоторой доработки. Этот коэффициент принимается равным 1,3.
Все исходные данные приведенные в таблице 3.1.
а) Трудоемкость разработки П0 составляет:
Расходы труда на подготовку описания задания То принимаются равными 18 чел/час, исходя из опыта работы. Расходы труда на изучение описания задания Те с учетом уточнения описания и квалификации программиста могут быть определены по формуле:
; (3.3)Ти = 14∙1,3/80∙1 = 0,22(чел/час)
Расходы труда на разработку алгоритма решения задачи рассчитываются по формуле:
; (3.4)Та=14/25∙1 = 0,56 (чел/час)
Расходы труда на составление программы по готовой блок-схеме Тп рассчитываются по формуле: