eda技术基础实验报告

2025-01-20 版权声明 我要投稿

eda技术基础实验报告(共9篇)

eda技术基础实验报告 篇1

湖北师范学院电工电子实验教学省级示范中心电子版实验报告

什么什么设计(研究)

红色部分提交时请删除!!

题目:“什么内容”的设计或“什么内容”的研究,例如: 基于FPGA的数字抢答器设计 基于FPGA的等精度数字频率计设计 Verilog HDL同步时序电路研究 一种简易数字频率计设计

基于FPGA的DDS信号发生器的设计

更多参考“大学生电子实验室”论坛设计选题指南 一.任务解析

根据对设计选题的理解,明确要做什么,要达到什么要求(参数、指标)。二.方案论证

对所要完成的设计任务,参考相关资料,提出设计方案,拿不同方案进行对比分析,选择你能够实现的方案,并明确指出为什么要选择此方案,较其它方案有何优点。三.实验步骤

方案的具体实施,按实际实施过程认真做好原始记录,可以包括单元电路仿真分析,部分指标测试(实际效果)等等,描述演示效果要明确所用设备,说明实验箱,使用了什么仪器等。四.结果分析

对所测试结果(演示现象)做分析,得出结论(描述现象)。五.经验总结

对完成任务情况进行总结,是否达到预期的设计,效果如何,还有哪些可以改进的,改进建议,特别是错误分析。

如果是自己独立完成的,我相信一定会有很多心得体会可以总结的,挫折的苦恼,成功的喜悦。如果你完成了一个设计性实验,一点体会都没有,那么我相信你一定是走捷径完成了任务,而没有真正独立完成本设计任务!老师批改报告,往往把学生的心得体会看成一个亮点。心得体会一定要认真写,把自己做设计性实验的过程认真总结,让老师感受到你是一步一步完成该设计性实验选题的。

eda技术基础实验报告 篇2

《电工基础》是工科电类相关专业的一门专业基础理论课程。该课程的教学目的是系统地介绍直流电路、交流电路、一阶动态电路的基本概念、基本定理定律、基本分析方法。它是《模拟电子技术》、《数字电子技术》等课程的前修基础课程。它在专业课程中的地位是举足轻重、不可动摇的。它对培养学生的逻辑思维能力,提高学生的分析问题、思考问题、解决问题的能力,加强学生的动手操作、实践能力都有着十分重要的作用。

实验课程是理论课程的延续,是对理论知识的验证,是对理论知识的巩固和拓展。由此可见,实验课程是课程教学中不可或缺的一个重要环节,它关系到学生能否将所学的理论知识巩固拓展,举一反三,关系到学生的动手操作能力、分析和解决问题的能力、创新设计能力能否得到培养和提高。况且电工基础实验是电类相关的专业学生第一次接触到的专业基础实验课程,是学生从理论学习到实践验证的一个重要途径。随着无线电通信技术、互联网技术、电子信息技术的不断飞速发展,新理论、新技术、新成果的不断涌现,电工基础实验这门课程的内容也要随之不断更新,要用发展的观念来对待这门课程,不断与时俱进,补充新知识、新技术、新实验。

2. 电工基础实验的现状

很多高校在实验室的硬件建设方面存在或多或少的问题,诸如:实验室设备投入少,仪器设备老化严重,仪器设备的维护技术落后,专业实验室管理人员缺少,专业设备维护人员缺少等。同时,电工基础实验使用的设备比较多,设备使用率较高,再加上学生的一些不当操作,比如仪表量程的选择错误、实验线路的搭建错误等,实验设备经常会出现一些故障,如果不能及时维修,就会影响到实验课程的正常教学,影响到高校教学质量的提高。

传统的电工基础实验教学存在很多问题,比如:强调定理定律的验证,验证型的实验太多,而且学生又容易忽略对误差的分析。扩展型、创新型、设计型、工程型等综合性实验太少,对学生的创新能力、设计能力缺乏培养和提高。教学的模式比较单一,实验手段比较落后,使学生觉得做实验就是在完成任务,实验的积极性不高,影响了实验的效果和实验课程在学生心目中的地位。

3. EDA技术的发展简介

随着电子技术和计算机技术的发展,EDA技术得到了迅猛的发展。EDA技术的发展经历了三个阶段,20世纪70年代为计算机辅助设计(CAD技术)阶段,人们开始用计算机辅助进行IC版图编辑,PCB布局布线,取代了手工操作;20世纪80年代为计算机辅助工程(CAE技术)阶段,与CAD技术相比,CAE除了有纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合到一起,实现了工程设计;20世纪90年代为电子设计自动化(EDA技术)阶段,这时的EDA工具不仅具有电子系统的设计能力,而且能提供独立于工艺和厂家的系统级设计能力,具有高级抽象的设计构思手段。

4. 基于EDA技术的电工基础实验改革

高校的实验教学应该以训练学生的基本实验技能,培养学生的逻辑思维和分析解决问题的能力,培养学生的综合设计能力和创新思维为教学目标。因此,将不受实验室硬件条件限制的EDA技术引入到电工基础实验中来,是高校实验课程改革的必然趋势。学生可以通过EDA软件仿真的方法完成验证型、创新型、设计型、工程型的全部综合性实验。高校还可以根据电子技术的发展,开发适应工程实践需要的实验项目,切实联系实际开设实验。

基于EDA技术开设电工基础实验,利用软件进行仿真实验,可以弥补实验设备不足、实验设备老化、元器件短缺、专业维护人员缺少、维护技术落后的缺点,从而降低实验教学成本。还能利用软件中的各种仪器设备和分析方法,使学生更快更好地完成实验内容,帮助学生更快更扎实地掌握基本知识,提高教学效率和效果。将EDA仿真技术和传统的电工基础实验教学相结合是现代教育发展的必然趋势,是对传统的电工基础实验教学的一次改革,同时能更好地培养学生的分析问题、解决问题的能力、逻辑思维能力和创新设计能力,提高学生的竞争力,适应市场对人才的需求。

目前,在各个高校的实验课程教学中普遍采用的EDA软件主要有Multisim 2001和EWB (Electronics Workbench,即电子设计工作平台)两种。这两种EDA软件都是加拿大交互图像技术有限公司(Interactive Image Technologies,简称IIT公司)推出的以Windows为基础的仿真工具,适用于板级的模拟电路、数字电路的设计工作。它包含电路原理图的图形输入,具有丰富的仿真分析能力,利用它们提供的虚拟仪器可以以比在实验室中更灵活的方式进行电工基础实验、仿真电路的实际运行情况,熟悉常用电子仪器测量方法。

EDA仿真技术与传统电工基础实验相结合,既能够传授实验技能,又能启发学生的创新思维,促使学生融会贯通、举一反三,更好地理解和掌握知识。因此在教学中,要遵循由浅入深,由易到难、由基础到综合、由理论验证到创新设计、循序渐进的原则,按照基础型、综合型、创新型三个层次开展实验教学。基础型的实验以定理定律的验证为主,由学生通过EDA软件搭建实验电路进行仿真。综合型的实验以学生动手为主,教师辅导为辅,教师只给出设计要求或者设计指标,让学生自由发挥,自己查阅资料,设计电路。创新型实验就是学生自己动手,自己动脑,主动学习,通过无题目、无要求、无步骤的自主型实验,培养学生的独立思考能力,充分调动他们的学习积极性,给他们更多的时间和空间发挥想象,激发学生的创造力。

5. 结语

通过对高校电工基础实验课程改革的探索研究,本文对基于EDA技术的电工基础实验课程与传统的实验课程进行了比较,总结归纳出基于EDA技术的电工基础实验课程的诸多优点和优势。只有将基于EDA技术的电工基础实验课程和传统的实验课程有机地结合起来,发挥各自所长,才能满足高校对于开设创新型、设计型、工程型的综合性实验的要求。这对于提高学生的学习兴趣和积极性,提高学习效率和效果,提高高校的教学质量,有着非常深远的意义。

参考文献

[1]陈松, 金鸿.电子设计自动化技术.南京:东南大学出版社, 2003年8月.

[2]王涌, 顾伟驷, 贾立新.电工学实验改革以及自制实验示范建设.电气电子教学学报, 2006年12月第28卷第5期:70-71.

EDA技术实验教学改革探讨 篇3

关键词:EDA;SignalTap II;生产实例;创新实验

TN02-4

《电子设计自动化(EDA)技术》是电子科学与技术、电子信息工程、信息对抗技术、自动化、光信息科学与技术、信息显示与光电技术、生物医学工程、微电子学、集成电路设计与集成系统等电类专业基础主干课程。该课程开设的目的是使学生掌握采用硬件描述语言、借助EDA工具进行电子电路设计的方法。该课的实践性极强,实验环节在整个教学中占的比重很大,对培养学生动手能力和电路设计知识的综合运用能力能起到较强的作用,学生普遍反映该课的开设对就业有较大帮助,被誉为“饭碗”课程。

一、与多门课程相结合

目前《EDA技术实验》课程的实验项目往往只是专门针对于《EDA技术》课程,很少与其他课程联系在一起的项目。EDA技术的应用领域是非常广泛的,在电子、通信、医疗、军事、机械以及生物等领域都有应用。如果实验项目中没有与这些领域相关课程联系在一起的项目,会导致学生学了这门技术却不知道如何应用。因此,将《EDA技术实验》课程与多门课程相结合,有利于学生将EDA技术应用于各个领域。可以与以下课程相结合:

1.与《单片机技术》课程结合,如利用FPGA和单片机实现DDS信号发生器;

2.与《通信原理》课程结合,如2FSK(二进制频移键控)的FPGA实现、帧同步的实现等通信有关的简单算法实验;

3.与《数字信号处理》课程结合,如利用FPGA实现FFT(快速傅里叶变换);

