面向对象程序设计实验安排.doc_第1页
面向对象程序设计实验安排.doc_第2页
面向对象程序设计实验安排.doc_第3页
面向对象程序设计实验安排.doc_第4页
面向对象程序设计实验安排.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计实验实验11. 了解Visual Studio2005集成开发环境;2. 开发一个简单的控制台应用程序,能够从键盘输入用户姓名,然后输出“用户姓名”“欢迎使用C#!”。3. 分别定义一个描述时钟(时、分、秒)的结构体和类,结构体和类都包含公有成员方法Set(int h,int m,int s)用于设置时钟,Print()显示时钟(显示格式为HH:MM:SS)。然后在主方法中进行演示,并了解结构体和类的区别。实验21.定义一个课程类和一个学生类,这两个类包含的成员如下:class Courseint Cno;/课程号string Cname;/课程名int Score;/成绩public void InputCourse()/输入课程号、课程名和成绩public override string ToString()return Cname+(+Cno+);public int GetScore()/返回课程成绩class Studentint Sno;/学号string Sname;/姓名int Cnums;/课程门数Course Courses;/所修课程public void SetStudent(int sno,string sname,int coursenums)/设置学生的学号、姓名和修读课程门数public void InputScore()/输入所修读课程的课程名、课程号和成绩public string GetStudent()/返回学号号和姓名public void ShowDegree()/输出各门课程对应的课程号、课程名和对应的成绩public int GetAvgDegree()/计算并返回各门课程的平均成绩请把上面的类补充完整,然后在Main方法中定义一个Sutdent对象,然后进行演示。实验31. 定义一个学生类(班级人数、总入学成绩、学号、姓名、入学成绩),其中班级人数、总入学成绩是静态成数据,如下:class Student static int NumofStudents,SumofDegree; int Sno; string Sname; decimal Degree; /请定义静态构造函数用于初始化NumofStudents0,SumofDegree=0/请定义无参构造函数,把Sno初始化为0,Sname初始化为null,Degree初始化为0.0,并使学生人数加1/请定义有三个参数的构造函数初始化学生的Sno,Sname和Degree,并使学生人数加1,总成绩Degree/定义实例方法显示学生的Sno、Sname和Degree/定义静态方法定义静态方法显示当前学生人数/定义静态方法,计算并返回所有学生的平均入学成绩/定义析构函数,使学生人数减1,SumofDegreeDegree 请把类Student补充完整,然后在Main方法中演示。要求掌握构造函数、析构函数、静态成员、静态构造函数。实验41.定义一个复数类ComplexNumber,类的主要成员如下,请把按要求实现所有成员方法,并在程序的主方法中编写程序进行演示。class ComplexNumber private double real, image; public ComplexNumber(double r, double i) real = r; image = i; public static ComplexNumber operator +(ComplexNumber c1, ComplexNumber c2) /重载加法运算符; public static ComplexNumber operator -(ComplexNumber c1, ComplexNumber c2) /重载减法运算符; public static ComplexNumber operator *(ComplexNumber c1, ComplexNumber c2) /重载乘法运算符; public static ComplexNumber operator /(ComplexNumber c1, ComplexNumber c2) /重载除法运算符; public static ComplexNumber Parse(string s) /定义方法Parse能够解析“a+bi”,“a-bi”,“-a+bi”,“-a-bi”,其中a、b为正数; public static bool TryParse(string s,out ComplexNumber c) /定义方法TryParse用于解析“a+bi”,“a-bi”,“-a+bi”,“-a-bi”,其中a、b为正数; /若字符串格式不正确返回false,否则返回true public override string ToString() /重写该方法返回复数对象的字符串表示,要注意显示虚部的符合位; 实验目的:运算符重载、字符串解析和格式化。实验51. 定义一个图形类Shape,Shape类的派生类圆类Circle,Circle类的派生类球体Ball。类的成员如下,请实现没有实现的方法,然后再Main方法中编程进行演示。class Shape protected string name; public Shape(string s) name=s; public virtual double GetArea() return 0; public virtual double GetVolume() return 0; public virtual void Show() /输出图形的名称、面积和体积 class Circle : Shape protected double radio;/圆的半径 /下面请定义构造函数初始化圆类 /下面请重载GetArea方法求圆的面积 /下面请重载Show方法显示圆的名称、面积、体积 class Ball : Circle /下面请定义构造函数初始化圆类 /下面请重载GetArea方法求圆的表面积 /下面请重载GetVolume方法求圆的体积 /下面请重载Show方法显示圆的名称、面积、体积 2. 把1中的Shape类改成如下的抽象类,然后再实现。Abstract class Shape protected string name; public Shape(string s) name=s; public abstract double GetArea(); public abstract double GetVolume(); public virtual void Show() /输出图形的名称、面积和体积 实验61.定义铃声类、学生类和教师类,学生和教师可以订阅或取消订阅铃声事件,并对铃声作出正确的相应(上课铃响,输出字符串“回教室上课,分钟后休息”;下课铃响,输出字符串“自由活动,分钟后回教室上课”。)要求分别使用:委托的发布和订阅、事件的发布和订阅、EventHandler实现。实验71. 定义一个三角形类Triangle,并派生出直角三角形类VTriangle,类的成员如下。要求在三角形类的构造函数中判断三条边能否构成三角形,如果不能构成三角形主动引发异常ArgumentOutofRangeException,异常消息为“三条边不能构成三角形”;直角三角形的构造函数要能判断三条边能否构成直角三角形,若不能主动引发异常ArgumentOutofRangeException,异常消息为“三条边不能构成直角三角形”。并实现没有实现的成员方法。然后在Main方法中进行演示。class Triangle protected double a, b, c; public Triangle(double x, double y, double z) public double GetCircle() /求周长 public double GetArea() /求面积 class VTriangle : Triangle public VTriangle(double x, double y, double z) : base(x, y, z) 2. 定义一个整数数列IntNumberSequence,然后派生出等差数列DCSequence和等比数列DBSequence,并自定义异常类型IntNumberSequenceException。类的结构如下,请实现没有实现的方法,并在Main方法中演示。public class NumberSequenceException : ApplicationException private int item = -1; public int Item get return item; public NumberSequenceException(int item) : base(string.Format(数列第0项异常, item) this.item = item; public NumberSequenceException(string msg, int item) : base(msg) this.item = item; public class IntNumberSequence/整数数列类 public delegate int Recur(int a); protected Recur recur; protected int a0 = -1; public int A0 get return a0; public IntNumberSequence(int a0, Recur recur) this.a0 = a0; this.recur = recur; public virtual int GetNumber(int n) int a = a0; for (int i = 1; i n; i+) a = recur(a); return a; public virtual int GetNumbers(int n) int numbers = new intn; numbers0 = a0; for (int i = 1; i n; i+) numbersi = recur(numbersi - 1); return numbers; public class DCNumberSequence : IntNumberSequence/派生类等差数列 int step;/等差数列的步长 public DCNumberSequence(int a0,int step, Recur recur) : base(a0, recur) this.step = step; public override int GetNumber(int n)/重写基类的方法 /返回等差数列的下一项,如果非等差或步长不是step的等差,引发异常NumberSequenceException。 public override int GetNumbers(int n) /返回等差数列的所有元素,如果非等差或步长不是step的等差,引发异常NumberSequenceException。 public class DBNumberSequence : IntNumberSequence/派生类递减数列 int rate;/等比数列项比 public DBNumberSequence(int a0,int rate, Recur recur) : base(a0, recur) this.rate = rate; public override int GetNumber(int n)/重写基类的方法 /返回等比数列的下一项,如果非等比或项比不为rate的等比,引发异常NumberSequenceException。 public override int GetNumbers(int n) /返回等比数列的所有元素,如果非等比或项比不为rate的等比,引发异常NumberSequenceException。 实验81. 定义接口ITowD,IThreeD。然后由ITowD派生出圆类;由圆类和IThreeD派生长圆锥类。结构如下,请实现没有实现的方法,并在Main方法中演示。 interface ITowD double GetCirCle();/平面图形周长 double GetArea();/平面图形面积 interface IThreeD double GetArea();/立体图形表面积 double GetVolume();/体积 class Circle : ITowD double r; public Circle(double r) this.r = r; double ITowD.GetCirCle() /求周长 double ITowD.GetArea() /求面积 class YuanZhui : Circle, IThreeD double h; public YuanZhui(double r, double h) : base(r) this.h = h; double IThreeD.GetArea() /求表面积 double IThreeD.GetVolume() /求体积 2.用隐式实现题目1.实验9定义一个学生类student,学生有学号、姓名、性别、出生日期四个字段。在Main方法中定义一个学生数组ss,定义一个学生队列,把ss中所有学生入队。然后输出学生队列中的各个学生信息;之后定义一个堆栈,把队列中的学生依次入栈,然后输出堆栈中各个学生的信息。(使用泛型类Stack和Queue)自定义一个泛型类单链表LinkList,然后定义一个student类(同1)。然后在Main方法中编程进行演示,建立链表,往链表中插入节点,删除节点,然后输出链表中各个节点的信息。请参考如下例子。using System;using System.Collections;using System.Collections.Generic;namespace P12_8public class LinkNodeprotected T data;protected LinkNode next;public T Dataget return data; set data = value; public LinkNode Nextget return next; set next = value; public LinkNode()/构造函数 public LinkNode(T t) data = t; /*重载运算符把当前节点移到第n个后续节点。*/public static LinkNode operator (LinkNode node, int n)LinkNode node1 = node;for (int i = 0; i n & node1 != null; i+)node1 = node1.next;return node1;public class LinkList : ICollection, IListprotected LinkNode first, last, current;public T Currentget return current.Data; set current.Data = value; private int count = 0;public int Countget return count; public bool IsReadOnly get return false; public T thisint index/索引get return this.GetNode(index).Data; set this.GetNode(index).Data = value; public LinkList()/构造函数current = last = first = new LinkNode(default(T);public void Add(T t)/向链表尾部添加节点last.Next = new LinkNode(t);last = last.Next;count+;public void Clear()/清空链表current = last = first;first.Next = null;public bool Contains(T t)/判断指定的节点是否存在于链表中return (this.IndexOf(t) = 0);public bool MoveNext()/将当前位置移到下一个节点if (current.Next != null)current = current.Next;return true;elsereturn false;public void Reset()/复位链表 current = first; public int IndexOf(T t) /返回指定节点的位置LinkNode node=first.Next;int i=0;while (node != null)if (node.Data.Equals(t)return i;node = node.Next;return -1;public void Insert(int index, T t)/插入节点到指定位置LinkNode node = this.GetNode(index - 1);LinkNode newnode = new LinkNode(t);if (node.Next != null)newnode.Next = node.Next;node.Next = newnode;count+;public void RemoveAt(int index)/删除指定位置的节点LinkNode node = this.GetNode(index - 1);node.Next = node.Next.Next;count-;public bool Remove(T t)/删除指定的节点int i = this.IndexOf(t);if (i 0)return false;this.RemoveAt(i);return true;public void CopyTo(T array, int index)/把链表的所有元素赋值到数组LinkNode node = first.Next;while (node != null & index array.Length)arrayindex+ = node.Data;node = node.Next;protected LinkNode GetNode(int index)/返回指定索引值的节点LinkNode node = first.Next;for(int i=0;iindex;i+)if(node=null)throw new IndexOutOfRangeException(超出链表末尾);node=node.Next;return node;IEnumer

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论