算法与数据结构课程设计家电商场仓库管理_第1页
算法与数据结构课程设计家电商场仓库管理_第2页
算法与数据结构课程设计家电商场仓库管理_第3页
算法与数据结构课程设计家电商场仓库管理_第4页
算法与数据结构课程设计家电商场仓库管理_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、算法与数据结构课程设计 家电商场仓库管理 姓 名: 学 号:班 级:信息管理指导教师: 2010 年 6月目 录 第一章 问题描述1第二章 系统分析1第三章 系统设计2第四章 系统实现11第五章 系统测试23第六章 设计心得25参考文献32教师评语和成绩32 第一章 问题描述 问题题目: 家电商场仓库管理 问题描述: 仓库管理系统是一个典型的信息管理系统,主要是对实际的库存商品信息加以分类管理,以便及时的为商品的交易提供货品库存信息.类似的问题有图书馆管理系统,通讯录,学生信息管理系统.本题目使用线性表的链式存储结构完成。主要需实现功能有:创建管理表,向表中添加记录,查询商品种类数,输出所有商

2、品信息,追加新商品记录,已有商品库存量的增减,将商品信息写入文件并可以从文件中读出等.第二章 系统分析 问题要求: 由问题描述我们可知仓库管理所涉及到的功能有如上几种,这就要求我们逐个实现,同时为了可以和用户进行很好的信息交换我们需要编写菜单函数.下面以链表结构的有序表表示某商场家电部的库存模型。当有提货或进货时需要对该链表及时进行维护。每个工作日结束之后,将该链表中的数据以文件形式保存,每日开始营业之前,需将以文件形式保存的数据恢复成链表结构的有序表. 链表结点的数据域,包括家电名称、品牌、单价和数量,以单价的升序体现链表的有序性。程序功能包括:初始化、创建表、插入、删除、更新数据,查询及链

3、表数据与文件之间的转换等。第三章 系统设计 (1)思路确定:拿到此问题进行分析知道此题目是要对大量的货品信息进行管理,因此要将所需要的功能进行逐个实现,也就是函数的分块实现。首先明确系统所需的功能有:创建管理表,向表中添加记录,查询商品种类数,输出所有商品信息,追加新商品记录,已有商品库存量的进货或提货,将商品信息写入文件并可以从文件中读出等。对应的程序中需要的函数模块有:初始化链表,输入、插入、删除、更新数据,查询、链表数据与文件之间的转换以及一些辅助函数。同时,为了更好的和用户进行信息交换,我们要构建菜单函数。最后我们要用主函数调用以上函数模块。(2)系统界面设计图 | 家电商场仓库管理|

4、 | | | 主菜单项 | 1-初始化链表 | | 2-添加数据信息 | | 3-清空链表 | | 4-查询货品的种类数 | | 5-显示货品信息 | | 6-插入新货品记录 | | 7-删除停产无存货货品记录 | 8-记录进货量 | | 9-记录出货量 | 10-查询货品的余量 | 11-每日结算 | 12-每日开始 | 0-退出 | | 请选择:(3)系统功能设计图家电商场仓库管理 主程序模块 进货出货 载入模块删除模块保存模块 查找模块插入模块 输出模块输入模块(4)数据结构定义:typedef struct snodechar kind20; char brand20;int mode

5、l;int price;int number;store;typedef store elemtype;typedef struct snodeelemtype data;struct snode *next;snode, *linkedlist;使用到的头文件:#include#include#include#include(5)函数模块功能说明: 对本系统的功能进行分析后对主要函数可作如下的模块化设计:输入模块实现功能:按需添加货品数目将货品型号、种类、名称、价格、数量依次输入,并建立链表将其连接。插入模块实现功能:向已有数据中再次添加新货品的记录,包括货品型号、种类、名称、价格、数量。以

6、结点的方式链接到链表中。删除模块实现功能:在已有的数据中删除某种停产后无库存货品信息,并释放内存空间。删除按货品关键码型号进行。查找模块实现功能:在已有的数据中查找指定的货品信息。按照查找货品编号进行。输出模块实现功能:将已有的数据中按单价的升序进行遍历,输出该管理表中所包含的全部货品信息。保存模块实现功能:在每日工作结束时都要将数据进行保存操作,链表中的信息以文件形式被长期保存。载入模块实现功能:将文件中的数据信息载入链表。主序模块实现功能:完成系统的界面处理,包括开始界面和主菜单界面。具体函数有:int menu();/*主菜单函数*/linkedlist linkedlistinit()

7、;/* 初始化单链表 */linkedlist linkedlistappend();/* 添加数据信息 */int linkedlistlength(linkedlist l);/*查询货品的种类数*/void linkedlisttraverse(linkedlist l);/*遍历链表显示货品信息*/int linkedlistinsert(linkedlist l, int i, elemtype x);/*插入信息*/int linkedlistdelete(linkedlist l,int i);/*删除信息*/int search(linkedlist l);/*查询某货品的库存

8、*/linkedlist px(linkedlist l);/*由单价排序*/int linkedlistlocal(linkedlist l);/*定位进出货的位置*/linkedlist appends(linkedlist l);/*记录进货量*/ linkedlist sells(linkedlist l);/*记录出货量*/int save (linkedlist l); /*保存信息到文件*/linkedlist load(linkedlist l);/*从文件中读取*/输入模块实现功能:linkedlist linkedlistappend();/* 添加数据信息 */in开始申

