Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodicheskoe_posobie_VGKS_po_S.docx
Скачиваний:
49
Добавлен:
13.02.2016
Размер:
433.75 Кб
Скачать

Лабораторная работа 14 Построение графиков через Excel. Объект Drawning

Цель работы.

Изучить формирование программ с использованием взаимодействия с Excel через файлы. Научиться создавать формы с использованием объекта Drawning.

План занятия.

По приведенному листингу программы разработать на Visual Studio программу и отладить ее. Составить программу по индивидуальному заданию.

Порядок выполнения работы.

Создайте форму:

Воспроизведите программный код.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using Microsoft.CSharp.RuntimeBinder;

using System.IO;

namespace WindowsFormsApplication21

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

}

private void button1_Click(object sender, EventArgs e)

{

StreamWriter f = new StreamWriter("b.out");

f.WriteLine("2");

for (int i = 1; i < 21; i++)

{

double y = Math.Cos(i/3.0)*Math.Sin(i*i / 4.0);

double z = Math.Sin(i / 3.0);

string ss = String.Format("{0,4} {1,5:#0.##} {2,5:#0.##}", i, y,z);

ss=ss.Replace(',', '.');

f.WriteLine(ss);

}

f.Close();

string SS;

SS = Directory.GetCurrentDirectory();

System.Diagnostics.Process.Start(SS + "\\asa.xls");

}

}

}

В среде Excel постойте график по столбцам Х(столбец А) и Y(столбец В) и отформатируйте его.

Войдите в среду Visual Basic, щелкните мышью по thisDocument слева на иерархии, в появившееся окно вставьте текст программы на VBA

Sub Workbook_Open()

' MsgBox ("111111111")

Dim dd As Single

Dim bb As Byte, bbb As String

sss = Workbooks(1).Path

sss = sss + "\b.out"

Open sss For Input As #1

Input #1, N

For i = 1 To 100

For j = 1 To N + 1

Cells(i, j) = ""

Next j

Next i

i = 1

Do

Input #1, aa

Cells(i, 1) = aa

For k = 1 To N

Input #1, dd

Cells(i, k + 1) = dd

Next k

i = i + 1

' Loop Until (aa = 88.88) And (dd(1) = 88.88)

Loop Until EOF(1)

Close #1

i = i - 2

ActiveSheet.ChartObjects("Диаграмма 1").Activate

ActiveChart.SeriesCollection(1).Select

bb = 65 + N

bbb = String(1, bb)

st = "A1:" + bbb + CStr(i)

' MsgBox (st)

ActiveChart.SetSourceData Source:=Range(st)

ActiveSheet.ChartObjects("Диаграмма 1").Activate

ActiveChart.Axes(xlValue).MajorGridlines.Select

End Sub

Отладьте программу игры “Бегущий шарик”:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsFormsApplication27

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

this.ResizeRedraw = true;

this.Height = 500;

this.Width = 500;

Point p1 = new Point(30, 30);

p1.X += this.Location.X;

p1.Y += this.Location.Y;

label1.Location = p1;

}

public int x = 120, y = 100, dx = 3, dy = 6, X1 = 50, Y1, KKK = 0, KF = 0, Sr = 5, Sb = 3, Sg = 5, fx=2, fy=3;

public int Rr=10, Gg=100, Bb=50;

public Random RT = new Random(33), RT1 = new Random(25);

Color CC=Color.Brown;

private void Form1_Paint(object sender, PaintEventArgs e)

{

Graphics gg = e.Graphics;

KF++;

if(KF==1)

{

KF = 0;

Rr+= Sr; Gg += Sg; Bb+= Sb;

if (Rr < 0 || Rr>255) { Sr = -Sr; Rr += Sr; }

if (Bb < 0 || Bb>255) { Sb = -Sb; Bb += Sb; }

if (Gg < 0 || Gg>255) { Sg = -Sg; Gg += Sg; }

CC = Color.FromArgb(255,Rr,Gg,Bb);

}

Brush S = new SolidBrush(CC);

Brush S1 = new SolidBrush(Color.Blue);

Pen p = new Pen(Color.Black, 5);

gg.FillEllipse(S, x, y, 50, 70);

gg.DrawEllipse(p, x, y, 50, 70);

Y1 = 430;

gg.FillRectangle(S1, X1, Y1, 100, 10);

int x2 = RT.Next(this.Width);

int y2 = RT1.Next(this.Height);

int Rr1 = RT.Next(255);

int Gg1 = RT.Next(255);

int Bb1 = RT.Next(255);

Color CC1 = Color.FromArgb(255, Rr1, Gg1, Bb1);

Brush S2 = new SolidBrush(CC1);

gg.FillEllipse(S2, x2, y2, 30, 30);

x2 = RT.Next(this.Width);

y2 = RT1.Next(this.Height);

Rr1 = RT.Next(255);

Gg1 = RT.Next(255);

Bb1 = RT.Next(255);

CC1 = Color.FromArgb(255, Rr1, Gg1, Bb1);

S2 = new SolidBrush(CC1);

gg.FillRectangle(S2, x2, y2, 40, 40);

}

private void timer1_Tick(object sender, EventArgs e)

{

if (x > this.Width -70 || x < 0) dx = -dx;

if (y < this.Height - 100&& y > Y1 - 80 && x > X1 - 50 && x < X1 + 90) if(dy>0)dy = -dy;

if (y > this.Height - 100)

{

if (dy > 0) dy = -dy; KKK += 1;

label1.Text = Convert.ToString(KKK);

}

if (y < 0) dy = -dy;

x += dx; y += dy;

this.Left += fx;

Rectangle RRR = Screen.GetBounds(this);

if (this.Right > RRR.Right || this.Left<0) fx = -fx;

this.Top+=fy;

if(this.Bottom>RRR.Bottom || this.Top<0) fy=-fy;

if (this.Height == 500) this.Height =501; else this.Height =500;

if (this.Width == 500) this.Width = 501; else this.Width = 500;

}

private void Form1_KeyDown(object sender, KeyEventArgs e)

{

if (e.KeyCode == Keys.Left) if(X1>0) X1 -= 60;

if (e.KeyCode == Keys.Right) if(X1<this.Width-100) X1 += 60;

if (e.KeyCode == Keys.Escape) this.Close();

} }}

Индивидуальное задание.

Во второй программе добавьте кроме шарика е и квадрат с его отслеживанием по правилам шарика.

Содержание отчета.

Представить отлаженные программы по индивидуальному заданию.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]