数据结构课程设计-电梯模拟_第1页
数据结构课程设计-电梯模拟_第2页
数据结构课程设计-电梯模拟_第3页
数据结构课程设计-电梯模拟_第4页
数据结构课程设计-电梯模拟_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、山东理工大学计算机学院课 程 设 计(数据结构)班 级姓 名学 号 指导教师2013年 1月 15日课程设计任务书及成绩评定课题名称电梯模拟、题目的目的和要求: 巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。 、设计进度及完成情况日 期内 容2013-1-7选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。2013-1-10创建相关数据结构,录入源程序。2

2、013-1-13调试程序并记录调试中的问题,初步完成课程设计报告。2013-1-15上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师3-4个问题。2013-1-16考核结束后将课程设计报告和源程序的电子版交班长统一刻光盘上交。、主要参考文献及资料1 严蔚敏 数据结构(C语言版)清华大学出版社 19992 严蔚敏 数据结构题集(C语言版)清华大学出版社 19993 谭浩强 C语言程序设计 清华大学出版社4 与所用编程环境相配套的C语言或C+相关的资料、成绩评定:设计成绩: (教师填写)指导老师: (签字)二 年 月 日目 录第一章 概述1第二章 系统分析2第三章

3、概要设计4第四章 详细设计7第五章 运行与测试25第六章 总结与心得28参考文献 28第一章 概述课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。数据结构是一门重要的专业基础课,是计算机理论和应用的核心基础课程。数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。在这次的课程设计中我选择的

4、题目是图书管理。传统的人工图书管理,基本业务活动有对一本书的采编入库、清除库存、借阅和归还等等,但是人工统计操作起来效率相对来说要低,也容易出错。但是现在这些业务借助计算机系统完成后,效率可以得到提高,也可以减少出错的几率。可以使图书管理的日常业务更加的方便迅捷、减少很多劳动量。1、训练学生灵活应用所学数据结构知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。 2.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3.提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4.训练用系统的观点和软件开发一般规范进行软件开发,巩固、深化学生的理论知识,

5、提高编程水平,并在此过程中培养他们严谨的科学态度和良好的工作作风。第二章 系统分析任务根据教材数据结构题集(C语言版)(严蔚敏、吴伟民主编)选择课程设计题目,要求通过设计,在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深对课程基本内容的理解和综合运用。设计题目从数据结构题集“第二篇 实习篇”中选取,每班每题不得超过2人。另选题:学生自选课题学生原则上可以结合个人爱好自选课题,要求课题有一定的深度与难度,有一定的算法复杂性,能够巩固数据结构课程所学的知识。学生自选课题需在17周前报课程设计指导教师批准方可生效。要求:1、在处理每个题目时,要求从分析题目的需求入手,

6、按设计抽象数据类型、构思算法、通过设计实现抽象数据类型、编制上机程序和上机调试等若干步骤完成题目,最终写出完整的分析报告。前期准备工作完备与否直接影响到后序上机调试工作的效率。在程序设计阶段应尽量利用已有的标准函数,加大代码的重用率。 2、.设计的题目要求达到一定工作量(300行以上代码),并具有一定的深度和难度。3、程序设计语言推荐使用C/C+,程序书写规范,源程序需加必要的注释;4、每位同学需提交可独立运行的程序;5 、每位同学需独立提交设计报告书(每人一份),要求编排格式统一、规范、内容充实,不少于10页(代码不算);6、课程设计实践作为培养学生动手能力的一种手段,单独考核。(1)、模拟

