【最新资料,WOR文档,可编辑修改】
目录
摘要 ............................. 1
1设计内容及要求 ......................................................... 1
内容描述 ....................................................... 1
基本要求 ...................................................... 1
2详细设计 ........................................................... 1
概要设计 ...................................................... 1
功能模块详细设计 .............................................. 1
程序流程图 ..................................................... 4
3源代码 ............................................................ .5
4程序结果 ........................................................... 9
5总结 ............................................................... .12
摘要
物流信息管理系统是利用单链表实现信息管理,进而掌握 针,函数(系统函数,自定义函数)等 C语言知识。
C 语言中的结构体,链表,指
本文通过利用模块化程序设计思想,使用单链表和结构体等编写出的创建,删除,查询 等功能的物流信息管理系统。通过完成这个程序设计让我们熟悉并掌握 c 语言中使用结构 体,单链表,指针,函数,和模块化设计思想。
关键词 结构体,链表,指针,函数
1 设计内容及要求
内容描述
对客户的基本信息进行存储,利用取货号来查询顾客信息,核对信息后方可取货。
基本要求
1. 采用一定的存储结构进行客户信息的存储;
2. 对客户的信息可以进行修改、删除、查询;
2 详细设计
概要设计
本系统用到的主要数据结构为数组和文件。一个数组对应一个客户,里面用 3 个字符串
分别存储着用户的客户号、姓名和电话号码。然后将数组写入文件,查询时读取文件,提取 相应信息。
功能模块详细设计
本程序运用链表对客户信息进行存储,首先对结点进行定义,结点中的数据域分别定义 了取货人的取货号、身份证、姓名、电话号码,其中身份证用了字符型数组进行定义,然后 定义了客户取货链表,每添加一个取货人,先分配内存,再添加取货人的信息,之后将链表 中最后一个指针指向该新的取货人,删除时,需先找到该取货人前面的取货人,直接将其指 针指向删除取货人的下一个取货人,修改信息时,先找到该去人,选择修改的内容,再进行 修改。
void create(Linklist &h){
Linklist s,t;
int j=1;
char x;
h=(Listnode *)malloc(sizeof(Listnode));
h->next=NULL;t=h;
while(j){
s=(Listnode*)malloc(sizeof(Listnode));
printf(\" 顾客取货号为 %d\\n\
printf(\" 请输入身份证号码: \"); scanf(\"%c\
scanf(\"%s\
printf(\"\\n\");
printf(\" 请输入姓名: \");
scanf(\"%c\
scanf(\"%s\
printf(\"\\n\");
printf(\" 请输入联系号码: \");
scanf(\"%c\
scanf(\"%s\
printf(\"\\n\");
s->next=NULL;t->next=s;t=s;
printf(\" 全部输完,请输入 0 ,否则输入 1...\\n\");
scanf(\"%d\
printf(\"\\n\");
t->next=NULL;
}
该功能主要实现顾客信息的存储, s 作为数据存储节点,把顾客姓名,身份证,电话号 码等信息存
储进去。 i 作为游标,定位该节点位置方便数据查找。
void change(Linklist&h,int m)
{
int a,j=1;
float n;
Linklist t=h;
printf(\"Change customer's Identity:1;Name:2;Tel:3; \\n\");
scanf(\"%d\
printf(\"\\n\");
while(j { t=t->next; j++; printf(\"OK!\\n\"); switch(a){ case 1:printf(\"Please enter the Identity!\"); scanf(\"%s\ break; case 2:printf(\"Please enter the Name!\"); scanf(\"%s\ break; case 3:printf(\"Please enter the Tel!\\n\"); scanf(\"%f\ break; } printf(\" 修改成功 !\\n\"); } 该功能主要实现顾客信息的修改,输入所需要修改的选项,然后可以根据选项修改所对应的信息,然后修改完成。 void Listdelete(Linklist&h,int m) int j=1; Linklist q=h,t; if(m==1) { t=h; h=h->next; } else { while(j { 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\"); } 该功能主要实现顾客信息的删除,通过删除节点来删除节点中说包含的信息,删除节点现目标。 void search(Linklist &h,int m){ int n=1,j; Linklist p=h->next; while(n 既可实p=p->n ext; n++; } printf(\" 消费号为%d\\n\ printf(\" 身份证为%s\\n\ printf(\" 消费者姓名为%s\\n\ prin tf(\" 电话号码为%s\\n\ 该功能主要实现顾客信息的查找,通过查找节点所对应的游标位置既可找到该节点, 找该节点可调出该节点所存储的信息,达到查找目的。 程序流程图 物流信息管理系统因具备以下功能有流程图表示,如下图 修改取 物流信息管理 \\ £信息 系统 \\ ---- —— 查询取 货信息 删除 取货 信息 函数流 swith(j) case 1:create(h); break; 调用创建函数 case 2:printf(\" 请输入修改的位置:\"); sca nf(\"%d\调用修改函数 cha nge(h,j); break; case 3:printf(” 请输入删除的位置:\"); sca nf(\"%d\Listdelete(hj); 调用删除函数 break; case 4:printf(\" 请输入顾客取货号:\"); sca nf(\"%d\search(h,j); 调用查找函数 break; default:printf(\" 输入错误。\\n\"); } Creat :该函数是用来录入顾客信息,使得用户可以输入姓名、电话号码、身份证这三种取 货信息。 Change:该函数是用来修改顾客信息,使用户可以修改姓名、电话号码、身份证这三种取货 信 息。 Listdelete :该函数用来删除链表中的顾客信息。 Search:该函数是用来查找顾客所属的取货信息。 3源代码 #in clude<> #in clude<> #in clude<> #in clude<> typedef struct Datatype { int m; char Ide ntity[18]; char Name[20]; char Tel[18]; }Datatype; .\\n\"); scanf(\"%d\ printf(\"\\n\"); i++; } t->next=NULL; } // 修改 void change(Linklist&h,int m) { int a,j=1; float n; Linklist t=h; printf(\"Change customer's Identity:1;Name:2;Tel:3; \\n\"); scanf(\"%d\ printf(\"\\n\"); while(j { t=t->next; j++; } printf(\"OK!\\n\"); switch(a){ case 1:printf(\"Please enter the Identity!\"); scanf(\"%s\ break; case 2:printf(\"Please enter the Name!\"); scanf(\"%s\ break; case 3:printf(\"Please enter the Tel!\\n\"); scanf(\"%f\ break; printf(\" 修改成功 !\\n\"); } // 删除 void Listdelete(Linklist&h,int m) { int j=1; Linklist q=h,t; if(m==1) { t=h; h=h->next; } else { while(j 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\"); } // 查找 void search(Linklist &h,int m){ int n=1,j; Linklist p=h->next; while(n { p=p->next; n++; } printf(\" 消费号为 %d\\n\); printf(\" 身份证为 %s\\n\ printf(\" 消费者姓名为 %s\\n\ printf(\" 电话号码为 %s\\n\ } int main(){ int j=1; Linklist h; while(j){ printf(\" 创立顾客取货信息,请选择 1\\n\"); printf(\" 修改顾客取货信息,请选择 2\\n\"); printf(\" 删除顾客取货信息,请选择 3\\n\"); printf(\" 查询顾客取货信息,请选择 4\\n\"); scanf(\"%d\switch(j){ case 0:break; case 1:create(h); break; case 2:printf(\" 请输入修改的位置 :\"); scanf(\"%d\ change(h,j); break; case 3:printf(\" 请输入删除的位置 scanf(\"%d\ Listdelete(h,j); break; case 4:printf(\" 请输入顾客取货号 scanf(\"%d\ search(h,j); break; default:printf(\" 输入错误。 \\n\"); } } system(\"pause\"); return 0; } :\"); :\"); 4 系统测试 运行程序进入主界面 1 主界面 输入 1,创建顾客取货信息。 2 建立新的取货信息 输入 2 进入修改顾客信息界面 3 修改顾客取货信息 输入 3 进入删除顾客取货信息 4 删除顾客取货信息 输入 4 进入查询顾客取货信息界面 5 查询顾客取货信息 第六章 结语 这次的程序设计实验是我们进入大学以来学习程序设计结果的一次大检验。自己动手, 自己发现问题和解决问题。 发现了自己的许多不足。 平时没有掌握好的知识在这次实验中彻 底暴露出来,经过不断思考,不断查阅资料和上机运行,解决其中大部分问题,当然还存在 一些问题没有解决。我相信在以后的学习中能够解决好它们。 此外,在系统调试阶段,我发还现了很多细节方面的不足,使我认识到设计一个系统并 非想象中那么简单,而是需要考虑各个方面结果的。 通过本次课程设计, 我加深了对顺序存储结构的理解, 更加熟悉了顺序表的基本操作, 还有文件读写方面的知识得到了回顾。 还有一点体会就是,书上和老师教的内容是有限的,我们需要不断地靠自己去学习,向 他人请教,了解和掌握更多的知识,这样我们才能编出更好的程序 因篇幅问题不能全部显示,请点此查看更多更全内容