城市链表 数据库课程设计.docx

上传人:b****4 文档编号:3319231 上传时间:2022-11-21 格式:DOCX 页数:43 大小:316.98KB
下载 相关 举报
城市链表 数据库课程设计.docx_第1页
第1页 / 共43页
城市链表 数据库课程设计.docx_第2页
第2页 / 共43页
城市链表 数据库课程设计.docx_第3页
第3页 / 共43页
城市链表 数据库课程设计.docx_第4页
第4页 / 共43页
城市链表 数据库课程设计.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

城市链表 数据库课程设计.docx

《城市链表 数据库课程设计.docx》由会员分享,可在线阅读,更多相关《城市链表 数据库课程设计.docx(43页珍藏版)》请在冰豆网上搜索。

城市链表 数据库课程设计.docx

城市链表数据库课程设计

 

一、设计要求----------------------------------------------------------3

二、概要设计----------------------------------------------------------3

三、模块设计----------------------------------------------------------4

四、详细设计----------------------------------------------------------7

五、测试分析----------------------------------------------------------10

六、源程序清单------------------------------------------------------13

七、用户手册---------------------------------------------------------35

八、总结---------------------------------------------------------------36

 

1设计要求

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)intMainMenu(intk);//主菜单选择

(1.1)voidSubMainMenu();

(1.2)voidCustomColor(WORDForeColor,WORDBackColor);

//自定义文字显示前景,背景色

(2)pCityCreateCityInfo(pCityHead);//城市链表建立

(3)voidPrintOne(pCity);//打印一条

(3.1)voidPrintAll(pCityp);//打印所有

(4)voidSearchInfo(pCityHead);//查找

(4.1)pCitySearchUseName(pCityHead);//用名字查找

(4.2)pCitySearchUseCo(pCityHead);//用坐标查找

(4.3)pCitySearchInDis(pCityHead);//用距离查找

(5)voidInsertInfo(pCityHead);//插入

(6)voidDelInfo(pCityHead);//删除信息

(6.1)voidDelUseName(pCityHead);//删除按姓名

(6.2)voidDelUseCo(pCityHead);//删除按坐标

(7)voidUpInfo(pCityHead);//修改信息

(7.1)voidUpUseName(pCityHead);//修改用名字

(7.2)voidUpUseCo(pCityHead);//修改用坐标

(7.3)voidUpDetail(pCityp);//修改具体每一项

(8)voidInitSetting();//初始化用户设置

(9)voidUserSetting();//用户设置

(10)pCityFileHandle(pCityHead);//文件处理

(11)intYNChoice();//专门执行Y/N选择,选是为Y,不是为N,其它无效

(12)intNumberChoice(intMin,intMax);//数字选择,返回Min到Max之间的一个数

3函数主要调用关系图

本系统函数主要调用关系图如下所示,图中数字是各函数的标编号。

4详细设计

1数据类型定义

(1)本系统采用链式存储结构存储城市节点,节点定义如下:

structCoord

{

intx;

inty;

};

typedefstructCity

{

charName[20];

CoordCo;

intPeople;

intArea;

City*Next;

}*pCity;

2系统主要子程序设计

(1)建立链表函数,用来建立城市链表

pCityCreateCityInfo(pCityHead)//城市链表建立

