Смекни!
smekni.com

Автоматизированная обучающая система по дисциплине "Программирование" (стр. 5 из 6)

Итак, общие затраты на создания программного продукта составляют 2200 рублей. Исходя из 50% рентабельности, сумму, которую мы хотим выручить, рассчитаем по формуле

С = З + П = 2200 + 1100 » 3300 руб. (6.4)

Эта сумма без налога на добавленную стоимость (НДС). Планируется ее получить от продажи 100 программных продуктов. Анализ рынка говорит, что реализовать такое количество не составит особых проблем. Исходя из этого, посчитаем цену одного программного комплекса без учета НДС

Ц = С / 5 = 3300 / 100 = 33 руб.(6.5)

Теперь посчитаем окончательную цену одного программного продукта с учетом НДС 18%.

НДС = ((З + П) / 100) * 0.18 = 33 * 0.18 » 6 руб.(6.6)

С учетом НДС цена программного продукта составляет:

Цпп = Ц + НДС »40руб.(6.7)


Процентное соотношение себестоимости, прибыли и налогов для ста комплектов продукта представлены на рисунке 2.

Рисунок 6.2. Процентное соотношение себестоимости, прибыли и налогов для 100 комплектов продукта

На рисунке 6.2 показана динамика роста прибыли от продажи программного продукта относительно числа экземпляров.

Рисунок 6.3. Динамика роста прибыли от продажи ПП


6.5 Экономическая целесообразность разработки

При разработке программного продукта значительное внимание уделяется экономическому обоснованию необходимости проведения данного комплекса работ по его созданию.

Стоимость конечного продукта для потребителя не высока всего 40 руб. Разработка данного программного продукта ведется для образовательных учреждений. Поэтому цена одного лицензионного диска очень важна. Чем ниже цена, тем больше вероятность, что программный продукт купят. При цене всего 40 рублей, диски с программой быстро купят. Покупателями станут преподаватели вузов и учителя других коммерческих учебных заведений. При продаже 100 лицензионных дисков, разработка программы не просто окупится, а принесет прибыль в размере 1100 рублей. Если при продаже всех лицензионных дисков с программой, на рынке все еще будет спрос, то при дополнительном выпуске лицензионных копий, при минимальных затратах, мы получим еще какой-то процент прибыли.

В итоге можно сделать вывод, что разработка данного программного продукта целесообразна.

Заключение

Данная автоматизированная система по дисциплине «Программирование», разработанная в ходе выполнения данной работы, является актуальным на сегодняшний день, так как многие пользователи нуждаются в автоматизированном простом и быстром средстве обучения. Программа может быть успешно внедрена в учебный процесс, что соответственно повысит качество знаний. С экономической точки зрения внедрения целесообразно.

Программа соответствует все требованиям, предъявленным к ней. В нее входит: лекционный материал по дисциплине «Программирование», тестовые задания по темам лекций, результаты тестирования записываются в файл, который потом можно посмотреть в программе.

Разработанный учебник устойчиво выполняет все свои функции, что делает его применимым в процессе обучения. Но теперь стоит задача сделать учебник еще более совершенным и более расширенным.

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

1. ГОСТ 7.32-2001. Отчет о научно-исследовательской работе. Структура и правила оформления, Введен 01.01.2001. М.: Изд-во стандартов, 2001. 9 с.

2. ГОСТ 2.105-95. Общие требования к текстовым документам, Введен 02.05.1995. М.: Изд-во стандартов, 1995. 10 с.

3. ГОСТ Р 7.0.5-2008. Библиографическая ссылка. Общие требования и правила составления, Введен 15.05.2008. М.: Изд-во стандартов, 2008. 8 с.

4. ГОСТ 7.1-2003. Библиографическая запись. Библиографическое описание. Общие требования и правила составления, Введен 01.01.2003. М.: Изд-во стандартов, 2003. 11 с.

5. ГОСТ 7.80-2000. Библиографическая запись. Заголовок. Общие требования и правила составления, Введен 01.01.2000. М.: Изд-во стандартов, 2000. 9 с.

