c#课程设计实验报告(画图窗体)

c#课程设计实验报告(画图窗体)
c#课程设计实验报告(画图窗体)

JIANGSU UNIVERSITY

《C# 语言程序设计》

课程设计报告

Windows窗体与界面设计

——简易画图

学院名称:计算机科学与通信工程

专业班级:嵌入式软件1201

学生姓名:陈书杰

学生学号:3120609021

2013年7月5号

目录

一、设计内容………………………………………………………………………………

二、设计说明………………………………………………………………………………

1.总体设计……………………………………………………………………………

2.详细设计……………………………………………………………………………

三、实现与测试……………………………………………………………………………

四、问题及解决方案………………………………………………………………………

五、设计总结………………………………………………………………………………

六、参考文献……………………………………………………………………………………

附录:源代码………………………………………………………………………………

一、设计内容

用c#设计一个简单的画图窗口,能实现画图的一些基本功能

二、设计说明

1.开发环境:vs2008或其他版本。

2.开发语言:C#。

3.开发内容:简易画图窗口。

4.功能描述:

1)可画“三角形、四边形、圆形、直线、弧形”等;

2)可选择画图线条颜色;

3)可画图线条粗细;

4)可按钮清除所画图形;

5)可撤销,重做;

6)可放大缩小图片;

1、总体设计

主界面:

2、详细设计

1.文件

1)新建:新建窗口;

2)打开:打开本地图片;

3)保存:保存图形;

4)退出:关闭窗体

2.编辑

1)撤销

2)重做

3.帮助

1)关于

4.工具栏:如上图所示。

5、状态栏:显示鼠标位置、显示本地时间、作者

三、实现与测试

用Graphics方法在picturebox中新建画板,并背景颜色为白色

private void新建ToolStripMenuItem_Click(object sender, EventArgs e)

{

pictureBox1.Refresh();

Graphics g = pictureBox1.CreateGraphics();

g.Clear(bgcolor);

ig.Clear(bgcolor);

toolStripStatusLabel2.Text = "新建画板";

}

在picturebox中打开图片(首先创建打开文件对话框openfile1 InitialDirectory是文件初始目录的字符串 Filter为文件名筛选器字符串,用于决定打开时出来的类型, FilterIndex 就是打开时的索引值,打开时的类型. RestoreDirectory 表示在关闭对话框时是否还原到当前目录.

If判断是否点击了打开按纽 pictureBox1.Image

=Image.FromFile(openFile1.FileName)

是加载选定的文件.)。

private void打开ToolStripMenuItem_Click(object sender, EventArgs e)

{

OpenFileDialog openPic = new OpenFileDialog();

openPic.InitialDirectory = "C:\\users\\public\\pictures";//打开文件的途径

openPic.Filter = "Image Files(*.jpg,*.png,*.gif,*.bmp)|*.jpg;*.png;*.gif;*.bmp|All

Files(*.*)|*.*";//打开文件的格式

openPic.FilterIndex = 2;

openPic.RestoreDirectory = true;

if (openPic.ShowDialog() == DialogResult.OK)

{

bt = new Bitmap(openPic.FileName);

pictureBox1.Image = bt;

ig = Graphics.FromImage(bt);

}

}

保存文件(SaveFileDialog类表示一个通用对话框,创建子类并调用ShowDialog

方法来显示对话框,允许指定用于保存文件选项.通过对话框能够将pictureBox1控件中的文件存盘)。.

private void保存ToolStripMenuItem_Click(object sender, EventArgs e)

{

SaveFileDialog svImg = new SaveFileDialog();

svImg.InitialDirectory = "C:\\users\\public\\pictures";

svImg.Filter = "BMP文?件t(*.bmp)|*.bmp";

svImg.FilterIndex = 2;

svImg.RestoreDirectory = true;

if (svImg.ShowDialog() == DialogResult.OK)

{

pictureBox1.Image.Save(svImg.FileName);

}

}

退出窗体

private void退出ToolStripMenuItem_Click(object sender, EventArgs e)

{

Application.Exit();

}

picturebox的mousedown事件,新建一个bitmap类,并设置起点坐标。

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)

{

Bitmap mjl = new Bitmap(bt);

history.Push(mjl);

f = true;

x1 = e.X; y1 = e.Y;

if (type != 0)

sbt = new Bitmap(bt);

}

Picturebox的mousemove事件,并在其中编写画笔,橡皮,画三角形,矩形等一些图形的功能,以及在状态栏中显示鼠标坐标

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)

