河南工业大学实验报告
大学 - 计算机控制技术实验报告河南工业大学4

大学 - 计算机控制技术实验报告河南工业大学4 实验四单闭环直流调速系统班级:自动F1203班姓名:蔡申申学号:202123910625 一、实验目的1.掌握用PID控制规律的直流调速系统的调试方法; 2.了解PWM调制、直流电机驱动电路的工作原理。
二、实验设备1.THBCC-1型信号与系统控制理论及计算机控制技术实验平台 2.THBXD数据采集卡一块(含37芯通信线、16芯排线和USB电缆线各1根)3.PC机1台(含软件“THBCC-1”)三、实验原理直流电机在应用中有多种控制方式,在直流电机的调速控制系统中,主要采用电枢电压控制电机的转速与方向。
功率放大器是电机调速系统中的重要部件,它的性能及价格对系统都有重要的影响。
过去的功率放大器是采用磁放大器、交磁放大机或可控硅(晶闸管)。
现在基本上采用晶体管功率放大器。
PWM功率放大器与线性功率放大器相比,有功耗低、效率高,有利于克服直流电机的静摩擦等优点。
PWM调制与晶体管功率放大器的工作原理: 1.PWM的工作原理图13-1 PWM的控制电路上图所示为SG3525为核心的控制电路,SG3525是美国Silicon General公司生产的专用。
PWM控制集成芯片,其内部电路结构及各引脚如图13-2所示,它采用恒频脉宽调制控制方案,其内部包含有精密基准源、锯齿波振荡器、误差放大器、比较器、分频器和保护电路等。
调节Ur的大小,在A、B两端可输出两个幅度相等、频率相等、相位相互错开180度、占空比可调的矩形波(即PWM信号)。
它适用于各开关电源、斩波器的控制。
2.功放电路直流电机PWM输出的信号一般比较小,不能直接去驱动直流电机,它必须经过功放后再接到直流电机的两端。
该实验装置中采用直流15V的直流电压功放电路驱动。
3.反馈接口在直流电机控制系统中,在直流电机的轴上贴有一块小磁钢,电机转动带动磁钢转动。
磁钢的下面中有一个霍尔元件,当磁钢转到时霍尔元件感应输出。
河南工业大学《大学计算机基础及office应用》实验报告-实验单元三

河南工业大学《大学计算机基础及office应用》实验报告专业班级:学号:姓名:实验单元三PPT的操作和应用及综合性实验实验七PPT演示文稿的建立和编辑实验时间:【实验目的】掌握PPT演示文稿的建立与基本编辑方法。
【实验环境】安装了Windows 7操作系统和PPT应用软件的PC机。
【实验内容】完成如下操作(参照教材256页的实训项目6-1)。
1. 创建“***个人简介.pptx”并保存,按照图5-57所示的样文输入并编辑,对演示文稿应用主题。
第一张幻灯片采用“标题幻灯片”版式,标题为“你的名字”,副标题为“你的专业名称”;2. 第二张幻灯片介绍自己的基本情况,图片为你的照片;3. 第三张幻灯片标题为“爱好和特长”,内容为自己的爱好和特长;4. 第四张幻灯片标题为“专业介绍”,介绍自己的专业情况;5. 第五张幻灯片标题为“学院简介”,要求使用艺术字;组织结构图为学院的组织结构图(即学院下设哪些系,各个系下设哪些专业);6. 第六张幻灯片标题为“2014年春季学期课程表”,内容为你的本学期课程表(只需列出4门);另外,在幻灯片上插入自动更新日期与页脚,并且标题幻灯片中不显示。
7.设置动画效果:第一个自选图形自左侧切入,随后第二个自选图形百叶窗方式切入,第三个自选图形自动自底部切入,其他对象的动画效果自定。
8.设置放映方式为:第一张幻灯片:向右下揭开;第二张幻灯片:盒状展开;第二张幻灯片:从内到外垂直分割,其他幻灯片的放映方式自定。
【实验步骤】(此项由学生自己完成)1. 创建“***个人简介.pptx”并保存,按照图5-57所示的样文输入并编辑,对演示文稿应用主题。
第一张幻灯片采用“标题幻灯片”版式,标题为“你的名字”,副标题为“你的专业名称”;步骤是:2. 第二张幻灯片介绍自己的基本情况,图片为你的照片;步骤是:3. 第三张幻灯片标题为“爱好和特长”,内容为自己的爱好和特长;步骤是:4. 第四张幻灯片标题为“专业介绍”,介绍自己的专业情况;步骤是:5. 第五张幻灯片标题为“学院简介”,要求使用艺术字;组织结构图为学院的组织结构图(即学院下设哪些系,各个系下设哪些专业);步骤是:6. 第六张幻灯片标题为“2014年春季学期课程表”,内容为你的本学期课程表(只需列出4门);步骤是:另外,在幻灯片上插入自动更新日期与页脚,并且标题幻灯片中不显示。
大学_计算机控制技术实验报告河南工业大学2

