软件技术基础实验项目书版.docx
- 文档编号:26154922
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:13
- 大小:150.74KB
软件技术基础实验项目书版.docx
《软件技术基础实验项目书版.docx》由会员分享,可在线阅读,更多相关《软件技术基础实验项目书版.docx(13页珍藏版)》请在冰豆网上搜索。
软件技术基础实验项目书版
2013年2月
软件技术基础
--------实验指导书
实验一vc++6.0基本环境与应用
实验题目:
熟悉vc++6.0的实验环境
实验目的:
掌握建立vc工程的方法,并学会编写简单的vc程序。
实验内容:
1,熟悉vc++界面。
启动VC++6.0中文版以后,屏幕上显示如图所示的开发环境。
开发环境界面由标题栏、菜单栏、工具栏、项目工作区窗口、文档窗口、输出窗口及状态栏组成。
每个窗口左上角均有最小化、最大化(还原)和关闭按钮。
各类窗口相互独立,可进行打开、关闭、移动、极大、极小化控制以及改变窗口大小。
2建立MFC应用程序
建一个VC++的MFC应用程序的过程可分为5个步骤:
(1)创建项目
使用Files菜单下的“New”项,会弹出一个New的对话框,选中Projects选项卡,对话框会列出一系列可以创建的项目类型(见图4.),下列出部分常用类型:
ATLCOMAppWizard(创建ATL应用程序)
CustomAppWizard(创建自定义的应用程序)
DatabaseProject(创建数据库)
DevStudioAdd-inWizard(创建自定义宏)
ISAPIExtensionWizard(创建Internet服务器或过滤器)
Makefile(创建Make文件)
MFCAppWizard(dll)(创建MFC动态链接库)
MFCAppWizard(exe)(创建MFC可执行程序)
MFCAxtiveXControlWizard(创建MFC控件程序)
Win32DynamicLinkLibrary(创建Win32动态链接库)
Win32Application(创建Win32程序)
Win32ConsoleApplication(创建Win32控制台程序)
(2)点选要创建的项目类型,然后在右边的Location框中输入要保存的路径,在ProjectName框中输入项目的名字,点击OK,会弹出创建项目向导,可以根据提示选取要创建的项目的细节。
最后点Finish按钮。
VC++会列出一个将要创建的项目的信息,这时点OK按钮VC++就会自动创建该项目的界面窗口、对话框等的编码文件。
(3)编制程序
在按需求建立项目之后,应添加资源,设置资源属性,定义类文件,编写函数代码,以及响应事件时所要执行的代码。
编码时可以直接点击项目工作区的相应项目进行编辑。
在类视图下可以点击类跳转到源文件相应的行编辑类以及其成员信息。
或在资源视图下直接双击相应对象编辑。
(4)保存项目
当创建项目时,VC++会自动生成项目文件。
在增加代码时要经常保存项目。
保存项目应选File菜单上的Save命令进行保存。
有时编码程序时可能会同时改动多个文件这时应注意将改动的文件分别保存或者用File菜单上的Saveall命令保存。
(5)建立程序
建立程序包括:
编译,链接和运行程序。
这行操作可以在快捷栏上用快捷按钮完成。
向项目增加代码时,可以建立程序来检查错误和修改代码。
Ø编译(Compile)编译是将单个文件生成*.obj文件供链使用同时以检查程序有无错误。
可以单击快捷栏上的编译按钮进行编译。
Ø链接(Build)链接是将程序连接生成*.exe文件,以便直接运行。
可以单击快捷栏上的链接按钮进行链接。
Ø执行(Execute)执行是运行工程查看结果。
可以单击快捷栏上的执行按钮执行程序。
注意:
编译和链接会在文件目录中的Debug目录中生成可执行文件以及与其相关的链接文件。
可直接双击该目录下的*.exe文件运行程序。
实验报告要求:
(1)熟悉vc++6.0的实验环境,熟悉各个菜单和工作区。
(2)建立MFC(.exe)的工程项目,学会使用vc++6.0编程语言编写简单的小程序。
实验二线性表的运算
实验题目:
线性表的生成、插入和删除等运算
实验目的:
掌握线性表的顺序存储结构和链式存储结构及它们在计算机中的实现方法。
实验内容:
分别建立一个顺序表和单链表,实现其生成、插入、删除、查找和定位的程序。
(1)按指定长度和输入的相应长度的字符串建立一个顺序表和一个单链表。
(2)在指定位置插入一个元素。
例如,设当前链表的顺序为:
“ABCD”,则按提示输入所插元素和位置“F,1”,则插入的结构为“FABCD”。
(3)删除指定位置的一个元素。
例如,设当前链表的顺序为:
“ABCD”,则按提示输入删除位置“1”,则删除的结果为“BCD”。
实验要求:
(1)将程序输入计算机,编译运行。
(2)程序的实际功能与上述所列功能不完全相符,调试程序,找出问题所在,并纠正。
实验报告要求:
(1)将程序输入计算机,编译运行。
(2)程序的实际功能与上述所列功能不完全相符,调试程序,找出问题所在,并纠正。
实验原理:
写出顺序表和单链表的生成、插入和删除运算的算法描述(形式语言)。
实验步骤:
写出调试、查找程序中问题的思路和步骤。
实验结果:
写出修改前后的运行结果。
附:
1.顺序表的建立代码
#include
#include
voidmain()
{
inti;
structseqlist
{inta[10];
intn;
};
typedefstructseqlist*pseqlist;
pseqlistp;
p=(pseqlist)malloc(sizeof(structseqlist));
p->n=0;
for(i=0;i<5;i++)
{cin>>p->a[i];
p->n=p->n+1;}
for(i=0;i<10;i++)
cout< cout<<"listlengthis"< } 2.单链表的建立代码 structnode*next; }listnode; typedeflistnode*linklist; listnode*p; linklisthead,q; head=(listnode*)malloc(sizeof(listnode));/*生成头结点*/ head->data=10; head->next=NULL; p=(listnode*)malloc(sizeof(listnode));/*生成第一个要插入的新结点*/ p->data=20; p->next=NULL; q=head; while(q->next! =NULL) q=q->next; q->next=p;/*将第一个新结点插入到线性表的末尾*/ p=(listnode*)malloc(sizeof(listnode));/*再生成第二个要插入的新结点*/ p->data=30; p->next=NULL; q=head; while(q->next! =NULL) q=q->next; q->next=p;/*再将第二个新结点插入到线性表的末尾*/ q=head; while(q->next! =NULL) {cout< q=q->next; }/*输出从头结点开始的每一个结点的数据域*/ } 实验3查找算法 实验题目: 二分查找算法 实验目的: 掌握二分查找算法的基本原理,使用vc++6.0语言编写程序。 实验内容: (1)了解查找的概念 查找又称检索,简单讲就是查找表。 一个查找过程,就是对于给定的元素K,找出表中关键字值等于的记录。 查找成功,确定其关键字值等于K的记录存在;查找失败,确定关键字为K的记录不在表中。 (2)二分查找算法的基本原理 如果顺序查找表的元素按照关键字的值有序存放,那么可利用高效的二分查找来完成查询。 条件假定元素按关键字的值升序排列,将给定的数据与有序表中间位置的元素做比较,若两者相等则查找成功;若前者小于后者则在中间位置左边的元素中继续查找;若前者大于后者则在中间位置右边的元素中继续查找。 不断重复这一过程直到查找成功,或者直到查找区间缩小为一个元素时却仍未找到目标,则查找失败。 (3)给出一组有序数列,对其中某个数进行二分查找,建立一个.cpp程序。 实验步骤: ①设置查找区间初值,设下界low=0,设上界high=length-1。 ②若low≤high则计算中间位置mid=(low+high)/2。 ③若key 若key>data[mid],则设low=mid+1并继续执行步骤②; 若key=data[mid]则查找成功,返回目标元素位置mid+1(位置从1计数)。 ④若当low=high时,key! =data[mid]则查找失败,返回0。 实验报告要求: 1.写清二分查找的原理。 2.写出每步操作的步骤。 3.写出实验中的结果。 4.写出实验总结和实验心得。 附: 二分查找算法代码 intBinSearch(SSTable&L,KeyTypekey) {intlow,high,mid; low=0; high=L.length-1;//设置查找区间初值 while(low<=high){ mid=(low+high)/2; if(key==L.data[mid].x)returnmid+1;//查找成功 elseif(key high=mid-1;//继续在前半区间进行查找 else low=mid+1;//继续在后半区间进行查找 } return0;//不存在待查元素 } 实验4排序算法 实验题目: 三种简单排序算法的原理 实验目的: 掌握插入排序、选择排序和起泡排序算法的工作原理 实验内容: 用vc++6.0建立三个程序,实现三种排序算法。 1.排序的概念 排序是计算机内经常进行的一种操作,其目的是将一组同类型的记录序列调整为按照元素关键字有序的记录序列。 例如将学生记录按学号排序,将课程记录按课程编码排序。 排序的形式化定义为: 假设含n个记录的序列为{R1,R2,…,Rn},其相应的关键字序列为{K1,K2,…,Kn}。 这些关键字相互之间可以进行比较,即在它们之间存在着这样一个关系Kp1≤Kp2≤…≤Kpn,按此固有关系将最初的记录序列重新排列为{Rp1,Rp2,…,Rpn}的操作称作排序。 2.插入排序的原理 插入排序方法的基本思想是: 将记录分为有序和无序两个序列,假定当插入第k个记录时,前面的R1,R2,…,Rk-1已经排好序,而后面的Rk,Rk+1,…,Rn仍然无序。 这时用Rk的关键字与Rk-1的关键字进行比较,若Rk小于Rk-1则将Rk-1向后移动一个单元;再用Rk与Rk-2比较,若Rk小于Rk-2则将Rk-2向后移动一个单元,依次比较下去,直到找到插入位置即将Rk插入。 初始状态可以认为有序序列为{R1}。 3.选择排序的原理 选择排序的基本思想是: 将记录分为有序和无序两个序列,假定第k趟排序时,前面的R1,R2,…,Rk-1已经排好序,而后面的Rk,Rk+1,…,Rn仍然无序,则选择Rk到Rn中的关键字最小的记录与Rk交换,交换后有序序列增加了第k个记录。 当第n-1趟选择执行完,待排序记录只剩下1个,就不用再选了。 在初始状态可以认为有序序列为空。 4.起泡排序的原理 起泡排序的基本思路是: 第一趟排序对全部记录R1,R2,…,Rn自左向右顺次两两比较,若Rk大于Rk+1则交换Rk和Rk+1(k=1,2,…,n-1)。 第一趟排序完成后Rn成为序列中最大记录。 第二趟排序对序列前n-1个记录采用同样的比较和交换方法,第二趟排序完成后Rn-1成为序列中仅比Rn小的次大的记录。 第三趟排序对序列前n-2个记录采用同样处理方法。 如此做下去,最多做n-1趟排序,整个序列就排序完成。 实验报告要求: 1.写出三种排序算法的基本原理 2.自己列出一组数,用三种排序算法实现排序。 附: 1.插入排序代码 voidinsertSort(SortObject*pvector) {inti,j;/*按递增序进行直接插入排序*/ RecordNodetemp; for(i=1;i {temp=pvector->record[i]; j=i-1; while((temp.key {pvector->record[j+1]=pvector->record[j]; j=j-1; } if(j! =(i-1))pvector->record[j+1]=temp; } } 2.选择排序代码 voidselectSort(SortObject*pvector) {inti,j,k;/*按递增序进行直接选择排序*/ RecordNodetemp; for(i=0;i {k=i; for(j=i+1;j if(pvector->record[j].key k=j; if(k! =i) {temp=pvector->record[i]; pvector->record[i]=pvector->record[k]; pvector->record[k]=temp;} } } 3.起泡排序代码 voidBubleSort(intv[],intn) {inttemp; for(inti=1;i for(intj=0;j if(v[j]>v[j+1]){//交换两个相邻元素 temp=v[j]; v[j]=v[j+1]; v[j+1]=temp; } }//第i大的元素筛选结束 } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件技术 基础 实验 项目