哈尔滨工业大学课程设计报告
哈工大机器人课程设计

哈工大机器人课程设计一、课程目标知识目标:1. 学生能够掌握机器人基本原理,包括机械结构、传感器应用和编程控制。
2. 学生能够了解哈工大机器人课程中所涉及的数学、物理和工程知识,并将其应用于实际问题。
3. 学生能够描述不同类型机器人的设计特点及其应用场景。
技能目标:1. 学生能够运用所学知识,设计简单的机器人控制系统,完成特定任务。
2. 学生能够运用编程软件,编写控制程序,实现对机器人的精确控制。
3. 学生能够通过团队协作,共同完成一个具有实际应用的机器人项目。
情感态度价值观目标:1. 学生培养对机器人技术的兴趣,激发创新精神和探索欲望。
2. 学生在课程学习中,树立正确的工程伦理观念,关注社会发展,认识到机器人技术对社会进步的重要性。
3. 学生通过团队协作,培养沟通能力、合作精神和解决问题的能力,增强自信心和责任感。
本课程针对哈尔滨工业大学高年级本科生,课程性质为理论与实践相结合。
学生在具备一定数学、物理和工程基础知识的基础上,通过本课程的学习,将所学知识应用于实际机器人设计与控制。
课程旨在培养学生的创新意识、实践能力和团队协作精神,为我国机器人产业发展输送高素质人才。
二、教学内容1. 机器人原理概述:包括机器人的定义、分类、发展历程和应用领域,重点介绍哈工大在机器人领域的研究成果。
教材章节:第一章 机器人概述2. 机器人机械结构与设计:学习机器人的机械结构设计原理,包括传动系统、执行机构和传感器布局。
教材章节:第二章 机器人机械结构与设计3. 机器人传感器及其应用:介绍常用传感器的工作原理、特性及应用,如红外传感器、超声波传感器和视觉传感器等。
教材章节:第三章 机器人传感器4. 机器人编程与控制:学习机器人编程语言及控制方法,掌握基本编程技巧,实现对机器人的运动控制。
教材章节:第四章 机器人编程与控制5. 机器人项目实践:通过团队协作,设计并实现一个具有实际应用的机器人项目,涵盖需求分析、方案设计、编程调试等环节。
哈工大机械臂课程设计

哈工大机械臂课程设计一、教学目标本课程旨在通过学习哈工大机械臂的相关知识,使学生掌握机械臂的基本原理、结构及其控制系统,培养学生的动手能力和创新思维。
知识目标:了解机械臂的基本概念、分类和应用领域;掌握机械臂的运动学、动力学及其控制原理;熟悉机械臂的硬件组成和软件编程。
技能目标:能够分析机械臂的运动轨迹和力矩需求;具备机械臂的组装、调试和编程能力;能够运用所学知识解决实际工程问题。
情感态度价值观目标:培养学生对机械臂技术的兴趣和热情,提高学生对科技创新的认同感;培养学生团队合作、沟通协调的能力,增强学生的社会责任感。
二、教学内容本课程的教学内容主要包括机械臂的基本原理、结构及其控制系统。
1.机械臂的基本原理:介绍机械臂的定义、分类和应用领域,阐述机械臂的运动学、动力学及其控制原理。
2.机械臂的结构:讲解机械臂的硬件组成,包括执行器、传感器、控制器等,以及它们在机械臂中的作用。
3.机械臂的控制系统:介绍机械臂的控制算法、编程方法和调试技巧,分析机械臂的运动轨迹和力矩需求。
4.机械臂的组装与调试:讲解机械臂的组装步骤、注意事项以及调试方法,培养学生具备实际操作能力。
5.机械臂编程与应用:教授机械臂的编程语言和应用案例,使学生能够运用所学知识解决实际工程问题。
三、教学方法为了提高教学效果,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。
1.讲授法:通过讲解机械臂的基本原理、结构和控制系统,使学生掌握相关理论知识。
2.讨论法:学生就机械臂的应用案例展开讨论,培养学生的创新思维和团队协作能力。
3.案例分析法:分析实际工程中的机械臂应用案例,帮助学生将理论知识与实际问题相结合。
4.实验法:安排学生进行机械臂的组装、调试和编程实践,提高学生的动手能力和实际操作技能。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选用《哈工大机械臂教程》作为主要教材,为学生提供系统性的理论知识学习。
哈工大物联网课程设计

