protel与学生信息管理系统总结报告.docx

上传人:b****5 文档编号:28203306 上传时间:2023-07-09 格式:DOCX 页数:35 大小:353.51KB
下载 相关 举报
protel与学生信息管理系统总结报告.docx_第1页
第1页 / 共35页
protel与学生信息管理系统总结报告.docx_第2页
第2页 / 共35页
protel与学生信息管理系统总结报告.docx_第3页
第3页 / 共35页
protel与学生信息管理系统总结报告.docx_第4页
第4页 / 共35页
protel与学生信息管理系统总结报告.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

protel与学生信息管理系统总结报告.docx

《protel与学生信息管理系统总结报告.docx》由会员分享,可在线阅读,更多相关《protel与学生信息管理系统总结报告.docx(35页珍藏版)》请在冰豆网上搜索。

protel与学生信息管理系统总结报告.docx

protel与学生信息管理系统总结报告

沈阳航空航天大学

 

电子设计应用软件训练总结报告

 

学生姓名:

刘兆

学院专业:

电子信息工程

班级学号:

94020104

指导教师:

王颖

 

训练时间:

2011年7月8日至2011年7月22日

 

(一)PROTEL部分

1.任务说明:

(1)熟练掌握PROTEL软件的使用;

(2)按要求绘制电路原理图;

(3)能够按要求建立元件库和封装库;

(4)按要求根据电路原理图绘制PCB版图(能够用自动布线和手动布线相结合)。

2.原理图绘制说明:

我们这次实习的任务是:

练习学会使用PROTEL99SE软件。

从中我们要学会使用PROTEL99SE软件来绘制任一原理图以及任一PCB原理图

一,首先双击桌面图标打开protel99E

 

二,执行菜单命令:

file/new出现了新建数据库对话框

三,点击ok按钮新建文件夹Folder1,双击打开Folder1,在里面新建电路原理图

 

四.设置图纸信息:

按要求设置电路原理图图纸为A4尺寸,点击菜单“设计”选项,然后再“sheel选项”下找到标准风格进行页面大小设置,如图所示

页面大小设置

五,原理图的建立:

根据任务书上的电路原理图,去库里找相对应的元件对应摆好,但有些原件在元件库中并不存在,需要自己建立,我这个电路的一些单片机原件和一些数码管均需自己建,当把各种元件放到合适的位置之后将就可以连线了,连线的时候一定要和原理图上的引脚一一对应,并用PgUp和PgDn键依次为放大、缩小键,可以调节电路图的清晰度,便于检查。

检查无误后便可以保存原理图,则原理图绘制完毕。

3.印制板图绘制说明:

在绘制PCB原理图之前,要先给元件原理图进行封装。

新建一个PCBDocment,如下图:

在库里找每个元件对应的封装号,然后添加到每个元件的封装栏中,进行保存。

如果库里没有需要我们自己做出封装。

根据原理图在菜单栏中点击设计菜单,创建网络表,生成一个Sheet1.NET文件。

点击菜单栏中的文件菜单,新建一个PCBDocment,点击设计菜单,生成网络表,在网络表中会显示错误之处,将错误尽量的改正完之后再执行,如果没改完也可强制执行,然后在生成的pcb板中进行修改也可以。

然后进行手动布局,将原件排的尽量密一些,尽量放在一个矩形框中。

而后用粉色线将原理图圈至框内,制成印制板边框图,给板布局,并确定原点。

然后点击“自动布线”,给板全部布线。

最后便生成印制版图。

自己做的原件

1.根据原理图生成的网络表文件

打执行菜单Design/LoadNets命令,然后在弹出的窗口中单击Browse按钮,再在弹出的窗口中选择电路原理图设计生成的网络表文件(扩展名为Net)。

绘制印制板图。

2.直接放置元件绘制印制板图

3.创建一个元件的封装

创建新的封装元件在Prote中有二种方法,一是手工创建,二是用向导创建。

绘制的封装元件的尺寸必须和实际的元件尺寸绝对相吻合,这些尺寸包括外形尺寸、焊盘尺寸、焊盘间尺寸、元件引脚穿孔尺寸等。

4.对所绘制电路进行简要分析:

该电路仅由蜂鸣器,电阻,电容,开关,电源,数码管,总线,单片机组成。

