14秋12级net程序设计实验指导手册统招Word格式文档下载.docx
《14秋12级net程序设计实验指导手册统招Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《14秋12级net程序设计实验指导手册统招Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。
实验一继承与多态编程练习
【实验目的】
1.理解继承的含义,掌握派生类的定义方法和实现;
2.理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。
3.编写体现类的继承性(成员变量,成员方法,成员变量隐藏)的程序;
4.编写体现类多态性(成员方法重载,构造方法重载)的程序。
【实验要求】
1.写出程序,并调试程序,要给出测试数据和实验结果。
2.整理上机步骤,总结经验和体会。
3.完成实验日志和上交程序。
【实验内容】
一、类的继承和构造函数的灵活应用
1、创建一个描述图书信息的类并测试。
类中应保存有图书的书号、标题、作者、出版社、价格等信息。
1)定义图书类Book,Book类中包含isbn(书号)、title(标题)、author(作者)、press(出版社)、price(价格)等私有字段。
由于对一本书来说,书号是唯一的,因此,isbn字段应声明为只读的。
2)为Book类中的每个字段定义相应的属性,由于isbn字段只读的,其相应属性也应该是只读的。
3)为Book类定义两个构造函数,其中,一个构造函数将所有字段都初始化为用户指定的值,另一个构造函数只要求用户指定有关书号的信息,它将调用上一个构造函数初始化对象,初始化时,价格取0,除书号的其他信息取“未知”。
4)为Book类定义方法Show,Show方法用于显示图书的所有信息。
5)编写Main方法测试Book类,Main方法中分别使用上述两个构造函数创建Book对象。
实验1程序:
classBook{
privatereadonlystringisbn;
//书号
privatestringtitle;
//标题
privatestringauthor;
//作者
privatestringpress;
//出版社
privateintprice;
//价格
publicBook(stringisbn):
this(isbn,"
未知"
"
0){
}
publicBook(stringisbn,stringtitle,stringauthor,stringpress,intprice){
this.isbn=isbn;
this.title=title;
this.author=author;
this.press=press;
this.price=price;
publicstringISBN{
get{
returnisbn;
}
publicstringTitle{
returntitle;
set{
title=value;
publicstringAuthor{
returnauthor;
author=value;
publicstringPress{
returnpress;
press=value;
publicintPrice{
returnprice;
price=value;
publicvoidShow(){
Console.WriteLine("
书号:
{0}"
isbn);
标题:
title);
作者:
author);
出版社:
{0}"
press);
价格:
price);
}
classTest5_1{
staticvoidMain(){
Bookbook1=newBook("
978-7-111-23423-4"
);
book1.Show();
Console.WriteLine();
book1.Title="
C#程序设计(C#2.0版)"
;
book1.Author="
刘慧宁"
book1.Press="
机械工业出版社"
book1.Price=32;
book1=newBook("
978-7-302-15800-4"
Java程序设计"
温秀梅"
清华大学出版社"
29);
2、编写一个程序计算出球、圆柱和圆锥的表面积和体积。
1)定义一个基类圆,至少含有一个数据成员:
半径;
2)定义基类的派生类:
球、圆柱、圆锥,都含有求体积函数,可以都在构造函数中实现,也可以将求体积和输出写在一个函数中,或者写在两个函数中,请比较使用。
3)定义主函数,求球、圆柱、圆锥的和体积。
classMyCircle
{
doubler;
publicMyCircle(doubler)
this.r=r;
classMyBall:
MyCircle
doublevolumn;
publicMyBall(doubler)
:
base(r)
volumn=Math.PI*r*r*r;
Console.WriteLine("
球的体积是:
volumn);
classMyCylinder:
MyCircle
publicMyCylinder(doubler,doubleh)
publicvoidcalvolomn(doubler,doubleh)
volumn=Math.PI*r*r*h;
publicvoidprint()
圆柱体的体积是:
volumn);
classMyCone:
doubleh,volumn;
publicMyCone(doubler,doubleh)
this.h=h;
publicvoidcalvolumn(doubler,doubleh)
volumn=Math.PI*r*r*h/3;
圆锥体的体积是:
publicclassTester
publicstaticvoidMain()
Console.Write("
请输入球半径:
"
doubler=Convert.ToDouble(Console.ReadLine());
MyBallmb=newMyBall(r);
请输入圆柱体高度:
doubleh=Convert.ToDouble(Console.ReadLine());
MyCylindermc=newMyCylinder(r,h);
mc.calvolomn(r,h);
mc.print();
请输入圆锥体高度:
doubleh2=Convert.ToDouble(Console.ReadLine());
MyConemo=newMyCone(r,h2);
h2={0},r={1}"
h2,r);
mo.calvolumn(r,h2);
Console.ReadLine();
3、设计一个图书卡片类Card,用来保存图书馆卡片分类记录。
1)这个类的成员包括书名、作者、馆藏数量。
2)至少提供两个方法,store书的入库处理,show显示图书信息。
3)程序运行时,可以从控制台上输入需要入库图书的总量,根据这个总数创建Card对象数组,然后输入数据。
4)可以选择按书名、作者、入库量进行排序。
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceLibraryMIS
{
classCard
privatestringtitle,author;
privateinttotal;
publicCard()
title="
author="
total=0;
publicCard(stringtitle,stringauthor,inttotal)
this.title=title;
this.author=author;
this.total=total;
publicvoidstore(refCardcard)//使用ref关键字进行引用传递
title=card.title;
author=card.author;
total=card.total;
publicvoidshow()
Title:
{0},Author:
{1},Total:
{2}"
title,author,total);
publicstringTitle//Title的属性可读可写
get
{
returntitle;
set
title=value;
publicstringAuthor
returnauthor;
author=value;
publicstringTotal
get
returnTotal;
total=int.Parse(value);
classTable
staticvoidMain(string[]args)
**********图书管理系统*******"
2012版1.0,作者:
王晓宁"
TableT=newTable();
Card[]books;
int[]index;
inti,k;
Cardcard=newCard();
请输入需要入库图书的总数:
stringNo=Console.ReadLine();
intnum=int.Parse(No);
books=newCard[num];
for(i=0;
i<
num;
i++)
books[i]=newCard();
index=newint[num];
请输入书名:
card.Title=Console.ReadLine();
请输入作者:
card.Author=Console.ReadLine();
请输入入库量:
No=Console.ReadLine();
card.Total=No;
books[i].store(refcard);
//使用ref关键字进行引用传递
index[i]=i;
请选择按什么关键字排序(1.按书名,2.按作者,3.按入库量)"
intchoice=int.Parse(No);
switch(choice)
case1:
T.sortTitle(books,index);
break;
case2:
T.sortAuthor(books,index);
case3:
T.sortTotal(books,index);
k=index[i];
books[k].show();
Console.Read();
//按存入书的书名的首字母进行排序
voidsortTitle(Card[]book,int[]index)
inti,j,m,n,temp;
for(m=0;
m<
index.Length-1;
m++)
for(n=0;
n<
index.Length-m-1;
n++)
i=index[n];
j=index[n+1];
if(string.Compare(book[i].Title,book[j].Title)>
0)
temp=index[n];
index[n]=index[n+1];
index[n+1]=temp;
//按存入书的作者的名字的首字母进行排序
voidsortAuthor(Card[]book,int[]index)
if(string.Compare(book[i].Author,book[j].Author)>
//按存入书的数量进行排序
voidsortTotal(Card[]book,int[]index)
if(int.Parse(book[i].Total)>
int.Parse(book[j].Total))
实验运行结果
1——1按书名的首字母进行排序
1——2按作者名字的首字母进行排序
二、类的多态性练习
1、设计雇员系统,定义雇员基类,共同的属性,姓名、地址和出生日期,派生类:
程序员,秘书,高层管理,清洁工,他们有不同的工资算法,其中高级主管和程序员采用底薪加提成的方式,高级主管和程序员的底薪分别是5000元和2000元,秘书和清洁工采用工资的方式,工资分别是3000和1000,以多态的方式处理程序。
namespaceVariables
publicclassemployee
internalstringname,address,birthday;
publicemployee(stringname,stringaddress,stringbirthday)
this.name=name;
this.address=address;
this.birthday=birthday;
internaldoublesalary;
publicvirtualvoidSalary()
foroverriding"
publicclasssenior:
employee
publicsenior(stringname,stringaddress,stringbirthday)
base(name,address,birthday)
senior"
publicoverridevoidSalary()
salary=10000;
thesalaryforsenoir{0}is{1}"
name,salary);
}
publicclassprogrammer:
publicprogrammer(stringname,stringaddress,stringbirthday)
programmer"
salary=5000;
thesalaryforprogrammeris{0}"
salary);
publicclasssecretary:
publicsecretary(stringname,stringaddress,stringbirthday)
secretary"
salary=2000;
thesalaryforsecretaryis{0}"
publicclassdustman:
employee
publicdustman(stringname,stringaddress,stringbirthday)
dustman"
salary=1000;
{0}'
sbirthdayis{1}.Asadustman,thesalaryis{2}"
name,birthday,salary);
employeeemp;
emp=newsenior("
Jansy"
"
zibo"
1970-09-11"
emp.Salary();
emp=newdustman("
Tom"
zhangdian"
1960-01-22"
实验二接口编程练习
1.了解什么是接口,接口和抽象类的异同,掌握接口的方法实现,接口方法的重定义。
一、分析实现接口的程序文件
分析以下实现接口的程序文件并回答问题:
●本程序中的接口包含方法的构成是哪些;
●实现接口的类包含哪些元素?
●类实现接口方法的参数如何变换实现的?
●给出程序的输出结果。
代码如下: