欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    C++课程设计双向链表课程设计报告.docx

    • 资源ID:2382177       资源大小:349.12KB        全文页数:26页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C++课程设计双向链表课程设计报告.docx

    1、C+课程设计双向链表课程设计报告 *大学VC课程设计报告课 程: VC+课程设计 系 别:计算机科学与计算机学院班 级: * 学 号: *姓 名: njust_smalllion 选题名称: 双向链表选题难易级别:A级起止时间:2010年9月13日2010年9月16日指导教师: ZY 一、课题目标1.1 程序功能简介1.2 课程设计要求1.3 评定难易级别二、具体实现2.1 程序总体方案2.1.1开发平台2.1.2程序结构或流程图2.2 改进方案2.2.1改进一 2.2.1.1 改进方案 2.2.1.2 具体实现2.2.2改进二 2.2.2.1 改进方案 2.2.2.2 具体实现2.2.3 改

    2、进三 2.2.3.1 改进方案 2.2.3.2 具体实现2.3调试结果三、调试报告在设计和实现过程所遇到的问题和解决四、总体小结在整个设计过程中的心得体会五、分工介绍 两人合作一、课题目标1.1 程序功能简介原程序定义了模版数据类型的双向链表类型,并定义了链表的插入,删除和输出操作的成员函数。1.2 课程设计要求(1)在原程序的基础上扩充双向链表的功能,增加排序插入,根据数据查找结点及修改结点数据等功能。(2)将结点据数据改成通讯录中的一个纪录,增加年龄,姓名,电话等数据;并能根据姓名进行向前或向后查找,链表根据姓名排序。(3)可以修改某个结点,即修改其中的年龄和电话字段,修改时新旧记录要同时

    3、显示在屏幕上,新纪录按“确认”键后才替代旧记录,否则取消修改操作。(4)将通讯录以文件的形式存在磁盘上,每次操作时将通讯录调出,操作完毕后存盘。(5)完善主函数,使主菜单更加详尽完备。(6)完成类的封装。(7)增加模糊匹配的功能。1.3 评定难易级别A级二、具体实现2.1 程序总体方案2.1.1开发平台操作系统:Windows XP开发工具:VC+6.02.1.2程序结构或流程图 2.2改进方案2.2.1改进一 2.2.1.1 改进方案完成类的封装2.2.1.2具体实现templateclass Node/结点类friend class DoubleLinkList; /友元类private

    4、:NodeType Data;/结点数据Node *NextNode; /结点的后向指针,指向下一结点Node *PreviousNode; /结点的前向指针,指向前一结点public :Node(); /默认的构造函数Node(Telephone&Value ); /拷贝的构造函数void print() /输出结点数据cout 姓名:setiosflags(ios:left)setw(20)Data.name;cout电话号码:setiosflags(ios:left)setw(15)Data.tel年龄:setiosflags(ios:left)setw(10)Data.ageendl;

    5、Node(); /析构函数;templateclass DoubleLinkList/双向链表类private :Node *FirstNode; /链表头指针结点Node *RearNode; /链表尾指针结点public :DoubleLinkList(); /缺省构造函数DoubleLinkList(); /析构函数bool IsEmpty(); /判断是否为空链表void InsertAtFront( Telephone &Value ); /将结点插入到链表头void InsertAtRear(Telephone&Value ); /将结点插入到链表尾void InsertAtMid

    6、dle(Telephone &Value ); /将结点插入到链表中间bool RemoveFromFront(); /删除链表头结点bool RemoveFromRear(); /删除链表尾结点bool RemoveFromMiddle(); /删除链表中间结点void TraverseForward(); /从前往后输出链表中的结点数据void TraverseBackwards(); /从后往前输出链表中的结点数据int LenghtOfDoubleLinkList(); /返回链表结点个数void AddNode(Telephone Value);/排序插入链表结点void DelBy

    7、Index(int index);/根据序号删除结点void DelByName(char * name);/根据姓名删除结点bool Searchname(char*name);/根据姓名查找结点bool UpdateByName(char*name);/根据姓名修改结点bool UpdateByIndex(int index);/根据序号修改结点bool LoadFromFile();/从文件中输入数据bool SaveToFile();/将数据存储进文件bool compstr(char *name,char *search1,int flag);/模糊比较Node *CreateNod

    8、e(Telephone&Value); /根据数据生成结点;2.2.2改进二2.2.2.1 改进方案主菜单具体化,使内容更加详尽完备。2.2.2.2具体实现int main()Telephone Value;int Option,i;char Name20;char str20;int option=0,index=0;coutttt 欢迎使用双向链表通讯录(njust_smalllion制作)endl;docouttttt 主菜单 endl;cout *endl;cout 1) 添加数据endl;cout 2) 删除数据 endl;cout 3) 输出通讯录endl;cout 4) 返回通讯

    9、录记录数endl;cout 5) 修改通讯录数据 endl;cout 6) 从文件中输入数据 endl;cout 7) 将数据存储进文件endl;cout 8) 根据姓名查找通讯录endl;cout 9) 退出程序 endl;coutOption;while(!cin)/当输入的数据类型与定义的变量类型不一致的时候cin.clear();/清空输入缓冲区cin.getline(str,20);/接收原输入数据coutOption;/重新输入switch(Option)case 1 :docout -endl;cout 1) 将数据插入到通讯录头endl;cout 2) 将数据插入到通讯录尾en

    10、dl;cout 3) 将数据插入到通讯录中间endl;cout 4) 排序插入数据endl;cout 5) 退回主菜单endl;couti;while(!cin|(i5|i1)/当输入的数据类型与定义的变量类型不一致的时候或超范围cin.clear();/清空输入缓冲区cin.getline(str,20);/接收原输入数据couti;/重新输入switch(i)case 1:Value.Input();cout 执行任务: 将数据插入到通讯录头endl;List.InsertAtFront(Value);/将数据插入到通讯录头cout 提示: 任务执行成功!数据成功插入到通讯录头!endl;

    11、cout 按任意键继续endl;cout -endl;getch();break;case 2:Value.Input();cout 执行任务: 将数据插入到通讯录尾endl;List.InsertAtRear(Value);/将结点插入到链表尾cout 提示: 任务执行成功!成功将数据插入通讯录尾!endl;cout 按任意键继续endl;cout -endl;getch();break;case 3:Value.Input();List.InsertAtMiddle(Value);/将结点插入到链表中间break;case 4:Value.Input();List.AddNode(Valu

    12、e); /排序插入链表结点break;case 5:i=5;break;while(i!=5);break;case 2 :docout -endl;cout 1) 将数据从通讯录头删除endl;cout 2) 将数据从通讯录尾删除endl;cout 3) 按序号删除数据endl;cout 4) 按姓名删除数据endl;cout 5) 返回主菜单endl;couti;while(!cin|(i5|i1)/当输入的数据类型与定义的变量类型不一致的时候或超范围cin.clear();/清空输入缓冲区cin.getline(str,20);/接收原输入数据couti;/重新输入switch(i)ca

    13、se 1:List.RemoveFromFront();/将数据从通讯录头删除break;case 2:List.RemoveFromRear();/将数据从通讯录尾删除break;case 3:doi=List.LenghtOfDoubleLinkList();cout 该通讯录的数据个数:iendl;coutindex;while(!cin)/当输入的数据类型与定义的变量类型不一致的时候cin.clear();/清空输入缓冲区cin.getline(str,20);/接收原输入数据coutindex;/重新输入coutt序号为:indexendl;coutstr;if(strlen(str

    14、)!=1|(str0!=Y&str0!=y) i=1;elseif(iindex)cout 对不起,没有这个序号,请重新输入endl;i=1;else i=0;while(i);if(index=1) List.RemoveFromFront();else if(i=index) List.RemoveFromRear();else List.DelByIndex(index);/按序号删除结点break;case 4:doi=List.LenghtOfDoubleLinkList();coutName;cout 姓名为:Nameendl;coutstr;if(strlen(str)!=1|(

    15、str0!=Y&str0!=y) i=1;else i=0;while(i);List.DelByName(Name);/按姓名删除结点break;case 5:Option=1;break;while(Option!=1);/结束循环,退回主菜单break;case 3:cout -endl;cout 1) 从前往后输出通讯录endl;cout 2) 从后往前输出通讯录endl;cout 3) 返回主菜单endl;couti;while(!cin|(i3|i1)/当输入的数据类型与定义的变量类型不一致的时候或超范围cin.clear();/清空输入缓冲区cin.getline(str,20)

    16、;/接收原输入数据couti;/重新输入switch(i)case 1:List.TraverseForward();/从前往后输出通讯录break;case 2:List.TraverseBackwards();/从后往前输出通讯录break;case 3:Option=3;break;break;case 4:coutn -endl;cout 执行任务:返回通讯录数据个数endl;cout 通讯录如下:n;i=List.LenghtOfDoubleLinkList();cout 该通讯录的数据个数:iendl;cout 提示:任务执行成功!成功输出通讯录中的数据个数!endl;cout 按

    17、任意键继续endl;cout -endl;getch();break;case 5:docout -endl;cout 1) 按姓名修改endl;cout 2) 按序号修改endl;cout 3) 返回主菜单endl;couti;while(!cin|(i3|i1)/当输入的数据类型与定义的变量类型不一致的时候或超范围cin.clear();/清空输入缓冲区cin.getline(str,20);/接收原输入数据couti;/重新输入switch(i)case 1:doi=List.LenghtOfDoubleLinkList();coutName;cout 姓名为:Nameendl;cout

    18、str;if(strlen(str)!=1|(str0!=Y&str0!=y) i=1;else i=0;while(i);List.UpdateByName(Name);/按姓名修改结点break;case 2:docout 通讯录如下:n;i=List.LenghtOfDoubleLinkList();coutindex;while(!cin)/当输入的数据类型与定义的变量类型不一致的时候cin.clear();/清空输入缓冲区cin.getline(str,20);/接收原输入数据coutindex;/重新输入coutt序号为:indexendl;coutstr;if(strlen(st

    19、r)!=1|(str0!=Y&str0!=y) i=1;elseif(iindex)cout 对不起,没有这个序号,请重新输入endl;i=1;i=0;while(i);List.UpdateByIndex(index);/按序号修改结点case 3:option=1;break;while(option!=1);/结束循环,退回主菜单break;case 6:List.LoadFromFile();/从文件中输入数据break;case 7:List.SaveToFile();/将数据存储进文件break;case 8:docout -endl;cout 1) 按姓名查找endl;cout

    20、2) 返回主菜单endl;couti;while(!cin|(i3|i1)/当输入的数据类型与定义的变量类型不一致的时候或超范围cin.clear();/清空输入缓冲区cin.getline(str,20);/接收原输入数据couti;/重新输入switch(i)case 1:docoutName;cout 姓名为:Nameendl;coutstr;if(strlen(str)!=1|(str0!=Y&str0!=y) i=1;else i=0;while(i);List.Searchname(Name);/按姓名查找通讯录break;case 2:option=1;break;while(o

    21、ption!=1);/结束循环,退回主菜单break;case 9:break;default :coutstr;if(strlen(str)!=1|(str0!=Y&str0!=y) Option=1;else Option=9;while(Option!=9);/结束循环,测试完成return 0;2.2.3改进三2.2.3.1改进方案增加模糊匹配功能2.2.3.2具体实现template/定义模糊比较函数bool DoubleLinkList:compstr(char *name,char *search1,int flag)int i,l,l1;char name120;l1=strl

    22、en(name);strcpy(name1,name);for(i=0;i=A)&(namei=Z)name1i+=a-A;l=strlen(search1);if(l1l) return 0;switch(flag)case 1:for(i=0;il-1;i+)if(search1i!=name1i)break;if(search1i=*)return true;elsereturn false;break;case 0:if(l1=l)for(i=0;il1;i+)if(search1i!=name1i&search1i!=?)break;if(il1) return 0;else ret

    23、urn 1;elsereturn false;default:return 0;2.2.4改进四2.2.4.1改进方案改将通讯录以文件的形式存在磁盘上,每次操作时将通讯录调出,操作完毕后存盘。2.2.4.2具体实现template/将数据存储进文件bool DoubleLinkList:SaveToFile()/ofstream outfile;char FileName20;coutn -endl;coutFileName;ofstream outfile(FileName);/以输出的方式打开数据文件if(!outfile) /打开文件错误,输出提示信息,退出程序cout 打开文件错误!endl;coutn 按任意键继续endl;cout -


    注意事项

    本文(C++课程设计双向链表课程设计报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


    收起
    展开