C++课程设计双向链表课程设计报告Word文档格式.docx

上传人:b****1 文档编号:4459765 上传时间:2023-05-03 格式:DOCX 页数:26 大小:349.12KB
下载 相关 举报
C++课程设计双向链表课程设计报告Word文档格式.docx_第1页
第1页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第2页
第2页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第3页
第3页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第4页
第4页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第5页
第5页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第6页
第6页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第7页
第7页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第8页
第8页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第9页
第9页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第10页
第10页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第11页
第11页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第12页
第12页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第13页
第13页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第14页
第14页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第15页
第15页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第16页
第16页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第17页
第17页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第18页
第18页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第19页
第19页 / 共26页
C++课程设计双向链表课程设计报告Word文档格式.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++课程设计双向链表课程设计报告Word文档格式.docx

《C++课程设计双向链表课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++课程设计双向链表课程设计报告Word文档格式.docx(26页珍藏版)》请在冰点文库上搜索。

C++课程设计双向链表课程设计报告Word文档格式.docx

2.2.3.1改进方案

2.2.3.2具体实现

2.3调试结果

三、调试报告

在设计和实现过程所遇到的问题和解决

四、总体小结

在整个设计过程中的心得体会

五、分工介绍

两人合作

原程序定义了模版数据类型的双向链表类型,并定义了链表的插入,删除和输出操作的成员函数。

(1)在原程序的基础上扩充双向链表的功能,增加排序插入,根据数据查找结点及修改结点数据等功能。

(2)将结点据数据改成通讯录中的一个纪录,增加年龄,姓名,电话等数据;

并能根据姓名进行向前或向后查找,链表根据姓名排序。

(3)可以修改某个结点,即修改其中的年龄和电话字段,修改时新旧记录要同时显示在屏幕上,新纪录按“确认”键后才替代旧记录,否则取消修改操作。

(4)将通讯录以文件的形式存在磁盘上,每次操作时将通讯录调出,操作完毕后存盘。

(5)完善主函数,使主菜单更加详尽完备。

(6)完成类的封装。

(7)增加模糊匹配的功能。

操作系统:

WindowsXP

开发工具:

VC++6.0

2.2改进方案

2.2.1改进一

2.2.1.1改进方案

完成类的封装

2.2.1.2具体实现

template<

classNodeType>

classNode//结点类

{

friendclassDoubleLinkList<

NodeType>

;

//友元类

private:

NodeTypeData;

//结点数据

Node<

*NextNode;

//结点的后向指针,指向下一结点

*PreviousNode;

//结点的前向指针,指向前一结点

public:

Node();

//默认的构造函数

Node(Telephone&

Value);

//拷贝的构造函数

voidprint()//输出结点数据

cout<

<

"

"

姓名:

setiosflags(ios:

:

left)<

setw(20)<

Data.name;

电话号码:

setw(15)<

Data.tel<

年龄:

setw(10)<

Data.age<

endl;

}

~Node();

//析构函数

};

classDoubleLinkList//双向链表类

*FirstNode;

//链表头指针结点

*RearNode;

//链表尾指针结点

DoubleLinkList();

//缺省构造函数

~DoubleLinkList();

boolIsEmpty();

//判断是否为空链表

voidInsertAtFront(Telephone&

//将结点插入到链表头

voidInsertAtRear(Telephone&

//将结点插入到链表尾

voidInsertAtMiddle(Telephone&

//将结点插入到链表中间

boolRemoveFromFront();

//删除链表头结点

boolRemoveFromRear();

//删除链表尾结点

boolRemoveFromMiddle();

//删除链表中间结点

voidTraverseForward();

//从前往后输出链表中的结点数据

voidTraverseBackwards();

//从后往前输出链表中的结点数据

intLenghtOfDoubleLinkList();

//返回链表结点个数

voidAddNode(TelephoneValue);

//排序插入链表结点

voidDelByIndex(intindex);

//根据序号删除结点

voidDelByName(char*name);

//根据姓名删除结点

boolSearchname(char*name);

//根据姓名查找结点

boolUpdateByName(char*name);

//根据姓名修改结点

boolUpdateByIndex(intindex);

//根据序号修改结点

boolLoadFromFile();

//从文件中输入数据

boolSaveToFile();

//将数据存储进文件

boolcompstr(char*name,char*search1,intflag);

//模糊比较

*CreateNode(Telephone&

Value);

//根据数据生成结点

2.2.2.1改进方案

主菜单具体化,使内容更加详尽完备。

2.2.2.2具体实现

intmain()

TelephoneValue;

intOption,i;

charName[20];

charstr[20];

intoption=0,index=0;

\t\t\t欢迎使用双向链表通讯录(njust_smalllion制作)"

do

\t\t\t\t主菜单"

************************************************************************"

1)添加数据"

2)删除数据"

3)输出通讯录"