6. ГОСТ 19.201-78. Техническое задание. Требования к содержанию и оформлению. Введен 18.12.1978. М.: Изд-во стандартов, 1978. 11 с.

7. Автоматизированные обучающие системы [Электронный ресурс] URL: http://www.tspu.tula.ru/ivt/old_site/umr/nit/lect/lect4.htm (Дата обращения: 14.11.2010).

8. Википедия. Свободная энциклопедия. Официальный сайт. URL http://ru.wikipedia.org/wiki/Алгоритм, (Дата обращения: 14.11.2010).

9. Горюнова М.А., Горюхова Т.В., Кондратьева И.Н., Рубашкин Д.Д. Электронные образовательные издания. Учебно-методическое пособие. СПб.: ЛОИРО, 2003.

10. Интернет университет информационных технологий: Официальный сайт. URL: http://www.intuit.ru (Дата обращения: 14.11.2010).

11. Могилёв А. В. Информатика. – М.: «Академия»,1999.

12. Пак Н.И. Нелинейные технологии обучения в условиях информатизации: Учебное пособие. Красноярск: РИО КГПУ, 2004

13. Олейников Б.В. Проблемы и особенности преподавания информатики и программирования в вузе с учетом современных требований. Красноярский государственный университет, 1997. URL: http://www.nsu.ru/archive/conf/nit/97/c5/node12.html (Дата обращения: 14.11.2010).

14. Федеральный интернет-экзамен в сфере профессионального образования: Официальный сайт. URL: http://www.fepo.ru (Дата обращения: 14.11.2010).

15. Чистохвалов В.Н. Проблемы организации учебного процесса в вузе в системе зачетных единиц. Российский университет дружбы народов (РУДН), 2006. URL:http://www.rudn.ru/?pagec=293 (Дата обращения: 14.11.2010).

16. Шилдт Г. С# Учебный курс. Программирование. СПб.: Питер, 2003.

17. Электронный словарь: Официальный сайт. URL: http://chtotakoe.info/articles/elektronnyj_uchebnik_858.html (Дата обращения: 14.11.2010)

Приложение

Приложение 1

Код формы с лекциями

namespace Kursach

{public enum Modes { Lecture, ChooseLecture }

public partial class LecturesForm : Form

{

private ChoiseButtons buttons;

private DirectoryInfo[] lecturesDirectories;

private DirectoryInfo currentLectureDirectory;

private Point startPosition = new Point(5, 15);

private Size buttonSize = new Size(200, 30);

private int distance = 5;

private Modes currentMode;

public LecturesForm(string folderPath)

{

InitializeComponent();

buttons = new ChoiseButtons(ButtonTypes.RadioButton, startPosition.X, startPosition.Y, buttonSize.Width, buttonSize.Height, distance);

DirectoryInfo directory = new DirectoryInfo(folderPath);

lecturesDirectories = directory.GetDirectories();

foreach (DirectoryInfo lectureDirectory in lecturesDirectories)

{

groupBoxLectures.Controls.Add(buttons.AddNextButton(lectureDirectory.Name));

}

SetChooseLectureMode();

}

private void button1_Click(object sender, EventArgs e)

{

if (currentMode == Modes.ChooseLecture)

{

List<int> selected = buttons.GetSelected();

if (selected.Count == 0)

{

MessageBox.Show("Выберителекцию!", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Information);

return;

}

else

{

currentLectureDirectory = lecturesDirectories[selected[0]];

try

{

FileStream fileStream = new FileStream(currentLectureDirectory.FullName + "&bsol;lecture", FileMode.Open);

StreamReader streamReader = new StreamReader(fileStream);

richTextBoxLecture.Text = streamReader.ReadToEnd();

streamReader.Close();

fileStream.Close();

}

catch

{

TestForm.ShowCriticalErrorMessage("Ненайденфайлслекцией&bsol;nПриложениебудетзакрыто");

}

}

SetLecturesMode();

}

else

{

InitForm form = new InitForm();

if (form.ShowDialog() == DialogResult.OK)

{

new TestForm(currentLectureDirectory.FullName, currentLectureDirectory.Name, form.UserName, this).Show();

}

}

}

private void SetLecturesMode()

{

currentMode = Modes.Lecture;

buttonChoose.Text = "Тест";

richTextBoxLecture.Visible = true;

linkLabelResults.Visible = false;

groupBoxLectures.Visible = false;

richTextBoxLecture.Dock = DockStyle.Fill;

linkLabelBack.Visible = true;

this.MaximumSize = new Size();

this.MinimumSize = new Size();

this.Size = new Size(739, 419);

this.MaximizeBox = true;

this.Text = currentLectureDirectory.Name;

buttonChoose.Select();

}

private void SetChooseLectureMode()

{

currentMode = Modes.ChooseLecture;

linkLabelResults.Visible = true;

buttonChoose.Text = "Выбрать";

richTextBoxLecture.Visible = false;

groupBoxLectures.Visible = true;

linkLabelBack.Visible = false;

this.Text = "Выборлекции";

this.MaximumSize = new Size(739, 419);

this.MinimumSize = new Size(739, 419);

this.Size = new Size(739, 419);

this.MaximizeBox = false;

}

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

{

SetChooseLectureMode();

}

private void LecturesForm_VisibleChanged(object sender, EventArgs e)

{

if (Visible == true)

{

SetChooseLectureMode();

}

}

private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)

{

new ResultsForm().ShowDialog();

}

private void panel2_Paint(object sender, PaintEventArgs e)

{

}

}

}

