Разработка программы калькулятора

Автор работы: Пользователь скрыл имя, 19 Апреля 2011 в 15:49, курсовая работа

Краткое описание

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

Содержимое работы - 1 файл

Курсовик по проге.doc

— 75.00 Кб (Скачать файл)

Санкт-Петебургский Государственный Политехнический  Университет

факультет при ЦНИИ РТК 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Курсовая  работа

по предмету объектно-ориентированное программирование 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Выполнила студентка группы 2171/2

Мозговая А.В. 
 
 
 
 
 
 
 
 
 

СПб 2010

    1.Постановка задачи

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

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

Вид данных: квадратные уравнения (в действительных или комплексных числах)

Операции: вычисление корней в форме, заданной пользователем. 
 

   2.Диаграмма  классов

 
 
 
 

     
 
 
 

   3.Описание  классов 

      Класс kvyr

class kvyr

{

private:

          float ra,rb,rc;//вещественные коэффициенты квадратного уравнения (квадратное

                                уравнение имеет вид:

                                ax2+bx+c=0, где а,b,c некоторые коэффициенты, в том числе мнимые) 

       float ia,ib,ic;//мнимые коэффициенты

public:

    kvyr();//пустой конструктор

       void fillk(float fa,float fb,float fc,float ima,float imb,float imc);//заполнение  коэфффициентов

    float getra(void);//извлечение соответствующих величин

    float getrb(void);

    float getrc(void);

    float getia(void);

    float getib(void);

       float getic(void);

}; 

      Класс csolve

class csolve

{

private:

       float rx0,rx1;              //вещественные части корней квадратного уравнения

      float ix0,ix1;            //мнимые части

public:

   csolve();                           //пустой конструктор

   float getrx0(void);              //извлечение соответствующей величины

   float getrx1(void);

   float getix0(void);

   float getix1(void);

   void solve(kvyr f);         //решение заданного квадратного уравнения

   }; 

      Класс cinterface

class cinterface

{

public:

       cinterface(); //пустой конструктор

       void crkvyr(kvyr &f); //создание квадратного уравнения в процессе диалога с  //пользователем с ведением соответствующих записей в

      //лог-файле

       void solur(kvyr f,csolve x); //решение уравнения и вывод результатов с  //соответствующими записями в лог-файл

       void rlog(); //чтение лог-файла

}; 

4.Реализация  компонентных функций 

      Класс kvyr

      Функция fillk(float fa,float fb,float fc,float ima,float imb,float imc); нужна для того, чтобы было невозможно менять параметры напрямую, т. к. это может привести к ошибкам. Данная функция обеспечивает запись коэффициентов квадратного уравнения в соответствующие переменные. По умолчанию все коэффициенты квадратного уравнения имеют значение 0.

       Функции  getra(void); getrb(void); getrc(void); getia(void); getib(void); getic(void); возвращают значение соответствующей величины из коэффициентов уравнения. 

      Класс csolve

       Функция solve(kvyr f); обеспечивает решение квадратного уравнения, коэффициенты которого хранятся в соответствующей переменной класса kvyr, а также их запись в переменные rx0;rx1;ix0;ix1.

       Функции getrx0(void); getrx1(void); getix0(void); getix1(void); возвращают соответствующее значение мнимой или вещественной части того или иного корня. 

5.Реализация  диалога с пользователем 

      При работе с программой пользователь имеет возможность:

1)ввести вещественную  часть коэффициента а;

2)ввести мнимую  часть коэффициента а;

3)ввести вещественную  часть коэффициента b;

4)ввести мнимую  часть коэффициента b;

5)ввести вещественную  часть коэффициента c;

6)ввести мнимую  часть коэффициента c;

7)увидев составленное  уравнение, выведенное на экран, продолжить работу или повторить попытку ввода коэффициентов. В случае продолжения работы, уравнение будет автоматически решено. Результат будет выведен на экран а также записан в лог-файл.

8)просмотреть  лог-файл. 

6.Реализация  основной программы 

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

7.Пример  результатов работы  программы

1. введите коэффициенты a,b и c квадратного уравнения вида:ax^2+bx+c=0

