C语言课程设计报告

时间:2024.4.20

 C语言课程设计

专    业:    自动控制   

班    级:        

姓    名:         

学    号:       

指导教师:      董昱      

兰州交通大学自动化与电气工程学院

2012 7 6

1 基本题目

1.1题目:计算字符串中子串出现的次数。

程序说明:利用输入函数输入任意两个字符串,请你编写程序求出第二个字符串在第一个字符串中出现的次数,即在第一个字符串中有几个第二个字符串。

1.2 程序分析

在主函数中定义两个字符串str,substr,再定义int型的count实现统计第二个字符串在第一个中出现的次数,定义指针*p,*q,*m通过while循环对相同字符串进行查找,最后用if语句:如果*p指向’\0’,则实现循环,输出统计个数count。

流程图见附录1。

1.3程序

#include <stdio.h>

main()

{

       char str[100],substr[10];             //定义两个字符串

       int count;

       char *p,*q,*m;                    //定义三个指针

       printf("enter string:");

       gets(str);

       printf("enter substr:");

       gets(substr);                      //输入两个字符串    

      

       count=0;                         //给count赋初值

       while(*p)

       {

     q=substr;

     m=p;                       //当q指向子串时, m=p;

        while(*q==*m&&*q!='\0')         //执行while循环

        {

               m++;

               q++;

        }

if(*q=='\0')                           //如果q指向\0    统计出count

  count++;

p++;

       }

       printf("count=%d\n",count);              

}

1.4程序的运行结果

上述程序的运行结果如图1所示:

                          图1 基本题目运行结果

   从图1可以看出,输入两个字符串:mhbmhbhgugyumhbmhbmhbmhb。

按回车键:count=2  即子串在第一个字符串中出现了两次。

2 改错题目

2.1题目

#include <stdio.h>

main()

{

 int a; 

    char ch;

    ch="A";

scanf("%d",a);

 printf("%c+%d=%c\n",ch,ch+a);

}

2.2 改正后程序

#include <stdio.h>

main()

{

    int a; 

    char ch;

    ch='A';

    scanf("%d",&a);

    printf("%c+%d=%c\n",ch,a,ch+a);

}

纠错:”A”  ‘A’ 字符用””界定;再输入a时要给其取地址,前面必须加&;输出时应同时输出a,所以后面必须有a。

2.3            程序运行结果

上述程序的运行结果如图2所示:

图2  改错题运行结果

从图2可以看出,输入int的a=32,其结果为 A+32=a,即将大写字母A转换成小写字母a。

3 综合题目

3.1题目

综合题题目为:简单图形设计

3.11 问题描述:

根据本专业特点,设计并绘制与专业相关的图形。

3.12 功能要求:    

        根据1024*768的分辨率,图形位置基本居中;

        根据给定的数据,程序可自动生成图形的初始状态。

3.13 算法提示:

数据结:结构体类型数组;

创建MFC应用程序工程,利用可视化程序设计。

3.14 其它:

对该系统有兴趣的同学可以在实现上述基本功能后,完善系统的其它功能。

3.2 程序分析

实现简单图形绘制,如:绘制直线、圆、填充颜色、添加文字等等。最终绘制出一个完整的车站站场图(分别使用了MoveTo,LineTo,Ellipse,pNewBrush,TextOut,OnDraw等函数)。

基本创建过程流程图见附录2。

其中我负责的内容如下:

一.绘制信号灯及给其填充颜色;

二.查找相关绘制图形的基本函数,并了解其用法;

三.经过老师最后纠正我对整体图形做了修改和完善。

3.3程序中各函数的功能

(1)MoveTo

该函数用于将当前绘图位置移到指定的坐标点处,函数声明如下:

CPoint MoveTo(int x, int y);

CPoint MoveTo(POINT point);

参数x和y,及参数point指定了新的当前绘图位置坐标。返回值是CPoint对象实例,它包含了新的当前绘图位置坐标。CPoint类是MFC中定义的一个点对象的类,它有两个成员变量x和y,用于存放点的坐标位置,类型为int。在绘图函数参数中所有使用POINT结构的地方都可以使用CPoint类。MoveTo函数通常与LineTo函数同时使用,来绘制一条指定了端点的直线段。