4)返回通讯录记录数"

5)修改通讯录数据"

6)从文件中输入数据"

7)将数据存储进文件"

8)根据姓名查找通讯录"

9)退出程序"

请输入你的选择序号:

cin>

>

Option;

while(!

cin)//当输入的数据类型与定义的变量类型不一致的时候

cin.clear();

//清空输入缓冲区

cin.getline(str,20);

//接收原输入数据

\n\n非法输入!

请输入一个整数:

//重新输入

switch(Option)

case1:

-----------------------------------"

1)将数据插入到通讯录头"

2)将数据插入到通讯录尾"

3)将数据插入到通讯录中间"

4)排序插入数据"

5)退回主菜单"

请输入你的选择:

i;

cin||(i>

5||i<

1))//当输入的数据类型与定义的变量类型不一致的时候或超范围

请输入一个整数(1~5):

switch(i)

case1:

Value.Input();

执行任务:

将数据插入到通讯录头"

List.InsertAtFront(Value);

//将数据插入到通讯录头

提示:

任务执行成功!

数据成功插入到通讯录头!

按任意键继续"

getch();

break;

case2:

将数据插入到通讯录尾"

List.InsertAtRear(Value);

//将结点插入到链表尾

成功将数据插入通讯录尾!

case3:

List.InsertAtMiddle(Value);

//将结点插入到链表中间

case4:

List.AddNode(Value);

//排序插入链表结点

case5:

i=5;

}while(i!

=5);

case2:

1)将数据从通讯录头删除"

2)将数据从通讯录尾删除"

3)按序号删除数据"

4)按姓名删除数据"

5)返回主菜单"

请输入你的选择:

List.RemoveFromFront();

//将数据从通讯录头删除

List.RemoveFromRear();

//将数据从通讯录尾删除

do{

i=List.LenghtOfDoubleLinkList();

该通讯录的数据个数:

i<

\t请输入序号:

index;

\t序号为:

index<

\t确认吗?

[Y/N](输入非Y按N算)"

str;

if(strlen(str)!

=1||(str[0]!

='

Y'

&

str[0]!

y'

))i=1;

else

if(i<

index)

对不起,没有这个序号,请重新输入"

i=1;

elsei=0;

}while(i);

if(index==1)List.RemoveFromFront();

elseif(i==index)List.RemoveFromRear();

elseList.DelByIndex(index);

//按序号删除结点

请输入姓名:

Name;

姓名为:

Name<

确认吗?

List.DelByName(Name);

//按姓名删除结点

Option=1;

}while(Option!

=1);

//结束循环,退回主菜单

1)从前往后输出通讯录"

2)从后往前输出通讯录"

3)返回主菜单"

请输出你的选择"

3||i<

请输入一个整数(1~3):

List.TraverseForward();

//从前往后输出通讯录

List.TraverseBackwards();

//从后往前输出通讯录

Option=3;

\n-----------------------------------"

执行任务:

返回通讯录数据个数"

通讯录如下:

\n"

提示:

任务执行成功!

成功输出通讯录中的数据个数!

1)按姓名修改"

2)按序号修改"

List.UpdateByName(Name);

//按姓名修改结点

i=0;

List.UpdateByIndex(index);

//按序号修改结点

option=1;

}while(option!

case6:

List.LoadFromFile();

case7:

List.SaveToFile();

case8:

1)按姓名查找"

2)返回主菜单"

List.Searchname(Name);

//按姓名查找通讯录

case9:

default:

\t选择范围超出菜单给定,重新输入?

))Option=1;

elseOption=9;

while(Option!

=9);

//结束循环,测试完成

return0;

2.2.3改进三

2.2.3.1改进方案

增加模糊匹配功能

2.2.3.2具体实现

//定义模糊比较函数

boolDoubleLinkList<

compstr(char*name,char*search1,intflag)

inti,l,l1;

charname1[20];

l1=strlen(name);

strcpy(name1,name);

for(i=0;

l1;

i++)

if((name[i]>

A'

)&

(name[i]<

Z'

))

name1[i]+='

a'

-'

l=strlen(search1);

if(l1<

l)return0;

switch(flag)

l-1;

if(search1[i]!

=name1[i])

if(search1[i]=='

*'

returntrue;

returnfalse;

case0:

if(l1==l)

=name1[i]&

search1[i]!

?

'

l1)return0;

elsereturn1;

default:

2.2.4改进四

2.2.4.1改进方案

改将通讯录以文件的形式存在磁盘上,每次操作时将通讯录调出,操作完毕后存盘。

2.2.4.2具体实现

SaveToFile()

//ofstreamoutfile;

charFileName[20];

请输入文件名:

FileName;

ofstreamoutfile(FileName);

//以输出的方式打开数据文件

if(!

outfile)//打开文件错误,输出提示信息,退出程序

打开文件错误!

\n按任意键继续"

------------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2