跳舞搭配问题课程设计报告.doc_第1页
跳舞搭配问题课程设计报告.doc_第2页
跳舞搭配问题课程设计报告.doc_第3页
跳舞搭配问题课程设计报告.doc_第4页
跳舞搭配问题课程设计报告.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈 阳 航 空 航 天 大 学电子设计应用软件训练总结报告学生姓名:郑君学院专业:电子信息工程班级学号:2009040201032指导教师:滕金玉训练时间:2011年 7月11日至 2011年7月22日电子设计应用软件训练任务【训练任务】 (一)PROTEL部分1、熟练掌握PROTEL软件的使用; 2、按要求绘制电路原理图; 3、能够按要求建立元件库和封装库; 4、按要求根据电路原理图绘制PCB版图(能够用自动布线和手动布线相结合)。 (二)软件设计部分 按照给定的软件设计任务完成相应的软件设计【基本要求及说明】 (一)PROTEL部分1、电路原理图图纸尺寸设置为A4; 2、电路原理图见附图; 3、按指定电路图在PROTEL 99中绘制原理图; 4、根据原理图绘制印制板图; 5、根据要求创建原理图器件和该器件的相应的封装。(二)软件设计部分 按软件设计要求实现相应的功能【按照要求撰写总结报告】 指导教师 年 月 日负责教师 年 月 日学生签字 年 月 日成绩评定表评语、建议或需要说明的问题:指导教师签字: 日期:成 绩PROTEL 训 练 任 务软 件 设 计 任 务课程设计的内容及要求:一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编号坐在舞池的两边的椅子上.每曲开始时,依次从男生和女生中各出一人配对跳舞, 本曲没成功配对者坐着等待下一曲找舞伴.请设计一系统模拟动态地显示出上述过程,要求如下:1. 输出每曲配对情况2. 计算出任何一个男生(编号为X)和任意女生(编号为Y),在第K曲配对跳舞的情况.至少求出K的两个值.提示:用队列来解决比较方便.(一) PROTEL部分1任务说明:(1) 熟练掌握PROTEL软件的使用; (2) 按要求绘制电路原理图; (3) 能够按要求建立元件库和封装库;(4) 按要求根据电路原理图绘制PCB版图(能够用自动布线和手动布线相结合)。2原理图绘制说明:我们这次实习的任务是:练习学会使用PROTEL 99SE软件。从中我们要学会使用PROTEL 99SE软件来绘制任一原理图以及任一PCB原理图。首先是安装这个软件,在基本掌握这个软件的使用说明时,开始绘制原理图。打开PROTEL 99SE,新建一个PROTEL工程,在Document中分别新建一个原理图,如图:原理图库,封装,和封装库。根据任务书上的电路原理图,去库里找相对应的元件对应摆好。由于我这个电路原理图比较特殊,都是一些单片机数码管器件,在库存里不能找到,所以绘制起来比较麻烦,当将这些元器件画出来并在原理图中摆好后,将它们再依次连接起来,并用PgUp和PgDn键依次为放大、缩小键,可以调节电路图的清晰度,便于检查。检查无误后便可以保存原理图,则原理图绘制完毕。3、印制版图绘制说明:在绘制PCB原理图之前,要先给元件原理图进行封装。新建一个PCB Docment,如下图:在库里找每个元件对应的封装号,然后添加到每个元件的封装栏中,进行保存。根据原理图在菜单栏中点击设计菜单,创建网络表,生成一个Sheet1.NET文件。点击菜单栏中的文件菜单,新建一个PCB Docment,点击设计菜单,生成网络表,在网络表中会显示错误之处。如果没有错误,点击确定便会自动生成PCB原理图。用粉色线将原理图圈至框内,制成印制板边框图,给板布局,使板子既经济又美观。然后点击“自动布线”,给板全部布线。最后便生成最完美的印制版图。4对所绘制电路进行简要分析:该电路仅由整流桥、三极管、二极管、变压器、电感、电阻、无极性电容等基本元件组成,电路构造比较简单,原理也比较通俗易懂。制版图中,同色线并没有相交叉,并且元件引脚均已连接正确,说明电路图连接准确,可以生成制板了。5体会及合理化建议PROTEL 99SE软件的课设,使我掌握了PROTEL 99SE软件的应用,加深了我对电路的了解,也对PCB板的制作有了更深的印象,为以后在电子行业的发展,有了一定的基础。通过这次课设也是我深刻地体会到身为一名专业设计人员自身应该具备的严谨、细心、负责的工作态度和作风,为我将来在专业方面的发展打下坚实的基础,是我受益匪浅。建议:1、 希望实验室能增多对学生的开放时间,并且加大宣传力度,号召同学们在课余的时间里对专业设计和创新能投入更多的精力,这样既能提高学生的专业素质,也对院系学风建设做出巨大的贡献。2、 努力改善实验室的基础设施建设,比如电脑的配置和数量,能够同时满足更多学生对实验室利用的需求。3、 希望老师能抽出更多的时间来对学生进行指导和教育,这样更加能够激发学生置身其中的热情和毅力。附录I:附录II:参考文献1、Protel 99SE电路设计 莫力,北京:国防工业出版社,2005.012、刘天旺主编 .Protel 99 SE电路设计应用教程.M北京:电子工业出版社,2007.83、文艳等编著.Protel 99 SE电子电路设计.M北京:机械工业出版社,2006.84、老虎工作室 .Protel 99 SE多层次电路板设计与制作. M北京:人民邮电出版社,2007年. 2-18页。5、邵建昂.Protel99教学实践探讨.实验室研究与探索,2007,26(2):100-105.6、韩晓东,李勇江.Protel99SE电路设计实用教程.M北京:中国铁道出版社,2007.(二)软件设计部分题目:跳舞搭配问题一、题目分析 本次课设要求运用队列中的循环队列作为数据存储结构,通过对两个循环队列的输出、入列操作,就可以简单实现要求,动态的模拟出舞池两边那女生的搭配情况。二、设计过程1、文字说明:要模拟动态地显示出现题目中所要求的循环,我们要先建立两个循环队列SqQueue boys和SqQueue girls。1) 将男生、女生两组人分别存入这两个队列。以实现他们的循环配对输出。2) 利用循环队列的特性,将男女生分别进行入队列和出队列操作,实现搭 配输出。3) 循环队列的长度分别设为男女生的个数即可。4) 在计算机终端输出的结果是 (1) 输入数据 (2) 输出每曲配对情况 (3) 输出第K曲配对情况 (4) 退出2、程序流程图:初始化分别输入男女生个数和曲数输入是否合法错误提示 N Y相应编号入队显示配对三、调试过程及实验结果1、调试过程一开始的调试中,做循环的时候还是有些错误和警告,老是提示非法操作。在不断改善程序后,程序得以顺利运行。2、实验结果(1)程序最初的运行结果(如图所示)程序最初运行图(2)各曲配对情况(如图所示)各曲配对情况图(3)根据男女编号查找对应的曲数(能配对)(如图所示)根据男女编号查找对应的曲数图(能配对)(4)根据男女编号查找对应的曲数(不能配对)(如图所示)根据男女编号查找对应的曲数图(不能配对)四、结论 本次程序设计中所用语言为C+,程序开始定义了类cirular,其中有头指针,尾指针及数据域等。随之定义了析构函数,释放对象,然后进行了队列的基本操作,有队列的申明,判断队空及队满,出队,入队,其核心是display()函数和charge()函数,其中display()用于对各位同学编号和每队的输出情况,charge()用于计算已编号的同学在第几曲中进行配对。循环队列是一种环状的队列并且对头元素指向队尾元素, 运用循环队列的基本操作顺利的解决学生舞曲搭配问题,主要利用用循环队列的环状结构,循环地执行出列入列操作并在出队列时进行配对并输出配对情况,而整个过程不需要不需要移动元素使程序在空间复杂度上降到最小,采用指针的移动大大加快了程序的执行效率。并且对输入进行了改进,以防止用户随意输入时出现的各种意想不到的错误。通过本次课设是我对软件的规划编辑有了很深的了解,运用方面有了长足的进步,是我受益匪浅。五、程序清单#includetemplate class cirularQueue /定义一个一个循环队列 private: int MaxSize; int front; /头指针 int rear; /尾指针 T *data; public: cirularQueue(int MaxLength) MaxSize=MaxLength; front=rear=0; data=new TMaxLength; cirularQueue() /定义析构函数,使对象在撤销时释放 front=rear=0; delete data; void Initqueue() /队列的申明 for(int i=0;imaxSize-1;i+) push(i);bool IsFull() /判断队列是否已满 if(rear+1)%MaxSize=front) return true; else return false; bool IsEmpty() /判断队列是否为空 if(front=rear) return true; else return false;void push(T info) /入队 if(IsFull() cout错误!队列已满!endl; exit(-1); else datarear=info; rear=(rear+1)%MaxSize; void Pop(T &info) /出队 if(IsEmpty() cout错误!队列为空!endl; exit(-1); else info=datafront; front=(front+1)%MaxSize; void GetHead(T &info) /取队首元素 if(IsEmpty() cout错误!队列为空!endl; exit (-1); else info=datafront; ;void Initqueue(cirularQueue&,int);void display(int,int);void charge(int,int);using namespace std;static int songnum=0; /定义歌曲的数量并初始化为0static int m=0,n=0; /男生和女生的人数 int main() /主函数 coutmn; display(m,n); int a=0,b=0; /男生和女生的编号,以判断他们在第几首歌时能在一起跳舞 char quit=y; /判断是否继续输入,如果继续输入,则输入y;否则输入n while(quit!=n) coutab; while(am)|(bn) /如果输入错误 coutab; charge(a,b); coutquit; return 0;void Initqueue(cirularQueue &Q,int m) /初始化队列 for(int i=1;i=m;i+) Q.push(i);void display(int m,int n) cirularQueue man(m+1); cirularQueue woman(n+1); Initqueue(man,m); Initqueue(woman,n); coutsongnum; cout每曲的配对情况为:endl; for(int k=1;k=songnum;k+) int x=0,y=0; /男生和女生的编号 man.Pop(x); /男生按顺序出队跳舞 woman.Pop(y); /女生按顺序出队跳舞 cout第k曲:tx号男生y号女生endl; /他们在一起跳舞 man.push(x); /跳完舞后男生再次进入队列等在下一次跳舞 woman.push(y); /跳完舞后男生再次进入队列等在下一次跳舞 void charge(int a,int b) int count=0; /定义舞曲计数以记录他们能在第几曲时在一起跳舞 cirularQueue man1(m+1); cirularQueue woman1(n+1); Initqueue(man1,m); Initqueue(woman1,n); while(count=songnum) int x, y; count+; man1.Pop(x); woman1.Pop(y); man1.push(x); woman1.push(y); if(x=a)&(y=b) cout第count首曲:ta号男生b号女生endl; break; /如果他们在这个舞会上不能在一起跳舞,则输出 if(count=songnum+1) cout他们在这个舞会上不可能在一起跳舞endl;参考文献1. 严蔚敏,吴伟民.数据结构(C语言版).清华大学出版

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论