вы можете по отдельности ввести вещественное или  мнимое число

2. введите вещественную  часть числа a: 1

3. введите мнимую  часть числа a: 2

4. введите вещественную  часть числа b: 3

5. введите мнимую часть числа b: 4

5. введите вещественную часть числа b: 5

6. введите мнимую часть числа b: 6

7. уравнение  имеет вид:(1+i(2))x^2+(3+i(4))x+(5+i(6))=0

8. введите 1 чтобы  продолжить. нажмите 0 или любую  клавишу чтобы повторить ввод  коэффициентов: 1

9. решение данного  уравнения:

x1=-1.5+i(-1.658);

x1=-1.5+i(1.658);

10. нажмите 1-показать  лог-файл; 0 или любая другая клавиша-продолжить  работу: 0

11. нажмите 1-прекратить работу; 0 или любая другая клавиша-продолжить решение квадратных уравнений: 1 

8.Программная  документация 

Файлы, входящие в проект:

kvyr.cpp

csolve.cpp

cinterface.cpp

kvyr.h

csolve.h

cinterface.h

main.cpp

Инструкция  пользователю для  работы с проектом:

Можно вводить  любые коэффициенты уравнения, однако, если коэффициент a будет равным 0, то уравнение станет линейным, и один из корней примет значение NULL. Если же, помимо  a, коэффициент b также окажется равным нулю, то оба корня примут значение NULL. 

9.Список используемой литературы

   Б.Страуструп «Введение в язык C++».1995

   10.Листинг  программы 

kvyr.h 

class kvyr

{

private:

      float ra,rb,rc;

      float ia,ib,ic;

public:

      kvyr();

      void fillk(float fa,float fb,float fc,float ima,float imb,float imc);

      float getra(void);

      float getrb(void);

      float getrc(void);

      float getia(void);

      float getib(void);

      float getic(void);

}; 

kvyr.cpp 

kvyr::kvyr()

{

      ra=rb=rc=ia=ib=ic=0;

} 

void kvyr::fillk(float fa,float fb,float fc,float ima,float imb,float imc)

{

      ra=fa;

      rb=fb;

      rc=fc;

      ia=ima;

      ib=imb;

      ic=imc;

}

float kvyr::getra(void)

{

      return(ra);

}

float kvyr::getrb(void)

{

      return(rb);

}

float kvyr::getrc(void)

{

      return(rc);

}

float kvyr::getia(void)

{

      return(ia);

}

float kvyr::getib(void)

{

      return(ib);

}

float kvyr::getic(void)

{

      return(ic);

}

csolve.h 

#include “kvyr.h”

#include <math.h>

class csolve

{

private:

      float rx0,rx1;

      float ix0,ix1;

public:

      csolve();

      float getrx0(void);

      float getrx1(void);

      float getix0(void);

      float getix1(void);

      void solve(kvyr f);

}; 

csolve.cpp 

#include “kvyr.h”

#include <math.h>

csolve::csolve()

{

      rx0=rx1=ix0=ix1=0;

}

float csolve::getrx0(void)

{

      return(rx0);

}

float csolve::getrx1(void)

{

      return(rx1);

}

float csolve::getix0(void)

{

      return(ix0);

}

float csolve::getix1(void)

{

      return(ix1);

} 

void csolve::solve(kvyr f)

{

      float D2r,D2i;

      if(f.getia()==f.getra()==f.getib()==f.getic()==0)

      {

            rx0=-f.getrc()/f.getrb();

            ix0=0;

            rx1=ix1=NULL;

      }

      if((f.getia()==f.getra()==0)&&((f.getib()!=0)||(f.getic()!=0)))

      {

            rx0=(f.getrb()*f.getrc()+f.getib()*f.getic())/(pow(f.getrb(),2)+pow(f.getib(),2));

            ix0=(f.getic()*f.getrb()-f.getrc()*f.getib())/(pow(f.getrb(),2)+pow(f.getib(),2));

            rx1=ix1=NULL;

      }

      if(f.getia()==f.getra()==f.getrb()==f.getib()==0)

      {

            rx0=rx1=ix0=ix1=NULL;

Информация о работе Разработка программы калькулятора