哈工大物联网课程设计一、课程目标知识目标:1. 学生能够理解物联网的基本概念、原理和技术架构;2. 学生能够掌握物联网感知层、网络层和应用层的关键技术;3. 学生能够了解物联网在智慧城市、智能制造等领域的应用案例。
技能目标:1. 学生能够运用物联网技术设计简单的应用系统;2. 学生能够运用编程语言实现物联网设备的数据采集、传输和处理;3. 学生能够运用物联网平台进行设备管理和数据分析。
情感态度价值观目标:1. 学生对物联网技术产生兴趣,培养探究精神和创新意识;2. 学生能够认识到物联网技术对社会发展和个人生活的影响,树立正确的技术价值观;3. 学生能够在团队合作中发挥个人优势,培养沟通协作能力和团队精神。
课程性质:本课程为物联网技术原理与应用的实践性课程,结合理论教学和实验操作,培养学生对物联网技术的理解和应用能力。
学生特点:学生具备一定的计算机网络和编程基础,对新兴技术充满好奇心,喜欢动手实践。
教学要求:注重理论与实践相结合,突出实用性,引导学生通过实际操作和案例分析,掌握物联网技术的基本知识和应用能力。
在教学过程中,关注学生的学习进度和反馈,及时调整教学方法和内容,确保课程目标的实现。
将目标分解为具体的学习成果,为后续的教学设计和评估提供依据。
二、教学内容1. 物联网基本概念与体系结构- 物联网的定义、发展历程与未来趋势- 物联网的体系结构:感知层、网络层、应用层2. 感知层技术- 传感器原理与分类- 数据采集、处理与传输技术- 射频识别(RFID)技术3. 网络层技术- 物联网通信协议与技术:MQTT、CoAP等- 网络接入技术:Wi-Fi、蓝牙、ZigBee等- 数据加密与安全传输技术4. 应用层技术- 物联网平台架构与功能- 数据分析与处理技术- 智能家居、智慧城市等应用案例5. 物联网应用系统设计- 系统设计方法与流程- 编程语言与开发工具:如Python、Arduino等- 实践项目:设计并实现一个简单的物联网应用系统6. 物联网技术发展趋势与挑战- 5G、边缘计算等新兴技术对物联网的影响- 物联网技术的行业应用与挑战- 物联网技术发展的前景与机遇教学内容安排与进度:第1-2周:物联网基本概念与体系结构第3-4周:感知层技术第5-6周:网络层技术第7-8周:应用层技术第9-10周:物联网应用系统设计第11-12周:物联网技术发展趋势与挑战教材关联性:教学内容与教材章节紧密关联,确保学生能够系统地学习物联网技术的基本知识、关键技术与应用实例。
哈工大课程设计