(2)LineTo

该函数用于绘制一条从当前绘图位置到指定坐标点的直线段,其函数声明如下:

BOOL LineTo(int x, int y);

BOOL LineTo(POINT point);

参数x和y,及参数point指定了坐标点。这里我们注意到,一条直线段应该有两个端点,可是这里只指定了一个点。这是因为在使用设备环境对象进行绘图的时候有一个当前绘图位置的概念,该位置是逻辑坐标系下的一个坐标点。LineTo函数是在当前绘图位置和指定的点之间绘制一条直线段。初始的当前绘图位置是视图区逻辑坐标系的原点,该原点在默认的映射模式下是在视图区的左上角。所以在我们的第一个例子中,绘制了一条从视图区左上角到(200, 200)点的直线段(如图1.17所示)。LineTo函数在绘制完直线段后,将当前绘图位置移到参数所指定的新的坐标点处。如果画直线段成功,函数返回TRUE,否则返回FALSE。

(3)Ellipse

该函数用于绘制椭圆或者圆,其函数声明如下:

BOOL Ellipse(int x1, int y1, int x2, int y2);

BOOL Ellipse(LPCRECT lpRect);

其中,第一个函数的参数x1和y1指定了要绘制的椭圆或者圆的外接矩形的左上角点坐标,参数x2和y2指定了要绘制的椭圆或者圆的外接矩形的右下角点坐标。第二个函数的参数使用了矩形区域结构来存放外接矩形的左上角和右下角坐标。如果绘图成功,函数返回TRUE,否则返回FALSE。

(4)pNewBrush

创建一个画刷,给绘制的图形填充颜色。

(5)TextOut

该函数用当前选择的字体、背景颜色和正文颜色将一个字符串写到指定位置。

(6)OnDraw

该函数是在视图内绘图最常用的函数。该函数是CView类中的一个虚函数,每次当视图需要重新绘制时,应用程序框架都会自动调用该函数。

3.4源程序  见附录3

   上述程序的运行结果如图3所示:

图3 综合题目运行结果

4.结论

本设计在刚开始时完全没有头绪,经过多次找老师答疑,还有翻阅各种相关资料,慢慢的初步掌握了创建MFC工程的基本方法,但是怎样去绘制图形又是一个难点问题,通过网上资料还是没有掌握,最终还是去向老师答疑,才学会了建立画笔画线,画圆,填充颜色,加文字等,初步设计由于只考虑了怎样去绘制图形,没有做到将本专业的知识运用到其中,导致站场图出现很多问题,需重新修改,但问题是第一次输代码时没有标记清楚,修改时坐标不好找,给进度带来了不少麻烦,于是,我们几个分工完成了代码的修改,最终完成了图形的绘制。通过此次课程设计,是我明白了想要完成设计不但要学好基础知识而且要多动脑,多提问,多答疑。此外,我还得到了一些教训,凡事必须细心,谨慎,否则,会给自己带来很多麻烦。

附录1基本题目流程图

附录 2综合题目流程图

附录 3 综合题源代码

#include "stdafx.h"

#include "车站站场图.h"

#include "车站站场图Doc.h"

#include "车站站场图View.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

IMPLEMENT_DYNCREATE(CMyView, CView)

BEGIN_MESSAGE_MAP(CMyView, CView)

ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)

ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)

END_MESSAGE_MAP()

CMyView::CMyView()

{

}

  CMyView::~CMyView()

{

}

  BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs)

{

  return CView::PreCreateWindow(cs);

}

  void CMyView::OnDraw(CDC* pDC)