4.与《嵌入式系统》课程结合,设计FPGA与ARM芯片协同工作的项目,以达到速度、面积等各方面的性能需求。

二、针对不同的专业,增加与专业相关的特色实验项目

《EDA技术实验》课程是强电类专业(如自动化专业、电气工程专业)和弱电类专业(如电子信息工程、通信工程专业)学生必修的一门实验课,但是目前该课程不同专业的实验项目却完全一样,没有针对不同的专业而开设一些特色的实验项目。有的学校这门课的实验项目没有一个是针对强电类的实验项目,导致强电类的学生认为这门课对他们不重要,无法将这门技术应用于自己的专业,不利于应用型人才的培养。因此,可以增加与专业相关的特色实验项目,比如对于通信工程专业,可以增加利用VHDL实现QPSK(四相相移键控)、伪随机序列以及直接序列通信系统的设计,对于电子信息工程专业,可以增加信号发生器、电子元件测量仪以及多路数据采集系统等的设计,对于电气工程及其自动化专业,可以增加利用FPGA控制步进电机等内容。

三、引入Nios、Multisim设计内容,利用SignalTap II逻辑分析仪

目前《EDA技术实验》课程的实验项目大多都是利用Quartus II软件的基本功能实现,手段太单一,学生只掌握了Quartus II软件的基本操作。事实上,Quartus II软件的功能十分强大,可以与Nios、Multisim结合,完成目前最热门的技术—SOPC嵌入式系统的设计,还可以在没有逻辑分析仪的情况下,利用SignalTap II完成电路逻辑分析。而手段单一的实验项目,导致学生无法掌握Quartus II软件的这些非常有用的功能。因此,可以增加基于SOPC的Nios实验,并利用Multisim对电路进行仿真,利用SignalTap II对硬件进行逻辑分析,以达到设计要求。基于Nios的嵌入式系统设计近年来是EDA技术的热门方向之一,有必要让学生了解基于Nios的FPGA系统设计,Multisim有着强大的电路仿真功能,是电路设计不可或缺的利器,而SignalTap II是在没有逻辑分析仪的实验环境下最好的硬件逻辑分析工具。

四、 引入生产实际应用实例

《EDA技术实验》课程实验教学内容没有或较少向生产应用延伸,当学生走出校门,面对社会实践,无从下手,缺乏把所学知识应用于社会实践的能力,不能很快地为生产实际服务。因此,可以增加生产实际应用项目和相关研究新进展,培养 “专业技术精、实践能力强”的应用型人才。如引入基于FPGA的出租车计费器、交通灯控制系统、洗衣机控制器、波形发生器、频率测量仪等等的设计项目。

五、增加开设综合创新性实验

由于目前部分EDA技术实验指导书的内容过于详尽,学生只要按照指导书步骤就能得到实验结果,使的实验演变成输入程序连接导线的“机械性实验”,难于调动学生对实验的积极性,不利于活跃学生思维,使的学生缺乏独立分析问题、解决问题的能力,难于提高实践动手能力。因此这样的实验很难发挥学生学习的主动性和能动性,阻碍了学生创新思维的发挥和实践能力的提高。因此,可以增加开设综合创新性实验,如数字电子钟、电子万年历、智能密码锁、数字化语音存储与回放系统、以及数字幅频均衡功率放大器等等。根据EDA技术主要面向工程实际的特点和电子设计的自主创新性,在实验过程中注重学生自主设计能力和创新能力的培养,以及与工程实际相结合的动手能力的培养。

六、结语

通过对EDA技术实验课程的教学改革与实践,改善目前EDA技术实验课程中存在的一些问题,从而提高EDA技术实验课程的教学效果,提高学生的实践动手能力,促进学生所学知识与生产实际紧密结合,使学生成为名符其实的应用型人才。

参考文献:

[1]潘松,黄继业.EDA技术实用教程[M].3版.北京:科学出版社,2006.

[2]张波.“EDA技术”课程的创新性实验教学[J].实验室科学,2013,16(4):71-73.

[3]譚菊.项目驱动模式下EDA技术课程改革探索[J].教育教学论坛,2014(9):186.

[4]吕晓兰, 左敬龙. 应用型本科院校EDA课程实验教学改革探索 [J].中国电力教育,2013,34:147-149.

[5]金宁治,李文娟,高晗璎,周美兰. 电气专业“EDA技术”课程实验教学的改革[J].电气电子学报,2015,37(4):86-88.

作者简介:

eda技术基础实验报告 篇4

江苏省溧阳市职业技术学校

王怡华

[内容摘要]随着我国国民经济结构正进行战略性调整,高新技术产业发展日新月异,生产、经营、服务、管理一线的新知识、新技术、新工艺、新方法层出不穷,作为培养一线技术人员和高素质劳动者的职业教育,能否把这些“四新”内容及时传授给受教育者,关系到职业教育的结合发展。第三次全国教育工作会议以来,国家、省、市、县分别启动了骨干教师的培训,师资培养培训工作得到了前所未有的重视。笔者07年参加了浙江师范大学组织的全国中等职业教育骨干教师培训班并进行了为期两个月的学习,进一步加深了专业思想的认识,同时对本专业新技术有了进一步的认识,经过又近一年的学习,对EDA技术在电子技术课程教学中的实践有一定认识。

[关键字]电子技术 EDA技术 虚拟实验 探究式教学

一、问题的提出

电子技术是一门实践性很强的课程,现今职业学校机电、电子、通信、计算机以及相关专业均开设了该课程,同时配合理论教学还开设了实验课用以提高教学效果。电子技术实验,大部分学校采用各类实验箱(或面包版),实验过程学生要完成电路搭建、结果验证,对于一些小型电路,各类实验箱还能应付得了,但稍稍复杂一些的电路就难以对付了,往往由于芯片短缺、电路连接过于复杂、故障难以查找,加上实验箱长期使用导致接触不良等等,实际实验过程中,电路搭建成功率低,导致学生对实验的兴趣下降,影响实际教学效果。现在随着个人计算机提高和互联网的发展,功能强大的电子仿真软件EDA技术逐渐与广大专业教师见面,我们将它逐步地应用到教学之中,出现了全新的教学模式,在电子技术教学中应用EDA技术将是一个必然的趋势。

二、EDA技术基本功能介绍 1.EDA基本功能

EDA(Electronic Design Automation)是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术新成果而研制成功的电子CAD通用软件包。主要能辅助进行三方面的设计工作,既IC设计、电子电路设计和PCB设计。EDA技术经过了三个阶段的发展。从70年代的(CAD)阶段和80年代的(CAE)阶段,到90年代的电子系统设计自动化(EDA)阶段。EDA技术代表了当今电子设计技术的最新发展方向。它不仅为电子技术设计人员提供了“自顶向下”的设计理念,同时也为教学提供了一个极为便捷的、科学的实验教学平台。电工电子类专业课程中的电工基础、模拟电子技术、数字电子技术都可以通过EDA仿真软件,进行电路图的绘制、设计、仿真试验和分析。应该说将EDA仿真软件应用到电工、电子类专业的教学中是一种教学手段的创新,也是提高教学质量的优选方法。

2.EDA技术在教学中应用的主要优越性(以Multisim为例):(1).能弥补设备种类和数量不足,充分扩展学生的思维空间,给他们更大的自由发挥的天地。使学生可以根据不同需要无限制地进行各种电路分析实验,验证实验,常规实验,设计实验。充分调动学生学习的主观能动性,培养创新能力

(2).可以大大节省人力、物力、时间,提高实验效率。以数字钟实验为例。在传统实验中,如果要把数字钟电路全部接,要用到集成电路24块,电阻、电容、三极管等近20个元件,在数字实验箱的面包板上插接几百根导线,耗时一天有余,如果出现插孔松动,接触不良等毛病,效果还不大理想。而用Multisim进行仿真,只要有台计算机就等于有了取之不尽,用之不竭的元器件,而且无须担心仪器与元器件的损坏。同样的实验几十分钟就可以完成。

(3).用Multisim进行仿真模拟实验,实验过程非常接近实际操作的效果,实验的真实感强。系统提供了近似真实的子元器件、工作环境和仿真仪器,使学生感到仿佛在真实的环境下做各种实验;各元器件选择范围广,参数修改方便,不象实际操作那样多次地把元件焊下而损坏器件和印刷电路板。使电路调试变得快捷方便。对《模拟电子技术》以及《数字电子技术》课程中的绝大部分电路都能应用,不仅能用于对单个电路特性和原理进行验证,也能就用于多级的组合电路。

(4).Multisim为我们提供了一个很好的多媒体操作平台,使我们能够在教学过程中随时提供实验、演示和电路分析。直观的形象显示有助于培养学生的观察能力和分析问题的能力,有助于教学重和难点的讲解,可激发学生的学习兴趣。教师可以在多媒体教室中深入浅出地分析各种电路的特性,讲解各种参数改变对路的影响。学生可以结合学习内容,进行接近于实际电路的调试分析,有利于对加深对书本理论的理解,不失为一种理论系实际的好方法。

三、EDA技术在电子技术教学中的应用

电子技术课程是电子类专业的支柱性课程,它要求学生熟悉各种电子器件,掌握电路图的识读、绘制以及电路工作原理,还要学会掌握和合理运用分析方法。EDA软件正是提供了各种支持,恰到好处地符合这样的教学要求。同样,电子线路课程又是一个紧密联系实践的课程,EDA软件的强大的仿真功能更是能把实践带入课堂,带入教学的每一个环节中去。基于Multisim的电子技术课堂教学,是在虚拟的电子环境(在计算机上的电子实验室)中,师生借助计算机自然地、高效地与电子元器件、电子仪器、分析工具等进行实时交互,相互影响,为开展探究式教学提供了必要的支持。