哈工大课程设计一、课程目标知识目标:1. 学生能掌握课程核心概念,如基本原理、定律和公式,并能够准确运用到实际问题中。
2. 学生能够理解学科知识体系,建立知识框架,对前后知识点有清晰的认识和联系。
3. 学生能总结哈工大相关课程中的重点、难点,形成自己的知识网络。
技能目标:1. 学生通过案例分析、实验操作等实践活动,提高问题分析、解决的能力。
2. 学生能够运用所学知识进行团队合作,开展项目设计,提升动手实践和创新能力。
3. 学生能够熟练运用现代信息技术,进行资料查询、数据处理和报告撰写。
情感态度价值观目标:1. 学生培养对学科的兴趣和热情,形成主动学习的态度。
2. 学生通过课程学习,树立正确的价值观,认识到知识对社会、国家发展的意义。
3. 学生在团队合作中,学会尊重、倾听、沟通,培养良好的团队合作精神和人际交往能力。
分析课程性质、学生特点和教学要求,本课程旨在帮助学生在掌握学科知识的基础上,提高实践能力和综合素质,培养具备创新精神和责任感的优秀人才。
课程目标具体、可衡量,便于教师进行教学设计和评估,确保教学效果。
二、教学内容本课程依据课程目标,结合课本内容,科学系统地组织以下教学内容:1. 基础理论:涵盖课本第一章至第三章,主要包括基本原理、定律和公式,旨在为学生建立扎实的理论基础。
- 第一章:学科发展史及基本概念- 第二章:核心理论及定律- 第三章:重要公式及其应用2. 实践应用:结合课本第四章至第五章,通过案例分析、实验操作等形式,提高学生解决实际问题的能力。
- 第四章:案例分析及问题解决方法- 第五章:实验原理与操作技能3. 综合能力培养:依据课本第六章,开展团队合作项目设计,提升学生的动手实践和创新能力。
- 第六章:项目设计与实践4. 现代信息技术应用:结合课本第七章,教授学生资料查询、数据处理和报告撰写技巧。
- 第七章:现代信息技术应用教学内容安排和进度如下:第一周:第一章至第三章基础理论学习第二周:第四章案例分析及问题解决方法第三周:第五章实验原理与操作技能第四周:第六章项目设计与实践第五周:第七章现代信息技术应用教学内容确保科学性和系统性,以教学大纲为指导,明确教材章节和内容,旨在帮助学生扎实掌握学科知识,提高实践能力。
哈工大电气学院课程设计

哈工大电气学院课程设计一、课程目标知识目标:1. 学生能够掌握电路分析的基本原理,理解并运用复数表达法进行交流电路的计算。
2. 学生能够运用基本电路定理,如欧姆定律、基尔霍夫定律,分析简单的电气网络。
3. 学生能够识别并描述常见电子元件的工作原理和特性。
技能目标:1. 学生能够设计简单的电路图,并进行模拟计算,验证电路性能。
2. 学生通过实验和模拟软件操作,培养动手能力和实际问题解决能力。
3. 学生能够运用电气工程相关软件进行基础电路设计与仿真。
情感态度价值观目标:1. 学生培养对电气工程学科的兴趣,增强探究精神和创新意识。
2. 学生通过团队合作完成项目任务,培养沟通能力和团队协作精神。
3. 学生能够在电路设计和分析中,认识到科技对社会发展的贡献,增强社会责任感和职业道德。
本课程针对哈工大电气学院高年级学生设计,课程性质以实践与应用为主,结合理论教学。
学生具备一定的物理和数学基础,对电气工程有初步了解。
教学要求强调理论与实践相结合,注重培养学生的实际操作能力、创新思维和解决复杂工程问题的能力。
通过具体学习成果的达成,为学生未来从事电气工程领域工作打下坚实基础。
二、教学内容1. 电路分析基本原理:复数表达法,相量图绘制,交流电路的阻抗与导纳分析。
- 教材章节:第三章“交流电路的分析方法”2. 基本电路定理:欧姆定律,基尔霍夫定律,节点分析,回路分析。
- 教材章节:第四章“电路定理及其应用”3. 电子元件特性:电阻、电容、电感元件的伏安特性,频率响应特性。
- 教材章节:第二章“电路元件及其特性”4. 电路设计与仿真:利用Multisim、LTSpice等软件进行电路设计、模拟与验证。
- 教材章节:第六章“电路仿真技术”5. 实践项目:设计并搭建简单的放大电路,测试其性能参数。
- 教材章节:第五章“电子电路设计与实践”教学内容安排与进度:第一周:电路分析基本原理,复数表达法的应用。
第二周:基本电路定理学习,进行相关习题练习。
哈工大电力电子课程设计报告