{

  CMyDoc* pDoc = GetDocument();

  C=Pen pen(PS_SOLID,2,RGB(9,17,128));

  CPen *pOldPen = pDC->SelectObject(&pen);

/////////////////////////////////////////////////

//绘制车站站场行车线路

ASSERT_VALID(pDoc);

   pDC->MoveTo(250,190);

   pDC->LineTo(300,150);

   pDC->LineTo(700,150);

   pDC->LineTo(750,190);

ASSERT_VALID(pDoc);

   pDC->MoveTo(240,190);

   pDC->LineTo(250,190);

ASSERT_VALID(pDoc);

   pDC->MoveTo(750,190);

   pDC->LineTo(760,190);

ASSERT_VALID(pDoc);

       pDC->MoveTo(150,300);

       pDC->LineTo(950,300);

ASSERT_VALID(pDoc);

   pDC->MoveTo(145,295);

   pDC->LineTo(150,295);

   pDC->LineTo(150,305);

   pDC->LineTo(145,305);

ASSERT_VALID(pDoc);

   pDC->MoveTo(955,295);

   pDC->LineTo(950,295);

   pDC->LineTo(950,305);

   pDC->LineTo(955,305);

ASSERT_VALID(pDoc);

       pDC->MoveTo(0,200);

       pDC->LineTo(1000,200);

ASSERT_VALID(pDoc);

       pDC->MoveTo(0,250);

       pDC->LineTo(1000,250);

ASSERT_VALID(pDoc);

       pDC->MoveTo(50,240);

       pDC->LineTo(100,210);

ASSERT_VALID(pDoc);

       pDC->MoveTo(40,240);

       pDC->LineTo(50,240);

ASSERT_VALID(pDoc);

       pDC->MoveTo(100,210);

       pDC->LineTo(110,210);

ASSERT_VALID(pDoc);

   pDC->MoveTo(140,210);

   pDC->LineTo(190,240);

ASSERT_VALID(pDoc);

       pDC->MoveTo(130,210);

       pDC->LineTo(140,210);

ASSERT_VALID(pDoc);

       pDC->MoveTo(190,240);

       pDC->LineTo(200,240);

ASSERT_VALID(pDoc);

       pDC->MoveTo(810,210);

       pDC->LineTo(860,240);

ASSERT_VALID(pDoc);

       pDC->MoveTo(800,210);

       pDC->LineTo(810,210);

ASSERT_VALID(pDoc);

       pDC->MoveTo(860,240);

       pDC->LineTo(870,240);

ASSERT_VALID(pDoc);

       pDC->MoveTo(900,240);

       pDC->LineTo(950,210);

ASSERT_VALID(pDoc);

       pDC->MoveTo(890,240);

       pDC->LineTo(900,240);

ASSERT_VALID(pDoc);

       pDC->MoveTo(950,210);

       pDC->LineTo(960,210);

ASSERT_VALID(pDoc);

       pDC->MoveTo(880,260);

       pDC->LineTo(930,290);

ASSERT_VALID(pDoc);

       pDC->MoveTo(870,260);

       pDC->LineTo(880,260);

ASSERT_VALID(pDoc);

       pDC->MoveTo(930,290);

       pDC->LineTo(940,290);

ASSERT_VALID(pDoc);

       pDC->MoveTo(250,260);

       pDC->LineTo(300,290);

ASSERT_VALID(pDoc);

       pDC->MoveTo(240,260);

       pDC->LineTo(250,260);

ASSERT_VALID(pDoc);

       pDC->MoveTo(300,290);

       pDC->LineTo(310,290);

ASSERT_VALID(pDoc);

       pDC->MoveTo(700,290);

       pDC->LineTo(750,260);

ASSERT_VALID(pDoc);

       pDC->MoveTo(690,290);

       pDC->LineTo(700,290);

ASSERT_VALID(pDoc);

       pDC->MoveTo(750,260);

       pDC->LineTo(760,260);

ASSERT_VALID(pDoc);

       pDC->MoveTo(140,210);

       pDC->LineTo(190,240);

ASSERT_VALID(pDoc);

       pDC->MoveTo(800,300);

       pDC->LineTo(740,360);

       pDC->LineTo(680,360);

ASSERT_VALID(pDoc);

   pDC->MoveTo(675,355);

   pDC->LineTo(680,355);

   pDC->LineTo(680,365);

   pDC->LineTo(675,365);

      

//绘制车站

ASSERT_VALID(pDoc);

   pDC->MoveTo(480,100);

   pDC >LineTo(530,100);

   pDC->LineTo(530,130);

   pDC->LineTo(480,130);

   pDC->LineTo(480,100);

ASSERT_VALID(pDoc);

   pDC->MoveTo(480,100);

   pDC->LineTo(500,115);

   pDC->LineTo(480,130);

ASSERT_VALID(pDoc);

   pDC->MoveTo(530,100);

   pDC->LineTo(510,115);

   pDC->LineTo(530,130);

ASSERT_VALID(pDoc);

       pDC->MoveTo(500,115);

       pDC->LineTo(510,115);

ASSERT_VALID(pDoc);

       pDC->MoveTo(495,125);

       pDC->LineTo(515,125);

//绘制信号机

CBrush brush1(RGB(255,0,0));

ASSERT_VALID(pDoc);                  //绘制D1信号机

       pDC->MoveTo(130,195);

       pDC->LineTo(130,205);

ASSERT_VALID(pDoc);

       pDC->MoveTo(130,190);    

       pDC->LineTo(130,170);

ASSERT_VALID(pDoc);

       pDC->MoveTo(130,180);

       pDC->LineTo(140,180);

       pDC->Ellipse(140,170,160,190);

ASSERT_VALID(pDoc);

   pDC->MoveTo(160,180);

   pDC->LineTo(165,180);

   pDC->Ellipse(165,170,185,190);

   pDC->Ellipse(185,170,205,190);

ASSERT_VALID(pDoc);                  //绘制X信号机

       pDC->MoveTo(10,205);

       pDC->LineTo(10,195); 

       ASSERT_VALID(pDoc);                 

   pDC->MoveTo(10,190);             

   pDC->LineTo(10,150);

   pDC->Ellipse(10,150,30,170);

ASSERT_VALID(pDoc);

   pDC->MoveTo(30,160);

   pDC->LineTo(35,160);

   pDC->Ellipse(35,150,55,170);

   pDC->Ellipse(55,150,75,170);

   pDC->Ellipse(75,150,95,170);

   pDC->Ellipse(95,150,115,170);

ASSERT_VALID(pDoc);                  //绘制XF信号机

       pDC->MoveTo(10,245);

       pDC->LineTo(10,255);

ASSERT_VALID(pDoc);                   

       pDC->MoveTo(10,260);

       pDC->LineTo(10,300);

ASSERT_VALID(pDoc);

   pDC->MoveTo(10,290);

   pDC->LineTo(20,290);

   pDC->Ellipse(20,280,40,300);

ASSERT_VALID(pDoc);

   pDC->MoveTo(40,290);

   pDC->LineTo(45,290);

   pDC->Ellipse(45,280,65,300);

   pDC->Ellipse(65,280,85,300);

   pDC->Ellipse(85,280,105,300);

   pDC->Ellipse(105,280,125,300);

ASSERT_VALID(pDoc);                    //绘制XI信号机

       pDC->MoveTo(600,170);

       pDC->LineTo(600,190);

ASSERT_VALID(pDoc);                  

       pDC->MoveTo(600,195);

       pDC->LineTo(600,205);

ASSERT_VALID(pDoc);

pDC->MoveTo(600,180);

pDC->LineTo(610,180);

    pDC->Ellipse(610,170,630,190);

    pDC->Ellipse(630,170,650,190);

    pDC->Ellipse(650,170,670,190);

    pDC->Ellipse(670,170,690,190);

ASSERT_VALID(pDoc);                    //绘制D6,D8信号机

       pDC->MoveTo(800,245);

       pDC->LineTo(800,255);

ASSERT_VALID(pDoc);                   

       pDC->MoveTo(800,240);

       pDC->LineTo(800,220);

ASSERT_VALID(pDoc);                   

   pDC->MoveTo(800,260);

   pDC->LineTo(800,280);

   pDC->Ellipse(800,220,820,240);

   pDC->Ellipse(820,220,840,240);

   pDC->Ellipse(780,260,800,280);

   pDC->Ellipse(760,260,780,280);

ASSERT_VALID(pDoc);                    //绘制D2,D4信号机

       pDC->MoveTo(880,195);

       pDC->LineTo(880,205);

ASSERT_VALID(pDoc);                   

       pDC->MoveTo(880,295);

       pDC->LineTo(880,305);

ASSERT_VALID(pDoc);                  

       pDC->MoveTo(880,190);

       pDC->LineTo(880,170);

ASSERT_VALID(pDoc);

   pDC->MoveTo(880,310);

   pDC->LineTo(880,330);

   pDC->Ellipse(860,310,880,330);

   pDC->Ellipse(840,310,860,330);

   pDC->Ellipse(880,170,900,190);

   pDC->Ellipse(900,170,920,190);

ASSERT_VALID(pDoc);                    //绘制D3信号机

       pDC->MoveTo(220,255);

       pDC->LineTo(220,245);

ASSERT_VALID(pDoc);                   

       pDC->MoveTo(220,240);

       pDC->LineTo(220,220);

    pDC->Ellipse(220,220,240,240);

    pDC->Ellipse(240,220,260,240);

ASSERT_VALID(pDoc);                    //绘制D10信号机

       pDC->MoveTo(700,355);

       pDC->LineTo(700,365);

ASSERT_VALID(pDoc);                   

   pDC->MoveTo(700,350);

   pDC->LineTo(700,330);

   pDC->Ellipse(700,330,720,350);

   pDC->Ellipse(720,330,740,350);

ASSERT_VALID(pDoc);                    //绘制SI信号机

       pDC->MoveTo(400,245);

       pDC->LineTo(400,255);

ASSERT_VALID(pDoc);                   

   pDC->MoveTo(400,240);

   pDC->LineTo(400,200);

   pDC->Ellipse(400,220,380,240);

   pDC->Ellipse(400,220,380,200);

   pDC->Ellipse(380,220,360,200);

   pDC->Ellipse(380,220,360,240);

   pDC->Ellipse(360,220,340,240);

ASSERT_VALID(pDoc);                    //绘制S3信号机

       pDC->MoveTo(400,195);

       pDC->LineTo(400,215);

ASSERT_VALID(pDoc);                   

   pDC->MoveTo(400,190);

   pDC->LineTo(400,150);

   pDC->Ellipse(400,170,380,190);

   pDC->Ellipse(400,170,380,150);

   pDC->Ellipse(380,170,360,190);

   pDC->Ellipse(380,170,360,150);

   pDC->Ellipse(360,170,340,190);

ASSERT_VALID(pDoc);                    //绘制SII信号机

       pDC->MoveTo(400,305);

       pDC->LineTo(400,295);

ASSERT_VALID(pDoc);                   

       pDC->MoveTo(400,290);

       pDC->LineTo(400,270);

ASSERT_VALID(pDoc);                   

       pDC->MoveTo(400,280);

   pDC->LineTo(390,280);

   pDC->Ellipse(390,270,370,290);

   pDC->Ellipse(370,270,350,290);

   pDC->Ellipse(350,270,330,290);

   pDC->Ellipse(330,270,310,290);

ASSERT_VALID(pDoc);                    //绘制S4信号机

       pDC->MoveTo(400,295);

       pDC->LineTo(400,305);

ASSERT_VALID(pDoc);                   

   pDC->MoveTo(400,310);

   pDC->LineTo(400,350);

   pDC->Ellipse(400,350,380,330);

   pDC->Ellipse(400,330,380,310);

   pDC->Ellipse(380,350,360,330);

   pDC->Ellipse(380,330,360,310);

   pDC->Ellipse(360,350,340,330);pDC->Ellipse(360,350,340,330);

ASSERT_VALID(pDoc);                    //绘制X3信号机

       pDC->MoveTo(600,145);

       pDC->LineTo(600,155);

ASSERT_VALID(pDoc);                   

   pDC->MoveTo(600,140);

   pDC->LineTo(600,100);

   pDC->Ellipse(600,100,620,120);

   pDC->Ellipse(620,100,640,120);

   pDC->Ellipse(600,120,620,140);

   pDC->Ellipse(620,120,640,140);

   pDC->Ellipse(502,105,507,110);

ASSERT_VALID(pDoc);                    //绘制XII信号机

       pDC->MoveTo(600,245);

       pDC->LineTo(600,255);

ASSERT_VALID(pDoc);                   

   pDC->MoveTo(600,240);

   pDC->LineTo(600,200);

   pDC->Ellipse(600,200,620,220);

   pDC->Ellipse(620,200,640,220);

   pDC->Ellipse(600,220,620,240);

   pDC->Ellipse(620,220,640,240);

   pDC->Ellipse(640,200,660,220);

ASSERT_VALID(pDoc);                    //绘制X4信号机

       pDC->MoveTo(600,305);

       pDC->LineTo(600,295);

ASSERT_VALID(pDoc);                   

   pDC->MoveTo(600,290);

   pDC->LineTo(600,250);

   pDC->Ellipse(600,250,620,270);

   pDC->Ellipse(620,250,640,270);

   pDC->Ellipse(600,270,620,290);

   pDC->Ellipse(620,270,640,290);

   pDC->Ellipse(640,250,660,270);

////////////////////////////////////////////////

//绘制信号灯颜色

//绘制红色信号灯

CBrush* pNewBrush2;

              CBrush* pOldBrush2;

       pNewBrush2=new CBrush;

              pNewBrush2->CreateSolidBrush(RGB(255,0,0));

       pOldBrush2=pDC->SelectObject(pNewBrush2);

       pDC->Ellipse(185,170,205,190);

              pDC->Ellipse(55,150,75,170);

       pDC->Ellipse(185,170,205,190);

       pDC->Ellipse(65,280,85,300);

       pDC->Ellipse(400,170,380,150);

       pDC->Ellipse(400,220,380,200);

       pDC->Ellipse(350,270,330,290);

       pDC->Ellipse(400,330,380,310);

       pDC->Ellipse(600,120,620,140);

       pDC->Ellipse(600,220,620,240);

              pDC->Ellipse(600,270,620,290);

              pDC->Ellipse(650,170,670,190);

              delete pNewBrush2;

//绘制黄色信号灯

CBrush* pNewBrush3;

              CBrush* pOldBrush3;

       pNewBrush3=new CBrush;

              pNewBrush3->CreateSolidBrush(RGB(255,255,0));

       pOldBrush3=pDC->SelectObject(pNewBrush3);

       pDC->Ellipse(45,280,65,300);

       pDC->Ellipse(105,280,125,300);

       pDC->Ellipse(400,170,380,190);

       pDC->Ellipse(400,220,380,240);

       pDC->Ellipse(370,270,350,290);

              pDC->Ellipse(400,350,380,330);

              pDC->Ellipse(600,100,620,120);

              pDC->Ellipse(630,170,650,190);

              pDC->Ellipse(600,200,620,220);

              pDC->Ellipse(600,250,620,270);

              pDC->Ellipse(35,150,55,170);

              pDC->Ellipse(95,150,115,170);

       delete pNewBrush3;

//绘制绿色信号灯

CBrush* pNewBrush4;

              CBrush* pOldBrush4;

       pNewBrush4=new CBrush;

              pNewBrush4->CreateSolidBrush(RGB(0,255,0));

       pOldBrush4=pDC->SelectObject(pNewBrush4);

       pDC->Ellipse(165,170,185,190);

       pDC->Ellipse(85,280,105,300);

              pDC->Ellipse(360,170,340,190);

       pDC->Ellipse(360,220,340,240);

       pDC->Ellipse(330,270,310,290);

       pDC->Ellipse(360,350,340,330);

              pDC->Ellipse(640,100,660,120);

       pDC->Ellipse(670,170,690,190);

              pDC->Ellipse(640,200,660,220);

              pDC->Ellipse(640,250,660,270);

              pDC->Ellipse(75,150,95,170);

              delete pNewBrush4;

//绘制白色信号灯

CBrush* pNewBrush5;

              CBrush* pOldBrush5;

       pNewBrush5=new CBrush;

              pNewBrush5->CreateSolidBrush(RGB(255,255,255));

       pOldBrush5=pDC->SelectObject(pNewBrush5);

       pDC->Ellipse(10,150,30,170);

       pDC->Ellipse(140,170,160,190);

              pDC->Ellipse(20,280,40,300);

       pDC->Ellipse(610,170,630,190);

              pDC->Ellipse(820,220,840,240);

              pDC->Ellipse(760,260,780,280);

              pDC->Ellipse(900,170,920,190);

              pDC->Ellipse(840,310,860,330);

              pDC->Ellipse(380,170,360,150);

              pDC->Ellipse(380,220,360,200);

              pDC->Ellipse(390,270,370,290);

              pDC->Ellipse(380,330,360,310);

              pDC->Ellipse(620,120,640,140);

              pDC->Ellipse(620,220,640,240);

              pDC->Ellipse(620,270,640,290);

              pDC->Ellipse(720,330,740,350);

              pDC->Ellipse(240,220,260,240);

       delete pNewBrush5;

//绘制蓝色信号灯

CBrush* pNewBrush6;

              CBrush* pOldBrush6;

       pNewBrush6=new CBrush;

              pNewBrush6->CreateSolidBrush(RGB(0,0,255));

       pOldBrush6=pDC->SelectObject(pNewBrush6);

       pDC->Ellipse(800,220,820,240);

       pDC->Ellipse(780,260,800,280);

              pDC->Ellipse(880,170,900,190);

       pDC->Ellipse(860,310,880,330);

              pDC->Ellipse(700,330,720,350);

              pDC->Ellipse(220,220,240,240);

       delete pNewBrush6;

//绘制空位信号灯(用黑色表示)

CBrush* pNewBrush7;

              CBrush* pOldBrush7;

       pNewBrush7=new CBrush;

              pNewBrush7->CreateSolidBrush(RGB(0,0,0));

       pOldBrush7=pDC->SelectObject(pNewBrush7);

       pDC->Ellipse(380,170,360,190);

       pDC->Ellipse(380,220,360,200);

              pDC->Ellipse(380,350,360,330);

       pDC->Ellipse(620,100,640,120);

              pDC->Ellipse(620,200,640,220);

              pDC->Ellipse(620,250,640,270);

              pDC->Ellipse(502,105,507,110);

       delete pNewBrush7;

//标注各类名称及输出文本

ASSERT_VALID(pDoc);

CFont Font;                                                                    //定义一个字体对象

//创建字体

CFont *pOldFont = NULL;                                              //定义一个字体指针

           pOldFont = pDC->SelectObject(&Font);                   //选中创建的字体

         pDC->SetTextColor(RGB(0,0,0));

//标注线路名称及信号机编号

       pDC->TextOut(498,135,"3G");

       pDC->TextOut(498,180,"IG");

       pDC->TextOut(498,230,"IIG"); 

       pDC->TextOut(498,300,"4G");

       pDC->TextOut(110,170,"D1");

       pDC->TextOut(10,120,"X");

       pDC->TextOut(0,310,"XF");

       pDC->TextOut(580,180,"XI");

       pDC->TextOut(870,150,"D4"); 

       pDC->TextOut(885,310,"D2");

       pDC->TextOut(780,220,"D8");

       pDC->TextOut(805,260,"D6");

       pDC->TextOut(405,220,"SI");

       pDC->TextOut(405,270,"SII");

       pDC->TextOut(405,170,"S3");

       pDC->TextOut(405,320,"S4");

              pDC->TextOut(580,220,"XII");

       pDC->TextOut(580,120,"X3");

       pDC->TextOut(580,270,"X4");

       pDC->TextOut(670,330,"D10");

              pDC->TextOut(200,230,"D3");

       pDC->TextOut(155,315,"安全线");

       pDC->TextOut(955,315,"牵出线"); 

       pDC->TextOut(680,375,"货物线");

//运行方向箭头标示

       pDC->TextOut(450,140,">");       

       pDC->TextOut(550,140,"<");

       pDC->TextOut(450,190,">"); 

       pDC->TextOut(550,190,"<");

              pDC->TextOut(450,240,">");

       pDC->TextOut(550,240,"<");

       pDC->TextOut(450,290,">"); 

       pDC->TextOut(550,290,"<");

//标注道岔号

       pDC->TextOut(50,220,"1");       

       pDC->TextOut(100,190,"3");

       pDC->TextOut(140,190,"5");

       pDC->TextOut(190,220,"7");

       pDC->TextOut(250,240,"9");

       pDC->TextOut(300,300,"11");

       pDC->TextOut(240,170,"13");

           pDC->TextOut(950,190,"2");

       pDC->TextOut(890,220,"4");

       pDC->TextOut(860,220,"6");

       pDC->TextOut(810,190,"8");

       pDC->TextOut(930,270,"10");

       pDC->TextOut(870,265,"12");

       pDC->TextOut(750,240,"14");

       pDC->TextOut(695,270,"16");

       pDC->TextOut(750,170,"18");

      

//标注车站名

Font.CreatePointFont(300,"黑体",pDC);

pOldFont = pDC->SelectObject(&Font);

           pDC->TextOut(440,40,"兰州站");                  //输入文本信息

           pDC->SelectObject(pOldFont);                                 //恢复之前选中的字体

           Font.DeleteObject();     

}