{

int x, y, w, h;

if (toolStrip1.Enabled == true)

{

toolStripStatusLabel3.Text = string.Format("x:{0},y:{1}", e.X, e.Y);//显示鼠标位置}

if (f)

{

switch (type)

{

case 0:

x2 = e.X; y2 = e.Y;

ig.DrawLine(pen, x1, y1, x2, y2);

x1 = x2; y1 = y2;

pictureBox1.Image = bt;

break;

构造三个点,用drawline方法画三条直线构造三角形case 1:

x2 = e.X;y2=e.Y;

x3 = x1 * 2 - x2;y3=y2;

ig.Clear(bgcolor);

ig.DrawImage(sbt, 0, 0);

ig.DrawLine(pen, x1, y1, x2, y2);

ig.DrawLine(pen, x1, y1, x3, y3);

ig.DrawLine(pen, x2, y2, x3, y3);

pictureBox1.Image = bt;

break;

//画矩形

case 2:

x2 = e.X; y2 = e.Y;

ig.Clear(bgcolor);

ig.DrawImage(sbt, 0, 0);

x = x1 < x2 ? x1 : x2; y = y1 < y2 ? y1 : y2;

w = Math.Abs(x1 - x2); h = Math.Abs(y1 - y2);

ig.DrawRectangle(pen, x, y, w, h);

pictureBox1.Image = bt;

break;

//画圆

case 3:

x2 = e.X; y2 = e.Y;

ig.Clear(bgcolor);

ig.DrawImage(sbt, 0, 0);

x = x1 < x2 ? x1 : x2; y = y1 < y2 ? y1 : y2;

w = Math.Abs(x1 - x2); h = Math.Abs(y1 - y2);

ig.DrawEllipse(pen, x, y, w, h);

pictureBox1.Image = bt;

break;

//画直线

case 4:

x2 = e.X; y2 = e.Y;

ig.Clear(bgcolor);

ig.DrawImage(sbt, 0, 0);

ig.DrawLine(pen, x1, y1, x2, y2);

pictureBox1.Image = bt;

break;

//画弧线

case 5:

x2 = e.X; y2 = e.Y;

x3 = x1 * 2 - x2;y3=y2;

x4 = x3;y4=y3*2-y2;

ig.Clear(bgcolor);

ig.DrawImage(sbt, 0, 0);

ig.DrawBezier(pen, x1, y1, x2, y2, x3, y3, x4, y4);

pictureBox1.Image = bt;

break;

将颜色设置为白色,起到橡皮的作用

//橡皮

case 6 :

x2 = e.X; y2 = e.Y;

eraser.Color = bgcolor;

ig.DrawLine(eraser, x1, y1, x2, y2);

x1 = x2; y1 = y2;

pictureBox1.Image = bt;

break;

}

}

}

在picturebox的mouseup事件中确定画板中有已做图像时,撤销和重做图像才可用

private void pictureBox1_MouseUp(object sender, MouseEventArgs e)

{

f = false;

//当stack中包含的元素不为0时撤销和重做图标可用

if (now.Count != 0)

{

撤销ToolStripMenuItem.Enabled = true;

撤销toolStripButton.Enabled = true;

}

if (history.Count != 0)

{

重做ToolStripMenuItem.Enabled = true;

重做toolStripButton.Enabled = true;

}

调用mousemove事件中编写的绘画功能,并当选中图标时,图标的背景颜色会改变

private void toolStripButton1_Click(object sender, EventArgs e)

{

type = 1;

pictureBox1.Cursor = curpen;//鼠标变为铅笔的图案

toolStripButton1.BackColor = https://www.360docs.net/doc/ec18607105.html,wnGreen;

toolStripButton2.BackColor = Color.Transparent;

toolStripButton3.BackColor = Color.Transparent;

toolStripButton4.BackColor = Color.Transparent;

toolStripButton5.BackColor = Color.Transparent;

toolStripButton11.BackColor = Color.Transparent;

toolStripButton9.BackColor = Color.Transparent;

toolStripStatusLabel2.Text = "三¨y角?形?";

}

private void toolStripButton2_Click(object sender, EventArgs e)

{

type = 2;

pictureBox1.Cursor = curpen;

toolStripButton2.BackColor = https://www.360docs.net/doc/ec18607105.html,wnGreen;

toolStripButton1.BackColor = Color.Transparent;

toolStripButton3.BackColor = Color.Transparent;

toolStripButton4.BackColor = Color.Transparent;

toolStripButton5.BackColor = Color.Transparent;

toolStripButton11.BackColor = Color.Transparent;

toolStripButton9.BackColor = Color.Transparent;

toolStripStatusLabel2.Text = "矩形";

}

private void toolStripButton3_Click(object sender, EventArgs e)

{

type = 3;

pictureBox1.Cursor = curpen;

toolStripButton3.BackColor = https://www.360docs.net/doc/ec18607105.html,wnGreen;

toolStripButton2.BackColor = Color.Transparent;

toolStripButton1.BackColor = Color.Transparent;

toolStripButton4.BackColor = Color.Transparent;

toolStripButton5.BackColor = Color.Transparent;

toolStripButton11.BackColor = Color.Transparent;

toolStripButton9.BackColor = Color.Transparent;

toolStripStatusLabel2.Text = "圆";

}

private void toolStripButton4_Click(object sender, EventArgs e) {

type = 4;

pictureBox1.Cursor = curpen;

toolStripButton4.BackColor = https://www.360docs.net/doc/ec18607105.html,wnGreen;

toolStripButton2.BackColor = Color.Transparent;

toolStripButton3.BackColor = Color.Transparent;

toolStripButton1.BackColor = Color.Transparent;

toolStripButton5.BackColor = Color.Transparent;

toolStripButton11.BackColor = Color.Transparent;

toolStripButton9.BackColor = Color.Transparent;

toolStripStatusLabel2.Text = "直线";

}

private void toolStripButton5_Click(object sender, EventArgs e) {

toolStripButton5.BackColor = https://www.360docs.net/doc/ec18607105.html,wnGreen;

toolStripButton2.BackColor = Color.Transparent;

toolStripButton3.BackColor = Color.Transparent;

toolStripButton4.BackColor = Color.Transparent;

toolStripButton1.BackColor = Color.Transparent;

toolStripButton11.BackColor = Color.Transparent;

toolStripButton9.BackColor = Color.Transparent;

toolStripStatusLabel2.Text = "曲线";

type = 5;

pictureBox1.Cursor = curpen;

}

private void toolStripButton11_Click(object sender, EventArgs e) {

type = 0;

pictureBox1.Cursor = curpen;

toolStripButton11.BackColor = https://www.360docs.net/doc/ec18607105.html,wnGreen;

toolStripButton2.BackColor = Color.Transparent;

toolStripButton3.BackColor = Color.Transparent;

toolStripButton4.BackColor = Color.Transparent;

toolStripButton1.BackColor = Color.Transparent;

toolStripButton5.BackColor = Color.Transparent;

toolStripButton9.BackColor = Color.Transparent;

toolStripStatusLabel2.Text = "铅笔;

}

private void toolStripButton9_Click(object sender, EventArgs e)

type = 6;

pictureBox1.Cursor = curearser;//鼠标变为橡皮的图案

toolStripButton9.BackColor = https://www.360docs.net/doc/ec18607105.html,wnGreen;

toolStripButton2.BackColor = Color.Transparent;

toolStripButton3.BackColor = Color.Transparent;

toolStripButton4.BackColor = Color.Transparent;

toolStripButton1.BackColor = Color.Transparent;

toolStripButton11.BackColor = Color.Transparent;

toolStripButton5.BackColor = Color.Transparent;

toolStripStatusLabel2.Text = "橡皮";

}

}

用堆栈方法实现撤销的功能,机上一步

private void撤销ToolStripMenuItem_Click(object sender, EventArgs e) {

Bitmap mjl = new Bitmap(bt);

now.Push(mjl);//将对象移动到stack的顶部

bt = history.Pop();//移除并返回位于Stack顶部的对象

pictureBox1.Image = bt;

ig = Graphics.FromImage(bt);

pictureBox1.Refresh();

//如果stack中的元素为0则撤销图标不可用

if (history.Count == 0)

{

撤销ToolStripMenuItem.Enabled = false;

}

}

用同样的方法实现重做功能,即下一步

