Графический калькулятор

Автор работы: Пользователь скрыл имя, 06 Марта 2013 в 22:33, курсовая работа

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

Программа для построения графиков функций. С помощью элементов графического интерфейса пользователя Windows задается вид функции (sin, ln, полиномиальная), коэффициенты и границы области построения графика. График строится в прямоугольной области, поверх графика строятся координатные оси со шкалой. Линии сглаженные.

Содержание

Задание 3
Построение графика в Microsoft Visual Studio на С# 4
Блок схема. 5
Текст программы. 6
Описание интерфейса 12
Результат выполнения программы 13
Вывод 17
Список источников. 18

Прикрепленные файлы: 1 файл

PnaYaVU_Boychenko_A_M.docx

— 241.18 Кб (Скачать документ)

Министерство образования и  науки Российской Федерации

Федеральное государственное бюджетное  образовательное учреждение

высшего профессионального образования

«ИЖЕВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ  УНИВЕРСИТЕТ

имени М.Т. КАЛАШНИКОВА»

Факультет «Приборостроительный»

Кафедра «Приборы и методы контроля качества»

 

 

 

 

 

 

КУРСОВАЯ  РАБОТА

Графический калькулятор 

Направление 200100 Приборостроение

Дисциплина «ПнаЯВУ»

 

 

 

 

 

 

Автор работы:                              _________________А. М. Бойченко 5-74-1

(подпись,  дата)

Руководитель работы:                                    ________________ доцент С.А. Мурашов

(подпись,  дата)

 

Оценка ____________

 

 

Ижевск 2012

 

Оглавление

Задание 3

Построение графика в Microsoft Visual Studio на С# 4

Блок схема. 5

Текст программы. 6

Описание интерфейса 12

Результат  выполнения  программы 13

Вывод 17

Список источников. 18

 

 

 

Задание

Программа для построения графиков функций. С помощью элементов графического интерфейса пользователя Windows задается вид функции (sin, ln, полиномиальная), коэффициенты и границы области построения графика. График строится в прямоугольной области, поверх графика строятся координатные оси со шкалой. Линии сглаженные.

 

 

Построение  графика в Microsoft Visual Studio на С#

 

Таблица 1 описание переменных

Идентификатор

Тип дпнных

Предполагаемый  диапазон значений

Назначение

numA

string

-39..+38

Получение значений А

numB

string

-32768..+32767

Получение значений В

numC

string

-32768..+32767

Получение значений С

A

double

-32768..+32767

Значение  переменной А

B

double

-32768..+32767

Значение  переменной  В

C

double

-32768..+32767

Значение  переменной  С

j

int

0..65535

Счётчик

k

int

0..65535

Счётчик

gr

Graphics

-32768..+32767

Холст для рисования

MyPen

 

Pen

Color

Рисование

MyPen2

 

Pen

Color

Рисование

А2

float

 

Вычисление

В2

float

 

Вычисление

С2

float

 

Вычисление

xmin

float

 

Задание ограничений

xmax

float

 

Задание ограничений

ymin

float

 

Задание ограничений

ymax

float

 

Задание ограничений

xstep

float

 

шаг

ystep

float

 

шаг

kx

float

 

шаг

ky

float

 

шаг

x

float

 

Вычисление

X2

float

 

Вычисление

y

float

 

Вычисление

y2

float

 

Вычисление

y3

double

 

Вычисление

xx

int

 

Построение  сетки

xx1

int

 

Построение  сетки

kk

int

 

Построение  сетки

np

int

 

Номер пикселя

isNumber

bool

 

Ввод значений


 

Блок схема.

Текст программы.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

 

namespace WindowsFormsApplication9

{

    public partial class f1 : Form

    {

        public f1()

        {

            InitializeComponent();

        }

        private void PointInGrap_Tick(object sender, EventArgs e)

        {

 

        }

        private bool isNumber = false;

 

        private void txtFirst_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)

        {

            isNumber =

              e.KeyCode >= Keys.D0 && e.KeyCode <= Keys.D9 // keyboard - основная клавиатура

              || e.KeyCode >= Keys.NumPad0 && e.KeyCode <= Keys.NumPad9 // keypad - дополнительная клавиатура

              || e.KeyCode == Keys.Back;

        }

