第7次实验题目与报告书-软件111-112

合集下载

软件工程试验报告

软件工程试验报告

软件工程试验报告第一篇:软件工程试验报告实验项目名称:需求分析(所属课程:软件工程概论)1.实验目的1.选择要设计的系统,使用UML进行需求分析,了解所要完成系统的功能需求,性能需求,接口需求等。

2.学习实使用Rational Rose 或其它软件工程工具绘制用例图、活动图。

2.实验内容使用Rose 绘制系统的用例图。

1.Rational Rose介绍Rational Rose是基于UML而产生的,是软件开发过程中的不可或缺的一个建模工具。

(1)Rational Rose的特点:λ支持多种语言,如Ada、CORBA、Visual Basic、Java等;λ支持模型的Internet发布;λ可以生成简单、清晰且定制灵活的文档;λ双向工程保证了模型和代码高度一致;λ支持逆向工程,建立代码框架;λ支持多种关系型数据库的建模;λ从需求分析到测试,在整个软件生命周期中,都为团队开发提供强有力的支持。

(2)Rational Rose的作用λ整个开发团队可以使用用例图,来获得一个系统高层次的视图,并且可以协商项目的范畴;λ项目经理可以使用用例图和文档,把项目分解成便于管理的多个模块;λ系统分析员和客户在看到用例规格描述文档的时候,就可以明白系统将会提供什么样的功能;λ技术编写者在看到用例规格描述文档时,就可以着手编写用户手册和培训计划;λ系统分析员和软件开发者在看到时序图和协作图时,就可以明白整个系统的逻辑流程、对象以及对象之间的消息2.安装Rational Rose ①双击Rational Rose 2007的安装程序,进入安装界面;按照系统提示一步一步完成系统的安装。

其中在选择安装产品时,选择“Rational Rose Enterprise Edition”;并且在设置创建程序位置时,选择创建一个本地的应用程序而非网络的,即选择“Desktop installation from CD”。

②安装成功,进入Rational Rose界面,如图1-1所示。

MATLAB综合实验报告

MATLAB综合实验报告

实验七综合实验一.实验目的能综合利用信号处理的理论和Matlab工具实现对信号进行分析和处理(1)熟练对信号进行时域和频域分析;(2)熟练进行滤波器设计和实现;(3)掌握对信号的滤波处理和分析。

二.实验原理设计并实现滤波器对信号进行分析和处理是信号处理课程学习的主要内容。

通过对信号进行频谱分析,能发现信号的频率特性,以及组成信号的频率分量。

对信号进行滤波处理,能改善信号的质量,或者为数据处理(如传输,分类等)提供预处理,等。

本次实验是对特定信号进行分析并进行滤波处理,需要综合应用之前的实验内容,主要有以下几个方面。

(1)离散时间信号与系统的时域分析Matlab为离散时间信号与系统的分析提供了丰富且功能强大的计算函数和绘图分析函数,便于离散时间信号和系统的时域表示和分析。

(2)信号的频域分析信号处理课程主要学习了离散信号和系统的频域分析方法与实现,以及滤波器的设计与实现。

离散信号与系统的频域分析包括DTFT、DFT、Z变换等,FFT则是DFT的快速实现。

用Matlab分析信号的频谱可以用freqz函数或者FFT函数。

(3)滤波器设计滤波器的设计首先要确定滤波器的类型,即低通、高通、带通还是带阻。

滤波器的边缘频率可以通过对信号的频谱分析得到,滤波器的幅度指标主要有阻带最小衰减As和通带最大衰减Ap。

一般来说,As越大,对截止通过的频率分量的衰减越大;Ap越小,对需要保留的频率分量的衰减越小。

因此,As越大,Ap越小,滤波器的性能越好,但随之而来,滤波器的阶数越大,实现的代价(包括计算时间和空间)越大。

由此,滤波器的设计需要对滤波器性能和实现代价进行均衡考虑。

另外根据冲激响应的长度可以分为IIR和FIR两种类型。

两种类型的滤波器各有特点。

用FIR滤波器可以设计出具有严格线性相位的滤波器,但在满足同样指标的条件下,FIR滤波器的阶数高于IIR滤波器。

Matlab为各种类型的滤波器的设计提供了丰富的函数,可以借助这些函数方便地设计出符合要求地滤波器。

软件课程设计实验报告(3篇)

软件课程设计实验报告(3篇)

软件课程设计实验报告(3篇)【导语】软件课程设计试验报告怎么写出亮点?整理了3篇优秀的《软件课程设计试验报告》通用版范文,有规范的开头结尾写法和标准的书写格式。

是您写出深受大家欢迎的综合报告抱负参考模板,盼望对您有所关心。

【第1篇】软件课程设计试验报告一、目的、要求通过该课程设计要使同学树立起剧烈的工程化意识,用工程化思想和方法开发软件。

切实体会出用软件工程的方法开发系统与一般程序设计方法的不同之处,同学在对所开发的系统进行软件方案、需求分析、设计的基础上,实现并测试实际开发的系统。

通过一系列规范化软件文档的编写和系统实现,使同学具备实际软件项目分析、设计、实现和测试的基本力量。

二、主要内容要求同学把握软件工程的基本概念、基本方法和基本原理,为将来从事软件的研发和管理奠定基础。