private void重做toolStripButton_Click(object sender, EventArgs e) {

Bitmap mjl = new Bitmap(bt);

history.Push(mjl);

bt = now.Pop();

pictureBox1.Image = bt;

ig = Graphics.FromImage(bt);

pictureBox1.Refresh();

if (now.Count == 0)

{

重做toolStripButton.Enabled= false;

}

调用colordialog,用于选择画笔的颜色,并且当选中某个颜色时,颜色选择按钮的背景颜色会变成对应的颜色

private void toolStripButton10_Click(object sender, EventArgs e)

{

if (colorDialog1.ShowDialog() == DialogResult.OK)

{

pen.Color = colorDialog1.Color;

if (colorDialog1.Color != Color.Black)

toolStripButton10.BackColor = colorDialog1.Color;

else

toolStripButton10.BackColor = Color.Silver;

}

}

对于几个常用颜色按钮的设置

private void toolStripButton6_Click(object sender, EventArgs e)

{

pen.Color = Color.Red;

}

private void toolStripButton7_Click(object sender, EventArgs e)

{

pen.Color = Color.Green;

}

private void toolStripButton8_Click(object sender, EventArgs e)

{

pen.Color = Color.Yellow;

}

设置pen的width属性从而改变画笔的宽度

private void 磅ToolStripMenuItem_Click(object sender, EventArgs e)

{

pen.Width = 1;

}

private void磅ToolStripMenuItem1_Click(object sender, EventArgs e)

{

pen.Width= 2;

}

private void磅ToolStripMenuItem2_Click(object sender, EventArgs e)

{

pen.Width = 3;

}

private void磅ToolStripMenuItem3_Click(object sender, EventArgs e)

{

pen.Width = 4;

}

private void磅ToolStripMenuItem4_Click(object sender, EventArgs e)

{

pen.Width= 5;

}

private void toolStripMenuItem2_Click(object sender, EventArgs e)

{

pen.Width = 6;

}

private void toolStripMenuItem3_Click(object sender, EventArgs e)

{

pen.Width = 7;

}

点击关于时跳出对话框显示如下消息

private void关于ToolStripMenuItem_Click(object sender, EventArgs e)

{

MessageBox.Show("作者:陈书杰\n有问题请咨询https://www.360docs.net/doc/ec18607105.html,\n谢谢");

}

当画笔移出画板时,将不显示鼠标位置信息

private void Form1_MouseMove(object sender, MouseEventArgs e)

{

toolStripStatusLabel3.Text = "x: y: ";

}

private void menuStrip1_MouseMove(object sender, MouseEventArgs e)

{

toolStripStatusLabel3.Text = "x: y: ";

}

通过对picturebox的宽高度的改变从而对图片完成缩放功能

private void button1_Click(object sender, EventArgs e)

{

pictureBox1.Width = Convert.ToInt32(pictureBox1.Width / 2);

pictureBox1.Height = Convert.ToInt32(pictureBox1.Height / 2);

}

private void button2_Click(object sender, EventArgs e)

{

pictureBox1.Width = Convert.ToInt32(pictureBox1.Width *2);

pictureBox1.Height = Convert.ToInt32(pictureBox1.Height *2);

}

private void button3_Click(object sender, EventArgs e)

{

pictureBox1.Width = Convert.ToInt32(pictureBox1.Width * 3);

pictureBox1.Height = Convert.ToInt32(pictureBox1.Height * 3);

}

利用timer空间来在状态栏里显示本地时间

private void timer1_Tick(object sender, EventArgs e)

{

toolStripStatusLabel5.Text = "本à?地ì?时o?à间?:

êo"+Convert.ToString(System.DateTime.Now);

}

四、问题及解决方案

1、问题:图片的大小不能随picturebox的大小改变而改变。

解决方案:将picturebox的sizemode属性值改为zoom。

2、问题:一开始的代码

private void toolStripButton10_Click(object sender, EventArgs e)

{

pen.Color = colorDialog1.Color;

if (colorDialog1.Color != Color.Black)

toolStripButton10.BackColor = colorDialog1.Color;

else

toolStripButton10.BackColor = Color.Silver;

}

不能使颜色按钮的背景颜色与所选颜色同步。

解决方案:private void toolStripButton10_Click(object sender, EventArgs e)

{

if (colorDialog1.ShowDialog() == DialogResult.OK)

{

pen.Color = colorDialog1.Color;

if (colorDialog1.Color != Color.Black)

toolStripButton10.BackColor = colorDialog1.Color;

else

toolStripButton10.BackColor = Color.Silver;

}

}

缺少dialogresult的判断,所以背景颜色一直默认为灰色。

3、问题:当撤销到最后一步时,撤销图标任然可以点,但不起作用,重做也类似。

解决方案:缺少这样一段代码if (now.Count != 0)

{

撤销ToolStripMenuItem.Enabled = true;

撤销toolStripButton.Enabled = true;

}

if (history.Count != 0)

{

重做ToolStripMenuItem.Enabled = true;

重做toolStripButton.Enabled = true;

}

判断是否已到最后一步

五、设计总结

通过这两周的实习课,我的的确确学到了不少的东西,无论是从课外书,还是网上资料,或是同学给我的帮助,都大有收获。对于我们大一新生来说,学到的东西本来就不算不多,跟别谈运用了,这样的实习给我们的收获远远是书上所不能给的。只有当真真正正运用的时候,才是查漏补缺的最佳时机,知道自己有哪些不足和知识点的遗漏。并且知识是需要自己去总结的,一本书上的知识是远远不够的,只有从多本书中总结出对自己有用的信息,才能最大的学习到知识。

在这周的实习课中我还总结出了,学习不单单是学习书本上的知识,更重要的是付诸于实践,实践能让我们学到更多更实用的东西,在实践中我能感受到学到的东西不一定会运用,所以,我希望我们能够把实践与学习相结合,让我们能够全面发展。

六、参考文献

1、王军、王晓科《C#开发实战1200例》清华大学出版社 2005年

2、李海涛等《C#3.0从基础到项目实践》化学工业出版社 2001年

3、周峰等《C#典型模块开发》中国铁道出版社 2004年

附录:源代码

using System;

using System.Collections.Generic;

using https://www.360docs.net/doc/ec18607105.html,ponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Drawing.Imaging;

namespace课设picturebox

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private bool f = false;

private Graphics ig;

private int x1, y1, x2, y2, x3, y3, x4, y4;

private Pen pen, eraser;

private Bitmap bt, sbt;

private int type = 0;

private Color pencolor = Color.Black;

private Color bgcolor = Color.White;

private int penwidth =1;

private Cursor curearser, curpen;

private Stack history, now;

private void Form1_Load(object sender, EventArgs e)

{

Graphics g1 = pictureBox1.CreateGraphics();

pen = new Pen(pencolor, penwidth);

eraser = new Pen(bgcolor, 30);

bt = new Bitmap(pictureBox1.Width, pictureBox1.Height, g1);

ig = Graphics.FromImage(bt);

curearser = new Cursor("./eraser.cur");//调用Debug文件夹下的橡皮图标

curpen = new Cursor("./pen.cur");//调用Debug文件夹下的铅笔图标

pictureBox1.Cursor = curpen;//设置picturebox的光标为铅笔

history = new Stack();

now = new Stack();

}

private void退出ToolStripMenuItem_Click(object sender, EventArgs e)

{

Application.Exit();

}

//打开图片格式的文件

private void打开ToolStripMenuItem_Click(object sender, EventArgs e)

{

OpenFileDialog openPic = new OpenFileDialog();

openPic.InitialDirectory = "C:\\users\\public\\pictures";//打开文件的途径

openPic.Filter = "Image Files(*.jpg,*.png,*.gif,*.bmp)|*.jpg;*.png;*.gif;*.bmp|All Files(*.*)|*.*";//打开文件的格式

openPic.FilterIndex = 2;

openPic.RestoreDirectory = true;

if (openPic.ShowDialog() == DialogResult.OK)

{

bt = new Bitmap(openPic.FileName);

pictureBox1.Image = bt;

ig = Graphics.FromImage(bt);

}

}

//新建画板

private void新建ToolStripMenuItem_Click(object sender, EventArgs e)

{

pictureBox1.Refresh();

Graphics g = pictureBox1.CreateGraphics();

g.Clear(bgcolor);

ig.Clear(bgcolor);

toolStripStatusLabel2.Text = “新建画板”;

}

//保存文件

private void保存ToolStripMenuItem_Click(object sender, EventArgs e)

{

SaveFileDialog svImg = new SaveFileDialog();

svImg.InitialDirectory = "C:\\users\\public\\pictures";

svImg.Filter = "BMP文件(*.bmp)|*.bmp";

svImg.FilterIndex = 2;

svImg.RestoreDirectory = true;

if (svImg.ShowDialog() == DialogResult.OK)

{

pictureBox1.Image.Save(svImg.FileName);

}

}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)