7、某校五层教学楼的电梯系统。该楼有一个自动电梯,能在每层停留。五个楼层由下至上依次称为地下层、第一层、第二层、第三层和第四层,其中第一层是大楼的进出层,即是电梯的“本垒层”,电梯“空闲”时,将来该层候命。五个楼层从下到上的编号为:0、1、2、3、4。除了地下层外,每一层都有一个要求向下的按钮除了第四层外,每一层都有一个要求向上的按钮。对应的变量为:CallUp0.3和CallDown1.4。电梯内的五个目标层按钮对应的变量为:CallCar0.4。(2)、电梯一共有七个状态,即正在开门(Opening)、已开门(Opened)、正在关门(Closing)、已关门(Closed)、等待(Waiti

8、ng)。(3)、乘客可随机地进出于任何层。对每个人来说,他有一个能容忍的最长等待时间,一旦等候电梯时间过长,他将放弃。对于在楼层内等待电梯的乘客,将插入在等候队列里,每一层有两个等候队列,一队要求向上,一队要求向下,用链队列来实现。对于在电梯内的乘客,用五个乘客栈来实现,该乘客要去哪一层,就把他放在相应编号的栈中,对应变量为k04。(4)、模拟时钟从0开始,时间单位为0.1秒。人和电梯的各种动作均要耗费一定的时间单位(简记为t):有人进出时,电梯每隔40t测试一次,若无人进出,则关门关门和开门各需要20t每个人进出电梯均需要25t如果电梯在某层静止时间超过300t,则驶回1层候命。(5)、按时

9、序显示系统状态的变化过程:发生的全部人和电梯的动作序列。第三章 概要设计乘客类型反映乘客的所有属性。Man数据对象:D=ai乘客信息,I=1,2,n,n0数据关系:R=|ai-1,aiD,i=2,n基本操作:void inel();该乘客进入电梯时 发生的数据转换 及基本的输出void onwait(); 该乘客进入某层等待队列时 发生的数据变动 及基本的输出long giveup();void getout();该乘客出电梯时所发生的数据变动,及基本的状态输出电梯栈类型电梯内的乘客用乘客栈表示,去不同楼层的乘客放在不同的栈中。ADT Estack数据对象:D=ai乘客信息,I=1,2,n,n

10、0数据关系:R=|ai-1,aiD,i=2,n基本操作:本设计中运用了一个链栈的模板,可以自己定义栈的数据类型共用到了五个栈,分别表示电梯内到往某楼的乘客,为了方便设计,用一个栈的数组来表示这五个栈,数组的下标表示楼层。等候队列类型在电梯外等待的乘客用等待队列表示。每层各有一个等待队列,表示在该层楼排队的乘客。为了方便程序设计,用一个队列的数组来表示这五个队列,数组的下标表示楼层。同上,本次设计也用了一个链队列的模板,电梯相关的动作表示电梯的各个属性和所有动作。Void e1()表示电梯开门 时所发生的动作Void e2()在本层出电梯的乘客从本层的栈中弹出调用乘客走出楼梯事件Void e3(

11、)电梯外的队列入电梯栈Void e4()电梯状态的转换Void e5()电梯关门时基本状态的输出 及一些数据变换Void e6()电梯上升时基本状态的输出 及数据的变动Void e7()电梯下降时基本状态的输出,及数据的变动Void e8()电梯处于静止状态时状态的输出,及数据的变动控制模块Void control()与电梯控制有关的函数集合,用于判断电梯门的开关,及电梯状态转换控制时间模块Void Wait(long tt)本函数用于时间模拟中延时tt个单位的时间Void times()本函数用于现在时间状态的保存,用于输入新的 乘客时去处输入所用的时间Void timer()本函数用于时间

12、状态的恢复输入输出模块 diantizhuangtai()输出电梯现在的状态 subsr()输入函数的子函数用于处理数据输入并记录用于输入数据所耽误的时间以维持系统时间的准确性。Void shuru()输人下一个乘客的信息,及相关的判断本函数用于现在时间状态的恢复,用于输入新的 乘客时去处输入所用的时间主程序主程序主要处理两类事件:显示欢迎界面,输入事件和电梯状态转换事件。输入事件是输入乘客的信息和下一个乘客到来的时间状态转换事件是处理在当前状态下电梯的动作本程序包含6个模块:(1)主程序模块(2)乘客模块(3)电梯模块(4)时间模块(5)控制模块(6)输入输出模块各模块之间的调用关系如下:电