H a r b i n I n s t i t u t e o f T e c h n o l o g y课程设计说明书(论文)课程名称:电力电子技术设计题目:可逆直流PWM驱动电源的设计院系:电气工程系班级:设计者:学号:同组人:指导教师:设计时间:哈尔滨工业大学教务处哈尔滨工业大学课程设计任务书工作计划安排:(学时安排为1周,但考虑实验的安排,需分散在2周内完成)第1周:全体开会,布置任务,组成设计小组(每组3人),会后设计工作开始。
答疑,审查设计方案,发放器件和装焊工具。
完成焊装工作。
第2周每人12学时到实验室调试已装焊好的电路板,并完成相关测试和记录。
撰写设计报告。
双极模式直流PWM驱动电源的设计1.主电路设计1.1.主电路设计要求直流PWM驱动电源的主电路图如图1a所示,图1b为控制原理框图,它包括整流电路和H桥可逆斩波电路的设计。
二极管整流桥把输入交流电变为直流电,H桥逆变器则根据IGBT驱动信号占空比的不同,得到不同的直流电压,并将其加在电动机上。
a主电路图b 控制原理框图图1(1)整流部分采用四个二极管构成整流桥模块;(2)逆变器部分采用IPM(智能功率模块)PS21564构成。
该电路主要为三相逆变桥,此处采用其中的U、V两相;(3)根据负载要求,计算出交流侧输入电压和电流,作为设计整流变压器、选择整流桥和滤波电容的依据。
由于该电路整流输出电压较低,所以在计算变压器副边电压时应考虑在电流到达负载之前,整流桥和逆变桥中功率器件的通态压降。
1.2 整流电路设计整流部分采用4个二极管构成的整流桥模块。
电动机的额定电压为20V ,通过查阅该型号IPM 的数据手册得知,开关器件的通态压降为2V 左右,可知dc V 电压为24V ,由全桥整流电路可知:20.9dc V V整流桥中二极管的管压降为1V ,可知变压器副边电压及变压器的变比,滤波电容选择耐压40V 左右,容值450uF 左右。
1.H 型逆变桥设计该部分电路在IPM 模块内部集成,不需要设计。
哈工大课程设计

哈工大课程设计一、课程目标知识目标:1. 学生能够掌握本章节所介绍的基础理论知识,如公式、定律、概念等,并能够准确运用到实际问题中。
2. 学生能够理解学科知识体系中的相互联系,形成知识网络,为后续学习打下坚实基础。
技能目标:1. 学生通过本章节的学习,能够培养和提高观察、分析、解决问题的能力,尤其是运用学科知识解决实际问题的能力。
2. 学生能够熟练运用本章节的相关技能,如实验操作、数据处理、计算方法等,提高实践操作能力。
情感态度价值观目标:1. 学生在学习过程中,培养对学科的兴趣和热情,形成积极向上的学习态度。
2. 学生能够认识到所学知识在实际生活中的应用,培养创新意识和社会责任感。
3. 学生通过团队合作学习,培养良好的沟通协作能力和团队精神。
课程性质分析:本课程为学科基础课程,旨在帮助学生掌握学科基本知识和技能,为后续深入学习奠定基础。
学生特点分析:学生处于掌握基础知识和技能的关键阶段,具有一定的认知能力和自主学习能力,但需要教师引导和激发学习兴趣。
教学要求:1. 教师应注重理论与实践相结合,提高学生的实际操作能力。
2. 教师要关注学生的个体差异,因材施教,激发学生的学习兴趣和潜能。
3. 教师应注重培养学生的团队合作精神和创新能力。
二、教学内容本章节依据课程目标,选择以下教学内容:1. 章节一:基础理论- 知识点:相关概念、原理、定律等。
- 教材章节:第一章第一节。
2. 章节二:实践应用- 技能培养:实验操作、数据处理、计算方法等。
- 教材章节:第一章第二节。
3. 章节三:案例分析- 知识运用:运用所学知识解决实际问题。
- 教材章节:第一章第三节。
4. 章节四:拓展提高- 情感态度价值观培养:创新意识、团队合作、社会责任感等。
- 教材章节:第一章第四节。
教学大纲安排如下:第一周:章节一,基础理论学习。
第二周:章节二,实践应用技能培养。
第三周:章节三,案例分析及知识运用。
第四周:章节四,拓展提高及情感态度价值观培养。
哈工大综合课程设计报告2