{

int x, y, w, h;

if (toolStrip1.Enabled == true)

{

toolStripStatusLabel3.Text = string.Format("x:{0},y:{1}", e.X, e.Y);//显示鼠标位置}

if (f)

{

switch (type)

{

//初始画笔

case 0:

x2 = e.X; y2 = e.Y;

ig.DrawLine(pen, x1, y1, x2, y2);

x1 = x2; y1 = y2;

pictureBox1.Image = bt;

break;

//画三角形

case 1:

x2 = e.X;y2=e.Y;

x3 = x1 * 2 - x2;y3=y2;

ig.Clear(bgcolor);

ig.DrawImage(sbt, 0, 0);

ig.DrawLine(pen, x1, y1, x2, y2);

ig.DrawLine(pen, x1, y1, x3, y3);

ig.DrawLine(pen, x2, y2, x3, y3);

pictureBox1.Image = bt;

break;

//画矩形

case 2:

x2 = e.X; y2 = e.Y;

ig.Clear(bgcolor);

ig.DrawImage(sbt, 0, 0);

x = x1 < x2 ? x1 : x2; y = y1 < y2 ? y1 : y2;

w = Math.Abs(x1 - x2); h = Math.Abs(y1 - y2);

ig.DrawRectangle(pen, x, y, w, h);

pictureBox1.Image = bt;

break;

//画圆

case 3:

x2 = e.X; y2 = e.Y;

ig.Clear(bgcolor);

ig.DrawImage(sbt, 0, 0);

x = x1 < x2 ? x1 : x2; y = y1 < y2 ? y1 : y2;

w = Math.Abs(x1 - x2); h = Math.Abs(y1 - y2);

ig.DrawEllipse(pen, x, y, w, h);

pictureBox1.Image = bt;

break;

//画直线

case 4:

x2 = e.X; y2 = e.Y;

ig.Clear(bgcolor);

ig.DrawImage(sbt, 0, 0);

ig.DrawLine(pen, x1, y1, x2, y2);

pictureBox1.Image = bt;

break;

//画弧线

case 5:

x2 = e.X; y2 = e.Y;

x3 = x1 * 2 - x2;y3=y2;

x4 = x3;y4=y3*2-y2;

ig.Clear(bgcolor);

ig.DrawImage(sbt, 0, 0);

ig.DrawBezier(pen, x1, y1, x2, y2, x3, y3, x4, y4);

pictureBox1.Image = bt;

break;

//橡皮

case 6 :

x2 = e.X; y2 = e.Y;

eraser.Color = bgcolor;

ig.DrawLine(eraser, x1, y1, x2, y2);

x1 = x2; y1 = y2;

pictureBox1.Image = bt;

break;

}

}

}

private void pictureBox1_MouseDown(object sender, MouseEventArgs e) {

Bitmap mjl = new Bitmap(bt);

history.Push(mjl);

f = true;

x1 = e.X; y1 = e.Y;//给坐标变量赋值

if (type != 0)

sbt = new Bitmap(bt);

}

private void pictureBox1_MouseUp(object sender, MouseEventArgs e) {

f = false;

//当stack中包含的元素不为0时撤销和重做图标可用

if (now.Count != 0)

{

撤销ToolStripMenuItem.Enabled = true;

撤销toolStripButton.Enabled = true;

}

if (history.Count != 0)

{

重做ToolStripMenuItem.Enabled = true;

重做toolStripButton.Enabled = true;

}

}

private void toolStripButton1_Click(object sender, EventArgs e) {

//实先画三角形功能,并点击三角形图标后背景颜色为绿色type = 1;

pictureBox1.Cursor = curpen;

toolStripButton1.BackColor = https://www.360docs.net/doc/ec18607105.html,wnGreen;

toolStripButton2.BackColor = Color.Transparent;

toolStripButton3.BackColor = Color.Transparent;

toolStripButton4.BackColor = Color.Transparent;

toolStripButton5.BackColor = Color.Transparent;

toolStripButton11.BackColor = Color.Transparent;

toolStripButton9.BackColor = Color.Transparent;

toolStripStatusLabel2.Text = "三角形”;

}

private void toolStripButton2_Click(object sender, EventArgs e) {

//实现画矩形功能,并点击矩形图标后背景颜色为绿色

type = 2;

pictureBox1.Cursor = curpen;

toolStripButton2.BackColor = https://www.360docs.net/doc/ec18607105.html,wnGreen;

toolStripButton1.BackColor = Color.Transparent;

toolStripButton3.BackColor = Color.Transparent;

toolStripButton4.BackColor = Color.Transparent;

toolStripButton5.BackColor = Color.Transparent;

toolStripButton11.BackColor = Color.Transparent;

toolStripButton9.BackColor = Color.Transparent;

toolStripStatusLabel2.Text = “矩形”;

}

private void toolStripButton3_Click(object sender, EventArgs e) {

//实现画圆功能,并点击圆图标后背景颜色为绿色

type = 3;

pictureBox1.Cursor = curpen;

toolStripButton3.BackColor = https://www.360docs.net/doc/ec18607105.html,wnGreen;

toolStripButton1.BackColor = Color.Transparent;

toolStripButton4.BackColor = Color.Transparent;

toolStripButton5.BackColor = Color.Transparent;

toolStripButton11.BackColor = Color.Transparent;

toolStripButton9.BackColor = Color.Transparent;

toolStripStatusLabel2.Text = "圆";

}

private void toolStripButton4_Click(object sender, EventArgs e)

{

//实现画直线功能,并点击直线图标后背景颜色为绿色

type = 4;

pictureBox1.Cursor = curpen;

toolStripButton4.BackColor = https://www.360docs.net/doc/ec18607105.html,wnGreen;

toolStripButton2.BackColor = Color.Transparent;

toolStripButton3.BackColor = Color.Transparent;

toolStripButton1.BackColor = Color.Transparent;

toolStripButton5.BackColor = Color.Transparent;

toolStripButton11.BackColor = Color.Transparent;

toolStripButton9.BackColor = Color.Transparent;

toolStripStatusLabel2.Text = "直线";

}

private void toolStripButton5_Click(object sender, EventArgs e)

{

//实现画弧线功能,并点击弧线图标后背景颜色为绿色

toolStripButton5.BackColor = https://www.360docs.net/doc/ec18607105.html,wnGreen;

toolStripButton2.BackColor = Color.Transparent;

toolStripButton3.BackColor = Color.Transparent;

toolStripButton4.BackColor = Color.Transparent;

toolStripButton1.BackColor = Color.Transparent;

toolStripButton11.BackColor = Color.Transparent;

toolStripButton9.BackColor = Color.Transparent;

toolStripStatusLabel2.Text = "曲线";

type = 5;

pictureBox1.Cursor = curpen;

}

private void toolStripButton11_Click(object sender, EventArgs e) {

//实现铅笔画任意线功能,并点击铅笔图标后背景颜色为绿色type = 0;

pictureBox1.Cursor = curpen;

toolStripButton11.BackColor = https://www.360docs.net/doc/ec18607105.html,wnGreen;

toolStripButton2.BackColor = Color.Transparent;

《C语言课程设计》实验报告

《C语言课程设计》报告 学院:信息工程学院 专业:信息管理与信息系统设计题目:通讯录程序设计班级:2016级一班 学号:201601510138 姓名:张进步 指导教师:杨菲菲 时间:12.24

学生通讯管理系统 1.1 设计目的 学习如何实现一个复杂的信息管理系统——学生通讯管理系统,能够实现老师对学生基本信息的记录、查询、修改。 通过本次学习,读者能够掌握: (1)如何设计主菜单和子菜单,以及各级菜单的响应与返回操作; (2)如何合理设计不同的结构体对系统中多个实体进行封装; (3)如何合理设计多个结构体数组管理不同实体对应的数据; (4)如何对复杂的函数过程进行拆分,用多个子函数进行封装; (5)进一步熟悉文件读取的相关操作。 1.2需求分析 本章的学生信息管理系统的主要功能面向老师,能够实现对学生信息进行录入、修改、查询。 学生信息方面的功能需求如下。 (1)新增学生信息,包括姓名、籍贯、电话号码(2)、电子邮箱。 (2)修改学生信息,可以选择对某个学生的某个属性值进行修改。 (3)查找学生信息,即输入要查找的学生学号,实现学生信息查询。 (4)显示所有学生信息,并以列表的形式清晰呈现。 1.3总体设计 系统功能结构图如图所示;学生信息管理系统 学生信息管理模块:包括4个子模块,分别是学生信息的录入,学生信息的修改,学生信息的查询,学生信息的浏览。

1.4详细设计与实现 1.4.1 预处理及数据结构 1.头文件 本项目涉及4个头文件,其中#include使用字符串的函数的时候需要添加此头文件,#include #include /*system使用的函数*/ #include /*getchar、getch函数使用的头文件*/ #include /*strcmp比较2个字符串是否一样*/ 2.宏定义 LEN sizeof(struct student)表示struct student的长度。DATA是按格式输出结构体的各项数据,能够方便输出操作,减少代码量。 #define_CRT_SECURE_NO_W ARNINGS #include #include #include #include #define LEN sizeof(struct student) #define FORMAT "%-8d%-15s%-15s%-15d%-15d%-15s\n" #define DATA stu[i].numb,stu[i].name,stu[i].nat,stu[i].num1,stu[i].num2,stu[i].mail 3.结构体 利用一个结构体struct student struct student/*定义学生信息结构体*/ { int numb;/*学号*/ char name[15];/*姓名*/ char nat[16];/*籍贯*/ int num1;/*电话号码1*/ int num2;/*电话号码2*/ char mail[40];/*邮箱*/ }; 4.全局变量 分别利用全局变量结构体数组struct student stu[50];来记录所有学生的基本信息,避免程序运行过程中多次初始化,方便各个式子函数调用。 struct student stu[50];

C++课设:简单画图程序

简单画图程序 1.基本功能描述 本次课程设计的任务是利用计算机和VC开发环境编写一个简单画图程序,该程序的设计指标(即主要功能)有:①用鼠标拖动绘制圆、椭圆、矩形,线等基本图形;②能控制画笔的线宽和颜色;③能对图形进行颜色填充;④在鼠标移动的过程中能实时显示当前绘制的图形。 除了以上几点功能,我有另外添加了工具栏、铅笔、橡皮等功能来使程序更方便地让用户使用,简化了人机交互的过程。 2.设计思路 首先是界面的问题,既然课设的题目是简单画图,那在建立工程的时候就要选择文档结构而不是以前做的基于对话框。可选择单文档结构或多文档结构,但想到画图界面一般只有一个,从简洁的角度考虑,选择单文档结构。而且用户界面在设计的时候要尽可能简单美观,一目了然,对相应功能有图标提示,使用户方便使用。 然后便是画图功能的具体实现。分析课设要求,可以发现功能一要求的的椭圆、矩形、直线可以分别通过Ellipse();、Rectangle();、MoveTo();、LineTo();这四个函数来实现。功能二控制画笔线宽和颜色可以给二者分别关联参数,通过改变线宽参数值来控制线宽,通过调用通用对话框改变颜色参数值来控制颜色。功能三对图形进行颜色填充虽以前未接触过,但查阅资料后发现可以调用ExtFloodFill();并合理设定参数值来实现。功能四的实时显示功能可以通过调用MouseMove();函数来实现。 这些功能需要建立菜单资源来表示各个功能选项,并建立相应的消息响应函数来进行实现。另外,画图程序主要是通过鼠标来进行操作,所以要对鼠标消息的响应及处理函数多下功夫来思考和编写。 至于额外添加的功能,工具栏通过添加工具栏资源和关联相应菜单中画图功能ID实现;铅笔、橡皮的功能则是利用MouseMove();函数,在其中做了一些改动来实现。

java画板课程设计报告

画板 一、需求分析 平时生活中,我们会需要处理一些基本的图像,也有可能需要花一些简单的图像,平时所使用的图形处理工具有PhotoShop、Windows 画图工具等,其中PhotoShop 是一款非常强大的图形处理工具,Windows 画图工具则是一款较为简单的画图工具,功能较为简单,用Windows画图工具,是一种比较简单与具有代表性的画图工具,虽然功能不够强大,但具有大多图片处理程序所必需的基本功能:铅笔画图、各种数学函数图形、填色、取色、橡皮擦等等。这次试验中我做的就是一个仿照windows画板的程序。 功能:1.利用graphics 类来向界面上画上相应内容 2.能够画出直线,矩形,多边形,椭圆形,圆矩形等 3.能够实现橡皮,刷子,喷枪等工具。 4.能够实验颜色的设置 5.能够保存图片和打开图片(当保存名一致时需提示) 6.界面尽量合理,可以仿照windows画板界面。 二、概要设计

流程图 画板软件类图 1.工具接口Tool: 从图中可以看到,工具接口Tool 定义了鼠标动作的四个方法,分别是拖动mouseDrapped()、移动mouseMoved()、松开mouseReleased()、按下

mousePressed()、点击mouseClicked()五个动作,并用String 类型的常量属性来定义工具的类型。这个接口只有一个实现类AbstractTool,而每个工具类 都是去扩展AbstractTool 类,在图中表现为Tool1、Tool2…….ToolN。 2.Tool的实现类AbstractTool AbstractTool 是Tool 的实现类,也是一个抽像类,所以并不能被创建,只能被继承。此类实现Tool 中定义的所有方法,并扩展了其它方法,让其子类继承或者重写。该类中为其他的工具类提供了大部分的实现,那么它的子类就可以不必再做重复的实现,只关心与本类相关的逻辑, 3.AbstractTool的子类 AbstractTool 一共有ArrowTool(箭头)、PencilTool(铅笔)、BrushTool(刷子)、EraserTool(橡皮擦)、LineTool (直线)、RectTool (矩形)、PolygonTool (多边形)、RoundTool (椭圆形)、RoundRectTool(圆矩形)、AtomizerTool (喷墨)、ColorPickedTool(颜色选择)11 个子类, 4. 界面类ImageFrame 这个画图工具的界面的主要放在这个类中实现 5. 业务逻辑类ImageService 除鼠标的画图功能外(画图功能由Tool 的实现类完成),初始化画板、图片的新建打开与保存、各种面板的显示与隐藏、颜色的编辑、整个界面的刷新、菜单等业务逻辑都放在这个类中实现, 对象,它并没有保存一些状态属性。 6 .文件选择类ImageFileChooser ImageFileChooser 类继承了JFleChooser 类,JFleChooser 是Java 提供的一个简单的文件选择机制,我们这里扩展这个类,是为了增加我们自己的文件过滤器。 三、运行环境、开发语言 Window xp 和elipse Java语言

简单画图程序-课程设计

简单画图程序-课程设计 目录 1. 基本功能描 述 ............................................................. 1 2. 设计思路 ................................................................. 1 3. 软件设 计 (3) 3.1 设计步 骤 (3) 3.2 界面设 计 (6) 3.3 关键功能的实 现 ...................................................... 7 4. 结论与心 得体会 ........................................................... 8 5. 参考文 献 ................................................................. 9 6. 思考 题 (9) 7. 附 录 ..................................................................... 9 7.1 调试报 告 (9)

7.2 测试结 果 (10) 7.3 关键源代 码 (1) 武汉理工大学《专业课程设计2(面向对象程序设计)》课程设计说明书 简单画图程序 1. 基本功能描述 1) 在菜单处的有相应的菜单项,可以选择绘制的图形形状,如直线、矩形及椭圆,可 -5可供选择,还可以选择线色以及填充色,通过弹出的颜色对话框选择以选择线宽,有1 需要的颜色,如果不选择线宽、线色以及填充色,则按默认的画笔以及画刷来绘制选择的图形。 2) 选择好图形后,通过鼠标可以绘制出相应的直线,矩形或椭圆,鼠标的按下确定图形的起点,鼠标的拖动则确定了图形的终点,即通过鼠标的拖动来决定图形的大小,鼠标弹起,此图形则绘制完毕。 3) 增添了工具栏,有相应的选择项,可以更方便地实现相应的功能。 2. 设计思路 1) 对需要用到的变量进行初始化。 2) 选择相应的图形之后就响应相应的消息处理函数,给shape赋对应的值。选择不同的线宽,线色与填充色,则改变画笔和画刷的属性。 3) 鼠标的按下响应LButtonDown(),定义起点的坐标,鼠标的拖动响应MouseMove()改变终点的坐标,鼠标的弹起响应LButtonUp(),刷新,得到绘制图形。

