当前位置:文档之家› 校园导游服务咨询系统C++(含源代码)说明书---2015

校园导游服务咨询系统C++(含源代码)说明书---2015

计算机科学与技术教研室课程设计说明书(2014-2015学年第1学期)注:成绩均用百分制。

总成绩=平时成绩*20%+报告成绩*40%+演示与答辩成绩*40%设计题目:校园附近门店服务查询系统1、课程设计目的(1)数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C++语言),自行实现一个较为完整的应用系统。

(2)通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。

(3)学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。

1)熟练掌握链表存储结构及其建立过程和常用操作;2)学会自己调试程序的方法并掌握一定的技巧;3)通过温习旧的知识,学习新知识,并提高分析和解决问题的能力。

2、课程设计正文2.1概要设计2.1.1 系统分析该系统主要功能包括:增添服务信息、查询服务信息、修改服务信息、删除服务信息以及推荐路径等。

1.主程序模块:连接各种功能子模块,使用循环等待用户操作,完成程序的基本操作实现功能。

2.菜单显示模块:生成每个菜单的显示界面,使程序更简单清晰。

3.查询服务信息:用户在选择此功能模块后,按照屏幕上方提示的服务信息名称及其对应的编号,要求用户输入想要查询的服务信息的编号,回车后系统将在已存储的服务信息中进行匹配,若该景点信息尚未存储则将提示错误;若找到对应信息则系统将输出服务信息,显示于幕上方。

4.查询两服务信息最短路径:运用弗洛伊德算法,用户在选择此功能模块后,按照屏幕上方提示的服务信息名称及其对应的编号,要求用户输入起点和终点的编号,系统将在已存储的景点中进行匹配,若未找到所需查询的服务信息编号,系统将提示错误并要求用户再次输入。

若输入信息合法,则回车后系统将给出最短路径,显示于屏幕上方。

5.删除服务信息:用户操作功能模块,由主程序直接调用的函数模块,将功能具象化,系统工具函数模块,先查找到所存在的服务信息,然后对用户希望删除的服务信息进行删除操作,若所要删除的服务信息不存在,则输出不存在此服务信息。

2.1.2系统结构图系统要实现的功能:1、增添服务信息;2、修改服务信息;3查询服务信息;4、查询两服务信息之间最短路径;5、删除服务信息;6、退出系统。

图1系统结构图2.2详细设计2.2.1数据类型定义#include<stdio.h>#include<iostream>#include<stdlib.h>#include<string.h>#define N 100 //服务信息个数最大100#define Road 1000 //定义路径为1000intNum=9; //目前服务信息个数using namespace std;typedefstructElemtype{char name[30];char number[10];char introduce[200];}Elemtype;typedefstruct Place{intnum; //位置序号Place *next;Elemtype date; //服务信息信息}Place; //定义服务信息2.2.2 存储结构:单链表如下:图2单链表每个结点包含数据域和指针域:图3结点图2.2.3 函数声明(1)服务信息查询函数函数名:void find(Place *&head)操作结果:查找需要的服务信息分析:输入所要查找的服务信息的编号,为链表建立一个附加表头结点,将p 付给表头指针;同时判断输入的字符串是否满足条件;用if语句判断是否输入完成。

(2)服务信息增添函数函数名:void add(Place *&head)操作结果:增加新的的服务信息分析:运用指针p指向Place *&head结构体,增加服务信息的位置、编号、名称等信息将p赋给表头指针,初始化count为0,用循环语句遍历进行保存。

(3)服务信息修改函数函数名:void replace(Place *&head)操作结果:对原有的服务信息进行修改分析:使用while与for语句遍历链表,对已经存在的服务信息进行修改并保存。

(4)服务信息删除函数函数名:void deleted(Place *&head)操作结果:删除已经不存在的服务信息分析:用for与if语句,找到所要删除的字符串,用while语句删除已经不存在的服务信息。

(5)求两服务信息之间最短路径函数函数名:intshortdistance(Place *head)操作结果:查找两个服务信息之间的最短路径分析:运用弗洛伊德算法,写出函数,再运用函数计算出两个服务信息之间的最短路径并输出运算结果。

(7)主菜单控制函数函数名:void menu()操作结果:显示以下几个菜单:1) 查询服务信息;2) 修改服务信息;3) 增加服务信息;4) 除服务信息;5)路径搜索;6) 退出系统;2.2.4函数流程图系统流程图如图4图4系统流程图2.2.5代码(见附录)2.3程序测试结果(1)主菜单函数(2)查询服务信息函数(3)增添服务信息函数(4)修改服务信息函数(5)删除服务信息函数(6)路径搜索函数3、课程设计总结到现在为止已经学习了一学期的数据结构,再加上如今通过算法与数据结构的课程设计,是我对数据结构这门课有了比较深的了解。

