C#实验三Word文档下载推荐.docx
《C#实验三Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C#实验三Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
![C#实验三Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/10/a48bcf52-f8f0-4167-b4fb-cb67b8a0211b/a48bcf52-f8f0-4167-b4fb-cb67b8a0211b1.gif)
if(String.Compare((((Car)o1).Name),((Car)o2).Name)>
0)
returntrue;
elsereturnfalse;
}
publicstaticboolCompareByPrice(Objecto1,Objecto2)
return((Car)o1).Price>
((Car)o2).Price;
}
publicclassCar
publicdelegateboolCompareDelegate(Objecte1,Objecte2);
privateStringname;
privatedoubleprice;
publicStringName
get{returnname;
set{name=value;
publicdoublePrice
get{returnprice;
set{price=value;
publicCar(Strings1,doublePrice)
name=s1;
price=Price;
publicoverridestringToString()
returnstring.Format(Name+"
{0:
C}"
Price);
publicstaticvoidSort(Object[]sortArray,CompareDelegatecompareMethod)
for(inti=0;
i<
sortArray.Length-1;
i++)
for(intj=0;
j<
sortArray.Length-i-1;
j++)
if(compareMethod(sortArray[j],sortArray[j+1]))
Objecttemp=sortArray[j];
sortArray[j]=sortArray[j+1];
sortArray[j+1]=temp;
publicstaticvoidinsertSort(Object[]sortArray,CompareDelegatecompareMethod)
intj;
for(inti=1;
sortArray.Length;
Objecttemp=sortArray[i];
for(j=i-1;
(j>
=0)&
&
(compareMethod(sortArray[j],temp));
j--)
sortArray[j+1]=sortArray[j];
sortArray[j+1]=temp;
publicstaticvoidSelectSort(Object[]sortArray,CompareDelegatecompareMethod)
intm;
m=i;
for(intj=i+1;
j<
sortArray.Length;
if(compareMethod(sortArray[m],sortArray[i]))
m=j;
sortArray[i]=sortArray[m];
sortArray[m]=temp;
classTest
publicstaticvoidMain()
Car[]car=newCar[]
{newCar("
奔驰"
600000),
newCar("
大众"
400000),
奥迪"
300000),
宝马"
780000),
保时捷"
900000)};
Car.Sort(car,BubbleSorter.CompareByName);
Console.WriteLine("
冒泡法根据名称排序结果为:
"
);
car.Length;
Console.WriteLine(car[i]);
Car.insertSort(car,BubbleSorter.CompareByPrice);
直接插入法根据价格排序结果为:
Car.SelectSort(car,BubbleSorter.CompareByPrice);
选择排序法根据价格排序结果为:
Console.ReadKey();
2、利用委托,实现一个客户端、服务器简单聊天程序。
参考实验步骤:
(1)创建存储消息的类,类名为MsgPackage。
(2)创建基于委托的聊天服务器类,类名为DchatServer。
1)声明一个委托,当聊天消息到达时,委托将调用在客户端的回调函数。
2)定义一个字段,存储已连接客户端的委托
3)定义连接客户端和服务器的方法
4)定义断开客户端与服务器的方法
5)定义一个发送指定消息给所有已连接的客户端的方法
A将方法命名为SendMsg
B声明为publicstatic无返回类型
C两个参数:
一个MsgPackage类型的消息,一个object类型的参数表示被排
除的客户端。
D具体实现:
如果被排除客户参数是null,那么将调用多播委托给所有的客户端发送消息;
如果被排除的客户端参数不是null,那么给被排除客户端之外的其他客户端发送信息。
(3)创建基于委托的客户端类,类名为DchatClient。
1)添加一个String类型的属性ClientName,代表客户端名字。
2)添加一个构造方法,参数为客户端名。
具体实现:
客户端名存储在ClientName属性;
通过调用服务器的ClientConnect方法将客户端链接到服务器上。
3)定义Show方法。
当服务器接收到聊天信息时,将通过委托调用该方法。
(4)创建基于委托的聊天应用代码。
1)在Program类(默认),创建一个名为DelegateChatServerDemo的静态方法。
2)向控制台输出一行文本,显示程序开始。
.
3)实例化3个DChatClient对象,将客户端名“张三”、“李四”、“王五”传递给构
造函数。
4)调用DChatServer的静态方法SendMsg向服务器发送消息。
该消息由“张三”发
送给所有的客户端。
5)调用DChatServer的静态方法SendMsg向服务器发送消息。
该消息由“李四”发
6)调用DChatServer的静态方法SendMsg向服务器发送消息。
该消息由“王五”发
7)“张三”发送消息给除客户端“王五”以外的所有客户端。
8)“王五”与服务器断开连接。
9)“张三”发送消息给所有的客户端。
10)向控制台上发送一行文本,显示程序结束。
11)在Main函数中调用DelegateChatServerDemo。
publicclassMsgPackage
privateStringname,message;
get
{returnname;
set
{name=value;
publicStringMessage
{returnmessage;
{message=value;
publicMsgPackage(Stringname,Stringmessage)
this.name=name;
this.message=message;
classDchatServer
publicdelegatevoidOnMsgArrived(MsgPackagemsg);
privatestaticOnMsgArrivedmOnMsgArrived;
publicstaticvoidClientConnect(OnMsgArrivedonMsgArrived)
mOnMsgArrived+=onMsgArrived;
publicstaticvoidClientDisConnect(OnMsgArrivedonMsgArrived)
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();
classDChatClient
privateStringclientName;
publicStringClientName
{returnclientName;
{clientName=value;
publicDChatClient(stringclientName)
this.clientName=clientName;
DchatServer.ClientConnect(Show);
publicvoidShow(MsgPackagemsg)
{0}收到一条消息:
\t{1}说:
{2}"
clientName,msg.Name,msg.Message);
classProgram
publicstaticvoidDelegateChatServerDemo()
开始\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,"
王五看不见这条消息!
DchatServer.SendMsg(null,newMsgPackage(client1.ClientName,"
DchatServer.ClientDisConnect(client3.Show);
王五离开了!
结束了!
DelegateChatServerDemo();
三、实验学时:
2学时