课程设计家电库存管理系统的设计.docx
- 文档编号:1278107
- 上传时间:2022-10-20
- 格式:DOCX
- 页数:17
- 大小:240.44KB
课程设计家电库存管理系统的设计.docx
《课程设计家电库存管理系统的设计.docx》由会员分享,可在线阅读,更多相关《课程设计家电库存管理系统的设计.docx(17页珍藏版)》请在冰豆网上搜索。
课程设计家电库存管理系统的设计
摘要
本程序的作用是建立一个简单的家电库存管理系统。
当库存信息发生变化时要求能对链表的信息进行更新并存入文件。
每个工作日开始时,需要把磁盘中的商品信息读出并加入链表中,每个工作日结束之后,在将该链表中的数据以文件形式保存,链表结点的数据域包括:
类别、型号、品牌、单价和数量,以单价的升序体现链表的有序性。
程序功能包括:
初始化、创建表、插入、删除、更新数据,查询及链表数据与文件之间的转换等。
程序需要对链表进行初始化、插入、删除、更新数据,查询等操作,还要求对文件的操作。
关键字:
链表数据域插入删除
第一部分设计题目、内容及要求
1.1设计题目
以链表结构的有序表表示某商场家电部的库存模型。
当有提货或进货时需要对该链表及时进行维护。
每个工作日结束之后,将该链表中的数据以文件形式保存,每日开始营业之前,需将以文件形式保存的数据恢复成链表结构的有序表。
链表结点的数据域包括:
类别、型号、品牌、单价和数量,以单价的升序体现链表的有序性。
程序功能包括:
初始化、创建表、插入、删除、更新数据,查询及链表数据与文件之间的转换等。
1.2设计要求
要求实现以下功能
(1)初始化并创建链表:
能够初始化并创建商品信息表并按照单价的升序排列;
(2)插入及删除:
能够添加新商品信息并且当商品由于某种原因(损坏,售出及其他原因)而不得不删除之时能够顺利地实现删除操作;
(3)更新数据:
当商品的价格或者数量变动的时候能够作出相应的改变;
(4)查询:
能够按照某种要求需求商品的信息,并决定是否购买该商品,然后作出相应的数据更新;
(5)链表与文件之间的转换:
能够成功地将链表中的信息写入文件,并能根据需要读出文件中的信息。
第二部分概要设计
2.1链表节点信息说明
表1各数据类型名称及其表示意义
名称
数据类型
表示的意义
Species
字符
家电的类型(包括电视机,空调等类型)
Xinghao
字符串
家电的型号
Pinpai
字符串
家电的品牌
Danjia
浮点型
家电价格,为浮点型
Shuliang
整型
家电的数量
Data
节点信息,包括以上数据信息
next
指针
指向由Date和next组成节点
表中,Species表示家电的类型,用一个大写字母代替。
例如“D”表示电视机,“K”表示空调,“B”表示冰箱,“J”表示电脑,“X”表示洗衣机。
Xinghao和Pinpai都是以字符串的形式表示的,Danjia表示一个商品的价格,而Shuliang这表示某种商品的库存量。
Date则是数据域,包括以上五项。
而next则表示指向下一个节点的指针。
这就是一个商品种类的全部信息,用一个节点的空间来储存该类型商品的信息。
而在以后的删除和插入以及查询操作中在某些情况下只需对商品的库存量做一些修改久可以达到目的,非常方便。
2.2总体程序框图
否
是
i=1i=2
图2-1总体程序框图
第三部分详细设计
3.1初始化数据模块详细设计
3.1.1初始化数据模块伪码算法
intInticial(ListNode&p)
{while(i!
=2)
{scanf(&pp->Date);pp->next=p->next;p->next=pp;scanf(&i);
}Paixu(p);Display(p);ListTxt(p);
returnOK;}
其中,排序函数伪码算法如下:
intPaixu(ListNode&head)
{p=q=head->next;while(p!
=NULL)
{q=p->next;min=p->Date;
while(q!
=NULL)
{if(q->Date.Danjia<=min.Danjia)
{min=q->Date;q->Date=p->Date;p->Date=min;}q=q->next;
}p=p->next;}Display(head);
returnOK;
其次,由链表读入信息到文件函数伪码算法如下:
intListTxt(ListNode&head)
{
FILE*fp;p=head->next;
if(p==NULL)exit(0);
if((fp=fopen("e:
\\a.txt","w"))==NULL)exit(0);
while(p!
=NULL)
{fprintf(fp,p->Date);p=p->next;}
if(fclose(fp))exit(0);
return1;
}
3.1.2初始化模块程序流程图
NY
Y
N
图3-1数据初始化模块程序流程图
3.2添加商品模块详细设计
3.2.1添加信息模块伪码算法
intInsert(ListNode&head,Node&a)
{
p=head->next;
if(p==NULL)exit(0);
while(p=p->next)p=p->next;
q->Date=a.Date;
q->next=p->next;p->next=q;
ListTxt(head);
returnOK;
}
在上面的算法中,首先要查看一下商品信息表示否为空,是则退出,否则继续操作。
在进入该模块之前,有关插入的商品的信息已经初始化完成,直接通过引用就可以使用。
本模块首先将要插入商品的有关信息映射到一个节点的数据域,然后将该节点插入到商品信息表中,再排序即可。
3.2.2添加商品模块程序流程图
NY
图3-2添加商品信息模块程序流程图
3.3删除货物模块详细设计
3.3.1删除模块伪码算法
intDelete(ListNode&head,Node&a)
{if(p==NULL)exit(0);scanf(&choice);
switch(choice){
case1:
scanf(a.Species);
while(p!
=NULL)
{if(strcmp(p-Date.Species,a.Species)==0)
{printf(p->Date);i++;}p=p->next;}
if(i==1)break;
else{p=head;scanf(&number);while(count {if(strcmp(p->next->Date.Species,a.Species)==0){count++; p=p->next;} while(strcmp(p->next->Date.Species,a.Species)! =0)p=p->next; if(p->next->Date.Shuliang>a.Shuliang)p->next-Date.Shuliang-=a.Shuliang; else{s=p->next;p->next=p->next->next;free(s);}Display(head);} break; case2: scanf(a.XingHao);while(p! =NULL){ if(strcmp(p->Date.XingHao,a.XingHao)==0){ printf(p->Date);i++;}p=p->next;} if(i==1)break; else{p=head;scanf(&number); while(count {if(strcmp(p->next->Date.XingHao,a.XingHao)==0)count++; p=p->next;} while(strcmp(p->Date.XingHao,a.XingHao)! =0)p=p->next;} if(p->next->Date.Shuliang>a.Shuliang) p->next->Date.Shuliang-=a.Shuliang;else {s=p->next;p->next=p->next->next; }Display(head);}break;}ListTxt(head); returnOK;} 3.3.2删除模块程序流程图 由于本模块流程图中有类似的操作,所以只给出其中一种情况下的流程图,其他两种情况下的流程图省略不写。 另外,此图还省略了其他不重要的操作。 NY N Y N Y Y N 图3-3删除模块流程图 3.4查询模块详细设计 3.4.1查询模块伪码算法 intSearch(ListNode&head,Node&a) {if(p==NULL){getch();system("cls");}scanf(&choice); switch(choice) {case1: scanf(a.Species); while(p! =NULL){if(strcmp(p->Date.Species,a.Species)==0){printf(p->Date);i++;} p=p->next;}if(i==1)printf("*对不起,没有找到相关商品的信息! \n"); elsescanf(&choice1); switch(choice1) {case1: p=head;scanf(&a.Shuliang); while(count {if(strcmp(p->next->Date.Species,a.Species)==0) count++;p=p->next;} while(strcmp(p->next->Date.Species,a.Species)! =0) p=p->next; if(p->next->Date.Shuliang>a.Shuliang) p->next->Date.Shuliang-=a.Shuliang; else{ s=p->next;p->next=p->next->next;free(s);}break; case2: break;} }break; case2: case1: p=head;scanf(&a.Shuliang); while(count {if(strcmp(p->next->Date.XingHao,a.XingHao==0)) count++; p=p->next;} while(strcmp(p->next->Date.XingHao,a.XingHao)! =0) p=p->next; if(p->next->Date.Shuliang>a.Shuliang) p->next->Date.Shuliang-=a.Shuliang; else{ s=p->next;p->next=p->next->next;free(s);}break; case2: break;} }bre
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 家电 库存 管理 系统 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)