华中科技大学计算机学院C语言课设实验报告

华中科技大学计算机科学与技术学院 《C语言程序设计》课程设计 实验报告 题目:科研项目信息管理系统 专业:计算机 班级: 学号: 姓名: 成绩: 指导教师:李开 完成日期:2009年10 月20 日

科研项目信息管理系统一、系统功能结构模块图 二、数据结构设计及其用法说明 typedef struct lakey{ char name[30];/*团队名称*/ int total;/*自然科学基金的科研项目数*/ float dudu;/*经费数*/ struct lakey *next; }*plakey;/*统计3中用到的数据结构*/ typedef struct emmey{ char name[30];/*团队名称*/ int teacher;/*老师人数*/ int harden;/*项目数*/ float bizhi;/*比值*/ struct emmey *next; }*pemmey;/*统计4中用到的数据结构*/ typedef struct kPro{ char code[15];/*项目编号*/ char sort;/*项目种类*/ int aking1; char time[8];/*项目时间*/ float dudu;/*项目经费*/ int aking2;

char beiler[15];/*负责人*/ int aking3; char keynoName[30];/*所在团队名称*/ struct kPro *next; }harden,*pHarden; typedef struct Komo{ int teacher;/*老师人数*/ char name[20];/*院系名称*/ int student;/*学生人数*/ float bizhi;/*二者比值*/ struct Komo *next; }*pKomo;/*统计1中用到的数据结构,统计结果放在这个数据结构中*/ typedef struct kTea{ char name[30];/*团队名称*/ char beiler[15];/*负责人*/ int stuNum;/*学生人数*/ int aking2; int coco;/*老师人数*/ char colName[20];/*所在院系的名称*/ int aking1; struct kTea *next; pHarden child; }keyno,*pKeyno; typedef struct edward{ char name[20];/*院系名称*/ int totalnum;/*项目总数*/ int num973;/*973项目数*/ int num863;/*863项目数*/ float amount;/*经费数*/ struct edward *next; }*pedward;/*统计2中用到的数据结构*/ typedef struct kCol{ char name[20];/*院系名称*/ int aking; char beiler[15];/*院系负责人*/ struct kCol *next; char call[15];/*负责人电话号码*/ pKeyno child; }kekey,*pKekey;

