第一篇:电子设计应用软件训练总结报告要求
电子设计应用软件训练总结报告要求
一、主要内容
1.任务说明
2.原理图绘制说明
3.流程图绘制以及说明
4.proteus仿真说明 5.体会及合理化建议 附录I 电路原理图 参考文献
报告引述的参考文献一律列在文章末尾,应分别依次标出,参考文献不应少于5个。[期刊文献]格式:
作者.论文名:[J]刊物名称, 年.月,卷(期),论文在期刊中的页码。[图书文献] 格式:
作者.书名.版本(版本为第一版时省略),[M]出版地:出版社,出版年.引用内容所在书中的页码。
二、打印格式
在新建的word文档中设置页面,A4纸张,左页边距设为3.0cm,其它页边距为2.5cm;其它均为默认值。页眉为电子设计应用软件训练总结报告。
题目(居中)用二号粗楷体,小标题用四号粗宋体(小标题段前设0.5行间距),正文用小四号宋体,1.5倍行距。文中的电路图要按出现的先后次序标出图号(图号、图名及图中文字用五号宋体字)。
总结报告不少于5页(A4纸)。
三、装订要求
按封面(见附I)、任务书、总结报告的次序左侧装订。
附1:
课设封面格式及要求
(以上为宋体小四号字空四行)
沈 阳 航 空 航 天 大 学(隶书一号字居中)
电子设计应用软件训练总结报告(隶书二号字居中)
(以下为宋体加粗三号字)
学生姓名: 系、专业: 班级学号: 指导教师:
训练时间:2011年 7月16日至 2011年7月23日
第二篇:Proteus专业应用软件训练总结报告
皖 西 学 院
Proteus专业应用软件训练总结报告
学生姓名:
系、专业:机电系 电气工程及其自动化
班级学号:电气1203班
指导教师:
训练时间:2014年10月09日至 2014年11月13日
Proteus专业应用软件训练
实验一:实验二:单片机实验三:单片机汇编程序在实验四:实验五:基于
Proteus的基本操作与原理图绘制
C语言程序在Proteus中的仿真 Proteus中的仿真 Keil与Proteus C语言程序的联机调试Proteus的PCB线路板的绘制 2
实验一:Proteus的基本操作与原理图绘制
一.实验目的
1、安装Protesu软件;
2、熟练掌握Protesu软件的使用;
3、按照设计要求绘制电路原理图;
4、能够按要求对所设计的电路进行仿真; 二.Proteus软件的使用
1.了解Protuser软件的本性能,如图所示
三.认识Proteus软件窗口
图1ISIS窗口
四.Proteus元件库简介
图2
五.Proteus软件基本操作
1.建立和保存文件;
2.放置对象:单击鼠标左键(简称单击),放置元器件、连线;
3.选中对象:单击鼠标右键(简称右击),选择元器件、连线和其他对象,此时选中的操作对象以高亮红色(默认色)显示;
4.删除对象:双击鼠标右键(简称右双击),删除元器件、连线等; 5.块选择:按住鼠标右键拖出方框,选中方框中的多个元器件及其连线; 6.编辑对象:先单击鼠标右键后单击鼠标左键(简称先右后左击),编辑元器件属性;
7.移动对象:先右击选中对象(简称选中),按住鼠标左键移动,拖动元器件、连线;
8.缩放对象:按住鼠标中键滚动,以鼠标停留点为中心,缩放电路; 9.电路图布线:(1)自动捕捉:在自动捕捉有效的情况下,当光标靠近引脚末端或线时该处会自动感应出现一个“□”(光标成笔状),表示从此点可以单击画 5
线。
(2)自动布线:在开始引脚点击选定第一个画线点后,随指针移动自动有预画线(可以是直角预画线)出现,当遇到障碍时,会自动绕开障碍;在结束引脚点击布好两引脚连线。
(3)手工调整线形:要进行手工直角画线,直接在移动鼠标的过程中单击即可。若要手工任意角度画线,在移动鼠标的过程中按住Ctrl键,移动指针,预画线自动随指针呈任意角度,确定后单击即可。
(4)移动画线:选中要改变的画线(红色),指针靠近画线,出现“双箭头或十字箭头(拐点处)”捕捉标志。若是双箭头捕捉标志,按左键拖动鼠标,可沿箭头方向托动画该线;若是十字箭头捕捉标志,可沿任意角度拖动画线。
10.设置、修改元器件的属性:右击放置在ISIS编辑区中的该元器件(显示高亮度)后,再单击它打开其属性窗口,这时可在属性窗口中设置、修改它的属性。
六.绘制原理图
按电路原理图绘制原理图:根据元件对照表选择相应的元器件。先通过放置、移动、旋转元器件操作,将各元器件放置在ISIS编辑区中的合适位置,然后根据给定的原理图给电路图布线,接着设置、修改元器件的属性,最后检查无误后,完成原理图的绘制。
七.Proteus仿真
演示结果:
实验二:单片机汇编程序在Proteus中仿真
一.实验目的
本节Proteus专业应用软件训练课的主要内容是单片机(AT89C51)汇编程序在Proteus中的仿真。
二.绘制原理图
打开Proteus 7 Professional(运行ISIS 7 Professional),添加所需元件并连接电路图。绘制的电路原理图,如图所示:
电路图绘制完成之后保存该原理图。注意要新建一个文件夹,用于存放该文件以及此次仿真实验所需的源程序(*.ASM),即把文件存放在同一个目录下。
三.进行仿真实验
以上操作完成后,便可进行仿真实验。单击ISIS 7 Professional窗口中左下角的“”图标开始仿真,单击“
”图标停止仿真。右键单击示波器,选择“Digital Oscilloscope”观察仿真结果。仿真结果如图所示:
实验三:单片机C语言程序在Proteus中的仿真
一.实验目的
本节Proteus专业应用软件训练课的主要内容是单片机(AT89C51)C语言程序在Proteus中的仿真。在Keil µVision3 开发环境下进行,编写源程序(*.C),然后把源程序进行编译和链接,生成十六进制文件(*.HEX),最后把生成十六进制文件用某种编程工具下载到单片机的程序存储器中,进而在Proteus中进行仿真。
二.安装Keil μVision3 Keil µVision3 是一款基于Windows的软件平台,它是一种用于51单片机的集成开发环境(IDE—Intergrated Development Evironment)。Keil µVision3内包 9
含了功能强大的编辑器和调试器。编辑器可以像一般的文本编辑器一样对源代码进行编辑,并允许用户在编辑时设置程序断点(可在源代码未经编译和汇编之前)。用户启动µVision3的调试器之后,断点即被激活。
按照安装说明安装Keil µVision3。启动后,显示如图所示:
三.在Keil μVision3环境下编写源程序(*.C),然后把源程序进行编译和链接,生成十六进制文件(*.HEX)
(1)建立工程。首先要建立一个项目,在编辑界面,从“P工程(Project)”下拉菜单中,选择“N新建工程(New Project)”,在弹出的对话框中的“文件名”后输入一个程序项目名称,保存后的文件扩展名为“.uv2”,这是Keil µVision3项目文件的扩展名,以后可直接点击此文件就可打开先前做的项目。选择合适的路径,然后输入工程的名称,并保存。
(2)选择单片机型号。用户可根据所使用的单片机来选择。Keil µVision3支持几乎所有的51内核的单片机。(例如选择“Atmel”)单击Atmel左边的“+”,然后选择相应的单片机型号,例如选择AT89C51。单击“确定”。
(3)编写源程序。从“F文件(File)”下拉菜单中,选择“新建(New)”,此时光标在编辑窗口里闪烁,这时,用户就可以编写程序了。源程序如图所示:
可以在文本编辑区中输入代码。输入完成后,从“F文件(File)”下拉菜单中,选择“S保存(Save)”。在“文件名”栏的编辑框中,键入文件名,同时,必须键入正确的扩展名(为“.c”)。
(4)源程序加入工程。从“Project Workspace”区中,右键单击“Source Group1”。在弹出的菜单中选择“Add File to group “Source Group1”,显示结果如图所示:
再选择建立的源程序,然后单击“Add”按钮,即可把源程序加入到工程中。
(5)存储模式的选择及输出文件类型的选择。从“Project Workspace”区中,右键单击“Target1”,选择“Options for Target ‘Target 1’”,显示如图所示:
在弹出的窗口中选择存储模式,C51编译器支持三种存储模式:SMALL模式、COMPACT模式和LARGE模式。不同的存储模式对变量默认的存储器类型不一样。再选择“输出(Output)”,选择“创建HEX文件(Create HEX File)”单选框,这样在编译项目 12
后,就可以生成十六进制文件,单击“确定”。
(6)编译工程。单击工具栏中的“Translate current file”、“Build target ”和“Rebuild all target files”后,在所建的工程文件夹中,生成十六进制文件(*.HEX)。把十六进制文件用某种工具软件下载到单片机的程序存储器中,上电后程序即可运行。
在编译过程中,如果发现有错误,需要修改程序。
四.绘制原理图,并给AT89C51单片机添加十六进制文件(*.HEX)进行仿真
绘制电路原理图,如图所示:
然后单击ISIS 7 Professional窗口中的“Source”,在下拉菜单中选择“Add/Remove Source files...”,给AT89C51单片机添加十六进制文件(*.HEX)。
以上操作完成后,便可进行仿真实验。单击ISIS 7 Professional窗口中左下角的“”图标开始仿真,单击“
”图标停止仿真。右键单击示波器,选择“Digital Oscilloscope”观察仿真结果。
实验四:Keil与Proteus C语言程序的联机
调试
一.实验目的
本节Proteus专业应用软件训练课的主要内容是对keil集成开发环境和Proteus仿真软件更深入的使用,完成两个软件的联机调试,为以后学习打好基础。
二.Proteus与Keil联机调试
Proteus和Keil的破解安装包网上到处都是,Keil μVision3和Proteus6以上的版本都行。
Proteus与Keil联调原理:分别在keil软件和Proteus软件中进行一些设置,两个软件便可以进行对同一个程序的联机调试。Proteus与Keil联调方法如下:
(1)安装 Proteus软件(2)安装keil C51 uVision3。
(3)安装keil驱动。
(4)修改keil安装目录下Tools.ini 文件。用记事本打开Keil根目录下的TOOLS.INI 文件,在[C51] 栏目下加入TDRV3=BINVDM51.DLL(“Proteus VSM Monitor-51 Driver”),(5)打开proteus,画出相应电路图,在proteus的debug菜单中选中use remote debug monitor。在keil中编写MCU的程序。进入KEIL的project 菜单option for target '工程名'。在DEBUG选项中右栏上部的下拉菜选中Proteus VSM Monitor-51 Driver。在进入seting,如果是在同一台电脑上IP名为127.0.0.1,如不是同一台则填另一台的IP地址。端口号一定为8000。
下面以一个具体例子来详细讲解 Proteus与Keil联调方法:
(1)打开keil软件,新建工程。将工程命名为Zhaoqiqi,然后保存在新建的工程文件夹LianTiao中。
(2)选择CPU型号,我们这里选择Atmel公司的AT89C51。
(3)新建文本文,用来编写源程序。本例中的源程序同项目二中的源程序一样,如图2.2所示。编写完成后将文件命名为“Zhaoqiqi”,然后保存在新建的工程文件夹LianTiao中。(注:该文件后缀名为.C)
(4)将新建的文件加入工程中。在Source Group 1上点鼠标右键,在弹出的菜单上选择Add Files„选项。在弹出的对话框中选择工程文件夹下刚才新建的“Zhaoqiqi.C”文件。点击Add,再点击Close关闭对话框。
(5)设置工程,让其编译时输出十六进制可执行文件。如图在target 1上点右键选设置。在弹出的对话框中将Create HEX File 选中,按确定退出。
(6)在Proteus中绘制电路原理图。原理图同项目二的原理图一样,如图2.6所示。
(7)在Keil中对源程序进行编译。可以看到编译成功,并生成了hex可执行文件,该文件在工程文件夹下。
(8)在Proteus中的单片机芯片上点鼠标右键,将其选中。选中的器件将变成红色。然后再在上面点鼠标左键,打开设置界面。如图4.1所示,点击Program File后的图标,将生成的HEX可执行文件加入芯片中。
(9)对两个软件进行一些设置。先在proteus的debug菜单中选中use remote debug monitor。然后进入KEIL的project 菜单option for target ‘工程名’。在DEBUG选项中右栏上部的下拉菜选中Proteus VSM Monitor-51 Driver。再进入seting,如果是在同一台电脑上IP名为127.0.0.1,如不是同一台则填另一台的IP地址。端口号一定为8000。
(10)进行联机调试。在Keil中单击“Start/Stop Debug Session”,即标。显示如图所示:
图 16
再选择Zhaoqiqi源程序界面,按下单步执行按键,即
图标。出现黄色箭头指向源程序的主函数的第一行,然后逐步按下单步执行按键,逐步执行各语句。Keil每调试一次,Proteus就play一次,再次按
图标,停止调试。演示结果如图所示:
至此,Keil与Proteus C语言程序的联机调试完成。
实验五:基于Proteus的PCB线路板的绘制
一.实验目的
本节专业应用软件训练课的主要内容是学习利用Proteus软件绘制PCB线路板。
二.Proteus绘制PCB线路板
用Proteus制作PCB线路板通常包括以下一些步骤:
(1)绘制电路原理图并仿真调试。打开Proteus 7 Professional(运行ISIS 7 Professional),添加所需元件并连接电路图。三.原理图的绘制
并结合Keil 进行软件编程和硬件的仿真调试,调试成功后,便可开始制作PCB。在此不再赘述调试过程。
(2)加载网络表及元件封装。在ISIS 7 Professional界面中单击“Netlist Transfer To ARES”,即
图标。可以看到,在中左下角的元器件选择窗口中列出了从原理图加载过来的所有元器件。若原理图中的某些器件没有自动加载封装或者封装库中没有合适的封装,那么在加载网络表时就会弹出一个要求选择封装的对话框,这时就需要根据具体的元件及其封装进行手动选择并加载。对于封装库中没有的封装或者是与实际的元件不符的封装,就需要自己画。选中封装,在Library选项中左键单击图标,出现保存对话框,在New Package Name中键入要保存的元 18
件封装名称;在Package Category(保存范畴)中选中Miscellaneous;在Package Type(封装类型)中选中Through Hole;在Package Sub-Category(保存子范畴)中选中Switches;单击OK,就把按钮封装保存到了USERPKG(用户自建封装库)库中。再重新加载网络表格,就把所有原件加载到了PCB板中。(3)规划电路板并设置相关参数。
(4)元件布局及调整。电路板的规则设计好以后,就可导入元件并布局。布局有自动布局和手动布局两种方式。若采用自动布局方式,只要在界面的菜单栏Tools中选中项,弹出对话框,单击OK,就自动把元件布局于PCB板中了。而如果采用手动布局的方式,则在左下角的元件选择窗口中选中元件,在PCB板边框中适当位置单击左键,就可以把元件放入。但是无论是自动布局还是手动布局,都需要对元件进行调整。主要是对元件的移动和翻转等操作
(5)布线并调整。PCB的布线也是有自动布线和手动布线两种布线方式。一般,是先用自动布线,然后手工修改,也可以直接手工布线。PCB元件布置完成如图所示:
3D效果图如下
总结体会
这学期学校为我们安排了proteus实验,Proteus软件实验课我们只上了五次的课,通过这五次课程的学习,我学会了简单的使用Proteus软件。还有原理图的绘制,在学习原理图绘制的过程中,我有更加的了解了Proteus软件的使用Proteus软件它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。在经过5周课的学习后,我们对proteus软件有了一个初步的认识。因为实验时间比较短,所以我们学的很认真,但是仍然有一些地方我们会遇见困难,这时候翁老师就会给我们耐心的讲解,帮助我们实验,让我们对proteus认识更加深刻。
Proteus不仅在电路仿真上有其强大的地方,在电路设计上更是有其强大之处。首先在电路仿真上他可以对我们所画电路仿真并且找出其错误的地方,让我们知其然,知其所以然。然后在设计上可以与kill软件联调,原理图设计完成后,一键便可进入ARES的PCB设计环境,实现从概念到产品的完整设计;打打提高了效率。
通过学习proteus,我更加明白了知识的重要性。在以后的工作学习中,我相信它一定会带给我很多帮助!
这个软件实验课跟我们专业很相近,在我们以后的工作中也很重要,所以在课后我们也要好好学习使用这个软件。学习这个软件的使用,就是要自己多多练习,还要用心,当然不管做什么,我们都要用心。这次的实验课,让我获益匪浅。最后再次感谢翁老师对我们的耐心指导!
2014年11月18号
参考文献
[1]张毅刚,刘杰.MCS-51单片机原理及应用.[M]哈尔滨工艺大学出版社,2004年.[2]周润景,张丽娜.基于PROTUSE的电路及单片机系统设计与仿真.[M]北京航空航天大学出版社,2006年
[3]林志琦,郎建军,李会杰,佟大鹏.基于PROTUSE的单片机可视化软硬件仿真.[M]北京航空航天大学出版社,2006年
[4]周润景,袁伟亭.基于PROTUSE的ARM虚拟开发技术.[M] 北京航空航天大学出版设,2007年。
[5]张靖武,周灵杉.单片机系统的PROTUSE设计与仿真.[M]电子工业出版社,2007年。
[6] 张伟.单片机原理及应用,[M]北京:机械工业出版社,2005年3月.[7] 薛栋梁.单片机原理及应用,[M]北京:中国水利水电出版社.2001年
第三篇:电子线路应用软件训练总结报告潘昊
电子设计应用软件训练总结报告
PROTEL部分
一、任务说明
1、熟练掌握Protel 99SE软件的使用;
2、按要求绘制电路原理图;
3、能够按要求建立元件库和封装库;
4、按要求,根据电路原理图绘制PCB版图(能够用自动布线和手动布线相结合);
5、依据所给的电路图画出原理图和封装,并作报告说明;
6、电路图用A4纸张打印。
二、原理图绘制
在建立的工程中建立一个原理图文件,绘制原理图,包括设置电路图纸、放置元器件、调整元器件的布局、放置导线和添加注释等步骤,做出注释说明。
1、新建一个设计数据库文件和原理图文件,并打开原理图设计编辑器。新建原理图文件步骤:
(1)、打开文件->新建设计,命名为:mydesign潘昊.ddb文件,在新建立的设计中点新建文件,弹出以下对话框。
(2)、单击设计导航中的Document项,并执行文件-> 新建命令打开New Document对话框。
(3)、双击New Document对话框 Document 选项卡中的Schematic Document图标,此时Protel将新建一个后缀名为.Sch的原理图文件,自动命名为sheet1.sch。(如图1所示)
图1 新建原理图文件
电子设计应用软件训练总结报告
(4)双击新建的原理图文件,进入绘图编辑界面,进行绘图操作。(如图2所示)
图2 原理图设计编辑器
2、新建元件库:对protel自带的元件
库中找不到所需元件时候,需要自己画出元件图,建立自己的库文件。
(1)、在document文档中,点击新建,建立后缀为Lib库的文件,命名为mylib.Lib,双击打开后,在其中建立自己的元件库。注意几点:
1、开始时候,在工具栏中点击新建元件或者元件重命名,删除等操作进行操作
2、画元件的时候,管脚编号可从一开始设计为1,以后依次自动自加;
3、画完每个后保存,再建立下一个。
(2)、AT-89C51单片机的的库文件建立:
图3 AT89-C51(3)、MAX232的库文件建立:
电子设计应用软件训练总结报告
图4 MAX232(4)、MAX485的库文件建立:
图5 MAX485(5)、RS485的库文件建立:
电子设计应用软件训练总结报告
图6 RS485
3、绘制原理图:准备完元件后开始进行绘图,按照题目,依次连接元件,形成完整的原理图,其中,交叉线路多的地方尽量用网络标号,较为方便。
(1)点击原理图管理器“浏览窗口”标签切换到原理图管理器。
(2)点击“浏览”下的下拉式l列表框,并从列表框中选择“库”项。
(3)在元件库中选择电路所需的元件,单击“放置”按钮,单击鼠标左键放置元(4)器件,鼠标右键取消放置元器件的状态。(5)过程中,双击元器件,可以改变其参数。
单击画导线工具,将光标移到管脚处,单击鼠标左键进行连线。连接好整个电路图。
三、PCB板的绘制
画完原理图后,进行一刷版的绘制,首先,在原理图中双击元件,在元件封装footprint栏中填入元件对应的封装,如图:(在51单片机栏中填入DIP40)。
电子设计应用软件训练总结报告
图7 填写封装
在此之前需切换在PCB板中,在元件封装库中找到每个元件对应的封装,记住其名字。如果库中没有,需要自己建立,画出其封装形式。
1、制作元件封装,在封装库中没有找到的封装自己画制,保存,然后在元件封装库中添加进去自己建的库,再在原理图中元件封装的位置填入自己命名的封装名字即可。(1)、建库,同上面建立元件原理图时建立库的流程一样,建立一个后缀为LIB的文件,命名为mypcblib.LIB文件,双击进入,进行编辑。
(2)、确定引脚尺寸:点击工具菜单下的placedimesion,放置焊盘距离为自己测量或从器件资料中查得的量值。
(3)、画封装边框:在topoverlay层中画黄色的边界线,与原件实物焊口一样。如图:
图8 晶振封装
四、ERC电器检查
在画好的原理图中,有些地方可能是有没有接好的,因此画完的时必须用电器检查功能查看是否有不对的地方,以便及时的改正过来。Protel自带的检查功能在工具菜单下第一个位置上,点击后会生成检查报告,如果没有错误,就可以进行下一步工作了。以下是报告界面图:
电子设计应用软件训练总结报告
图9 电器检查结果
五、生成网络表或更新PCB 点击design菜单下的creat netlist会产生网络表,对原理图中所有元件的信息以及彼此间的连接关系列出了表,可以在PCB界面下的design菜单中导入网络表一项导入元件封装关系,也可以直接在原理图中design菜单选择更新PCB,选择进入PCB编辑界面,网络表见附录。
六、生成元件清单
Protel自带功能还可以导出元件清单,在report菜单下的元件清单栏中操作,形成的报告列出了所有元件的信息,包括封装等各种参数,以便以后参阅或者购买元器件时对照。有三种形式的,根据我的喜好选择为excel形式的,详细见附录。
七、调整PCB封装图,设计方案,完成布线,形成完整地PCB文件
在keepoutlay层面根据元件参数大致中画一个矩形框,将导入进来的网络封装按照原理图中最合理的位置拖进框中,期间检查有没有漏掉的地方没有接线的,手动把它接上,调整好位置后,根据实际再调整下边框的大小,然后利用工具菜单下的自动布线功能进行布线。就形成了印制电路图,再次检查电路,不对或不合理的地方可以删掉再手动画线调整。最终的PCB布局图见附录。
八、总结体会及建议
通过一周的PROTEL 99SE软件的课设,从完全不懂得状态让我认识并且学会了如何使用PROTEL 99SE软件的应用,知道了印刷电路板的形成流程,加深了我对电子这一专业的兴趣,从而也为以后的发展,奠定了基础,而且让我懂得了做事一定要仔细,不然又要重头再来,虽然很简单,但是精益求精的时候也可以收获许多。
建议:
(1)、希望实验室能全天开放,这样可以让我们的时间适用的更好。
(2)、希望指导老师能来实验室时间长一点,这样可以使我们学生和老师交流的时间也会长,刚好的指导并提升我们的能力。
(3)、希望学院以后所组织一些类似课设的学习形式,增加下难度,曾加下新颖度,使得同学们能够更多的从中学的知识,而不是应付任务。
电子设计应用软件训练总结报告
参考文献:
1、《Protel 99SE电路设计》 莫力,北京:国防工业出版社,2005.01
2、刘天旺主编.Protel 99 SE电路设计应用教程.[M]北京:电子工业出版社,2007.8
3、文艳等编著.Protel 99 SE电子电路设计.[M]北京:机械工业出版社,2006.8
4、老虎工作室.Protel 99 SE多层次电路板设计与制作.[M]北京:人民邮电出版社,2007年.2--18页。
5、邵建昂.Protel99教学实践探讨.实验室研究与探索,2007,26(2):100-105.6、韩晓东,李勇江.Protel99SE电路设计实用教程.[M]北京:中国铁道出版社,2007.电子设计应用软件训练总结报告
附录1 原理图
电子设计应用软件训练总结报告
附录2 PCB板
附录3 器件清单
电子设计应用软件训练总结报告
软件设计部分
一、任务说明
1、链表基本操作 要求:
利用链表的插入运算建立线性链表,然后利用链表的查找、删除、计数、输出等运算反复实现链表的这些操作(插入、删除、查找、计数、输出单独写成函数的形式),并能在屏幕上输出操作前后的结果。
2、实现两个链表的合并 要求:
(1)建立两个链表A和B,链表元素个数分别为m和n个。
(2)假设元素分别为(x1,x2,„xm),和(y1,y2, „yn)。把它们合并成一个线性表C,使得:
当m>=n时,C=x1,y1,x2,y2,„xn,yn,„,xm 当n>m时,C=y1,x1,y2,x2,„ym,xm,„,yn 输出线性表C
二、题目分析
本题目要求建立链表并对链表进行一些常用操作,最后实现两个链表的合并,输出在屏幕上,依据题目,首先建立一个全局变量为链表名,在主函数中调用创建函数创建链表,然后依次进行要求的操作,并在每次操作完后返回到菜单下,可以循环反复操作。最后定义一个合并函数,在其中调用链表的创建函数,建立两个链表A、B,然后实现合并功能,并打印在屏幕上就完成了内容。
三、设计过程简述
经过分析,决定本课题用模块化设计比较简明,因此,依次设计了建立链表函数creat(),删除函数dele(),查找函数find(),计数函数count(),插入函数insert(),显示函数display(),合并函数Union(),一下将依次对各块的功能及优点缺点进行分析解释。
1、主函数
设计的主函数中用了switch语句,同时实现了菜单的功能,对要操作的函数快依次编号,在每次操作完成后将菜单编号置零,从而实现循环操作。
电子设计应用软件训练总结报告
图 1 主要程序解释:在输入有效的情况下,当每一个调用结束后,令i=0,对菜单置零,实现循环操作。
2、建立链表函数
电子设计应用软件训练总结报告
图 2
creat()函数用了尾插法建立线性链表,其中设立了一个形参L,当建表结束后,打印新的链表在屏幕上并返回L,以便下面的操作中简单调用。主要语句分析: r指向尾链表结尾,每次读入一个不为空的字符赋值给新开辟空间的节点s,并把s赋值给r的下一个节点,r=s实现r后移,直到读到的值为空值,把尾节点定义为空。
3、插入元素函数insert()
该函数实现线性链表的插入运算,从键盘输入要插入元素的值和位置,然后插入到对应的位置,最后显示出新的链表到屏幕。主要语句解释分析:
图 3 变量j表示链表中元素的个数,当键入的i大于j时,输出无法插入。算法很简单,即找到插入位置的前一个节点,然后将要插入的元素插入到其后即可。
4、删除节点函数dele()
删除元素思想是先按值查找,然后直接删除,结束后打印新的链表到屏幕,删除算法和插入算法雷同,不做细述。
电子设计应用软件训练总结报告
图 4 此处用了if语句判断是否是链表结尾处,如果是,则直接将其置零。
5、链表元素个数统计函数
count()函数中定义了一个指针q从头找到尾,定义了一个变量k,每次加1,结果就是链表元素个数,返回k。
电子设计应用软件训练总结报告
图 5 用while循环来实现。
6、查找元素函数
定义的find()函数,实现按值查找,同时返回元素的位置,打印并返回。
图 7 循环条件判断该节点值是否与键入的值相同。
7、链表合并函数Union()
本次软件设计的核心是实现对两个链表的合并,形成另外一个链表C,打印到屏幕,在函数内部嵌套调用建表函数,建立了两个链表A、B,嵌套调用了链表计数函数,得到链表的长度m、n,用以作为判断条件。
电子设计应用软件训练总结报告
图 8 基本思想是用两个中间量节点s、t没次把q、p后的节点暂时存下,待节点q插入到p后时,p、q后移,即把s、t的值再赋给p、q。第一个if语句判断如果A被B长时,q指向A,p指向B。
8、display()函数
设计中独立设计了链表显示函数,方便其他各个模块中调用,减少了编程字段,思路是按顺序打印每个节点的元素值,循环到结尾。
电子设计应用软件训练总结报告
图 9
四、调试过程及主要运行结果
图10 建表调试结果
图 11 插入调试结果
电子设计应用软件训练总结报告
图 12 删除调试结果
图 13 查找调试结果
图 14 计数调试结果
电子设计应用软件训练总结报告
图 15 合并链表调试结果
图 16 打印链表调试结果
五、总结体会
课程设计就此告一段落,但是从课程设计中学到的东西,却受益匪浅。这次的题目是对链表的操作,正好是本学期学的东西,通过课设不仅验证了这学期的学习质量,更加深了对所学数据库、链表等知识的印象,也为日后的学习打下了坚实的基础,而且,也让我认识到了一件事:那就是,只要你静下心来,专注的去做一件事的时候,没有什么是做不到的,年轻就是我们唯一的资本,相信以后如此坚持,一定取得不错的成就。
电子设计应用软件训练总结报告
参考文献:
1、陈雪飞《C++实例入门》,中国青年出版社,2004年5月出版
2、谭浩强编,《C++面向对象程序设计》,清华大学出版社,2005年7月出版
3、李师贤等译,《C++精髓》,机械工业出版社,2002年8月出版
4、韩滨 魏海萍,《C++类库使用手册》,电子工业出版社,2007年7月出版
5、陈灿煌,《C++彻底研究》
中国青年出版社,2005年9月出版。
电子设计应用软件训练总结报告
六、源程序代码
#include
typedef struct node //链表节点定义 { datatype data;struct node *next;}linklist;linklist *A,*B,*L,*C;
/*函数声明*/ linklist* creat();void display(linklist *L);void insert(linklist *L);void dele(linklist *L);int count(linklist *L);find(linklist*L);void Union(linklist *A,linklist *B);
/*主函数*/ void main(){
int i;linklist *s,*r;char x;printf(“ 请选择需要的操作: n”);printf(“ 1创建链表 n”);printf(“ 2删除元素 n”);printf(“ 3插入元素 n”);printf(“ 4显示链表 n”);printf(“ 5查找元素 n”);printf(“ 6链表元素计数 n”);
printf(“ 7合并链表 n”);
电子设计应用软件训练总结报告
printf(“ 8退出 n”);
}
/*建立单链表*/ scanf(“%d”,&i);{
} if(i<1 || i>8)
{
} i=0;//菜单清零 printf(“n”);printf(“请继续选择你的操作n”);printf(“ 1创建链表L n”);printf(“ 2删除元素 n”);printf(“ 3插入元素 n”);printf(“ 4显示链表 n”);printf(“ 5查找元素 n”);printf(“ 6链表元素计数 n”);printf(“ 8退出 n”);scanf(“%d”,&i);case 1: L=creat();break;//创建链表 case 2: dele(L);break;//删除节点 case 4: display(L);break;//显示链表 case 5: find(L);break;//查找节点
case 6: count(L);break;//输出链表元素个数 case 8: exit(0);//退出系统 printf(“输入错误!”);switch(i)else while(1)case 3: insert(L);break;//增加节点
case 7: Union(A,B);break;//合并两个链表
printf(“ 7合并链表 n”);
电子设计应用软件训练总结报告
linklist* creat(){
linklist *s,*r;char x;L=(linklist*)malloc(sizeof(linklist));r=L;printf(“输入以'$'为结束符的字符n”);scanf(“%c”,&x);while(x!='$'){
} r->next=NULL;s=(linklist*)malloc(sizeof(linklist));s->data=x;r->next=s;r=s;scanf(“%c”,&x);printf(“新的链表如下:”);display(L);}
/*执行插入运算*/ void insert(linklist *L){
int i=0,j=0;char y;linklist *s,*r,*p;r=L;printf(“输入要插入的数据和位置n”);y=getchar();scanf(“%c %d”, &y,&i);if(i<=0)printf(“errorn”);return(L);
电子设计应用软件训练总结报告
else {
} while(r->next!=NULL){
} if(i>j)printf(“errorn”);j++;r=r->next;if(i==j){
} s=(linklist*)malloc(sizeof(linklist));s->data=y;p=r->next;r->next=s;s->next=p;printf(“新的链表如下:”);display(L);}
/*执行删除运算*/ void dele(linklist *L){
int i=0,j=0;char y;linklist *r;r=L;printf(“输入要删除的数据n”);scanf(“%s”,&y);while(r){ j++;
电子设计应用软件训练总结报告
} } r=r->next;r=L;while(r){ if(r->next!=NULL){
} else } if(i==j)printf(“没有要删除的数据n”);display(L);r=NULL;//当为尾节点时,尾节点置零 if(y==r->next->data){ r->next=r->next->next;} r=r->next;i++;printf(“新的链表如下:”);
/*链表元素计数*/ int count(linklist *L){
linklist *q;int k=0;while(q->next!=NULL){ k++;} q=L->next;q=q->next;
电子设计应用软件训练总结报告
printf(“链表的元素个数如下n”);printf(“%d”, k);return k;}
/*查找元素*/ find(linklist *L){
int a=0;linklist *q;char x;q=L->next;printf(“请输入您要查找的元素n”);scanf(“%s”,&x);while(q->data!=x){ a++;} q=q->next;printf(“您要查找的元素及位置如下:n”);printf(“%c,%d”,q->data,a);return(q->data,a);}
/*合并链表*/ void Union(linklist *A,linklist *B){
int m,n;linklist *C,*p,*q,*s,*t;printf(“****创建链表A,B****n”);printf(“链表 A:n”);m=count(A);A=creat();
电子设计应用软件训练总结报告
printf(“n”);printf(“链表 B:n”);B=creat();n=count(B);printf(“n”);p=A;
}
/*执行显示运算*/ void display(linklist *L){ linklist *r;q=B;C=A;if(m p=B->next;q=A->next;C=B;while(p&&q){ s=p->next;//p节点后下一个节点放到s后 p->next=q;//q节点放到p后面 if(s) { } t=q->next;//q后面的节点先放到t后 q->next=s;//重新把p后原有的节点放回来 } p=s;//p节点后移 q=t;//q节点后移 } printf(“合并后的链表如下”);display(C); 电子设计应用软件训练总结报告 r=L->next;while(r){ printf(“%c”,r->data); r=r->next;} printf(“n”);} 《电子设计竞赛设计总结》报告要求 1、设计报告不要抄袭现有的设计,严禁直接拷贝、复制网络、杂志上的内容和图片,但可以参考相关文献(要求列出参考文献)。 2、设计报告封面包括设计题目、成绩及个人信息。见附录A。 3、设计报告正文部分要求包括:(1)课题任务、(2)方案比较与选择、(3)电路设计、(4)程序设计、(5)测试方案、(6)系统调试、(7)数据测试与处理、(8)总结、(9)参考文献、(10)附录:A、设计电路图(原理图、PCB图),B、程序(要求有文字注释),C、相关作品图片。正文部分用小四号字,图号及其名称、表号及其名称为小四号字,图中文字为五号字。 4、WPS可能显示格式出现混乱,请自行调整至美观 5、提交word和pdf格式 附录A 《校级电子设计竞赛》 设计总结报告 参赛作品编号: 设计题目及编号:() 学 院: 专业与班级: 组长姓名: 学 号: 学 院: 专业与班级: 组员一姓名: 学 号: 学 院: 专业与班级: 组员二姓名: 学 号: 作品完成时间: 年 月 日 评阅教师: 成 绩: 日 期: 技术总结报告要求 如果竞赛题中有对报告的要求,按竞赛题执行,以下仅供参考。 摘要:简述本题目的概况,完成的任务,达到的技术水平,有何特色和创新点。中文300字以内。如果竞赛题中有对报告的要求,按竞赛题执行,以下仅供参考 关键词:2~3个 一、设计任务:即题目的要求 二、方案论证:最少要论证2~3个可行的方案,进行比较,选择其中的一个,说明原因。给出选定方案的方框图。 三、理论分析与计算:对选定的方案,按照组成单元进行理论分析,必要的部分需要进行计算,或选择合适的集成电路芯片。需要有软件配合的部分,应该给出流程图,并对流程所涉及的原理进行必要的说明。 四、测试结果与误差分析:对题目的技术指标和功能进行测试,需要提出测试方法、电路、测试仪器。对常规技术指标的测试无需说明原理,对特殊的技术指标需要简要说明原理。记录实测数据,进行必要的数据处理和误差分析,列出表格或绘出曲线。需要注意数据的规范性、单位书写正确。也可以提供示波器曲线的照片。 五、结论、心得体会第四篇:电子设计竞赛设计总结报告要求
第五篇:2015年电子设计大赛技术总结报告要求