13、梯控制模块电梯控制模块主程序输入输出模块时间模块电梯模块乘客模块第四章 详细设计/ 电梯模拟.cpp : 定义控制台应用程序的入口点。/#include stdafx.h/此头文件在详细设计的结尾#define MAXMAN 5#define TIME 100using namespace std;/-变量定义-enum states goingup,goingdown,idle;states state=idle;states nowstate=idle;/控制楼梯的上下int nowfloor=1;/电梯当前的楼层/int d1=0;未用到/int d2=0;/int d3=0;int c

14、allup5;int calldown5;int callcar5;long timesum;/延时函数用到的变量long delay;long sum=1;long nexttime;/下一个乘客出现的时刻int tf;/时间恢复标志,用在输入函数递归调用中/int flag;/事件结束的标识long jingzhi;/静止开始时间、用于判断楼梯是否在某一层等待超过300tint f;/电梯动作标志配合jingzhi协同int lt;/下一个人出现的时间间隔int renshu; /电梯内的人数LinkStack biaozhi;/用于时间保存函数递归调用过程中对时间的保存void chus

15、hihua()int i=5;while(i)callupi=0;calldowni=0;callcari=0;i-;/-自定义乘客类-class man public:int number;int infloor;int outfloor;long intime;long giveuptime;void inel();void onwait();long giveup();void getout();friend ostream&operator (ostream& output,man& c)/重载流输出用于栈和队列的遍历outputc.number ;return output;man

16、m;/中间变量man n;/等待队列LinkQueue s5;/电梯栈LinkStack k5;void man:inel()if(ime+m.giveuptime*TIME)clock()-delay)coutclock()/TIME-delay/TIME,nexttime/TIME:number号乘客等待超时,已自动离开!endl;elsekoutfloor.Push(*this);/wait(25);coutclock()/TIME-delay/TIME,nexttime/TIME:number号乘客从infloor楼进入电梯。endl;callcaroutfloor=1;vo

17、id man:onwait()sinfloor.EnQueue(*this);/wait(25);coutclock()/TIME-delay/TIME,nexttime/TIME:number号乘客进入infloor楼的等待队列。endl;long man:giveup()coutclock()/TIME-delay/TIME,nexttime/TIME:number号乘客放弃等待endl;return 0;void man:getout()coutclock()/TIME-delay/TIME,nexttime/TIME:number号乘客出电梯endl;/-时间函数定义-int shur