9、请一个结点空间,p指向它向p指向结点输入货品的信息ny ny是否为第一个数据(i=0)nr-next=p;r=r-next; r=r-next; r=r-next; yp=lip-nextnull=p-next 返回l结束 图 4-1插入模块实现功能:int linkedlistinsert(linkedlist l, int i, elemtype x);/*插入信息*/开始调入载入模块l=null p=l;申请一个结点空间,使p指向它给t指向结点输入预插入货品的信息yp-next!=null &jnext;j+; t-next=p-next;p-next=t;返回l结束图 4-2删除模块实

10、现功能:int linkedlistdelete(linkedlist l,int i);/*删除信息*/ 开始调用载入模块l-next=null y n从键盘读入i值p=l;p-next != null & jnext=headq=p-next; p-next=p-next-next;p-next=p-next-next;返回l 结束 图 4-3 保存模块实现功能int save (linkedlist l); /*保存信息到文件*/开始输入预保存文件的文件名创建文件成功 n l!=null n y将指向结点的数据写入文件l=l-next;结束 图 4-4读取模块实现功能linkedlist

11、 load(linkedlist l);/*从文件中读取*/开始调用载入模块fp= =null y n为结点申请空间输出p1指向结点的货品信息p2=p1-next;p2=p1; y n结束 图 4-5第四章 系统实现 正文(四号楷体) 给出系统的主函数和每个算法的实现代码。代码用courier new英文字体,字体大小为10(比正文的汉字要小),段落的行间距为最小值,排版要紧凑如#include#include#include#include#define n 5typedef struct snodechar kind20;/各种数据的名称种类与其编号对应char brand20;int m

12、odel;int price;int number;store;typedef store elemtype;typedef struct snodeelemtype data;struct snode *next;snode, *linkedlist;int menu();linkedlist linkedlistinit();/* 初始化单链表 */linkedlist linkedlistappend();/* 添加数据信息 */void linkedlistclear(linkedlist l);/* 清空单链表 */int linkedlistlength(linkedlist l)

13、;/*查询货品的种类数*/void linkedlisttraverse(linkedlist l);/*遍历链表显示货品信息*/int linkedlistinsert(linkedlist l, int i, elemtype x);/*插入信息*/int linkedlistdelete(linkedlist l,int i);/*删除信息*/int search(linkedlist l);/*查询某货品的库存*/linkedlist px(linkedlist l);/*由单价排序*/int linkedlistlocal(linkedlist l);/*定位进出货的位置*/link

14、edlist appends(linkedlist l);/*记录进货量*/ linkedlist sells(linkedlist l);/*记录出货量*/int save (linkedlist l); /*保存信息到文件*/linkedlist load(linkedlist l);/*从文件中读取*/int menu() int option; printf(n); printf( |n); printf( | 家电商场仓库管理|n); printf( | |n); printf( | 主菜单项 |n); printf( |n); printf( | 1-初始化链表 |n); prin

15、tf( | 2-添加数据信息 |n); printf( | 3-清空链表 |n); printf( | 4-查询货品的种类数 |n); printf( | 5-显示货品信息 |n); printf( | 6-插入新货品记录 |n); printf( | 7-删除停产无存货货品记录 |n); printf( | 8-记录进货量 |n); printf( | 9-记录出货量 |n); printf( | 10-查询货品的余量 |n); printf( | 11-每日结算 |n); printf( | 12-每日开始 |n); printf( | 0-退出 |n); printf( |n); pri

