数据结构实习报告-链表维护_第1页
数据结构实习报告-链表维护_第2页
数据结构实习报告-链表维护_第3页
数据结构实习报告-链表维护_第4页
数据结构实习报告-链表维护_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、.-据结构实习报告一机房名称信息楼420 时间 2012年12月25日学院计算机与通信工程学院专业班级姓名学号指导教师商品库存管理系统实习报告一,问题的提出在各种商场的库存管理中,各种商品的库存量在每天的销售与进货过程中会发生不断的变化,而由于商场是零售经营,所以每天涉及库存的维护是一个比较麻烦的问题,另一方面,由于受市场和物价,商品的价格在不同的时间会发生一定的变化,部分商品也会由于科技的发展,或者消费者的价值取向,审美观等方面的影响,会淘汰掉,这既涉及到库存价格的变化,以及商品的变化,作为一个大型商场,没有好的库存管理方案,将会是一场灾难,所以,库存管理系统是必需的。为此,我用所学数据结构

2、算法设计了这样一个实现库存模型维护的程序,从而实现商场家电部门的库存维护,其中包括商品的初始化,商品的录入,淘汰商品的删除,以及商品信息的更新,商品信息的打印,以及库存商品文件与程序中表的转换。因此可以以链式结构的有序表表示某商厦家电部的库存模型。当有提货或进货的业务要,需要对该有序表及时进行维护。每个工作日结束之后,将链式结构的有序表中的数据以文件的形式保存;每天营业之初需要将文件形式的数据恢复成链式结构的有序表。二,功能需求分析:基本要求如下:链式结构的有序表的结点结构的数据域应包括家电名称、品牌型号、单价及数量、以结点中单价值的非减序列表达着有序性。日常的维护操作应包括初始化、创建表、插

3、入、删除、更新数据、打印、查询以及链式结构的有序表与文件之间的数据转换。具体如下描述:商品信息的输入形式:以手动输入或者从文件中读取。商品结构体中商品号,商品名,商品品牌,商品单价,商品数量是要求输入的,其中商品号和商品数量的数据类型是整型,商品名和商品品牌的数据类型是字符串型,商品单价是浮点型。输出的形式包括以单行为一商品信息的屏幕输出和输出到文件。包括按商品号的顺序输出和按商品价格高低输出两种。商品的初始化,商品的录入,按商品号的排序,按商品号排序输出,按商品价格排序,按商品价格排序输出,指定商品的查询,淘汰商品的删除,以及商品信息的更新,商品信息的打印,以及库存商品文件与程序中表的转换。

4、测试数据,当库存文件记录为空时,输出库存文件。三,详细设计以链式结构的有序表表示某商厦家电部的库存模型,日常的维护包括初始化、插入、删除、更新、打印、查询,其中主函数设计如下:当输入不同的数字时,主函数将调用不同的功能函数。主函数设计如下:void main()int operate=1;LNode *L;printf(ttt !家电部库存管理系统!nn);Init(&L);while(operate)printf(t *);printf(ntt1.系统初始化 t2.插入数据t3.删除数据tntt4.更新数据t5.打印数据t6.查询数据ntt0.退出系统n);printf(t *n);prin

5、tf(选择您所要执行的操作编号:);scanf(%d,&operate);switch(operate)case 0: printf(nnt-*-*-操作结束,按任意键退出系统!-*-*-nn);break;case 1: operate1(&L);break;case 2: operate2(&L);break;case 3: operate3(&L);break;case 4: operate4(&L);break;case 5: operate5(L);break;case 6: operate6(L);break;default:printf(对不起,没有这项操作。n)详细程序设计如下

6、: #include #include #include #include#define TURE 1#define FALSE 0#define OK 1#define ERROR 0#define SEPARATE printf(nnnt*nnn)#define CHOOSE printf(您是否继续操作(1/0): )#define UPDATE printf(将其更新为:)typedef int Status;typedef struct sheetint number;/产品编号char name20;/产品名称char pattern20;/产品型号int price;/产品价格i