数码管的封装库中都没有找到,需要自己创建,制版图中同色线并没有相交叉,检查元件引脚均已连接正确,说明电路图连接准确,可以生成制板了。

5.体会及合理化建议

PROTEL99SE软件的课设,使我掌握了PROTEL99SE软件的基本应用,让我掌握基本电路图的绘制,掌握了基本印刷电路板的绘制,学会对一些基本电子元件创建和封装,为以后将使所学理论知识用于实践奠定了基础。

建议:

1.希望老师能多讲一些关于protel的知识,一个小时的讲解毕竟有些少。

附录I电路原理图

 

附录II印制板图

 

(二)软件设计部分

一.题目分析

1、问题描述

要求设计一个能够对学生学籍信息进行综合管理的系统。

2、基本要求

该程序应实现如下主要功能:

1.添加功能:

添加一个学生的基本信息,包括姓名,年龄,性别,学号,生日,家庭住址,家庭电话号码;

2.删除功能:

能够对一个姓名的信息进行按姓名进行删除;

3.显示功能:

显示所有学生的主要信息包括姓名,学号,家庭住址,家庭电话号码;

4.查找功能:

根据你键入的学生姓名,显示其详细信息;

5.修改功能:

对学生的信息进行修改。

二.设计部分

经过对设计题目的分析可知,整个程序的设计实现主要分为六个模块,其中每一个模块对应一个函数,他们的功能分别是:

创建链表(creatlist),删除(deletelist)显示(displaylist)查询(funsearch)修改(funmodily)主函数(main)

1.创建链表(creatlist)建立一个链表,可把所需要的信息进行存储,其程序为

LinkListCreateList(void);

intGetLength(LinkListhead);

LinkNodeGetNode(LinkListhead,inti);

LinkNodeLocateNode(LinkListhead,char*strName);

intcompare(char*,char*);

voidDisplayNode(LinkNodepNode);

voidReleaseList(LinkListhead);

voidFunDelete(LinkListhead);

voidFunSearch(LinkListhead);

voidFunModify(LinkListhead);

//-----------函数实现------------

LinkListCreateList(void)

{//用尾插法,构造带头节点的链表,返回带头节点的链表的头指针。

LinkListhead=newNode;//在堆中申请的空间,因为要返回这个空链表.

head->next=NULL;

//用尾插法,为了实现与输入一致性。

LinkNodepNode,rear;//定义两个指针,一个是操作指针,一个是尾指针。

rear=head;

charchAgain;

do

{pNode=newNode;

if(!

pNode)

{cout<<"内存申请失败!

退出系统."<

exit(-1);}

cout<<"请输入学号:

";

cin>>pNode->m_strID;//待测试。

cout<

";

cin>>pNode->m_strName;

cout<

";

cin>>pNode->m_strSex;

cout<

";

cin>>pNode->m_Birthday;

cout<

";

cin>>pNode->m_nYear;

cout<

";

cin>>pNode->m_Address;

cout<

";

cin>>pNode->m_PhNumber;

//链入表尾。

rear->next=pNode;

rear=pNode;//将尾指针指向新表尾。

cout<<"信息录入成功!

是否继续?

(Y/N):

";

cin>>chAgain;

}while(chAgain=='Y'||chAgain=='y');

rear->next=NULL;//结束单链表。

returnhead;//返回头指针。

}

2.删除(deletelist)删除学生信息,依照要求按姓名进行删除,其程序为

voidDeleteList(LinkListhead,inti)

