资源预览内容
第1页 / 共30页
第2页 / 共30页
第3页 / 共30页
第4页 / 共30页
第5页 / 共30页
第6页 / 共30页
第7页 / 共30页
第8页 / 共30页
第9页 / 共30页
第10页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
目 录一、设计要求-3二、概要设计-3三、模块设计-4四、详细设计-7五、测试分析-10六、源程序清单-13七、 用户手册-35八、 总结-361 设计要求1.1 问题描述由假设干个城市的信息,存入一个带头节点的单链表。节点中的城市信息包括城市名,城市坐标,城市面积,城市人口等。要求能够利用城市名和位置坐标进行有关的查找,插入,删除,更新等操作。1.2需求分析1 输入数据建立城市链表。2 能够根据需求实际需求进行查找3 能够插入新的城市信息4 能够删除不需要的城市的信息5 能够修改链表中每一城市的信息6 查看链表中所有的城市信息7 能够对用户输入的数据进行保存8 能够保存用户用户自定义设置2概要设计为了实现上述需求可以从一下几个方面着手进行设计。2.1 主菜单设计为了实现城市链表各功能的管理,设计一个包含有多个菜单的主控菜单,相应选项连接系统的各个子功能。为方便用户使用,主菜单运行界面如下.2.2 存储结构设计本系统主要采用链表结构类型来存储数据,其中节点由四个局部组成:城市名称,城市坐标,城市人口和城市面积。2.3 系统功能设计本系统共设计了9个主要的子功能,各功能的描叙如下所述:(1) 建立城市链表,可以一次性的输入多条城市的信息,建立城市信息表。该功能用CreateCityInfo()函数实现。(2) 浏览城市链表信息,可以查看链表中所有城市的信息。该功能由PrintAll ( )函数来实现。(3) 查找城市中的信息,可以根据您的个性话需求来进行查找,查找设计了一个子菜单,可以选择查找方式。按名称查找,按坐标查找和查找的一定范围内的城市。菜单设计如下通过调用SearchInfo函数实现。(4) 插入功能。每次可以插入一条城市信息,插入完后可以选择继续插入信息来进行多条插入。通过调用InsertInfo 函数来实现。(5) 城市链表的删除,可以按照提示来删除指定的数据。能够让用户选择通过何中方式来确定要删除的文件,提供按名称和按坐标两种,删除成功后会给出“删除成功的提示。通过调用DelInfo 函数来实现(6) 城市链表的更新功能。能够让用户选择通过何中方式来确定要修改的文件,提供按名称和按坐标两种方式,定位后用户可以选择修改城市的各个信息。通过调用 UpInfo函数来实现。(7) 文件的载入和保存。用户可以保存目前建立的城市信息,也可以从以前的文件中载入信息,从而实现数据的长期使用。通过调用FileHandle( ) 函数来实现。(8) 设置。用户可以通过设置来改变文字大小,文字颜色,和界面背景颜色。通过调用UserSetting( )函数来实现。(9) 返回主菜单。方便用户随时查看主菜单,并选择功能。通过调用SubMainMenu ( ) 函数来实现。3 模块设计1 模块设计本程序主要包含两个模块:主程序模块和链表操作模块。其调用关系如下列图:主程序模块链表操作模块系统初始化模块文件处理模块3.2 系统子程序及功能设计本系统共设计了23个子程序,各个函数的函数名及功能说明如下。( 1 ) int MainMenu( int k );/主菜单项选择择( 1.1 ) void SubMainMenu();( 1.2 ) void CustomColor(WORD ForeColor,WORD BackColor); /自定义文字显示前景,背景色( 2 ) pCity CreateCityInfo(pCity Head);/ 城市链表建立 ( 3 ) void PrintOne (pCity );/打印一条( 3.1 ) void PrintAll (pCity p);/ 打印所有 ( 4 ) void SearchInfo(pCity Head);/查找 ( 4.1 ) pCity SearchUseName(pCity Head); /用名字查找( 4.2 ) pCity SearchUseCo(pCity Head); /用坐标查找( 4.3) pCity SearchInDis(pCity Head); /用距离查找( 5 ) void InsertInfo(pCity Head); /插入( 6 ) void DelInfo(pCity Head);/删除信息( 6.1 ) void DelUseName(pCity Head); /删除按姓名( 6.2 ) void DelUseCo(pCity Head); /删除按坐标( 7 ) void UpInfo(pCity Head); /修改信息( 7.1 ) void UpUseName(pCity Head);/修改用名字( 7.2 ) void UpUseCo(pCity Head);/修改用坐标( 7.3 ) void UpDetail(pCity p);/修改具体每一项 ( 8 ) void InitSetting(); /初始化用户设置( 9 ) void UserSetting();/用户设置( 10 ) pCity FileHandle(pCity Head);/文件处理( 11 ) int YNChoice();/专门执行Y/N选择,选是为Y,不是为N,其它无效 ( 12)int NumberChoice(int Min,int Max); /数字选择,返回Min到Max之间的一个数 3 函数主要调用关系图本系统函数主要调用关系图如下所示,图中数字是各函数的标编号。Main()11.11.2233.144.14.24.3566.16.277.17.27.310894 详细设计1 数据类型定义1本系统采用链式存储结构存储城市节点,节点定义如下:struct Coordint x;int y;typedef struct Citychar Name20; Coord Co;int People;int Area; City *Next; *pCity;2 系统主要子程序设计1 建立链表函数,用来建立城市链表pCity CreateCityInfo(pCity Head)/ 城市链表建立 pCity DelCity,Tem;if (Head)printf(链表已近存在,确定重新建立 (Y/N) );if(YNChoice()DelCity=Head-Next;while (DelCity) /删除所有Tem=DelCity-Next;free(DelCity);DelCity=Tem;Head=NULL;elsereturn Head; Head=(pCity)malloc(LEN);/建立头结点Head-Next=NULL;char Name20;int Jum;/跳出输入循环用COORD Co;int People;int Area;int k=1; int i=1; /控制while里的循环printf(请输入城市的名称:);fflush(stdin);gets(Name);printf(请输入 %s 的坐标,形如(X Y):,Name);fflush(stdin);scanf(%d%d,&Co.X,&Co.Y);printf(请输入 %s 的人口:,Name);fflush(stdin);scanf(%d,&People);printf(请输入 %s 的面积:,Name);fflush(stdin);scanf(%d,&Area);Jum=1;while(Jum)pCity Tem=(pCity)malloc(LEN);if(k!=1)printf(请输入城市的名称:);fflush(stdin);gets(Name);printf(请输入 %s 的坐标,形如(X Y):,Name);fflush(stdin);scanf(%d%d,&Co.X,&Co.Y);printf(请输入 %s 的人口:,Name);fflush(stdin);scanf(%d,&People);printf(请输入 %s 的面积:,Name);fflush(stdin);scanf(%d,&Area);strcpy(Tem-Name,Name);Tem-Co.X=Co.X;Tem-Co.Y=Co.Y;Tem-People=People;Tem-Area=Area;Tem-Next=Head-Next;Head-Next=Tem;/连接了连个结点printf(信息录入成功,是否继续添加:(Y/N);Jum=YNChoice();i=1;k+;return Head;2 显示所有节点的信息,用于查看城市链表。void PrintOne(pCity p)printf(tt%-16s( %3d,%-3d)t%-9d%-8dn,p-Name,p-Co.x,p-Co.y,p-People,p-Area);void P
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号