18、u();int wait(long tt)/延时控制函数/coutclock()/TIME-delay/TIME,nexttime/TIME:wait 计时开始endl;clock_t end;/end=clock()+tt*TIME;end=clock()-delay;while(clock()=nexttime)/当 当前时刻 大于等于下一个人到来的时刻时,调用输入函数shuru();/coutclock()/TIME-delay/TIME,nexttime/TIME:wait 计时结束endl;return 0;void times()/保存时间biaozhi.Push(clock();

19、timesum=clock();/couttimesum/TIMEendl;void timer()/恢复时间delay+=clock()-biaozhi.Pop();/coutdelay/TIMEendl;/-电梯相关的活动-int e1 ()/开门wait(20);coutclock()/TIME-delay/TIME,nexttime/TIME:电梯开门。endl;return 0;int e2()/在本层出电梯的人出栈while(!knowfloor.StackEmpty()n=knowfloor.Pop();wait(25);n.getout();renshu-;return 0;i

20、nt e3()/楼梯外的队列入栈while(!snowfloor.QueueEmpty()&renshuMAXMAN)n=snowfloor.DeQueue();wait(25);n.inel();renshu+;return 0;int e6()/电梯上升coutclock()/TIME-delay/TIME,nexttime/TIME:电梯正在上升中endl;wait(30);callcarnowfloor=0;nowfloor+;callupnowfloor-1=0;coutclock()/TIME-delay/TIME,nexttime/TIME:电梯上升到了第nowfloor层end

21、l;callcarnowfloor=0;f=1;return 0;int e7()/电梯下降coutclock()/TIME-delay/TIME,nexttime/TIME:电梯正在下降中endl;wait(30);callcarnowfloor=0;nowfloor-;calldownnowfloor+1=0;coutclock()/TIME-delay/TIME,nexttime/TIME:电梯下降到了第nowfloor层endl;f=1;callcarnowfloor=0;return 0;int e8()/静止coutclock()/TIME-delay/TIME,nexttime/

22、TIME:电梯静止,现在的楼层是:nowfloorendl;if(f!=0)jingzhi=clock();f=0;return 0;int e4()/电梯状态的转换int diantizhuangtai();system(cls);diantizhuangtai();int c,d,j;/c为电梯是否应该向上走的标志,d是向下的标志j=nowfloor;if(callupj=1)c=1;elsefor(c=0,j=nowfloor+1;j=0;j-)if(callcarj=1|callupj=1|calldownj=1|(kj.StackEmpty()=0)|sj.QueueEmpty()=

23、0)d=1;break;if(nowstate=goingup)if(nowfloor=4|(c=0&d=1)/电梯由向上转到向下的条件if(nowfloor=4&d=0)e8();/静止elsenowstate=goingdown;e7();/下降/callcarnowfloor=0;else/state=goingdown;if(d=0&c=0)e8();/电梯静止nowstate=idle;elsee6();/电梯上升elseif(nowstate=goingdown)/判断过程基本和上一级的if语句相同if(nowfloor=0|(d=0&c=1)if(nowfloor=0&c=0)e

24、8();/静止elsenowstate=goingup;e6();/电梯上升elseif(c=0&d=0)e8();/电梯静止nowstate=idle;elsee7();/电梯下降elseif(c=0&d=0)/以下是由静止转向其他动作过程nowstate=idle;e8();/return 0;elseif(c=1)nowstate=goingup;e6();/电梯上升elsenowstate=goingdown;e7();/电梯下降/flag=0;return 0;int e5()/关门wait(20);coutclock()/TIME-delay/TIME,nexttime/TIME:

25、电梯关门endl;return 0;/-输入输出函数的定义-int diantizhuangtai()/输出电梯状态cout -下边是电梯现在的状态信息:-endlendl;cout 现在的楼层是:nowfloorendl=0;i-)if(i=nowfloor)cout ;elsecout ;cout电梯中前往第i层的乘客:;ki.StackTranverse();/cout 第i层电梯外边的等待队列:;/si.QueueTranverse();cout=0;i-)if(i=nowfloor)cout ;elsecout ;/cout 前往第i层的乘客:;/ki.StackTranverse(

26、);cout第i层电梯外边的等待乘客队列:;si.QueueTranverse();coutendl;coutnow,next-endl;return 0;int subsr()/输入函数的子函数coutm.infloorm.outfloorm.giveuptimelt)if(m.infloor=0&m.outfloor=0&m.giveuptime=0<=0)int nowdelay;nowdelay=delay;cout=5|m.outfloor=5|m.infloor=m.outfloor)coutclock()/TIME-delay/TIME,nexttime/TIME:输入楼层错

27、误!请重新输入clock()-delay)/下一个人到来的时间nexttime=nexttime+lt*TIME;elsenexttime=clock()-delay+lt*TIME;ime =clock()-delay;if (m.infloorm.outfloor)calldownm.infloor=1;else callupm.infloor=1;m.onwait ();return 0;/-电梯控制函数-int control()/system(cls);if(clock()-delay)=nexttime)/当当前时刻大于等于下一个人到来的时刻时,调用输入函数shuru()

28、;return 0;if(callcarnowfloor!=0)|callupnowfloor!=0|calldownnowfloor!=0|(knowfloor.StackEmpty()=0)|snowfloor.QueueEmpty()=0)/电梯开门的条件if(renshu=MAXMAN&knowfloor.StackEmpty()=1)e4();elsee1();/电梯开门e2();/在本层出电梯的人出栈e3();/楼梯外的队列入电梯栈e5();/关门e4();/电梯状态变换elsee4();/电梯状态改变if(f=0)callcarnowfloor=0;if(clock()-jing

29、zhi)300*TIME)/电梯等待时间超过300t时回到一楼if(nowfloor!=1)callcar1=1;if(knowfloor.StackEmpty()=1)|snowfloor.QueueEmpty()=1)callupnowfloor=0;calldownnowfloor=0;return 0;/-主函数-int _tmain(int argc, _TCHAR* argv)system(color 1a);/把命令提示符窗口的背景色设为蓝色,前景色设为淡绿色timesum=clock();chushihua();/初始化/-欢迎界面-coutendlendlendlendlen