实验二数字PID调节器算法的研究班级:自动F1203班姓名:蔡申申学号:201223910625 一、实验目的1.学习并熟悉常规的数字PID控制算法的原理;2.学习并熟悉积分分离PID控制算法的原理;3.掌握具有数字PID调节器控制系统的实验和调节器参数的整定方法。
二、实验设备1.THBCC-1型信号与系统•控制理论及计算机控制技术实验平2.THBXD数据采集卡一块(含37芯通信线、16芯排线和USB电缆线各1根)3.PC机1台(含软件“THBCC-1”)三、实验内容1.利用本实验平台,设计并构成一个用于混合仿真实验的计算机闭环实时控制系统;2.采用常规的PI和PID调节器,构成计算机闭环系统,并对调节器的参数进行整定,使之具有满意的动态性能;3.对系统采用积分分离PID控制,并整定调节器的参数。
四、实验原理在工业过程控制中,应用最广泛的控制器是PID控制器,它是按偏差的比例(P)、积分(I)、微分(D)组合而成的控制规律。
而数字PID控制器则是由模拟PID控制规律直接变换所得。
在PID控制规律中,引入积分的目的是为了消除静差,提高控制精度,但系统中引入了积分,往往使之产生过大的超调量,这对某些生产过程是不允许的。
因此在工业生产中常用改进的PID算法,如积分分离PID算法,其思想是当被控量与设定值偏差较大时取消积分控制;当控制量接近给定值时才将积分作用投入,以消除静差,提高控制精度。
这样,既保持了积分的作用,又减小了超调量。
五、实验步骤1、实验接线1.1.按图4-1和图4-2连接一个二阶被控对象闭环控制系统的电路;1.2.该电路的输出与数据采集卡的输入端AD1相连,电路的输入与数据采集卡的输出端DA1相连;1.3.待检查电路接线无误后,打开实验平台的电源总开关,并将锁零单元的锁零按钮处于“解锁”状态。
图4-1数-模混合控制系统的方框图图4-2被控二阶对象的模拟电路图2、脚本程序运行2.1.启动计算机,在桌面双击图标“THBCC-1”,运行实验软件;2.2. 顺序点击虚拟示波器界面上的“”按钮和工具栏上的“”按钮(脚本编程器);2.3.在脚本编辑器窗口的文件菜单下点击“打开”按钮,并在“计算机控制算法VBS\计算机控制技术基础算法\数字PID调器算法”文件夹下选中“位置式PID”脚本程序并打开,阅读、理解该程序,然后点击脚本编辑器窗口的调试菜单下“步长设置”,将脚本算法的运行步长设为100ms;2.4.点击脚本编辑器窗口的调试菜单下“启动”;用虚拟示波器观察图4-2输出端的响应曲线;2.5.点击脚本编辑器的调试菜单下“停止”,利用扩充响应曲线法(参考本实验附录4)整定PID控制器的P、I、D及系统采样时间Ts等参数,然后再运行。
河南工业大学-计科1505-编译原理实验一

