




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
沈 阳 航 空 航 天 大 学 电子设计应用软件训练总结报告 学生姓名: 刘兆学院专业:电子信息工程班级学号:指导教师: 王颖 训练时间:2011年 7月8日至 2011年7月22日 (一) PROTEL部分1任务说明:(1) 熟练掌握PROTEL软件的使用; (2) 按要求绘制电路原理图; (3) 能够按要求建立元件库和封装库;(4) 按要求根据电路原理图绘制PCB版图(能够用自动布线和手动布线相结合)。2原理图绘制说明:我们这次实习的任务是:练习学会使用PROTEL 99SE软件。从中我们要学会使用PROTEL 99SE软件来绘制任一原理图以及任一PCB原理图一,首先双击桌面图标打开protel99E二,执行菜单命令:file/new出现了新建数据库对话框三,点击ok按钮新建文件夹Folder1,双击打开Folder1,在里面新建电路原理图四设置图纸信息:按要求设置电路原理图图纸为A4尺寸,点击菜单“设计”选项,然后再“sheel选项”下找到标准风格进行页面大小设置,如图所示 页面大小设置五,原理图的建立:根据任务书上的电路原理图,去库里找相对应的元件对应摆好,但有些原件在元件库中并不存在,需要自己建立,我这个电路的一些单片机原件和一些数码管均需自己建,当把各种元件放到合适的位置之后将就可以连线了,连线的时候一定要和原理图上的引脚一一对应,并用PgUp和PgDn键依次为放大、缩小键,可以调节电路图的清晰度,便于检查。检查无误后便可以保存原理图,则原理图绘制完毕。3. 印制板图绘制说明: 在绘制PCB原理图之前,要先给元件原理图进行封装。新建一个PCB Docment,如下图:在库里找每个元件对应的封装号,然后添加到每个元件的封装栏中,进行保存。如果库里没有需要我们自己做出封装。根据原理图在菜单栏中点击设计菜单,创建网络表,生成一个Sheet1.NET文件。点击菜单栏中的文件菜单,新建一个PCB Docment,点击设计菜单,生成网络表,在网络表中会显示错误之处,将错误尽量的改正完之后再执行,如果没改完也可强制执行,然后在生成的pcb板中进行修改也可以。然后进行手动布局,将原件排的尽量密一些,尽量放在一个矩形框中。而后用粉色线将原理图圈至框内,制成印制板边框图,给板布局,并确定原点。然后点击“自动布线”,给板全部布线。最后便生成印制版图。 自己做的原件1. 根据原理图生成的网络表文件打执行菜单Design/Load Nets命令,然后在弹出的窗口中单击Browse按钮,再在弹出的窗口中选择电路原理图设计生成的网络表文件(扩展名为Net)。绘制印制板图。2. 直接放置元件绘制印制板图3. 创建一个元件的封装创建新的封装元件在Prote中有二种方法,一是手工创建,二是用向导创建。绘制的封装元件的尺寸必须和实际的元件尺寸绝对相吻合,这些尺寸包括外形尺寸、焊盘尺寸、焊盘间尺寸、元件引脚穿孔尺寸等。4对所绘制电路进行简要分析:该电路仅由蜂鸣器,电阻,电容,开关,电源,数码管,总线,单片机组成。数码管的封装库中都没有找到,需要自己创建,制版图中同色线并没有相交叉,检查元件引脚均已连接正确,说明电路图连接准确,可以生成制板了。5体会及合理化建议PROTEL 99SE软件的课设,使我掌握了PROTEL 99SE软件的基本应用,让我掌握基本电路图的绘制,掌握了基本印刷电路板的绘制,学会对一些基本电子元件创建和封装,为以后将使所学理论知识用于实践奠定了基础。建议:1.希望老师能多讲一些关于protel的知识,一个小时的讲解毕竟有些少。 附录I 电路原理图附录II 印制板图 (二)软 件 设 计 部 分一题目分析1、问题描述要求设计一个能够对学生学籍信息进行综合管理的系统。 2、基本要求该程序应实现如下主要功能:1添加功能:添加一个学生的基本信息,包括姓名,年龄,性别,学号,生日,家庭住址,家庭电话号码;2删除功能:能够对一个姓名的信息进行按姓名进行删除;3显示功能:显示所有学生的主要信息包括姓名,学号,家庭住址,家庭电话号码;4查找功能:根据你键入的学生姓名,显示其详细信息;5修改功能:对学生的信息进行修改。二设计部分 经过对设计题目的分析可知,整个程序的设计实现主要分为六个模块,其中每一个模块对应一个函数,他们的功能分别是:创建链表(creatlist),删除(deletelist)显示(displaylist)查询(funsearch)修改(funmodily)主函数(main)1. 创建链表(creatlist)建立一个链表,可把所需要的信息进行存储,其程序为LinkList CreateList(void);int GetLength(LinkList head);LinkNode GetNode(LinkList head,int i);LinkNode LocateNode(LinkList head,char* strName);int compare(char*,char*);void DisplayNode(LinkNode pNode);void ReleaseList(LinkList head);void FunDelete(LinkList head);void FunSearch(LinkList head);void FunModify(LinkList head);/-函数实现-LinkList CreateList(void)/用尾插法,构造带头节点的链表,返回带头节点的链表的头指针。 LinkList head=new Node;/在堆中申请的空间,因为要返回这个空链表. head-next=NULL; /用尾插法,为了实现与输入一致性。 LinkNode pNode,rear;/定义两个指针,一个是操作指针,一个是尾指针。 rear=head; char chAgain; do pNode=new Node; if(!pNode) cout内存申请失败!退出系统.endl; exit(-1); coutpNode-m_strID;/待测试。 coutendlpNode-m_strName; coutendlpNode-m_strSex; coutendlpNode-m_Birthday; coutendlpNode-m_nYear; coutendlpNode-m_Address; coutendlpNode-m_PhNumber; /链入表尾。 rear-next=pNode; rear=pNode;/将尾指针指向新表尾。 coutchAgain; while(chAgain=Y|chAgain=y); rear-next=NULL;/结束单链表。 return head;/返回头指针。2. 删除(deletelist)删除学生信息,依照要求按姓名进行删除,其程序为void DeleteList(LinkList head,int i)/按姓名来删除。LinkNode pPreNode=GetNode(head,i-1);LinkNode pNode=pPreNode-next;/指向被删除节点。/-i的合法性-if(pPreNode=NULL|pNode=NULL)couti不合法,无法删除。next=pNode-next;delete pNode;cout删除成功!next=NULL;returnhead;pNode=newNode;!pNodecout请输入学号:;cout内存申请失败!退出系统.next;/从开始节点开始扫描。cout*endl; cout姓名 学号 家庭住址 家庭电话 性别 年龄 出生日期 endl;cout-endl; while(pNode)DisplayNode(pNode); coutnext; cout=endl; 流程图4. 查询(funsearch)输入该学生的姓名,则会出现该学生详细信息,其程序为void FunSearch(LinkList head)/查询子系统。cout-endl;cout- 1.按姓名查询 0.退出子系统 -endl;cout-endl;while(1)coutsubMenu; while(cin.fail()|subMenu1) cout不合法的菜单项!subMenu; switch(subMenu) case 0: cout安全退出子系统.endl; return; case 1: LinkNode pNode; char strName20; coutstrName; int i; i=GetLocation(head,strName); if(i=-1) cout没找到此学生的信息。endl; return ; else pNode=GetNode(head,i); cout姓名 学号 家庭住址 家庭电话 endl; coutsetw(12)leftm_strName setw(12)leftm_strID setw(12)leftm_Address setw(12)leftm_PhNumber ; coutendl; break;5. 修改(funmodily)修改可对学生的包括姓名,年龄,性别,学号,生日,家庭住址,家庭电话号码进行修改。其程序为void FunModify(LinkList head)/进入修改子系统。char strName20;coutstrName;LinkNode pNode=LocateNode(head,strName);if(pNode=NULL)cout输入信息错误!endl;return;cout原信息为:endl;DisplayNode(pNode);coutendl;while(1)cout-可修改项目-endl; cout- 1.姓名 2.学号 3.家庭住址 4.家庭电话 5.性别 6.年龄 7.出生日期 0.退出子系统-endl;cout-endl; coutsubMenu; while(cin.fail()|subMenu7) cout不合法的菜单项!subMenu; switch(subMenu) case 0: cout安全退出子系统.endl; return; case 1: coutstrName; strcpy(pNode-m_strName,strName); break; case 2: coutstrID; pNode-m_strID=strID; break;case 3: coutAddress; pNode-m_Address=Address; break;case 4: coutPhNumber; pNode-m_PhNumber=PhNumber; break; case 5: coutstrSex; pNode-m_strSex=strSex; break;case 6: coutYear; pNode-m_nYear=Year; break; case 7: coutBirthday; pNode-m_Birthday=Birthday; break; 流程图6. 主函数(main)主函数可以实现对其他函数的调用,其程序为int main(void)system(color E );LinkList head;/初始化链表cout 欢迎进入沈阳航空航天大学学生信息管理系统!endl;cout 版本:1.0 版权所有:刘兆 endl;while(1)cout*endl; cout*1.添加 2. 删除 3. 查找 4. 修改 5. 显示 0. 退出*endl;cout*endl; int menu; coutendlmenu; while(cin.fail()|menu7) cout不合法的菜单项!menu; switch(menu) case 0: cout安全退出系统.endl; exit(0); case 1: head=CreateList(); break; case 2: if(!head) cout链表不存在,请先建立链表.endl; break; FunDelete(head); break; case 3: if(!head) cout链表不存在,请先建立链表.endl; break; FunSearch(head); break; case 4: if(!head) cout链表不存在,请先建立链表.endl; break; FunModify(head); break; case 5: if(!head) cout链表不存在,请先建立链表.endl; break; DisplayList(head); break; ReleaseList(head);return 0;三调试过程及实验结果 添加 修改 修改后进行查找四结论本次课程设计中,我对C语言程序设计的思路和方法有了更深入的了解和清醒的认识,加深了我对C语言中算法,数据类型,运算符与表达式,程序结构设计,循环控制,函数,指针,结构体,文件等方面的应用能力,使我基本掌握了设计程序的思路,能够独立编写并调试一些简单的程序。同时我也认识到了自己的不足,在以前的学习中我主要注重语法规则,通过这次程序设计我认识到,语法虽然重要,但是只会语法,甚至把语法背得滚瓜烂熟,也不肯可能编写出好的程序,一定要把重点放到解题的思路上,通过大量的例题学习怎样设计一个算法,构造一个程序。在学习开始时更不能在语法细节上死背死抠。五程序清单/*学生信息管理系统至少有学号、姓名、性别、年龄、出生年月、家庭住址、家庭电话号码。显示:姓名 学号 家庭住址、家庭电话号码查找:按姓名查找修改对学生信息进行统一管理,完成添加、修改、删除等操作在上述功能的基础上进行进一步完善。*/*此程序插入/删除动作较多,所以可采用单链表结构。*/#include #include #include #include using namespace std;/-构造链表节点-typedef struct Studentstring m_strID;/学号。char m_strName20;string m_strSex;string m_Address;int m_Birthday;/出生日期unsigned int m_nYear;/年龄。long m_PhNumber;/电话号码struct Student *next; Node,*LinkList,*LinkNode;/-函数声明-LinkList CreateList(void);int GetLength(LinkList head);LinkNode GetNode(LinkList head,int i);LinkNode LocateNode(LinkList head,char* strName);int compare(char*,char*);void DisplayNode(LinkNode pNode);void ReleaseList(LinkList head);void FunDelete(LinkList head);void FunSearch(LinkList head);void FunModify(LinkList head);/-函数实现-LinkList CreateList(void)/用尾插法,构造带头节点的链表,返回带头节点的链表的头指针。 LinkList head=new Node;/在堆中申请的空间,因为要返回这个空链表. head-next=NULL; /用尾插法,为了实现与输入一致性。 LinkNode pNode,rear;/定义两个指针,一个是操作指针,一个是尾指针。 rear=head; char chAgain; do pNode=new Node; if(!pNode) cout内存申请失败!退出系统.endl; exit(-1); coutpNode-m_strID;/待测试。 coutendlpNode-m_strName; coutendlpNode-m_strSex; coutendlpNode-m_Birthday; coutendlpNode-m_nYear; coutendlpNode-m_Address; coutendlpNode-m_PhNumber; /链入表尾。 rear-next=pNode; rear=pNode;/将尾指针指向新表尾。 coutchAgain; while(chAgain=Y|chAgain=y); rear-next=NULL;/结束单链表。 return head;/返回头指针。int GetLength(LinkList head)/返回带头节点的链表的表长。LinkNode pNode=head-next;/从开始节点计算。int n=0;while(pNode)/遍历链表。 n+; pNode=pNode-next;return n; LinkNode GetNode(LinkList head,int i)/按“序号”查找。此时要增加一个计数器j.为什么不直接用i?因为i可能是“不合法”的值。LinkNode pNode=head;int j=0;/要从头节点开始扫描。因为可把头节点看作序号为0。while(pNode-next&jnext; j+;if(j=i) return pNode;else return NULL;LinkNode LocateNode(LinkList head,char* strName)/按姓名查询。 LinkNode pNode=head-next;/从需要从开始节点开始扫描,因为头节点没数据。 while(pNode&!compare(pNode-m_strName,strName) pNode=pNode-next; return pNode;int compare(char* m_strName,char* strName)int i=0; while(m_strNamei=strNamei)if(m_strNamei=0|strNamei=0) return 1;i+;return 0;/*void DeleteList(LinkList head,int i)/按姓名来删除。LinkNode pPreNode=GetNode(head,i-1);LinkNode pNode=pPreNode-next;/指向被删除节点。/-i的合法性-if(pPreNode=NULL|pNode=NULL)couti不合法,无法删除。next=pNode-next;delete pNode;cout删除成功!next;/从开始节点开始扫描。while(pNode!=NULL&!compare(pNode-m_strName,strName) i+; pNode=pNode-next;/if(compare(pNode-m_strName,strName)if(pNode=NULL) return -1;/表示没有此节点。 else return i;/elsevoid DisplayList(LinkList head)/在STDIO中显示整个链表的内容。 LinkNode pNode=head-next;/从开始节点开始扫描。cout*endl; cout姓名 学号 家庭住址 家庭电话 性别 年龄 出生日期 endl;cout-endl; while(pNode)DisplayNode(pNode); coutnext; cout=endl;void DisplayNode(LinkNode pNode) coutsetw(8)leftm_strName setw(9)leftm_strID setw(13)leftm_Address setw(11)leftm_PhNumber setw(7)leftm_strSex setw(7)leftm_nYear setw(10)leftm_Birthdaynext; delete pNode; cout链表释放成功!endl; /=菜单功能函数=void FunDelete(LinkList head)/按姓名删除。char strName20;coutstrName;int i;i=GetLocation(head,strName);if(i=-1)cout没找到此学生的信息,无法删除。endl; return ;DeleteList(head,i);void FunSearch(LinkList head)/查询子系统。cout-endl;cout- 1.按姓名查询 0.退出子系统 -endl;cout-endl;while(1)coutsubMenu; while(cin.fail()|subMenu1) cout不合法的菜单项!subMenu; switch(subMenu) case 0: cout安全退出子系统.endl; return; case 1: LinkNode pNode; char strName20; coutstrName; int i; i=GetLocation(head,strName); if(i=-1) cout没找到此学生的信息。endl; return ; else pNode=GetNode(head,i); cout姓名 学号 家庭住址 家庭电话 endl; coutsetw(12)leftm_strName setw(12)leftm_strID setw(12)leftm_Address setw(12)leftm_PhNumber ; coutendl; break;void FunModify(LinkList head)/进入修改子系统。char strName20;coutstrName;LinkNode pNode=LocateNode(head,strName);if(pNode=NULL)cout输入信息错误!endl;return;cout原信息为:endl;DisplayNode(pNode);coutendl;while(1)cout-可修改项目-endl; cout- 1.姓名 2.学号 3.家庭住址 4.家庭电话 5.性别 6.年龄 7.出生日期 0.退出子系统-endl;cout-endl; coutsubMenu; while(cin.fail()|subMenu7) cout不合法的菜单项!subMenu; switch(subMenu) case 0: cout安全退出子系统.endl; return; case 1: coutstrName; strcpy(pNode-m_strName,strName); break; case 2: coutstrID; pNode-m_strID=strID; break;case 3: coutAddress; pNode-m_Address=Address; break;case 4: coutPhNumber; pNode-m_PhNumber=PhNumber; break;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 简约安装工用工合同
- 同态加密技术在工业互联网平台云计算安全中的应用报告
- 中医院面试题及答案
- 中医药膳理论试题及答案
- 中医药考试试题及答案
- 快消品全渠道营销模式下的供应链管理创新报告
- 2025年美妆个性化定制服务模式下的美妆产品定制化服务模式发展趋势报告
- 拔河的题目及答案
- wps常用题目及答案
- 聚焦2025:工业互联网平台RFID技术创新在智慧社区物业管理中的应用报告
- 2024年新课标培训2022年小学英语新课标学习培训课件
- 升学宴会模板
- 2024至2030年中国聚脲涂料行业市场发展调研及投资前景分析报告
- DB11∕T 420-2019 电梯安装、改造、重大修理和维护保养自检规则
- 十年(2015-2024)高考真题英语分项汇编(全国)专题 22 完形填空(新高考15空)(学生卷)
- 国旗台施工合同
- JTJ073.1-2001 公路水泥混凝土路面 养护技术规范
- 小学生血液知识讲座课件
- 总代理授权书
- 医院病假证明书模板
- 医疗器械售后服务能力证明资料模板
评论
0/150
提交评论