16、ntf(请选择:); scanf(%d,&option); return(option);/* 初始化单链表 */linkedlist linkedlistinit()linkedlist l;l=(snode *)malloc(sizeof(snode); /头结点l-next=null; /头结点的指针分量为空return l;/* 添加数据信息 */linkedlist linkedlistappend() int i,n,m; store s; linkedlist l,r,p,q; l=linkedlistinit(); r=l; m=1; q=(linkedlist )malloc

17、(sizeof(snode); printf(请输入货品的种类总数:n); scanf(%d,&n); for(i=1;i=n;i+) printf(第%d种货品n,i); repeat: printf(请输入货品型号:); scanf(%d,&s.model);printf(n); q=l; for(i=1;idata.model) q=q-next; else printf(型号重复,请重新输入!);printf(n); goto repeat; printf(请输入货品种类:); scanf(%s,&s.kind); printf(n); printf(请输入货品品牌:); scanf(

18、%s,&s.brand); printf(n); printf(请输入货品价格:); scanf(%d,&s.price); printf(n); printf(请输入货品数量:); scanf(%d,&s.number); printf(n); while(s.price 0|s.numberdata.kind,s.kind); strcpy(p-data.brand,s.brand); p-data.price=s.price; p-data.model=s.model; p-data.number=s.number; p-next=null; m+; r-next=p; r=r-next

19、; return(l);/* 清空单链表 */void linkedlistclear(linkedlist l)l-next=null;/*查询货品的种类数*/int linkedlistlength(linkedlist l) linkedlist p; int i=1; p=(snode*)malloc(sizeof(snode); p=l-next; while(p-next!=null) p=p-next; i+; return (i);/*遍历链表显示货品信息*/void linkedlisttraverse(linkedlist l) linkedlist p;p=l-next;

20、printf(当前表是: n);printf(%10s%10s%10s%10s%10sn,种类,品牌 ,型号,单价,数量);while(p!=null)printf(%10s%10s%10d%10d%10dn,p-data.kind,p-data.brand,p-data.model,p-data.price,p-data.number);p=p-next;/*插入信息*/int linkedlistinsert(linkedlist l, int i, elemtype x) linkedlist p,t;int j;p=l;j=1; t=(snode *)malloc(sizeof(sno

21、de); strcpy(t-data.kind,x.kind); strcpy(t-data.brand,x.brand); t-data.price=x.price; t-data.model=x.model; t-data.number=x.number; if( l-next = null) if(i=1) /若l为空表且要求将新结点插入到第1个位置 l-next=t;t-next=null;return 1; while ( p-next != null & jnext;j+;if (p-next = null) if(jnext=p-next;p-next=t;return (1);

22、/*删除信息*/int linkedlistdelete(linkedlist l,int i) linkedlist p,q;int j;p=l;j=1;if( l-next = null) /空表 printf(没有货品信息!n);return 0; while ( p-next != null & jnext;j+; if (p-next = null) printf(给的i值超过了表长n);return 0;elseq=p-next;p-next=p-next-next;free(q);return (1);/*查询某货品的库存*/int search(linkedlist l) li

23、nkedlist p; int c; int i=1; p=l; printf(请输入商品型号:);scanf(%d,&c); while(p-data.model!=c&p-next!=null) p=p-next; printf(%10s%10s%10s%10s%10sn,种类,品牌 ,型号,单价,数量); printf(%10s%10s%10d%10d%10dn,p-data.kind,p-data.brand,p-data.model,p-data.price,p-data.number);void intswap(int *p,int *r) int t; t=*p; *p=*r;

24、*r=t;/*由单价排序*/linkedlist px(linkedlist l) linkedlist q,p,h; char a20,b20; h=l; for(p=l;p!=null;p=p-next) for(q=l-next;q-next!=null;q=q-next) if(q-data.pricep-data.price) strcpy(a,p-data.kind);strcpy(p-data.kind,q-data.kind);strcpy(q-data.kind,a); strcpy(b,p-data.brand);strcpy(p-data.brand,q-data.bra

25、nd);strcpy(q-data.brand,b); intswap(&(q-data.model),&(p-data.model); intswap(&(q-data.price),&(p-data.price); intswap(&(q-data.number),&(p-data.number); h=l; return h;/*定位进出货的位置*/int linkedlistlocal(linkedlist l) linkedlist p; int c; int i=1; p=l; printf(请输入货品型号:);scanf(%d,&c); while(p-data.model!=c

26、&p-next!=null) p=p-next; i+; return (i-1);/*记录进货量*/ linkedlist appends(linkedlist l) int i,x,j,n,k; linkedlist p,r; r=p=l; printf(请输入进货种类数 :);scanf(%d,&n); for(k=1;k=n;k+) i=linkedlistlocal(r); printf(请输入进货量:);scanf(%d,&x); for(j=1;jnext; r-data.number=r-data.number+x; /*记录出货量*/ linkedlist sells(lin

27、kedlist l) int i,x,j,n,k; linkedlist p,r; p=r=l; printf(请输入提货种类数:);scanf(%d,&n); for(k=1;k=n;k+) i=linkedlistlocal(r); printf(请输入提货量:);scanf(%d,&x); for(j=1;jnext; r-data.number=r-data.number-x; /*保存信息到文件*/int save (linkedlist l) file *fp; char filepn100; printf(请输入文件名 ); scanf(%s,filepn); if (fp=fo

28、pen(filepn,w)=null) printf(error); return 0; while(l!=null) fprintf(fp,%10s%10s%10d%10d%10dn,l-data.kind,l-data.brand,l-data.model,l-data.price,l-data.number); l=l-next; printf(ok); fclose(fp); return 0;/*读取信息*/linkedlist load(linkedlist l) linkedlist p1,p2; int m=0; char filepn10; file *fp; printf(请输入文件名 ); scanf(%s,filepn); if (fp=fopen(filepn,r)=null) printf(error); return 0; printf( | 家电商场仓库管理|n); l=null; p1=p2=(snode *)malloc(sizeof(snode); do fscanf(fp

温馨提示

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

评论

0/150

提交评论