仓库管理系统c语言程序设计报告_第1页
仓库管理系统c语言程序设计报告_第2页
仓库管理系统c语言程序设计报告_第3页
仓库管理系统c语言程序设计报告_第4页
仓库管理系统c语言程序设计报告_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

信息科学与工程学院课程设计报告班级:通信一班姓名(学号):实验项目名称:c语言程序设计实验室(中心):信息科学与工程学院信息技术实验室指导教师:李益才实验完毕时间:2023年6月28日序号项目标准评分1系统演示(功能)(50%)按规定完毕系统功能且界面和谐容错能力强(45-50)按规定完毕系统功能界面一般有较好的容错能力(40-44)基本完毕系统功能有一定的容错能力(35-39)基本完毕系统功能(30-34分)未完毕系统功能或别人代做或抄袭(15)2课程设计说明书(50%)课程设计书各项目认真填写,具有清楚的设计思绪及软件测试结果分析(45-50)课程设计书各项目认真填写,具有较为清楚的设计思绪并对软件测试结果进行了较为清楚的分析(40-44)课程设计书各项目认真填写,设计思绪对的(35-39)课程设计书进行为较为认真的填写(30-34)课程设计书有未完毕项或各项填写不属实或别人代做或抄袭(15)教师签字总分一、题目仓库管理系统二、功能描述该系统将输入进系统的仓库中物品的基本信息(涉及货号、名称、单价、库存数量、品牌)进行解决,可以进行:(1)、按物品价格降序输出、按库存数量升序排列。(2)、修改制定物品的信息。(3)、删除指定物品的信息。(4)、在指定物品前或后再插入一个物品的信息。(5)、记录同一种品牌的数量。三、概要设计系统功能模块图进入系统进入系统数据按序输出 数据按序输出 修改特定物品的信息删除特定物品的信息插入物品信息记录指定品牌物品的数量数据文献载入数据文献输入磁盘物品信息输入退出系统具体设计1、结构的定义:数组结构体一共有两个:链表结构体一共有一个:structinformation//物品信息机构structinformation//物品信息机构{{ intArtnumber;intArtnumber; chargoodsname[20];chargoodsname[20]; floatunitprice;floatunitprice;intquantity;intquantity; charbrand[20];charbrand[20];};structinformation*next;structMainfest//仓库信息机构};{structinformation*head;//头指针structinformationdata[Number]; intNum;};structMainfestgoods;2、各个函数的具体设计思想及流程图本系统一共九个函数:(1)voidinputInformation();//对仓库中所有物品的基本信息进行输入(2)voidoutputsort();//按序输出数据(3)voidmodifyInformation();//修改物品信息(4)voiddeleteInformation();//删除物品信息(5)voidinsertInformation();//插入//插入物品信息(6)voidstatistics();//记录//记录相同品牌的物品数量(7)voidsaveInfoToFile();//文献输入到磁盘(8)voidloadInfoFromFile();//文献磁盘载入(9)voidmaon();//主函数其中第七、八个为文献函数,进行文献的存储和载入。主函数main()是一个死循环,每执行玩一个函数都要输出菜单选择,直到选择退出为止。2.1仓库物品基本信息输入函数对物品基本信息进行连续输入,直到所有物品信息都输入完毕,改函数用while循环函数进行连续赋值。(1)、具体流程图如下图所示:开始开始结束已满,结束break判断是否已满结束已满,结束break判断是否已满if(goods.Num==Number)未满,继续Printf()scanf()是否要继续输入if(yn==0)是,继续while(1)否,退出break链表开始开始菜单,选择输入数据函数菜单,选择输入数据函数head=()malloc();建立一个空节点head并分派内存head=()malloc();建立一个空节点head并分派内存temp=()malloc()建立新节点temp并分派内存temp=()malloc()建立新节点temp并分派内存While(1)循环t,printf();输入物品的信息,存入新节点While(1)循环t,printf();输入物品的信息,存入新节点Temp->next=head->next;Temp->next=head->next;Head->next=temp;判断是否要继续输入if()判断是否要继续输入if()是否结束(2)代码说明While语句是把数据输入到内存中,if这里有两个用途:1、用于判断是否尚有空间进行数据输入;2、判断是否还要继续输入。2.2按序输出物品信息对物品的特定信息进行排序后在输出,可以进行按价格降序输出、按库存数量升序输出,这两种输出可以自由选择数组开始选择要排序的元素1、2选择要排序的元素1、2If(2)按数量升序if(1)按价格降序If(2)按数量升序if(1)按价格降序排序sort()排序sort()满足大小关系进行互换满足大小关系进行互换输出,outlist输出,outlist结束结束链表开始选择排序元素选择排序元素按价格降序按价格降序输入sel=1按库存数量升序sel=2按库存数量升序sel=2Sort(sel)排序Sort(sel)排序Outlist()输出Outlist()输出结束结束2.3修改指定物品的信息对数据文献中特定信息惊醒修改,可以修改任何信息开始开始输入指定物品的信息输入指定物品的信息printf()查找指定物品i=search(goodsnum)查找指定物品i=search(goodsnum)判断是否找到指定物品判断是否找到指定物品找到,对错误信息惊醒修改找到,对错误信息惊醒修改结束结束链表开始开始定义结构体指针,*pf=search(),*pb=pf->next定义结构体指针,*pf=search(),*pb=pf->next输入要修改的物品货号printf()输入要修改的物品货号printf()判断是否找到该指定货品判断是否找到该指定货品修改货品信息Printf()scanf()修改货品信息Printf()scanf()输出未找到该货品结束结束2.4删除指定货品信息对磁盘文献中的特定物品信息进行删除数组输入指定物品的信息输入指定物品的信息查找指定物品查找指定物品找到,删除for()找到,删除for(){a[i-1]=a[i]}if判断是否找到指定物品if()判断是否找到指定物品if()goods.Numgoods.Num--;结构体数目减一结束结束链表开始开始定义两个指向结构体的指针pf=search(goodsn定义两个指向结构体的指针pf=search(goodsnum);pb=pf->next;pf=search(goodsnum);pb=pf->next;pf=search(goodsnum);pb=pf->next;输入要删除的货品货号scanf()输入要删除的货品货号scanf()查找指定货品pf=Search查找指定货品pf=Search(goodsname)是否找到指定货品是否找到指定货品是否输出输出“未找到指定货品”删除pf->next=pb->删除pf->next=pb->next;free(pb)结束结束2.5在指定位置插入一个物品的信息(1)流程图数组开始开始输入指定货品的货号scanf()输入指定货品的货号scanf()是否找到指定货品是否找到指定货品选择前插或者后插if()选择前插或者后插if()前插后插for(j=goods.Num;j>i-1;j--)goods.data[j]=goods.data[j-1];该货品及以后货品后移一位for(j=goods.Num;j>i-1;j--)goods.data[j]=goods.data[j-1];该货品及以后货品后移一位for(j=goods.Num;j>i;j--)goods.data[j]=goods.data[j-1];该货品后每一个元素后移一位插入输入要插入的物品信息插入输入要插入的物品信息结束结束链表开始开始定义三个指针*pf,*pb,*temp定义三个指针*pf,*pb,*temp找到插入位置Pf=search(goodsnum)找到插入位置Pf=search(goodsnum)Pb=pf->next判断是否找到指定物品判断是否找到指定物品在内存中开辟一个空节点temp=()malloc(())是在内存中开辟一个空节点temp=()malloc(())输入要插入的物品信息scanf(输入要插入的物品信息scanf(“”,temp->data)选择前插还是后插选择前插还是后插前插后插If(pb->next==NULLIf(head==pf)elseIf(pb->next==NULLIf(head==pf)elsetemp->next=pb;pf->next=temp;指定元素为头节点后第一个元素,插入temp->next=pb;pf->next=temp;指定元素为头节点后第一个元素,插入temp->next=pb->next;pb->next=temp;指定元素为最后一个节点,插入temp->next=pb->next;pb->next=temp;指定元素为最后一个节点,插入结束结束2.6记录指定品牌的库存数量流程图数组开始开始输入要记录的品牌名scanf()输入要记录的品牌名scanf()for(i=0;i<goods.Num;i++)for(i=0;i<goods.Num;i++)循环求和Sun+=quantitySun+=quantityif(i==goods.Num)if(i==goods.Num)i=-1;判断是否找到品牌的物品i!=-1?判断是否找到品牌的物品i!=-1?是Printf(“Printf(“为找到该品牌”)printf("%d\n",sum);输出求得的和结束结束链表开始structinformation*p;structinformation*p;P=head->next;输入指定品牌明输入指定品牌明Scanf(“%s”,name)P!=NULLP!=NULL假如是同一品牌,求和sum=sum+data是假如是同一品牌,求和sum=sum+data输出和输出和结束结束2.7、基本数据文献输入磁盘将输入的数据存储到磁盘保持。数组开始开始用fopen()打开一个特定文献,返回值是否为0用fopen()打开一个特定文献,返回值是否为0创建这个文献用fwrite()讲数据写入文献创建这个文献用fwrite()讲数据写入文献Fclose(fp)关闭文献Fclose(fp)关闭文献结束结束链表开始开始structinformation*p;structinformation*p;用fopen()打开一个特定文献,返回值是否为0用fopen()打开一个特定文献,返回值是否为0建立这个文献是建立这个文献打开文献,并使p=head->next;否打开文献,并使p=head->next;p!=NULLp!=NULLfclose(fp);fclose(fp);并用while()fwrite()进行循环输入否并用while()fwrite()进行循环输入结束结束2.8、数据文献载入从磁盘文献中讲已经保存了的数据读取到内存中,为以后的数据解决做准备。开始开始用fopen()打开一个特定文献,返回值是否为0用fopen()打开一个特定文献,返回值是否为0是输出“输出“该文献不能被打开”goods.Num==100判断该文献是否已满goods.Num==100判断该文献是否已满是用fread()将文献读取出来打印“存储空间已满,不能再存入用fread()将文献读取出来打印“存储空间已满,不能再存入”Feof(fp)=0?判断文献是否结束Feof(fp)=0?判断文献是否结束Goods.Num++是Goods.Num++Goods.num=100?Goods.num=100?输出”存储空间已满,不能再存储”是输出”存储空间已满,不能再存储”用freadj()将文献读取出来用freadj()将文献读取出来Fclose(fp)Fclose(fp)结束结束链表开始开始FILE*fp;str

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论