1.应用于课堂教学环节,开展探究式教学,是师生高效交流的平台。探究式教学能充分调动学生的积极性,挖掘学生的学习潜力,使学生变被动的接受为主动的探求,也充分体现了教师主导和学生主体,这是一种科学的、民主的教学方法。以前由于课堂上师生之间没有实时交互的平台,教师是单向地教,学生是被动地学,而Multisim的出现,恰到好处地为师生搭建了一个良好地交互平台。因为,首先,在Multisim创建的电子技术课堂教学情境中,电子元器件、仪器仪表、仿真分析方法同等地提供给教师和学生,使学生产生亲临电子电路实际环境之中的感觉,学生是从虚拟环境的内部向外观察,不再是旁观者,而变成了电路知识的探究者;其次,Multisim对电路参数的设置、电子分析和仿真、数据图形的处理以及结果的输出都只需简单的操作即可完成,这样就使师生的交互能在轻击几下鼠标之下完成。因而在课堂上师生间能通过简捷、轻松的方式完成充分的交流,学生的疑问、新奇的想法等都可以及时验证和尝试。真正为师生搭建了一个开放性的“所想即所得”的高效交流平台。在这个平台上,才能使探究式教学发现它的作用。

探究式教学一般遵循“问题情境——搭建模型——解决问题”三个步骤。创设问题情境是引发学生探究心理学习新知识的切入点。例如在单管共射放大电路的教学中,第一步,教师先创设问题情境,要把幅值为10mV ,频率为1KHz的正弦信号放大50倍,负载电阻是2KΩ。第二步,学生调用已有知识(三极管放大特性、三极管放大状态的外部条件、三极管输入、输出特性),在Multisim环境中,调用虚拟元器件和虚拟和仪器仪表,搭建电路模型,最后在教师的提问、启发、引导下,对电路不断地分析、测试、调整,完成放大电路,即解决了问题。这样,在大量的动脑、动手的实践中,学生学到了新知识(共射放大电路的基本结构、静态工作点、截止失真、饱和失真、频响特性等)。总之,EDA技术为探究式教学提供了优质的平台,也必将为学生的学习提供优质的保证。

2.应用于实验教学环节,开展虚拟实验,是实际硬件实验的有力补充和拓展。实验教学是电子线路教学的重要环节,通过实验能够巩固电子线路基础知识,培养学生的实践技能、动手能力和分析问题及解决问题的能力,启发学生的创新意识和创新思维潜力。Multisim这款优秀的EDA软件提供了上千种电子元器件和十数种仪器仪表,完全能够虚拟各种电子实验,区别于应用实体的实际硬件实验,它叫虚拟实验。

虚拟实验在实验教学中的应用主要表现在以下三个方面:

(1).学校缺少某项实验的实验设备时,虚拟实验可以代替硬件实验。有些学校由于缺少实验设备,部分硬件实验无法展开,就完全可以用虚拟实验代替。虚拟实验的一大特点就是不受实验设备、场地的条件限制,只要有计算机,有EDA软件(如Multisim),几乎所有的实验都难不住它。(它的元器件库无所不包,而且具有网上更新的功能,它的虚拟仪器也是应有尽有,而且直观性强)。

(2).同一实验课题,在开展硬件实验的同时,可以辅以虚拟实验。硬件实验和虚拟实验在教学效果上各有所长,硬件实验的主导地位是勿庸置疑的,它使学生直接面对真实对象,进行真实操作,获得直接经验,这是虚拟实验所无法作到的。而虚拟实验有更为优秀的分析技术,例如在很多仪器仪表中引入指针,使实验数据更易获得,实验现象更为明显,EDA软件中又具有经典的仿真分析方法,能轻而易举地实现瞬时现象的捕捉,也能把很长时间的现象展现于一秒,这也是实际仪器不能敌的。所以,同一个课题,开展实际硬件实验可使学生锻炼动手能力,获得直接经验。开展虚拟实验,有助于对实验现象的观察和实验数据的获得,最终有利于分析和实验结论的获得。

(3).开展具有创造性的开放式实验

以前在作实验前,教师处于对实验器材和学生安全的保护必先嘱咐学生不准动这,不准动那,使学生做起实验来束手束脚,学生的想象力和创造力得不到发挥。其实很多时候,学生对实验内容是有自己的独到的想法的。如果能够利用虚拟实验技术,拿出有意义的课题,进行开放式的实验,学生在实验中,可以发挥自己的创造力,对电路进行别出心裁的修改,对电路的分析和测试做不同的尝试,使学生完全成为实验电路的剖析者和探索者,又不必担心会损坏任何器件或仪器。这样既拓展了实验范围,又培养了学生的创新意识。

长久以来,电类实验课普遍采用传统的硬件验证的实验模式,随着EDA技术的发展,系统仿真技术日越完善,它将越来越多地应用于实验课程的教学,实验课程也必然采取硬件实验和软件仿真相结合的方式。

四、结束语

EDA技术是将计算机技术应用于电子电路设计过程的一门崭新技术,给电子产品设计与开发带来了革命性的变化。它在教学领域的应用也必将给电子专业课程的教学带来革命性的变化。无论从教学还是从实用的角度去考虑,它都是一个最体现以人为本、体现能力本位的新型的教学技术。无论从课堂教学还是从实验教学去应用,它都将更好地激发学生的创新意识和探索精神。当然,EDA技术的应用对专业教师的综合素质有较高的要求,既要较全面熟悉电子技术专业的知识,又要懂得使用计算机,并且不断地吸取先进的技术,灵活地运用在教学过程中,教师应懂得电子技术中某一个问题的多种表达方式,这样搭建电路容易与软件的建模方式匹配;教师还应对专业英语熟练,看懂软件的功能意图,而这正是职业学校教师“四新”目的之所在。

[参考文献]

1、《现代电子设计技术——基于MULTISUM7&ULTIBOARD2001》李良荣主编

机械工业出版社

2、《电子技术基础》

康华光主编

高等教育出版社

3、《电工电子技术EDA仿真实验》王廷才主编

机械工业出版社 作者简介:

王怡华

eda技术基础实验报告 篇5

姓名:肖燕平上机实验 一 Ex1_1 #include #define maxnum 20

typedef struct list_type { int data[maxnum];int length;}list_type;

void error(int a){ switch(a){

case 0:

printf(“nthe length of the data is too longn”);break;

case 1:

printf(“nthe place is wrongn”);break;} }

void creatlist(list_type *table)

//创建链表

{ int i;int k;table->length=0;printf(“nplease input the numbers of the datan”);for(i=0;i

scanf(“%d”,&k);

if(k==-1)

//输入-1则结束

break;

学号:2011019090028

}

} table->data[i]=k;table->length++;

while(k!=-1)//如果数据输入过长,则报错且重新输入数据

{ error(0);while(k!=-1)//防止接下来的程序变量得到错误的数据

{

scanf(“%d”,&k);} creatlist(table);} void showlist(list_type *table)//显示数据

{ int i;while(table->length<=0){

printf(“NO DATA”);

creatlist(table);

}

for(i=0;ilength;i++){

printf(“%d

”,table->data[i]);} printf(“nthe length of the data is %dn”,table->length);

}

void insertlist(list_type *table,int pla,int num)//插入一个数

{ int i;

while(pla<0||pla>table->length)//如果插入的位置不符合条件,则重新输入

{

error(1);

printf(“nplease input the place of the insert number againn”);

scanf(“%d”,&pla);

}

table->length=table->length-1;

pla=pla-1;

for(i=table->length;i>pla-1;i--)

{

table->data[i+1]=table->data[i];

}

table->data[pla]=num;

table->length=table->length+2;

}

void delete_list(list_type *table,int place)

//删除一个数

{ int i;while(place>table->length-1||place<1){

error(1);

printf(“nplease input the place of the delete number againn”);

scanf(“%d”,&place);

} for(i=place-1;ilength-1;i++){

table->data[i]=table->data[i+1];} table->length--;}

void main(){ int inse_place,inse_num;int del_place;

list_type table;

creatlist(&table);//创建顺序表

showlist(&table);//显示顺序表

printf(“nplease input the insert place and numbern”);scanf(“%d%d”,&inse_place,&inse_num);

insertlist(&table,inse_place,inse_num);

//插入一个数

printf(“nthe new list isn”);

showlist(&table);//显示插入数后的顺序表

printf(“nplease input the delete placen”);scanf(“%d”,&del_place);

//删除一个数 delete_list(&table,del_place);printf(“nthe new list isn”);showlist(&table);

}

输出数据:

1,不考虑边界情况

2,考虑边界

问题及解决方法

问题1:遗漏了某个变量而直接用

注意:对于变量,要那个变量则再来定义,定义后再用。

问题2:输入数据量大于19时,其余数字会赋给后程序的scanf。解决方法:利用另一变量k值,若k不等于-1则不允许程序往下走。

问题3:在print“NO DATA”后,程序依然往下走,不能重新录入数据。

解决方法:再调用输入数据函数,并且惯用while.问题还有很多,但忘了些。。。

心得体会:

1,在使用变量时,将要用哪个马上定义再使用。

2,error函数尽量写在所有函数之前。方便任一函数调用。3,对于printf函数,多用换行。

4,用scanf函数时,若输入数的量大于某一scanf的需求量,则要运用一函数消耗掉多余量,避免影响下面的函数,赋错值。

5,对于一些不符合要求的录入值,要习惯于重新调用输入函数或调用自我重新录入。

6,虽然自我的思考很重要,但还是要和同学讨论和交流算法。7,对于取值检验时,不能只取一种类型的数值或只随机取值,要注意取边界值和范围之外的值。

