KostyeFromHelen
16. Разработка налогового калькулятора на C#
18.11.2011 07:28:34

Давайте более профессионально разберём как создаются программы на C#, а именно, мы ответим на следующие вопросы:

 

  1. Составим функциональные требования и бизнес требования к программе
  2. Выберем модель жизненного цикла, составим календарный график, оценим трудоъёмкость
  3. Составим техническое задание к программе по ГОСТ 19.201-78
  4. Разработаем программу "налоговый калькулятор"
Ну и пока хватит, более точное задание можно скачать по ссылке. Советую всем скачать, ибо полное задание очень большое.
И так начнём.

Задание 1.

Бизнес требования к программе налоговый калькулятор:
1. Программа должна сократить срок выполнения подсчета налога.
2. Программа должна упростить подсчёт налога.

Функциональные требования к программе налоговый калькулятор:
1. Программа должна считать налог, учитывая количество детей и заработанные за год средства.
2. Программа должна сообщать пользователю о возникших ошибках.

Бизнес требования - это требования, описывающие, какие бизнес функции будут реализованы или улучшены. 
Функциональный требования - это требования к самой программе. Что и как в ней будет работать.

Задача 2.

Для начала разберёмся какие модели жизненного цикла существуют:

1. Каскадно-водопадная модель жизненного цикла. Проблема в том, что если на стадии разработки кода мы решим что-то переделать, то нам придётся делать всё заново.

2. Какскадно-водопадная с возвращениями. Улучшенная первая, так как мы на каждом этапе можем вернуться на шаг назад, а не начинать всё заново.

3. Спиральная модель жизненного цикла. Используется компанией Microsoft. А это уже говорит о том, что модель очень хорошая.

4. Инкрементная модель жизненного цикла.

Мы будем использовать каскадно-водопадную модель жизненного цикла, так как программа очень лёгкая:

Теперь надо составить календарный план, для нашего проекта это даже необязательно и не очень сложно, но для более крупного проекта это важный этап. С помощью него мы можем узнать примерные сроки.

Календарный план:

1. Формирование требований  - 25.03.2011 : 27.03.2011
1.1 Формирование бизнес-требований - 25.03.2011 : 26.03.2011
1.2 Формирование функциональных требований - 26.03.2011 : 27.03.2011
2. Техническое задание - 27.03.2011 : 28.03.2011
3. Разработка кода - 28.03.2011 : 01.05.2011
3.1 Разработка интерфейса программы - 28.03.2011 : 16.04.2011
3.2 Разработка функций программы - 16.04.2011 : 26.04.2011
3.3 Разработка обработчика ошибок - 26.04.2011 : 01.05.2011
4. Тестирование - 01.05.2011 : 10.05.2011
4.1 Тестирование программы на правильность расчётов - 01.05.2011 : 03.05.2011
4.2 Тестирование программы на отлов ошибок - 03.05.2011 : 06.05.2011
4.3 Отладка программы при неисправности пунктов 4.1 и 4.2 - 06.05.2011 : 10.05.2011
5. Ввод в действие - 10.05.2011 : 20.05.2011
5.1. Подготовка персонала к работе - 10.05.2011 : 15.05.2011
5.2. Выпуск продукции - 15.05.2011 : 20.05.2011

Календарный план, конечно,  высосан из пальца, но это не важно. Главное, что понятно, что это и как.

Теперь нам надо оценить сложность программы, сделаем это с помощью метода функциональных точек. Для этого нам понадобится две переменных:

DET - это уникальное количество входных данных и обработчиков.
RET - это логическая группа данных.

Для нашей программы:

DET = 7(доход за 1 месяц, доход с начала года по нужный месяц, количество детей до 18 лет, полнота семьи, 2 текстовых поля для вывода результата, кнопка расчёта).
RET = 3(информация о гражданском лице, выходные поля, расчёт)

Простейшая матрица сложности:

1-19 DET 20-50 DET 50+ DET
1 RET Low Low Average
2-5 RET Low Average High
6+ RET Average High High

Исходя из матрицы сложности, наша сложность – Low(низкая).

Задача 3.

Техническое задание по ГОСТ 19.201-78 (сам ГОСТ можно поискать в интернете, либо всё-таки скачать мой файл с заданием и посмотреть там):

  1. Введение

       1.1. Наименование программы: налоговый калькулятор.

       1.2. Программа предназначена для организации консультаций граждан налоговыми органами.

  1. Основания для разработки

2.1. Основанием для разработки являются следующие документы и нормативные акты:

2.1.1. Задание учителя

2.1.2. Учебный план

2.2. Организация, утвердившая документ: Институт туризма и гостеприимства.

       Дата утверждения документа: 21.03.2011

  1. Назначение разработки

       3.1. Функциональным назначением программы «налоговый калькулятор» является расчёт   налогов

    3.2. Эксплуатационным назначением программы «налоговый калькулятор» является организация консультации граждан по вопросам налогового законодательства.

  1. Требования к программе

       4.1. Программа «налоговой калькулятор» должна выполнять следующие функции:

4.1.1. Приём дохода физического лица за один месяц.

4.1.2. Приём дохода физического лица, который он уже получил с начала года и до текущего месяца

4.1.3. Приём кол-ва детей, имеющихся на иждивение у физического лица.

4.1.4. Приём информации о полноте семьи физического лица.

4.1.5. Расчёт налога по определенному заказчиком алгоритму.

