




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C程序设计实训指导书31目 录C#程序设计(下)实训大纲1实训一 网络聊天工具4实训二 排序算法的演示6实训三 简单游戏制作11附件一:实训日志模板15附件二:实训报告模板19附件三:实训评分标准20C#程序设计(下)实训大纲一、实训目的:C#程序设计实训(下)课程是软件专业以及与软件有关的专业的岗位技能核心课程。本课是集于理论与实践一体的综合应用课程。通过学习本课程学生初步掌握面向对象程序设计的概念以及在.NET平台下开发应用程序的技能。主要目的是让学生通过实训熟悉C#语言的语法,面向对象的程序设计设计思路,运用Visual C#.NET平台开发Windows应用程序,数据库应用程序以及网络应用程序等。二、实训内容和要求1、掌握.net中用于读写文件及管理文件系统的类,能够使用.net中的IO操作进行高级应用程序开发。2、掌握各种存储数据的数据结构,如动态数组、队列、栈、哈稀表以及他们的泛型,并能在应用程序中灵活应用。3、理解委托和事件,掌握在应用程序中使用写代码的形式给控件注册事件。4、掌握实现异步的方法,包括使用委托和在窗体应用程序下使用BackgroundWork来实现。5、掌握使用GDI+绘图的基本方法。6、掌握简单的网络编程方法。7、掌握ADO.NET的结构以及用ADO.NET访问数据库的一个简单模型。8、在编写程序过程中,培养预测和寻找错误的能力,并能正确处理错误和异常。9、初步掌握编制软件文档。10、懂得制作安装程序具体内容见实训指导。三、先修课程程序设计基础、C#程序设计(上)、数据结构四、参考文献1 张立,程序天下:C-#2.0实例自学手册-200个例子,电子工业出版社,20082 章立民研究室,Visual.C#.2005.程序开发与界面设计秘诀,.机械工业出版社,20063 代方震,陈冠军,Visual c#2005程序设计从入门到精通,人民邮电出版社,20074 王小科等,Visual C#2005程序设计自学手册,人民邮电出版社,20085 邵鹏鸣,C#面向对象程序设计,清华大学出版社,2008.46万科、覃剑,Visual C#.NET程序设计基础与上机指导,清华大学出版社, 2007.37张华、吴浩东,Visual C#程序设计教程与上机指导,清华大学出版社,2005.38杨晓光等,Visual C#.NET程序设计习题解析与实习指导,清华大学出版社,2007.1五学时分配 序号实训内容学时分配总学时理论学时实践学时1实训一 网络聊天工具10102实训二 排序算法的演示883实训三 简单游戏制作884实训交流225实训报告22合计3030六操作与考核办法采取提交电子材料与实训操作相结合的方法进行考核。1、实训操作办法(1)学生实训以小组为单位,小组人数以35人为宜。(2)学生实训时认真做好小组分工和实训计划,并书写需求分析报告、总体设计说明书和详细设计说明书及测试报告,这些材料一并包含在课程实训说明书中,以电子稿或打印稿方式提交,同时每个小组必须提供完整的源程序代码。(3)教师应在小组成绩的基础上认真评定个人成绩,并对学生的课程实训说明书进行批改。(4)指导教师在实训开始前,布置若干个难度适中的实训课题供学生选用。鼓励学生自选课题,但要经指导教师审核。2、学生在完成实训后须提交如下电子文档:(1)把所设计的程序传到FTP服务器上。(2)完成实训任务的详细日志。(3)实训的实施过程(包括主要的步骤以及所使用的方法)。(4)实训中出现的异常情况及解决办法。(5)对实训改进的探讨。3、成绩考核评定(具体项目评定见附件三):(1) 积极参与课程实训,按质按量完成课程实训要求。(2) 出勤情况,占20%.(3) 在项目开发过程中完成的工作量,占30%.(4) 对开发的项目涵盖的知识点的掌握情况,占40%。(5) 项目中有新功能或创意,占10%。七、参考课题1、文件管理器的实现2、综合性绘图工具3、网络聊天工具的实现4、简单网络游戏的实现5、电子邮箱的实现(需自学POP3协议和SMTP协议)6、移动通信管理和收费系统的实现7、数据库管理信息系统的设计与实现8、游戏算法的设计与实现9、某个算法的实现和过程演示10、其它(自己寻找课题,需经指导教师认可)附件:1、实训日志模板2、实训报告模板3、实训评分标准实训一 网络聊天工具一、实训目的:1、掌握使用同步的方式进行双机通信,进而学会使用异步的方式进行通信。2、将对象在网络中传输的方法。3、掌握多线程间调度的知识。4、掌握ADO.NET的结构,并能使用ADO.NET访问数据库。5、应用MDI相关的属性创建多文档窗体,熟练掌握WinForms控件的使用。二、实训内容:程序功能: 在本实训项目中,我们要求实现一个简单的在线聊天工具,它提供基本的聊天功能。要求能够实现登陆判断、维持在线用户列表,支持群聊和私聊等功能。该应用程序的结构为一个客户机/服务器结构,要求设计的功能有两个方面:1、服务器端:管理着聊天任务,它维持着一张当前在线用户的列表,转发用户发来的信息,主要功能如下:(1)监听本机IP地址中的一个指定的端口。(2)所有合法用户的数据存放在SQL数据库中。(3)当有客户端向该端口发出请求时,服务器程序立刻建立一个与该客户端的连接并启动一个新的线程来处理该客户端的所有请求。(4)服务器端根据客户端发送来的各种不同的请求,执行相应的操作,并将结果返回给该客户端。要求至少定义四种请求命令:CONN(请求登陆)CHAT(聊天)PRIV(私聊)EXIT(离开),服务器接收ASCII字符信息,用“|”分隔信息的各个部分,一个信息包含一条命令,一个或多个信息参数。简单命令格式如下:A:CONN| 用户名|密码| 该命令是在客户端和服务器端连接后由客户端程序登陆时发送,服务器程序收到该命令后会将用户名和密码与所连接数据库的“用户”表进行比对,若是合法用户,允许登陆,添加到在线用户列表,同时向每个在线用户发送更新在线用户列表的命令;否则发送错误信息。B:CHAT|发送者的用户名:发送信息的内容| 该命令是用户在客户端程序界面中输入发送信息的内容后,单击“发送”按钮后,由客户端程序自动发送,服务器程序收到该命令后,便将“发送者的用户名:发送信息的内容”转发给所有的当前在线用户。C:PRIV|发送者的用户名|接受者的用户名|发送信息的内容| 该命令是用户在客户端应用程序中选中“悄悄话”复选框(私聊),输入发送信息内容并单击“发送”按钮后,由客户端应用程序自动发送,服务器收到该命令后,将“发送者的用户名 send to 接受者的用户名:发送信息的内容”转发给对应的接收者。D:EXIT|用户名| 该命令是用户在客户端程序中单击“离开”按钮后,由客户端程序自动发送的,服务器应用程序收到该命令后,将发送者的用户名从当前在线用户列表中删除,并给当前在线的用户发送更新在线用户列表的命令。2、客户端:包含用户登陆窗口和用户聊天的主窗口,它允许用户登陆到服务器,可以向服务器发送信息,同时可以接收从服务器返回的信息,要求设计的主要功能如下:(1)向远程服务器发送连接请求(2)得到服务器程序的确认后,建立于服务器的连接,并获得与服务器交互的流通道(NetworkStream)。(3)通过网络流通道与服务器端进行数据通信。向服务器发送服务器能够识别的命令请求,同时也接收服务器发回的命令。客户端能够识别的命令有ERRO(通知用户名和密码错误)、JOIN(通知当前在线用户有新的用户进入聊天室)、LIST(更新当前在线用户)QUIT(关闭客户端程序)。客户端接收ASCII字符信息,用“|”分隔信息的各个部分,一个信息包含一条命令,一个或多个信息参数。简单命令格式如下:A:ERRO| 该命令是服务器验证身份时,用户名或密码错误,向客户端发送的,客户端收到此命令后,可以关闭与服务器的连接或重新登陆;B:JOIN|刚刚进入聊天室的用户名| 该命令是服务器程序确认一个用户登陆后,由服务器自动向当前在线的客户端发送的,以此来通知所有在线用户此时有新的用户进入聊天室,客户端收到此命令后,在各自的窗口中显示此用户已进入聊天室;C:LIST|在线用户1|在线用户2|在线用户2| 该命令是服务器程序确认一个用户登陆或EXIT命令后,由服务器自动向当前在线的客户端发送的,以此来通知所有的在线用户刷新自己的当前在线用户列表,客户端程序收到此命令后,在各自的窗口中刷新当前在线用户列表;D:QUIT| 该命令是服务器程序收到客户端发送来的EXIT命令后,由服务器自动向该客户端发送的,以便通知该客户端关闭连接同时关闭客户端程序,客户端程序收到此命令后,关闭与服务器的连接,并且关闭客户端程序。图1-1 服务器端图1-2 客户端登陆窗口 图1-3 客户端登陆提示图1-4 客户端聊天主窗体三、相关知识:TcpListener和TcpClient类实现了对Socket的封装,简化了网络编程模型。1、使用TCP服务TCPClient 类使用 TCP 从 Internet 资源请求数据。TcpClient 的方法和属性提取某个 Socket 的创建细节,该实例用于通过 TCP 请求和接收数据。由于到远程设备的连接表示为流,因此可以使用 .NET Framework 流处理技术读取和写入数据。要建立 TCP 连接,必须知道承载所需服务的网络设备的地址以及该服务用于通信的 TCP 端口。IANA 列表中所没有的服务可使用 1,024 到 65,535 这一范围中的端口号。2、TCP协议通信的流程TCP协议是面向连接的协议,它的实现需要数据发送方和数据接收方建立数据通信连接,它的具体流程如下:(1)服务器端首先创建服务器套接字(2)服务器套接字监听一个端口,等待客户端的请求(3)客户端创建一个客户端套接字(4)客户端向服务器端发送连接请求(5)服务器确认与客户端的连接(6)客户端和服务器利用建立的连接进行通信(7)通信完毕后,客户端和服务器关闭各自的连接3、Socket编程基础同步服务器套接字挂起应用程序的执行,直到套接字上接收到连接请求。同步服务器套接字不适用于在操作中大量使用网络的应用程序,但它们可能适用于简单的网络应用程序。使用 Bind 和 Listen 方法设置 Socket 以在终结点上侦听之后,Socket 就可以随时使用 Accept 方法接受传入的连接请求了。应用程序被挂起,直到调用 Accept 方法时接收到连接请求。接收到连接请求时,Accept 返回一个与连接客户端关联的新 Socket 实例。l 利用Socket建立服务器程序(1)要用Socket创建一个TCP服务器套接字,用IP地址和端口初始化服务器,代码如下:private const int portNum = 13;IPAddress ipAdd = IPAddress.Parse(03);TcpListener listener = new TcpListener(ipAdd, portNum);(2)监听服务器端口,代码如下:Listener.Start();(3)确认与客户端的连接:Socket socket = listener.AcceptSocket();(4)处理客户端的请求并回应客户端,下面的代码演示了向客户端发送字符串:String message=Hell0;Byteoutbytes = System.Text.Encoding.ASCII.GetBytes(message.ToCharArray();socket.Send(outbytes, outbytes.Length, 0);(5)断开客户端的连接,释放客户端连接:Socket.Close();(6)关闭服务器,释放服务器连接:Listener.Close();l 利用Socket建立客户端程序要用Socket建立一个TCP客户端程序,一般需要以下几个步骤(1)创建客户端套接字:TcpClient tcpclient=new TcpClient();(2)连接服务器:tcpclient.Connect(IPAddress.Parse(“”),1234);(3)得到与服务器通信的流通道:NetworkStream Strm=tcpclient.GetStream();(4)向服务器发送数据:String cmd=CONN|+UserAlias+|;Byteoutbytes = System.Text.Encoding.ASCII.GetBytes(cmd.ToCharArray();Strm.Write(outbytes,0,outbytes.Length);(5)接收从服务器发回的数据:Byte buff=new byte1024;int len=Strm.Read(buff,0,buff.Length);string msg=System.Text.Encoding.ASCII.GetString(buff,0,len);(6)断开连接:tcpClient.Close();3、ADO.NET结构(1)ADO.NET 提供访问各种数据源的方法。应用程序可以使用 ADO.NET 连接到诸如 SQL Server 和 XML 这样的数据源以及通过 OLE DB 和 ODBC 公开的数据源,并可以检索、处理和更新其中包含的数据。 (2)ADO.NET用于访问和操作数据的两个主要组件是 .NET Framework 数据提供程序和 DataSet。(3).NET Framework 数据提供程序是专门为数据操作以及快速、只进、只读访问数据而设计的一组组件,包括Connection对象、Command对象及DataReader、 DataAdapter等。 (4)DataSet 是专门为独立于任何数据源的数据访问而设计的。因此,数据,或用于管理应用程序本地的数据。它可以用于多种不同的数据源,用于 XML DataSet 包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及有关 DataTable 对象中数据的主键、外键、约束和关系信息组成。 4、建立连接的方法String connectionString =“Data Source = (local); Initial Catalog = NorthwindCS; Persist Security Info = True; User ID = sa; Password = 123”SqlConnection connection = new SqlConnection(connectionString);5、访问数据库DataAdapter 的 SelectCommand 属性是一个 Command 对象,用于从数据源中检索数据。 DataAdapter 的 InsertCommand、UpdateCommand 和 DeleteCommand 属性也是 Command 对象,用于按照对 DataSet 中数据的修改来管理对数据源中数据的更新。 DataAdapter 的 Fill 方法用于使用 DataAdapter 的 SelectCommand 的结果来填充 DataSet。 Fill 将要填充的 DataSet 和 DataTable 对象SqlDataAdapter custAdapter = new SqlDataAdapter(SELECT * FROM 客户, customerConnection);DataSet customerOrders = new DataSet();custAdapter.Fill(customerOrders, Customers);6、有关C#子线程的控件操作一般来说,直接在子线程中对窗体上的控件操作是会出现异常,这是由于子线程和运行窗体的线程是不同的空间,因此想要在子线程来操作窗体上的控件,是不可能简单的通过控件对象名来操作,但不是说不能进行操作,微软提供了Invoke的方法,其作用就是让子线程告诉窗体线程来完成相应的控件操作。MethodInvoker mi2 = delegate() lstInfo.Items.Add(tokens1 + has gone!); /LstInfo是主线程的控件;this.BeginInvoke(mi2);实训二 排序算法的演示一、实训目的:1、理解选择排序算法的执行过程。2、掌握各种存储数据的数据结构,如动态数组、队列、栈、哈稀表以及他们的泛型,并能在应用程序中灵活应用。3、掌握如何使用委托实现异步4、掌握.net中用于读写文件及管理文件系统的类,能够使用.net中的IO操作二、实训内容:程序功能: 由用户定义数组的长度,并初始化数组。把整个数组按选择算法(其他算法也可以,自选)的排序过程演示出来,要求把每次排序的过程都保存到文件中。图2-1 初始化单击“开始演示”:图2-2 演示过程图2-3 保存的文件三、相关知识:1、选择排序算法:for(i=0;i0,i+) k=i; for(int j=i+1;jak) k=j; int x=ai; ai=ak; ak=x;2、WinForms高级编程(1)MDI应用程序(2)菜单、工具栏、状态栏的使用3、各种集合及其对应泛型的使用(1)动态数组ArrayList.ArrayList类继承了IList接口。Ilist接口定义了利用索引访问集合对象的方法,还继承了ICollection和IEnumerable接口,除实现了接口原有的方法成员外,其本身也定义多个专门的方法成员,例如新增、移除、在指定位置插入元素或是返回特定元素在集合中所在的位置索引,这些方法主要为集合对象提供类似数组的元素访问功能。ILsit接口成员:add、insert、RemoveAt、Remove、contains、Clear、indexof方法,它最大的特色在于提供类似数组索引的访问机制。(2)Stack类栈,适用于处理应用程序使用完后就删除的临时数据项。以后进先出的结构创建。(LIFO)元素使用Push()方法放在栈中,而使用Pop()方法弹出栈外。(3)Queue类队列,以先进先出(FIFO)的结构创建的集合。元素使用Enqueue ()方法放入集合,用Dequeue()方法弹出集合。(4)SortedList类SortList 类是键/值条目和一个ArrayList集合的组合体,实现了二元搜索,性能更加强大。SortedList类创建的集合,每一项都会指定一个用于引用该项的标识键。SortedList name=new SortedList();Name,Add(1,”brian”);/1就是标识键.(5)HashTable类HashTable也是一种集合,因为它的特性,可以提供一种相当有效率的搜索方法,所以在实际项目中非常实用,它就是哈希表。哈希继承了IDictionary接口,IDictionary接口提供了key(键)/value(值)集合设计模式,这种类集合中的每个一个对象都包含一个与它相对应的key,可以通过所指定的key找到集合中所对应的对象(value值),这个接口最重要之处在于定义了公共属性Item、values、keys,其中Item根据指定的key返回集合中所对应的值,values用来返回集合中所有的对象元素,keys则返回集合中的所以key,现在你们就把key想象成存放值的“索引值”,通过这个“索引值”可以找到值。实训三 简单游戏制作一、实训目的:1、掌握使用GDI+绘图的基本方法。2、如何设计一个简单的游戏算法,并实现3、在编写程序过程中,培养预测和寻找错误的能力,并能正确处理错误和异常。二、实训内容:程序功能: 要求自己设计一个游戏算法,并实现,在实训报告中写出自己的设计思路,如何实现,以及涉及的知识点。实训示例中设计的是贪吃蛇游戏,在屏幕上画出蛇,同时随机地给出食物,游戏者通过操作键盘控制贪吃蛇的移动,去吃食物,吃到后食物消失,然后再随机给出食物,同时蛇的身体增长,分数也相应增加,当蛇碰撞到墙壁或自身身体就死亡。蛇移动的原理就是利用人眼的视觉效应先将蛇身的最后一个节点删除,在第一个结点前补充一个(四种方向之一的)新节点。图3-1 游戏界面三、相关知识:1、GDI+ 中绘图基本方法若要用 GDI+ 绘制直线,需要创建 Graphics 对象和 Pen 对象。Graphics 对象提供进行实际绘制的方法,Pen 对象存储属性,如直线的颜色、宽度和线型。 (1)绘制直线下面的示例绘制了一条从点 (4, 2) 到点 (12, 6) 的直线:myGraphics.DrawLine(myPen, 4, 2, 12, 6);(2)构造钢笔可以在构造 Pen 对象时指定某些属性。例如,有一种 Pen 构造函数允许您指定颜色和宽度。下面的示例绘制了一条从 (0, 0) 到 (60, 30) 宽度为 2 的蓝线:Pen myPen = new Pen(Color.Blue, 2);myGraphics.DrawLine(myPen, 0, 0, 60, 30);(3)虚线和线帽Pen 对象也公开属性(如 DashStyle),这些属性可用于指定直线的特性。下面的示例绘制了一条从 (100, 50) 到 (300, 80) 的虚线:myPen.DashStyle = DashStyle.Dash;myGraphics.DrawLine(myPen, 100, 50, 300, 80);(4)绘制矩形下面的示例绘制了一个矩形,其左上角位于 (100, 50),宽度为 80,高度为 40: myGraphics.DrawRectangle(myPen, 100, 50, 80, 40);(5)绘制椭圆下面的示例绘制了一个椭圆;边框的宽度为 80,高度为 40,左上角位于 (100, 50): myGraphics.DrawEllipse(myPen, 100, 50, 80, 40);(6)绘制弧线下面的示例绘制了一个起始角为 30 度、仰角为 180 度的弧线:myGraphics.DrawArc(myPen, 100, 50, 140, 70, 30, 180);2、异常处理机制.NET Framework提供了大量的预定义基类异常对象,该如何在代码中使用它们捕获错误?为了在C#代码中处理可能的错误,一般要把程序的相关部分分成3种不同类型的代码块:l try块包含的代码组成了程序的正常操作部分,但这部分程序可能遇到某些严重的错误。l catch块包含的代码处理各种错误,这些错误是try块中的代码执行时遇到的。这个块还可以用于记录错误。l finally块包含的代码清理资源或执行要在try块或catch块末尾执行的其他操作。无论是否产生异常,都会执行finally块,理解这一点是非常重要的。因为finally 块包含了应总是执行的清理代码,如果在finally 块中放置了return语句,编译器就会标记一个错误。例如,可以在finally 块中关闭在try块中打开的连接。finally 块是可选的。如果不需要清理代码(例如删除对象或关闭已打开的对象),就不需要包含此块。那么,这些块是如何组合在一起捕获错误的?下面就是其步骤:(1) 程序流进入try块。(2) 如果没有错误发生,就会正常执行操作。当程序流离开try块后,即使什么也没有发生,也会自动进入finally块(第(5)步)。但如果在try块中程序流检测到一个错误,程序流就会跳转到catch块(下一步)。(3) 在catch块中处理错误。(4) 在catch块执行完后,程序流会自动进入finally块:(5) 执行finally块。用于完成这些任务的C#语法如下所示:try / 正常执行代码catch /处理错误代码finally / 清理代码附件一:实训日志模板 专业 级C#程序设计(下)实 训 日 志实训日期实训地点
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年钢琴演奏级模拟试卷:钢琴演奏中的音色变化处理试题
- 2025年区块链工程师职业能力测试卷-区块链与云计算的集成与优化试题
- 2025药店合同范本
- 2025年辅导员职位竞争:学生职业生涯规划中的生涯规划课程设计试题解析
- 2025年社会工作者初级综合能力考试社会工作者职业伦理评价试题
- 2025年区块链工程师职业能力测试卷:区块链技术在数据安全与隐私保护中的应用试题
- 2025年资产评估师职业资格考试真题模拟卷:资产评估报告编制要点与实务操作解析试题
- 货车包车运输合同6篇
- 2025年护士执业资格考试妇产科护理学专项护理感染控制专项试题型
- 2025年咖啡师职业技能测试卷:咖啡师咖啡店客户服务试题
- 钢管桩施工土建方案范例
- 保安三级安全考试题库及答案解析
- 电信国庆活动方案
- 市场仿真花施工方案
- 2025年入团知识考试题库(含答案)
- 职业培训项目实施方案
- 蔬菜抗营养成分流失工艺考核试卷及答案
- 破产重整程序中金融债权人保护问题研究
- 柴油发电机施工安装技术方案详述
- 民警培训安全驾驶简报课件
- 十年(2016-2025)高考生物真题分类汇编(全国通.用)专题10 基因的自由组合定律(解析版)
评论
0/150
提交评论