程序设计课程设计实验报告

《程序设计》课程设计姓名: 学号: 班级:软件工程14班 指导教师: 成绩:

1.消除类游戏 【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n,m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m 个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 测试数据二 输出说明: 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 【功能实现】 #include #include<> usingnamespacestd;

{ intm,n,i,j; inttemp; cin>>n>>m; temp=m; m=n; n=temp; int*map=newint[m*n]; int*mark=newint[m*n]; int*tmap=map; int*tmark=mark; intdif=0; ount=0; } p rintf("请输入要输入数的个数\n"); s canf("%d",&n);/*输入要输入数的个数*/ f or(i=0;idata1[j+1].number)

计算机图形学课程设计报告交互式绘图系统

课程设计报告 课程名称计算机图形学 课题名称交互式绘图系统 专业计算机科学与技术 班级 学号 姓名 指导教师刘长松曹燚 2012年10 月9 日

湖南工程学院 课程设计任务书 课程名称计算机图形学 课题交互式绘图系统 专业班级 学生姓名 学号 指导老师刘长松曹燚 审批 任务书下达日期2012年9月15 日任务完成日期2012 年10月9 日

一、设计内容与设计要求 1.设计内容: 用橡皮法实现交互式绘图系统。 2.设计要求: 在屏幕上可以选择不同的命令、来实现不同基本图形的绘制。完成橡皮筋直线,橡皮筋圆,橡皮筋矩形框,多边形裁剪和3阶B样条曲线的作图,且要有比较友好的界面。 3.算法提示: 首先在屏幕上画出菜单和绘图窗口,显示鼠标。点击相应菜单,点击鼠标,移动鼠标,获取鼠标移动相对位置,画出相应图形。 相关变量定义: #define _MOUSE鼠标#define CIRCLE 1圆 #define LINE 2直线#define RECTANGLE 3矩形#include "stdio.h" #include "string.h" #include"graphics.h" #include"math.h" #include union REGS inreg,outreg; struct SREGS sr; 相关函数: void meun(int x,int y,char *str) { setcolor(8); outtextxy(x+5,28,str); setcolor(15); line(x,22,x,40); line(x,22,y,22); setcolor(8); line(x,40,y,40); line(y,22,y,40); }

JAVA课程设计画图软件