30、dlendl;cout -endl;cout 欢迎使用电梯模拟系统endl;cout -endlendl;system(pause);/暂停while(1)/flag=1;system(cls);/清屏diantizhuangtai();/输出电梯状态while(clock()-delay)10)wait(10);control();shuru();/输入乘客信息return 0;-以下是程序所涉及的头文件-栈模板头文件:-/链栈类的定义templatestruct NodeT data;Node *next;/此处T可以省略;templateclass LinkStack/构建函数,创建一空

31、栈private:Node *top;/ 链表首为栈顶public:LinkStack()top=NULL;/构造函数,置空链栈LinkStack();/ 析构函数,释放链栈中各结点的存储空间void Push(T x);/ 元素x入栈T Pop();/ 栈顶元素出栈T GetTop();/ 取栈顶元素int StackEmpty(); / 判断栈是否为空void ClearStack();/清空栈void StackTranverse();/遍历输出栈中元素/*friend ostream &operator (ostream &stream, T asd)stream asd.number

32、;return stream;*/;/链栈类的实现templateLinkStack:LinkStack()/析构函数,销毁栈Node *q;while(top)/从栈顶开始释放栈链的每一个结点的存储空间q=top;/暂存被释放结点top=top-next;/头指针后移指向下一个被释放结点delete q;templatevoid LinkStack:Push(T x)/入栈Node *s;s=new Node;s-data=x;/创建一新结点,数据域为x的结点ss-next=top;top=s;/新结点链入表首,为栈顶templateT LinkStack:Pop()/出栈T x; Node

33、 *p;if(top=NULL) throw下溢;x=top-data;/暂存栈顶元素p=top;top=top-next;/栈顶后移delete p;/删除原栈顶结点return x;template T LinkStack:GetTop()/获取栈顶元素if(top=NULL) throw 栈空,栈顶无元素;return top-data;template void LinkStack:ClearStack()/清空栈while(top)/从栈顶开始释放栈链的每一个结点的存储空间Node *q;q=top;/暂存被释放结点top=top-next;/头指针后移指向下一个被释放结点delet

34、e q;template int LinkStack:StackEmpty()/测栈空if(top=NULL) return 1;elsereturn 0;template void LinkStack:StackTranverse()/从栈顶起,遍历输出栈元素 Node *p; p=top; while(p) coutdata; p=p-next; coutendl; -队列模版头文件-/链队类的定义templatestruct NodesT data;Nodes *next;/此处T可以省略;templateclass LinkQueueprivate:Nodes *front;/队头指针

35、,链表头为队头Nodes *rear;/队尾指针,链表尾为了队尾public:LinkQueue();/构造空队列LinkQueue();/ 析构函数,释放链队各结点的存储空间void EnQueue(T x);/ 元素x入队T DeQueue();/ 队顶元素出队T GetHead();/ 取队头元素T GetLast();/取队尾元素int QueueEmpty(); / 判断队是否为空void ClearQueue();/void QueueTranverse();/*friend ostream &operator(ostream &stream,T asd)streamasd.num

36、ber;return stream;*/;/链队类的实现templateLinkQueue:LinkQueue()/构建函数,创建一空队front=new Nodes;/创建队头结点front-next=NULL;rear=front;/空队templateLinkQueue:LinkQueue()/析构函数,销毁队Nodes *p;while(front!=NULL)/从队头开始逐个删除队列中的结点p=front;/暂存被释放结点front=front-next;/头指针后移指向下一个被释放结点delete p;templatevoid LinkQueue:EnQueue(T x)/入队No