7、nt inventory;/目前产品库存sheet;/存储产品数据的结构体typedef struct LNodesheet date;/产品数据域struct LNode *next;/链表指针域LNode,*List;/链式结构存储Status Init(LNode *L)/初始化链表*L=(LNode *)malloc(sizeof(LNode);/开辟头结点空间(*L)-next=NULL;/头指针指向空(*L)-date.price=0;/预设头结点中价格为0,方便价格排序return OK;Status Insert(LNode *L,LNode *N)/在链表中插入数据为e的新产

8、品数据LNode *New;LNode *pre,*p;p=*L;pre=*L;New=(LNode *)malloc(sizeof(LNode);/开辟新结点空间New-date=N-date;New-next=NULL;/新结点初始化while(p)/寻找新产品该插入的位置并插入L中if(p-date.pricedate.price)pre=p;p=p-next;if(!p)pre-next=New; elseNew-next=pre-next;pre-next=New;p=NULL;return OK;Status Delete(LNode *L,int i)/寻找该产品的位置并删除产品

9、数据LNode *p,*q;p=*L;q=p-next;while(q-next&q-date.number!=i)p=p-next;q=p-next;/寻找该产品的位置if(!q)return ERROR;p-next=q-next;/删除产品数据free(q);return OK;Status Printdate(sheet e)/打印某产品数据printf(编号: %dn名称: %sn型号: %sn价格: %dn库存: %dn,e.number,,e.pattern,e.price,e.inventory);printf(-*-*-*-n);return OK;Status

10、Updatenumber(LNode *L,int i)/更新编号为i的产品编号LNode *p=(*L)-next;int j;sheet e;UPDATE;scanf(%d,&j);while(p&p-date.number!=i)p=p-next;/寻找该产品的位置if(!p)return ERROR;p-date.number=j;/更新产品编号e=p-date;printf(nn*产品数据更新*n);Printdate(e);/打印新产品数据return OK;Status Updatename(LNode *L,int i)/更新编号为i的产品名称LNode *p=(*L)-nex

11、t;char j20;sheet e;UPDATE;scanf(%s,j);while(p&p-date.number!=i)p=p-next;/寻找该产品的位置if(!p)return ERROR;strcpy(,j);/更新产品名称e=p-date;printf(nn*产品数据更新*n);Printdate(e);/打印新产品数据return OK;Status Updatepattern(LNode *L,int i)/更新编号为i的产品型号LNode *p=(*L)-next;char j20;sheet e;UPDATE;scanf(%s,j);while(p&

12、p-date.number!=i)p=p-next;/寻找该产品的位置if(!p)return ERROR;strcpy(p-date.pattern,j);/更新产品型号e=p-date;printf(nn*产品数据更新*n);Printdate(e);/打印新产品数据return OK;Status Updateprice(LNode *L,int i)/更新编号为i的产品价格LNode *p=(*L)-next;int j;sheet e;UPDATE;scanf(%d,&j);while(p&p-date.number!=i)p=p-next;/寻找该产品的位置if(!p)return

13、 ERROR;p-date.price=j;/更新产品价格e=p-date;printf(nn*产品数据更新*n);Printdate(e);/打印新产品数据return OK;Status Updateinventory(LNode *L,int i)/更新编号为i的产品库存LNode *p=(*L)-next;int j;sheet e;printf(库存改变量为: );scanf(%d,&j);while(p&p-date.number!=i)p=p-next;/寻找该产品的位置if(!p)return ERROR;p-date.inventory=p-date.inventory+j;

14、/更新产品库存e=p-date;printf(nn*产品数据更新*n);Printdate(e);/打印新产品数据return OK;Status Cheekdate(LNode *L,int i)/查询编号为i的产品是否存在LNode *p=L-next;while(p&p-date.number!=i)p=p-next;if(!p)return ERROR;return OK;Status PrintList(LNode *L)/打印整个数据表LNode *p=L-next;sheet e;while(p)e=p-date;Printdate(e);p=p-next;/边遍历边打印数据re

15、turn OK;void operate1(LNode *L)/辅助初始化Init(&(*L);printf(nt-初始化完成-n);void operate2(LNode *L)/辅助插入,实现确认新信息再插入。LNode *N;int choose;N=(LNode *)malloc(sizeof(LNode);SEPARATE;printf(t*新产品信息*n);printf(n编号:);scanf(%d,&N-date.number);printf(n名称:);scanf(%s,N-);printf(n型号:);scanf(%s,N-date.pattern);pri

16、ntf(n价格:);scanf(%d,&N-date.price);printf(n库存:);scanf(%d,&N-date.inventory);printf(t*您要插入的新数据*n);printf(编号: %dn名称: %sn型号: %sn价格: %dn库存: %dn,N-date.number,N-,N-date.pattern,N-date.price,N-date.inventory);CHOOSE;scanf(%d,&choose);/确认信息if(choose)Insert(&(*L),N);/插入printf(nt-数据已插入-nn);else print

17、f(nt-数据插入失败-nn);SEPARATE;void operate3(LNode *L)/辅助删除,以编号为索引。int i,j,choose;sheet e;SEPARATE;printf(您要删除的产品编号:);scanf(%d,&i);j=Cheekdate(*L),i);/检查数据是否存在if(j)printf(nnt*您要删除的数据*n);LNode *p=(*L)-next;while(p-date.number!=i)p=p-next;e=p-date;Printdate(e);CHOOSE;scanf(%d,&choose);/确认信息if(choose)Delete(

18、&(*L),i);/删除printf(t-已删除-n);else printf(t-退出-n);else printf(t-数据不存在,删除失败-n);SEPARATE;void operate4(LNode *L)/辅助更新,以编号为索引,实现选择性更新。int i,content,choose;SEPARATE;printf(您要更新的产品编号为:);scanf(%d,&i);printf(-*-*-*-n);if(Cheekdate(*L),i)printf(ntt1.产品编号 t2.产品名称t3.产品型号tntt4.产品价格t5.产品库存t6.取消更新ttn);loop:printf(

19、您要更新的产品容为:);scanf(%d,&content);switch(content)case 1: Updatenumber(&(*L),i);break;case 2: Updatename(&(*L),i);break;case 3: Updatepattern(&(*L),i);break;case 4: Updateprice(&(*L),i);break;case 5: Updateinventory(&(*L),i);break;case 6: break;default:printf(对不起,没有此操作项。n);CHOOSE;scanf(%d,&choose);if(ch

20、oose)goto loop;/可选择继续更新/选择不同容更新else printf(对不起,没有这个编号。n);printf(t-更新完毕-nn);void operate5(LNode *L)/辅助打印printf(t-家电数据表-nn);PrintList(L);SEPARATE;void operate6(LNode *L)/辅助查询,以编号为索引。int i,j;sheet e;printf(您要查询的产品编号是:);scanf(%d,&i);j=Cheekdate(L,i);/检查数据是否存在if(j)LNode *p=L-next;while(p-date.number!=i)p=p-next;e=p-date;printf(t-产品数据-n);Printdate(e);/打印产品数据else printf(对不起,没有此编号的信息。);SEPARATE;void main()/以链式结构的有序表表示某商厦家电部的库存模型,日常的维护包括初始化、插入、删除、更新、打印、查询。int operate=1;LNode *L;printf(ttt !家电部库存管

温馨提示

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

评论

0/150

提交评论