已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验内容:设计一个Windows应用程序,要求如下:(1) 构造一个学生基本类;(2) 分别构造小学生、中学生、大学生等派生类,要求具有不同的特征和行为;(3) 定义一个泛型班级接口;(4) 定义一个泛型的班级类来实现泛型班级接口,并利用班级类的实例来保存学生的信息。任务分析:本实验的Windows应用窗口包含四个Button控件,分别是 “小学生”、“中学生”、 “大学生”和“完成”。“小学生”、“中学生”、 “大学生”实现添加学生信息。其中各类的不同字段如下:基类是抽象学生类,包含有姓名、学号和一个抽象方法;小学生继承基类,此外还包括语文成绩、数学成绩以及重写基类的方法;中学生继承基类,此外还包括文理科以及重写基类的方法;大学生继承基类,此外还包括主修专业、大学英语四级成绩以及重写基类的方法;“完成”实现输出各类学生的人数以及各类学生的信息。实例化3个泛型班级类,分别代表小学生班级、中学生班级、大学生班级。添加学生信息时,通过索引器添加,一定要在该类学生所拥有的属性中添加相应信息,方能添加成功,不拥有的属性不必添加。算法设计:本实验除了运用类的继承与类的多态,还使用索引、泛型接口和泛型类。通过泛型类实现泛型接口,通过索引将添加的信息存到泛型类的实例中。源程序:using System;using System.Collections;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace Students public partial class Form1 : Form public Form1() InitializeComponent(); public abstract class Student/基类,抽象学生类 public string Name;/学生姓名 public string Id;/学号 public Student(string name, string id)/带两个参数的构造函数 Name = name; Id = id; public abstract string Info();/基类的抽象方法 public class Primary : Student/小学生类,继承学生类 public int Chinese;/语文成绩 public int Math;/数学成绩 public string Information;/学生信息 public Primary(string name, string id, int ch, int ma)/小学生类的构造函数 : base(name, id)/继承基类构造函数 Chinese = ch; Math = ma; Information = string.Format(姓名:0;学号:1;语文成绩:2;数学成绩:3n,Name,Id,Chinese,Math); public override string Info()/多态方法,重写基类的方法 return Information; public class Middle : Student/中学生类,继承学生类 public string Aas;/文理科 public string Information;/学生信息 public Middle(string name, string id, string aas)/中学生类的构造函数 : base(name, id)/继承基类构造函数 Aas = aas; Information = string.Format(姓名:0;学号:1;文理科:2n,Name,Id,Aas); public override string Info()/多态方法,重写基类的方法 return Information; public class University : Student/大学生类,继承学生类 public string Major;/主修专业 public int Cet_4;/英语四级成绩 public string Information;/学生信息 public University(string name, string id, string major, int cet_4)/大学生的构造函数 : base(name, id)/继承基类的构造函数 Major = major; Cet_4 = cet_4; Information = string.Format(姓名:0;学号:1;主修专业:2;四级成绩:3n,Name,Id,Major,Cet_4); public override string Info()/多态方法,重写基类的方法 return Information; public interface IGrades/班级泛型接口 List thisint index get;/声明T型索引器 string getInfo();/声明获取T型学生信息的方法 /泛型班级类,继承班级泛型接口,T继承于学生类 public class Grades : IGrades where T : Student public List gra = new List();/定义一个T类型的数组 public List thisint index/实现T型接口的索引器 get return gra; public string getInfo()/实现T型接口的方法,返回学生信息 string str = ;/字符串初始化 for (int i = 0; i gra.Count; i+)/将T型集合学生的所有信息都赋值给str str += grai.Info();/调用T型集合学生中的Info()方法获得学生信息 return str;/返回最后字符串结果 Grades pr = new Grades();/小学生班级的实例化 Grades mi = new Grades();/中学生班级的实例化 Grades un = new Grades();/大学生班级的实例化 private void btnprimary_Click(object sender, EventArgs e)/保存小学生的信息 string name = textname.Text;/学生姓名 string id = textid.Text;/学生学号 int ch = Convert.ToInt32(textchinese.Text);/语文成绩 int ma = Convert.ToInt32(textmath.Text);/数学成绩 Primary p = new Primary(name,id,ch,ma);/创建一个新的小学生对象 pr.gra.Add(p); lblshow.Text = string.Format(小学生 0 已保存完成, name); private void btnmiddle_Click(object sender, EventArgs e)/保存中学生信息 string name = textname.Text;/学生姓名 string id = textid.Text;/学生学号 string aas = textaas.Text;/学生的文理科 Middle m = new Middle(name, id, aas);/通过索引存入中学生的信息 mi.gra.Add(m); lblshow.Text = string.Format(中学生 0 已保存完成, name); private void btnuniversity_Click(object sender, EventArgs e)/保存大学生信息 string name = textname.Text;/学生姓名 string id = textid.Text;/学生学号 string mj = textmajor.Text;/学生主修专业 int cet = Convert.ToInt32(textcet4.Text);/四级成绩 University u = new University(name, id, mj, cet);/通过索引存入大学生的信息 un.gra.Add(u); lblshow.Text = string.Format(大学生 0 已保存完成, name); private void btnok_Click(object sender, EventArgs e)/输出学生信息 string show = ;/字符串初始化 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 /否则调用大学生班级中获取学生
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 园艺产品加工工岗位应急处置技术规程
- 2025年中国Web3应用行业市场研究报告
- 河北省衡水市2026届高三年级上册9月质量检测数学试题(含答案解析)
- 贵州省遵义市桐梓县四校联考2025-2026学年七年级上学期10月月考数学试卷(含答案)
- 四大古文明探秘
- 第23课《孟子三章》知识拓展+课文全解-2025-2026学年统编版八年级语文上册
- 2025湖北省建筑设计院有限公司部分中层管理岗位市场化选聘笔试历年参考题库附带答案详解
- 2025宁夏泰益欣生物科技股份有公司招聘180人笔试历年参考题库附带答案详解
- 2025江西抚州高新区财投集团有限公司及其子公司引进紧缺专业人才7人笔试历年参考题库附带答案详解
- 2025年国元农业保险股份有限公司安徽分公司校园招聘40人笔试历年参考题库附带答案详解
- 消防排烟系统安装施工方案
- 历年全国计算机等级考试二级C++真题及答案
- 金融专业生涯发展报告
- 新概念英语第一册lesson1-10测试题
- 汽油安全技术说明书(MSDS)
- 乐高大颗粒搭建课件:吉他
- 机械加工工艺过程卡片+工序卡
- 直播停播协议
- 地下管线保护措施专项方案
- 水处理药剂采购投标方案(技术标)
- 北师大版三年级数学上册 (丰收了)乘与除教学课件
评论
0/150
提交评论