37、des *s;s=new Nodes; s-data=x; /申请一数据域为x的结点ss-next=rear-next;rear-next=s; /新结点插在链队尾rear=s; /修改尾指针if(front-next=NULL)/如果创建的是首元结点,front-next指向它front-next=s;templateT LinkQueue:DeQueue()/出队T x; Nodes *p;if(rear=front) throw下溢;/队空,则下溢p=front-next;x=p-data;/暂存队头元素front-next=p-next;/将队头结点从链表中摘除if(p-next=NU

38、LL) rear=front;/如果出队后为空队,修改队尾指针delete p;return x;template T LinkQueue:GetHead()/获取队头元素Nodes *p;if(front=rear) throw 队空,无队头元素;/p=front-next;return p-data;template T LinkQueue:GetLast()/获取队尾元素if(front=rear) throw 队空,无队尾元素;return rear-data;template void LinkQueue:ClearQueue()/清空队Nodes *p;p=front-next;w

39、hile(p)/从队头开始逐个删除队列中的结点front-next=p-next;/暂存被释放结点delete p; p=front-next;rear=front;template int LinkQueue:QueueEmpty()/测队空if(front=rear) return 1;elsereturn 0;template void LinkQueue:QueueTranverse()/从队首到队尾,遍历输出队中元素 Nodes *p; p=front-next; while(p) coutdata; p=p-next; coutendl; - stdafx.h-/stdafx.h

40、: 标准系统包含文件的包含文件,/ 或是经常使用但不常更改的/ 特定于项目的包含文件#pragma once#define WIN32_LEAN_AND_MEAN/ 从 Windows 头中排除极少使用的资料#include #include #include#include#include#include #includeLinkQueue.h#include/exit()#includeLinkStack.h/#include/ TODO: 在此处引用程序需要的其他头文件第五章 运行与测试进入欢迎界面进入运行界面:输入乘客数据:设定一定等待长度后,观察电梯的运行: 当前时刻大于下一个人的到

41、达时刻,提示输入下一个人的信息:最后电梯静止在四楼:在四楼等待超过300t时电梯自动降到一楼最后电梯停在一楼直到下一个乘客到来:第六章 总结与心得课程设计心得刚一开始看到这个题目的时候,没有一点头绪,题目的说明太长了,看了半天都没看懂,最后一狠心,先下手做,做到什么程度在说。然后就慢慢的写代码。一边写一边调试,其中印象最深的是我自定义乘客类型的时候乘客的成员函数原本想要在类内定义,可是成员函数要用到后面的函数,写好后老是提示出错,调试了好长时间才发现问题,这才深刻了理解在类外定义成员函数的好处-能够更方便的调用类外的程序。做电梯状态转换的时候,电梯控制条件比较复杂,我都是写好后,运行调试,发现

42、错误在在程序中改,有时候,错误很好找,有时候,怎么也看不出错在那里。为了找出错误,看了好多遍代码,最后还是通过设置断点,单步调试发现的。还有时间控制函数,为了用时间模拟电梯的时序时间,必须把输入乘客信息的时间除去,为此设置了不少全局标志变量,觉得这样不利于程序的重复利用,有待于改进,还有为了让乘客在下一个任意时刻都能被输入,我把输入函数嵌入到了延时函数中,不过这样一来,对程序的调试带来了很大的挑战,由于延时函数在程序中被多次调用 ,这样就会带来较多的问题。而且把输入函数嵌入到延时函数影响了程序的结构化,使程序的再利用变得很困难。以后应该多考虑一下这方面的问题。参考文献: 1 严蔚敏、吴伟民主编

43、 数据结构(C语言版) 清华大学出版社 20022 殷人昆等著 数据结构(C+版) 清华大学出版社 20013 金远平著 数据结构(C+描述) 清华大学出版社 2005 4 许卓群等著 数据结构与算法 高等教育出版社 20045 Frank M.Carrano 等著 数据结构与+高级教程清华大学出版社 20046 严蔚敏、吴伟民 数据结构习题集(C语言版)清华大学出版社 附录资料:不需要的可以自行删除常用电工与电子学图形符号序号符号名称与说明1直流 注:电压可标注在符号右边,系统类型可标注在左边2直流 注:若上述符号可能引起混乱,也可采用本符号3交流 频率或频率范围以及电压的数值应标注在符号的

