河北工业大学 c# NET 实验报告.docx
- 文档编号:7290723
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:16
- 大小:78.47KB
河北工业大学 c# NET 实验报告.docx
《河北工业大学 c# NET 实验报告.docx》由会员分享,可在线阅读,更多相关《河北工业大学 c# NET 实验报告.docx(16页珍藏版)》请在冰豆网上搜索。
河北工业大学c#NET实验报告
1、创建一个描述图书信息的类并测试。
类中应保存有图书的书号、标题、作者、出版社、价格等信息。
1)定义图书类Book,Book类中包含isbn(书号)、title(标题)、author(作者)、press(出版社)、price(价格)等私有字段。
由于对一本书来说,书号是唯一的,因此,isbn字段应声明为只读的。
2)为Book类中的每个字段定义相应的属性,由于isbn字段只读的,其相应属性也应该是只读的。
3)为Book类定义两个构造函数,其中,一个构造函数将所有字段都初始化为用户指定的值,另一个构造函数只要求用户指定有关书号的信息,它将调用上一个构造函数初始化对象,初始化时,价格取0,除书号的其他信息取“未知”。
usingSystem;
namespacecstest
{
classBook{
privatereadonlyStringisbn;
privateStringtitle;
privateStringauthor;
privateStringpress;
privatefloatprice;
publicStringISBN{
get{
returnisbn;
}
}
publicStringTitle
{
get
{
returntitle;
}
set{
title=value;
}
}
publicStringAuthor
{
get
{
returnauthor;
}
set
{
author=value;
}
}
publicStringPress
{
get
{
returnpress;
}
set
{
press=value;
}
}
publicfloatPrice
{
get
{
returnprice;
}
set
{
price=value;
}
}
publicBook(Stringnisbn,Stringntitle,Stringnauthor,Stringnpress,floatnprice){
isbn=nisbn;
title=ntitle;
author=nauthor;
press=npress;
price=nprice;
}
publicBook(Stringnisbn):
this(nisbn,"unknow","unknow","unknow",0)
{}
publicvoidprint(){
Console.WriteLine("本书的书号为"+isbn);
Console.WriteLine("本书的标题为"+title);
Console.WriteLine("本书的作者为"+author);
Console.WriteLine("本书的出版社为"+press);
Console.WriteLine("本书的出版社为"+price);
}
}
classProgram
{
staticintMain(string[]args)
{
Bookmybook=newBook("myIsbn","mybook","me","mypress",20);
Bookyourbook=newBook("yourisbn");
mybook.print();
yourbook.print();
return0;
}
}
}
2、编写一个程序计算出球、圆柱和圆锥的表面积和体积。
1)定义一个基类圆,至少含有一个数据成员:
半径;
2)定义基类的派生类:
球、圆柱、圆锥,都含有求体积函数,可以都在构造函数中实现,也可以将求体积和输出写在一个函数中,或者写在两个函数中,请比较使用。
3)定义主函数,求球、圆柱、圆锥的和体积。
usingSystem;
namespacecstest
{
classcircle{
protecteddoubler;
publiccircle(doublenr){r=nr;}
}
classball:
circle{
publicball(doublenr):
base(nr){}
publicdoublev;
publicvoidprintv()
{
v=(4*3.14*r*r*r)/3;
Console.WriteLine("圆锥的体积为"+v);
}
}
classyuanzhu:
circle{
privatedoubleh;
publicyuanzhu(doublenr,doublenh):
base(nr){h=nh;}
publicdoublev;
publicvoidprintv()
{
v=3.14*r*r*h;
Console.WriteLine("圆锥的体积为"+v);
}
}
classyuanzhui:
circle{
privatedoubleh;
publicyuanzhui(doublenr,doublenh):
base(nr){h=nh;}
publicdoublev;
publicvoidprintv(){
v=3.14*r*r*h/3;
Console.WriteLine("圆锥的体积为"+v);
}
}
classProgram
{
staticintMain(string[]args)
{
ballmyball=newball
(2);
myball.printv();
yuanzhumyyuanzhu=newyuanzhu(2,2);
myyuanzhu.printv();
yuanzhuimtyuanzhui=newyuanzhui(2,2);
myyuanzhu.printv();
return0;
}
}
}
3、设计一个图书卡片类Card,用来保存图书馆卡片分类记录。
1)这个类的成员包括书名、作者、馆藏数量。
2)至少提供两个方法,store书的入库处理,show显示图书信息。
3)程序运行时,可以从控制台上输入需要入库图书的总量,根据这个总数创建Card对象数组,然后输入数据。
4)可以选择按书名、作者、入库量进行排序。
usingSystem;
namespacecstest
{
classCard{
publicStringbname;
publicStringauthor;
publicintnumber;
publicvoidstore(intnum){number=number+num;}
publicvoidshow(){
Console.WriteLine("书名是:
"+bname);
Console.WriteLine("书的作者是:
"+author);
Console.WriteLine("书的馆藏数量是:
"+number);
}
}
classProgram
{
staticintMain(string[]args)
{
Console.WriteLine("请输入需要入库的图书总量");
intn=Convert.ToInt32(Console.ReadLine());
Card[]mycard=newCard[n];
for(inti=0;i mycard[i]=newCard(); } mycard[1].bname="hello"; for(inti=0;i Console.WriteLine("请输入第"+(i+1)+"张卡片的信息"); Console.WriteLine("请输入书名"); mycard[i].bname=Convert.ToString(Console.ReadLine()); Console.WriteLine("请输入作者"); mycard[i].author=Convert.ToString(Console.ReadLine()); Console.WriteLine("请输入馆藏数量"); mycard[i].number=Convert.ToInt32(Console.ReadLine()); } return0; } } } 1、设计雇员系统,定义雇员基类,共同的属性,姓名、地址和出生日期,派生类: 程序员,秘书,高层管理,清洁工,他们有不同的工资算法,其中高级主管和程序员采用底薪加提成的方式,高级主管和程序员的底薪分别是5000元和2000元,秘书和清洁工采用工资的方式,工资分别是3000和1000,以多态的方式处理程序。 usingSystem; namespacecstest { classemployee{ protectedstringname; protectedstringaddress; protectedstringbirthday; publicemployee(){} publicemployee(Stringnname,Stringnaddress,Stringnbirthday){ name=nname; address=naddress; birthday=nbirthday; } publicvirtualvoidsolary(){} } classcoder: employee{ publiccoder(){} coder(Stringnname,Stringnaddress,Stringnbirthday): base(nname,naddress,nbirthday){} publicoverridevoidsolary(){ Console.WriteLine("程序员的工资2000元底薪加提成"); } } classmajor: employee { publicmajor(){} major(Stringnname,Stringnaddress,Stringnbirthday): base(nname,naddress,nbirthday){} publicoverridevoidsolary() { Console.WriteLine("主管的工资5000元底薪加提成"); } } classmishu: employee { publicmishu(){} mishu(Stringnname,Stringnaddress,Stringnbirthday): base(nname,naddress,nbirthday){} publicoverridevoidsolary() { Console.WriteLine("秘书的工资3000"); } } classqingjie: employee { publicqingjie(){} qingjie(Stringnname,Stringnaddress,Stringnbirthday): base(nname,naddress,nbirthday){} publicoverridevoidsolary() { Console.WriteLine("清洁工的工资3000"); } } classProgram { staticintMain(string[]args) { codermycoder=newcoder(); mishumymishu=newmishu(); majormymajor=newmajor(); qingjiemyqingjie=newqingjie(); employeemybase; mybase=mycoder; mybase.solary(); mybase=mymishu; mybase.solary(); mybase=mymajor; mybase.solary(); mybase=myqingjie; mybase.solary(); return0; } } } 分析以下实现接口的程序文件并回答问题: ●本程序中的接口包含方法的构成是哪些; publicintCompareTo(IComparablecomp) ●实现接口的类包含哪些元素? privateuinttotalSeconds; publicTimeSpan() publicTimeSpan(uintinitialSeconds) publicuintSeconds publicintCompareTo(IComparablecomp) ●类实现接口方法的参数如何变换实现的? TimeSpancompareTime=(TimeSpan)comp; ●给出程序的输出结果。 ●Ispentmoretimethantheworldrecordholder ● 委托 程序功能: 定义一个含有两个整型参数名叫Calculation返回类型为double的委托,分别实现两个匹配的求和、求平均值的方法,并在主函数中测试它。 usingSystem classTester { publicdelegatevoidmyDelegate(floata,floatb); publicstaticvoidsum(floata,floatb){ Console.WriteLine("和为"+(a+b)); } publicstaticvoidaver(floata,floatb){ Console.WriteLine("平均数为"+(a+b)/2); } publicstaticvoidcalcu(floata,floatb,myDelegatecal) { cal(a,b); } publicstaticvoidMain() { floata=10; floatb=40; calcu(a,b,sum); calcu(a,b,aver); } } 一、异常处理部分 建立一个名字为Meteorologist的类,其中含有一个12个int类型元素的数组rainfall,通过构造函数给赋值;一个方法头为publicintGetRainfall(intindex),此方法返回rainfall元素中与给定的index对应的值,在GetRainfall添加处理任何从GetRainfall方法中抛出的越界异常所需要的代码。 为读取每月降雨从空中吸收并带到地面的污染物,在类中添加数组pollution,也包含12个元素,在构造方法中赋任意值;在类中编写另一个方法,头为: publicintGetAveragePollution(intindex),来计算给定月份单位降雨量中的污染物,例如,计算4月份单位降雨量所含污染物用以下计算来实现: averagePollution=pollutin[3]/rainfall[3];在此方法中实现处理异常的代码。 注意,此方法既可以抛出索引越界异常,也可以抛出被0除异常。 编写测试代码。 usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; namespacecsexp { classmetro{ privateint[]rainfall; privateint[]pollution; publicint[]averpollution; publicmetro(int[]a){ rainfall=a; pollution=newint[12]{1,2,3,4,0,3,2,3,2,3,4,5}; averpollution=newint[12]; } publicintGetRainFall(inti){ try { if(i<12&&i>=0){returnrainfall[i];} else { thrownewException("越界"); } } catch(Exceptione) { Console.WriteLine(e.Message); } return0; } publicintgetaverage(){ try{ for(inti=0;i<12;i++){ if(rainfall[i]==0)thrownewException("dividedbyzero"); averpollution[i]=pollution[i]/rainfall[i]; }} catch(Exceptione){ Console.WriteLine(e.Message); } return0; } } classProgram { staticvoidMain(string[]args) { int[]a=newint[12]{2,3,4,5,2,4,0,3,5,3,2,4}; metrom=newmetro(a); m.getaverage(); Console.Read(); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 河北工业大学 c# NET 实验报告 河北 工业大学 实验 报告