还剩38页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
《数据结构》课程设计报告信息工程学院计算机科学与技术专业题目:仓库管理系统(线性表的应用)日期2011年12月30日程序设计书目录
一、程序设计目标
二、问题描述
三、需求分析(说明课程设计的任务)
四、概要设计(说明课程设计中用到的抽象数据类型的定义、主程序的流程以及各程序模块之间的调用关系等)
五、详细设计(实现程序模块的具体算法)
六、软件说明书(给出软件应如何使用,使用时的注意事项)
七、源程序清单(要求400行以上,要有注释说明)
八、测试报告(调试过程中遇到的问题及解决方法,并列出测试结果,包括输入和输出)
九、课程设计总结程序设计书
1.程序设计目标:1程序设计我们可以巩固书本上的知识,复习运用的语言,比如说你会对指针,结构体有更加深入的理解全面的理解数据结构,并运用它2我们一些书上的问题看似容易,但当我们自己动手的时候,就可以现,我们一些思想上的错误3在这编程中,我们养成了一种很好的编程习惯以防错误的发生4处于将自己的程序装扮的更漂亮,我们发挥了各自的头脑,学习了不同的表现手法5通过这次课程设计,培养了团队合作精神,为以后的多人任务的完成提供了基础
2.问题描述建立一个仓库管理程序,实现建立表,对货物的增加,删除,查找,更改,显示当前货物以及建立新仓库
3.需求分析企业的库存管理往往是很复杂、很繁琐的由于所掌握的物资种类众多,出入库、管理、供销商的渠道各有差异,各个企业之间的管理体制不尽相同,因此仓库的库存管理必须编制一套库存管理系统,实现计算机化操作,而且必须根据企业的具体情况制定相应的方案
3.概要设计
(1)定义一个货物结构体intconst__x=10;intconsttime=10;intx;typedefstructdnode{inttypenumber;//编号chartypename
[10];//货名inttypecounter;//数量structdnode*prior*next;}dlnode*dlist;
(2)动画效果1action1;
(3)动画效果2Action2;
(4)动画效果3Action3;
(5)动画效果4Action4;
(6)尾插入法建表voidAddHeaddlnode*head;
(7)判断是否为空的函数intIsEmptydlnode*head;
(8)查找函数,有三个子函数,按编号,货名,数量voidFindMedlnode*head;
(9)按编号查找返回节点dlistFindNumberdlnode*head;10按货名查找voidFindNamedlnode*head;11按数量查找voidFindCounterdlnode*head;
(12)显示当前货物存储情况voiddisplaydlnode*head;13是否继续,调用完相应功能函数,任意键继续voidContinuldlnode*head;
(14)删除函数先显示当前情况,再删除.voidDeletdlnode*head;15插入函数先显示当前情况,再插入voidInsertdlnode*head;
(16)修改函数先显示当前情况,再修改voidChangedlnode*head;17功能菜单函数,包含增,删,查,改voidMenudlnode*head;
(18)主菜单,调用菜单函数voidMenu1;
(19)主函数调用actin.void__in;
5.详细设计主要程序的介绍1主函数先对head初始化,然后调用Action1Action2(),Action3(),有Menuhead调用Action4;程序:void__in{systemcolor2F;head-next=NULL;rear=head;action1;action2;action3;Menuhead;}2Action4用星号的方式,表现出主菜单
1.我的仓库
2.新的仓库然后调用voidMenu;3Menu函数负责接收数12然后进入功能菜单函数程序:voidMenudlnode*head{systemcls;action4;cout输入你的选择endl;cinm;whilem
[0]!=1m
[0]!=2||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}ifm
[0]==1Menu1;else{head-next=NULL;rear=head;Menu1;}}4Menu1附有增,删,查,改功能子选择,根据输入的数字的不同,使用switch分别调用相应函数,然后调用Continul函数程序:voidMenu1{systemcls;forx=-1;x10;x++{ifx==9cout=======================================endl;ifx8cout*****\t
1.仓库的建立\t*****endl;ifx7cout*****\t
2.货物的插入\t*****endl;ifx6cout*****\t
3.货物的查找\t*****endl;ifx5cout*****\t
4.货物的删除\t*****endl;ifx4cout*****\t
5.货物的更改\t*****endl;ifx3cout*****\t
6.当前货物\t*****endl;ifx2cout*****\t
7.回主菜单\t*****endl;ifx1cout\t\t===============================endl;ifx0cout\t\t****endl;ifx-1cout\t=====宗旨:精益求精=========endl;Sleeptime;ifx!=9systemcls;}cout输入你的选择endl;cinm;whilem
[0]1||m
[0]7||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}switchm
[0]{case1:AddHeadhead;Continulhead;break;case2:Inserthead;Continulhead;break;case3:FindMehead;Continulhead;break;case4:Delethead;Continulhead;break;case5:Changehead;Continulhead;break;case6:displayhead;Continulhead;break;case7:Menuhead;break;}}5功能菜单函数选择1,调用AddHead函数,先判断是否继续操作,输入1继续,输入2返回功能菜单尾插入法建表主要是先申请一个头结点每次循环申请一个ptr节点,首先将q指向head,然后q的下一个节点设为ptrptr的前一个节点设为headq=ptr,如此便建立了一个双向链表,判断是否继续程序:voidAddHeaddlnode*head{systemcls;dlnode*q;q=head;cout
1.继续操作endl;cout
2.放弃操作endl;cout输入你的选择endl;cinm;whilem
[0]!=1m
[0]!=2||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}ifm
[0]==2Menu1;m
[0]=y;whilem
[0]==y||m
[0]==Y//编号为-1,作为结束标志{cout请顺序”endl”输入编号货名数量endl;ptr=dlnode*__llocsizeofdlnode;cinptr-numberptr-nameptr-counter;q-next=ptr;ptr-prior=q;q=ptr;cout是否继续建立y/nendl;cinm;whilem
[0]!=ym
[0]!=Ym
[0]!=nm
[0]!=N||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}}ifq!=NULLq-next=NULL;}6判断是否为空已完好判断head的下一个节点是否为空intIsEmptydlnode*head{returnhead-next==NULL;}
(7)查找,并返回,给出三个选择,1为按编号查找,2为按货名查找,3为按数量查找根据输入的不同数字,调用分别调用相应的函数voidFindMedlnode*head{systemcls;ifIsEmptyhead{cout无货物储备endl;}else{cout查找部分endl;cout
1.按编号查找endl;cout
2.按货名查找endl;cout
3.按数量查找endl;cout
4.直接显示全部endl;cout
5.回主菜单endl;cout请输入endl;cinm;whilem
[0]1||m
[0]5||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}switchm
[0]{case1:cout请输入编号endl;FindNumberhead;break;case2:FindNamehead;break;case3:cout请输入数量endl;FindCounterhead;break;case4:displayhead;Continulhead;break;case5:Menu1;break;}}}
(8)按编号查找,不断的ptr=ptr-next直到ptr的编号等于你要查询的编号因为一个货物子对应与一个编号,所以可以用编号函数返回一个节点的形式,来辅助插入,删除,更改函数/**************************************按编号查找**************************************/dlistFindNumberdlnode*head{cinx;ptr=head;m
[0]=0;whileptrptr-number!=x{ptr=ptr-next;}ifptr!=NULL{cout\t编号\t\t货名\t\t数量endl;cout\tptr-number\t\t;coutptr-name\t\t;coutptr-counterendl;m
[0]=1;}ifm
[0]==0cout无此货物endl;returnptr;}
(9)按货名查找,不断的ptr=ptr-next直到结束当发现ptr的ptr的货名与你查询的货名一样时,不能终止,因为有相同货名的货物voidFindNamedlnode*head{cout请输入货名endl;cinm;ptr=head;x=0;whileptr{ifstrcmpptr-namem==0{cout\t编号\t\t货\t\t数量endl;cout\tptr-number\t\t;coutptr-name\t\t;coutptr-counterendl;x=1;}ptr=ptr-next;}ifx==0cout无此货物endl;}
(10)按数量查询,与按编号查找相似,但也得考虑到货物的数量有可能相同voidFindCounterdlnode*head{cinx;ptr=head;m
[0]=0;whileptr-next{ifptr-counter==x{cout\t编号\t\t货名\t\t数量endl;cout\tptr-number\t\t;coutptr-name\t\t;coutptr-counterendl;m
[0]=1;}ptr=ptr-next;}ifm
[0]==0cout无此货物endl;}
(11)显示当前的货物存储情况,不断输出ptr的编号,货名,数量然后ptr=ptr-next;直到为空voiddisplaydlnode*head{systemcls;ptr=head-next;ifIsEmptyhead{cout无货物储备endl;}else{cout\t编号\t\t货名\t\t数量endl;whileptr{cout\tptr-number\t\t;coutptr-name\t\t;coutptr-counterendl;ptr=ptr-next;}}}
(12)插入函数,首先得显示当前情况,然客户知道是否有必要插入,可能已经处在了你想插入的货物插入先确定你在哪个节点后面插入,所以调用按编号查找确定ptr然后在分是否是最后一个节点,因为这两中情况操作不一样voidInsertdlnode*head{systemcls;displayhead;cout
1.继续操作endl;cout
2.放弃操作endl;cout输入你的选择endl;cinm;whilem
[0]!=1m
[0]!=2||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}ifm
[0]==2Menu1;ifIsEmptyhead;else{cout输入你要插入节点的编号endl;ptr=FindNumberhead;ifptr==NULL;else{q=dlnode*__llocsizeofdlnode;cout输入新节点的编号货名,数量endl;cinq-numberq-nameq-counter;ifptr-next==NULL{ptr-next=q;q-prior=ptr;q-next=NULL;cout插入成功endl;}else{ptr-next-prior=q;q-next=ptr-next;ptr-next=q;q-prior=ptr;cout插入成功endl;}}}}
(13)删除函数跟插入函数相近也得分是不是最后一个节点voidDeletdlnode*head{systemcls;displayhead;cout
1.继续操作endl;cout
2.放弃操作endl;cout输入你的选择endl;cinm;whilem
[0]!=1m
[0]!=2||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}ifm
[0]==2Menu1;ifhead-next!=NULL{cout输入你要删除节点的编号endl;q=FindNumberhead;ifq==NULL;elseifq-next==NULLq-prior-next=NULL;else{q-prior-next=q-next;q-next-prior=q-prior;}freeq;cout删除成功!endl;}}
(14)更改函数,就直接按编号查找到一个节点,在从新输入voidChangedlnode*head{systemcls;displayhead;cout
1.继续操作endl;cout
2.放弃操作endl;cout输入你的选择endl;cinm;whilem
[0]!=1m
[0]!=2||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}ifm
[0]==2Menu1;ifIsEmptyhead;else{cout输入你要修改节点的编号endl;q=FindNumberhead;ifptr==NULLcout无此货物endl;else{cout输入新的”endl”编号货名,数量endl;cinq-numberq-nameq-counter;cout修改成功!endl;}}}6软件说明书经过一番动画的欣赏后出现选择字样的时候,你这时就正式进入了我们仓库输入你的选择,开始时选择我的仓库和建立新的仓库时等同的进入用便到了我们的功能菜单区,里面有一系列功能,因为有些功能是建立在有货物的前提之上的,所以你先要选择仓库的建立,然后在进行其他功能每次建立仓库都会保存已有的货物,所以你并不用担心会导致货物信息的丢失如果货物的堆积让你头痛,你可以返回主菜单,建立新的仓库事项:我们的程序就有比较高的健壮性,一般情况下你不用担心系统的崩溃,但在输入编号,货名,数量的时候请按就规范输入,否则将出现错误7源程序清单#includeiostream#include__lloc.h//有的软件不需这个也可以识别__lloc#includewindows.h//能有延时,设置颜色等函数usingnamespa__std;typedefintinttype;intconst__x=10;//将其声明为全局变量,可以方便维护intconsttime=10;intx;charm
[20];typedefcharchartype;typedefstructdnode{inttypenumber;//编号chartypename
[10];//货名inttypecounter;//数量structdnode*prior*next;}dlnode*dlist;dlnode*ptr=dlnode*__llocsizeofdlnode;//申请一个ptr指针节点dlnode*q=dlnode*__llocsizeofdlnode;//申请一个q指针节点dlnode*head=dlnode*__llocsizeofdlnode;//申请头结点dlnode*rear=dlnode*__llocsizeofdlnode;//申请尾结点voidAddHeaddlnode*head;//前向声明有利于函数间的调用intIsEmptydlnode*head;voidFindMedlnode*head;dlistFindNumberdlnode*head;voidFindNamedlnode*head;voidFindCounterdlnode*head;voiddisplaydlnode*head;voidContinuldlnode*head;voidDeletdlnode*head;voidInsertdlnode*head;voidChangedlnode*head;voidMenudlnode*head;voidMenu1;/**************************************显示3**************************************/voidaction1{inti;fori=0;i5;i++{coutendl;}cout\t\t\t*****************endl;cout\t\t\t*****************endl;cout\t\t\t***endl;cout\t\t\t***endl;cout\t\t\t***endl;cout\t\t\t****************endl;cout\t\t\t****************endl;cout\t\t\t***endl;cout\t\t\t***endl;cout\t\t\t***endl;cout\t\t\t*****************endl;cout\t\t\t*****************endl;Sleep1000;systemcls;}/**************************************显示2**************************************/voidaction2{inti;fori=0;i5;i++{coutendl;}cout\t\t\t*****************endl;cout\t\t\t*****************endl;cout\t\t\t***endl;cout\t\t\t***endl;cout\t\t\t***endl;cout\t\t\t****************endl;cout\t\t\t****************endl;cout\t\t\t***endl;cout\t\t\t***endl;cout\t\t\t***endl;cout\t\t\t*****************endl;cout\t\t\t*****************endl;Sleep1000;systemcls;}/**************************************显示1**************************************/voidaction3{inti;fori=0;i5;i++{coutendl;}cout\t\t\t\t***endl;cout\t\t\t\t***endl;cout\t\t\t\t***endl;cout\t\t\t\t***endl;cout\t\t\t\t***endl;cout\t\t\t\t***endl;cout\t\t\t\t***endl;cout\t\t\t\t***endl;cout\t\t\t\t***endl;cout\t\t\t\t***endl;Sleep1000;systemcls;}/**************************************显示房子与菜单**************************************/voidaction4{inti;fori=0;i2;i++{coutendl;}cout\t\t*********************************endl;cout\t\t***endl;cout\t\t***endl;cout\t\t***endl;cout\t\t***endl;cout\t\t****endl;cout\t\t****endl;cout\t\t***********************************endl;cout\t\t***endl;cout\t\t***endl;cout\t\t*
1.*我的仓库*endl;cout\t\t***endl;cout\t\t***endl;cout\t\t*
2.*新的仓库*endl;cout\t\t***endl;cout\t\t***endl;cout\t\t***endl;cout\t\t***endl;cout\t\t********************************endl;}/**************************************尾插入法建表**************************************/voidAddHeaddlnode*head{systemcls;dlnode*q;q=rear;cout
1.继续操作endl;cout
2.放弃操作endl;cout输入你的选择endl;cinm;whilem
[0]!=1m
[0]!=2||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}ifm
[0]==2Menu1;m
[0]=y;whilem
[0]==y||m
[0]==Y//编号为-1,作为结束标志{cout请顺序输入编号货名数量endl;ptr=dlnode*__llocsizeofdlnode;cinptr-numberptr-nameptr-counter;q-next=ptr;ptr-prior=q;q=ptr;cout是否继续建立y/nendl;cinm;whilem
[0]!=ym
[0]!=Ym
[0]!=nm
[0]!=N||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}}rear=q;ifq!=NULLq-next=NULL;}/**************************************判断是否为空**************************************/intIsEmptydlnode*head{returnhead-next==NULL;}/**************************************查找,并返回**************************************/voidFindMedlnode*head{systemcls;ifIsEmptyhead{cout无货物储备endl;}else{cout查找部分endl;cout
1.按编号查找endl;cout
2.按货名查找endl;cout
3.按数量查找endl;cout
4.直接显示全部endl;cout
5.回主菜单endl;cout请输入endl;cinm;whilem
[0]1||m
[0]5||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}switchm
[0]{case1:cout请输入编号endl;FindNumberhead;break;case2:FindNamehead;break;case3:cout请输入数量endl;FindCounterhead;break;case4:displayhead;Continulhead;break;case5:Menu1;break;}}}/**************************************按编号查找**************************************/dlistFindNumberdlnode*head{cinx;ptr=head;m
[0]=0;whileptrptr-number!=x{ptr=ptr-next;}ifptr!=NULL{cout\t编号\t\t货名\t\t数量endl;cout\tptr-number\t\t;coutptr-name\t\t;coutptr-counterendl;m
[0]=1;}ifm
[0]==0cout无此货物endl;returnptr;}/**************************************按货名查找**************************************/voidFindNamedlnode*head{cout请输入货名endl;cinm;ptr=head;x=0;whileptr{ifstrcmpptr-namem==0{cout\t编号\t\t货\t\t数量endl;cout\tptr-number\t\t;coutptr-name\t\t;coutptr-counterendl;x=1;}ptr=ptr-next;}ifx==0cout无此货物endl;}/**************************************按数量查找**************************************/voidFindCounterdlnode*head{cinx;ptr=head;m
[0]=0;whileptr-next{ifptr-counter==x{cout\t编号\t\t货名\t\t数量endl;cout\tptr-number\t\t;coutptr-name\t\t;coutptr-counterendl;m
[0]=1;}ptr=ptr-next;}ifm
[0]==0cout无此货物endl;}/**************************************显示货物存储情况**************************************/voiddisplaydlnode*head{systemcls;ptr=head-next;ifIsEmptyhead{cout无货物储备endl;}else{cout\t编号\t\t货名\t\t数量endl;whileptr{cout\tptr-number\t\t;coutptr-name\t\t;coutptr-counterendl;ptr=ptr-next;}}}/**************************************删除函数**************************************/voidDeletdlnode*head{systemcls;displayhead;cout
1.继续操作endl;cout
2.放弃操作endl;cout输入你的选择endl;cinm;whilem
[0]!=1m
[0]!=2||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}ifm
[0]==2Menu1;ifhead-next!=NULL{cout输入你要删除节点的编号endl;q=FindNumberhead;ifq==NULL;elseifq-next==NULLq-prior-next=NULL;else{q-prior-next=q-next;q-next-prior=q-prior;}freeq;cout删除成功!endl;}}/**************************************插入函数插入在ptr后面**************************************/voidInsertdlnode*head{systemcls;displayhead;cout
1.继续操作endl;cout
2.放弃操作endl;cout输入你的选择endl;cinm;whilem
[0]!=1m
[0]!=2||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}ifm
[0]==2Menu1;ifIsEmptyhead;else{cout输入你要插入节点的编号endl;ptr=FindNumberhead;ifptr==NULL;else{q=dlnode*__llocsizeofdlnode;cout输入新节点的编号货名,数量endl;cinq-numberq-nameq-counter;ifptr-next==NULL{ptr-next=q;q-prior=ptr;q-next=NULL;cout插入成功endl;}else{ptr-next-prior=q;q-next=ptr-next;ptr-next=q;q-prior=ptr;cout插入成功endl;}}}}/**************************************货物信息的修改**************************************/voidChangedlnode*head{systemcls;displayhead;cout
1.继续操作endl;cout
2.放弃操作endl;cout输入你的选择endl;cinm;whilem
[0]!=1m
[0]!=2||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}ifm
[0]==2Menu1;ifIsEmptyhead;else{cout输入你要修改节点的编号endl;q=FindNumberhead;ifptr==NULLcout无此货物endl;else{cout输入新的编号货名,数量endl;cinq-numberq-nameq-counter;cout修改成功!endl;}}}/**************************************menu函数主菜单**************************************/voidMenudlnode*head{systemcls;action4;cout输入你的选择endl;cinm;whilem
[0]!=1m
[0]!=2||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}ifm
[0]==1Menu1;else{head-next=NULL;rear=head;Menu1;}}/**************************************是否返回菜单**************************************/voidContinuldlnode*head{systempause;Menu1;}/**************************************menu1函数进入1后的菜单**************************************/voidMenu1{systemcls;forx=-1;x10;x++{ifx==9cout=======================================endl;ifx8cout*****\t
1.仓库的建立\t*****endl;ifx7cout*****\t
2.货物的插入\t*****endl;ifx6cout*****\t
3.货物的查找\t*****endl;ifx5cout*****\t
4.货物的删除\t*****endl;ifx4cout*****\t
5.货物的更改\t*****endl;ifx3cout*****\t
6.当前货物\t*****endl;ifx2cout*****\t
7.回主菜单\t*****endl;ifx1cout\t\t===============================endl;ifx0cout\t\t****endl;ifx-1cout\t=====宗旨:精益求精=========endl;Sleeptime;ifx!=9systemcls;}cout输入你的选择endl;cinm;whilem
[0]1||m
[0]7||m
[1]!=\0{cout输入有误,请重新输入endl;cinm;}switchm
[0]{case1:AddHeadhead;Continulhead;break;case2:Inserthead;Continulhead;break;case3:FindMehead;Continulhead;break;case4:Delethead;Continulhead;break;case5:Changehead;Continulhead;break;case6:displayhead;Continulhead;break;case7:Menuhead;break;}}void__in{systemcolor2F;head-next=NULL;rear=head;action1;action2;action3;Menuhead;}8测试报告(调试过程中遇到的问题及解决方法,并列出测试结果,包括输入和输出)问题1:应该如何让自己的动画效果更引人注目?解决:变化背景颜色,改清屏的地方清屏,保持干净的运行环境问题2:不太明白建立新的仓库如何实现?解决:就是初始化,将记录清空问题3:调用完相应的功能该如何返回解决:一开始我用了显示几秒用返回,但发现效果不是很好,于是学习了一下同学的做法,学会了调用system“pause”问题4:如何在vc++
6.0中打开一个音乐,或__?未解决:我上网查百度知道,有相关的代码,但涉及一些比较底层的问题,如音响的端口等所以这个问题有待解决,但我从中学一些新知识,而且懂得了山外有山,我们要学习的还有很多问题
5.在菜单中有选择功能,但如何防止输入一串字符后,输出”操作有误”的代码不会死循环解决:其实这个问题在以前也困扰着我,但一直没找到好方法于是我有看了同学的代码,发现有的人的安全性挺高,问得是将输入的数字用字符串的形式接收如cinm然后限定m
[0]m
[1].运行情况概览:主菜单下图功能菜单下图下图建表操作下图插入操作下图查找操作之按编号查找下图查找之按货名查找下图查找之按数量查找下图现实当前货物存储情况下图删除操作下图修改操作9课程设计总结历时三周的课程设计,是我入学以来的一次大战役,个人觉得也是一次大胜利认识上的提升:一直都没有写过400多行的代码的我,一直以为写出直接看着题目敲击键盘就可以,没必要进行各种分析,但是在这次课程设计中,我深深的感觉到了规划的重要性没有一个大体规划,会导致思维上的混乱,程序上的错误,既不方便别人读写,也不方便我们发现错误,并改正错误所以这也是___我们第一周都花功夫在策划上,六小时砍树,四小时磨刀思维上的进步:一个好的程序需要强悍的编程能力,更需要一个良好的思维这一点决定了你的代码是否拥有高的利用率,跟c++中的类的作用是一样的代码的利用率高可以节约不少阅读时间,方便更改代码,就像牵着牛鼻子走,还能节省空间,减小运行时间这次课程设计,我们尽可能让每一个函数都各司其职,使结构明确基础知识技能的提高:首先是编程语言上的提高,通过对函数的实现,货物的增加,查找,删除,我对于结构体进一步认识,并且了解结构体的结构,能够识别跟多样的结构体类型结构体中也不乏指针的运用,指针的运用可以不用传递庞大的节点信息,只需要一个地址,所以可以更高效的执行程序老师说c语言的精髓在于指针,而之前我对指针知之甚少其次是数据结构的实现原理认识的提高,如今我已经知道链表是如何形成链的,函数的增加,查找,删除,更改等功能是如何实现的个人编程良好习惯的养成习惯的养成不是一朝一夕的事,但这一次的战斗有提高了我对好的编程习惯的重视,缩进,注释等等团队合作的意识的形成一个大的程序不是单枪匹马杀出来的,这是经过明确的分工,意见的统一产生的所以要学会了解每个人的特长,进行分工__每个人___,形成统一的,完备的体系仓库管理系统逻辑图一编号查找更改函数当前货物编号查找货名查找数量查找当前货物继续函数仓库的建立货物的查找货物的插入货物的删除货物的更改当前货物回主菜单功能菜单我的仓库新的仓库初始化主菜单插入,删除,更改略同编号查找插入函数当前货物编号查找删除函数当前货物编号查找更改函数当前货物Continual函数Continual函数Continual函数功能菜单函数功能菜单函数功能菜单函数仓库管理系统逻辑图二。