哈尔滨工业大学“综合课程设计II”任务书综合课程设计II项目总结报告题目:卧式升降台铣床主传动系统设计院(系)机电工程学院专业机械设计制造及其自动化学生学号班号1208108指导教师填报日期2015年12月16日哈尔滨工业大学机电工程学院制2014年11月目录1.项目背景分析 (1)2.研究计划要点与执行情况 (1)3.项目关键技术的解决 (1)3.1确定转速系列 (1)3.2确定结构式 (1)3.3绘制转速图、传动系统图及核算误差 (2)4.具体研究内容与技术实现 (2)4.1确定转速系列 (2)4.2绘制转速图 (3)4.3确定变速组齿轮传动副的齿数及定比传动副带轮直径 (5)4.4绘制传动系统图 (7)4.5核算主轴转速误差 (7)4.6传动轴的直径的确定 (8)4.7齿轮模数的初步计算 (9)4.8选择带轮传动带型及根数 (10)5.技术指标分析 (11)5.1第2扩大组的验证计算 (11)5.2传动轴2的验算 (13)5.3主轴组件的静刚度验算 (15)6. 存在的问题与建议 (19)参考文献 (19)1.项目背景分析铣床系指主要用铣刀在工件上加工各种表面的机床。
通常铣刀旋转运动为主运动,工件(和)铣刀的移动为进给运动。
它可以加工平面、沟槽,也可以加工各种曲面、齿轮等。
铣床是用铣刀对工件进行铣削加工的机床。
铣床除能铣削平面、沟槽、轮齿、螺纹和花键轴外,还能加工比较复杂的型面,效率较刨床高,在机械制造和修理部门得到广泛应用。
铣床是一种用途广泛的机床,在铣床上可以加工平面(水平面、垂直面)、沟槽(键槽、T 形槽、燕尾槽等)、分齿零件(齿轮、花键轴、链轮、螺旋形表面(螺纹、螺旋槽)及各种曲面。
此外,还可用于对回转体表面、内孔加工及进行切断工作等。
铣床在工作时,工件装在工作台上或分度头等附件上,铣刀旋转为主运动,辅以工作台或铣头的进给运动,工件即可获得所需的加工表面。
由于是多刃断续切削,因而铣床的生产率较高。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
H a r b i n I n s t i t u t e o f T e c h n o l o g y课程设计报告课程名称:数据结构与算法课程设计设计题目:一个基于XML的网站生成器院系:计算机科学与技术学院班级:*******设计者:* *学号:* * * * * * * * * *指导教师:王春宇设计时间:2008年9月1日哈尔滨工业大学哈尔滨工业大学课程设计任务书一、题目分析XML代表Extensible Markup Language(eXtensible Markup Language的缩写,意为可扩展的标记语言)。
XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。
它也是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。
基于XML的网站生成器是将一个形如题目中XML文件生成一个网站。
HTML英文名字是HyperText MarkupLanguage的缩写,中文名为超文本标记语言。
所谓超文本标记语言,就是该类文档中提供的超级链接能够让浏览者在不同的页面之间进行跳转。
标记语言是基于源代码解释的访问方式,它的原文件由一个纯文本文件组成,代码中由许多元素组成,而前台浏览器通过解释这些元素显示各种样式的文档。
浏览器通读HTML 文档,处理遇到的文本标签,将相关的内容显示在网页上。
综上了解,题目要求根据一个已知XML文件自动生成一个新闻网站,即要建立新的HTML 文件,并且根据XML文件中的各种标记来满足题目要求,在自动生成的新闻网站中,每个article在主页中都要有链接,并且根据article所属的section都文章进行分类。
二、总体设计基于上述分析,网站生成器程序是通过分析一个XML 文件建立多个HTML 文件,即网页。
因此程序设计主要是对文件进行的操作。
要完成这个设计必须实现文件、字符串的操作和栈的应用。
应用栈解决实际复杂的特殊问题。
栈是一种特殊的线性表,所有的插入删除操作都只在栈的一端进行。
因此利用栈的这种特殊性质实现本试验的部分操作。
这个设计最关键的部分即运用栈进行括号匹配的检验实现判断XML 文件中的各种标签。
判断出相应标签即可进行相应的操作。
因此标签读取及识别是整个设计的基础。
因此这个设计主要有以下几个模块组成:主程序模块、判断标签模块、建立链接并制作链接网页模块、制作网站首页并将文章分类模块。
三、数据结构设计根据这一网站生成器的原理,需要的管理数据主要有:存放标签的链表,临时存放文章名、作者、日期以及所属分类的多个一维和二维数组,下面就给出每种数据的详细分析。
(一)在括号匹配的算法中设置一个栈,每读入一个括号,若是左括号或除右括号外的其他字符则直接存入堆栈,若是右括号则弹出堆栈中所有元素。
抽象数据类型栈的形式定义:ADT Stack{数据对象:D={Ai | Ai 属于ElenmSet, i=1,2,......,n}数据关系:Rl={<Ai-1,Ai> | Ai-1,Ai 属于D, i=2,......,n}约定An 为堆栈顶,An 为堆栈底.}ADT typedef struct S_Node // 定义链表节点元素{char ch;//堆栈节点类型为字符型struct S_Node * next; //下一个节点的指针}S_Node, * Stack; // 定义链表(二)在存储文件的某些信息时需要用到多个一维数组和二维数组。
抽象数据类型数组可形式的定义如下:ADT Array{数据对象:Ji=0,......,Bi-1, i=0,1,2,.......,n数据关系:R={R1,R2,.......,Rn};}ADT Array抽象数据类型数组的具体定义如下:char section[LEN][LEN] = {'\0'}; // 存储section分类的临时数组,含重复项char section_true[LEN][LEN] = {'\0'}; // 存储section分类的数组,无含重复项四、算法设计五、物理实现及结果从上述流程图可以看出基本算法主要包括标签判定、文章分类,建立网站首页和建立链接页面四个流程。
下面我们依次进行分析:1. 主要数据结构的物理设计1.XML文件标签的判定这一部分用到了栈的抽象数据类型,也是整个程序设计的基础。
其基本思想就是如果读到的字符是'<'则压入堆栈,直到读到'>'时弹出堆栈中的全部内容,即是读入标签的倒置,可以判断并根据定义将标签序号返回主函数了。
这个模块的伪码实现如下:int Judgement (ifstream & fin)// 判断标签{建立栈;初始化栈;先将'<'压入栈;while(直至遇到'>'停止压栈){从文件顺次读出字符;将读入字符压栈;}将标签弹出栈并存放到一个数组中;判断是那个标签并返回到主函数{If (调用Strcmp()比较函数,数组中内容依次与各个标签进行比较是否相同) 则待判断标签即为此时比较的标签;}将相应标签值返回主函数;}2.文章分类的实现这一部分也许要用到Strcmp()比较函数。
现将所有的分类列出,再根据每篇文章的类别将所有的文章分类,其具体实现函数的伪码如下:void Sort(ofstream & fout, int n) // 对article文档进行分类{从XML 文件开始处一次找出每个article 的section;将第一篇article 的section 存入二维数组section_true;调用Strcmp()比较函数,依次读取临时section中的字符串;判断其是否与section_true中元素相同;相同则跳过比较下一个article 的section;不同则将其写入section_true数组;将所有section 标题写入文件中;}3.建立链接页面的实现在这部分的实现中,将重新从XML 文件的起始处读起,遇到<article>标签则进行对每一个article 的单独处理。
具体实现过程的伪码如下所示:void Create (ifstream & fin, ofstream & fout1, int k)// 对各个article建立子页面建立title,headline,author,section,date等临时二维数组;从文件中读取字符,若遇到'<'则调用标签判断函数;若遇到标签<title>把这篇文章的题目放入临时数组titles;遇到标签author把这篇文章的作者放入临时数组author 中;遇到标签<section>把这篇文章的section 放入临时数组group 中;遇到标签<date>将文章日期放入data临时数组中;遇到标签<body>跳出循环,准备进行子页面的创建;保存建立超级连接的语句;建立并打开新.html 文件即链接网页;按照html 格式写入头信息网页标题;写入文章标题,即将titles 数组中内容写入;写入作者及日期;写入正文;关闭文件;}4.建立网站首页的实现此过程序调用web 的函数,根据已写好的一个为将文章分类的文件对文章进行分类并产生网站首页,其具体伪码实现过程如下:void Web(ofstream & fout1, int k){向新建的web.html 文件写入html 头信息;写入第一个section;在已有文件根据文章标记判断所属的section 判断是否属于第一个section;若是,则复制标题的连接至web.html 中;不是则跳过此article 查找判断下一个;循环此过程一次判断并打印所有的section 及article;}2. 核心算法的物理实现(1).XML文件标签判定的具体函数实现int Judgement (ifstream & fin) // 判断标签{char ch = '<';char temp[LEN] = {'\0'};Stack S = new S_Node;MakeNull (S);Push (ch, S);while (ch != '>') // 将标签压栈{fin.get (ch);Push (ch, S);}for (int k = 0; S -> next != NULL; k++) Pop (S, &temp[k]);// 将标签弹出栈for (int count = 0; count < 15; count++)if (strcmp (temp, Label[count]) == 0) return count;// 进行比较,返回其值,值为其在数组中的位置return 15;}(2).文章分类的具体函数实现int Sort (ofstream & fout, int n) // 对article文档进行分类{int k = 0;fout << "<H2>" << section[0] << "</H2>" << endl;for (int i = 0; section[k][i] != '\0'; i++) section_true[k][i] = section[k][i]; k++;for (int l = 0; l < n; l++)// 将含有重复section的数组简化为非重复的,并存入另一个数组中{int b;for ( b = 0; b < k; b++){if (strcmp (section[l], section_true[b]))continue;else break;}if (b == k){fout << "<H2>" << section[l] << "</H2>" << endl;for (int i = 0; section[l][i] != '\0'; i++)section_true[k][i] = section[l][i];k++;}}return k;}(3).建立链接页面的具体函数实现void Create (ifstream & fin, ofstream & fout1, int k) // 对各个article建立子页面{int n, m = 0;char ch;char title[LEN] = {'\0'};char headline[LEN] = {'\0'};char author[LEN] = {'\0'};char section[LEN] = {'\0'};char date[LEN] = {'\0'};for (fin.get (ch); ch != '<'; fin.get (ch))continue;n =Judgement (fin);if (n == 2){do // 对读入标签进行比较{for (fin.get (ch); ch != '<'; fin.get (ch))continue;n = Judgement (fin);if (n == 3) // 存入title临时数组和headline临时数组,由于title临时数组要加后缀html,故需要两个临时数组{for (fin.get(ch); ch != '<'; fin.get (ch), m++){title[m] = ch;headline[m] = ch;}}else if (n == 5) // 存入author临时数组{for (fin.get(ch); ch != '<'; fin.get (ch), m++)author[m] = ch;}else if (n == 7) // 存入section临时数组{for (fin.get(ch); ch != '<'; fin.get (ch), m++)section[m] = ch;}else if (n == 9) // 存入date临时数组{for (fin.get(ch); ch != '<'; fin.get (ch), m++)date[m] = ch;}else{if (n != 11) exit (1); // 表明遇上了body,将进行文件内容的copyelse break;}m = 0;}while (n != 11);ofstream fout;strcat (title, ".html"); // 用于建立子页面for (m = 0; m < k; m++)if (!(strcmp (section, section_true[m]))){mark[q] = m;break;}fout1 << endl << "@" << q << " <A HREF=\"" << title << "\">" << headline << "</A><BR>\n" << endl; // 保存建立超级连接的语句q++;fout.open (title, ios_base::out | ios_base::trunc);// 判断是否打开成功if (!fout.is_open ()){cerr << "Could not create the file." << endl;exit (1);}fout << "<html>\n<head>\n<title>" << title << "</title>\n</head>\n";fout << "<body background = \"Olympic.jpg\";>";fout << "<center>\n<H2>\n" << headline << "</H2>\n<H3>"<< author << "</H3>\n";fout << "<H5>" << date << "</H5>\n" << "<main>";for (fin.get (ch); ch != '<'; fin.get (ch))continue;n = Judgement (fin);if (n == 12){for (fin.get (ch); ch != '<'; fin.get (ch))fout << ch;fout << "</main>\n</body>\n</html>\n";}else exit (1);}else exit (1);}(4).建立网站首页的具体函数实现void Web (ofstream & fout1, int k)// 建立主页面,并对各个子页面建立超级连接{char ch;fout1 << "<html>\n<head>\n<title>2008 Olympic Games</title>\n</head>\n"; fout1 << "<body background = \"Olympic.jpg\";>\n";fout1 << "<center>\n<H1>2008 Olympic Games</H1>\n";for (int i = 0; i < k; i++){fout1 << "<H2>" << section_true[i] << "</H2>\n";ifstream fin;fin.open ("link.html", ios_base::in); // 创造链接文件if (!fin.is_open ()){cerr << "Could not open file." << endl;exit (1);}do{fin.get (ch);if (ch == '@'){int n;fin >> n;if (mark[n] == i){do{fin.get(ch);if (ch !='\n')fout1 << ch;}while (ch != '\n');fout1 << '\n';}}}while (fin.good ()); // 判断是否读到EOF}fout1 << "<br>\n<br>\n<br>\n<br>\n<br>\n<br>\n<br>\n";fout1 << "<H5>2008 - 9 - 01</H5>\n";fout1 << "\n</body>\n</html>";}3. 实现结果程序执行后在同一根目录下自动生成了一个网站,打开文件名为web.html 的文件即为网站首页,点击其中的文章标题即可进入链接页面,点击后退则返回网站首页.网站首页中的文章都已根据XML 文件中的section 分好类了.其执行结果如下:网站首页其中的一个链接页面六、结果分析从生成的网站来看,本次课程设计完成了由一个XML 文件自动生成一个新闻网站的功能.从网页上可以清楚的根据分类查找到需要的文章,并可点击文章查看详细内容,由于XML文件本身的复杂性和多功能性,程序只能对指定标签的XML文件进行操作,不能实现对复杂功能的识别.七、结论在本次实验中对网页的知识包括XML 和HTML 有了初步的了解及简单的掌握.通过这次实验加强对栈数据类型的应用能里,能运用栈的知识来解决实际复杂的问题,加强了对文件和字符串操作的能力.提高了自学和动手编程能力,为今后学习网站相关内容打下了基础.八、附录开发语言及编程环境:开发语言: C++编译环境: MinGW集成开发环境: Codeblocks九、参考文献1.廖明宏, 郭福顺,张岩,李秀坤,《数据结构与算法》,高等教育出版社。