Автор работы: Пользователь скрыл имя, 19 Апреля 2011 в 15:49, курсовая работа
Разработать класс «калькулятор», выполняющий указанные в варианте операции. Программа должна выполнять ввод данных, проверку правильности введенных данных, выдачу сообщений в случае ошибок.
Протокол работы калькулятора записать в файл. Предусмотреть возможность просмотра файла из программы.
Вид данных: квадратные уравнения (в действительных или комплексных числах)
Операции: вычисление корней в форме, заданной пользователем.
Санкт-Петебургский
Государственный
факультет
при ЦНИИ РТК
Курсовая работа
по предмету
объектно-ориентированное
Выполнила студентка группы 2171/2
Мозговая
А.В.
СПб 2010
Разработать класс «калькулятор», выполняющий указанные в варианте операции. Программа должна выполнять ввод данных, проверку правильности введенных данных, выдачу сообщений в случае ошибок.
Протокол работы калькулятора записать в файл. Предусмотреть возможность просмотра файла из программы.
Вид данных: квадратные уравнения (в действительных или комплексных числах)
Операции: вычисление
корней в форме, заданной пользователем.
2.Диаграмма классов
3.Описание
классов
Класс kvyr
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);
};
Класс 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. введите вещественную часть числа 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))
8. введите 1 чтобы продолжить. нажмите 0 или любую клавишу чтобы повторить ввод коэффициентов: 1
9. решение данного уравнения:
x1=-1.5+i(-1.658);
x1=-1.5+i(1.658);
10. нажмите 1-показать
лог-файл; 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()=
{
rx0=-f.getrc()/f.
ix0=0;
rx1=ix1=NULL;
}
if((f.getia()==f.getra()
{
rx0=(f.getrb()*f.
ix0=(f.getic()*f.
rx1=ix1=NULL;
}
if(f.getia()==f.getra()=
{
rx0=rx1=ix0=ix1=