C#程序设计类与对象03.docx
- 文档编号:15470601
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:15
- 大小:73.98KB
C#程序设计类与对象03.docx
《C#程序设计类与对象03.docx》由会员分享,可在线阅读,更多相关《C#程序设计类与对象03.docx(15页珍藏版)》请在冰点文库上搜索。
C#程序设计类与对象03
福建农林大学计算机与信息学院
计算机类
课程设计报告
课程名称:
VisualC#
设计题目:
实验四类与对象
姓名:
系:
计算机科学与技术
专业:
计算机科学与技术
年级:
2009级
学号:
指导教师:
宋艳娟
职称:
副教授
2011年12月9日
福建农林大学计算机与信息学院计算机类
课程设计报告结果评定
评语:
成绩:
指导教师签字:
评定日期:
设计题目名称
1.设计的目的和任务
1、掌握类的成员设计。
2、掌握属性的定义及使用。
3、掌握索引器的定义及使用。
2.设计地点
田家炳实验楼513
3.主要仪器设备(实验用的软硬件环境)
VisualC#2008
4.实验内容
1、利用委托,实现为任何类型对象进行排序。
具体要求如下:
(1)实现冒泡、选择和插入排序算法;
(2)定义Car类,包含两个字段:
name和price;(3)在Main方法中,分别调用冒泡、选择和排序算法,实现对Car对象根据姓名和价格排序。
2、利用委托,实现一个客户端、服务器简单聊天程序。
4.设计代码
1、利用委托,实现为任何类型对象进行排序。
具体要求如下:
(1)实现冒泡、选择和插入排序算法;
(2)定义Car类,包含两个字段:
name和price;(3)在Main方法中,分别调用冒泡、选择和排序算法,实现对Car对象根据姓名和价格排序。
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
publicdelegateboolCompareOperation(objectcarPrev,objectcarNext);
publicclassCar
{
privatestringname;
publicstringName
{
get{returnname;}
set{name=value;}
}
privatedecimalprice;
publicdecimalPrice
{
get{returnprice;}
set{price=value;}
}
publicCar(stringname,decimalprice)
{
this.name=name;
this.price=price;
}
publicoverridestringToString()
{
returnstring.Format("Name:
{0},Price:
{1:
c}",name,price);
}
publicstaticboolOrderByCarName(objectobjPrev,objectobjNext)
{
CarcarPrev=(Car)objPrev;
CarcarNext=(Car)objNext;
return(carPrev.name.CompareTo(carNext.name)<0)?
true:
false;
}
publicstaticboolOrderByCarPrice(objectobjPrev,objectobjNext)
{
CarcarPrev=(Car)objPrev;
CarcarNext=(Car)objNext;
return(carPrev.price true: false; } } publicclassBubbleSorter { staticpublicvoidSort(Object[]objArr,CompareOperationsortOp) { boolflag=false; for(inti=1;i { flag=false; for(intj=objArr.Length-1;j>=i;j--) { if(sortOp(objArr[j],objArr[j-1])) { objecttmpObj=objArr[j]; objArr[j]=objArr[j-1]; objArr[j-1]=tmpObj; flag=true; } } if(! flag) return; } } } publicclassSelectionSort { staticpublicvoidSort(Object[]objArr,CompareOperationsortOp) { intmin; for(inti=0;i { min=i; for(intj=i+1;j { if(sortOp(objArr[j],objArr[min])) { min=j; } } objecttmpObj=objArr[i]; objArr[i]=objArr[min]; objArr[min]=tmpObj; } } } publicclassInsertSort { staticpublicvoidSort(Object[]objArr,CompareOperationsortOp) { for(inti=1;i { objectt=objArr[i]; intj=i; while((j>0)&&(sortOp(t,objArr[j-1]))) { objArr[j]=objArr[j-1]; j--; } objArr[j]=t; } } } publicclassProgram { publicstaticvoidMain() { Car[]carArr={newCar("BYD",150000), newCar("BMW",500000), newCar("Benz",700000), newCar("Suzuki",140000), newCar("Kia",78000), newCar("Audi",250000), newCar("Toyota",160000), newCar("Cadillac",210000), }; CompareOperationsortOp=newCompareOperation(Car.OrderByCarPrice); Console.WriteLine("beforearray: "); for(inti=0;i { Console.WriteLine(carArr[i].ToString()); } Console.WriteLine("pricearraybybubble: "); BubbleSorter.Sort(carArr,sortOp);//冒泡排序 for(inti=0;i { Console.WriteLine(carArr[i].ToString()); } Console.WriteLine("pricearraybyselect: "); SelectionSort.Sort(carArr,sortOp);//选择排序 for(inti=0;i { Console.WriteLine(carArr[i].ToString()); } Console.WriteLine("pricearraybyinsert: "); InsertSort.Sort(carArr,sortOp);//插入排序 for(inti=0;i { Console.WriteLine(carArr[i].ToString()); } CompareOperationsortOp2=newCompareOperation(Car.OrderByCarName); Console.WriteLine("namearraybybubble: "); BubbleSorter.Sort(carArr,sortOp2);//冒泡排序 for(inti=0;i { Console.WriteLine(carArr[i].ToString()); } Console.WriteLine("namearraybyselect: "); SelectionSort.Sort(carArr,sortOp2);//选择排序 for(inti=0;i { Console.WriteLine(carArr[i].ToString()); } Console.WriteLine("namearraybyinsert: "); InsertSort.Sort(carArr,sortOp2);//插入排序 for(inti=0;i { Console.WriteLine(carArr[i].ToString()); } Console.Read(); } } 实验结果: 2、利用委托,实现一个客户端、服务器简单聊天程序。 (1)创建存储消息的类,类名为MsgPackage。 usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; namespaceConsoleApplication1 { classMsgPackage { publicstringName{get;set;} publicstringMessage{get;set;} publicMsgPackage(stringname,stringmessage) { Name=name; Message=message; } } } (2)创建基于委托的聊天服务器类,类名为DchatServer。 usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; namespaceConsoleApplication1 { classDchatServer { publicdelegatevoidOnMessageArrived(MsgPackagemsg); privatestaticOnMessageArrivedmOnMsgArrived; publicstaticvoidClientConnet(OnMessageArrivedonMsgArrived) { mOnMsgArrived+=onMsgArrived; } publicstaticvoidClientDisConnet(OnMessageArrivedonMsgArrived) { mOnMsgArrived-=onMsgArrived; } publicstaticvoidSendMsg(objectclient,MsgPackagemsg) { if(client==null) { mOnMsgArrived(msg); } else { DchatClientdc=(DchatClient)client; Delegate[]delelist=mOnMsgArrived.GetInvocationList(); foreach(Delegatedindelelist) { boolb=d.Target.Equals(client); if(! b) { d.DynamicInvoke(msg); } } } Console.WriteLine(); } } } (3)创建基于委托的客户端类,类名为DchatClient。 usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; namespaceConsoleApplication1 { classDchatClient { publicstringClientName{get;set;} publicDchatClient(stringclientname) { this.ClientName=clientname; DchatServer.ClientConnet(Show); } publicvoidShow(MsgPackagemsg) { Console.WriteLine("{0},收到一则消息: \t{1}说: {2}", ClientName,msg.Name,msg.Message); } } } (4)创建基于委托的聊天应用代码。 usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; namespaceConsoleApplication1 { classProgram { publicstaticvoidDelegateChatServerDemo() { Console.WriteLine("开始\n"); DchatClientclient1=newDchatClient("张三"); DchatClientclient2=newDchatClient("李四"); DchatClientclient3=newDchatClient("王五"); DchatServer.SendMsg(null,newMsgPackage(client1.ClientName,"李四,你好! ")); DchatServer.SendMsg(null,newMsgPackage(client2.ClientName,"李四,你也好! ")); DchatServer.SendMsg(null,newMsgPackage(client3.ClientName,"大家好! ")); DchatServer.SendMsg(client3,newMsgPackage(client1.ClientName,"王五走了! ")); Console.WriteLine("结束! "); } staticvoidMain(string[]args) { DelegateChatServerDemo(); Console.ReadKey(); } } } 实验结果: 6.结束语 这次实验学会了如何实现类的成员定义、属性定义与使用以及索引器的用法。 还有利用委托,实现为任何类型对象进行排序。 参考文献 《sualC#2008大学教程第三版》………P.J.DeitelH.M.Deitel
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 程序设计 对象 03