当前位置:文档之家› 仓库管理系统c语言程序设计分析报告

仓库管理系统c语言程序设计分析报告

仓库管理系统c语言程序设计报告————————————————————————————————作者:————————————————————————————————日期:信息科学与工程学院课程设计报告班级:通信一班姓名(学号):实验项目名称: c语言程序设计实验室(中心):信息科学与工程学院信息技术实验室指导教师:李益才实验完成时间: 2013 年 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、结构的定义:数组结构体一共有两个:链表结构体一共有一个:struct information //物品信息机构struct information //物品信息机构{ {int Artnumber; int Artnumber;char goodsname[20]; char goodsname[20];float unitprice; float unitprice;int quantity; int quantity;char brand[20]; char brand[20];}; struct information *next; struct Mainfest //仓库信息机构};{ struct information *head; //头指针struct information data[Number];int Num;};struct Mainfest goods;2、各个函数的具体设计思想及流程图本系统一共九个函数:(1)void inputInformation(); //对仓库中所有物品的基本信息进行输入(2)void outputsort(); //按序输出数据(3)void modifyInformation(); //修改物品信息(4)void deleteInformation(); //删除物品信息(5)void insertInformation();//插入//插入物品信息(6)void statistics();// 统计//统计相同品牌的物品数量(7)void saveInfoToFile(); //文件输入到磁盘(8)void loadInfoFromFile(); //文件磁盘载入(9)void maon(); //主函数其中第七、八个为文件函数,进行文件的存储和载入。

主函数main()是一个死循环,每执行玩一个函数都要输出菜单选择,直到选择退出为止。

2.1仓库物品基本信息输入函数对物品基本信息进行连续输入,直到所有物品信息都输入完毕,改函数用while 循环函数进行连续赋值。

(1)、具体流程图如下图所示:链表已满,结束break判断是否已满if(goods.Num==未满,继续Printf()是否要继续输入 if(yn==0)是,继续while (1)否,退出break开结开是否(2)代码说明While 语句是把数据输入到内存中,if 这里有两个用途:1、用于判断是否还有空间进行数据输入;2、判断是否还要继续输入。

2.2按序输出物品信息对物品的特定信息进行排序后在输出,可以进行按价格降序输出、按库存数量升序输出,这两种输出可以自由选择head=()malloc();建立一个空节点head 并分配内存Temp->next=head->next;t,printf();输入物品的信息,存入新节点判断是否要继续输入if ()temp=()malloc()建立新节点temp 并分配内菜单,选择输入数据函数结While (1)循环数组链表if(1)按价格降序选择要排序的元素1、2排序If (2)按数量升序输出, 开始满足大小关系进行交换开始按库存数量升序 sel=2按价格降序 输入sel=1选择排序元素2.3修改指定物品的信息对数据文件中特定信息惊醒修改,可以修改任何信息找到,对错误信息惊醒修改查找指定物品i=search(goodsnum判断是否找到指定物品输入指定物品的信息printf()开OutliSort(sel)排序结链表2.4删除指定货物信息对磁盘文件中的特定物品信息进行删除 数组输入指定物品的信息修改货物信息 Printf ()scanf定义结构体指针,*pf=search(),*pb=pf->ne输入要修改的物品货号printf () 输出未找到该货物判断是否找到该指定货物 结if链表是 否判断是否找到指定物品if找到,删除for (){a[i-查找指定物品开查找指定货物pf=Search (goodsname ) 输出“未找到指定货物”定义两个指向结构体的指针pf=search(goodsnum)删除pf->next=pb-> next;free (pb )输入要删除的货物货号scanf () 是否找到指定货物goods.Num--;2.5在指定位置插入一个物品的信息(1)流程图 数组前插 后插链表输入指定货物的货号scanf ()插入输入要插入的物品信息结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];该货物后每一个元素后移一位选择前插或者后插if () 结开开定义三个指针*pf,*pb,*temp是否找到指定货物是前插 后插elseelse结在内存中开辟一个空节点temp=()malloc(())找到插入位置Pf=search (goodsnum ) Pb=pf->next选择前插还是后插判断是否找到指定物品输入要插入的物品信息scanf指定元素为头节点后第一个元素,插入指定元素为最后一个节点,插入temp->next=pb ; pf->next=temp;temp->next=pb->next ;If(pb->next==NULL If(head==pf)2.6统计指定品牌的库存数量 (1)流程图数组 是链表输入要统计的品牌名Sun+=quantity for(i=0;i<goods.Num;i++)开if(i==goods.Num) i=-1;判断是否找到品牌的物品i !=-1? printf("%d\n",sum); 输出求得的和结Printf (“为找到该品牌”)开是2.7、基本数据文件输入磁盘将输入的数据存储到磁盘保持。

数组struct information *p; P=head->next;如果是同一品牌,求和sum=sum+data 输入指定品牌明 Scanf (“%s ”,name ) 输结开用创立这用fopen ()打开一个特定文件,返回值是否 为链表是否否 结Fclose (fp ) 开 p!=NULL 用fopen ()打开一个特定文件,返回值是否 为0fclos e(fp)并用while()fwrite() 进行循环输入建立这个打开文件,并使 p=head->next;struct informati2.8、数据文件载入从磁盘文件中讲已经保存了的数据读取到内存中,为以后的数据处理做准备。

数组是是否是结开输出“该Goods.N 打印“存储空间已满,不能再存入”用fread()将文件读取出来goods.Num==100 判断该文件是否已满用fopen ()打开一个特定文件,返回值是否 为0Feof(fp )=0?判断文件是否结束Goods是链表结输出”存储空Fclos 用 开FILE * fp;struct information * p;用P=()mallo c()为p 分打印“文用fopen ()打开一个特定文件,返回值是否 为0否是五、测试结果及存在的问题1、调试运行,选择第一项进行数据输入:结束用fread(0,p->next=h ead->next F eof(fp)=0?判Free(p );2、按序输出:(1)、按物品价格降序输出(2)、按库存数量升序输出3、修改指定物品的信息4、删除指定物品的信息5、在指定物品前或后插入一个物品的信息(1)前插(2)、后插6、求指定品牌的物品数量不足:修改指定物品的信息和删除指定物品的信息时,如果有相同货号的物品,则无法一次性修改和删除。

改进:预想循环查找、修改、删除,直到找不到指定货物为止。

六、课程设计心得体会第一次做这个长度的程序设计,对我好处很多,在编写程序的过程中,清楚的找出了自身的不足,以及对课本知识掌握不熟练的地方,并在编程中对课本知识进行了较为充分的复习,包括对数组的运用、函数的调用的理解以及更重要的是原来不熟练的链表、文件的知识有了更深的了解,并能用链表进行程序的编写。

这次编程体验,让我对模块化编程有了了解,并建立了模块化编程的思想,我想这点对我来说尤为重要。

这次的编程,更加强了我对错误的改正能力,也在编程中减少了低级错误的发生,也提高了对vc++编程软件的熟练程度总之,这次编程虽然遇到了很多困难,但是,让我受益匪浅。

相关主题