{

pCityDelCity,Tem;

if(Head)

{

printf("链表已近存在,确定重新建立(Y/N)");

if(YNChoice())

{

DelCity=Head->Next;

while(DelCity)//删除所有

{

Tem=DelCity->Next;

free(DelCity);

DelCity=Tem;

}

Head=NULL;

}

else

returnHead;

}

Head=(pCity)malloc(LEN);//建立头结点

Head->Next=NULL;

charName[20];

intJum;//跳出输入循环用

COORDCo;

intPeople;

intArea;

intk=1;

inti=1;//控制while里的循环

printf("请输入城市的名称:

");

fflush(stdin);

gets(Name);

printf("请输入%s的坐标,形如(XY):

",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)

{

pCityTem=(pCity)malloc(LEN);

if(k!

=1)

{

printf("请输入城市的名称:

");

fflush(stdin);

gets(Name);

printf("请输入%s的坐标,形如(XY):

",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++;

}

returnHead;

}

(2)显示所有节点的信息,用于查看城市链表。

voidPrintOne(pCityp)

{

printf("\t\t%-16s(%3d,%-3d)\t%-9d%-8d\n",p->Name,p->Co.x,p->Co.y,p->People,p->Area);

}

voidPrintAll(pCityp)

{

if(p)

{

printf("全部城市信息为:

\n");

printf("\t\t城市\t\t坐标\t\t人口\t面积\n");

while(p=p->Next)

{

PrintOne(p);

}

}

else

{

printf("链表未建立,请先建立链表\n");

}

}

5测试分析

系统各运行界面如下,各子功能测试结果如下。

5.1建立城市链表

在主菜单下(或“主菜单功能选项下”),用户输入1并回车,然后按照提示建立城市链表,分别输入每个城市的名称,坐标,人口和面积,运行结构如下图:

5.2浏览城市链表

在主菜单下(或“主菜单功能选项下”),用户输入2并回车,可以浏览链表中的全部内容,结构如下

5.3城市链表的查找

在主菜单下(或“主菜单功能选项下”),用户输入3并回车,可以进入查找子菜单,如图:

用户输入相应选项即可进入相应功能。

5.4城市链表的插入

在主菜单下(或“主菜单功能选项下”),用户输入4并回车,可以进入插入功能,按照提示输入城市信息,即可插入新的城市信息。

界面如下

5.5城市链表的删除

在主菜单下(或“主菜单功能选项下”),用户输入5并回车,可以进入删除子菜单,按照提示输入要删除的城市,即可删除该城市信息。

界面如下

5.6城市链表的更新

在主菜单下(或“主菜单功能选项下”),用户输入6并回车,可以进入删除子菜单,按照提示输入要删除的城市,即可删除该城市信息。

界面如下

5.7查看给定范围内的城市

在主菜单下(或“主菜单功能选项下”),用户输入7并回车,可以进入查看给定范围内的城市的高级功能,按照提示输入中心坐标,然后在给定一个范围,即可查找出在该范围内的所有城市。

界面如下:

5.8文件的载入与保存

在主菜单下(或“主菜单功能选项下”),用户输入8并回车,可以进入文件载入与保存的选择功能,可以在其中载入文件数据到链表,也可以将链表中的数据保存到指定位置,子菜单如下

5.9系统设置

在主菜单下(或“主菜单功能选项下”),用户输入9并回车,可以进入系统设置功能,可以设置系统显示的文字颜色和显示背景色,还可以调整文字的大小,用户所做的更改将会自动保存,下次使用时不必重新设置,子菜单如下:

6源程序清单

6.1公共头文件

“Common.h”

#include

#include

#include

#include

#include

#include

#defineLENsizeof(City)

typedefstructCity

{

charName[20];

COORDCo;

intPeople;

intArea;

City*Next;

}*pCity;

intMainMenu(intk);//主菜单选择

voidWelcome();

voidSubMainMenu();

voidColorSetting(intWord,intBack);//自定义文字显示前景,背景色

pCityCreateCityInfo(pCityHead);//城市链表建立

voidPrintOne(pCity);//打印一条

voidPrintAll(pCityp);//打印所有

voidSearchInfo(pCityHead);//查找

pCitySearchUseName(pCityHead);//用名字查找

pCitySearchUseCo(pCityHead);//用坐标查找

voidInsertInfo(pCityHead);//插入

pCitySearchInDis(pCityHead);//用距离查找

pCityDelInfo(pCityHead);//删除信息

voidDelUseName(pCityHead);//删除按姓名

voidDelUseCo(pCityHead);//删除按坐标

pCityDelAll(pCityHead);

voidUpInfo(pCityHead);//修改信息

voidUpUseName(pCityHead);//修改用名字

voidUpUseCo(pCityHead);//修改用坐标

voidUpDetail(pCityp);//修改具体每一项

intYNChoice();//专门执行Y/N选择,选是为Y,不是为N,其它无效

intNumberChoice(intMin,intMax);//数字选择,返回Min到Max之间的一个数

voidSuspand();

voidInitSetting();//初始化用户设置

pCityFileHandle(pCityHead);//文件处理

voidUserSetting();//用户设置

“File.h”

#include

#define_WIN32_WINNT0x0500

extern"C"WINBASEAPIHWNDWINAPIGetConsoleWindow();

voidSaveFile(char*SaveDirectory,pCityHead);

pCityOpenFile(char*OpenDirectory,pCityHead);

voidSave(HANDLEhFile,char*SaveDirectory,pCityHead);

voidLSaveFile(char*SaveDirectory);

pCityopen(char*OpenDirectory,pCityHead);

“Setting.h”

structUserSet//用户设置

{

intsFontNumber;

intsFontColor;

intsBackgroundColor;

charDirector[200];

};

structCONSOLE_FONT//字体设置

{

DWORDindex;

COORDdim;

};

typedefBOOL(WINAPI*PROCSETCONSOLEFONT)(HANDLE,DWORD);

PROCSETCONSOLEFONTSetConsoleFont;

WORDBasicColor[8]={FOREGROUND_RED,

FOREGROUND_GREEN,

FOREGROUND_BLUE,

BACKGROUND_RED,

BACKGROUND_GREEN,

BACKGROUND_BLUE,

FOREGROUND_INTENSITY,

BACKGROUND_INTENSITY,

};

WORDFontColor[9]={BasicColor[0],

BasicColor[1],

BasicColor[2],

BasicColor[0]|BasicColor[1],

BasicColor[0]|BasicColor[2],

BasicColor[1]|BasicColor[2],

BasicColor[0]|BasicColor[1]|BasicColor[3],

BasicColor[0]|BasicColor[1]|BasicColor[3]|BasicColor[6],

0

};

WORDBackColor[9]={

BasicColor[3],

BasicColor[4],

BasicColor[5],

BasicColor[3]|BasicColor[4],

BasicColor[3]|BasicColor[5],

BasicColor[4]|BasicColor[5],

BasicColor[3]|BasicColor[4]|BasicColor[5],

BasicColor[3]|BasicColor[4]|BasicColor[5]|BasicColor[7],

0

};

voidColorSetting();

voidFontSetting();

“Welcome.h”

typedefHWND(WINAPI*PROCGETCONSOLEWINDOW)();

PROCGETCONSOLEWINDOWGetConsoleWindow;

6.2各函数文件

“Common.cpp”

#include"Common.h"

intYNChoice()//专门执行Y/N选择,选是为Y,不是为N,其它无效

{

charJump,k=1;

do

{

fflush(stdin);

if(k!

=1)

{

printf("选择有误,请重新选择(Y/N):

");

}

Jump=getchar();

k++;

}while(!

(Jump=='Y'||Jump=='y'||Jump=='N'||Jump=='n'));

if(Jump=='Y'||Jump=='y')

{

return1;

}

else

return0;

}

intNumberChoice(intMin,intMax)

{

intk=0;intx;

do{

fflush(stdin);

if(k)

printf("选择有误,请重新选择:

");

scanf("%d",&x);

k++;

}while(xMax);

returnx;

}

voidSuspand()

{

fflush(stdin);

getchar();

}

“Creaete.cpp”

#include"Common.h"

pCityCreateCityInfo(pCityHead)//城市链表建立

{

pCityDelCity,Tem;

if(Head)

{

printf("链表已近存在,确定重新建立(Y/N)");

if(YNChoice())

{

DelCity=Head->Next;

while(DelCity)//删除所有

{

Tem=DelCity->Next;

free(DelCity);

DelCity=Tem;

}

Head=NULL;

}

else

returnHead;

}

Head=(pCity)malloc(LEN);//建立头结点

Head->Next=NULL;

charName[20];

intJum;//跳出输入循环用

COORDCo;

intPeople;

intArea;

intk=1;

inti=1;//控制while里的循环

printf("请输入城市的名称:

");

fflush(stdin);

gets(Name);

printf("请输入%s的坐标,形如(XY):

",Name);

fflush(stdin);

scanf("%d%d",&Co.X,&Co.Y);

printf("请输入%s的人口:

",Name);

fflush(stdin);

scanf("%d",&People

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1