每个同学选择一个小型软件项目(内容参照《计算机综合实践指导》,宋雨等编著,清华高校出版社出版),根据软件工程的生命周期,完成软件方案、需求分析、软件设计、编码实现、软件测试及软件维护等软件工程工作,并按要求编写出相应的`文档。

详细的方法可以选用传统的软件工程方法或者面对对象的方法,开发环境和工具不限。

三、进度方案略四、设计成果要求1.至少提交4个文档,包括软件方案、软件需求规格说明书、软件设计说明书、软件测试方案,要求文档格式规范、规律性强(可参考《计算机综合实践指导》中给出的要求及格式)、图表规范;2.独自实现了系统的某些功能,基本达到了要求的性能,经过了测试,基本能运行。

五、考核方式(1)提交的文档规范,工作量大,文档规律性强、正确,按《计算机综合实践指导》标准考核(附《软件工程课程设计》试验报告评分表)占60%(2)系统验收、讲解、答辩占25% (3)考勤占15%软件课程设计试验报告【第2篇】应用软件课程设计报告计算机是一门技术性、工程性和应用性很强的学科,教育部高等学校计算机科学与技术教学指导委员会的进展战略讨论报告中也指出:计算机专业的人才应当被分为科学型、工程型、应用型三类,而绝大多数应当是工程型和应用型的。

第七次实验报告

第七次实验报告

第七次实验报告在科学的探索之路上,实验是我们获取真理、验证假设的重要手段。

每一次实验都像是一场未知的冒险,充满了挑战与惊喜。

而这第七次实验,更是给我留下了深刻的印象。

这次实验的主题是关于物质的化学反应速率。

实验的目的是探究不同因素对化学反应速率的影响,并通过精确的测量和观察,得出具有科学性和可靠性的结论。

实验开始前,我们进行了充分的准备工作。

首先,对实验所需的仪器和药品进行了仔细的检查和清点,确保没有遗漏和损坏。

我们这次用到的仪器有容量瓶、量筒、温度计、秒表、玻璃棒等等,而药品则包括了常见的化学试剂,如盐酸、氢氧化钠溶液等。

实验过程中,我们设计了多组对比实验。

第一组是改变反应物的浓度,通过控制加入的试剂的量,来观察反应速率的变化。

第二组是改变反应的温度,利用恒温槽将反应体系分别设置在不同的温度条件下,记录反应完成所需的时间。

第三组则是加入催化剂,观察其对反应速率的加速效果。

在改变反应物浓度的实验中,我们发现,随着反应物浓度的增加,反应速率明显加快。

以盐酸和氢氧化钠的中和反应为例,当盐酸的浓度增大时,与相同量的氢氧化钠反应的速度显著提升,溶液的温度升高也更为迅速,这表明反应放出的热量更多,反应进行得更剧烈。

而在改变温度的实验中,结果更是一目了然。

温度升高,分子的运动速度加快,有效碰撞的几率增加,从而大大提高了反应速率。

当我们将反应体系的温度从室温提升到 50 摄氏度时,原本需要几分钟才能完成的反应,在几十秒内就接近完成。

在加入催化剂的实验里,催化剂的神奇作用让我们惊叹不已。

它就像是化学反应中的“助推器”,能够显著降低反应的活化能,使反应能够在更温和的条件下快速进行。

然而,实验并非一帆风顺。

在操作过程中,我们也遇到了一些问题。

比如,在测量反应时间时,由于秒表的操作不够熟练,导致记录的数据出现了一些误差。

还有在配置溶液的过程中,因为对量具的读数不准确,使得溶液的浓度与预期有所偏差。

但这些问题并没有让我们气馁,反而激发了我们更加严谨和认真的态度。

软件测试实验报告

软件测试实验报告

软件测试实验报告一、引言。

本实验旨在通过对软件进行测试,验证软件的功能和性能是否符合设计要求,以及发现和修复软件中可能存在的问题,提高软件质量,保证软件的稳定性和可靠性。

二、实验目的。

1. 了解软件测试的基本概念和方法;2. 掌握软件测试的基本流程和步骤;3. 熟悉软件测试工具的使用;4. 提高软件测试的实际操作能力。

三、实验内容。

1. 软件功能测试,对软件的各项功能进行测试,验证软件是否能够按照设计要求正常运行,并且达到预期的功能效果。

2. 软件性能测试,对软件的性能进行测试,包括响应时间、并发性能、负载能力等方面的测试,验证软件在不同条件下的性能表现。

3. 软件安全测试,对软件的安全性进行测试,包括数据加密、用户权限管理、漏洞扫描等方面的测试,验证软件在安全性方面的稳定性和可靠性。

四、实验步骤。

1. 确定测试目标和测试范围,编写测试计划和测试用例;2. 进行软件功能测试,记录测试结果并分析问题;3. 进行软件性能测试,记录测试数据并分析性能指标;4. 进行软件安全测试,发现安全隐患并提出改进建议;5. 汇总测试报告,总结测试过程和测试结果。

五、实验结果与分析。

经过本次实验,我们对软件进行了全面的测试,发现了一些功能上的问题,比如部分功能无法正常使用,界面显示不正确等;在性能测试中,发现了软件在高负载情况下响应时间过长的问题;在安全测试中,发现了一些安全隐患,比如数据传输过程中存在泄露风险等。

针对以上问题,我们已经提出了相应的改进建议,并在测试报告中进行了详细说明。

在今后的软件开发过程中,我们将更加重视软件测试工作,提高软件质量,保证软件的稳定性和可靠性。

六、结论。

通过本次实验,我们深刻认识到软件测试在软件开发过程中的重要性,只有经过充分的测试,才能保证软件的质量和稳定性。

我们将继续加强软件测试工作,提高测试水平,为软件的稳定运行和用户体验提供保障。

七、参考文献。

[1] 软件测试基础.杨林著.北京,清华大学出版社,2009.[2] 软件测试与质量保证.刘宏著.北京,电子工业出版社,2010.。

1-7次数据结构实验报告

1-7次数据结构实验报告

实验1(2学时)实验名称:线性表及其应用实验内容:1.实现顺序表的删除操作;2.实现单链表的删除操作;3.编程实现单链表相同数据元素删除操作;4.实现带有头结点的单链表的逆置操作。

实验目的与要求:1.深刻理解线性表的抽象数据类型;2.熟练掌握线性表的两种存储方式的基本操作的实现。

实验环境或器材、原理与说明:装有VC++6.0的PC机实验过程(步骤)或程序代码:(必须有)实验预习过程中的问题:(必须有)实验结果与分析:(必须有)实验体会与建议:(必须有)实验2(2学时)实验名称:栈和队列及其应用实验内容:1.实现顺序栈和链栈的出栈、取栈顶元素操作;2.实现循环队列和链队列的出队、取队头元素操作;3.设计算法编程实现,利用循环队列生成杨辉三角形。

实验目的与要求:1.掌握栈的基本操作;2.掌握队列的基本操作;3.会使用栈和队列的基本操作解决较复杂的应用题。

实验环境或器材、原理与说明:装有VC++6.0的PC机实验过程(步骤)或程序代码:(必须有)实验预习过程中的问题:(必须有)实验结果与分析:(必须有)实验体会与建议:(必须有)实验3(2学时)实验名称:串实验内容:1.使用串的堆分配存储方法实现串的基本操作;2.编写程序实现:求子串在主串中的位置,并置换子串。

实验目的与要求:1.了解串的操作特性;2.掌握串的基本操作以顺序存储方式进行存储的实现。

实验环境或器材、原理与说明:装有VC++6.0的PC机实验过程(步骤)或程序代码:(必须有)实验预习过程中的问题:(必须有)实验结果与分析:(必须有)实验体会与建议:(必须有)实验4(4学时)实验名称:树及其应用实验内容:1.完成指导书实训内容“1调试验证”部分;2.创建一颗二叉树,并按其形状显示输出;3.按照先序、中序和后序顺序分别对给定二叉树线索化。

实验目的与要求:1.理解树、二叉树的含义与性质,树和二叉树的存储结构;2.掌握二叉树的三种遍历方法和相应算法。

软件过程实验报告总结(3篇)

软件过程实验报告总结(3篇)

第1篇一、实验背景随着信息技术的飞速发展,软件工程已成为计算机科学的重要分支。

软件过程是软件生命周期中各个阶段的活动,它包括需求分析、设计、编码、测试和维护等环节。

为了提高软件开发的效率和软件质量,软件过程管理显得尤为重要。

本实验旨在通过实践操作,加深对软件过程的理解,掌握软件过程管理的相关知识。

二、实验目的1. 理解软件过程的各个阶段及其相互关系;2. 掌握软件过程管理的基本方法;3. 提高软件开发的效率和质量;4. 培养团队协作能力。

三、实验内容1. 软件过程概述首先,我们对软件过程进行了概述,介绍了软件过程的定义、特点、作用以及软件过程模型。

通过学习,我们了解到软件过程是软件开发的基本框架,是保证软件开发质量的关键。

2. 需求分析需求分析是软件开发的第一步,也是最为关键的一步。

我们通过案例学习,了解了需求分析的方法和技巧。

在实验中,我们采用用户故事、用例图等方法对需求进行分析,确保需求完整、一致、可测试。

3. 设计设计是软件开发的核心环节,包括系统设计、模块设计和数据库设计等。

在实验中,我们学习了设计模式、架构风格等设计原则,通过UML图对系统进行设计,确保系统的可扩展性和可维护性。

4. 编码编码是软件开发的具体实施阶段,也是实现设计的过程。

我们学习了编程语言、代码规范等知识,通过编写代码实现设计。

在实验过程中,我们注重代码的可读性、可维护性和可测试性。

5. 测试测试是保证软件质量的关键环节。

我们学习了测试方法、测试用例设计等知识,通过编写测试用例对软件进行测试,确保软件满足需求。

6. 维护维护是软件生命周期的重要组成部分,包括软件的升级、修复、优化等。

我们学习了维护方法,了解了软件维护的重要性。

四、实验过程1. 组建团队我们将学生分成若干小组,每个小组负责完成一个软件项目的开发。

在小组内部分工合作,明确各自职责。

2. 需求分析各小组对项目进行需求分析,编写需求规格说明书,确保需求完整、一致、可测试。

数据库实验(实验七数据查询)实验报告答案

数据库实验(实验七数据查询)实验报告答案

实验7数据查询【实验内容】7.1单表查询1、指定列或全部列查询1) 查询S表中全体学生的详细记录use jxsk select * from S出言岂select - f Tdtt s|.1结杲SEX AGE DEPT NATEVEJ_a,i soi王青山19计算机NULL2SI—赵亦17软件MULL 35218计算机NULL4S3弓綽明胃IS信息NULL554李四21包动ft NULL&S519软件NULL756昊丽20计算机NULL8S7范思明女ie NULL9S820自动化NULL10S919枫牛NULL2) 查询所有学生的姓名及其岀生年份。

use jxsk select SN, 2012 - AGEfrom S1「王諭】1&932赵亦1995J钱尔15944號慣明隔&李四1S516周展憫15537昊丽13828范思明1994S?«1S9210张海涛2、按条件查询及模糊查询1)查询考试成绩有不及格的学生的学号。

use jxsk selectdistinct SNOfrom SCwhere SCORE<602)查询年龄在20 —23岁之间的学生的姓名、系名和年龄use jxsk select SN,DEPT, AGEfrom Swhere AGE>=20 and AGE<= 30□ us* select 5N, DEET, troni 5L AGE>=20 ard AGE<-30V结果J消息| SH DEPT ,<SE1[ SS'J自动化212昊丽计算机203补珊自动化203)查询姓李的学生的姓名、学号和性别。

use jxsk select SN, SNO, SEXfrom S where SNlike '李%'□ use jxsk select ^NO f SEX from 5 wriere EE 丄是'李虽「Array4) 查询名字中第二个字为明”字的男学生的姓名和系名use jxsk select SN, DEPTfrom Swhere SNlike '_% 明’and SEX='男’SN DEPTi !信息h^iiiiauaB in KI ■■■■■&■■■■#3、对查询结果排序1) 查询信息系、计算机系学生的姓名、系名,结果按系名升序,按姓名降序排序。

13级第七次实验

13级第七次实验

第7次实验实验目的:1.递归函数设计。

2.数组的逐元素访问。

实验题如下(共3道题):1.“波浪数”是一个正整数,它的奇数列数字相等,偶数列数字也相等,但奇数列数字不等于偶数列数字(最左列数字为第一列)。

如6,47,1212和939是波浪数,372,88,555不是波浪数。

设计函数int isWaveNum(int num),判断给定的正整数num是否是波浪数。

如果是波浪数,返回值1;否则返回值0.设计main函数,从键盘接收一个正整数,输出波浪数判定结果。

假设用户输入的肯定是满足要求数字,程序不需要对异常输入进行处理。

请写出完整C语言程序。

输入与输出说明:第一行:输入一个正整数。

第二行:输出判定结果:YES或NO,换行。

程序运行效果:Sample 1:9↙YES↙Sample 2:23↙YES↙Sample 3:6666↙NO↙Sample 4:75757↙YES↙Sample 5:985↙NO↙2.递归算法设计。

假定正整数num从“右边”开始为第1列,设计递归函数int isOddAscEvenDesc(int num),判断num“从右至左”奇数列是否递增,并且偶数列是否递减。

如果是,返回值1;否则返回值0.设计main函数,从键盘接收一个正整数,输出计算结果。

假设用户输入肯定正确,程序不需要对异常输入进行处理。

请写出完整C语言程序。

输入与输出说明:第一行:输入一个正整数。

第二行:输出判定结果:YES或NO,换行。

程序运行效果:Sample 1:8↙YES↙Sample 2:23↙YES↙Sample 3:293761↙YES↙Sample 4:1413↙NO↙Sample 5:62718↙NO↙3.实验7第1题(数组)。

但需要求平均成绩、最高成绩和最低成绩。

程序运行效果如下:Please input the number of the courses:5↙Please input 5 scores:80 75 67 90 97↙The average score is:81.80The max score is:97The min score is:67其他的题目同学们可以自行选择练习作业命名要求:班级号-班内序号-作业次数-题目序号-姓名.c班级号:1~19,班内序号:1~31,作业次数:1~12,题目序号:1~4。

计算机实验基础七实验报告

计算机实验基础七实验报告

计算机实验基础七实验报告一、实验目的本次计算机实验基础七的主要目的是通过实践操作,深入了解和掌握计算机系统中的某些关键技术和应用,提高我们的实际操作能力和问题解决能力。

二、实验环境本次实验所使用的计算机配置为:处理器_____,内存_____,操作系统_____。

实验中所用到的软件包括_____等。

三、实验内容及步骤(一)文件管理与操作1、创建文件夹首先,在指定的磁盘分区中创建一个新的文件夹,命名为“实验七文件”。

通过右键菜单选择“新建”>“文件夹”,然后输入相应的名称。

2、文件复制与移动将事先准备好的一些文本文件和图片文件复制到新建的文件夹中。

复制操作通过选中文件,按下 Ctrl+C 组合键,然后在目标文件夹中按下 Ctrl+V 组合键完成。

移动文件则使用 Ctrl+X 和 Ctrl+V 组合键。

3、文件重命名对文件夹中的部分文件进行重命名操作,以更好地识别和分类文件。

选中文件后,右键选择“重命名”,输入新的文件名。

(二)系统设置与优化1、显示设置调整进入系统的显示设置,调整屏幕分辨率、刷新率和色彩深度,观察不同设置对显示效果的影响。

2、电源管理设置根据使用需求,设置计算机的电源计划,如平衡、节能或高性能模式,并调整休眠和待机时间。

3、系统更新与安全设置检查系统更新,确保操作系统处于最新状态。

同时,设置防火墙和杀毒软件,增强系统的安全性。

(三)网络配置与管理1、 IP 地址设置手动设置计算机的 IP 地址、子网掩码、网关和 DNS 服务器地址,了解网络参数的配置方法。

2、网络共享设置在局域网中,设置共享文件夹,允许其他计算机访问和读写共享文件,实现资源共享。

3、网络故障排查模拟网络连接故障,如网线松动、IP 地址冲突等,通过命令提示符中的相关命令(如 ping、ipconfig 等)进行故障排查和解决。

四、实验中遇到的问题及解决方法(一)文件操作问题在文件复制过程中,出现了文件丢失的情况。

经过仔细检查,发现是由于复制操作未完成就中断导致的。

Labview实训报告(合集五篇)

Labview实训报告(合集五篇)

Labview实训报告(合集五篇)第一篇:Labview实训报告专业软件实训院系:机械与汽车工程学院专业:测控技术与仪器姓名:学号:班级:指导老师:目录第1章绪论‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥1 1.1 LabVIEW的介绍‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥1 1.2实训的目的及意义‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥1 第2章 LabVIEW实训内容‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥2 2.1 LabVIEW软件的基础操作‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥2 2.1.1 基于模板打开一个VI并运行‥‥‥‥‥‥‥‥‥‥2 2.1.2 基于模板创建一个VI ‥‥‥‥‥‥‥‥‥‥‥‥‥2 2.2 基础实训‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥3 2.2.1 通过循环创建二维数组‥‥‥‥‥‥‥‥‥‥‥‥‥3 2.2.2 二维数组与电子表格字符串相互转换‥‥‥‥‥‥‥3 2.2.3强度图(Intensity Graph)的设计‥‥‥‥‥‥‥‥4 2.2.4三维曲面图的设计‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥5 2.2.5 XY曲面图的设计‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥6 2.3 强化实训‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥7 2.3.1 简易滤除信号噪声的设计‥‥‥‥‥‥‥‥‥‥‥‥7 2.3.2 曲面积分的设计‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥8 2.3.3 对高斯噪声的统计分析‥‥‥‥‥‥‥‥‥‥‥‥‥10 第3章基于LabVIEW与声卡的音频信号采集系统与分析‥‥‥‥14 3.1 基于声卡的音频信号采集系统实现‥‥‥‥‥‥‥‥‥‥14 3.2 音频信号处理与分析‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥15 3.3 声卡采集系统测试与分析‥‥‥‥‥‥‥‥‥‥‥‥‥‥15 总结‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥17第1章1.1 LabVIEW的介绍绪论LabVIEW是Laboratory Instrument Engineering Workbench(实验室虚拟仪器集成环境)的简介,是由美国国家仪器(NI , National Instruments)公司开发的、优秀的商用图形化编程开发平台。

数据结构设计说明书书

数据结构设计说明书书

摘要数据结构是研究与数据之间的关系,我们称这一关系为数据的逻辑结构,简称数据结构。

当数据的逻辑结构确定以后,数据在物理空间中的存储方式,称为数据的存储结构。

相同的逻辑结构可以具有不同的存储结构,因而有不同的算法。

本次课程设计,程序中的数据采用“树形结构”作为其数据结构。

具体采用的是“二叉排序树”,并且使用“一维数组”来作为其存储结构。

一维数组顺序表存储结构是用一组地址连续的存储单元依次自上而下、自左而右存储完全二叉树上的结点元素;本课程设计实现了二叉排序树的创建、中序遍历、计算二叉排序树的平均查找长度和删除二叉排序树中某个结点。

本课程主要介绍了本课题的开发背景,所要完成的功能和开发的过程。

重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。

关键词:二叉排序树的实现;C语言;数据结构;线性表;顺序表;中序遍历。

目录摘要 (I)1 课题背景的介绍 (1)1.1 课题背景 (1)1.2 目的 (1)2 需求分析 (1)2.1课程设计题目、任务及要求 (1)2.2课程设计思想 (2)3 系统总体设计 (3)3.1 系统模块划分 (3)3.2 二叉排序树的生成过程 (3)3.3 主要功能模块设计 (3)4 系统详细设计 (5)4.1 主函数菜单模块 (5)4.2 查找模块 (6)4.3 插入模块 (7)4.4 中序遍历模块 (8)4.5删除模块 (9)5 系统连编与运行 (11)6 总结 (12)参考文献 (13)附录 (14)A)课题背景的介绍1.1课题背景随着经济的迅速发展,各行各业纷纷应用计算机数据信息管理。

当然数据信息是一个很笼统的概念,随着现代信息的大量增加,其处理难度也越来越大,如何对各个数据信息进行更好的树立,这就是我们研究这个课题的目的。

在计算机迅速发展的今天,将计算机这一信息处理器应用于实际数据问题问题的信息计算已是势必所然,而且这也将数据信息处理带来前所未有的改变。

采用计算机对数据的信息处理是信息科学化和现代化的重要标志,它也给各行各业带来了明显的经济效益。

软件技术试验报告题目及格式

软件技术试验报告题目及格式
1.1.启动VC++6.0执行NEWProject新建菜单项,新建一个MFCAppWizard(Exe),输入工程名“文字滚动程序”,点击“OK”进入MFC AppWizard向导。选择单文档应用程序点击“完成”按钮。
2.创建菜单资源,添加“启动”“停止”两个子菜单。
3.在资源文件添加图标,以文本方式打开.rc文件更改图标,在关于对话框编辑项目信息
课 程 设 计 报 告
课程名称:软件开发技术
学院:信息电子技术
专业:计算机科学与技术
学号:
学生姓名:
指导教师:
2010年7月1日
设计题目:文字滚动程序
设计目的与及意义:设计一个窗口,写一行文字,内容自己选取,该行文字从窗口中不停从左向右滚动,而且每显示一轮改变一次颜色与一种字体,一个周期为四种颜色:红、绿、黄、蓝;字体为宋体、楷体、仿宋体、黑体。
指导教师评语:
设计题目:与数据库连接的电话本
设计目的与及意义:设计一个通通讯录应用程序,数据库用access定义,有姓名、性别、电话号码等字段;用ODBC连接数据库,能够以表单形式浏览数据,也能够以记录单形式查看每条记录,可以对记录进行最基本的处理:查看前一条、后一条、第一条、最后一条记录,插入、删除、修改记录。掌握ODBC接口配置方法及使用ODBC接口的数据库应用程序设计方法
参考文献:
[1]任哲编著.MFC Windows应用程序设计(第二版).北京:清华大学出版
社,2007.7
设计结果说明:
屏幕上有一行文字,当选择菜单->查看->启动时该行文字可以从窗口中不停从左向右滚动,而且每显示一轮改变一次颜色与一种字体,一个周期为四种颜色:红、绿、黄、蓝;字体为宋体、楷体、仿宋体、黑体;当选择菜单->查看->停止时,当前文字停留在屏幕上。

工程实验报告查询软件(3篇)

工程实验报告查询软件(3篇)

第1篇一、引言随着科技的飞速发展,工程实验在科学研究和技术创新中扮演着越来越重要的角色。

实验报告是记录实验过程、结果和数据分析的重要文件。

为了提高实验报告的管理效率,减少人工查找和整理的时间,我们开发了一款工程实验报告查询软件。

本报告将详细描述该软件的设计、实现过程以及测试结果。

二、软件需求分析1. 功能需求- 实验报告录入:允许用户录入实验报告的基本信息,如实验名称、实验日期、实验人员等。

- 实验报告查询:根据不同的查询条件(如实验名称、实验人员、实验日期等)快速检索实验报告。

- 实验报告导出:支持将查询到的实验报告导出为Excel或PDF格式。

- 数据备份与恢复:提供数据备份和恢复功能,确保数据安全。

2. 性能需求- 查询响应时间:查询操作应在3秒内完成。

- 数据存储容量:支持至少10000份实验报告的存储。

3. 用户界面需求- 界面友好:界面简洁明了,易于操作。

- 操作便捷:提供直观的操作流程,减少用户的学习成本。

三、软件设计1. 系统架构设计- 采用B/S(浏览器/服务器)架构,方便用户通过浏览器访问和使用系统。

- 后端采用Java语言,利用Spring Boot框架搭建,保证系统的稳定性和可扩展性。

- 数据库采用MySQL,确保数据存储的安全性和可靠性。

2. 数据库设计- 实验报告表:存储实验报告的基本信息,如实验名称、实验日期、实验人员等。

- 用户表:存储用户信息,如用户名、密码、角色等。

3. 功能模块设计- 实验报告录入模块:允许用户录入实验报告的基本信息。

- 实验报告查询模块:根据不同的查询条件检索实验报告。

- 实验报告导出模块:支持将查询到的实验报告导出为Excel或PDF格式。

- 数据备份与恢复模块:提供数据备份和恢复功能。

四、软件实现1. 前端实现- 使用HTML、CSS和JavaScript编写用户界面,实现与用户的交互。

- 使用jQuery实现页面动态效果和异步请求。

2. 后端实现- 使用Java语言编写后端代码,实现业务逻辑。

1-7次实验报告模板

1-7次实验报告模板

实验名称:TURBOC环境认识实验时间:_____3.16____________实验地点:_____5423____________【实验目的】掌握编辑、编译、连接和运行一个C程序的基本过程。

【实验内容】一、C程序上机步骤:1.启动TC2(1)桌面上有的,双击(2)资源管理器C:\-->Turboc2→Tc.exe界面介绍2.编辑、保存File→load→输入文件名File→save 或File →write to3.编译、连接(1)compile→compile to objCompile→link EXE file(2) compile -->Build All4.运行(1)Run→run(2)Ctrl+F95.看结果(1)Run→user screen(2) ALT+F56.退出TC(1)File→Quit1(2)ALT+X二、主要内容:输入C语言程序设计教材中例题,熟悉C语言的开发环境。

1、输出字符串:I want to study English程序源代码:#include "stdio.h"main (){printf ("I want to study English. \n");}程序运行结果:I want to study English.2、求整数3和1的和。

程序源代码:#include "stdio.h"main(){int x,y,z; /*变量x和y分别存放3和1,变量z存放和*/ x=3;y=1;z=x+y;printf( " %d+%d=%d\n",x,y,z);}程序运行结果:3+1=43、从键盘输入任意两个整数,输出两数和。

程序源代码:#include "stdio.h"main(){int x,y,z;scanf("%d,%d",&x,&y); /*变量x和y分别存放输入的两个数*/z=x+y;printf("%d+%d=%d\n",x,y,z);}程序运行结果:从键盘上输入:12,2012+20=32【实验总结】通过这次实验掌握了……………………,在上机过程中出现………………问题,我是……怎样解决的,我有……什么收获。

第七次实验报告 Swing及事件

第七次实验报告  Swing及事件

辽宁工程技术大学上机实验报告实验要求:(1)组件在窗口中的位置尽量按要求摆放。

(2)响应窗口的环比事件。

(3)实验四不需要写在报告上。

实验内容:(1)设计一个简易计算器,在“操作数”标签右侧的两个文本框输入操作数,当单击“+,-,*,/”按钮时,对两个操作数进行运算并将结果填到“结果”标签右侧的文本框中。

程序:import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.text.DecimalFormat;import javax.swing.*;import javax.swing.border.LineBorder;import javax.swing.text.JTextComponent;class MyApp extends JFrame{JTextField b1=new JTextField("0",12);JTextField b2=new JTextField("0",12);JTextField b3=new JTextField("0",12);JTextField b4=new JTextField("0",12);MyApp(){super("简易计算器");Container c=getContentPane();c.setLayout(new FlowLayout());JPanel a1 =new JPanel(new FlowLayout());JPanel a2 =new JPanel(new FlowLayout());JPanel a3 =new JPanel(new FlowLayout());JPanel a4 =new JPanel(new FlowLayout());JPanel a5 =new JPanel(new FlowLayout());JLabel jb1 =new JLabel("数字一:");JLabel jb2 =new JLabel("数字二:");JLabel jb3 =new JLabel("操作:");JLabel jb4 =new JLabel("结果:");JButton c1=new JButton("+");JButton c2=new JButton("-");JButton c3=new JButton("*");JButton c4=new JButton("/");JButton c5=new JButton("重置");a1.add(jb1); a1.add(b1);a2.add(jb2); a2.add(b2);a3.add(jb3); a3.add(c1); a3.add(c2); a3.add(c3); a3.add(c4);a4.add(jb4); a4.add(b4);a5.add(c5);c.add(a1);c.add(a2);c.add(a3);c.add(a4);c.add(a5);c1.addActionListener(new ActionListener(){ p ublic void actionPerformed(ActionEvent e){ E1(e);}});c2.addActionListener(new ActionListener(){ p ublic void actionPerformed(ActionEvent e){ E2(e);}});c3.addActionListener(new ActionListener(){ p ublic void actionPerformed(ActionEvent e){ E3(e);}});c4.addActionListener(new ActionListener(){ p ublic void actionPerformed(ActionEvent e){ E4(e);}});c5.addActionListener(new ActionListener(){ p ublic void actionPerformed(ActionEvent e){ E5(e);}});setSize(270,250);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}protected void E1(ActionEvent e){double z1=Double.parseDouble(b1.getText());double z2=Double.parseDouble(b2.getText());DecimalFormat f1=new DecimalFormat("#.000");String s1=f1.format(z1+z2);b4.setText(s1);}protected void E2(ActionEvent e){double z1=Double.parseDouble(b1.getText());double z2=Double.parseDouble(b2.getText());DecimalFormat f1=new DecimalFormat("#.000");String s1=f1.format(z1-z2);b4.setText(s1);}protected void E3(ActionEvent e){double z1=Double.parseDouble(b1.getText());double z2=Double.parseDouble(b2.getText());DecimalFormat f1=new DecimalFormat("#.000");String s1=f1.format(z1*z2);b4.setText(s1);}protected void E4(ActionEvent e){double z1=Double.parseDouble(b1.getText());double z2=Double.parseDouble(b2.getText());DecimalFormat f1=new DecimalFormat("#.000");if(z2!=0){String s1=f1.format(z1/z2);b4.setText(s1);}else{b4.setText("Error!");}}protected void E5(ActionEvent e){b1.setText("0");b2.setText("0");b4.setText("0");}public static void main(String args[]){new MyApp();}}结果:(加法)(2)编写文本移动程序,窗口中有两个文本区和两个按钮,文本区分别位于窗口的左边和右边区域,2个按钮位于窗口的中间区域,当单击“→”按钮时,将左边文本区选中的内容添加到右侧的文本区的末尾。

软件测试实验报告

软件测试实验报告

《软件测试技术》实验报告与习题册2014 / 2015 学年第2学期系别计算机学院专业班级一班姓名指导教师目录实验一:基于白盒测试的用例设计与验证(一)一.实验目的(1)熟悉Eclipse开发环境(2)掌握Java语言的基本语法,能够利用Java实现简单的程序开发(3)熟悉白盒测试基本原理(4)掌握白盒测试的逻辑覆盖法,能够依据语句覆盖、判定覆盖、条件覆盖、判定\条件覆盖、条件组合覆盖的原理进行相应测试用例的设计工作。

二.实验内容(1)选择一门语言,完成指定的单元程序开发。

#include<stdio.h>void main(){int m,n,p,q;printf("please input m,n,p,q:\n");scanf("%d,%d,%d,%d",&m,&n,&p,&q);if(m>0&&n<6){m=n+3;n=n*2;}if(p>5||q<0){p=2*q+5;q++;}printf("输出的四个数是:%d,%d,%d,%d\n",m,n,p,q);return ;}(2)分别依据白盒测试逻辑覆盖法中的语句覆盖、判定覆盖、条件覆盖、判定\条件覆盖、条件组合覆盖的原理设计相应的测试用例。

(3)根据给定的流程图,实际运行测试用例,检测程序的实现是否正确。

三.程序流程图m > 0 AND n < 6m = n + 3n = n * 2p > 5 OR q < 0p = 2 * q + 5q ++打印m 、n 、p 、q结束开始TTFF运行结果 测试用例取值条件 具体取值条件 m=1,n=2,p=6,q=-1 T1,T2,T3,T4 m>0,n<6,p>5,q<0 m=2,n=3,p=4,q=1 T1,T2,F3,F4 m>0,n<6,p<5,q>0 m=-1,n=7,p=7,q=-2 F1,F2,T3,T4 m<0,n>6,p>5,q<0 m=-2,n=4,p=3,q=3F1,F2,F3,F4 m<0,n<6,p<5,q>0测试用例具体取值条件判定条件输入:{m=3,n=2,p=9,q=-3} 输出:{m=5,n=4,p=-1,q=-2} m>0,n<6,p>5,q<0 m>0 and n<6p>5 or q<0输入:{m=-4,n=10,p=2,q=4} 输出:{ m=-4,n=10,p=2,q=4} m<0,n>6,p<5,q>0 m<0 and n>6p<5 or q>0测试用例取值条件具体取值条件T1,F2,T3,F4 m>0,n>6,p>5,q>0 输入:{m=1,n=7,p=6,q=2}输出:{ m=1,n=7,p=9,q=3}输入:{m=-3,n=4,p=1,q=-1}F1,T2,F3,T4 m<0,n<6,p<5,q<0 输出:{ m=-3,n=4,p=3,q=0}测试用例取值条件具体取值条件T1,T2,T3,T4 m>0,n<6,p>5,q<0 输入:{m=1,n=2,p=6,q=-1}输出:{ m=5,n=4,p=3,q=0}输入:{m=-1,n=9,p=4,q=2}F1,F2,F3,F4 m<0,n>6,p<5,q>0 输出:{ m=-1,n=9,p=4,q=2}测试用例覆盖条件具体取值条件T1,T2,T3,T4 m>0,n<6,p>5,q<0 输入:{m=1,n=2,p=6,q=-1}输出:{ m=5,n=4,p=3,q=0}T1,F2,T3,F4 m>0,n>6,p>5,q>0 输入:{m=1,n=7,p=6,q=1}输出:{ m=1,n=7,p=7,q=2}输入:{m=-1,n=2,p=3,q=-1}F1,T2,F3,T4 m<0,n<6,p<5,q<0 输出:{ m=-1,n=2,p=3,q=0}F1,F2,F3,F4 m<0,n>6,p<5,q>0 输入:{m=-1,n=7,p=3,q=1}输出:{ m=-1,n=7,p=3,q=0}四.实验内容中遇到的问题、解决方法和体会。

c#实习7报告

c#实习7报告

实验七:流程控制实验目的:1.掌握C#顺序结构2.掌握C#选择结构if 语句和switch 语句的使用3.掌握C#循环结构的使用实验内容:1. 输入整数n (n>=0),分别利用for 循环、while 循环、do...while 循环求n !。

2.利用级数和求П。

使用格里高利公式求П的近似值,直到最后一项的绝对值不小于10-6为止。

...-9171-5131-14++≈∏ 3.利用嵌套循环打印如下图所示的呈下三角和呈上三角的九九乘法表。

4.素数的判断。

利用for 循环显示1~100间所有的素数。

要求每行显示10项。

效果如图所示:}}}第2题:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace P1_2{class Program{static void Main(string[] args){int c=1;double b, m = 0,a;for (a = 1, b = 1; (Math.Abs(b)) >= (Math.Pow(10, -6)); ) {m = m + b;a += 2;c=-c;b =c / a;}Console.WriteLine("П的近似值为:{0}", 4* m);}}}第3题:(1)using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace P1_3{class Program{static void Main(string[] args){Console.WriteLine("\t\t\t九九乘法表");int i, m;for (i = 1; i <= 9; i++){for (m = 1; m <= i; m++){Console.Write("{0}*{1}={2}\t", i, m, i * m); }Console.WriteLine();}}}}(2)using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace P1_3{class Program{static void Main(string[] args){Console.WriteLine("\t\t\t\t九九乘法表");int i, m,k;for (i = 1; i <= 9; i++){for (k = 1; k <= i; k++){Console.Write("\t");}for (m = i; m <= 9; m++){Console.Write("{0}*{1}={2}\t", i, m, i * m); }}}}}第4题:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace P1_4{class Program{static void Main(string[] args){Console.WriteLine("1~100之间所有素数为:");Console.Write("2\t");int i,m;for (i = 1; i <= 100; i += 2){for (m = 2; m <= i; m++){if (i % m == 0)break;}if (m==i)Console.Write("{0}\t", i);}}}}评语:。

matlab实验内容答案

matlab实验内容答案

实验报告说明:matlab 课程实验需撰写8个实验报告,每个实验报告内容写每次实验内容中标号呈黑体大号字显示的题目。

第一次实验内容:实验一 MATLAB 运算基础一、实验目的1.熟悉启动和退出MATLAB 的方法。

2.熟悉MATLAB 命令窗口的组成。

3.掌握建立矩阵的方法。

|4.掌握MATLAB 各种表达式的书写规则以及常用函数的使用。

二、实验内容1.先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。

(1)22sin 8511z e︒=+ (2)12ln(2z x =,其中2120.455i +⎡⎤=⎢⎥-⎣⎦(3)0.30.33sin(0.3), 3.0, 2.9, 2.8,,2.8,2.9,3.02a ae e z a a --=+=--- 提示:利用冒号表达式生成a 向量,求各点的函数值时用点乘运算。

(4)2220141122123t t z t t t t t ⎧≤<⎪=-≤<⎨⎪--≤<⎩,其中t =0::】提示:用逻辑表达式求分段函数值。

2.已知12344347873657A -⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦,131203327B -⎡⎤⎢⎥=⎢⎥⎢⎥-⎣⎦求下列表达式的值:(1) A+6=B 和A-B+I(其中I 为单位矩阵)。

(2) A*B 和A.*B 。

(3) A^3和A^.3 。

(4) A/B 和B\A 。

(5)[A ,B]和[A([1,3],;);B^2] 。

!3.设有矩阵A 和B12345678910111213141516171819202122232425A ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦, 30161769023497041311B ⎡⎤⎢⎥-⎢⎥⎢⎥=-⎢⎥⎢⎥⎢⎥⎣⎦(1) 求它们的乘积C 。

(2) 将矩阵C 的右下角3×2子矩阵赋给D(3) 查看MATLAB 工作空间使用情况。

4.完成下列操作:(1)求[100,999]之间能被21整除的数的个数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

分享来自:风行下载2013正式版官方下载淮海工学院计算机科学系实验报告书课程名:《数据结构》题目:查找、排序的应用实验班级:软件111学号:2011122602姓名:周天龙文档由酷狗音乐盒2013官方免费下载酷我音乐盒金山打字通2013官方免费下载整理收集排序、查找的应用实验报告要求1目的与要求:1)查找、排序是日常数据处理过程中经常要进行的操作和运算,掌握其算法与应用对于提高学生数据处理能力和综合应用能力显得十分重要。

2)本次实验前,要求同学完整理解有关排序和查找的相关算法和基本思想以及种算法使用的数据存储结构;3)利用C或C++语言独立完成本次实验内容或题目,程序具有良好的交互性(以菜单机制实现实验程序的交互运行)和实用性;4)本次实验在机房现场验收和平分,希望同学们认真对待,并按时完成实验任务;5)认真书写实验报告(包括程序清单及相关实验数据与完整运行结果),并按时提交。

2实验内容或题目题目:对记录序列(查找表):{55,13,23,72,109,67,2,78}分别实现如下操作:1)顺序查找;2)分别使用直接插入排序、冒泡排序、快速排序对原纪录序列进行排序;(暂没学,可以自己排序)3)对排好序的纪录序列表进行折半查找;4)利用1)中记录序列建立一颗二叉排序树,并在其上实现特定关键字值结点的查找;5)按照“除留余数法”哈希构造函数和线性探测再散列的冲突处理方法创建表长为m=11的哈希表;6)实现5)创建哈希表上的查找。

3实验步骤与源程序#include<stdio.h>#include<stdlib.h>#include<malloc.h>#define LIST_SIZE20#define TRUE1#define FALSE0#define SUCCESS1#define UNSUCCESS-1#define MAX100typedef char KeyType;typedef int OtherType;typedef struct{KeyType key;OtherType other_data;}RecordType;typedef struct{RecordType r[LIST_SIZE+1];/*r[0]为工作单元*/int length;}RecordList;//二叉排序树的创建与查找#define ENDKEY0typedef struct node{KeyType key;/*关键字的值*/struct node*lchild,*rchild;/*左右指针*/}BSTNode,*BSTree;/*哈希表的创建*/typedef struct{int key;int flag;//falg=1时表示有关键字,=0时表示没有关键字}Elemtype;typedef struct{Elemtype*elem;//动态分配的哈希表的首地址int sizeindex;//hashsize[sizeindex]为当前容量int count;//当前数据元素个数}HashTable;/*顺序查找*/void SeqSearch(RecordList l,KeyType k)/*在顺序表l中顺序查找其关键字等于k的元素,若找到,则函数值为该元素在表中的位置,否则为0*/{int i;l.r[0].key=k;i=l.length;while(l.r[i].key!=k)i--;if(i>=1){printf("该元素k所在的位置是:");printf("%d",i);}elseprintf("该元素不存在");}//直接插入排序void InsSort(RecordType r[],int length)/*对记录数组r做直接插入排序,length为数组中待排序记录的数目*/{int i,j;for(i=2;i<=length;i++){r[0]=r[i];/*将待插入记录存放到监视哨r[0]中*/j=i-1;while(r[0].key<r[j].key)/*寻找插入位置*/{r[j+1]=r[j];j=j-1;}r[j+1]=r[0];/*将待插入记录插入到已排序的序列中*/}}/*InsSort*//*对排好的序进行折半查找算法*/void BinSrch(RecordList l,KeyType k)/*在有序表l中折半查找其关键字等于k的元素,若找到,则函数值为该元素在表中的位置*/{int low,high,mid;low=1;high=l.length;/*置区间初值*/while(low<=high){mid=(low+high)/2;if(k==l.r[mid].key){printf("找到该元素,其位置为%d",mid);break;}/*找到待查元素*/elseif(k<l.r[mid].key)high=mid-1;/*未找到,则继续在前半区间进行查找*/elselow=mid+1;/*继续在后半区间进行查找*/}if(low>high)printf("没有找到该元素");}void InsertBST(BSTree*bst,KeyType key)/*若在二叉排序树中不存在关键字等于key的元素,插入该元素*/{BSTree s;if(*bst==NULL)/*递归结束条件*/{s=(BSTree)malloc(sizeof(BSTNode));/*申请新的结点s*/s->key=key;s->lchild=NULL;s->rchild=NULL;*bst=s;}elseif(key<(*bst)->key)InsertBST(&((*bst)->lchild),key);/*将s插入左子树*/elseif(key>(*bst)->key)InsertBST(&((*bst)->rchild),key);/*将s插入右子树*/}void CreateBST(BSTree*bst)/*从键盘输入元素的值,创建相应的二叉排序树*/{KeyType key;*bst=NULL;scanf("%d",&key);while(key!=ENDKEY)/*ENDKEY为自定义常量*/{InsertBST(bst,key);scanf("%d",&key);}}void PreOrder(BSTree root)/*先序遍历二叉树,root为指向二叉树根结点的指针*/{if(root!=NULL){printf("%d",root->key);/*输出结点*/PreOrder(root->lchild);/*先序遍历左子树*/PreOrder(root->rchild);/*先序遍历右子树*/}}BSTree SearchBST(BSTree bst,KeyType key)/*在根指针bst所指二叉排序树中,递归查找某关键字等于key的元素,若查找成功,返回指向该元素结点指针,否则返回空指针*/{if(!bst)return NULL;elseif(bst->key==key)return bst;/*查找成功*/elseif(bst->key>key)return SearchBST(bst->lchild,key);/*在左子树继续查找*/ elsereturn SearchBST(bst->rchild,key);/*在右子树继续查找*/}BSTNode*DelBST(BSTree t,KeyType k)/*在二叉排序树t中删去关键字为k的结点*/{BSTNode*p,*f,*s,*q;p=t;f=NULL;while(p)/*查找关键字为k的待删结点p*/{if(p->key==k)break;/*找到则跳出循环*/f=p;/*f指向p结点的双亲结点*/if(p->key>k)p=p->lchild;elsep=p->rchild;}if(p==NULL)return t;/*若找不到,返回原来的二叉排序树*/if(p->lchild==NULL)/*p无左子树*/{if(f==NULL)t=p->rchild;/*p是原二叉排序树的根*/elseif(f->lchild==p)/*p是f的左孩子*/f->lchild=p->rchild;/*将p的右子树链到f的左链上*/ else/*p是f的右孩子*/f->rchild=p->rchild;/*将p的右子树链到f的右链上*/ free(p);/*释放被删除的结点p*/}else/*p有左子树*/{q=p;s=p->lchild;while(s->rchild)/*在p的左子树中查找最右下结点*/{q=s;s=s->rchild;}if(q==p)q->lchild=s->lchild;/*将s的左子树链到q上*/ elseq->rchild=s->lchild;p->key=s->key;/*将s的值赋给p*/free(s);}return t;}/*DelBST*//*建立哈希表*/int CreatHashTable(HashTable&H,int m){int i,keys,p,len;H.elem=(Elemtype*)malloc(MAX*sizeof(Elemtype));H.sizeindex=MAX;//初始存储容量H.count=0;printf("请输入该组关键字的个数:");scanf("%d",&m);printf("请输入表长len:");scanf("%d",&len);H.sizeindex=len;for(i=0;i<m;++i){H.elem[i].flag=0;}printf("请输入该组关键字:");for(i=0;i<m;++i){scanf("%d",&keys);p=keys%m;while(H.elem[p].flag==1)//处理冲突{int d=1;p=(p+d)%m;d++;}H.elem[p].key=keys;H.elem[p].flag=1;H.count++;}for(int j=H.count;j<len;j++)H.elem[j].key=0;printf("哈希表创建完毕!\n");printf("下标关键字\n");for(i=0;i<len;i++){printf("%d",i);printf("%d",H.elem[i].key);printf("\n");}return SUCCESS;}void SearchHashTable(HashTable H){int keys,p;printf("请输入您要查找的关键字:\n");scanf("%d",&keys);for(int i=0;i<H.count;i++){if(keys==H.elem[i].key)//p是找到的关键字的下标{p=i;}}if(p>-1&&p<H.count){printf("查找成功!\n");printf("该关键字在哈希表中的下标为:%d\n",p);}elseprintf("查找失败,表中无此关键字!\n");}void main(){int i,j,select,a,flag=1,m=0;printf("1记录序列\n2进行顺序查找\n3进行直接排序\n4对排好序的纪录序列表进行折半查找\n5利用原纪录序列建立一颗二叉排序树,并在其上实现特定关键字值结点的查找\n6建立哈希表,并对其进行查找\n7退出\n"); RecordType r[20];BSTree bst,result,T;RecordList L,Q;int length,k,low;while(flag){printf("请选择:");scanf("%d",&a);switch(a){case1:printf("请输入待排序记录的长度:");//交互创建纪录表scanf("%d",&length);for(i=1;i<=length;i++){printf("请输入第%d个记录元素:",i);fflush(stdin);scanf("%d",&j);r[i].key=j;}printf("你输入的各元素为:");for(i=1;i<=length;i++)printf("%d",r[i].key);printf("\n");break;case2:printf("请输入你要查找的元素k:");fflush(stdin);scanf("%d",&k);L.length=length;for(i=1;i<=L.length;i++){L.r[i]=r[i];}SeqSearch(L,k);printf("\n");break;case3:InsSort(r,length);printf("按直接排序后各元素为:");for(i=1;i<=length;i++)printf("%d",r[i].key);printf("\n");break;case4:InsSort(r,length);L.length=length;for(i=1;i<=L.length;i++){L.r[i]=r[i];}printf("请输入要查找的元素:");scanf("%d",&k);BinSrch(L,k);printf("\n");break;case5:int k;printf("建立二叉排序树,请输入序列(以0结束):\n");CreateBST(&T);printf("先序遍历输出序列为:");PreOrder(T);printf("\n请输入要查找的元素:");fflush(stdin);scanf("%d",&k);result=SearchBST(T,k);if(result!=NULL)printf("存在要查找的元素为%d\n",result->key);elseprintf("未找到!\n");result=DelBST(T,k);//getch();break;case6:HashTable H;CreatHashTable(H,m);SearchHashTable(H);break;case7:flag=0;}}}4测试数据与实验结果(可以抓图粘贴)5结果分析与实验体会。

相关文档
最新文档