package hh; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import java.awt.geom.*; class Point { int x,y; Color col; int tool; int boarder; Point(int x, int y, Color col, int tool, int boarder) { this.x = x; this.y = y; this.col = col; this.tool = tool; this.boarder = boarder; } } /* *BasicStroke *Choice *validate(); **/ class paintboard extends Frame implements ActionListener, MouseMotionListener, MouseListener, ItemListener { int xx0=0,yy0=0; int xx1=0,yy1=0; int type=6; int x = -1, y = -1; int con = 1; //画笔大小 int Econ = 5; //橡皮大小 int toolFlag = 0; //toolFlag:工具标记 //toolFlag工具对应表: //(0--画笔);(1--橡皮);(2--清除);

//(3--直线);(4--圆);(5--矩形); Color c = new Color(0,0,0); //画笔颜色 BasicStroke size = new BasicStroke (con,BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL);//画笔粗细 Point cutflag = new Point(-1, -1, c, 6, con);//截断标志 Vector paintInfo = null;//点信息向量组 int n = 1; // *工具面板--画笔,直线,圆,矩形,多边形,橡皮,清除*/ Panel toolPanel; Button eraser, drLine,drCircle,drRect; Button clear ,pen; Choice ColChoice,SizeChoice,EraserChoice; Button colchooser; Label 颜色,大小B,大小E; paintboard(String s)//构造函数 { super(s); addMouseMotionListener(this); addMouseListener(this); paintInfo = new Vector(); /*各工具按钮及选择项*/ //颜色选择 ColChoice = new Choice(); ColChoice.add("黑色"); ColChoice.add("红色"); ColChoice.add("蓝色"); ColChoice.add("绿色"); ColChoice.addItemListener(this); //画笔大小选择 SizeChoice = new Choice(); SizeChoice.add("1"); SizeChoice.add("3"); SizeChoice.add("5"); SizeChoice.add("7"); SizeChoice.add("9"); SizeChoice.addItemListener(this); //橡皮大小选择 EraserChoice = new Choice();

画图工具可行性报告

Java实训课程设计报告Windows画图工具 专业:计算机科学与技术班级:11092311 姓名:曾思哲 学号:11923110

2014年6月

项目简介

Windows画图工具的设计 第1章需求分析 1.1 项目背景 随着社会的不断发展,人们对画面要求越来越高,对画图工具的软件提出了更高的要求。 画图工具的软件可以让用户更加节省时间,可以从其他文件找出一些图片修改一下就可以使用,比起传统的手工的画图来说,不单单是节省时间而且画面要好的多,保存起来也比较方便,下次在用的时候一找就出来了。在比如画面的修改在这套软件上我们可以直接使用彩色,使画面更直观,而且还可以修改,画图的软件现在应用于各行各业,这款软件特别适合教学用,学生画图也是比不可缺少的。 1.2 需求分析 需求分析是从客户的需求中提取出软件系统能够帮助用户解决的业务问题,通过对用户问题的分析,确定系统的功能需求。这个步骤是对理解需求的升华,直接关系到该系统的质量。分析的根本目的是在开发者和提出需求的人之间建立一种理解和沟通机制,因此,系统的需求分析也应该是开发人员和用户或客户一起完成的。 1.2.1画图板的性能要求 (1) 统一处理的准确性和及时性。 (2) 软件的开放性和可扩充性。 (3) 软件的易用性和易维护性。 1.2.2画图板的功能分析 我们作的是Windows画板,再设计时应该考虑到用户的需要和画图的习惯。所以我们需求分析的主要任务就是来了解用户画图时的习惯。尽量让用户满意。在此我们是先设计一个大概的程序模型让别人试试我的画图板。

第2章概要设计 2.1 软件设计 1.1.1 本软件是设计一套在windows平台下的画图工具,主要用于主要用于画图、打开图画类的页面修改并保存成用户需要的格式。系统采用C/S结构,主要用于客户端,供客户学习、工作使用,本软件提供良好的界面,操作简单。 第3章详细设计 3.1 模块设计 该系统由4个模块构成,分别是工具模块、储存模块、颜色模块、帮助模块。 ●工具模块 画笔(PencilTool)、格式刷(BrushTool)、喷墨工具(AtomizerTool)、橡皮(EraserTool)、直线(LineTool)等主要用于不同情况的使用,在面板上方便用户的使用。 ●储存模块 ①判断当前画板是否保存(MyImage)。 ②设置多种存储的格式供用户选择,增加文件过滤器(addFilter)。 ③存储路径可以设置默认的。 ●颜色模块 通过创建颜色选择器(ColorChooser),来让用户获取颜色,供用户使用。 ●帮助模块 系统帮助文档和软件的声明。 3.2 功能设计 主要功能如下: 1、画笔 PencilTool这个类继承于AbstractTool类,PencilTool类中有个对象Tool 用户通过点击画板上的图标来获取画笔,它的功能让用户用来画出各种图形。 2、格式刷子 BrushTool这个类继承于AbstractTool类,它的功能让用户画出更好的图形。

课程设计常用数学软件

《常用数学软件介绍》课程设计用Matlab求解下列各题,要求:抄题,写出程序、运行结果,根据要求贴上运行图。 1、求矩阵 211 020 413 A - ?? ? = ? ? - ?? 的逆矩阵1 A-及特征值和特征向量。 解: >> clear; A=[-2 1 1;0 2 0;-4 1 3]; inv(A) [V,D]=eig(A) ans = Columns 1 through 2 Column 3 -1.5000e+000 5.0000e-001 5.0000e-001 0 5.0000e-001 0 -2.0000e+000 5.0000e-001 1.0000e+000 V = Columns 1 through 2 Column 3 -7.0711e-001 -2.4254e-001 3.0151e-001 0 0 9.0453e-001 -7.0711e-001 -9.7014e-001 3.0151e-001 D = -1 0 0 0 2 0 0 0 2 2、化方阵 222 254 245 A - ?? ? =- ? ? -- ?? 为对角阵。 解:A=[2 2 -2;2 5 -4;-2 -4 5]; >> diag(diag(A)) ans = 2 0 0 0 5 0 0 0 5 3、已知 422134 305,203 153211 A B - ???? ? ? =-=-- ? ? ? ? - ???? ,在MA TLAB命令窗口中建立A、B矩阵并对

其进行以下操作: (1) 计算矩阵A 的行列式的值det()A (2) 分别计算下列各式:1122,*,.*,,,,T A B A B A B AB A B A A --- 解: (1)、 A=[4 -2 2;-3 0 5;1 5 3]; >> det(A) ans = -158 (2)、 ans = 7 -7 0 -4 0 13 0 11 5 ans = 12 10 24 7 -14 -7 -3 0 -8 ans = 4 -6 8 6 0 -15 2 -5 3 ans = -2.2204e-016 -6.6613e-016 2.0000e+000 -2.7143e+000 -8.0000e+000 -8.1429e+000 2.4286e+000 3.0000e+000 2.2857e+000 ans = 4.8734e-001 4.1139e-001 1.0000e+000 3.6709e-001 - 4.3038e-001 2.7756e-017 -1.0759e-001 2.4684e-001 1.3878e-017 ans = 24 2 4 -7 31 9 -8 13 36 ans = 4 -3 1 -2 0 5 2 5 3 4、在MA TLAB 中分别利用函数rank 、函数inv 求下列矩阵的秩: (1) 16323540,11124A -?? ?=- ? ?--?? 求 rank(A)=?

89C51单片机课程设计之秒表设计实验报告

单片机课程设计报告 单 片 机 秒 表 系 统 课 程 设 计 班级: 课程名称:秒表设计 成员: 实训地点:北校机房 实训时间:6月4日至6月15日

目录 1课程设计的目的和任务 1.1 单片机秒表课程设计的概述 1.2课程设计思路及描述 1.3 课程设计任务和要求 2硬件与软件的设计流程 2.1系统硬件方案设计 2.2所需元器件 3 程序编写流程及课程设计效果 3.1源程序及注释 3.2原理图分析 3.3课程设计效果 4 心得体会

1. 课程设计的目的和任务 1.1单片机秒表课程设计的概述 一、课程设计题目 秒表系统设计——用STC89C51设计一个4位LED数码显示“秒表”,显示时间为000.0~9分59.9秒,每10毫秒自动加一,每1000毫秒自动加一秒。 二、增加功能 增加一个“复位”按键(即清零),一个“暂停”和“开始”按键。 三、课程设计的难点 单片机电子秒表需要解决几个主要问题,一是有关单片机定时器的使用;二是如何实现LED的动态扫描显示;三是如何对键盘输入进行编程;四是如何进行安装调试。 四、课程设计内容提要 本课程利用单片机的定时器/计数器定时和记数的原理,结合集成电路芯片8051、LED数码管以及课程箱上的按键来设计计时器。将软、硬件有机地结合起来,使得系统能够正确地进行计时,数码管能够正确地显示时间。其中本课程设计有三个开关按键:其中key1按键按下去时开始计时,即秒表开始键,key2按键按下去时数码管清零,复位为“00.00”. key3按键按下去时数码管暂停。 五、课程设计的意义 1)通过本次课程设计加深对单片机课程的全面认识复习和掌握,对单片机课程的 应用进一步的了解。 2)掌握定时器、外部中断的设置和编程原理。 3)通过此次课程设计能够将单片机软硬件结合起来,对程序进行编辑,校验。 4)该课程通过单片机的定时器/计数器定时和计数原理,设计简单的计时器系统, 拥有正确的计时、暂停、清零,并同时可以用数码管显示,在现实生活中应用广泛,具有现实意义 1.2课程设计思路及描述

Java画图板课程设计报告