8,对于删除许多数时(例如把负数全部删除),要避免一次又一次的调用删除函数,防止出错。用x,y。Y首先比x前一位,若想<0,则y值赋给x。若不符合前提,令y往下走,至符合条件。

9,编程时,不要一来就写代码,一定要明确自己的步骤,在纸上写下来,用框图画好再写程序。

EDA基础知识总结 篇6

VHDL语言中常用的五种库:1)IEEE库:VHDL语言设计中最常见的库。2)STD库:VHDL语言的标准库3)WORK库:用户的VHDL语言工作库。4)VITAL库: VHDL语言的时序仿真库5)用户自定义的库:用户自定义的资源库

变量的使用规则:① 变量不能用于硬件连线和存储元件;② 变量赋值和初始化赋值都用“:=”表示;③ 变量的初值不是预设的,某一时刻只能有一个值;④ 变量不能用于在进程间传递数据;⑤ 仿真时,变量用于建模;⑥ 综合时,变量充当数据的暂存。

信号与变量的区别:①使用场合不同:变量在进程、函数和过程中说明;信号在结构体中说明。②赋值符号不同:变量用“:=”号赋值, 其值被立即使用(无时间延时);信号用“<=”赋值,其值可以附加延时。

VHDL语言预定义了五种运算符:逻辑运算符、算术运算符、关系运算符、符号运算符、移位运算符

主要的三家公司:Xilinx、Altera、Lattice EDA软件系统包括子模块:设计输入子模块、设计数据库子模块、分析验证子模块、综合仿真子模块、布局布线子模块。

电子系统设计的仿真过程分为两个阶段:设计前期的系统级仿真和设计过程的电路级仿真。(系统仿真主要验证系统的功能;电路级仿真主要验证系统的性能,决定怎样实现设计所需的精度。)

设计过程中的仿真有三种:行为仿真、功能仿真、时序仿真 数字系统的两个模块(子系统):数据处理子系统、控制子系统

数据处理子系统主要完成数据的采集、存储、运算、传输,主要由存储器、运算器、数据选择器等功能电路组成。数字系统设计方法:模块设计方法、自顶向下设计法、自底向上设计法。一般采用自顶向下、由粗到细、逐步求精的方法。

数字系统的设计准则:1)分割准则2)系统的可观测性3)同步和异步电路4)最优化设计5)系统设计的艺术

数字系统的设计步骤:1)系统任务分析2)确定逻辑算法3)建立系统及子系统模型4)系统(或模块)逻辑描述5)逻辑电路级设计及系统仿真6)系统的物理实现 VHDL语言要素:数据对象、数据类型、各类操作数及运算操作符 标识符规则:以英文字母开头,不连续使用下划线“_”,不以下划线结尾的,由26个大小写英文字母、数字0~9及下划线“_”组成的字符串,英文字母不区分大小写,VHDL的保留字不能用于作为标识符使用。

在进程中,只能将信号列到敏感表,而不能将变量列入敏感表。可见进程对信号敏感。VHDL中的数据类型:标量型(包括:实数型、整数型、枚举型、时间类型)、复合类型(数组型、记录型)、存取型、文件类型

VHDL四大类数据类型又可分为两类:预定义数据类型、用户自定义数据类型(基于预定义数据类型)预定义数据类型:1)布尔型2)位数据类型(BIT)3)位矢量(BIT_VECTOR)4)字符型5)整数型6)自然数和正整数型7)实数型8)字符串型9)时间型10)错误等级 数据类型:标准逻辑位STD_LOGIC、标准逻辑矢量STD_LOGIC_VECTOR VHDL中六类基本顺序语句:赋值语句、转向控制语句、等待语句、子程序调用语句、返回语句、空操作语句。

在信号赋值时,当统一进程中,同一信号赋值目标有多个赋值源时,信号赋值目标获得的是最后一个赋值,其前面相同的赋值目标则不作任何变化。

转向控制语句五种:IF语句、CASE语句、LOOP语句、NEXT语句、EXIT语句

当执行WAIT等待语句,程序将被挂起,知道满足结束条件后,程序重新开始执行。已列出敏感量的进程不能使用任何形式的WAIT语句 过程调用:执行一个给定名字和参数的过程

过程名[([形参名=>] 实参表达式 {,[形参名=>]实参表达式})];过程调用步骤:1)将IN和INOUT的形参值赋给调用过程中与之对应的形参;2)执行这个过程;3)将过程中IN和INOUT的形参值赋给对应的实参

函数调用:返还一个指定数据类型的值,函数的参量只能是输入值 任何时刻,一个对象(信号、常量、变量)只有一个值,但可有多个属性 预定义属性描述:属性测试项目名’属性标识符 CLOCK’EVENT AND CLOCK=’1’对上升沿的测试(或者NOT(CLOCK’STABLE AND CLOCK=’1’))CLOCK’EVENT AND CLOCK=’0’对下降沿的测试(或者CLOCK’STABLE AND CLOCK=’0’)并行语句在结构体中的执行是同步的。每一并行语句内部的语句运行方式:并行执行、顺序执行。结构体中并行语句有七种:1)并行信号赋值语句2)进程语句3)块语句4)条件信号赋值语句5)元件例化语句6)生成语句7)并行过程调用语句

PROCESS中规定了每个进程语句在它的摸个敏感信号的值改变时都必须立即完成某个功能行为。进程的激活必须由敏感信号表中定义的敏感信号的变化来启动,否则必须有一个显示的WAIT语句激活

并行信号赋值语句包括:简单信号赋值语句、条件信号赋值语句、选择信号赋值语句 简单信号赋值语句:信号赋值语句<=表达式;

条件信号赋值语句:赋值目标<=表达式 WHEN 赋值条件 ELSE(类似于IF语句)表达式 WHEN 赋值条件 ELSE „„ 表达式;

选择信号赋值语句:WITH 选择表达式 SELECT(类似于CASE语句)赋值目标<=表达式 WHEN 选择值,表达式 WHEN 选择值,„„

表达式 WHEN 选择值;

元件例化是使VHDL设计实体构成自上而下层次化设计的一个重要途径。组成部分:1)将一个现成的设计实体定义为一个元件的语句;2)此元件与当前设计实体中的连接说明

元件例化语句中定义的例化元件的端口名与当前系统的连接实体端口名的接口表达式表达有两种方式:1)名字关联方式:通过“=>”一一对应2)位置关联方式:按例化元件端口的定义顺序将例化元件的对应的连接实体端口名一一列出

生成语句有一种复制功能。生成语句的四个组成部分:生成方式、说明部分、并行语句、标号。

子程序是利用顺序语句来定义和完成算法的。只能通过子程序调用及与子程序的界面端口进行通信。包括过程(可单独存在,多个返回值,有输入/出双向参数)和函数(作为语句的一部分调用,一个返回值,所有参数都是输入参数),可在VHDL的结构体或程序包中任何位置调用子程序。

子程序特性:可重载性,即允许有许多重名的子程序,但这些子程序的参数类型及返回值数据类型不同

函数组成:函数首(作用:作为程序包的有关此函数的一个接口界面)、函数体

重载函数:VHDL允许相同的函数名定义函数,但要求函数中定义的操作数具有不同的数据类型。

过程组成部分:过程首、过程体。过程首不是必须的,过程体可以独立存在和使用

过程首参数表用于对常数、变量、信号三类数据对象目标作出说明,并用IN、OUT、INOUT定义参数工作模式(信息流向)

一般把EDA技术的发展分为CAD、CAE、EDA三个阶段。

EDA设计流程包括设计准备、设计输入、设计处理、器件编程四个步骤.EDA的设计验证包括功能仿真、时序仿真、器件测试三个过程

EDA的设计输入包括文本输入方式、图形输入方式、波形输入方式三个过程

当前最流行的并成为IEEE标准的硬件描述语言包括VHDL 语言、Verilog 和 HDL 语言

将硬件描述语言转化为硬件电路的重要工具软件称为HDL 综合器

基于EPROM、E2PROM和快闪存储器件的可编程器件,在系统断电后编程信息不丢失 基于SRAM结构的可编程器件,在系统断电后编程信息 会丢失

CPLD器件中至少包括可编程逻辑宏单元、可编程 I/O 单元、可编程内部连线三种结构 FPGA的三种可编程电路分别是可编程逻辑块 CLB、输入/输出模块 IOB、互连资源三种结构 根据逻辑功能块的大小不同,可将FPGA(可编程逻辑器件)分为细密度、粗密度两类;据FPGA内部连线结构的不同,可将FPGA分为分段互连型、连续互连型两类;据FPGA采用的开关元件不同,可将FPGA分一次编程型(OTP)、可重复编程型(MTP)两类

目前常见的可编程逻辑器件的编程和配置工艺包括电可擦存储单元的 E2PROM 或 Flash 技术、SRAM 查找表的编程单元、反熔丝编程单元三种编程工艺。

VHDL设计实体的基本结构由库、程序包使用说明、设计实体的说明、结构体说明、配置 等部分组成

实体、结构体是设计实体的基本组成部分,他们可以构成最基本的VHDL程序 在VHDL的端口声明语句中,端口方向包括in out buffer inout VHDL的数据对象包括常数 constant、变量 variable、信号 signal它们是用来存放各种类型数据的容器

VHDL的操作符包括逻辑操作符、关系操作符、算术操作符、符号操作符

VHDL的顺序语句只能出现在进程 process、函数 function、过程 procedure中,按照书写顺序自上而下,一条一条执行。

VHDL的进程(process)语句是由 顺序语句 组成的,但其本身却是 并行语句 Maxplus Ⅱ支持图形、符号、文本、波形等不同编辑方式

指定设计电路的输入/输出端口与目标芯片引脚的连接关系的过程称为引脚锁定