{//按姓名来删除。

LinkNodepPreNode=GetNode(head,i-1);

LinkNodepNode=pPreNode->next;//指向被删除节点。

//----i的合法性--------

if(pPreNode==NULL||pNode==NULL)

{cout<<"i不合法,无法删除。

"<

return;}

pPreNode->next=pNode->next;

deletepNode;

cout<<"删除成功!

"<

 

 

流程图

3.显示(displaylist)显示是输入学生姓名则显示学生的姓名,学号,家庭住址,家庭电话。

其程序为

voidDisplayList(LinkListhead)

{//在STDIO中显示整个链表的内容。

LinkNodepNode=head->next;//从开始节点开始扫描。

cout<<"********************************************************************"<

cout<<"姓名学号家庭住址家庭电话性别年龄出生日期"<

cout<<"------------------------------------------------------------------------"<

while(pNode)

{DisplayNode(pNode);

cout<

pNode=pNode->next;}

cout<<"========================================================="<

流程图

4.查询(funsearch)输入该学生的姓名,则会出现该学生详细信息,其程序为

voidFunSearch(LinkListhead)

{//查询子系统。

cout<<"-----------------------------------------"<

cout<<"--1.按姓名查询0.退出子系统--"<

cout<<"------------------------------------------"<

while

(1)

{cout<<"请选择合理的子菜单项:

";

intsubMenu;

cin>>subMenu;

while(cin.fail()||subMenu<0||subMenu>1)

{cout<<"不合法的菜单项!

"<

cin.clear();

fflush(stdin);//清空缓存流

cin>>subMenu;}

switch(subMenu)

{case0:

cout<<"安全退出子系统."<

return;

case1:

{LinkNodepNode;

charstrName[20];

cout<<"请输入要查询学生的姓名:

";

cin>>strName;

inti;

i=GetLocation(head,strName);

if(i==-1)

{cout<<"没找到此学生的信息。

"<

return;}

else

{pNode=GetNode(head,i);

cout<<"姓名学号家庭住址家庭电话"<

cout<m_strName<<""

<m_strID<<""

<m_Address<<""

<m_PhNumber<<"";

cout<

break;}}}}

5.修改(funmodily)修改可对学生的包括姓名,年龄,性别,学号,生日,家庭住址,家庭电话号码进行修改。

其程序为

voidFunModify(LinkListhead)

{//进入修改子系统。

charstrName[20];

cout<<"进入修改子系统,请输入你要修改学生的姓名:

";

cin>>strName;

LinkNodepNode=LocateNode(head,strName);

if(pNode==NULL){

cout<<"输入信息错误!

"<

return;}

cout<<"原信息为:

"<

DisplayNode(pNode);

cout<

while

(1)

{cout<<"-----------------------------------可修改项目-----------------------------------"<

cout<<"--1.姓名2.学号3.家庭住址4.家庭电话5.性别6.年龄7.出生日期0.退出子系统--"<

cout<<"--------------------------------------------------------------------------------"<

cout<<"请输入子菜单项:

";

intsubMenu;

cin>>subMenu;

while(cin.fail()||subMenu<0||subMenu>7)

{cout<<"不合法的菜单项!

"<

cin.clear();

fflush(stdin);//清空缓存流

cin>>subMenu;}

switch(subMenu)

{case0:

cout<<"安全退出子系统."<

return;

case1:

{cout<<"请输入新姓名:

";

charstrName[20];

cin>>strName;

strcpy(pNode->m_strName,strName);

break;}

case2:

{cout<<"请输入新学号:

";

stringstrID;

cin>>strID;

pNode->m_strID=strID;

break;}

case3:

{cout<<"请输入新家庭住址:

";

stringAddress;

cin>>Address;

pNode->m_Address=Address;

break;}

case4:

{cout<<"请输入新家庭电话:

";

longPhNumber;

cin>>PhNumber;

pNode->m_PhNumber=PhNumber;

break;}

case5:

{cout<<"请输入新性别:

";

stringstrSex;

cin>>strSex;

pNode->m_strSex=strSex;

break;}

case6:

{cout<<"请输入新年龄:

";

unsignedintYear;

cin>>Year;

pNode->m_nYear=Year;

break;}

case7:

{cout<<"请输入新出生年份:

";

intBirthday;

cin>>Birthday;

pNode->m_Birthday=Birthday;

break;}}}}

流程图

6.主函数(main)主函数可以实现对其他函数的调用,其程序为

intmain(void)

{system("colorE");

LinkListhead;//初始化链表

cout<<"欢迎进入沈阳航空航天大学学生信息管理系统!

"<

cout<<"版本:

1.0版权所有:

刘兆"<

while

(1)

{cout<<"*****************************************************************"<

cout<<"**1.添加2.删除3.查找4.修改5.显示0.退出**"<

cout<<"*****************************************************************"<

intmenu;

cout<

";

cin>>menu;

while(cin.fail()||menu<0||menu>7)

{cout<<"不合法的菜单项!

"<

cin.clear();

fflush(stdin);//清空缓存

cin>>menu;}

switch(menu)

{case0:

cout<<"安全退出系统."<

exit(0);

case1:

head=CreateList();

break;

case2:

{if(!

head)

{cout<<"链表不存在,请先建立链表."<

break;}

FunDelete(head);

break;}

case3:

{if(!

head)

{cout<<"链表不存在,请先建立链表."<

break;}

FunSearch(head);

break;}

case4:

{if(!

head)

{cout<<"链表不存在,请先建立链表."<

break;}

FunModify(head);

break;}

case5:

{if(!

head)

{cout<<"链表不存在,请先建立链表."<

break;}

DisplayList(head);

break;}}}

ReleaseList(head);

return0;}

三.调试过程及实验结果

添加

修改

修改后进行查找

四.结论

本次课程设计中,我对C语言程序设计的思路和方法有了更深入的了解和清醒的认识,加深了我对C语言中算法,数据类型,运算符与表达式,程序结构设计,循环控制,函数,指针,结构体,文件等方面的应用能力,使我基本掌握了设计程序的思路,能够独立编写并调试一些简单的程序。

同时我也认识到了自己的不足,在以前的学习中我主要注重语法规则,通过这次程序设计我认识到,语法虽然重要,但是只会语法,甚至把语法背得滚瓜烂熟,也不肯可能编写出好的程序,一定要把重点放到解题的思路上,通过大量的例题学习怎样设计一个算法,构造一个程序。

在学习开始时更不能在语法细节上死背死抠。

五.程序清单

/*学生信息管理系统

至少有学号、姓名、性别、年龄、出生年月、家庭住址、家庭电话号码。

显示:

姓名学号家庭住址、家庭电话号码

查找:

按姓名查找

修改

对学生信息进行统一管理,完成添加、修改、删除等操作

在上述功能的基础上进行进一步完善。

*/

/*

此程序插入/删除动作较多,所以可采用单链表结构。

**********************************************/

#include

#include

#include

#include

usingnamespacestd;

//----------构造链表节点---------------

typedefstructStudent

{stringm_strID;//学号。

charm_strName[20];

stringm_strSex;

stringm_Address;

intm_Birthday;//出生日期

unsignedintm_nYear;//年龄。

longm_PhNumber;//电话号码

structStudent*next;

}Node,*LinkList,*LinkNode;

//----------函数声明-------------

LinkListCreateList(void);

intGetLength(LinkListhead);

LinkNodeGetNode(LinkListhead,inti);

LinkNodeLocateNode(LinkListhead,char*strName);

intcompare(char*,char*);

voidDisplayNode(LinkNodepNode);

voidReleaseList(LinkListhead);

voidFunDelete(LinkListhead);

voidFunSearch(LinkListhead);

voidFunModify(LinkListhead);

//-----------函数实现------------

LinkListCreateList(void)

{//用尾插法,构造带头节点的链表,返回带头节点的链表的头指针。

LinkListhead=newNode;//在堆中申请的空间,因为要返回这个空链表.

head->next=NULL;

//用尾插法,为了实现与输入一致性。

LinkNodepNode,rear;//定义两个指针,一个是操作指针,一个是尾指针。

rear=head;

charchAgain;

do

{pNode=newNode;

if(!

pNode)

{cout<<"内存申请失败!

退出系统."<

exit(-1);}

cout<<"请输入学号:

";

cin>>pNode->m_strID;//待测试。

cout<

";

cin>>pNode->m_strName;

cout<

";

cin>>pNode->m_strSex;

cout<

";

cin>>pNode->m_Birthday;

cout<

";

cin>>pNode->m_nYear;

cout<

";

cin>>pNode->m_Address;

cout<

";

cin>>pNode->m_PhNumber;

//链入表尾。

rear->next=pNode;

rear=pNode;//将尾指针指向新表尾。

cout<<"信息录入成功!

是否继续?

(Y/N):

";

cin>>chAgain;

}while(chAgain=='Y'||chAgain=='y');

rear->next=NULL;//结束单链表。

returnhead;//返回头指针。

}

intGetLength(LinkListhead)

{//返回带头节点的链表的表长。

LinkNodepNode=he

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机硬件及网络

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1