数据结构物流信息管理系统设计.docx
《数据结构物流信息管理系统设计.docx》由会员分享,可在线阅读,更多相关《数据结构物流信息管理系统设计.docx(14页珍藏版)》请在冰点文库上搜索。
数据结构物流信息管理系统设计
RevisedonNovember25,2020
数据结构物流信息管理系统设计
数据结构物流信息管理系统设计
【最新资料,WORD文档,可编辑修改】
摘要...................................................1
1设计内容及要求…………………………………………………………………1
内容描述……………………………………………………………………1
基本要求……………………………………………………………………1
2详细设计…………………………………………………………………………1
概要设计……………………………………………………………………1
功能模块详细设计…………………………………………………………1
程序流程图…………………………………………………………………4
3源代码………………………………………………………………………….5
4程序结果…………………………………………………………………………9
5总结……………………………………………………………………………….12
6参考文献…………………………………………………………………………12
摘要
物流信息管理系统是利用单链表实现信息管理,进而掌握C语言中的结构体,链表,指针,函数(系统函数,自定义函数)等C语言知识。
本文通过利用模块化程序设计思想,使用单链表和结构体等编写出的创建,删除,查询等功能的物流信息管理系统。
通过完成这个程序设计让我们熟悉并掌握c语言中使用结构体,单链表,指针,函数,和模块化设计思想。
关键词结构体,链表,指针,函数
1设计内容及要求
内容描述
对客户的基本信息进行存储,利用取货号来查询顾客信息,核对信息后方可取货。
基本要求
1.采用一定的存储结构进行客户信息的存储;
2.对客户的信息可以进行修改、删除、查询;
2详细设计
概要设计
本系统用到的主要数据结构为数组和文件。
一个数组对应一个客户,里面用3个字符串分别存储着用户的客户号、姓名和电话号码。
然后将数组写入文件,查询时读取文件,提取相应信息。
功能模块详细设计
本程序运用链表对客户信息进行存储,首先对结点进行定义,结点中的数据域分别定义了取货人的取货号、身份证、姓名、电话号码,其中身份证用了字符型数组进行定义,然后定义了客户取货链表,每添加一个取货人,先分配内存,再添加取货人的信息,之后将链表中最后一个指针指向该新的取货人,删除时,需先找到该取货人前面的取货人,直接将其指针指向删除取货人的下一个取货人,修改信息时,先找到该去人,选择修改的内容,再进行修改。
voidcreate(Linklist&h){
Linklists,t;
intj=1;
charx;
h=(Listnode*)malloc(sizeof(Listnode));
h->next=NULL;t=h;
while(j){
s=(Listnode*)malloc(sizeof(Listnode));
printf("顾客取货号为%d\n",i);
s->=i;
printf("请输入身份证号码:
");
scanf("%c",&x);
scanf("%s",s->;
printf("\n");
printf("请输入姓名:
");
scanf("%c",&x);
scanf("%s",s->;
printf("\n");
printf("请输入联系号码:
");
scanf("%c",&x);
scanf("%s",s->;
printf("\n");
s->next=NULL;t->next=s;t=s;
printf("全部输完,请输入0,否则输入1...\n");
scanf("%d",&j);
printf("\n");
i++;
}
t->next=NULL;
}
该功能主要实现顾客信息的存储,s作为数据存储节点,把顾客姓名,身份证,电话号码等信息存储进去。
i作为游标,定位该节点位置方便数据查找。
voidchange(Linklist&h,intm)
{
inta,j=1;
floatn;
Linklistt=h;
printf("Changecustomer'sIdentity:
1;Name:
2;Tel:
3;\n");
scanf("%d",&a);
printf("\n");
while(jnext!
=NULL)
{
t=t->next;
j++;
}
printf("OK!
\n");
switch(a){
case1:
printf("PleaseentertheIdentity!
");
scanf("%s",t->;
break;
case2:
printf("PleaseentertheName!
");
scanf("%s",t->;
break;
case3:
printf("PleaseentertheTel!
\n");
scanf("%f",&n);
break;
}
printf("修改成功!
\n");
}
该功能主要实现顾客信息的修改,输入所需要修改的选项,然后可以根据选项修改所对应的信息,然后修改完成。
voidListdelete(Linklist&h,intm)
{
intj=1;
Linklistq=h,t;
if(m==1)
{
t=h;
h=h->next;
}
else
{
while(jnext!
=NULL)
{
q=q->next;
j++;
}
if(q->next!
=NULL&&j==m-1)
{
t=q->next;
q->next=t->next;
}
else
printf("位置参数不正确!
\n");
}
i--;
free(t);
printf("删除成功!
\n");
}
该功能主要实现顾客信息的删除,通过删除节点来删除节点中说包含的信息,删除节点既可实现目标。
voidsearch(Linklist&h,intm){
intn=1,j;
Linklistp=h->next;
while(nnext!
=NULL)
{
p=p->next;
n++;
}
printf("消费号为%d\n",m);
printf("身份证为%s\n",p->;
printf("消费者姓名为%s\n",p->;
printf("电话号码为%s\n",p->;
}
该功能主要实现顾客信息的查找,通过查找节点所对应的游标位置既可找到该节点,查找该节点可调出该节点所存储的信息,达到查找目的。
程序流程图
物流信息管理系统因具备以下功能有流程图表示,如下图
物流信息管理系统
新建一天取货信息
修改取货信息
查询取货信息
删除取货信息
1)主函数流程图
swith(j)
case1:
create(h);
break;调用创建函数
case2:
printf("请输入修改的位置:
");
scanf("%d",&j);调用修改函数
change(h,j);
break;
case3:
printf("请输入删除的位置:
");
scanf("%d",&j);
Listdelete(h,j);调用删除函数
break;
case4:
printf("请输入顾客取货号:
");
scanf("%d",&j);
search(h,j);调用查找函数
break;
default:
printf("输入错误。
\n");
}
Creat:
该函数是用来录入顾客信息,使得用户可以输入姓名、电话号码、身份证这三种取货信息。
Change:
该函数是用来修改顾客信息,使用户可以修改姓名、电话号码、身份证这三种取货信息。
Listdelete:
该函数用来删除链表中的顾客信息。
Search:
该函数是用来查找顾客所属的取货信息。
3源代码
#include<>
#include<>
#include<>
#include<>
typedefstructDatatype
{
intm;
charIdentity[18];
charName[20];
charTel[18];
}Datatype;
.\n");
scanf("%d",&j);
printf("\n");
i++;
}
t->next=NULL;
}
//修改
voidchange(Linklist&h,intm)
{
inta,j=1;
floatn;
Linklistt=h;
printf("Changecustomer'sIdentity:
1;Name:
2;Tel:
3;\n");
scanf("%d",&a);
printf("\n");
while(jnext!
=NULL)
{
t=t->next;
j++;
}
printf("OK!
\n");
switch(a){
case1:
printf("PleaseentertheIdentity!
");
scanf("%s",t->;
break;
case2:
printf("PleaseentertheName!
");
scanf("%s",t->;
break;
case3:
printf("PleaseentertheTel!
\n");
scanf("%f",&n);
break;
}
printf("修改成功!
\n");
}
//删除
voidListdelete(Linklist&h,intm)
{
intj=1;
Linklistq=h,t;
if(m==1)
{
t=h;
h=h->next;
}
else
{
while(jnext!
=NULL)
{
q=q->next;
j++;
}
if(q->next!
=NULL&&j==m-1)
{
t=q->next;
q->next=t->next;
}
else
printf("位置参数不正确!
\n");
}
i--;
free(t);
printf("删除成功!
\n");
}
//查找
voidsearch(Linklist&h,intm){
intn=1,j;
Linklistp=h->next;
while(nnext!
=NULL)
{
p=p->next;
n++;
}
printf("消费号为%d\n",m);
printf("身份证为%s\n",p->;
printf("消费者姓名为%s\n",p->;
printf("电话号码为%s\n",p->;
}
intmain(){
intj=1;
Linklisth;
while(j){
printf("创立顾客取货信息,请选择1\n");
printf("修改顾客取货信息,请选择2\n");
printf("删除顾客取货信息,请选择3\n");
printf("查询顾客取货信息,请选择4\n");
scanf("%d",&j);
switch(j){
case0:
break;
case1:
create(h);
break;
case2:
printf("请输入修改的位置:
");
scanf("%d",&j);
change(h,j);
break;
case3:
printf("请输入删除的位置:
");
scanf("%d",&j);
Listdelete(h,j);
break;
case4:
printf("请输入顾客取货号:
");
scanf("%d",&j);
search(h,j);
break;
default:
printf("输入错误。
\n");
}
}
system("pause");
return0;
}
4系统测试
运行程序进入主界面
1主界面
输入1,创建顾客取货信息。
2建立新的取货信息
输入2进入修改顾客信息界面
3修改顾客取货信息
输入3进入删除顾客取货信息
4删除顾客取货信息
输入4进入查询顾客取货信息界面
5查询顾客取货信息
第六章结语
这次的程序设计实验是我们进入大学以来学习程序设计结果的一次大检验。
自己动手,自己发现问题和解决问题。
发现了自己的许多不足。
平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上机运行,解决其中大部分问题,当然还存在一些问题没有解决。
我相信在以后的学习中能够解决好它们。
此外,在系统调试阶段,我发还现了很多细节方面的不足,使我认识到设计一个系统并非想象中那么简单,而是需要考虑各个方面结果的。
通过本次课程设计,我加深了对顺序存储结构的理解,更加熟悉了顺序表的基本操作,还有文件读写方面的知识得到了回顾。
还有一点体会就是,书上和老师教的内容是有限的,我们需要不断地靠自己去学习,向他人请教,了解和掌握更多的知识,这样我们才能编出更好的程序。