在完成设计电路的输入/输出端口与目标芯片引脚的锁定后,再次对设计电路的仿真称时序仿真或后仿真

图形文件设计结束后一定要通过 仿真,检查设计文件是否正确

以EDA方式设计实现的电路设计文件,最终偶可以编程下载到 FPGA 和 CPLD 芯片中,完成硬件设计和验证

MAX+PLUS的文本文件类型是(后缀名).VHD 在PC上利用VHDL进行项目设计,不允许在 根目录 下进行,不惜在根目录为设计建立一个工程目录(文件夹)VHDL源程序的文件名应与 实体名 相同,否则无法通过编译 EDA 名词解释

1.CPLD: 复杂可编程逻辑器件 2.HDL: 硬件描述语言 3.LUT:查找表(Look-Up-Table)4.ASIC:专用集成电路 5.SOC:单芯片系统

6.VHDL:超高速硬件描述语言 7.FPGA:现场可编程门阵列 8.RTL:寄存器传输级 9.SOPC:可编程片上系统

10.EAB:嵌入式阵列块 11.LAB:逻辑阵列块

12.IP:知识产权核

13.EDA:电子设计自动化

14.IEEE:美国电气电子工程师协会 15.ISP:在系统编程

16.LPM:参数可定制红模块库 17.UART:串口(通用异步触发器)

eda技术基础实验报告 篇7

一、电子技术实验教学存在的问题

在长期从事电子技术教学的过程中, 笔者发现学校原有的电子技术的实验教学存在着一些弊端和问题, 主要表现在以下几方面。

(一) 实验环节学时少

过去的电子技术教学一直是以理论教学为核心, 实验教学所占的学时非常少。以学校的计算机专业的学生为例, 在模拟电子和数字电子这两门课程中, 实验总共才占20学时, 所做的内容十分有限。

(二) 教师讲解内容过多、过细

在实验课中, 实验老师往往把实验内容、步骤、方法一一详细地讲给学生, 学生只要按照老师讲的按部就班地完成就行, 留给学生自己思考和创造的余地太少。

(三) 实验设备的局限性限制和影响了实验的内容和效果

传统的电子技术实验教学通常都使用专门的实验箱来完成, 学生所做的实验内容只能限于实验箱所提供的元器件, 在功能上很难进行扩展, 因此, 当学生想做一些实验课程之外的实验内容时, 在现有条件下就很难完成, 在一定程度上影响了学生实践动手能力和创新能力的培养。

(四) 实验教学与生产实际结合不紧密

实验教学内容没有或较少向生产应用延伸, 当学生走上工作岗位时会发现在学校所做的实验内容与真正的生产实际差距很大, 不能很快地为生产实际服务[1]。

为了解决以上在电子技术实验中存在的问题, 我们经过不断地探索、研究和实践, 在电子技术的实验方面做了大量的改进和创新, 也取得了一些明显的效果, 其中最主要的就是将EDA技术应用到电子技术的实验教学中。

二、基于EDA技术的电子技术实验教学改革

EDA即电子设计自动化 (Electronic Design Automation) , 它是以计算机和微电子技术为先导, 汇集了图形学、逻辑学、结构学和计算机数学等多种计算机应用科学最新成果的先进技术[2]。在我国, 由于EDA应用技术先进, 软硬件结合, 知识面宽, 实践性强[3], 几乎所有理工科 (特别是电子信息) 类的高校都开设了EDA课程的学习[4]。为了将EDA技术与电子技术的教学更好地融合到一起, 我们在多个方面也做了建设和改革。

(一) 基础设施建设

1. 硬件设施建设:

为了能更好地将EDA技术运用到电子技术的实验教学中, 我们首先建立了两个EDA实验中心, 配备了近百台性能先进的计算机, 并购进了与EDA教学相配套的实验箱, 学生在利用计算机上安装的软件和与之配套的实验箱可以完成由程序设计到硬件下载的全部过程。

2. 软件设施建设:

硬件设施只是基础框架, 要想真正学好EDA技术, 具备与之相配套的应用软件更为重要。现阶段, 国内流行的、市场占有率比较高的EDA软件主要有6种[5]。根据电子技术这门课程的特点, 我们主要选择了其中的三种软件:即Multisim、Max+PlusⅡ和QuartusⅡ。Multisim这个软件最大的特点就是给出了类型相对完善、实用性更强的虚拟电子库以及各种仿真仪器, 操作简单, 仿真结果形象逼真, 功能十分强大、实用。Max+PlusⅡ和QuartusⅡ可以完成电路的设计输入、编译仿真、编程下载等功能, 并且其设计输入具有多种方式, 可以满足不同层次的需求, 同时可以实现电路的时序分析, 实验结果简单、直观。

(二) 电子技术实验教学内容的改革和创新

在基础建设完善之后, 我们在电子技术实验教学的内容上也做了调整和改革。我们首先把实验内容分阶段、分层次地分成了三类, 使更多的实验适合在EDA实验中心完成。

1. 基础验证型实验。

这部分的实验内容所占比例较少, 主要是对理论教学中最基础的内容的一个测试:例如共发射极单管放大电路、集成运放的线性应用、基本门电路的功能测试等。这类实验的主要目的在于帮助学生认识常用的电子器件, 了解实验设备, 学会各种仪器的使用方法, 掌握电子实验的基本知识、实验方法和实验技能[6], 学会观察和分析实验结果等。

2. 训练提高型实验。

这部分的实验内容主要要求学生在具备一定的基础知识和操作技能的基础上, 能把所学的不同内容、不同类型的知识和电路有机地结合在一起, 形成一个相对完整的逻辑功能。这部分实验主要侧重于理论知识的综合应用, 其目的是培养学生综合运用所学理论知识和解决问题的能力。

3. 综合设计型实验。

这部分的实验内容主要是以学生自行设计为主, 教师指导为辅, 要求学生根据实验题目的设计要求独立地完成查阅资料、设计电路、选择器件、安装调试等任务, 分析实验数据, 并独立写出实验报告。这类实验的开设, 对于提高学生的实践动手能力、综合运用能力和创新设计能力有着非常重要的作用。

三、EDA技术与电子技术实验内容融合的策略

前面我们提到的是实验内容上的改革, 那我们如何具体做到将EDA技术更好地应用到电子技术的实验中呢?我们从多个方面入手, 加强EDA技术与电子技术实验的融合。

1.在正常实验教学中增大EDA实验的比例。以前我们所做的实验全部都是在实验箱上搭接完成, 现在我们将部分实验内容转移到计算机, 增大了EDA实验的比例, 让学生在正常的教学计划内就可以接触到两种不同的实验方式, 体会它们不同的特点, 得到不同的训练。

2.充分利用学生自身的资源和业余时间加强EDA技术的学习。要完成我们上面所说的内容, 单纯依靠教学计划内的几个实验是远远不够的。我们首先想到的就是充分利用学生自身的资源, 现在计算机在学生中十分普及, 几乎人人都有, 我们将常用的仿真软件推荐给学生, 让学生安装在自己的电脑中, 这样学生就可以利用自己的业余时间来完成一些内容, 以弥补课堂实验时间上的不足。

3.将实验内容延伸到电子实习、课程设计等实践环节。各个专业的学生在学期末都会有和理论教学相配合的课程设计和电子实习。在这些实践环节中都会安排专门的时间来让学生进行相关内容的EDA仿真测试, 因此学生可以把实验中学习的内容延伸到其他的实践环节中, 大大提高了学生的实践动手能力和理论知识的综合运用能力。

4.充分利用学校为学生提供的各种课外训练机会。学校为了给学生创造更多培养和训练实践动手能力的机会, 在学校设立了多种训练项目。例如国家级、省级、校级的大学生创新创业训练计划并且提供相应的资金支持。在教师的指导帮助和学生的共同努力下, 经过一段时间的学习和训练后, 学生在这方面的技能有了很大的提高。

近年来, 社会对大学毕业生的需求也发生了一些转变, 要求大学毕业生要具备更强的多学科的综合运用能力和实践创新能力。因此我们的教学内容和重点也要做相应的改变, 在今后的教学中我们还要不断地学习和探索, 不断地更新我们的教学模式和方法, 将比较先进和前沿的知识和技术融入和应用到教学实践中, 培养学生的自主学习能力、实践动手能力和创新能力[7], 使我们培养出来的学生具有更强的社会竞争力, 真正地做到为社会所需, 为社会所用[8]。

参考文献

[1]张波.“EDA技术”课程的创新性实验教学[J].实验室科学, 2013, (4) .

[2]高有堂, 徐源.EDA技术与创新实践[M].北京:机械工业出版社, 2010.

[3]郭来功, 周孟然, 蔡俊.“EDA技术”教学对大学生创新能力培养的探索[J].中国电力教育, 2010, (31) .

[4]张晓燕, 李洋.EDA技术在电子技术实验教学中的应用[J].实验技术与管理, 2010, (11) .

[5]钟晓旭.基于EDA的数字电子技术实验及其应用[J].宿州学院学报, 2013, (2) .

[6]葛汝明.电子线路实验与课程设计[M].济南:山东大学出版社, 2006.

[7]张利, 厉虹, 杨秀媛.以创新型人才培养为目标的EDA技术课程的教学实践探索[J].科技信息, 2013, (7) .

电视摄像基础实验报告1 篇8

姓名:胡林萍班级:10级新闻1班组别:成绩: 合作者:朱琼琼,田超云,黄君怡,崔思瑶指导老师:倪健实验日期:11月15日

实验题目:摄像基础

实验目的:

1.认识摄像机各个部件的名称和功能

2.熟悉摄像机的构成和使用方法

实验要求:

1.熟识使用摄像机的注意事项

2.小组分工合作,共同完成目标,保证每个组员都掌握各项要领

实验步骤:

