2022年面向对象程序设计实验安排 .pdf

上传人:H****o 文档编号:40340336 上传时间:2022-09-09 格式:PDF 页数:13 大小:90.02KB
返回 下载 相关 举报
2022年面向对象程序设计实验安排 .pdf_第1页
第1页 / 共13页
2022年面向对象程序设计实验安排 .pdf_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《2022年面向对象程序设计实验安排 .pdf》由会员分享,可在线阅读,更多相关《2022年面向对象程序设计实验安排 .pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、面向对象程序设计实验实验 1 1.了解 Visual Studio2005 集成开发环境;2.开发一个简单的控制台应用程序,能够从键盘输入用户姓名,然后输出“用户姓名”“欢迎使用 C#!”。3.分别定义一个描述时钟(时、分、秒)的结构体和类,结构体和类都包含公有成员方法Set(int h,int m,int s)用于设置时钟,Print()显示时钟(显示格式为HH:MM:SS)。然后在主方法中进行演示,并了解结构体和类的区别。实验 2 1.定义一个课程类和一个学生类,这两个类包含的成员如下:class Course int Cno;/课程号string Cname;/课程名int Score;

2、/成绩public void InputCourse()/输入课程号、课程名和成绩 public override string ToString()return Cname+(+Cno+);public int GetScore()/返回课程成绩 class Student int Sno;/学号string Sname;/姓名int Cnums;/课程门数Course Courses;/所修课程public void SetStudent(int sno,string sname,int coursenums)/设置学生的学号、姓名和修读课程门数 public void InputScor

3、e()/输入所修读课程的课程名、课程号和成绩名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 13 页 -public string GetStudent()/返回学号号和姓名 public void ShowDegree()/输出各门课程对应的课程号、课程名和对应的成绩 public int GetAvgDegree()/计算并返回各门课程的平均成绩 请把上面的类补充完整,然后在Main 方法中定义一个Sutdent 对象,然后进行演示。实验 3 1.定义一个学生类(班级人数、总入学成绩、学号、姓名、入学成绩),其中班级人数、总入学成绩是静态成数据,如下:classStudent

4、 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/定义静态方法定义静态方法显示当前学生人数/定义静态方法,计算并返回所有学生

5、的平均入学成绩/定义析构函数,使学生人数减1,SumofDegree Degree 请把类 Student 补充完整,然后在Main 方法中演示。要求掌握构造函数、析构函数、静态成员、静态构造函数。实验 4 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 13 页 -1.定义一个复数类ComplexNumber,类的主要成员如下,请把按要求实现所有成员方法,并在程序的主方法中编写程序进行演示。classComplexNumber private double real,image;public ComplexNumber(double r,double i)real=r;imag

6、e=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 c

7、1,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 ToStrin

8、g()/重写该方法返回复数对象的字符串表示,要注意显示虚部的符合位;实验目的:运算符重载、字符串解析和格式化。实验 5 1.定义一个图形类Shape,Shape类的派生类圆类Circle,Circle 类的派生类球体Ball。类的成员如下,请实现没有实现的方法,然后再Main 方法中编程进行演示。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 13 页 -classShape protectedstring name;public Shape(string s)name=s;publicvirtualdouble GetArea()return 0;publicvirtualdo

9、uble GetVolume()return 0;publicvirtualvoid Show()/输出图形的名称、面积和体积 classCircle:Shape protecteddouble radio;/圆的半径/下面请定义构造函数初始化圆类/下面请重载 GetArea方法求圆的面积/下面请重载 Show 方法显示圆的名称、面积、体积 classBall :Circle /下面请定义构造函数初始化圆类/下面请重载 GetArea方法求圆的表面积/下面请重载 GetVolume方法求圆的体积/下面请重载 Show 方法显示圆的名称、面积、体积 2.把 1 中的 Shape类改成如下的抽象类

10、,然后再实现。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 13 页 -Abstract classShape protectedstring name;public Shape(string s)name=s;publicabstractdouble GetArea();publicabstractdouble GetVolume();publicvirtualvoid Show()/输出图形的名称、面积和体积 实验 6 1.定义铃声类、学生类和教师类,学生和教师可以订阅或取消订阅铃声事件,并对铃声作出正确的相应(上课铃响,输出字符串“回教室上课,分钟后休息”;下课铃响,输出

11、字符串“自由活动,分钟后回教室上课”。)要求分别使用:委托的发布和订阅、事件的发布和订阅、EventHandler 实现。实验 7 1.定义一个三角形类Triangle,并派生出直角三角形类VTriangle,类的成员如下。要求在三角形类的构造函数中判断三条边能否构成三角形,如果不能构成三角形主动引发异常ArgumentOutofRangeException,异常消息为“三条边不能构成三角形”;直角三角形的构造函数要能判断三条边能否构成直角三角形,若不能主动引发异常ArgumentOutofRangeException,异常消息为“三条边不能构成直角三角形”。并实现没有实现的成员方法。然后在M

