c#实验二Word下载.docx

上传人:b****4 文档编号:8063850 上传时间:2023-05-10 格式:DOCX 页数:25 大小:44.53KB
下载 相关 举报
c#实验二Word下载.docx_第1页
第1页 / 共25页
c#实验二Word下载.docx_第2页
第2页 / 共25页
c#实验二Word下载.docx_第3页
第3页 / 共25页
c#实验二Word下载.docx_第4页
第4页 / 共25页
c#实验二Word下载.docx_第5页
第5页 / 共25页
c#实验二Word下载.docx_第6页
第6页 / 共25页
c#实验二Word下载.docx_第7页
第7页 / 共25页
c#实验二Word下载.docx_第8页
第8页 / 共25页
c#实验二Word下载.docx_第9页
第9页 / 共25页
c#实验二Word下载.docx_第10页
第10页 / 共25页
c#实验二Word下载.docx_第11页
第11页 / 共25页
c#实验二Word下载.docx_第12页
第12页 / 共25页
c#实验二Word下载.docx_第13页
第13页 / 共25页
c#实验二Word下载.docx_第14页
第14页 / 共25页
c#实验二Word下载.docx_第15页
第15页 / 共25页
c#实验二Word下载.docx_第16页
第16页 / 共25页
c#实验二Word下载.docx_第17页
第17页 / 共25页
c#实验二Word下载.docx_第18页
第18页 / 共25页
c#实验二Word下载.docx_第19页
第19页 / 共25页
c#实验二Word下载.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c#实验二Word下载.docx

《c#实验二Word下载.docx》由会员分享,可在线阅读,更多相关《c#实验二Word下载.docx(25页珍藏版)》请在冰点文库上搜索。

c#实验二Word下载.docx

height"

]=30

程序架构为:

classBox

