实验报告1.docx
- 文档编号:3535629
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:15
- 大小:476.96KB
实验报告1.docx
《实验报告1.docx》由会员分享,可在线阅读,更多相关《实验报告1.docx(15页珍藏版)》请在冰豆网上搜索。
实验报告1
电子科技大学通信学院
标准实验报告
(实验)课程名称软件技术基础
实验名称软件技术实验
学生姓名郭健煜
学号2015010913021
指导老师杨建军
实验地点科A508
实验时间16.10.12
电子科技大学教务处制表
一、实验室名称:
骨干与传输系统实验室
二、项目名称:
通信软件设计
三、实验学时:
20
四、设计目的:
主要内容
目标
1、软件技术基础基本技能训练
1、掌握设计软件平台的基本使用方法
2、掌握在设计软件平台上编写数据结构模块的方法
2、成绩表的基本操作设计
1、掌握顺序表的创建与查询算法的设计和程序实现方法
2、掌握顺序表的插入、删除操作的算法设计和程序实现方法
3、掌握链表的创建与遍历查询算法的设计和程序实现方法
4、掌握链表的插入、删除操作的算法设计和程序实现方法
5、掌握栈和队列的创建算法的设计和程序实现方法
6、掌握入栈和出栈操作、入队列和出队列操作的算法设计和程序实现方法
3、成绩表二叉树排序与过滤的设计
1、掌握二叉树的结构特点
2、掌握二叉排序树的创建算法和程序实现
3、掌握二叉树的遍历算法
4、了解利用二叉树构建过滤规则树的方法
5、学会应用过滤规则树对成绩表的表项进行过滤
4、成绩表的检索和排序设计
1、掌握顺序检索、二分检索和哈希检索的算法设计和程序实现
2、掌握简单插入排序、简单选择排序、冒泡排序和快速排序的算法设计和程序实现。
五、设计原理:
七、实验器材(设备、元器件):
计算机1台,实验软件一套,Windows系统,VC++6.0
八、测试步骤:
/*******************************Copyright(c)*********************************************
**UniversityofElectronicScienceandTechnologyofChina
**SchoolofCommunicationandInformationEngineering
**
**
**---------------------------FileInfo---------------------------------------------------
**Filename:
table.cpp
**LastmodifiedDate:
2012-12-19
**LastVersion:
1.0
**Descriptions:
各种顺序表操作,顺序表结构的定义在mystruct.h中,
**函数中使用的与界面显示有关接口的说明在ui.h
**本文件基于C语言风格
**------------------------------------------------------------------------------------------
**Createdby:
DuanJingshan
**Createddate:
2012-12-19
**------------------------------------------------------------------------------------------
**Modifiedby:
**Modifieddate:
**Version:
**Descriptions:
**
*******************************************************************************************/
#include"stdafx.h"
#include"mystruct.h"
#include"ui.h"
/*******************************************************************************************
**Functionname:
init_table()
**Descriptions:
初始化顺序表
**顺序表利用数组作为基础,其特点是需要事先获得全部元素空间,因此本函数的主要
**功能就是向系统申请足够的空间作为顺序表的存储空间。
涉及的系统函数为:
**malloc()
**此外,良好的习惯是将空间内的各项数据进行适当的初始化
**Input:
NONE
**Output:
NONE
**return:
类型:
table_t*,返回顺序表的结构指针
**Createdby:
**CreatedDate:
**------------------------------------------------------------------------------------------
**Modifiedby:
**ModifiedDate:
**------------------------------------------------------------------------------------------
*******************************************************************************************/
table_t*init_table()
{
table_t*t;
t=(table_t*)malloc(sizeof(table_t));
t->length=0;
returnt;
}
/*******************************************************************************************
**Functionname:
free_table()
**Descriptions:
释放顺序表空间
**当程序结束时会通过本函数来释放通过malloc获得的顺序表空间
**Input:
table_t*t;顺序表指针
**Output:
NONE
**return:
类型:
void
**Createdby:
**CreatedDate:
**------------------------------------------------------------------------------------------
**Modifiedby:
**ModifiedDate:
**------------------------------------------------------------------------------------------
*******************************************************************************************/
voidfree_table(table_t*t)
{
free(t);
}
/*******************************************************************************************
**Functionname:
get_table()
**Descriptions:
查询顺序表
**查询顺序表中第i个元素
**Input:
**table_t*table;顺序表指针
**intindex;查询位置,即第i个元素
**Output:
**element_t*elem;元素域指针,用来存放被查询到的元素内容,
**(注意,需要将元素全部内容拷贝到该指针所记录的空间中,即,使用memcpy())
**return:
类型:
int,返回查询是否成功,为0表示找到指定元素,为-1表示没有找到,一般是因为
**index指示的位置超出了顺序表的范围
**Createdby:
**CreatedDate:
**------------------------------------------------------------------------------------------
**Modifiedby:
**ModifiedDate:
**------------------------------------------------------------------------------------------
*******************************************************************************************/
intget_table(table_t*table,intindex,element_t*elem)
{
//判断index是否超出顺序表范围
if(index<=0||index>table->length){
return-1;
}
//复制元素内容到指定空间中;
memcpy(elem,&(table->data[index-1]),sizeof(element_t));//error
return0;
}
/*******************************************************************************************
**Functionname:
add_table()
**Descriptions:
将指定元素放入到顺序表的末尾
**Input:
**table_t*table;顺序表指针
**element_tdata;待放入的元素
**Output:
**table_t*table;添加新元素后的顺序表指针
**return:
类型:
int;为-1表示放入失败,一般是因为顺序表已经放满,为0表示正确放入
**Createdby:
**CreatedDate:
**------------------------------------------------------------------------------------------
**Modifiedby:
**ModifiedDate:
**------------------------------------------------------------------------------------------
*******************************************************************************************/
intadd_table(table_t*table,element_tdata)
{
table->data[table->length]=data;
table->length++;
return0;
}
/*******************************************************************************************
**Functionname:
insert_table()
**Descriptions:
将指定元素插入到顺序表的指定位置之前
**Input:
**table_t*table;顺序表指针
**element_tdata;待放入的元素
**intlocation;插入位置,语义是:
第X个元素前,,当location大于链表元素总数时,该元素
**将插入到表尾。
**Output:
**table_t*table;插入新元素后的顺序表指针
**return:
类型:
int;为-1表示插入失败,一般是因为顺序表已经放满或者插入位置不正确,
为0表示正确插入
**Createdby:
**CreatedDate:
**------------------------------------------------------------------------------------------
**Modifiedby:
**ModifiedDate:
**------------------------------------------------------------------------------------------
*******************************************************************************************/
intinsert_table(table_t*table,element_tdata,intlocation)
{
location=location-1;
if(location<0)
return-1;
elseif(location>table->length)
table->data[table->length+1]=data;
else
{
intj;
for(j=table->length-1;j>=location;j--)
table->data[j+1]=table->data[j];
}
table->data[location]=data;
table->length=table->length+1;
return0;
}
/*******************************************************************************************
**Functionname:
insert_table_by_order()
**Descriptions:
将指定元素按照学号从小到大顺序插入到顺序表中
**Input:
**table_t*table;顺序表指针
**element_tdata;待放入的元素
**Output:
**table_t*table;插入新元素后的顺序表指针
**return:
类型:
int;为-1表示插入失败,一般是因为顺序表已经放满或者插入位置不正确,
为0表示正确插入
**Createdby:
**CreatedDate:
**------------------------------------------------------------------------------------------
**Modifiedby:
**ModifiedDate:
**------------------------------------------------------------------------------------------
*******************************************************************************************/
intinsert_table_by_order(table_t*table,element_tdata)
{
intt,i;
t=table->length;
if(t==MAX_TABLE_SIZE){
return-1;
}
i=0;
while(table->data[i].stuID i++; } insert_table(table,data,++i); return0; } /******************************************************************************************* **Functionname: delete_table() **Descriptions: 删除顺序表中指定姓名作为关键字的元素 **Input: **table_t*table;顺序表指针 **char*name;以该姓名为关键字的元素将被删除 **Output: **table_t*table;删除指定元素后的顺序表指针 **return: 类型: int;为-1表示删除失败,一般是因为顺序表没有找到指定元素, 为0表示正确删除 **Createdby: **CreatedDate: **------------------------------------------------------------------------------------------ **Modifiedby: **ModifiedDate: **------------------------------------------------------------------------------------------ *******************************************************************************************/ intdelete_table(table_t*table,char*name) { inti; i=0; while(strcmp(name,table->data[i].stuName)){ i++; if(i==MAX_TABLE_SIZE){ return-1; } } for(i;i table->data[i]=table->data[i+1]; } table->length-=1; return0; } /******************************************************************************************* **Functionname: delete_table_below() **Descriptions: 删除顺序表中总分小于某个指定值的所有元素,本算法的特点是 **希望一趟能在顺序表中删除多个元素 **Input: **table_t*table;顺序表指针 **intx;删除范围,即被删除的元素总分小于这个值 **Output: **table_t*table;删除元素后的顺序表指针 **return: 类型: void; **Createdby: **CreatedDate: **------------------------------------------------------------------------------------------ **Modifiedby: **ModifiedDate: **------------------------------------------------------------------------------------------ *******************************************************************************************/ voiddelete_table_below(table_t*table,intx) { intt[MAX_TABLE_SIZE]; inti,j; j=0; for(i=0;i if(x>table->data[i].overall){ t[j]=i; j++; } } for(j-=1;j>=0;j--){ for(i=t[j];i table->data[i]=table->data[i+1]; } table->length-=1; } return; } 九、测试数据及结果分析: 十、设计与测试结论: 程序可编译,功能得到实现 十一、总结及心得体会: 细心思考 十二、对本实验过程及方法、手段的改进建议: 还可以通过一些手段优化 报告评分: 指导教师签字:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)