- •В.А. Новиков Объектно-ориентированное программирование в с#
- •Минск ● вгкс
- •Лабораторная работа 1 Константы, переменные, выражения. Визуальные элементы: кнопка и текстовое поле
- •Лабораторная работа 2 Операторы управления. Визуальные элементы: маскированное поле и установка цвета
- •Лабораторная работа 3 Ввод – вывод на консоль. Визуализация через файлы. Независимый переключатель и шрифты
- •Лабораторная работа 4 Строки. Модальные формы пользователя
- •Лабораторная работа 5 Массивы. Зависимый переключатель
- •Лабораторная 6 Перечисление. Немодальные формы пользователя
- •Лабораторная 7 Регулярные выражения. Таймер
- •Лабораторная работа 8 Прототипы-данные. Визуальный элемент выпадающий список
- •Лабораторная работа 9 Подпрограммы. Визуальный элемент список. Отработка событий клавиатуры
- •Лабораторная работа 10 Обработка исключительных ситуаций. Визуальный элемент закладка tabControl
- •Лабораторная работа 11 Переопределение операций. Закладка TabStrip
- •Лабораторная работа 12 Работа с файлами. Всплывающая подсказка
- •Лабораторная работа 13 Структуры. Перетаскивание элемента на форме
- •Лабораторная работа 14 Построение графиков через Excel. Объект Drawning
- •Содержание
Лабораторная работа 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();
} }}
Индивидуальное задание.
Во второй программе добавьте кроме шарика е и квадрат с его отслеживанием по правилам шарика.
Содержание отчета.
Представить отлаженные программы по индивидуальному заданию.