{

double[]data=newdouble[3];

publicdoublethis[intindex]

get{……

}

set{……

publicdoublethis[stringindex]

……

publicBox(doublelength,doublewidth,doubleheight)

{//保证长宽高值非零

staticvoidMain()

Boxb1=newBox(30,30,30);

b1[0]=10;

b1["

]=20;

Console.WriteLine("

\n长度:

{0}\t宽度:

{1}\t高度:

{2}"

……);

2.运算符重载

写一个复数类ComplexNumber,编写默认构造函数和两参数构造函数,重载其+、-、*运算符,并编写main函数来测试这些运算符。

classComplexNumber

publicdoubleReal{get;

privateset;

publicdoubleImaginary{get;

//构造函数

//重写object的ToString()方法,把复数以“1+2i”的形式打印输出

publicoverridestringToString()

returnstring.Format("

({0}{1}{2}i)"

……);

publicstaticComplexNumberoperator+(

ComplexNumberx,ComplexNumbery)

returnnewComplexNumber(……);

//重载-、*运算符

classProgram

publicstaticvoidMain()

ComplexNumberx,y;

Console.Write("

输入x的实部:

"

);

输入x的虚部:

x=……

\n输入y的实部:

输入y的虚部:

y=……

Console.WriteLine();

{0}+{1}={2}"

x,y,x+y);

{0}-{1}={2}"

x,y,x-y);

{0}*{1}={2}"

x,y,x*y);

 

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingSystem.Text;

namespaceConsoleApplication2

{

publicdoublereal;

publicdoubleimaginary;

publicComplexNumber(doublereal,doubleimaginary)

this.real=real;

this.imaginary=imaginary;

publicstaticComplexNumberoperator+(ComplexNumberc1,ComplexNumberc2)

returnnewComplexNumber(c1.real+c2.real,c1.imaginary+c2.imaginary);

publicstaticComplexNumberoperator-(ComplexNumberc1,ComplexNumberc2)

returnnewComplexNumber(c1.real-c2.real,c1.imaginary-c2.imaginary);

publicstaticComplexNumberoperator*(ComplexNumberc1,ComplexNumberc2)

returnnewComplexNumber(c1.real*c2.real-c1.imaginary*c2.imaginary,

c1.real*c2.imaginary+c1.imaginary*c2.real);

return(String.Format("

{0}+{1}i"

real,imaginary));

staticvoidMain(string[]args)

ComplexNumberx=newComplexNumber(3,5);

ComplexNumbery=newComplexNumber(2,7);

x.real=double.Parse(Console.ReadLine());

x.imaginary=double.Parse(Console.ReadLine());

y.real=double.Parse(Console.ReadLine());

}

3.应用委托,完成以下程序。

程序框架:

classDelegates

//创建委托类型

publicdelegateboolNumberPredicate(intnumber);

staticvoidMain(string[]args)

int[]numbers={1,2,3,4,5,6,7,8,9,10};

//生成委托实例

NumberPredicateevenPredicate=IsEven;

//利用委托变量调用IsEven

Console.WriteLine("

CallIsEvenusingadelegatevariable:

{0}"

//选出偶数

List<

int>

evenNumbers=FilterArray(numbers,evenPredicate);

//描述并输出

DisplayList("

UseIsEventofilterevennumbers:

evenNumbers);

//选出奇数并输出

//选出素数并输出

//选择满足predicate的数组元素

privatestaticList<

FilterArray(int[]intArray,

NumberPredicatepredicate)

//偶数判断函数

privatestaticboolIsEven(intnumber)

return(number%2==0);

//奇数判断函数

privatestaticboolIsOdd(intnumber)

//判断是否素数

privatestaticboolIsPrime(intnumber)

//列表元素输出

privatestaticvoidDisplayList(stringdescription,List<

list)

classDelegates

evenPredicate(4));

evenNumber=null;

foreach(intiinintArray)

if(predicate(i))

evenNumber.Add(i);

returnevenNumber;

return(number%2!

=0);

inti=0;

for(inta=1;

a<

number;

i++)

if(number%a==0)

i++;

if(i==1)

returntrue;

returnfalse;

/*privatestaticvoidDisplayList(stringdescription,List<

}*/

4.模拟连锁反应事件

(1)创建C#控制台应用程序。

(2)在程序中新建一个表示太阳的类Sun,在其中定义一个事件OnRise,一个成员方法Rise,并在方法中引发事件。

参考源代码如下(太阳只有一个,所以将其定义为静态类):

publicstaticclassSun{

publicstaticeventEventHandlerOnRise;

publicstaticvoidRise(){

太阳从东方升起!

"

if(OnRise!

=null)

OnRise(null,null);

(3)在程序中新建一个公鸡类Cock,在其中定义私有字段_name,针对Sun.OnRise事件的处理方法Sun_OnRise,事件OnSing,以及引发该事件的方法Sing;

在类的构造函数中初始化字段,并将事件处理方法与事件相关联。

参考源代码如下(Sun_OnRise方法中调用了Sing方法,表示太阳升起会使公鸡打鸣):

publicclassCock{

privatestring_name;

publicCock(stringname){

_name=name;

Sun.OnRise+=newEventHandler(Sun_OnRise);

}

privatevoidSun_OnRise(objectsender,EventArgse)

{

Console.WriteLine("

公鸡{0}:

_name);

雄鸡一声天下白!

this.Sing();

publiceventEventHandlerOnSing;

publicvoidSing(){

喔喔喔……"

if(OnSing!

=null)

OnSing(this,null);

}

(4)在程序中新建一个主人类Host,在其中同样定义字段_name,起床事件OnGetup,起床方法Getup(引发起床事件),养鸡方法Foster,以及Cock.OnSing事件的处理方法c1_OnSing,并在Foster方法中与事件相关联。

参考源代码如下(c1_OnSing方法中调用了Getup方法,表示公鸡打鸣会使主人起床):

publicclassHost{

publicHost(stringname){_name=name;

}

publiceventEventHandlerOnGetup;

publicvoidGetup(){

日出而作……"

if(OnGetup!

OnGetup(this,null)

publicvoidFoster(Cockc1)

{

c1.OnSing+=newEventHandler(c1_OnSing);

privatevoidc1_OnSing(objectsender,EventArgse)

主人{0}:

闻鸡起舞!

this.Getup();

(5)参照Cock类和Host类中的代码,新建狗类Dog和猫类Cat,在其中定义字段_owner以记录其主人对象,定义owner_OnGetup方法以处理Host.OnGetup事件(主人起床时,输出狗叫声"

汪汪"

和猫叫声"

喵喵"

)通过属性Owner封装字段_owner,并在其set访问函数中关联事件和事件处理方法。

(6)在程序主方法中依次创建鸡、主人、狗、猫对象,而后调用Sun.Rise方法,参考源代码如下:

staticvoidMain(){

Cockcock1=newCock("

花花"

Hosthost1=newHost("

祖逖"

Host1.Foster(cock1);

Dogdog1=newDog("

旺财"

dog1.Owner=host1;

Catcat1=newCat("

咪咪"

cat1.Owner=host1;

Sun.Rise();

(7)编译运行程序,看看"

太阳升起"

这一事件会引发怎样的连锁反应。

5.练习继承与多态

(1)在程序中新建一个电子收款机类POS,在其中定义一个保护字段_area,及其封装属性Area,用以表示收款机所在地区的代码。

(2)在程序中新建一个IPayable接口,为其定义一个表示支付Pay方法,方法原型为:

voidPay(decimalmoney,POSpos);

(3)在程序中新建一个银行卡类BankCard,在其中定义保护字段_account和_savings,分别表示银行卡账号和余额;

为其定义带参构造函数,以及用于查询、取款和存款的成员方法。

参考源代码如下(其中Math.Round方法用于将金额舍入到小数点后两位):

publicBankCard(stringaccount)

{account=account;

publicvirtualvoidQuery()//查询

Console.WriteLine("

银行卡{0}上余额为{1}”,_account,_savings);

publicvirtualvoidDeposit(decimalmoney)//存款

_savings+=money;

_savings=Math.Round(_savings,2);

publicvirtualvoidDraw(decimalmoney)//取款

if(_savings>

money)

_savings-=money;

else

Console.WriteLine(“余额不足”);

(4)在程序中新建一个支付卡类PayableCard,它继承了BankCard类和IPayable接口,并实现了接口的Pay方法:

当卡上余额大于支付金额时,从余额中减去支付金额并输出消息“支付XXX元”;

否则输出信息“余额不足,无法进行支付”。

(5)从PayableCard派生出本地卡类LocalCard和通行卡类GlobalCard,二者均包含字段_area,用以表示支付卡的地区代码。

GlobalCard还包含字段_rate,表示异地支付的手续费比例(简单起见,这里设为0.01)。

在这两个类中重载基类的构造函数和Pay方法。

当支付卡与所用P0S机的地区代码不同时,本地卡不支持异地支付,通行卡则需要扣除手续费。

(6)从PayableCard派生出信用卡类CreditCard,在其中定义字段_limit、_rate,以及只读属性Overdraw,分别表示透支额度、还款利率(可简单地设为0.01),以及目前欠款(余额为正时欠款为0,否则为余额的相反数)。

在类中重载Pay、Query和Deposit方法,其中支付不能超过透支额度;

查询时应输出信用卡的额度、欠款和余额;

而存款时如果存在欠款,那么需要扣除存款利息。

(7)在程序主方法中使用如下代码来测试上述类型,并解释程序的输出结果。

staticvoidMain()

POSpos1=newPOS(“010"

POSpos2=newPOS("

021"

BankCard[]cards=newCard[4];

cards[0]=newBankCard("

bj10000001"

);

cards[1]=newLocalCard("

bj90000009"

“010”);

cards[2]=newGlobalCard(“sh30000001”,“021”);

cards[3]=newCreditCard(“sh80000008"

10000);

for(inti=0;

i<

cards.Length;

i++)

cards[i].Deposit(2200);

{0}支付前”,cards[i]);

cards[i].Query();

if(cards[i]isIPayable)

((IPayable)cards[i]).Pay(1000,pos1);

((IPayable)cards[i]).Pay(1190,pos2);

Console.WriteLine(“{0}支付后"

cards[i]);

Console.WriteLine();

程序:

namespaceConsole

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2