1.借摄像机,开始实验

2.老师介绍摄像机使用的注意事项

3.小组成员依次熟悉专业摄像机的构成、开关按钮,了解其功能及使用方法

4.小组成员依次练习摄像机操作,调整;熟悉三脚架的结构与操作;练习各种执机方式,掌握其要领

5.相互分享,交流心得

6.结束实验,归还摄像机

实验心得(要求300字以上):

这次户外实训课让我发现了自身还存在许多问题,我并不是自以为那样对这款摄像机已经很了解了。平时老师在上面讲,我们听着,听到的时候是知道的,过后又忘了。比如之前几次接触摄像机,边听老师讲边了解,一个按钮一个按钮的,当时是都会了,这次自己摸索,总感觉自己都知道那么一点点,又了解的不确切。所以还是要真正的理解运用,而不能仅仅是觉得自己会了。

小组之间相互学习讨论的感觉十分棒,一个不懂,会的人就手把手教,印象很深刻。通过这次实训课,我进一步熟悉了摄像机的构成,各按钮作用及使用方法;熟悉了摄像机的基本操作和调整,比如:P2卡的格式选择调整和格式化、白平衡调整、变焦、手动/自动聚焦以及声道音量电平的调整等等;进一步熟悉了三脚架的结构与操作方法;练习了各种执机方式。

C#基础编程设计实验报告 篇9

一、实验目的

1、熟悉 Visual Studio.NET 开发环境。

2、掌握 C#应用程序的基本操作过程。

3、掌握 C#的数据类型,运算符以及表达式的使用。

4、掌握分支和循环语句的使用方法。

5、掌握一维数组,二维数组及数组型数组的使用。

二、实验要求

(1)编写程序要规范、正确,上机调试过程和结果要有记录(2)做完实验后给出本实验的实验报告。

三、实验设备、环境

安装有 Visual Studio.NET 软件。

四、实验步骤

1、分析题意。

2、根据题目要求,新建项目。

3、编写并输入相关的程序代码。

5、运行与调试项目。

6、保存项目。

五、实验内容

1、编写一个简单的控制台应用程序,打印一行文字(如你的姓名)。

using System;using System.Collections.Generic;

using System.Linq;using System.Text;

namespace one.first {

class Program

{

static void Main(string[] args)

{

System.Console.WriteLine(“我叫王蕾!”);

}

} } 2、编写一个简单的 Windows 应用程序,在窗体 Load 事件中书写代码,标签中显示你的姓名。

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;

using System.Windows.Forms;

namespace one.second {

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

this.Text = “Windows 程序”;

Label lblShow = new Label();

lblShow.Location = new Point(20, 30);

lblShow.AutoSize = true;

lblShow.Text = “王蕾!”;

this.Controls.Add(lblShow);

}

}

} 3、编写一个一个程序,用来判断输入的是大写字母,小写字母,数字还是其他的字符。

using System;using System.Collections.Generic;using System.Text;

namespace one.third {

class Program

{

static void Main(string[] args)

{

Console.WriteLine(“请输入一个字符:”);

char c = Convert.ToChar(Console.ReadLine());

if((c>=“a”&&c<=“z”)||(c>=“A”&&c<=“Z”))

Console.WriteLine(“这是一个字母”);

if(char.IsDigit(c))

Console.WriteLine(“这是一个数字”);

}

}

} 4、分别用 while,do-while,for 循环求 1 到 100 的和。

using System;using System.Collections.Generic;using System.Text;

namespace one.forth.one {

class Program

{

static void Main(string[] args)

{

int i = 1, sum = 0;

while(i <= 100)

{

sum = sum + i;

i++;

}

Console.WriteLine(“1 到 100 的自然数之和为:” + sum);

}

}

} using System;using System.Collections.Generic;using System.Text;

namespace one.forth.two {

class Program

{

static void Main(string[] args)

{

int i = 1, sum = 0;

do

{

sum = sum + i;

i++;

}

while(i <= 100);

Console.WriteLine(“1 到 100 的自然数的和为:” + sum);

}

}

} using System;using System.Collections.Generic;using System.Text;

namespace one.forth.three {

class Program

{

static void Main(string[] args)

{

int i , sum = 0;

for(i = 1;i <= 100;i++)

{

sum = sum + i;

}

Console.WriteLine(“1 到 100 的自然数的和为:” + sum);

}

} } 5、定义一个一维数组,用随机数为此赋值,用 foreach 循环输

出其中的内容。

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace first.five {

class Program

{

static void Main(string[] args)

{

int[] a = {0,1,2,3,4};

foreach(int i in a)

{

Console.WriteLine(a[i]);

}

}

} } 6、实现二维数组的输入和输出。

using System;

using System.Collections.Generic;using System.Linq;using System.Text;

namespace first.six {

class Program

{

static void Main(string[] args)

{

int[,] a = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };

{

for(int i = 0;i < 2;i++)

{

for(int j = 0;j < 3;j++)

{ Console.WriteLine(a[i, j]);}

}

}

}

} }

7、实现数组型数组的输入和输出。

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace first.seven {

class Program

{

static void Main(string[] args)

{

int[][] a = new int[][] { new int[] { 1, 2, 3 }, new int[] { 4, 5, 6 } };

for(int i = 0;i < a.Length;i++)

{

for(int j = 0;j < a[i].Length;j++)

{

Console.WriteLine(a[i][j]);

}

}

}

} } 六、实验体会(遇到问题及解决办法,编程后的心得体会)

刚开始编程的时候觉得无从下手,尽管我们已经学了好几种高级编程语言,但每个都有其独特的地方,稍不留神就会混淆。

通过这次实验,我体会到课后复习巩固的重要性。在编程的时候,很多内容都不记得,需要去翻书。不得不说,实验是巩固课程的好方法!本次实验,我熟悉 Visual Studio.NET 开发环境;掌握了 C#应用程序的基本操作过程;掌握了 C#的数据类型,运算符以及表达式的使用;掌握了分支和循环语句的使用方法以及一维数组,二维数组及数组型数组的使用。

实验项目名称:

类与对象

实验学时:

同组学生姓名:

实验地点:

1318

实验日期:

月 26 日-11 月 9 日 实验成绩:

批改教师:

批改时间:

实验 2

类与对象

一、实验目的、要求

(1)掌握类的定义和使用;(2)掌握类的数据成员,属性的定义和使用;(3)掌握方法的定义,调用和重载以及方法参数的传递;(4)掌握构造函数的定义和使用。

二、实验要求

(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。

三、实验设备、环境

安装有 Visual Studio.NET 软件。

四、实验步骤

1、分析题意; 2、根据题目要求,新建项目; 3、编写并输入相关的程序代码; 5、运行与调试项目; 6、保存项目。

五、实验内容

1、定义一个方法,实现两个数的交换(分别把参数按值传递和按引用传递)。

using System;

using System.Collections.Generic;using System.Text;

namespace second.one {

class Program

{

static void Main(string[] args)

{

Swaper s = new Swaper();

Console.WriteLine(“输入 x 的值:”);

int a = Convert.ToInt32(Console.ReadLine());

Console.WriteLine(“输入 y 的值:”);

int b=Convert.ToInt32(Console.ReadLine());

Console.WriteLine(s.Swap(a, b));

Console.WriteLine(s.Swap(ref a,ref b));

}

class Swaper

{

public string Swap(int x, int y)

{

int temp;

temp = x;

x = y;

y = temp;

return string.Format(“按值传参交换之后:x={0},y={1}”,x,y);

}

public string Swap(ref int x, ref int y)

{

int temp;

temp = x;

x = y;

y = temp;

return string.Format(“按引用传参交换之后:x={0},y={1}”, x, y);

}

}

} }2、定义一个方法,实现数组的排序。

using System;using System.Collections.Generic;using System.Text;

namespace second.two {

class Program

{

public class sort

{

public void change(int[] a)

{

Console.WriteLine(“排序前,数组顺序为:”);

show(a);

int i, j, m;

for(i = 0;i < 10;i++)

{

m = a[i];

j = i-1;//a[j]为数组前一个值

while(j >= 0 && m > a[j])//判断 i 下标的数是否大于 j 下标的数

{

a[j + 1] = a[j];//如果 i 下标大于j 把 j 往后移一个位

j--;

}

a[j+1] = m;//当不大于 j 的时候就把 M的值放到 i 下标下面 j+1 是为了下标减到最前时考虑-1 + 1 还是下标的最前面

}

Console.WriteLine(“排序后,数组顺序为:”);

show(a);

}

void show(int[] a)

{

int i;

for(i = 0;i < 10;i++)

{

Console.Write(“{0} ”, a[i]);

}

Console.WriteLine();

}

}

static void Main(string[] args)

{

int[] a ={ 4, 7, 1, 2, 5, 8, 9, 10, 3, 6 };

sort s=new sort();

s.change(a);

}

} } 3、定义一个学生类,把学生类当作对象来传递。

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace second.three {

class Program

{

public class student

{

public void st()

{

int a = 999;

}

}

public class st

{

public void aa(student s)

{

Console.WriteLine(s);

}

}

static void Main(string[] args)

{

student s=new student();

st s1 = new st();

s1.aa(s);

}

} } 4、定义一个方法,求两个数的和和差,通过参数把这两个值带回。

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace

second.four

{

class Program

{

public class sum

{

public void ab(out int m, out

int n,int a, int b)

{

m = a + b;

n = a-b;

}

}

static void Main(string[] args)

{

sum s = new sum();

int a = 10;

int b = 3;

int m, n;

s.ab(out m, out n, a, b);

Console.WriteLine(“{0}+{1}={2};{0}-

{1}={3}”,a,b,m,n);

}

} } 5、用构造函数重载,实现矩形的面积,圆的面积,梯形的面积; using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace secong.five {

class Program

{

public class square

{

public double area;

public square(){ }

public square(double a)

{

area = a * a * 3.14;

}

public square(double a, double b)

{

area = a * b;

}

public square(double a, double b, double h)

{

area =(a + b)/ 2 * h;

}

}

static void Main(string[] args)

{

double a, b, h,area;

a = 2;b = 5;h = 3;

square s = new square(a,b);

Console.WriteLine(“求矩形面积,长为 a={0},宽为 b={1},面积 area={2}”,a,b,s.area);

square i = new square(a);

Console.WriteLine(“求圆形面积,半径 a={0},面积 area={1}”, a, i.area);

square j = new square(a, b, h);

Console.WriteLine(“求梯形面积,上底为a={0},下底为 b={1},高为 h={2}面积 area={3}”, a, b,h, j.area);

}

} } 6、设计一个 windows 应用程序,在该程序中定义一个学生类和班级类,以处理每个学生的学号,姓名,语文,数学和英语成绩,要求:

1)能查询每个学生的总成绩。

