1、14秋12级net程序设计实验指导手册统招实验要求一、可读性编程高手都知道:一个好的程序要具备可读性,可方便自己也可方便别人。所以,要培养一个良好的编程习惯,可注意以下几方面:1 代码的缩进;2 有效使用空格;3 简明的注释;4 意义明确的命名;5 着重表示的常量。二、亲手编写源程序在编写C# 程序过程中,还可以利用一些可视化的开发工具,它们可以综合使用C# 的编译器和调试器等,例如Symantec 公司的Visual Caf、Kawa、Sun 公司的C# Worshop 和C# Studio、Inprise 公司的JBuilder、微软的Visual J+等,使用编程开发工具可以加快编程的速
2、度。但在初始学习时还是最好亲手编写源程序,以便理解类和编程思想。三、立即运行程序编写的源程序要立即上机编译运行来检验程序中存在的问题。通过运行的结果验证程序的功能是否实现。即时有一些系统类的方法、变量也需要上机实验去了解它们的含义。实验报告姓名: 学号: 日期: 实验名称: 成绩: 一、实验目的及要求二、实验环境Windows XP操作系统,Visual 2005三、实验源程序及关键代码解释四、实验调试过程及运行结果五、实验总结:对上机实践结果进行分析,问题回答,上机的心得体会及改进意见。第一部分 面向对象编程实验一 继承与多态编程练习【实验目的】1. 理解继承的含义,掌握派生类的定义方法和实
3、现;2. 理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。3. 编写体现类的继承性(成员变量,成员方法,成员变量隐藏)的程序;4. 编写体现类多态性(成员方法重载,构造方法重载)的程序。【实验要求】1. 写出程序,并调试程序,要给出测试数据和实验结果。2. 整理上机步骤,总结经验和体会。3. 完成实验日志和上交程序。 【实验内容】一、类的继承和构造函数的灵活应用1、创建一个描述图书信息的类并测试。类中应保存有图书的书号、标题、作者、出版社、价格等信息。1)定义图书类Book,Book类中包含isbn(书号)、title(标题)、auth
4、or(作者)、press(出版社)、price(价格)等私有字段。由于对一本书来说,书号是唯一的,因此,isbn字段应声明为只读的。2)为Book类中的每个字段定义相应的属性,由于isbn字段只读的,其相应属性也应该是只读的。3)为Book类定义两个构造函数,其中,一个构造函数将所有字段都初始化为用户指定的值,另一个构造函数只要求用户指定有关书号的信息,它将调用上一个构造函数初始化对象,初始化时,价格取0,除书号的其他信息取“未知”。4)为Book类定义方法Show,Show方法用于显示图书的所有信息。5)编写Main方法测试Book类,Main方法中分别使用上述两个构造函数创建Book对象。
5、实验1程序:class Book private readonly string isbn; /书号 private string title; /标题 private string author; /作者 private string press; /出版社 private int price; /价格 public Book(string isbn):this(isbn,未知,未知,未知,0) public Book(string isbn,string title,string author,string press,int price) this.isbn=isbn; this.tit
6、le=title; this.author=author; this.press=press; this.price=price; public string ISBN get return isbn; public string Title get return title; set title=value; public string Author get return author; set author=value; public string Press get return press; set press=value; public int Price get return pr
7、ice; set price=value; public void Show() Console.WriteLine(书号: 0,isbn); Console.WriteLine(标题: 0,title); Console.WriteLine(作者: 0,author); Console.WriteLine(出版社:0,press); Console.WriteLine(价格: 0,price); class Test5_1 static void Main() Book book1=new Book(978-7-111-23423-4); book1.Show(); Console.Writ
8、eLine(); book1.Title=C#程序设计(C#2.0版); book1.Author=刘慧宁; book1.Press=机械工业出版社; book1.Price=32; book1.Show(); Console.WriteLine(); book1=new Book(978-7-302-15800-4,Java程序设计,温秀梅,清华大学出版社,29); book1.Show(); 2、编写一个程序计算出球、圆柱和圆锥的表面积和体积。1)定义一个基类圆,至少含有一个数据成员:半径;2)定义基类的派生类:球、圆柱、圆锥,都含有求体积函数,可以都在构造函数中实现,也可以将求体积和输出
9、写在一个函数中,或者写在两个函数中,请比较使用。3)定义主函数,求球、圆柱、圆锥的和体积。class MyCircle double r; public MyCircle(double r) this.r = r; class MyBall : MyCircle double volumn; public MyBall(double r) : base(r) volumn = Math.PI * r * r * r; Console.WriteLine(球的体积是:0,volumn); class MyCylinder:MyCircle double volumn; public MyCyli
10、nder(double r,double h) : base(r) public void calvolomn(double r,double h) volumn = Math.PI * r * r * h; public void print() Console.WriteLine(圆柱体的体积是:0, volumn); class MyCone:MyCircle double h,volumn; public MyCone(double r, double h) : base(r) this.h = h; public void calvolumn(double r,double h) v
11、olumn = Math.PI * r * r * h / 3; Console.WriteLine(圆锥体的体积是:0, volumn); public class Tester public static void Main() Console.Write(请输入球半径:); double r=Convert.ToDouble(Console.ReadLine(); MyBall mb = new MyBall(r); Console.Write(请输入圆柱体高度:); double h = Convert.ToDouble(Console.ReadLine(); MyCylinder m
12、c = new MyCylinder(r,h); mc.calvolomn(r,h); mc.print(); Console.Write(请输入圆锥体高度:); double h2 = Convert.ToDouble(Console.ReadLine(); MyCone mo = new MyCone(r, h2); Console.WriteLine(h2=0,r=1,h2,r); mo.calvolumn(r,h2); Console.ReadLine(); 3、设计一个图书卡片类Card,用来保存图书馆卡片分类记录。1)这个类的成员包括书名、作者、馆藏数量。2)至少提供两个方法,st
13、ore书的入库处理,show显示图书信息。3)程序运行时,可以从控制台上输入需要入库图书的总量,根据这个总数创建Card对象数组,然后输入数据。4)可以选择按书名、作者、入库量进行排序。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace LibraryMIS class Card private string title, author; private int total; public Card() title = ; author = ; total = 0
14、; public Card(string title, string author, int total) this.title = title; this.author = author; this.total = total; public void store(ref Card card)/使用ref关键字进行引用传递 title = card.title; author = card.author; total = card.total; public void show() Console.WriteLine(Title:0,Author:1,Total:2, title, auth
15、or, total); public string Title/Title的属性可读可写 get return title; set title = value; public string Author get return author; set author = value; public string Total get return Total; set total = int.Parse(value); using System;using System.Collections.Generic;using System.Linq;using System.Text;namespac
16、e LibraryMIS class Table static void Main(string args) Console.WriteLine(*图书管理系统*); Console.WriteLine(2012版1.0, 作者:王晓宁); Table T = new Table(); Card books; int index; int i, k; Card card = new Card(); Console.Write(请输入需要入库图书的总数:); string No = Console.ReadLine(); int num = int.Parse(No); books = new
17、Cardnum; for (i = 0; i num; i+) booksi = new Card(); index = new intnum; for (i = 0; i num; i+) Console.Write(请输入书名:); card.Title = Console.ReadLine(); Console.Write(请输入作者:); card.Author = Console.ReadLine(); Console.Write(请输入入库量:); No = Console.ReadLine(); card.Total = No; booksi.store(ref card);/使
18、用ref关键字进行引用传递 indexi = i; Console.Write(请选择按什么关键字排序(1.按书名,2.按作者,3.按入库量)); No = Console.ReadLine(); int choice = int.Parse(No); switch (choice) case 1: T.sortTitle(books, index); break; case 2: T.sortAuthor(books, index); break; case 3: T.sortTotal(books, index); break; for (i = 0; i num; i+) k = ind
19、exi; booksk.show(); Console.Read(); /按存入书的书名的首字母进行排序 void sortTitle(Card book, int index) int i, j, m, n, temp; for (m = 0; m index.Length - 1; m+) for (n = 0; n 0) temp = indexn; indexn = indexn + 1; indexn + 1 = temp; /按存入书的作者的名字的首字母进行排序 void sortAuthor(Card book, int index) int i, j, m, n, temp;
20、for (m = 0; m index.Length - 1; m+) for (n = 0; n 0) temp = indexn; indexn = indexn + 1; indexn + 1 = temp; /按存入书的数量进行排序 void sortTotal(Card book, int index) int i, j, m, n, temp; for (m = 0; m index.Length - 1; m+) for (n = 0; n int.Parse(bookj.Total) temp = indexn; indexn = indexn + 1; indexn + 1
21、= temp; 实验运行结果11按书名的首字母进行排序 12按作者名字的首字母进行排序二、 类的多态性练习1、设计雇员系统,定义雇员基类,共同的属性,姓名、地址和出生日期,派生类:程序员,秘书,高层管理,清洁工,他们有不同的工资算法,其中高级主管和程序员采用底薪加提成的方式,高级主管和程序员的底薪分别是5000元和2000元 ,秘书和清洁工采用工资的方式,工资分别是3000和1000,以多态的方式处理程序。using System;namespace Variables public class employee internal string name, address, birthday;
22、 public employee(string name,string address, string birthday) this.name = name; this.address = address; this.birthday = birthday; internal double salary; public virtual void Salary() Console.WriteLine(for overriding); public class senior:employee public senior(string name,string address, string birt
23、hday ) : base(name, address, birthday) Console.WriteLine(senior); public override void Salary() salary = 10000; Console.WriteLine(the salary for senoir 0 is1,name,salary); public class programmer:employee public programmer(string name, string address, string birthday) : base(name, address, birthday)
24、 Console.WriteLine(programmer); public override void Salary() salary = 5000; Console.WriteLine(the salary for programmer is0, salary); public class secretary:employee public secretary(string name, string address, string birthday) : base(name, address, birthday) Console.WriteLine(secretary); public o
25、verride void Salary() salary = 2000; Console.WriteLine(the salary for secretary is0, salary); public class dustman : employee public dustman(string name, string address, string birthday) : base(name, address, birthday) Console.WriteLine(dustman); public override void Salary() salary = 1000; Console.
26、WriteLine(0s birthday is 1.As a dustman, the salary is2, name,birthday,salary); public class Tester public static void Main() employee emp; emp = new senior(Jansy, zibo, 1970-09-11); emp.Salary(); emp = new dustman(Tom, zhangdian, 1960-01-22); emp.Salary(); Console.ReadLine(); 实验二 接口编程练习【实验目的】1. 了解什么是接口,接口和抽象类的异同,掌握接口的方法实现,接口方法的重定义。【实验要求】1. 写出程序,并调试程序,要给出测试数据和实验结果。2. 整理上机步骤,总结经验和体会。3. 完成实验日志和上交程序。【实验内容】一、分析实现接口的程序文件分析以下实现接口的程序文件并回答问题: 本程序中的接口包含方法的构成是哪些; 实现接口的类包含哪些元素? 类实现接口方法的参数如何变换实现的? 给出程序的输出结果。代码如下:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1