基于坐标的形状设计

1. 基于坐标的形状设计

题目描述:以点为基础,组建不同形状,可以创建点,圆,三角形,绘出对应图形。
功能要求:
(1) 创建一个Point类,表示平面上的一个点,有两个数据成员,分别表示点的横、纵坐标。
(2) 创建一个Circle类,表示平面上的一个圆,包含一个Point类的成员,表示圆心,另外,还有一个数据成员表示半径,Circle类包含一个判断给定点是在圆内,圆外,还是圆上的函数成员。
(3) 创建一个Triangle类,表示平面上的一个三角形,包含三个Point类的成员,表示三角形的三边,Triangle类包含一个计算周长的函数成员。
(4) 要注意进行合法性检查,例如,并不是任意三点都可以构成三角形,在对三角形进行初始化时要考虑指定的点能不能构成三角形。
(5) 思考:如果要求构建一个抽象类,怎么设计?

MainForm窗体是实现显示3个例子的功能
第一, 例1显示Points类。
第二, 例2显示Circle类
第三, 例3显示Triangle类。

B2文件夹中放入了Points类,Circle类,Triangle类。

Points类实现建立一个坐标点(x,y)功能。Circle类实现建立一个圆心及半径来画圆的功能。Triangle类实现建立三个点求其边来画三角形。

测试结果

(列出本次课程设计所使用的测试方法,关键功能测试的实现过程,关键代码以及测试结果。)
1.测试方法:利用C#语言中window窗体和类来实现
2.关键功能测试的实现过程
创建1个窗体,实现显示3个例子的功能。创建三个类,分别是Points类,Circle类,Triangle类,分别来实现画点,画圆,画三角形。然后实现在调用主窗体MainForm,实现其功能!

  3.关键代码   
   (1)MainFrom窗体:

{
    public partial class MainForm : Form
    {
       
        public MainForm()
        {
            InitializeComponent();
            this.StartPosition = FormStartPosition.CenterScreen;
            foreach (var v in this.Controls)
            {
                Button button = v as Button;
                button.Click += button_Click;
            }

        }

        void button_Click(object sender, EventArgs e)
        {
            string s = (sender as Button).Text;
            switch (s)
            {
                case "例1":
                    Points p = new Points();
                    p.x = 1; p.y = 1;
                    string z1 = "Point点的横坐标是" + p.getX();
                    string z2 = "Point点的纵坐标是" + p.getY();
                    MessageBox.Show(z1 + "\n" + z2);
                    break;
                case "例2":
                    Points centre = new Points();
                    Circle cc = new Circle();
                    Points p1 = new Points();
                    p1.x = 9; p1.y = 9;
                    centre.x = 2; centre.y = 3;
                    cc.setCircle(3, centre);
                    string z3 = "圆心是:" + "(" + centre.x + "," + centre.y + ")" + "    输入的半径是:" + cc.getR();
                    MessageBox.Show(z3 + "\n" + cc.JudgePlaceOfPointAboutCircle(p1));

                    break;
                case "例3":

                    Points a = new Points();
                    Points b = new Points();
                    Points c = new Points();
                    Triangle tt = new Triangle(a, b, c);
                    a.x = 0; a.y = 0; b.x = 3; b.y = 0; c.x = 0; c.y = 4;
                    string z4 = "这三点分别是:" + "(" + a.x + "," + a.y + ")" + "(" + b.x + "," + b.y + ")" + "(" + c.x + "," + c.y + ")";
                     MessageBox.Show(z4 + "\n" + tt.GetTriangleSideLength(a, b, c));
                    break;
            }

        }
    }
}2)Points类


{
    public  class Points
    { 
	public int x,y; //以下成员为公有

    public int getX()
    {
        return x;
    }

    public void setX(int x)
    {
        this.x = x;
    }

    public int getY()
    {
        return y;
    }

    public void setY(int y)
    {
        this.y = y;
    }
    }
}3)Circle类

{
    
    public class Circle : Points
    {
    	private int R;Points centre; //以下成员为公有
        
		public int getR()//成员函数 
		{
			return this.R;
		}
		public Points Getcentre()//成员函数 
		{
			return this.centre;
		}
       public void setCircle(int R, Points centre)//声明带参数的构造函数 
        {
            this.R = R;
            this.centre = centre;
        }
        public string JudgePlaceOfPointAboutCircle(Points pt)
        {
            double RR = Math.Pow(R, 2);
            Console.WriteLine(RR.ToString());
            double pt2 = Math.Pow((pt.x - this.centre.x), 2) + Math.Pow((pt.y - this.centre.y), 2);
            if (pt2 < RR)
            {
                string s1="在圆里面";
                return s1;               
            }
            else if (pt2 == RR)
            {
                string s2 = "在圆的边上";
                return s2;          
            }
            else
            {
                string s3 = "在圆外面";
                return s3;           
            }          
        }	   
    }    
}4)Triangle类

{
     public class Triangle : Points
    {
        private Points a, b, c;
        public Triangle(Points a, Points b, Points c)
        {
            this.a = a;
            this.b = b;
            this.c = c;
        }
        void setTriangle(Points a, Points b, Points c)
        {
            this.a = a;
            this.b = b;
            this.c = c;
        }
        Points Geta()
        {
            return this.a;
        }
        Points Getb()
        {
            return this.b;
        }
        Points Getc()
        {
            return this.c;
        }
        double lenght1; double lenght2; double lenght3;
        public string GetTriangleSideLength(Points a,Points b,Points c)
        {
            lenght1 = Math.Pow(this.a.x - this.b.x, 2) + Math.Pow(this.a.y - this.b.y, 2);
            lenght2 = Math.Pow(this.b.x - this.c.x, 2) + Math.Pow(this.b.y - this.c.y, 2);
            lenght3 = Math.Pow(this.a.x - this.c.x, 2) + Math.Pow(this.a.y - this.c.y, 2);
            lenght1 = Math.Sqrt(lenght1);
            lenght2 = Math.Sqrt(lenght2);
            lenght3 = Math.Sqrt(lenght3);
            double l;
            l = lenght1 + lenght2 + lenght3;
            
            Console.WriteLine("三角形的周长为:{0}", l);
            if ((lenght1 + lenght2 > lenght3) && (lenght1 + lenght3 > lenght2) && (lenght2 + lenght3 > lenght1))
            {
                return "这三个点能够构成三角形";
               
            }
            else
            {
                return "这三个点不能够构成三角形";
            }          
        } 
      }
 }

4.测试结果

在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值