河南工业大学实验报告课程名称编译原理实验项目实验一词法分析院系信息科学与工程学院专业班级计科F1505班姓名李杰学号 201516010118指导老师阎娟日期 2018.4.16批改日期成绩一.实验目的1.深入理解有限自动机及其应用2.掌握根据语言的词法规则构造识别其单词的有限自动机的方法3.基本掌握词法分析程序的开发。
二.实验内容及要求编制一个能够分析三种整数、标识符和主要关键字的词法分析器。
实验要求1根据以下的正规式,编制正规文法,画出状态图标识符<字母>(<字母>|<数字字符>)*十进制整数0 | (1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*八进制整数0(1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)*十六进制整数0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)*关键字if then else while do2根据状态图,设计词法分析函数int scan( ),完成以下功能:1) 从键盘读入数据,分析出一个单词。
2) 返回单词种别(用整数表示),3) 返回单词属性(不同的属性可以放在不同的全局变量中)。
3编写测试程序,反复调用函数scan( ),输出单词种别和属性。
三.实验过程○1词法的正规式描述标识符 <字母>(<字母>|<数字字符>)*(ε|_|.)(<字母>|<数字字符>)*十进制整数(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*(ε|.)(0|1|2|3|4|5|6|7|8|9)(0|1|2|3|4|5|6|7|8|9)*八进制整数0(1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)* (ε|.)(0|1|2|3|4|5|6|7)(0|1|2|3|4|5|6|7)*十六进制整数0x(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e |f)* (ε|.) (0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f)(0|1|2|3|4|5|6|7|8|9|a|b|c|d|e|f )*运算符和分隔符 + - * / > < = ( ) ;关键字 if then else while d○2变换后的正规文法(1)标识符设<字母>的表示符为A(alpha),<数字字符>的表示符为N(num),则标识符的正规文法可以表示为:id→AII→ε| AI | NIJ→ε|.I(2)十进制数S→0 | 1A | 2A | 3A | 4A | 5A | 6A | 7A| 8A | 9AA→ε| 1AB | 2AB | 3AB | 4AB | 5AB | 6AB | 7AB | 8AB | 9ABB→ε|.S(3)八进制数S→0A A→ 0B |1B | 2B | 3B | 4B | 5B | 6B | 7BB→ε| 0BC |1BC | 2BC | 3BC | 4BC | 5BC | 6BC | 7BCC→ε|.A(4)十六进制数S→0xM | 0XNN→0M|1M |2M |3M |4M |5M |6M |7M |8M |9M |aM |bM |cM |dM |eM |fM |AM|BM|CM|DM|EM|FM|M→ε|0M|R1MR |2MR |3MR |4MR |5MR |6MR |7MR |8MR |9MR |aMR |bMR |cMR |dMR |eMR |fMR |AMR|BMR|CMR|DMR|EMR|FMR|R→ε|.N(5)运算符和分隔符S→+ | - | * | / | > | < | = | ( | ) | := | # | ;(6)关键字S→ if | then | else | while | do | switch | case | for○3状态图○4函数设计int Iskey(string c){ //关键字判断int i;for(i=0;i<LENGTH;i++) {if(key[i].compare(c)==0) return 1;}return 0;}int IsLetter(char c) { //判断是否为字母if(((c<='z')&&(c>='a'))||((c<='Z')&&(c>='A'))) return 1;else return 0;}int IsLetter1(char c) { //判断是否为a~f字母if(((c<='f')&&(c>='a'))||((c<='F')&&(c>='A'))) return 1;else return 0;}int IsNum(char c){ //判断是否为数字if(c>='0'&&c<='9') return 1;else return 0;}○5scan()函数,实现该算法void scan(FILE *fpin){string arr="";while((ch=fgetc(fpin))!=EOF){arr="";if(ch==' '||ch=='\t'||ch=='\n'){}else if(IsLetter(ch)||ch=='_'){arr=arr+ch;ch=fgetc(fpin);while(IsLetter(ch)||IsNum(ch)){if((ch<='Z')&&(ch>='A')) ch=ch+32;arr=arr+ch;ch=fgetc(fpin);}//fseek(fpin,-1L,SEEK_CUR);if (Iskey(arr)){cout<<"<"<<arr<<",关键字>"<<endl;}else cout<<"<"<<arr<<",普通标识符>"<<endl;}else if(IsNum(ch)){int flag=0;if(ch=='0'){arr=arr+ch;ch=fgetc(fpin);if(ch>='0'&&ch<='7'){while(ch>='0'&&ch<='7'){flag=1;arr=arr+ch;ch=fgetc(fpin);}}else if(ch=='x'||ch=='X'){flag=2;arr=arr+ch;ch=fgetc(fpin);while(IsNum(ch)||IsLetter1(ch)){arr=arr+ch;ch=fgetc(fpin);}}else if(ch==' '||ch==','||ch==';' ){cout<<"<"<<arr<<",整数0>"<<endl;}//fseek(fpin,-1L,SEEK_CUR);if(flag==1) cout<<"<"<<arr<<",八进制整数>"<<endl;else if(flag==2) cout<<"<"<<arr<<",十六进制整数>"<<endl;}else{arr=arr+ch;ch=fgetc(fpin);while(IsNum(ch)){arr=arr+ch;ch=fgetc(fpin);}//fseek(fpin,-1L,SEEK_CUR);cout<<"<"<<arr<<",十进制整数>"<<endl;}}else switch(ch){case'+':case'-' :case'*' :case'=' :case'/' :cout<<"<"<<ch<<",运算符>"<<endl;break;case'(' :case')' :case'[' :case']' :case';' :case'.' :case',' :case'{' :case'}' :cout<<"<"<<ch<<",界符>"<<endl;break;case':' :{ch=fgetc(fpin);if(ch=='=') cout<<"<"<<":="<<",运算符>"<<endl;else {cout<<"<"<<"::"<<",界符>"<<endl;;//fseek(fpin,-1L,SEEK_CUR);}}break;case'>' :{ch=fgetc(fpin);if(ch=='=') cout<<"<"<<">="<<",运算符>"<<endl;if(ch=='>')cout<<"<"<<">>"<<",输入控制符>"<<endl;else {cout<<"<"<<">"<<",运算符>"<<endl;//fseek(fpin,-1L,SEEK_CUR);}}break;case'<' :{ch=fgetc(fpin);if(ch=='=')cout<<"<"<<"<="<<",运算符>"<<endl;else if(ch=='<')cout<<"<"<<"<<"<<",输出控制符>"<<endl;else if(ch=='>') cout<<"<"<<"<>"<<",运算符>"<<endl;else{cout<<"<"<<"<"<<",运算符>"<<endl;//fseek(fpin,-1L,SEEK_CUR);}}break;default : cout<<"<"<<ch<<",无法识别字符>"<<endl;}}}四.实验结果经过不断的调试,分析,改错,最终形成了以上的程序,样例测试如下图所示。
河南工业大学protel实验报告

实验1 原理图设计环境画原理图实验一实验目的1 熟练PROTEL99se的原理图编辑环境2 掌握常用管理器,菜单的使用,电气规则检查3 掌握元器件等的调用,属性含义。
二实验内容教材 1.1,1.2,1.3,1.4环境熟悉2.1,2.2工具条对象,器件调用2.3,2.4 菜单使用,元件属性修改4.2练习1-练习8注意连线:从器件的端点开始到端点结束,不要多余的线按空格旋转元件;PAGEDOWN PAGEUP缩放放好原件的原理图编号报告文件编辑好属性的原理电路图实验2 原理图练习实验一实验目的1 掌握层次电路图设计方法2 了解层次电路原理图各图之间的关系3 熟悉顶层图,子图的生成方法二实验内容教材2.4.4层次电路图菜单使用参考33页(5)(6)注意1 在顶层电路图中,图纸符号(Sheet symbol)代表一张子图纸,子图是通过图纸符号入口(sheet symbol entry)与外界连接的2子图中的端口(Port)与顶层图中的图纸符号入口(sheet symbol entry)的不同。
端口(Port)是在生成子图时候自动生成的。
3 层次电路图出现多张图纸,需要修改图纸编号(number),修改方法:Design-Options-Organizations…顶层电路图Wenya分电路Zhengliu分电路图实验3 元件图绘制实验一实验目的1 掌握元件图绘制基本步骤方法2 了解多元件芯片含义3 多元元件芯片元件图的绘制及其在原理图中的调用方法4 理解元件库的作用,库的创建与修改二实验内容1教材:3.4画元件图示例2教材87页,练习9 画多元件芯片U9及其在原理图中的调用注意:库文件(*.LIB)的建立,库中可以存放多个元件元件的添加:Tools—New Component多元件芯片的子件的添加:Tools—New Part放置管脚最后的D触发器练习九电路实验4 电路板图环境实验一实验目的1 理解电路版图与原理图之间的关系2 理解网络表生成及其作用,网络表所包含的内容。
河南工业大学试验报告_试验三查找和排序一——查找

xxx大学实验报告 )——查找查找和排序(一课程名称数据结构实验项目实验三1501 计类信息学院计类系专业班级院系号学姓名期日指导老师绩成批改日期实验目的一1.掌握哈希函数——除留余数法的应用; 2. 掌握哈希表的建立; 3. 掌握冲突的解决方法; 4. 掌握哈希查找算法的实现。
实验内容及要求二哈希,实验内容:已知一组关键字(19,14,23,1,68,20,84,27,55,11,10,79)。
实现该哈希表的散列,并m=16函数定义为:H(key)=key MOD 13, 哈希表长为。
计算平均查找长度(设每个记录的查找概率相等)使用线性探测再散列或链2. 1. 哈希表定义为定长的数组结构;实验要求:输出等概率散列完成后在屏幕上输出数组内容或链表;4. 地址法解决冲突;3.完成散列后,输入关键字完成查找操作,要分别测查找下的平均查找长度;5. 试查找成功与不成功两种情况。
可尝试使用不同解决不同解决冲突的方法会使得平均查找长度不同,注意:(根据完成情况自选,但至少能使用一种方法冲突的办法,比较平均查找长度。
解决冲突)实验过程及运行结果三#include<stdio.h>#include <stdlib.h>#include <string.h>#define hashsize 16#define q 13int sign=2;typedef struct Hash{值域 // int date; //标记 int sign;}HashNode;线性冲突处理void compare(HashNode H[],int p,int i,int key[]) // { p++; if(H[p].sign!=0) { sign++;compare(H,p,i,key);}elseH[p].date=key[i];H[p].sign=sign; sign=2;}}void Hashlist(HashNode H[],int key[]){ int p;for(int i=0;i<12;i++) {p=key[i]%q; if(H[p].sign==0) { H[p].date=key[i];H[p].sign=1;}else compare(H,p,i,key);}}查找冲突处理int judge(HashNode H[],int num,int n) //{n++; if(n>=hashsize) return 0; if(H[n].date==num) {位置\t 数据\n); 牰湩晴尨 printf(%d\t %d\n\n,n,H[n].date);return 1;}elsejudge(H,num,n);}int search(char num,HashNode H[]) //查找{ int n;n= num % q;if(H[n].sign==0) {牰湩晴尨失败);return 0; } if(H[n].sign!=0&&H[n].date==num) {数据\t 牰湩晴尨位置\n);printf(%d\t %d\n\n,n,H[n].date);} else if(H[n].sign!=0&&H[n].date!=num) {if(judge(H,num,n)==0) return 0;}return 1;}int main(void){ int key[q]={19,14,23,1,68,20,84,27,55,11,10,79}; float a=0;HashNode H[hashsize];for(int i=0;i<hashsize;i++)H[i].sign=0;Hashlist(H,key);数据\n\n);\t 牰湩晴尨位置 for(inti=0;i<hashsize;i++){if(H[i].sign!=0){printf(%d\t %d\n,i,H[i].date);else{H[i].date=0;printf(%d\t %d\n,i,H[i].date);} } int num;'查找完成):\n); 请输入查找数值(‘-1牰湩晴尨for(int i=0;;i++){scanf(%d,&num);if(num==-1)break;if(search(num,H)==0)不存在\n); 牰湩晴尨 } for(inti=0;i<hashsize;i++){printf(%d ,H[i].sign);a=a+H[i].sign; } printf(\%2.0f,a);%0.2f\n,a/12);平均查找长度:牰湩晴尨return 0;}四调试情况、设计技巧及体会首先得确定哈希函数,虽然冲突是无法避免的,但是我们应该选择合适的函数,减少冲突,最简单的可以采用开放定止法,出现冲突后,以原地址为基点再次寻找下一个地址。
河南工业大学实验报告

河南工业大学实验报告课程_ 软件应用技术_____ _实验名称___ 图形、文本和位图_院系__ 信息科学与工程学院 _专业班级___ _计科0701_姓名____ 徐晶_ _ 学号__ _ _ 20074140129_____一.实验内容编写一个应用程序,实现画线的动态定位操作,如下图所示。
当鼠标在视图客户区移动时,会出一个大大的光标(由水平线和垂直线组成),光标的右上角的小窗口显示出当前的鼠标位置,当单击鼠标左键时,在屏幕上出现由小十字点标志,此时再移动鼠标,从当前鼠标位置到前面一个点将绘制一条直线,且该直线随鼠标位置移动而变化,就像一根橡皮条一样,且光标右上角的小窗口显示出这条直线的长度和角度,再单击鼠标左键一条直线被绘制出来,…,直到按ESC键结束,一条折线就绘制出来了。
为了保证在视图需要更新时,这些线条仍然存在,需要将这些点保存下来,然后再重新绘出。
二.实验准备(1)在学习完教材第7章内容后进行本次实验(2)阅读教材中关于本次上机所需要的程序。
三.实验步骤(1),创建工作文件夹,启动VC6.0,创建一个默认的单文档应用程序Ex-A7。
(2),A,光标的生成和实现:在Ex-ATView文件中的类声明添加下列成员变量class CEx_A7View : public CView{public:BOOL m_bCursorFirst; // 光标第一次显示标志CPoint m_ptPrevPos; // 上一个点的坐标CPoint m_ptCurPos; // 当前点的坐标B,在CEx-ATView::OnDraw中添加一些清屏代码,并将m_blurSorFirst设为TRUEvoid CEx_A7View::OnDraw(CDC* pDC){CEx_A7Doc* pDoc = GetDocument();ASSERT_V ALID(pDoc);CRect rcClient;GetClientRect( rcClient ); // 获取客户区大小pDC->FillSolidRect( rcClient, RGB( 0,0,0 ) ); // 将客户区清为黑色m_bCursorFirst = TRUE;pDC->SetBkMode( TRANSPARENT ); // 设置透明背景模式}C,为CEx-ATView类添加绘制光标函数的成员函数DrawCurSorvoid CEx_A7View::DrawCursor(CDC *pDC, CPoint pt){CRect rcClip;pDC->GetClipBox( rcClip ); // 当前裁剪区大小CPen pen( PS_SOLID, 1, RGB( 128, 128, 128 ) ); // 灰色画笔CPen *oldPen = pDC->SelectObject( &pen ); // 选入画笔// 设置XOR光栅操作模式int nOldROP = pDC->SetROP2( R2_XORPEN );// 绘制水平线pDC->MoveTo( rcClip.left, pt.y );pDC->LineTo( rcClip.right, pt.y );//绘制垂直线pDC->MoveTo( pt.x, rcClip.top );pDC->LineTo( pt.x, rcClip.bottom );// 恢复原来的光栅模式pDC->SetROP2( nOldROP );// 恢复原来的画笔}D,用MFC classWizard为CEx-ATView类添加WM_MouSEMOVE消息映射,并在映射函数中添加相应代码。
河南工业大学实验报告_实验二 非线性结构(一)——树

河南工业大学实验报告课程名称数据结构实验项目实验二非线性结构(一)——树院系信息学院计科系专业班级计科1401姓名赵振学号 201416010121 指导老师范艳峰日期 2015-6-1 批改日期成绩一实验目的1.掌握二叉树的建立与递归遍历算法。
2.理解哈夫曼树及其应用;掌握生成哈夫曼树的算法;哈夫曼编码;哈夫曼译码。
二实验内容及要求实验内容:下列两题二选一:1.实现二叉树的建立与递归遍历算法;2.建立huffman编码树;编码指定字符串;译码指定码流为字符串。
实验要求:题目1:键盘输入数据;屏幕输出运行结果。
题目2:键盘输入数据;屏幕输出运行结果。
运行显示结果为:输入一个字符串,生成码流;输入码流,译码为字符串。
三实验过程及运行结果1.本次实验的主要内容是建立二叉树,进行遍历查找,以及求二叉树的深度:具体实验过程如下:#include <stdio.h>//头文件#include <stdlib.h>typedef struct BiTNode{char data;struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;//定义结点类型int countleaves(BiTree bt,int count); BiTree CreateBiTree();int btnodedepth (BiTNode *b);void PreOrder(BiTree T);BiTree findnode(BiTree b,char x);void main()//主函数{BiTree Ta,m;int count ;int n,k=0;char x;printf("请输入数据:\n");Ta=CreateBiTree();printf("先序遍历:");printf("\n");PreOrder(Ta);count = btnodedepth ( Ta );printf("\n树的高度:%d", count); printf("\n请输入一个字符数据:"); getchar();scanf("%c",&x);m=findnode(Ta,x);if(m!=NULL){printf("\n查找成功!");}else{printf("\n查找失败");}}BiTree CreateBiTree()//创建树{char p;BiTree T;scanf("%c",&p);if(p==' ')T=NULL;else{T=(BiTNode *)malloc(sizeof(BiTNode));//为结点开辟空间 T->data=p;T->lchild=CreateBiTree();T->rchild=CreateBiTree();}return (T);}void PreOrder(BiTree T)//先序{if(T!=NULL){printf("%c ",T->data);PreOrder(T->lchild);PreOrder(T->rchild);}}int btnodedepth (BiTNode *b){int lchilddep ,rchilddep;if(b==NULL){return(0);}else{lchilddep =btnodedepth(b->lchild);rchilddep = btnodedepth(b->rchild);return (lchilddep > rchilddep) ? (lchilddep + 1) : (rchilddep + 1);}}//查找节点BiTree findnode(BiTree b,char x){BiTree p;if(b==NULL){return NULL;}else if(b->data == x){return b;}else{p= findnode(b->lchild,x);if(p!=NULL)return p;elsereturn findnode(b->rchild,x);}}运行结果:四调试情况、设计技巧及体会递归调用程序语句少,运行起来快。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河南工业大学
《管理信息系统》实验报告
姓名:
学号:
专业班级:
指导教师:
河南工业大学管理学院
实验报告题目:
1、某图书馆图书借阅管理信息系统系统分析
2、学籍管理信息系统系统分析
3、小型超市进、销、存信息系统系统分析
4、图书馆图书管理信息系统系统分析
实验报告内容要求:
【实验步骤】
1.系统项目概述
概要说明所选管理项目的目的,业务范围,主要任务,项目的重要性,必要性和可行性。
2.项目工作计划
说明所选管理项目开发计划,要确定项目各部分的开发任务,人员分工,估计开发进度,其中开发任务包括各部分的系统子项,,进度采用表格或GANTT图描述。
3.管理业务流程分析
通过对所选项目业务调查分析,介绍其的典型组织机构,管理功能及业务流程,给出项目的主要业务流程,利用“业务流程图”或“表格分配图”描述.。
4.数据流程图
明确数据流程的调查与分析过程,绘制数据流程图,编制数据字典;根据业务流程分析结果,结合项目的任务,功能及特点,画出“数据流程图”。
5.数据字典及E-R图
根据“数据流程图”,编写相应的“数据字典”,根据以上分析结果,画出E-R图。
6.总结和体会
独立完成上述内容,并提交书面系统分析报告,简要说明项目开发中成功和失败的经验教训。