BOOL CMyView::OnPreparePrinting(CPrintInfo* pInfo)

{

       return DoPreparePrinting(pInfo);

}

void CMyView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

{

}

void CMyView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)

{

      

}

/////////////////////////////////////////////////////////////////////////////

// CMyView diagnostics

#ifdef _DEBUG

void CMyView::AssertValid() const

{

       CView::AssertValid();

}

void CMyView::Dump(CDumpContext& dc) const

{

       CView::Dump(dc);

}

CMyDoc* CMyView::GetDocument() // non-debug version is inline

{

       ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc)));

       return (CMyDoc*)m_pDocument;

}

#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////

// CMyView message handlers                    

更多相关推荐:
《C语言程序设计》课程设计报告(小组)

东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:电子工程学院专业:电子信息工程年级:20##班别:2班指导教师:##组长:##同组成员:##目录一、目的....................…

c语言课程设计报告

C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体设计四详细设计五运行结果六课程设计体会一实验目的1通过课程设计加深对结构化程序设...

C语言课程设计报告

河南理工大学计算机科学与技术学院课程设计报告20XX20XX学年第一学期课程名称C语言课程设计设计题目《小学算术运算测试》学生姓名学号专业班级计算机07-2班指导教师20XX年9月12日目录1.设计任务书21.…