Кодтестовойформы

namespace Kursach

{

public partial class TestForm : Form

{

private ChoiseButtons buttons;

private Test test;

private string userName;

private List<int> correctAnswers = new List<int>();

private Point startPosition = new Point(5, 15);

private SizebuttonSize = new Size(200, 30);

private intdistance = 5;

private Form parentForm;

public TestForm(string path, string testName, string userName, Form formToClose)

{

parentForm = formToClose;

formToClose.Hide();

InitializeComponent();

this.userName = userName;

try

{

test = new Test(testName, path);

}

catch (Exception)

{

ShowCriticalErrorMessage("Одинизфайловтестовимеетневерныйформат&bsol;nПриложениебудетзакрыто");

}

test.BeginTest();

Question question = test.CurrentQuestion;

buttons = new ChoiseButtons(ButtonTypes.CheckboxButton, startPosition.X, startPosition.Y, buttonSize.Width, buttonSize.Height, distance);

InitQuestionWindow(question);

questionsGroupBox.Select();

}

private void InitQuestionWindow(Question question)

{

ButtonTypes type = (question.CorrectAnswers.Count != 1) ? ButtonTypes.CheckboxButton : ButtonTypes.RadioButton;

buttons.Reset(type);

questionsGroupBox.Controls.Clear();

this.Text = question.QuestonName;

this.textBoxTest.Text = question.QuestonText;

for (int i = 0; i < question.Answers.Count; i++)

{

buttons.AddNextButton(question.Answers[i + 1]);

questionsGroupBox.Controls.Add(buttons[i]);

}

}

public static void ShowCriticalErrorMessage(string message)

{

ShowErrorMessage(message, "Критическаяошибка");

Environment.Exit(1);

}

private static void ShowInfoMessage(string info, string message)

{

ShowMessage(message, info, MessageBoxButtons.OK, MessageBoxIcon.Information);

}

private static void ShowErrorMessage(string info, string message)

{

ShowMessage(message, info, MessageBoxButtons.OK, MessageBoxIcon.Error);

}

private static void ShowMessage(string info, string message, MessageBoxButtons buttons, MessageBoxIcon icon)

{

MessageBox.Show(message, info, buttons, icon);

}

private void buttonNextQuestion_Click(object sender, EventArgs e)

{

List<int> selected = buttons.GetSelected();

bool isCorrect = false;

if (selected.Count == test.CurrentQuestion.CorrectAnswers.Count)

{

isCorrect = true;

foreach (int correctQuestionNumber in test.CurrentQuestion.CorrectAnswers)

{

if (!selected.Contains(correctQuestionNumber - 1))