C#实验报告5-3.2

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验内容:设计一个Windows应用程序,要求如下:(1)构造一个学生基本类;(2)分别构造小学生、中学生、大学生等派生类,要求具有不同的特征和行为;(3)定义一个泛型班级接口;(4)定义一个泛型的班级类来实现泛型班级接口,并利用班级类的实例来保存学生的信息。任务分析:本实验的Windows应用窗口包含四个Button控件,分别是“小学生”、“中学生”、“大学生”和“完成”。“小学生”、“中学生”、“大学生”实现添加学生信息。其中各类的不同字段如下:基类是抽象学生类,包含有姓名、学号和一个抽象方法;小学生继承基类,此外还包括语文成绩、数学成绩以及重写基类的方法;中学生继承基类,此外还包括文理科以及重写基类的方法;大学生继承基类,此外还包括主修专业、大学英语四级成绩以及重写基类的方法;“完成”实现输出各类学生的人数以及各类学生的信息。实例化3个泛型班级类,分别代表小学生班级、中学生班级、大学生班级。添加学生信息时,通过索引器添加,一定要在该类学生所拥有的属性中添加相应信息,方能添加成功,不拥有的属性不必添加。算法设计:本实验除了运用类的继承与类的多态,还使用索引、泛型接口和泛型类。通过泛型类实现泛型接口,通过索引将添加的信息存到泛型类的实例中。源程序:usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceStudents{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}publicabstractclassStudent//基类,抽象学生类{publicstringName;//学生姓名publicstringId;//学号publicStudent(stringname,stringid)//带两个参数的构造函数{Name=name;Id=id;}publicabstractstringInfo();//基类的抽象方法}publicclassPrimary:Student//小学生类,继承学生类{publicintChinese;//语文成绩publicintMath;//数学成绩publicstringInformation;//学生信息publicPrimary(stringname,stringid,intch,intma)//小学生类的构造函数:base(name,id)//继承基类构造函数{Chinese=ch;Math=ma;Information=string.Format(姓名:{0};学号:{1};语文成绩:{2};数学成绩:{3}\n,Name,Id,Chinese,Math);}publicoverridestringInfo()//多态方法,重写基类的方法{returnInformation;}}publicclassMiddle:Student//中学生类,继承学生类{publicstringAas;//文理科publicstringInformation;//学生信息publicMiddle(stringname,stringid,stringaas)//中学生类的构造函数:base(name,id)//继承基类构造函数{Aas=aas;Information=string.Format(姓名:{0};学号:{1};文理科:{2}\n,Name,Id,Aas);}publicoverridestringInfo()//多态方法,重写基类的方法{returnInformation;}}publicclassUniversity:Student//大学生类,继承学生类{publicstringMajor;//主修专业publicintCet_4;//英语四级成绩publicstringInformation;//学生信息publicUniversity(stringname,stringid,stringmajor,intcet_4)//大学生的构造函数:base(name,id)//继承基类的构造函数{Major=major;Cet_4=cet_4;Information=string.Format(姓名:{0};学号:{1};主修专业:{2};四级成绩:{3}\n,Name,Id,Major,Cet_4);}publicoverridestringInfo()//多态方法,重写基类的方法{returnInformation;}}publicinterfaceIGradesT//班级泛型接口{ListTthis[intindex]{get;}//声明T型索引器stringgetInfo();//声明获取T型学生信息的方法}//泛型班级类,继承班级泛型接口,T继承于学生类publicclassGradesT:IGradesTwhereT:Student{publicListTgra=newListT();//定义一个T类型的数组publicListTthis[intindex]//实现T型接口的索引器{get{returngra;}}publicstringgetInfo()//实现T型接口的方法,返回学生信息{stringstr=;//字符串初始化for(inti=0;igra.Count;i++)//将T型集合学生的所有信息都赋值给str{str+=gra[i].Info();//调用T型集合学生中的Info()方法获得学生信息}returnstr;//返回最后字符串结果}}GradesPrimarypr=newGradesPrimary();//小学生班级的实例化GradesMiddlemi=newGradesMiddle();//中学生班级的实例化GradesUniversityun=newGradesUniversity();//大学生班级的实例化privatevoidbtnprimary_Click(objectsender,EventArgse)//保存小学生的信息{stringname=textname.Text;//学生姓名stringid=textid.Text;//学生学号intch=Convert.ToInt32(textchinese.Text);//语文成绩intma=Convert.ToInt32(textmath.Text);//数学成绩Primaryp=newPrimary(name,id,ch,ma);//创建一个新的小学生对象pr.gra.Add(p);lblshow.Text=string.Format(小学生{0}已保存完成,name);}privatevoidbtnmiddle_Click(objectsender,EventArgse)//保存中学生信息{stringname=textname.Text;//学生姓名stringid=textid.Text;//学生学号stringaas=textaas.Text;//学生的文理科Middlem=newMiddle(name,id,aas);//通过索引存入中学生的信息mi.gra.Add(m);lblshow.Text=string.Format(中学生{0}已保存完成,name);}privatevoidbtnuniversity_Click(objectsender,EventArgse)//保存大学生信息{stringname=textname.Text;//学生姓名stringid=textid.Text;//学生学号stringmj=textmajor.Text;//学生主修专业intcet=Convert.ToInt32(textcet4.Text);//四级成绩Universityu=newUniversity(name,id,mj,cet);//通过索引存入大学生的信息un.gra.Add(u);lblshow.Text=string.Format(大学生{0}已保存完成,name);}privatevoidbtnok_Click(objectsender,EventArgse)//输出学生信息{stringshow=;//字符串初始化if(pr.gra.Count==0)//如果p为0,说明没添加小学生,返回“无”show=小学生人数为:无\n;else{//否则调用小学生班级中获取学生信息的方法show=小学生人数为:+pr.gra.Count+\n;show+=pr.getInfo();//调用getInfo()方法}if(mi.gra.Count==0)//如果m为0,说明没添加中学生,返回“无”show+=中学生人数为:无\n;else{//否则调用中学生班级中获取学生信息的方法show+=中学生人数为:+mi.gra.Count+\n;show+=mi.getInfo();//调用getInfo()方法}if(un.gra.Count==0)//如果u为0,说明没添加大学生,返回“无”show+=大学生人数为:无\n;else{//否则调用大学生班级中获取学生信息的方法show+=大学生人数为:+un.gra.Count+\n;show+=un.getInfo();//调用getInfo()方法}lblshow.Text=show;//最后把show赋给输出面板}}}运行后窗口如下:无添加任何信息时(如下图):输入学生信息如下:输入学生信息后:实验结果分析:本实验将三类学生划分到不同的泛型班级实例中,再实现不同类的接口方法,调用各类中的方法,从而达到保存学生信息的效果。

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功