全国邮政编码查询 要源码的直接Hi我
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全国邮政编码查询
一目的
利用《数据结构》课程的相关知识完成一个具有一定难度的综合设计题目,利用C/C++语言进行程序设计,并规范地完成课程设计报告。通过课程设计,巩固和加深对树、、查找、等理论知识的理解;掌握现实复杂问题的分析建模和解决方法(包括问题描述、系统分析、设计建模、代码实现、结果分析等);提高利用计算机分析解决综合性实际问题的基本能力。
二需求分析
1、本程序主要对树的构造,以及如何存储数据和遍历访问结点数据。通过从文本内读取各个省市的数据,构造一颗树。
2、通过输入任意地名,遍历树形结构显示其邮政编码;输入任意邮政编码,要给出详细地址。
三概要设计
1、本程序包括4个模块:
(1)主程序模块:
Main(){
树的初始化;
调用函数读取文档数据和构造树;
用户选择查询;
}
(2)读取数据模块:
通过函数读取文本文档数据。
(3)构造树模块:
构造一颗二叉树存储数据。
(4)查询模块:
通过输入邮编查询详细地址或者通过地址查询邮编。
2、函数的声明和数据类型的定义:
typedef struct Node2
{
}BTNode;
树结构体的定义。
void ReadromFile(char b[1000][10])
将二维数组传入,把本文文档的内容读到二维数组中。
createbitree (BTNode *&b, BTNode *&root,char ah[1000][10],int &i)
先序遍历造树,把树的节点和二维数组以及变量i传入,i代表的是数组中元素的位置。
BTNode *SearchNode(BTNode *b,char *x )
通过遍历查询,查询所需要的信息,char *x是传入要查询的信息,然后通过字符指针返回信息。
四详细设计
1、定义结构体BTNode
typedef struct Node2
{
char date[10];
char tag[10];
struct Node2 *lchild,*rchild,*parent;
}BTNode;
2、定义二维数组
char c[1000][10];
3、定义结构体指针
BTNode *root;
BTNode *rt;
4、读文件中的内容
void ReadromFile(char b[1000][10]);
5、把文件中读数来的数据遍历存储到树中
6、查询信息
BTNode *SearchNode(BTNode *b,char *x );程序流程图:
五调试分析
1、本程序的关键是构造一颗有规律关系的树,首先得出树的结构,和构造
方法。
2、选择一定的格式去读取文件的数据,文件的数据存放一定要按规律排
布,不然将会导致构造树时节点间的数据关系混乱。
3、最关键部分就是以先序递归的方式去构造树,不仅要清楚的了解递归的
过程,而且要清楚的指导如何去判断节点以及如果终止递归。不然将会出现递归死循环。
4、再递归中要用指针进行操作或者通过地址操作,否则将会出现在递归回
到上一层或者前几层时出现数据重复读入,和数据漏读。
六测试结果
1、通过写本程序,充分了解了树的结构,以及构造遍历查询等操作,提
高利用计算机分析解决综合性实际问题的基本能力。
2、在函数传递参数时要注意传指针和传值。
3、通过调试分析可以清晰的查看程序的逻辑错误,以及对递归算法有了
更深的了解。
4、递归的方法构造树虽然很方便,但是很容易出错,树是无形的而且不
容易看出哪里出错。
5、读取文件时,选择正确的方式打开文件,然后通过需要的格式去读取
文件的内容。
七用户使用说明
1、本程序在VC下运行。
2、运行后程序自动读取文件内容,用户根据提示选择查询方式,输入查询内容后,程序将会显示出你所查询的信息。
3、查询后可以选择继续查询和选择退出。
八课程设计总结
1、课程设计终于结束了,在这次课程设计中不仅巩固了原来学习的知识,更重
要的是加深了对知识点的理解。懂得如何去做一件事情,该先做什么后做什么。在遇到一些棘手的问题时,不要乱一定要静下心了去分析原因。做课程设计时肯定会遇到需要问题,然后百度上去找解决问题的方法是非常好的一种方式。
2、做课程设计罪重要的思想,而不是代码的实现。有一个好的想法和思路是一
个程序是否成功的关键。理论知识在实践中我们才可以更好的去理解它,实践是对学习有着非常大的帮助。
九附录
源程序清单:
mail2.txt /* 邮政编码文件 */
sus1.cpp /* 程序代码 */
#include
#include
#include
#include
#include
#include
typedef struct Node2
{
char date[10];
char tag[10];
struct Node2 *lchild,*rchild,*parent;
}BTNode;
//BTNode *root;
BTNode *SearchNode(BTNode *b,char *x )
{
BTNode *p;
if(b==NULL) return NULL; //查找失败,空树
else if(!(strcmp(b->date,x)))
{
printf("查找成功\n");
printf("邮编:%s--",b->date);
b=b->parent;
printf("%s--",b->date);
//printf("%s++",b->tag);
while(strcmp(b->tag,"111111"))