C语言课程设计报告范例

C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的难点及解决办法四小结五附录原程序2一课程设计题目及所涉及知识点一课程设计题目1基...

厦门理工学院11级C语言C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期题目专业班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求1二方案实现与调试221掷骰子游戏222射击游戏323汽车...

C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期专业计算机科学与技术班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求3二方案实现与调试321掷骰子游戏322汽车加...

c语言程序贪吃蛇课程设计报告

山东工商学院信电学院自动111班第一组贪吃蛇课程设计报告高级语言程序设计课程设计报告ExperimentDesigningreporter课程名称高级语言程序设计英文名称CProgramExperimentDe...

C语言课程设计报告书样本

海南大学三亚学院C语言程序设计课程设计贪吃蛇算法专业计算机科学与技术班级计科1001姓名杨凯文题目学号指导老师李春林目录C语言程序设计课程设计11程序要求32程序分析与设计33流程图44源程序清单45调试过程1...

C语言课程设计报告—人事管理系统

人事管理系统前言:现代计算机技术的发展为人们的学习、生活、工作提供了很大的帮助,各行各业都需要特定计算系统的运用,我们需要了解这些系统是怎么样为我们服务以及他们是怎样编辑出来的。我们需要学习C语言编程,根据课堂…

C语言课程设计报告(通讯录)

设计说明书通讯录系统起止日期20xx年01月03日至20xx年01月08日学班学成生姓名级号绩XXX指导教师签字计算机与通信学院20xx年01月08日一课题任务设计一个通讯录管理系统课题的主要任务是1对通讯录信...

C语言课程设计报告 扫雷

程序课程设计基础课程设计扫雷游戏院系计算机科学技术学院计算机科学与技术师范班级师计091设计者徐群杨松徐春辉杨雷刘安然学号3224312504指导教师黄绍义20xx年12月25日1目录1概述311研究的背景及意...

简单计算器C语言课程设计报告书

C语言课程设计报告书题目:简单计算器院系:班级:学号:姓名:一、课程设计目的1.巩固和加深C语言课程的基本知识的理解和掌握2.掌握C语言编程和程序调试的基本技能3.利用C语言进行基本的软件设计4.掌握书写程序设…

c语言程序设计课程设计报告(34篇)