44、右边,系统类型应标注在符号的左边50Hz示例1: 交流 50Hz100600Hz示例2:交流 频率范围100600Hz380/220V 3N 50Hz示例3:交流,三相带中性线, 50Hz, 380V(中性线与相线之间为220V)。3N可用3+ N代替3N 50Hz/TN-S示例4:交流,三相,50Hz,具有一个直接接地点且中性线与保护导线全部分开的系统4低频(工频或亚音频)5中频(音频)6高频(超音频,载频或射频)7交直流8具有交流分量的整流电流注:当需要与稳定直流相区别时使用9N中性(中性线)10M中间线11+正极12-负极13热效应14电磁效应过电流保护的电磁操作15电磁执行器操作16热

45、执行器操作(如热继电器、热过电流保护)17电动机操作18正脉冲19负脉冲20交流脉冲21正阶跃函数22负阶跃函数23锯齿波24接地一般符号25无噪声接地(抗干扰接地)26保护接地27接机壳或接底板28等电位29理想电流源30理想电压源31理想回转器32故障(用以表示假定故障位置)33闪绕、击穿34永久磁铁35动触点注:如滑动触点36测试点指示示例点,导线上的测试37交换器一般符号/转换器一般符号注:若变换方向不明显,可用箭头表示在符号轮廓上38电机一般符号,符号内的星号必须用下述字母代替C同步交流机 G 发电机G8同步发电机 M电动机MG拟作为发电机或电动机使用的电机MS同步电动机 注:可以加

46、上符号或SM伺服电机 TG测速发电机TM力矩电动机 IS感应同步器39三相笼式异步电动机40三相线绕转子异步电动机41并励三相同步变速机42直流力矩电动机步进电机一般符号43电机示例:短分路复励直流发电机示出接线端子和电刷44串励直流电动机45并励直流电动机46单相笼式有分相扇子的异步电动机47单相交流串励电动机48单向同步电动机49单向磁滞同步电动机自整角机一般符号符号内的星号必须用下列字母代替:CX 控制式自整角发送机 CT控制式自整角变压器TX 力矩式自整角发送机 TR 力矩式自整角接收机50手动开关一般符号51按钮开关(不闭锁)52拉拔开关(不闭锁)53旋钮开关、旋转开关(闭锁)54位

47、置开关 动合触点限制开关 动合触点55位置开关 动断触点限制开关 动断触点56热敏自动开关 动断触点57热继电器 动断触点58接触器触点(在非动作位置断开)59接触器触点(在非动作位置闭合)60操作器件一般符号 注:具有几个绕组的操作器件,可由适当数值的斜线或重复本符号来表示61缓慢释放(缓放)继电器的线圈62缓慢吸合(缓吸)继电器的线圈63缓吸和缓放继电器的线圈64快速继电器(快吸和快放)的线圈65对交流不敏感继电器的线圈66交流继电器的线圈67热继电器的驱动器件68熔断器一般符号69熔断器式开关70熔断器式隔离开关71熔断器式负荷开关72火花间隙73双火花间隙74 动合(常开)触点 注:本

48、符号也可以用作开关一般符号75动断(常闭)触点76先断后合的转换触点77中间断开的双向触点78先合后断的转换触点(桥接)79当操作器件被吸合时延时闭合的动合触点80有弹性返回的动合触点81无弹性返回的动合触点82有弹性返回的动断触点83左边弹性返回,右边无弹性返回的中间断开的双向触点84指示仪表的一般符号 星号须用有关符号替代,如A代表电流表等85记录仪表一般符号 星号须用有关符号替代,如W代表功率表等86指示仪表示例:电压表87电流表88无功电流表89无功功率表90功率因数表91相位表92频率表93检流计94示波器95转速表96记录仪表示例:记录式功率表97组合式记录功率表和无功功率表98记