2)能显示全班前三名的名单。

3)能显示单科成绩最高分和不及格的学生名单。

4)能统计全班学生的平均成绩。

5)能显示各科成绩不同分数段的学生人数的百分比。

Student 类:

using System;using System.Collections.Generic;using System.Text;namespace Test2_6 {

public class Student

{

public string stuNo;

public string name;

public double chinese;

public double math;

public double english;

public double sumScore

{

get { return chinese + math + english;}

}

} } StudentList 类:

using System;using System.Collections.Generic;using System.Text;namespace Test2_6 {

public class StudentList:Student

{

int snums;

public Student[] stu=new Student[50];

public StudentList()

{

snums = 0;

}

public void addstu(Student s)

{

stu[snums] = s;

snums++;

}

public int searchstu(string name)

{

int i;

for(i = 0;i < snums;i++)

{

if(stu[i].name == name)break;

}

if(i == snums)return-1;

else return i;

}

//给所有成绩排序,用后面实现前三名的排名

public void ProThree()

{

for(int i = 0;i < snums;i++)

{

int k = i;

for(int j = i + 1;j < snums;j++)

if(stu[j].sumScore > stu[k].sumScore)k = j;

if(k!= i)

{

Student temp;

temp = stu[k];

stu[k] = stu[i];

stu[i] = temp;

}

}

}

//显示单科成绩的最高分

public int HighScore(int k)

{

int p = 0;

if(k == 0)

{

for(int i = 1;i < snums;i++)

if(stu[i].math > stu[p].math)p = i;

}

else if(k == 1)

{

for(int i = 1;i < snums;i++)

if(stu[i].chinese > stu[p].chinese)p = i;

}

else

{

for(int i = 1;i < snums;i++)

if(stu[i].chinese > stu[p].chinese)p = i;

}

return p;

}

//显示不及格名单

public string

BuhgName(int k)

{

string name=“ ”;

if(k == 0)

{

for(int i = 0;i < snums;i++)

if(stu[i].math < 60)name +=stu[i].name+“n”;

}

else if(k == 1)

{

for(int i = 0;i < snums;i++)

if(stu[i].chinese < 60)name += stu[i].name + “n”;

}

else

{

for(int i = 0;i < snums;i++)

if(stu[i].english < 60)name += stu[i].name + “n”;

}

return name;

}

public string getHL()

{

string Maxer = “ ”, Loser = “ ”;

Maxer += “ 单 科 数 学 最 高 :

” + stu[HighScore(0)].name + “n”;

Maxer += “ 单 科 语 文 最 高 :

” +

stu[HighScore(1)].name + “n”;

Maxer += “ 单 科 英 语 最 高 :

” + stu[HighScore(2)].name + “n”;

Loser += “单科数学挂科名单:” +BuhgName(0)+ “n”;

Loser += “单科语文挂科名单:” + BuhgName(1)+ “n”;

Loser += “单科英语挂科名单:” + BuhgName(2)+ “n”;

return Maxer + “n” + Loser;

}

//全班的平均成绩

public string SumScore()

{

double sum = 0;

double avg=0;

for(int i = 0;i < snums;i++)

{

sum = sum + stu[i].sumScore;

}

avg = sum / snums;

return “班级总分平均分:”+avg;

}

//各科成绩不同分数段的学生百分比

//英语成绩各分数段百分比

public string PerC()

{

double per1, per2, per3, per4, per5;

double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;

for(int i = 0;i < snums;i++)

{

if((stu[i].chinese > 90)&&(stu[i].chinese <= 100))

{

sumC1++;

}

else if((80 <= stu[i].chinese)&&(stu[i].chinese < 90))

{

sumC2++;

}

else if((70<=stu[i].chinese)&&(stu[i].chinese < 80))

{

sumC3++;

}

else if((60<=stu[i].chinese)&&(stu[i].chinese < 70))

{

sumC4++;

}

else

{sumC5++;}

}

per1 = sumC1 / snums;

per2 = sumC2 / snums;

per3 = sumC3 / snums;

per4 = sumC4 / snums;

per5 = sumC5 / snums;

return “ 语 文 成 绩 百 分 比 :”+“n”+“90~100:”+per1+“

80~90:”+per2+“

80~70:”+per3+“

70~60:”+per4+“

以下的:”+per5;

}

//数学成绩各分数段百分比

public string PerM()

{

double per1, per2, per3, per4, per5;

double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;

for(int i = 0;i < snums;i++)

{

if((stu[i].math> 90)&&(stu[i].math <= 100))

{

sumC1++;

}

else if((80 <= stu[i].math)&&(stu[i].math < 90))

{

sumC2++;

}

else if((70 <= stu[i].math)&&(stu[i].math < 80))

{

sumC3++;

}

else if((60 <= stu[i].math)&&(stu[i].math < 70))

{

sumC4++;

}

else

{ sumC5++;}

}

per1 = sumC1 / snums;

per2 = sumC2 / snums;

per3 = sumC3 / snums;

per4 = sumC4 / snums;

per5 = sumC5 / snums;

return string.Format(“数学成绩百分比:” + “n” + “90~100:” + per1 + “

80~90:” + per2 + “

80~70:” + per3 + “

70~60:” + per4 + “

以下的:” + per5);

}

//英语成绩各分数段百分比

public string PerE()

{

double per1, per2, per3, per4, per5;

double sumC1 = 0, sumC2 = 0, sumC3 = 0, sumC4 = 0, sumC5 = 0;

for(int i = 0;i < snums;i++)

{

if((stu[i].english > 90)&&(stu[i].english <= 100))

{

sumC1++;

}

else if((80 <= stu[i].english)&&(stu[i].english < 90))

{

sumC2++;

}

else if((70 <= stu[i].english)&&(stu[i].english < 80))

{

sumC3++;

}

else if((60 <= stu[i].english)&&(stu[i].english < 70))

{

sumC4++;

}

else

{ sumC5++;}

}

per1 = sumC1 / snums;

per2 = sumC2 / snums;

per3 = sumC3 / snums;

per4 = sumC4 / snums;

per5 = sumC5 / snums;

return string.Format(“数学成绩百分比:” + “n” + “90~100:” + per1 + “

80~90:” + per2 + “

80~70:” + per3 + “

70~60:” + per4 + “

以下的:” + per5);

}

} } From 窗体代码:

using System;using System.Collections.Generic;

using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test2_6 {

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

public StudentList sl = new StudentList();

private void btnAdd_Click(object sender, EventArgs e)

{

Student s = new Student();

s.stuNo = txtStuNo.Text;

s.name = txtName.Text;

s.chinese = Convert.ToDouble(txtChina.Text);

s.math = Convert.ToDouble(txtMath.Text);

s.english = Convert.ToDouble(txtEng.Text);

sl.addstu(s);

MessageBox.Show(“添加成功”);

}

private void btnSearch_Click(object sender, EventArgs e)

{

int pos = sl.searchstu(this.textBox1.Text);

if(pos!=-1)

{

label7.Text = this.textBox1.Text + “的总成绩:” + sl.stu[pos].sumScore;

}

else { MessageBox.Show(“不存在这个人!”);}

}

private void btnFinish_Click(object sender, EventArgs e)

{

label7.Text = “前 3 名:”+“n”;

for(int i = 0;i < 3;i++)

{

sl.ProThree();

label7.Text+= sl.stu[i].name+“n”;

}

label7.Text += sl.getHL()+“n”;

label7.Text += Convert.ToString(sl.SumScore())+“n”;

label7.Text += sl.PerC()+“n”;

label7.Text += sl.PerM()+“n”;

label7.Text += sl.PerE()+“n”;

}

} }

六、实验体会(遇到问题及解决办法,编程后的心得体会)

通过本次实验,我掌握了类的定义与使用;掌握了类的数据成员,属性的定义和使用;掌握了方法的定义,调用和重载以及方法参数的传递以及构造函数的定义和使用。值得注意的是:本次实验中 return的使用以及所在的位置,类型转换时也经常用到

实验项目名称:

继承与多态

实验学时:

同组学生姓名:

实验地点:

1318

实验日期:月 16 日-11 月 30 日 实验成绩:

批改教师:

批改时间:

实验 3

继承与多态

一、实验目的、要求

(1)掌握类的继承性与多态性;(2)掌握虚方法的定义以及如何使用虚方法实现多态;(3)掌握抽象类的定义以及如何使用抽象方法实现多态; 二、实验要求