当然,在学习过程中也遇到各种各样的困难,不过已经通过各种途径解决了。

在解决这些问题的过程中让我也学到了许多课本上没有的知识以及团队合作的重要性。

经过这次课程设计,我对程序中算法的概念理解的更加透彻。

算法是程序中必不可少的部分,它是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。

也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。

如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。

不同的算法可能用不同的时间、空间或效率来完成同样的任务。

同时,在选择算法时必须考虑算法的时间复杂度和空间复杂度,这样才能让程序正常,高效的运行。

在系统设计时也碰到了很多问题,比如在设计MGr.legs()函数时,首先我想到的是使用数组来保存信息,但发现这种设计无法方便的让程序中各个独立算法访问存储的服务信息,编写代码时十分复杂,后来,在出查阅相关书籍和阅读了网上其它相关算法后,我选择了使用链表来保存信息,同时其它函数模块也可以方便的访问这部分信息,达到了我想要实现的功能。

通过此次课程设计,也学到了很多,比如团队的力量永远大于个人的力量,细节决定成败等等。

不但重新温习了以前学到的知识,还学习到许多的新的知识,也认识到了自己的许多的不足。

例如耐心不够,有时侯调试程序时,发现了一个错误,但是总是解决不了,心里就会感到厌烦,不想继续做下去。

还有不够细心,每一次改写完程序后,检查了一遍,自己认为没有错了,结果一调试发现又有错误等等。

不过也发现了自己的一些优点,比如善于听取他人意见,虚心求教等。

最后,通过全组人的齐心协力,最终将程序编写了出来,并且使之得到实现我们的预期目的。

通过此次课程设计,从一定成度上提高了我们对数据结构的熟悉度,也提高了我们独立编程的能力,同时也体会到在程序设计过程中团体合作,共同解决问题的重要性。

4、参考文献[1]严蔚敏等.数据结构[M](C语言版).清华大学出版社,1997.4.[2] 张乃孝主编. 算法与数据结构 [M](C语言版). 高等教育出版社, 2002.[3] 李廉治,姜文清,郭福顺.数据结构[M].大连理工大学出版社,1989.答辩记录答辩小组教师:提问与答辩情况记录如下:1、求最短路径的函数是怎么运行的?答:首先需要用户将所要查找到两服务分别输入,然后运用所编写的void folyd()函数进行对两服务位置之间的最短距离进行计算,然后用void display(inti,int j)函数对所得到的结果进行输出,用户便可以从中得到所推荐的最短路径。

2、主要功能查询是如何实现的?答:主要是在单链表上进行顺序查找,查找成功时,开辟空间,输入要查找服务的编号信息,门店信息查询会有一种查询方式,通过提示进入switch选择语句进行选择,在这个过程中还运用了for、while等语句进行操作。

3、程序的初始化是怎样设计的?答:程序的初始化先通过void init(Place *&head)定义服务的信息,包括服务位置、服务编号、服务内容等信息,然后运用MGr.legs[i][j]=Road函数定义服务之间的距离,确立了服务信息,定义了程序的初始化。

源代码:#include<stdio.h>#include<iostream>#include<stdlib.h>#include<string.h>#define N 100 //服务个数最大100#define Road 1000 //定义路径为1000int Num=9; //目前服务个数using namespace std;typedef struct Elemtype{char name[30];char number[10];char introduce[200];}Elemtype;typedef struct Place{int num; //位置序号Place *next;Elemtype date; //服务信息}Place; //定义服务typedef struct MGraph{Place place;int legs[N][N]; //存放路径长}MGraph;MGraph MGr; //全局变量,定义MGr为MGraph类型int shortest[N][N]; //定义全局变量存贮最小路径int path[N][N]; //定义存贮路径Place *p;void init(Place *&head) //定义服务位置{Place *p,*q;head=(Place *)malloc(sizeof(Place));head->next=NULL;q=head;p=(Place *)malloc(sizeof(Place));p->num=1;strcpy(p->,"购物");strcpy(p->date.number,"1");strcpy(p->date.introduce,"位于学校北公寓西行30M处,有两层楼大小,货物十分齐全,地处学校门口,是同学们常去的地方,提供各种购物的服务。

相关主题