        private void txtFirst_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

        {

            TextBox box = (TextBox)sender;// Явное преобразование типов

 

            switch (e.KeyChar) // Переключатель

            {

                case '-': // Разрешаем минус, если он первый

                    if (box.Text.Length == 0)

                        isNumber = true;

                    break;

                case '.':

                    // Точка не должна быть первой

                    if (box.Text.Length == 0)

                        break;

                    // Точка не должна следовать сразу за минусом

                    if (box.Text[0] == '-' && box.Text.Length == 1)

                        break;

                    // Точка должна быть одна

                    if (box.Text.IndexOf('.') == -1)

                        isNumber = true; // Еще не было точек

                    break;

            }

 

            // Запрещаем в текстовом поле лишние символы

            if (!isNumber)

                e.Handled = true;

        }

        static string numA, numB, numC;

        static double A, B, C;

 

        private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)

        {

 

        }

 

        private void comboBox3_SelectedIndexChanged(object sender, EventArgs e)

        {

 

        }

 

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

        {

 

        }

 

        private void checkBox1_CheckedChanged(object sender, EventArgs e)

        {

 

        }

 

        private void checkBox2_CheckedChanged(object sender, EventArgs e)

        {

 

        }

 

        private void checkBox3_CheckedChanged(object sender, EventArgs e)

        {

 

        }

 

        private void textBox1_TextChanged(object sender, EventArgs e)

        {

 

        }

 

        private void textBox2_TextChanged(object sender, EventArgs e)

        {

 

        }

 

        private void textBox3_TextChanged(object sender, EventArgs e)

        {

 

        }     

 

        public void button1_Click(object sender, EventArgs e)

        {

 

            // визуализация графика

            Graphics gr; // Создаём переменную gr типа Graphics (холст для рисования)

            gr = pictureBox1.CreateGraphics(); // Инициализируем созданную переменную

            Pen MyPen;

            Pen MyPen2; // Создаем карандш MyPen типа Pen

            // Создаем карандш MyPen типа Pen

            MyPen = new Pen(Color.Red); // Нашему карандашу присваиваем красный цвет

            MyPen2 = new Pen(Color.Black);

            float B2 = 0, A2 = 0, C2 = 0;

            A = Convert.ToDouble(numA); A2 = (float)A;

            B = Convert.ToDouble(numB);

            B2 = (float)B;

            C = Convert.ToDouble(numC); C2 = (float)C;

            double y3;

            int ninv = 900, np = 0;

            float xmin = -10, xmax = 10, ymin = -10, ymax = 10;

            float xstep = (xmax - xmin) / ninv;

            float ystep = (ymax - ymin) / ninv;

            float kx = pictureBox1.Width / (xmax - xmin), ky = kx;

            float x = xmin, y = 0, x2, y2;

            for (int i = 0; i < ninv; i++)

            {

                x2 = x + xstep;

                y3 = (A2 * x * x + B2 * x + C2) ; y2 = (float)y3;

                gr.DrawLine(MyPen, kx * x + 300, pictureBox1.Height / 2 - ky * y, kx * x2 + 300, pictureBox1.Height / 2 - ky * y2);            

                x = x2;

                y = y2;

            }

            int xx = 0, yy = 0, xx1 = 0, yy1 = 0, kk;

            kk = (int)ky;

            for (int n = -300; n < 600; n += kk)

            {

                xx1 = xx + 900;

                yy1 = 0;

                gr.DrawLine(MyPen2, xx, pictureBox1.Height / 2 - n + 6, xx1, pictureBox1.Height / 2 - n + 6);

            }

            for (int n = -500; n < 900; n += kk)

            {

                xx1 = 0;

                yy1 = yy + 900;

                gr.DrawLine(MyPen2, n + 18, 0, n + 18, pictureBox1.Height);

            }

            gr.DrawLine(MyPen, 300, pictureBox1.Height - 0, 300, pictureBox1.Height - 500);

            gr.DrawLine(MyPen, 0, pictureBox1.Height / 2, 900, pictureBox1.Height / 2);

            gr.DrawString("Y", new Font("Arial", 22), new SolidBrush(Color.Green), 300, 10);

            gr.DrawString("X", new Font("Arial", 22), new SolidBrush(Color.Green), 650, 125);

 

 

            for (int n = -1000; n < 1000; n += kk)

            {

                x = xmin++ - 28;

                x2 = x++;

                np = n;

                gr.DrawString(" " + Math.Round(x2, 1).ToString(), new Font("Arial", 10), new SolidBrush(Color.Green), np, pictureBox1.Height / 2 + 5);

                x = x2++;

            }

            for (int n = -1000; n < 1000; n += kk)

            {

                x = ymin++ - 19;

                x2 = x++;

                np = n;

                gr.DrawString(" " + Math.Round(x2, 1).ToString(), new Font("Arial", 10), new SolidBrush(Color.Green), 292, pictureBox1.Height / 2 - np - 10);

                x = x2++;

            }

        }

        private void kk_01_Load(object sender, EventArgs e)

        {

 

        }

 

        private void textA_TextChanged(object sender, EventArgs e)

        {

            numA = this.textA.Text;

        }

 

        private void textB_TextChanged(object sender, EventArgs e)

        {

            numB = this.textB.Text;

        }

 

        private void textC_TextChanged(object sender, EventArgs e)

        {

            numC = this.textC.Text;

        }

 

        private void pictureBox1_Click(object sender, EventArgs e)

        {

 

        }

 

        private void button2_Click(object sender, EventArgs e)

        {

            Graphics gr; // Создаём переменную gr типа Graphics (холст для рисования)

            gr = pictureBox1.CreateGraphics(); // Инициализируем созданную переменную

            Pen MyPen;

            Pen MyPen2; // Создаем карандш MyPen типа Pen

            // Создаем карандш MyPen типа Pen

            MyPen = new Pen(Color.Red); // Нашему карандашу присваиваем красный цвет

            MyPen2 = new Pen(Color.Black);

            float B2 = 0, A2 = 0, C2 = 0;

            A = Convert.ToDouble(numA); A2 = (float)A;

            B = Convert.ToDouble(numB);

            B2 = (float)B;

            C = Convert.ToDouble(numC); C2 = (float)C;

            double y3;

            int ninv = 900, np = 0;

            float xmin = -10, xmax = 10, ymin = -10, ymax = 10;

            float xstep = (xmax - xmin) / ninv;

            float ystep = (ymax - ymin) / ninv;

            float kx = pictureBox1.Width / (xmax - xmin), ky = kx;

            float x = xmin, y = 0, x2, y2;

 

            for (int i = 0; i < ninv; i++)

            {

                x2 = x + xstep;

                y3 = A * Math.Sin(B2 * x + C2); y2 = (float)y3;

 

                gr.DrawLine(MyPen, kx * x + 300, pictureBox1.Height / 2 - ky * y, kx * x2 + 300, pictureBox1.Height / 2 - ky * y2);

                x = x2;

                y = y2;

 

            }

            int xx = 0, xx1 = 0,  kk;

            kk = (int)ky;

            for (int n = -300; n < 600; n += kk)

            {

                xx1 = xx + 900;

              

                gr.DrawLine(MyPen2, xx, pictureBox1.Height / 2 - n + 6, xx1, pictureBox1.Height / 2 - n + 6);

 

            }

            for (int n = -500; n < 900; n += kk)

            {

               

                gr.DrawLine(MyPen2, n + 18, 0, n + 18, pictureBox1.Height);

 

            }

 

            gr.DrawLine(MyPen, 300, pictureBox1.Height - 0, 300, pictureBox1.Height - 500);

            gr.DrawLine(MyPen, 0, pictureBox1.Height / 2, 900, pictureBox1.Height / 2);

            gr.DrawString("Y", new Font("Arial", 22), new SolidBrush(Color.Green), 300, 10);

            gr.DrawString("X", new Font("Arial", 22), new SolidBrush(Color.Green), 650, 125);

            for (int n = -1000; n < 1000; n += kk)

            {

                x = xmin++ - 28;

                x2 = x++;

                np = n;

                gr.DrawString(" " + Math.Round(x2, 1).ToString(), new Font("Arial", 10), new SolidBrush(Color.Green), np, pictureBox1.Height / 2 + 5);

                x = x2++;

            }

            for (int n = -1000; n < 1000; n += kk)

            {

                x = ymin++ - 19;

                x2 = x++;

                np = n;

                gr.DrawString(" " + Math.Round(x2, 1).ToString(), new Font("Arial", 10), new SolidBrush(Color.Green), 292, pictureBox1.Height / 2 - np - 10);

                x = x2++;

            }

 

        }

 

        private void button4_Click(object sender, EventArgs e)

        {

            Graphics gr; // Создаём переменную gr типа Graphics (холст для рисования)

            gr = pictureBox1.CreateGraphics();

            gr.Clear(SystemColors.Window);

        }

 

        private void button3_Click_1(object sender, EventArgs e)

        {

            Graphics gr; // Создаём переменную gr типа Graphics (холст для рисования)

            gr = pictureBox1.CreateGraphics(); // Инициализируем созданную переменную

            Pen MyPen;

            Pen MyPen2; // Создаем карандш MyPen типа Pen

            // Создаем карандш MyPen типа Pen

            MyPen = new Pen(Color.Red); // Нашему карандашу присваиваем красный цвет

            MyPen2 = new Pen(Color.Black);

            float B2 = 0, A2 = 0, C2 = 0;

            A = Convert.ToDouble(numA); A2 = (float)A;

            B = Convert.ToDouble(numB);

            B2 = (float)B;

            C = Convert.ToDouble(numC); C2 = (float)C;

            double y3;

            int ninv = 600, np = 0;

            float xmin = -10, xmax = 10, ymin = -10, ymax = 10;

            float xstep = (xmax - xmin) / ninv;

            float ystep = (ymax - ymin) / ninv;

            float kx = pictureBox1.Width / (xmax - xmin), ky = kx;

            float x = xmin, y = 0, x2=0, y2=0;

 

            for (int i = 0; i < ninv; i++)

            {

                x2 = x + xstep;

                if ((B * x + C) > 0)

                {

                    y3 = A * Math.Log(B * x + C);

 

                    y2 = (float)y3;

                    gr.DrawLine(MyPen, kx * x + 300, pictureBox1.Height / 2 - ky * y, kx * x2 + 300, pictureBox1.Height / 2 - ky * y2);                   

                    } x = x2;

                    y = y2;              

 

            }

            int xx = 0, yy = 0, xx1 = 0, yy1 = 0, kk;

            kk = (int)ky;

            for (int n = -300; n < 600; n += kk)

            {

                xx1 = xx + 900;

                yy1 = 0;

                gr.DrawLine(MyPen2, xx, pictureBox1.Height / 2 - n + 6, xx1, pictureBox1.Height / 2 - n + 6);

 

            }

            for (int n = -500; n < 900; n += kk)

            {

                xx1 = 0;

                yy1 = yy + 900;

 

 

                gr.DrawLine(MyPen2, n + 18, 0, n + 18, pictureBox1.Height);

 

            }

 

            gr.DrawLine(MyPen, 300, pictureBox1.Height - 0, 300, pictureBox1.Height - 500);

            gr.DrawLine(MyPen, 0, pictureBox1.Height / 2, 900, pictureBox1.Height / 2);

            gr.DrawString("Y", new Font("Arial", 22), new SolidBrush(Color.Green), 300, 10);

            gr.DrawString("X", new Font("Arial", 22), new SolidBrush(Color.Green), 650, 125);

 

 

            for (int n = -1000; n < 1000; n += kk)

            {

                x = xmin++ - 28;

                x2 = x++;

 

                np = n;

 

                gr.DrawString(" " + Math.Round(x2, 1).ToString(), new Font("Arial", 10), new SolidBrush(Color.Green), np, pictureBox1.Height / 2 + 5);

                x = x2++;

            }

            for (int n = -1000; n < 1000; n += kk)

            {

                x = ymin++ - 19;

                x2 = x++;

                np = n;

                gr.DrawString(" " + Math.Round(x2, 1).ToString(), new Font("Arial", 10), new SolidBrush(Color.Green), 292, pictureBox1.Height / 2 - np - 10);

Информация о работе Графический калькулятор