(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。

三、实验设备、环境

安装有 Visual Studio.NET 软件。

四、实验步骤

1、分析题意; 2、根据题目要求,新建项目; 3、编写并输入相关的程序代码; 5、运行与调试项目; 6、保存项目。

五、实验内容

1、设计一个 Windows 应用程序,在该程序中首先构造一个学生基本类,再分别构造小学生、中学生、大学生派生类,当输入相关数据,单击不用的按钮时,将分别创建不同的学生类对象,并输出当前学生的总人数,该学生的姓名,学生类型,平均成绩。

Student 类:

using System;using System.Collections.Generic;using System.Text;namespace Test3_1 {

public abstract class Student

{

protected string name;

protected int age;

public static int number;

public Student(string name, int age)

{

this.name = name;

this.age = age;

number++;

}

public string Name

{

get { return name;}

}

public abstract double Average();

}

public class Pupil : Student

{

protected double chinese;

protected double math;

public Pupil(string name, int age, double chinese, double math)

: base(name, age)

{

this.chinese = chinese;

this.math = math;

}

public override double Average()

{

return(chinese + math)/ 2;

}

}

public class Middle : Student

{

protected double chinese;

protected double math;

protected double english;

public Middle(string name, int age, double

chinese, double math, double english)

: base(name, age)

{

this.chinese = chinese;

this.math = math;

this.english = english;

}

public override double Average()

{

return(chinese + math + english)/ 3;

}

}

public class College : Student

{

protected double required;

protected double elective;

public College(string name, int age, double required, double elective)

: base(name, age)

{

this.required = required;

this.elective = elective;

}

public override double Average()

{

return(required + elective)/ 2;

}

} } Form 窗体内的代码:

using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test3_1 {

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void btnSmall_Click(object sender, EventArgs e)

{

Pupil p = new Pupil(txtName.Text,Convert.ToInt32(txtAge.Text),Convert.ToDouble(txtChinese.Text),Convert.ToDouble(txtMath.Text));

lblShow.Text += “ 总 人 数 :” +Convert.ToString(Student.number)+ “,” + “姓名:” + p.Name + “,” + “小学生” + “,” + “平均成绩为:” + p.Average()+“n”;

}

private void btnMiddle_Click(object sender, EventArgs e)

{

Middle m = new Middle(txtName.Text, Convert.ToInt32(txtAge.Text), Convert.ToDouble(txtChinese.Text), Convert.ToDouble(txtMath.Text),Convert.ToDouble(TxtEnglish.Text));

lblShow.Text += “ 总 人 数 :” + Convert.ToString(Student.number)+ “,” + “姓名:” + m.Name +

“,” + “中学生” + “,” + “平均成绩为:” + m.Average()+ “n”;

}

private void btnBig_Click(object sender, EventArgs e)

{

College c = new College(txtName.Text, Convert.ToInt32(txtAge.Text), Convert.ToDouble(txtChinese.Text), Convert.ToDouble(txtMath.Text));

lblShow.Text += “ 总 人 数 :” + Convert.ToString(Student.number)+ “,” + “姓名:” + c.Name + “,” + “大学生” + “,” + “平均成绩为:” + c.Average()+ “n”;

}

} } 2、设计一个 Windows 应用程序,在该程序中定义平面图形抽象类和派生类圆,矩形和三角形。

Figure 类代码:

using System;using System.Collections.Generic;using System.Text;namespace Test3_2

{

public abstract class Figure

{

public abstract double Area();

}

public class Circle:Figure

{

double radius;

public Circle(double r)

{

radius = r;

}

public override double Area()

{

return radius * radius * 3.14;

}

}

public class JUxing:Figure

{

double chang;

double kuan;

public JUxing(double c, double k)

{

this.chang = c;

this.kuan = k;

}

public override double Area()

{

return chang * kuan;

}

}

public class San:Figure

{

double bian;

double heigth;

public San(double b, double h)

{

this.bian = b;

this.heigth = h;

}

public override double Area()

{

return bian * heigth / 2;

}

} } Form 窗体代码:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace Test3_2 {

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void btnCircle_Click(object sender, EventArgs e)

{

Circle c=new

Circle(Convert.ToInt32(TxtChang.Text));

lblShow.Text = “圆的面积为:” + c.Area();

}

private void btnJu_Click(object sender, EventArgs e)

{

JUxing j = new JUxing(Convert.ToInt32(TxtChang.Text),Convert.ToInt32(TxtHigh.Text));

lblShow.Text = “矩形的面积为:” + j.Area();

}

private void btnSan_Click(object sender, EventArgs e)

{

San s = new San(Convert.ToInt32(TxtChang.Text), Convert.ToInt32(TxtHigh.Text));

lblShow.Text = “三角形的面积为:” + s.Area();

}

} }

3、定义一个 Person 类,包含姓名字段和一个方法,早上 8:30学生开始上课,教师开始讲课。分别用 new 关键字,虚方法,抽象类实现多态性。

New 关键字:

using System;using System.Collections.Generic;using System.Text;

namespace third.three {

class Program

{

static void Main(string[] args)

{

Student s=new Student(“学生”);

Teacher t=new Teacher(“教师”);

Console.WriteLine(s.name+s.work());

Console.WriteLine(t.name+t.work());

Console.ReadLine();

}

}

public class Person

{

public string name;

public interface method

{ string work();}

}

public class Student:Person

{

public Student(string name)

{ this.name = name;}

public string work()

{ return “早上 8:30 开始上课”;}

}

public class Teacher:Person

{

public Teacher(string name)

{ this.name = name;}

public string work()

{ return “开始讲课”;}

} } 虚方法:

using System;

using System.Collections.Generic;using System.Text;

namespace third.three.two {

class Program

{

static void Main(string[] args)

{

Student s = new Student(“张三”,“学生”);

PersonWork(s);

Teacher t=new Teacher(“李斯”,“教师”);

PersonWork(t);

}

private static void PersonWork(Person Person)

{ Console.WriteLine(Person.Work());}

}

public class Person

{

public string name;

public Person(string name)

{ this.name = name;}

public virtual string Work()

{ return string.Format(“Person{0}:早上 8:30 开始”,name);}

}

public class Student : Person

{

private string type;

public Student(string name, string type)

: base(name)

{ this.type = type;}

public override string Work()

{

return string.Format(“Person{0}:早上 8:30 开始上课”, name);

}

}

public class Teacher : Person

{

private string type;

public Teacher(string name, string type)

: base(name)

{ this.type = type;}

public override string Work()

{

return string.Format(“Person{0}:开始讲课”, name);

}

} }

抽象类:

using System;using System.Collections.Generic;using System.Text;

namespace third.three.three {

class Program

{

static void Main(string[] args)

{

Student s = new Student(“张三”, “学生”);

PersonWork(s);

Teacher t = new Teacher(“李斯”, “教师”);

PersonWork(t);

}

private static void PersonWork(Person person)

{

Console.WriteLine(person.Work());

}

}

public abstract class Person

{

public string name;

public Person(string name)

{ this.name = name;}

public abstract string Work();

}

public class Student : Person

{

private string type;

public Student(string name, string type)

: base(name)

{

this.type = type;

}

public override string Work()

{

return string.Format(“Person{0}:早上 8:30 开始上课”, name);

}

}

public class Teacher : Person

{

private string type;

public Teacher(string name, string type)

: base(name)

{

this.type = type;

}

public override string Work()

{

return string.Format(“Person{0}:开始讲课”, name);

}

}

}

六、实验体会(遇到问题及解决办法,编程后的心得体会)

通过本次实验,我理解了类的继承性与多态性;掌握了虚方法的定义以及如何用虚方法来实现多态;掌握了抽象类的定义以及如何用抽象方法来实现多态。

这次实验与前两次不同,采用 Windows 应用程序,既涉及到代码段也涉及到界面的设计。所以,勉强通过实验。

实验项目名称:

接口、文件和流

实验学时:

同组学生姓名:

实验地点:

A205

实验日期:月 7 日-12 月 21 日 实验成绩:

批改教师:

批改时间:

实验 4

接口、文件和流

一、实验目的

(1)掌握接口的定义及使用方法;(2)掌握流,序列化和反序列化的概念和使用方法;(3)掌握流文件的读写操作类及其使用方法;(4)掌握 OpenFileDialog,SaveFileDialog 等控件的使用。

二、实验要求

(1)编写程序要规范、正确,上机调试过程和结果要有记录;(2)做完实验后给出本实验的实验报告。

三、实验设备、环境

安装有 Visual Studio.NET 软件。

四、实验步骤

1、分析题意; 2、根据题目要求,新建项目; 3、编写并输入相关的程序代码; 5、运行与调试项目; 6、保存项目。

五、实验内容

1、定义一个 Person 类,包含姓名字段和一个方法,早上 8:30学生开始上课,教师开始讲课。用接口来实现。

using System;using System.Collections.Generic;

using System.Text;namespace Test4_1 {

class Program

{

static void Main(string[] args)

{

Student s = new Student(“张三”,“学生”);

Console.WriteLine(s.Work());

Teacher t = new Teacher(“李四”,“老师”);

Console.WriteLine(t.Work());

}

public abstract class Person

{

public string name;

public Person(string name)

{

this.name = name;

}

}

interface IPerson

{

string type { get;}

string Work();

}

public class Student :Person, IPerson

{

public string type

{

get { return string.Format(“老师”);}

}

public Student(string name, string type)

: base(name)

{

this.name=name;

}

public string Work()

{

return string.Format(“Person{0}:早上 8:30 开始上课”, name);

}

}

注:本文为网友上传,旨在传播知识,不代表本站观点,与本站立场无关。若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:iwenmi@163.com

上一篇:商务礼仪试题即答案下一篇:培优补差计划措施

付费复制
文书易10年专业运营,值得您的信赖

限时特价:7.9元/篇

原价:20元
微信支付
已付款请点这里联系客服
欢迎使用微信支付
扫一扫微信支付
微信支付:
支付成功
已获得文章复制权限
确定
常见问题