项目九 绘制中国象棋棋盘[模板].doc_第1页
项目九 绘制中国象棋棋盘[模板].doc_第2页
项目九 绘制中国象棋棋盘[模板].doc_第3页
项目九 绘制中国象棋棋盘[模板].doc_第4页
项目九 绘制中国象棋棋盘[模板].doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目十二: 制作XML通讯录(补).doc随着Internet的不断发展,网络数据的传输日趋重要,本地数据存储日趋复杂,一种面向对象的数据存储文件随之产生,它就是XML。小顾决定用C#代码来制作访问XML文件的通讯录。【项目描述】(该项目的任务及目的)制作XML通讯录主要有五个任务: 1 设计关于学生通讯录项目的XML文件2 结合本项目的要求设计Student类3 绘制通讯录窗体界面4 在窗体中显示XMl文件内容5 将修改过后的信息保存至XML文件【项目需求】(完成该项目所需要的设备及环境)建议配置:2.2 GHz 或速度更快的 CPU、1GB或更大容量的 RAM、1280x1024 显示器、7200 RPM 或更高转速的硬盘;操作系统:Windows XP 、Vista或2000以上;开发软件:Visual Studio 2005/2008 中文版(含MSDN);提供制作XML通讯录的画面作为参照(如图12-1所示)。图12-1 制作XML通讯录【相关知识点】(完成该项目所应该掌握的知识点)建议课时:6节课相关知识:XML文件的结构及制作;DataGridView和BindingNavigator与XML文件的绑定;使用XmlReader类读取XML文件;使用XmlWriter类写入XML文件。【项目分析】(完成该项目所需要的主要步骤,与任务有关)制作XML通讯录主要的步骤:1设计关于学生通讯录项目的XML文件2结合本项目的要求设计Student类3绘制窗体界面4设计加载窗体时显示学生通讯录的功能模块5. 设计将修改过后的信息保存至XML文件的功能模块任务一 设计关于学生通讯录项目的XML文件【任务描述】(该任务的内容和目的)结合XML文件的编写格式,设计学生通讯录文件XMLsTXL.xml。【任务实施】(完成此任务所需要的主要步骤)1. 新建一个Windows项目,在模板中选择“Windows应用程序”,将项目名称设为“TXL”,位置设为“D:XMLExample”(或其它位置),如图12-2所示。图12-2 新建项目设置界面2. 为项目添加一个新项“XML文件”,取名为XMLsTXL.xml,如图12-3所示。图12-3 添加新项设置界面3. 在此文件中,按格式要求,输入如下通讯录信息。 张三 21 男5435455 李四 20 女123647854 华平 20 女857895435 强晴晴 19 女7485369523 提示/备注XML文件同样可以按要求在“记事本”中书写,注意保存时,将“编码”设置为“UTF-8”,即可。【理论知识】(对此任务所涉及到的关键知识点的讲解)一、XML概述1 XML文档XML(Extensible Markup Language,可扩展标记语言)是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。XML也是元标记语言,即定义了用于定于其他与特定领域有关的、语义的、结构化的标记语言的句法语言,简单来说是一种数据描述语言。HTML(Hypertext Markup Language,超文本标识语言)或格式化的程序语言,只是定义一套固定的标记,用来描述一定数目的元素,如果标记语言中没有多需的标记,用户也没有办法了。XML解决了这个缺陷,它是一种元标记语言。XML与HTML的主要区别如下:l XML用来描述数据,而HTML用来显示数据。l XML中的标签是未预定义的,在使用时需要自定义,而HTML里的标签是预定义的。在具体的应用程序中,XML要以XML文档的形式应用,其后缀为.xml,包含在System.Xml命名空间中。2XML元素XML元素用于封装数据,是XML文档的基本单位,它由元素的名称和属性值组成。XML元素的基本结构由开始标记、数据内容和结束标记组成,因此通常XML元素表示从该元素的开始标记到结束标记之间的部分内容。XML元素的命名规则如下:l 元素的名称可以包含字母、数字和其他字符,但不能包含空格和“:”。l 元素的名称要以字母或下划线开头。l 元素的名称不能以数字、标点符号和XML(或xml、Xml、xMl等)开头。注:XML元素的字母是区分大小写的,而且元素的嵌套必须规整严格。3. XML属性XML属性用于描述数据的详细信息,属性之中只能包含简单数据类型。通常应该将要存储的大量数据放置于元素的内容中,将元素不同的特性数据以及非必须显示的资料放置在元素的属性中。4XML文档结构XML文档由DTD和XML文本组成,所谓DTD(Document Type Definitions,文档类型定义),简单来说就是一组标签的语法规则,类似于数据库表,表明XML文本的组成形式。1) 声明XML文档的声明负责为XML文档匹配合适的解析器,其语法格式为:其中各元素的含义如下:l :表示处理指令的开始和结束。l Version:所使用的XML版本,默认为1.0。l Standalone:表示是否使用外部声明DTD,值为no或yes。l Encoding:字符编码,通常值为UTF-8、UTF-16、GB2312或GBK。2) 根元素一个文档中只有一个根元素,其语法格式如下:根元素内容3) XML代码XML的代码主要由元素和属性构成,创建时需要注意满足元素和属性各自的命名规范。4) 注释注释的语法形式如下:需要注意如下事项:l 注释文本中不能包含“-”和“-”字符。l 注释不能放在标签“”中。l 注释不能放在元素声明中,也不能放在XML声明之前。5) 实体引用在XML中,一些字符拥有特殊的含义。如果把字符“”放在XML元素中,会放在错误,这是因为解析器会把它当作新元素的开始。例如:张三6) PCDATAPCDATA(Parsed Character Data)即被解析的字符数据,可把字符数据视为XML元素的开始标签与结束标签之间的文本。PCDATA是会被解析器解析的文本。7) CDATACDATA(Character Data)即字符数据,是不会被解析器解析的文本,类似于C#中的符号。8) 处理指令处理指令以“”结束。紧跟在“?”之后的是一个目标应用程序,然后是指令实际内容。【知识拓展】(可选,可以放在任何位置)请按F1键,查一下MSDN上关于XML文档的信息,将与其相关的详细内容记下来。任务二 结合本项目的要求设计Student类【任务描述】(该任务的内容和目的)为了便于将每个通讯录中的学生信息读取和存储,在此结合XML文档中所涉及到的项设计一个Student类。【任务实施】(完成此任务所需要的主要步骤)1. 为项目添加一个新项“类”,取名为StudentTXL.cs。2. 结合XML文档设计Student类,具体实现如下所示。namespace TXL public class Student public string Name get; set; public int Age get; set; public string Sex get; set; public string TelNo get; set; public string QQ get; set; 提示/备注Student类中的各个属性的类型,可以根据实际情况自己设置,当然,随后的程序设计调用时,也将会随之变化。任务三 绘制窗体界面【任务描述】(该任务的内容和目的)界面中,使用DataGridView控件显示XML中的数据,使用BindingNavigator控件浏览数据。【任务实施】(完成此任务所需要的主要步骤)3. 为项目添加一个新项“类”,取名为StudentTXL.cs。图3-2 新建项目设置界面2.设置该窗体属性,如表3-1所示。属性取值/说明NameFormMain /窗体类名称FormBorderStyleFixedSingle /边框大小固定MaximizeBoxFalse /无最大化框MinimizeBoxFalse /无最小化框Size460,530 /窗体尺寸大小(宽,高)StartPositionCenterScreen /屏幕正中Text中国象棋棋盘 /窗口标题表3-1 窗体属性属性窗口,如图3-3所示。图3-3 属性窗口3.将图片文件“bg.jpg”拷贝到“E:CSharpAppExamplesChinese chessboardChinese chessboardbinDebug”下,在程序中将此木纹(图3-4所示)绘制在棋盘上。图3-4 图片文件“bg.jpg”的木纹效果4.在FormMain窗体的Paint事件处理程序的相关代码如下: private void FormMain_Paint(object sender, PaintEventArgs e) Graphics g = e.Graphics; / 获取一个Graphics对象 g.Clear(Color.Coral); /用珊瑚色清除窗体 g.DrawImage(Image.FromFile(Application.StartupPath + + bg.jpg), 10, 10, 430, 480); /绘制背景图 g.DrawRectangle(new Pen(Color.Black, 3), new Rectangle(new Point(20, 20), new Size(410, 460); /绘制框图 g.Dispose(); /释放对象 提示/备注除了用Paint事件,请你试一试用Image对象来实现。运行程序效果如图3-5所示。图3-5 运行结果提示/备注请你指出点P1(50,100)、点P2(110,100) 、点P3(100,50)和点P4(100,110)在屏幕上的大致位置。画图时必须要有空间感,通过训练你能有意识地提高自己。【理论知识】(对此任务所涉及到的关键知识点的讲解)一、GDI+的概念1理解GDI+ GDI+:Graphics Device Interface Plus也就是图形设备接口,提供了各种丰富的图形图像处理功能,本质上它是一个库,它提供了一个接口,此接口允许程序员编写与打印机、监视器或文件等图形设备进行交互的windows和web图形应用程序。GDI+其实是由C+编写的一个类,供我们调用。在程序中使用GDI+需要添加相应的命名空间,主要由:System.Drawing:基本的GDI+功能的定义,它提供了Graphics类,这个类提供了最重要的绘图与填充方法。还封装了矩形,点,画笔和钢笔等GDI图元类。 System.Drawing.Drawing2D名称空间。高级二维和矢量图形应用程序的功能。System.Drawing.Imaging:基本图像处理功能。2GDI+基本应用首先要绘图,要有绘图的画布,画布可以是窗体表面,打印机表面,位图表面,还要有画笔,可以是钢笔,笔刷等。还要有一个画图的过程即方法调用。另外还需要知道坐标系统,在窗体中的坐标轴和我们平时接触的平面直角坐标轴不同, 窗体中的坐标轴方向完全相反:窗体的左上角为原点(0,0),水平向左则X增大,垂直下向则Y增大。3. GDI+的坐标系统GDI+的坐标系统建立在通过像素中心的假想数学直线上,这些直线从0开始,其左上角的交点是X=0,Y=0。X=1,Y=2的简短记号是点(1,2)。用于绘图的每个窗口都有自己的座标。如果要创建一个可以在其他窗口使用的定制控件,这个定制控件本身就有自己的坐标。换言之,在绘制该定制控件时,他的左上角是点(0,0)。不用担心定制控件放在其包含窗体的什么地方。在绘制线条时,GDI+会把绘制出来的像素在指定的数学直线上对中。在绘制整数坐标的水平线时,可以认为每个像素的一半落在假想的数学直线的上半部分,而另一半落在假想数学直线的下半部分。【知识拓展】(可选,可以放在任何位置)请按F1键,查一下MSDN上的Graphics类的信息,将这个类的作用和DrawImage和DrawRectangle方法的详细内容记下来。任务二 绘制棋盘线条【任务描述】(该任务的内容和目的)绘制水平线、垂直线、斜线和兵位(炮位)线。其中的难点主要是坐标位置。实施条件(或教学场景设计或作业技术规范):参照真实棋盘或中国象棋的电脑游戏画面。【任务实施】(完成此任务所需要的主要步骤)1 释放对象语句行的上方,插入用于生成钢笔对象pen的代码Pen pen = new Pen(Color.Black, 1);2 绘制水平线 for (int i = 0; i 10; i+) g.DrawLine(pen, new Point(25, 25 + (i * 50), new Point(425, 25 + (i * 50); 3 绘制垂直线 for (int i = 0; i 9; i+) g.DrawLine(pen, new Point(25 + (i * 50), 25), new Point(25 + (i * 50), 225); g.DrawLine(pen, new Point(25 + (i * 50), 275), new Point(25 + (i * 50), 475);运行结果如图3-6所示。图3-6 运行结果4绘制斜线 g.DrawLine(pen, new Point(175, 25), new Point(275, 125); g.DrawLine(pen, new Point(275, 25), new Point(175, 125); g.DrawLine(pen, new Point(175, 375), new Point(275, 475); g.DrawLine(pen, new Point(175, 475), new Point(275, 375);运行结果如图3-7所示。图3-7 运行结果5兵位(炮位)线 g.DrawLine(pen, new Point(30, 160), new Point(30, 170); g.DrawLine(pen, new Point(30, 170), new Point(40, 170); g.DrawLine(pen, new Point(30, 180), new Point(30, 190);g.DrawLine(pen, new Point(30, 180), new Point(40, 180);运行结果如图3-8所示。图3-8 运行结果说明:考虑到画兵位(炮位)线的画法除了坐标不同外是完全一样,所以这里只画了其中一个,请学生完成其余兵位(炮位)线。【理论知识】(对此任务所涉及到的关键知识点的讲解)请按F1键,查一下MSDN上的Pen类、Graphics类和Point结构的信息,将Pen类中的构造方法、DrawLine方法和Point的构造方法等的详细内容记下来。【知识拓展】(可选,可以放在任何位置)一、struct 类型的概念Point是struct(结构)类型的,那么什么是struct 类型呢?struct 类型是一种值类型,通常用来封装小型相关变量组,例如,矩形的坐标或库存商品的特征。下面的示例显示了一个简单的结构声明。public struct Book public decimal price; public string title; public string author;二、类与结构的差别 1. 值类型与引用类型 结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应S32 结构,string 对应 system.string 结构 ,通过使用结构可以创建更多的值类型 类是引用类型:引用类型在堆上分配地址 堆栈的执行效率要比堆的执行效率高,可是堆栈的资源有限,不适合处理大的逻辑复杂的对象。所以结构处理作为基类型对待的小对象,而类处理某个商业逻辑 因为结构是值类型所以结构之间的赋值可以创建新的结构,而类是引用类型,类之间的赋值只是复制引用 注: 1.虽然结构与类的类型不一样,可是他们的基类型都是对象(object),c#中所有类型的基类型都是object。2.虽然结构的初始化也使用了New 操作符可是结构对象依然分配在堆栈上而不是堆上,如果不使用“新建”(new),那么在初始化所有字段之前,字段将保持未赋值状态,且对象不可用。2继承性 结构:不能从另外一个结构或者类继承,本身也不能被继承,虽然结构没有明确的用sealed声明,可是结构是隐式的sealed。 类:完全可扩展的,除非显示的声明sealed 否则类可以继承其他类和接口,自身也能被继承。注:虽然结构不能被继承 可是结构能够继承接口,方法和类继承接口一样。任务三 书写棋盘中间文字【任务描述】(该任务的内容和目的)为了更逼真一些,将文字“楚河汉(漢)界”用DrawString方法写在棋盘中间。【任务实施】(完成此任务所需要的主要步骤)1用DrawString方法写在棋盘中间写文字“楚河汉(漢)界”。 g.DrawString(楚 河, new Font(黑体, 25), Brushes.Black, new Point(50, 235);g.DrawString(漢 界, new Font(黑体, 25), Brushes.Black, new Point(300, 235);运

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论