算法与数据结构课程设计-家电商场仓库管理.doc

上传人:爱问知识人 文档编号:3290797 上传时间:2019-08-08 格式:DOC 页数:34 大小:262.01KB
返回 下载 相关 举报
算法与数据结构课程设计-家电商场仓库管理.doc_第1页
第1页 / 共34页
算法与数据结构课程设计-家电商场仓库管理.doc_第2页
第2页 / 共34页
算法与数据结构课程设计-家电商场仓库管理.doc_第3页
第3页 / 共34页
算法与数据结构课程设计-家电商场仓库管理.doc_第4页
第4页 / 共34页
算法与数据结构课程设计-家电商场仓库管理.doc_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《算法与数据结构课程设计-家电商场仓库管理.doc》由会员分享,可在线阅读,更多相关《算法与数据结构课程设计-家电商场仓库管理.doc(34页珍藏版)》请在三一文库上搜索。

1、算法与数据结构课程设计 家电商场仓库管理 姓 名: 学 号:班 级:信息管理指导教师: 2010 年 6月32目 录 第一章 问题描述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 mo

5、del;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读取模块实现功能LinkedLi

11、st 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

12、 model;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

13、L);/*查询货品的种类数*/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);/*定位进出货的位置*/Li

14、nkedList 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); pr

15、intf( | 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); p

16、rintf(请选择:); 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 )mall

17、oc(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(请输入货品品牌:); scan

18、f(%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-ne

19、xt; 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-nex

20、t;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(S

21、Node); 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)

23、LinkedList 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.b

25、rand);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!

26、=c&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(L

27、inkedList 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=

28、fopen(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) pri

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1