计算机科学与技术教研室
课程设计说明书
(2014-2015 学年第 1 学期)
课程名称
设计题目
学号
小组成员
算法与数据结构课程设计
校园附近门店服务查询系统
姓名
起止时间:
2015 年 1 月 日至 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
#include
#include
#include
#define N 100
#define Road 1000
intNum=9;
using namespace std;
typedefstructElemtype
{
char name[30];
char number[10];
char introduce[200];
}Elemtype;
typedefstruct Place
{
intnum;
Place *next;
Elemtype date;
图 1 系统结构图
//服务信息个数最大 100
//定义路径为 1000
//目前服务信息个数
//位置序号
//服务信息信息
}Place;
2.2.2 存储结构:
单链表如下:
//定义服务信息
h
D1
D2
D3
图 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
开始
初始化
写入服务信息信息
F
F
F
Case 1
Case 2
Case 3
T
end
图 4 系统流程图
T
T
查询服务
路径搜索
删除服务
2.2.5 代码(见附录)
2.3 程序测试结果
(1)主菜单函数
(2)查询服务信息函数
(3)增添服务信息函数
(4)修改服务信息函数
(5)删除服务信息函数
(6)路径搜索函数
3、课程设计总结
到现在为止已经学习了一学期的数据结构,再加上如今通过算法与数据结构的课程设
计,是我对数据结构这门课有了比较深的了解。当然,在学习过程中也遇到各种各样的困
难,不过已经通过各种途径解决了。在解决这些问题的过程中让我也学到了许多课本上没
有的知识以及团队合作的重要性。
经过这次课程设计,我对程序中算法的概念理解的更加透彻。算法是程序中必不可少
的部分,它是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法
代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,
在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执