12、ain 方法中进行演示。classTriangle protected double a,b,c;public Triangle(double x,double y,double z)public double GetCircle()/求周长 public double GetArea()/求面积 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 13 页 -classVTriangle :Triangle public VTriangle(double x,double y,double z):base(x,y,z)2.定义一个整数数列IntNumberSequence,然后派生

13、出等差数列DCSequence 和等比数列DBSequence,并自定义异常类型IntNumberSequenceException。类的结构如下,请实现没有实现的方法,并在Main 方法中演示。public classNumberSequenceException:ApplicationException private int item=-1;public int Item get return item;public NumberSequenceException(int item):base(string.Format(数列第 0 项异常,item)this.item=item;pub

14、lic NumberSequenceException(string msg,int item):base(msg)this.item=item;public classIntNumberSequence/整数数列类 public delegateint 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 in

15、t GetNumber(int n)int a=a0;for(int i=1;i n;i+)a=recur(a);return a;名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 13 页 -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 classDCNumberSequence:IntNumberSequence/派生类等差数列 int step;/等差

16、数列的步长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的 等

17、 差,引 发 异 常NumberSequenceException。public classDBNumberSequence: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 over

18、ride int GetNumbers(int n)/返回等比数列的所有元素,如果非等比或项比不为rate的等比,引发异常NumberSequenceException。实验 8 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 13 页 -1.定义接口ITowD,IThreeD。然后由 ITowD 派生出圆类;由圆类和 IThreeD 派生长圆锥类。结构如下,请实现没有实现的方法,并在Main 方法中演示。interface ITowD double GetCirCle();/平面图形周长double GetArea();/平面图形面积 interface IThreeD dou

19、ble 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.GetV

20、 olume()/求体积 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 13 页 -2.用隐式实现题目1.实验 9 定义一个学生类student,学生有学号、姓名、性别、出生日期四个字段。在Main 方法中定义一个学生数组ss,定义一个学生队列,把ss 中所有学生入队。然后输出学生队列中的各个学生信息;之后定义一个堆栈,把队列中的学生依次入栈,然后输出堆栈中各个学生的信息。(使用泛型类Stack和 Queue)自定义一个泛型类单链表LinkList,然后定义一个student 类(同 1)。然后在Main 方法中编程进行演示,建立链表,往链表中插入节点,删除节点,然后输出链表中

21、各个节点的信息。请参考如下例子。using System;using System.Collections;using System.Collections.Generic;namespace P12_8 public class LinkNode protected T data;protected LinkNode next;public T Data get return data;set data=value;public LinkNode Next get return next;set next=value;public LinkNode()/构造函数 public LinkNod

22、e(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;名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 13 页 -public class LinkList:ICollection,IList protected LinkNode first,last,current;public T Curr

23、ent get return current.Data;set current.Data=value;private int count=0;public int Count get 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(def

24、ault(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

25、 true;名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 13 页 -else return 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=th

26、is.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 fa

27、lse;this.RemoveAt(i);return true;public void CopyTo(T array,int index)/把链表的所有元素赋值到数组 LinkNode node=first.Next;while(node!=null&index array.Length)名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 13 页 -arrayindex+=node.Data;node=node.Next;protected LinkNode GetNode(int index)/返回指定索引值的节点 LinkNode node=first.Next;for(i

28、nt i=0;iindex;i+)if(node=null)throw new IndexOutOfRangeException(超出链表末尾);node=node.Next;return node;IEnumerator IEnumerable.GetEnumerator()return null;IEnumerator IEnumerable.GetEnumerator()return null;struct Appointment public DateTime time;public string customer;public Appointment(DateTime time,st

29、ring customer)this.time=time;this.customer=customer;public override string ToString()return time.ToLongDateString()+customer;class Demo public static void Main()LinkList ll=new LinkList();ll.Add(new Appointment(new DateTime(2009,5,4),Mike);ll.Add(new Appointment(new DateTime(2009,6,1),Jack);ll.Add(n

30、ew Appointment(new DateTime(2009,8,17),Kate);ll.Add(new Appointment(new DateTime(2009,12,1),Jenny);ll.Insert(2,new Appointment(new DateTime(2009,6,6),Hu Jin-tao);ll.RemoveAt(3);名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 13 页 -while(ll.MoveNext()Console.WriteLine(ll.Current);Console.Read();实验 10 1、把 C:abc.txt 文件复制到D 盘根目录下。2、定义一个学生类(学号、姓名、性别、出生日期、所在班级),编写程序从键盘依次输入10 个学生的信息并存入文件student.txt,然后在把这10 个学生的信息从文件student.txt 中读出,并输出到显示屏。名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 13 页 -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术总结

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