4.1.6. Выдача информации пользователю о сумме подоходного налога в рублях.

4.1.7. Выдача информации пользователю о сумме чистого дохода за месяц в рублях

4.1.8. Выдача информации в виде чисел и в виде суммы прописью.

4.2. Программа «налоговый калькулятор» должна обладать следующими средствами защиты:

4.2.1. Надёжностью программы является соответствие результатов расчёта действующему законодательству.

4.2.2. Входные и выходные данные строго типизированы и не могут быть несоответствующего типа.

4.2.3. Для устойчивого функционирования требуется бесперебойная связь.

4.2.4. Моментальное время восстановления после отказа.

4.3. Условия эксплуатации программы «налоговый калькулятор»:

4.3.1. Рабочее помещение должно соответствовать нормальным условиям для эксплуатации компьютера.

4.3.2. Сотрудники должны пройти специальную подготовку по работе с персональным компьютером, а так же пройти курс освоения программы.

4.4. Требования к составу и параметрам технических средств:

4.4.1. Платформа – Windows XP.

4.4.2. Объём оперативной памяти 128МБ.

4.4.3. Процессор 33МГц.

4.4.4. Устройства ввода данных – мышь, клавиатура.

4.4.5. Дисковое пространство – 10МБ.

4.5. Требования к информационной и программной совместимости

4.5.1. Язык программирования: C#.

4.5.2.  Системные программные средства, используемые программой, должны быть представлены лицензионной локализованной версией операционной системы Windows XP.

4.6. Требования к маркировке и упаковке. Требования не предъявляются.

4.7. Требования к транспортированию и хранению. Требования не предъявляются.

5. Требования к программной документации

5.1. Текст программы – запись программы с необходимыми комментариями.

5.2. Спецификация – состав программы и документация на неё.

5.3. Описание программы - сведения о логической структуре и функционировании программы.

5.4. Техническое задание.

5.5.Пояснительная записка.

6. Технико-экономические показатели.

6.1. Программа «налоговый калькулятор» предназначена для расчёта подоходного налога физических лиц.

6.2. Объектом внедрения программы является Институт туризма и гостеприимства.

6.3. Наша программа решает финансовые проблемы при расчёте подоходного налога и расчёта прибыли сотрудников предприятия.

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

6.5. В связи с внедрением программы произойдёт ряд положительных изменений, таких как более быстрый расчёт налогов, что позволит сотрудникам легче и быстрее выполнять запланированную работу.

6.6. В отличие от аналогов наша программа абсолютно бесплатна! Имеет дружественный интерфейс без лишних функций.

7. Стадии и этапы разработки

№ п/п

Этап работы

Сроки исполнения

Ответственный исполнитель

начало

завершение

1

Оценка сложности

23.03.2011

24.03.2011

Карпов К.К.

2

Разработка кода

28.03.2011

01.05.2011

Карпов К.К.

3

Тестирование программы

01.05.2011

10.05.2011

Карпов К.К.

4

Регистрация программы

10.05.2011

12.05.2011

Карпов К.К.

5

Подведение итогов

12.05.2011

14.05.2011

Карпов К.К.

 

 

 

 

 

 

 

 

8. Порядок контроля и приемки

8.1. Проверка программы на наличие ошибок ввода данных.

8.2. Проверка программы на наличие ошибок вывода данных

8.3. Проверка программы на наличие ошибок расчёта данных

Задание 4.

Вы добрались до сюда? Тогда поздравляю! Наконец-то мы начнём программировать! Я уверен, что большинство из вас более-менее знает основы языка, а программа несложная, а значит, объяснять я не буду ничего пока.

Форма выглядит так:

Код программы:

public Form1()
        {
            InitializeComponent();
            comboBox2.Items.Add("Да");
            comboBox2.Items.Add("Нет");
            comboBox2.Text = "Нет";
        }

       private void button1_Click(object sender, EventArgs e)
        {
       
          const double procent = 0.13;
            double nalog;
            double d = 0;
            double dsumm = 0;
            double vych = 0;
            int deti = 0;
            bool polnota;

                try
                {
                    d = Convert.ToDouble(textBox1.Text);
                    dsumm = Convert.ToDouble(textBox2.Text);
                    deti = Convert.ToInt32(textBox3.Text);

                }
                catch
                {

                    MessageBox.Show("Данные некоректны");
                    return;

                }

           if (comboBox2.Text == "Да")
           {
               polnota = true;
           }
           else
           {
               polnota = false;
           }
           switch (deti)
           {
               case 0:
                   vych = 600;
                   break;
               default:

                   if (polnota == true)
                   {
                       vych = 600 + 600 * deti;
                   }
                   else
                   {
                       vych = 600 + 1200 * deti;
                   }
                   break;
           }
           if (vych >= dsumm)
           {
               nalog = 0;
           }
           else if (dsumm <= 40000)
           {
               nalog = procent * (d - vych);
           }
           else
           {
               nalog = 0.13 * d;
           }
           textBox4.Text = Convert.ToString(nalog);
           textBox6.Text = Convert.ToString(d - nalog);
   
       }
    }

Вообщем как-то так, хотя есть небольшой баг в программе. Я очень давно это делал, поэтому мне уже было лень немного разбираться с этим, честно говоря. 

Спасибо.



Теги: модели жизненного цикла | налоговый калькулятор | календарный план


 



Программируем на C#, интересные статьи, книги, музыка; Костя Карпов.