1、计算机科学与技术教研室课程设计阐明书(-第1学期)课程名称算法与数据构造课程设计设计题目校园附近门店服务查询系统学号姓名小构成员起止时间: 1 月 日至 年 1 月 日课程设计评语在为期两周课程设计中,该生准时到课,课堂体现良好,参加了课程设计整个过程,实现了校园附近门店服务查询系统如下功能:对某一门店服务信息位置进行添加、查询、修改和删除,并可查找两门店之间最短途径。其课程设计阐明书填写对的,条理清晰,对于课程设计过程简介详细,代码对的,可见对于数据构造程序有了一定独立编程能力并且对课本知识掌握较纯熟。作品演示较纯熟,能按照设计规定完毕指定功能且能加入某些自己想法。答辩过程中回答问题较流利,
2、对数据构造程序掌握纯熟。平时成绩报告成绩演示与答辩成绩成绩总评指引教师(签字)年月日注:成绩均用百分制。总成绩=平时成绩*20%+报告成绩*40%+演示与答辩成绩*40%设计题目:校园附近门店服务查询系统1、课程设计目 (1)数据构造课程设计是综合运用数据构造课程中学到几种典型数据构造,以及程序设计语言(C+语言),自行实现一种较为完整应用系统。 (2)通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计办法和环节,灵活运用并深刻理解典型数据构造在软件开发中应用。 (3)学会将知识应用于实际办法,提高分析和解决问题能力,增长综合能力。1)纯熟掌握链表存储构造及其建立过程和
3、惯用操作;2)学会自己调试程序办法并掌握一定技巧;3)通过温习旧知识,学习新知识,并提高分析和解决问题能力。2、课程设计正文2.1概要设计2.1.1 系统分析该系统重要功能涉及:增添服务信息、查询服务信息、修改服务信息、删除服务信息以及推荐途径等。1.主程序模块:连接各种功能子模块,使用循环等待顾客操作,完毕程序基本操作实现功能。2.菜单显示模块:生成每个菜单显示界面,使程序更简朴清晰。3.查询服务信息:顾客在选取此功能模块后,按照屏幕上方提示服务信息名称及其相应编号,规定顾客输入想要查询服务信息编号,回车后系统将在已存储服务信息中进行匹配,若该景点信息尚未存储则将提示错误;若找到相应信息则系
4、统将输出服务信息,显示于幕上方。4.查询两服务信息最短途径:运用弗洛伊德算法,顾客在选取此功能模块后,按照屏幕上方提示服务信息名称及其相应编号,规定顾客输入起点和终点编号,系统将在已存储景点中进行匹配,若未找到所需查询服务信息编号,系统将提示错误并规定顾客再次输入。若输入信息合法,则回车后系统将给出最短途径,显示于屏幕上方。5.删除服务信息:顾客操作功能模块,由主程序直接调用函数模块,将功能具象化,系统工具函数模块,先查找到所存在服务信息,然后对顾客但愿删除服务信息进行删除操作,若所要删除服务信息不存在,则输出不存在此服务信息。2.1.2系统构造图系统要实现功能:1、增添服务信息;2、修改服务
5、信息;3查询服务信息;4、查询两服务信息之间最短途径;5、删除服务信息;6、退出系统。校园服务信息管理系统系统构造图如图1修改服务信息删除服务信息查询服务信息增添服务信息退出系统查询最短途径 图1系统构造图2.2详细设计2.2.1数据类型定义#include#include#include#include#define N 100 /服务信息个数最大100#define Road 1000 /定义途径为1000intNum=9; /当前服务信息个数using namespace std;typedefstructElemtypechar name30; char number10; char
6、introduce200; Elemtype;typedefstruct Placeintnum; /位置序号 Place *next;Elemtype date; /服务信息信息Place; /定义服务信息2.2.2 存储构造:hD1D2D3单链表如下:图2单链表数据域指针域每个结点包括数据域和指针域: 图3结点图2.2.3 函数声明 (1)服务信息查询函数 函数名:void find(Place *&head) 操作成果:查找需要服务信息 分析:输入所要查找服务信息编号,为链表建立一种附加表头结点,将p付给表头指针;同步判断输入字符串与否满足条件;用if语句判断与否输入完毕。 (2)服务信
7、息增添函数 函数名:void add(Place *&head) 操作成果:增长新服务信息 分析:运用指针p指向Place *&head构造体,增长服务信息位置、编号、名称等信息将p赋给表头指针,初始化count为0,用循环语句遍历进行保存。 (3)服务信息修改函数 函数名:void replace(Place *&head) 操作成果:对原有服务信息进行修改 分析:使用while与for语句遍历链表,对已经存在服务信息进行修改并保存。 (4)服务信息删除函数 函数名:void deleted(Place *&head) 操作成果:删除已经不存在服务信息 分析:用for与if语句,找到所要删除
8、字符串,用while语句删除已经不存在服务信息。 (5)求两服务信息之间最短途径函数 函数名:intshortdistance(Place *head) 操作成果:查找两个服务信息之间最短途径 分析:运用弗洛伊德算法,写出函数,再运用函数计算出两个服务信息之间最短途径并输出运算成果。 (7)主菜单控制函数 函数名:void menu() 操作成果: 显示如下几种菜单:1) 查询服务信息;2) 修改服务信息;3) 增长服务信息;4) 除服务信息;5)途径搜索;6) 退出系统;2.2.4函数流程图系统流程图如图4开始初始化写入服务信息信息Case 1Case 2Case 3查询服务途径搜索TTFF
9、TendF删除服务图4系统流程图2.2.5代码(见附录)2.3程序测试成果(1) 主菜单函数(2) 查询服务信息函数(3) 增添服务信息函数(4) 修改服务信息函数(5) 删除服务信息函数(6) 途径搜索函数3、课程设计总结到当前为止已经学习了一学期数据构造,再加上如今通过算法与数据构造课程设计,是我对数据构造这门课有了比较深理解。固然,在学习过程中也遇到各种各样困难,但是已经通过各种途径解决了。在解决这些问题过程中让我也学到了许多课本上没有知识以及团队合伙重要性。通过这次课程设计,我对程序中算法概念理解更加透彻。算法是程序中必不可少某些,它是指解题方案精确而完整描述,是一系列解决问题清晰指令
10、,算法代表着用系统办法描述解决问题方略机制。也就是说,可以对一定规范输入,在有限时间内获得所规定输出。如果一种算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同算法也许用不同步间、空间或效率来完毕同样任务。同步,在选取算法时必要考虑算法时间复杂度和空间复杂度,这样才干让程序正常,高效运营。在系统设计时也遇到了诸多问题,例如在设计MGr.legs()函数时,一方面我想到是使用数组来保存信息,但发现这种设计无法以便让程序中各个独立算法访问存储服务信息,编写代码时十分复杂,日后,在出查阅有关书籍和阅读了网上其他有关算法后,我选取了使用链表来保存信息,同步其他函数模块也可以以便访问这
11、某些信息,达到了我想要实现功能。通过本次课程设计,也学到了诸多,例如团队力量永远不不大于个人力量,细节决定成败等等。不但重新温习了此前学到知识,还学习到许多新知识,也结识到了自己许多局限性。例如耐心不够,有时侯调试程序时,发现了一种错误,但是总是解决不了,心里就会感到厌烦,不想继续做下去。尚有不够细心,每一次改写完程序后,检查了一遍,自己以为没有错了,成果一调试发现又有错误等等。但是也发现了自己某些长处,例如善于听取她人意见,虚心求教等。最后,通过全组人齐心合力,最后将程序编写了出来,并且使之得到实现咱们预期目。通过本次课程设计,从一定成度上提高了咱们对数据构造熟悉度,也提高了咱们独立编程能力
12、,同步也体会到在程序设计过程中团队合伙,共同解决问题重要性。4、 参照文献1严蔚敏等.数据构造M(C语言版).清华大学出版社,1997.4.2 张乃孝主编. 算法与数据构造 M(C语言版). 高等教诲出版社,.3 李廉治,姜文清,郭福顺.数据构造M.大连理工大学出版社,1989.答辩记录答辩小组教师:提问与答辩状况记录如下:1、求最短途径函数是怎么运营?答:一方面需要顾客将所要查找到两服务分别输入,然后运用所编写void folyd()函数进行对两服务位置之间最短距离进行计算,然后用void display(inti,int j)函数对所得到成果进行输出,顾客便可以从中得到所推荐最短途径。 2
13、、重要功能查询是如何实现?答:重要是在单链表上进行顺序查找,查找成功时,开辟空间,输入要查找服务编号信息,门店信息查询会有一种查询方式,通过提示进入switch选取语句进行选取,在这个过程中还运用了for、while等语句进行操作。3、程序初始化是如何设计?答:程序初始化先通过void init(Place *&head)定义服务信息,涉及服务位置、服务编号、服务内容等信息,然后运用MGr.legsij=Road函数定义服务之间距离,确立了服务信息,定义了程序初始化。源代码:#include#include#include#include#define N 100 /服务个数最大100#def
14、ine Road 1000 /定义途径为1000int Num=9; /当前服务个数using namespace std;typedef struct Elemtype char name30; char number10; char introduce200; Elemtype;typedef struct Place int num; /位置序号 Place *next; Elemtype date; /服务信息Place; /定义服务typedef struct MGraph Place place; int legsNN; /存储途径长 MGraph;MGraph MGr; /全局变
15、量,定义MGr为MGraph类型 int shortestNN; /定义全局变量存贮最小途径int pathNN; /定义存贮途径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-date.name,购物); strcpy(p-date.number,1); strcpy(p-date.introduce,位于学校北公寓西行
16、30M处,有两层楼大小,货品十分齐全,地处学校门口,是同窗们常去地方,提供各种购物服务。); p-next=q-next;q-next=p;q=p;p=(Place *)malloc(sizeof(Place); p-num=2; strcpy(p-date.name,上网); strcpy(p-date.number,2); strcpy(p-date.introduce,位于学校北公寓东行20M处,有两个店铺可供选取,生意火爆,提供上网服务。); p-next=q-next;q-next=p;q=p; p=(Place *)malloc(sizeof(Place); p-num=3; st
17、rcpy(p-date.name,洗浴); strcpy(p-date.number,3); strcpy(p-date.introduce,位于学校北公寓南行650M处,是学生们经常去地方,适合平民消费,价格实惠,水温适度,但距离学校较远。); p-next=q-next;q-next=p;q=p; p=(Place *)malloc(sizeof(Place); p-num=4; strcpy(p-date.name,清真小吃); strcpy(p-date.number,4); strcpy(p-date.introduce,位于学校北公寓南行400M处,作为老店,很受附近居民欢迎,可提
18、供烧烤,凉菜等服务,适合夜晚在此就餐。); p-next=q-next;q-next=p;q=p; p=(Place *)malloc(sizeof(Place); p-num=5; strcpy(p-date.name,打印文献); strcpy(p-date.number,5); strcpy(p-date.introduce,位于学校北公寓东行80M处,提供打印文献、制作光盘等服务,价格较实惠,营业时间较长。); p-next=q-next;q-next=p;q=p; p=(Place *)malloc(sizeof(Place); p-num=6; strcpy(p-date.name
19、,火锅); strcpy(p-date.number,6); strcpy(p-date.introduce,位于学校北公寓南行150M处,作为试营业商铺,服务态度较好,菜种齐全,适合多人会餐。); p-next=q-next;q-next=p;q=p; p=(Place *)malloc(sizeof(Place); p-num=7; strcpy(p-date.name,早餐); strcpy(p-date.number,7); strcpy(p-date.introduce,位于学校北公寓西行300M处,只有早上开放提供服务,其她时间段不营业,菜系有油条、豆浆等。); p-next=q-
20、next;q-next=p;q=p;p=(Place *)malloc(sizeof(Place); p-num=8; strcpy(p-date.name,快递); strcpy(p-date.number,8); strcpy(p-date.introduce,位于学校北公寓南行300M处,可获取收发韵达、申通快递等服务。);p-next=q-next;q-next=p;q=p;p=(Place *)malloc(sizeof(Place); p-num=9; strcpy(p-date.name,照相); strcpy(p-date.number,9); strcpy(p-date.in
21、troduce,位于学校北公寓南行100M处,可获取快照、艺术照、证件照等服务。); p-next=q-next;q-next=p;q=p;int i,j; /定义服务间距离for(i=1;i=N;i+) for(j=1;j=N;j+) MGr.legsij=Road; for(i=1;i=N;i+) shortestij=0; MGr.legs01=MGr.legs10=30; MGr.legs02=MGr.legs20=19; MGr.legs03=MGr.legs30=100; MGr.legs34=MGr.legs43=50; MGr.legs35=MGr.legs53=20; MGr
22、.legs45=MGr.legs54=15; MGr.legs56=MGr.legs65=18; MGr.legs67=MGr.legs76=24; MGr.legs12=MGr.legs21=50; MGr.legs27=MGr.legs72=20; MGr.legs87=MGr.legs78=16; MGr.legs79=MGr.legs97=26;void folyd() /佛洛依德算法 int i,j,k; for(i=1;i=N;i+) for(j=1;j=N;j+) shortestij=MGr.legsij; pathij=0; for(k=1;k=N;k+) for(i=1;i
23、=N;i+) for(j=1;j(shortestik+shortestkj) shortestij=shortestik+shortestkj; pathij=k; pathji=k; /记录通过途径 void display(int i,int j) /输出两个服务途径及最短途径 int a,b; a=i; b=j; cout咱们向您推荐最短途径是: ; if(ij) couta; while(pathij!=0) coutpathij;if(ij) j=pathij;else i=pathji; coutbendl; cout endl;cout您所查找ab两个服务之间最短距离为:sho
24、rtestab米。endl;else couta; while(pathij!=0) coutpathij;if(ij) j=pathij;else i=pathji; coutbendl;cout您所查找ab两个服务之间最短途径是:shortestab 米。endl; cout next,*q=head-next; cout请输入要查询两个服务位置序号:ij; while(t)if(t-num=i)break;else t=t-next;while(q)if(q-num=j)break;else q=q-next;if(q=NULL|t=NULL)cout抱歉,没有通向途径!endl; el
25、se folyd();display(i,j); coutnext;p=(Place *)malloc(sizeof(Place); int a;int b;int x;int y; int i; coutp-num;coutnum=p-num)cout此位置已被其他服务占用,请重新输入其他空白位置。endl;cout p-num;continue;else t=t-next;if(t=NULL)coutp-date.number;coutp-date.name; coutp-date.introduce;x=p-num;coutendl;cout请输入途径条数、有关服务位置y、途径长度a;
26、coutendl;for(i=1;iy;cinb;MGr.legsxy=MGr.legsyx=b; cout服务位置:numendl;cout服务编号:date.numberendl;cout服务名称:date.nameendl; cout服务简介:date.introduceendl; cout next;while(q-next)q=q-next;p-next=q-next;q-next=p;Num+;void deleted(Place *&head) /删除服务int text=0;char cnum10;Place *p=head;cout输入删除服务编号:endl;cout cnu
27、m;while(p-next)if(strcmp(p-next-date.number,cnum)=0)cout恭喜您,您已成功将服务 next-date.name 关闭!next=p-next-next;Num-;break;elseif(p-next=NULL)cout该服务不存在!endl;cout next;coutendl;void find(Place *&head) /查询服务int n;Place *p=head;cout输入查询服务位置序号:;cout n;while(p-next)if(p-next-num=n)cout服务位置:next-numendl;cout服务编号:
28、next-date.numberendl;cout服务名称:next-date.nameendl;cout服务简介:next-date.introducenext;if(p-next=NULL)cout该服务不存在!endl;cout endl;cout endl;void replace(Place *&head) /修改服务char name120;char number110,number210;char introduce1100;Place *p=head;cout输入要修改服务编号:endl;cout number1;while(p-next)if(strcmp(p-next-da
29、te.number,number1)=0)coutname1;coutnumber2;coutintroduce1;strcpy(p-next-date.name,name1);strcpy(p-next-date.number,number2);strcpy(p-next-date.introduce,introduce1);coutendl;cout服务位置:next-numendl;cout服务编号:next-date.numberendl;cout服务名称:next-date.nameendl;cout服务简介:next-date.introduceendl;coutnext;if(p
30、-next=NULL) cout该服务不存在!endl;cout endl;coutendl;void menu() /主菜单 cout endl; cout endl; cout1 查询服务请按1键; endl;cout2 修改服务请按2键; endl; cout3 增长服务请按3键; endl;cout4 删除服务请按4键 endl;cout5 途径搜索请按5键 endl;cout6 退出系统请按6键; endl;cout endl;cout endl;void main() /主函数 cout 欢迎使用衡水学院服务查询系统 endl;cout endl;coutendl;int x; init(p);while(1) cout当前存在服务个数为:Numendl;coutx; switch(x) case 1:find(p);break;case 2:replace(p);break; case 3:add(p);break; case 4:deleted(p);break;case 5:shortdistance(p);break;case 6: cout 恭喜您,成功退出系统! endl; exit(0);
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100