49、录式示波器99电度表(瓦特小时计)100无功电度表101灯一般符号 信号灯一般符号注:如果要求指示颜色则在靠近符号处标出下列字母:RD 红、YE 黄、GN 绿、BU蓝、WH白如要指出灯的类型,则在靠近符号处标出下列字母:Ne氖、Xe氦、 Na钠 、Hg汞、 I碘、 IN白炽、EL电发光、ARC弧光、FL荧光、IR红外线、UV紫外线、LED发光二极管102闪光型信号灯103电警笛 报警器104优选型其它型峰鸣器105电动器箱106电喇叭107优选型其它型电铃108 可调压的单向自耦变压器109 绕组间有屏蔽的双绕组单向变压器110 在一个绕组上有中心点抽头的变压器111 耦合可变的变压器112

50、三相变压器星形三角形联结113 三相自耦变压器 星形连接114 单向自耦变压器115 双绕组变压器注:瞬时电压的极性可以在形式Z中表示示例:示出瞬时电压极性标记的双绕组变压器流入绕组标记端的瞬时电流产生辅助磁通116 三绕组变压器117 自耦变压器118电抗器 扼流圈119优选型其它型电阻器一般符号120可变电阻器 可调电阻器121压敏电阻器、变阻器 注:U可以用V代替122滑线式变阻器123带滑动触点和断开位置的电阻器124滑动触点电位器125优选型 其它型 电容器一般符号 注:如果必须分辨同一电容器的电极时,弧形的极板表示:在圈定的纸介质和陶瓷介质电容器中表示外电极在可调和可变的电容器中表

51、示动片电极在穿心电容器中表示纸电位电极126优选型 其它型 极性电容器127优选型 其它型 可变电容器可调电容器128优选型 其它型 微调电容器129电感器 线圈 绕组 扼流圈130半导体二极度管一般符号131发光二极管一般符号132利用室温效应的二极管 Q可用t代替133用作电容性器件的二极管(变容二极管)134隧道二极管135单向击穿二极管电压调整二极管江崎二极管136双向击穿二极管137反向二极管(单隧道二极管)138双向二极管交流开关二极管139三极晶体闸流管 注:当没有必要规定控制极的类型时,这个符号用于表示反向阻断三极晶体闸流管140反向阻断三极晶体闸流管N型控制极(阳极侧受控)1

52、41反向阻断三极晶体闸流管P型控制极(阴极侧受控)142可关断三极晶体闸流管,末规定控制极143可关断三极晶体闸流管 N型控制极 (阳极侧受控)144可关断三极晶体闸流管 P型控制极 (阴极侧受控)145反向阻断四极晶体闸流管146双向三极晶体闸流管三端双向晶体闸流管147反向导通三极晶体闸流管,末规定控制极148反向导通三极晶体闸流管,N型控制极(阳极侧受控)149反向导通三极晶体闸流管,P型控制极(阴极侧受控)150光控晶体闸流管151PNP型半导体管152NPN型半导体管,集电极接管壳153NPN型雪崩半导体管154具P型基极单结型半导体管155具有N型基极单结型半导体管156N型沟道结型场效应半导体管注:栅极与源极引线应绘在一直线上157P型沟道结型场效应半导体管158增强型、单栅、P沟道和衬底无引出线绝缘相场效应半导体管159增强型、单栅、N沟道和衬底无引出线绝缘相场效应半导体管160增强型、单栅、P沟道和衬底有引出线绝缘相场效应半导体管161增强型、单栅、N沟道和衬底与源极在内部连接绝缘相场效应半导体管162耗尽型、单栅、N沟道和衬底无引出线的栅场效应半导体管163耗尽型、单栅、P沟道和衬底无引出线的栅场效应半导体管164耗尽型、单栅、N沟道和衬底有引出线的栅场效注:在多栅的情况下,主栅极与源极的引线应在一条直线上165光敏电阻具有对称导电

温馨提示

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

评论

0/150

提交评论