目录 1 引言................................................................................................... 错误!未定义书签。 课程设计选题 .................................................................................. 错误!未定义书签。 课程设计的目的 .............................................................................. 错误!未定义书签。 本选题的设计背景.......................................................................... 错误!未定义书签。 2 需求分析 .............................................................................................. 错误!未定义书签。 功能需求......................................................................................... 错误!未定义书签。 软件开发运行环境........................................................................ 错误!未定义书签。 3 总体设计 .............................................................................................. 错误!未定义书签。 软件结构设计 ................................................................................ 错误!未定义书签。 结构设计................................................................................. 错误!未定义书签。 软件功能模块及主要类设计 ......................................................... 错误!未定义书签。 功能描述 ................................................................................... 错误!未定义书签。 总体结构图............................................................................... 错误!未定义书签。 主要类设计............................................................................... 错误!未定义书签。 4 详细设计与实现.................................................................................. 错误!未定义书签。 主界面............................................................................................. 错误!未定义书签。 主界面功能设计....................................................................... 错误!未定义书签。 主界面设计............................................................................... 错误!未定义书签。 主界面主要代码....................................................................... 错误!未定义书签。 菜单栏............................................................................................. 错误!未定义书签。 菜单栏功能设计....................................................................... 错误!未定义书签。 菜单栏界面设计....................................................................... 错误!未定义书签。 菜单栏主要代码....................................................................... 错误!未定义书签。 工具栏............................................................................................. 错误!未定义书签。 工具栏功能设计....................................................................... 错误!未定义书签。 工具栏界面设计....................................................................... 错误!未定义书签。 工具栏主要代码....................................................................... 错误!未定义书签。

(完整版)C语言课程设计实验报告

目录 目录 (1) 第1章问题描述 (2) 1.1 题目 (2) 1.2基本要求 (2) 第2章需求分析 (2) 1.1软件的基本功能 (2) 1.2输入/输出形式 (2) 1.3测试数据要求 (3) 第3章概要设计 (3) 1.1主程序 (3) 第4章详细设计 (4) 1.1数据类型 (4) 1.2伪码算法 (4) 1.3 程序流程图 (7) 第5章操作 (8) 1.1 进入足球比赛积分排行榜界面 (8) 1.2进入目录 (8) 1.3输入球队比赛信息 (10) 1.4 显示九轮比赛排行榜 (12) 1.5 保存数据 (15) 1.6 由D 盘查看数据 (16) 第6章参考文献 (16)

第1章问题描述 1.1 题目 足球比赛积分排行榜程序 1.2基本要求 (1)10个足球队进行9轮循环赛,胜一场积3分,平一场积1分,输一场积0分。 (2)如果两个队积分相同,进行净胜球的比较,如果净胜球再相同进行总进球的比较。 (3)编写一程序输入每轮比赛的比分,并可以存储。 (4)最后统计出每轮比赛的积分榜。 第2章需求分析 1.1软件的基本功能 (1)输入10个足球队的9轮比赛进球数。 (2)计算10个球队的积分,净胜球,总进球。 (3)对9轮比赛进行排序。 1.2输入/输出形式 由键盘输入,屏幕输出,并且以TXT形式保存。

1.3测试数据要求 输入九轮比赛10个足球队的进球数,由系统统计积分、净胜球、总进球数,并输出。 第3章概要设计 1.1主程序 头文件: #include 说明:main函数的头文件,控制整个程序。 #include 说明:清屏的头文件。 #include 说明:包括了大量的函数原型,调用现成的库函数。 #include 说明:基于char*的字符串处理函数。 全局变量: void input(); 输入数据函数 void sort(); 排序数据函数 void display(); 显示数据函数 void save(); 保存数据函数

Java画图软件设计报告

佛山科学技术学院 《可视化编程技术》课程设计报告 画图软件设计 学生姓名:周敏婷 学号: 2011914123 年级专业:11级教育技术学2班指导老师:容汝佳 学院:教育科学学院 广东★佛山 提交日期:2013年6月

目录 1. 前言 (2) 2.概要设计 (3) 2.1 开发环境 (3) 2.2 画图软件功能 (3) 2.3 界面设计 (3) 2.4 类的框架结构图 (4) 3. 详细设计 (4) 3.1 使用的JAVA类的说明 (4) 3.2 类的主要方法 (5) 3.2.1 颜色选择

器 (5) 3.2.2 控制画笔样式 (5) 3.2.3 选取颜色按钮的监听件类 (6) 3.2.4 设计总体认识 (6) 3.2.5 程序流程图 (7) 4. 运行结果 (7) 5. 测试分析 (8) 5.1 程序运行情况 (8) 6. 源程序 (8) 参考文献 (14) 设计总

结 (14)

摘要:该程序是一个图形界面的简单的java画图软件,具有良好的界面,使用人员能快捷简单地进行操作。该画图软件操作较为简单,只需要一直按着左键就能根据你鼠标移动的方面,画出你想要的图案。你也可以选择你自己想到的颜色和画笔的粗细。而且可以显示你当前的画笔的状态。界面为灰白对称。是一个非常简单的作图工具,让人能轻松上手。 关键字:java,画图类,方法,事件 1 前言 随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的画图工具,可以实现简单的画图作图功能,满足日常基本的工作学习和娱乐需要。 Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。 Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet 所需的应用程序编程接口(API)。Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。还有Java 2 企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。 Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java语言去掉了C++语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图

java简易画图板

华北科技学院 课程设计说明书 班级: 网络B101 设计题目: 画图板软件开发和设计 评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____评阅教师:_____ 目录 1 引言 (1)

1.1课程设计选题 (1) 1.2课程设计的目的 (1) 1.3本选题的设计背景 (1) 2 需求分析 (1) 2.1 功能需求 (1) 2.2 系统的开发运行环境 (2) 3 总体设计 (2) 3.1 系统体系结构设计 (2) 3.2系统功能模块及主要类设计 (3) 4 详细设计与实现 (6) 4.1 菜单栏模块 (6) 4.2 文字字型工具栏模块 (7) 4.3 工具栏模块 (8) 4.4 颜色选择面板模块 (10) 4.5 鼠标状态栏模块 (12) 4.6 画图区域以及整体布局模块 (13) 5 小结和展望 (15) 参考文献 (17) 附录 (17) 使用说明书 (17)

1引言 1.1课程设计选题 《画图板软件开发和设计》 1.2课程设计的目的 使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。 1.3本选题的设计背景 平时生活中,我们会需要处理一些基本的图像,也有可能需要花一些简单的图像,平时所使用的图形处理工具有 PhotoShop、Windows 画图工具等,其中PhotoShop 是一款非常强大的图形处理工具,Windows 画图工具则是一款较为简单的画图工具,功能较为简单,用Windows画图工具,是一种比较简单与具有代表性的画图工具,虽然功能不够强大,但具有大多图片处理程序所必需的基本功能:铅笔画图、各种数学函数图形、填色、取色、橡皮擦等等。所以这次课程设计我做的就是一个仿照Windows画板的程序。 通过画图板软件开发与设计,更深刻地体会java语言较之其他语言在图形用户界面的优势。熟悉java语言中常用的关于画图的各个类的功能和常用的方法(java图形用户界面中的众多函数与类的关系),并在实验过程中加深对java语言的理解与运用。 2需求分析 2.1 功能需求 对于绘图软件,应具备最基本的绘制直线,矩形框,圆形框,椭圆框等最基本功能,此外,要可以对绘制的图形进行修改;将绘制好的图形进行保存,打开以前保存的图形;在需要的时候,可以绘制实心矩形,实心圆形,实心椭圆等常见的几何图形。可

相关文档
最新文档