《数据结构》课程设计报告商品货架管理系统.docx
- 文档编号:23446214
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:25
- 大小:19.60KB
《数据结构》课程设计报告商品货架管理系统.docx
《《数据结构》课程设计报告商品货架管理系统.docx》由会员分享,可在线阅读,更多相关《《数据结构》课程设计报告商品货架管理系统.docx(25页珍藏版)》请在冰豆网上搜索。
《数据结构》课程设计报告商品货架管理系统
湖北第二师范学院
课程设计报告
课程名称:
数据结构课程设计
设计题目:
商品货架管理系统
系别:
计算机科学系
专业:
软件工程
组别:
蔡桥利,阳乐,邱东明,郝耀峰
学生姓名:
--学号:
--
起止日期:
2013年12月7日~2013年12月21日
指导教师:
宋婉娟
教研室主任:
一、课程设计目的3
二、问题描述3
三、需求分析3
四、概要设计3
五、详细设计4
六、测试分析7
七、使用说明9
八、测试数据10
九、源程序清单10
十、模块说明19
一.课程设计目的
通过实习,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。
二.问题描述
设计、实现一个商品货架管理系统,实现商品出售,增加,查询(按商品代号,商品名字,生产日期),修改,输出过期商品,输出小于多少数量的商品。
三.需求分析
printf("\t\t******************************************\n");
printf("\t\t-----------1.建立目前商品信息--------\n");
printf("\t\t-----------2.添加商品--------\n");
printf("\t\t-----------3.出售商品--------\n");
printf("\t\t-----------4.查询商品--------\n");
printf("\t\t-----------5.修改商品--------\n");
printf("\t\t-----------6.显示所有商品信息--------\n");
printf("\t\t-----------0.退出系统--------\n");
printf("\t\t******************************************\n\n");
按序号依次实现功能。
四.概要设计
4.1 系统用到的抽象数据类型定义:
1、//定义结构体
typedefstructnode
{
intn;//商品代号
charname[20];//商品名称
intdate;//生产日期
intvalidity;//保质期(天)
intnum;//商品数量
structnode*next;
}LiStack,*sqstack;
基本操作:
五、详细设计
//输出所有商品p的名字、生产日期、保质期。
voidprint(sqstackp)
{
sqstackL=(LiStack*)malloc(sizeof(LiStack));
L=p->next;
if
else
}
//增加商品
sqstackpush(LiStack*top)
{
}
//创建一个存放商品信息的栈
sqstackcreat()
{
}
//出售商品
sqstackpop(LiStack*top)
{
}
//按序号查找商品
voidSequenceNumberF(LiStack*top)
{
}
//按商品名字查询商品
voidNameF(LiStack*top)
{
}
//按商品生产日期查找商品
voidProductionDateF(LiStack*top)
{
}
//按商品数量查找商品,查找小于该数量的商品
voidNumberF(LiStack*top)
{
}
//date加validity,并返回date,到期时间。
intDateF(intdate,intvalidity)
{
}
//查询过期商品信息
voidOverdueF(LiStack*top)
{
}
//查询商品
voidfind(LiStack*top)
{
}
//修改商品
sqstackupdate(LiStack*top)
{
}
voidmain()
{
LiStack*top;
chari,j;
top=(LiStack*)malloc(sizeof(LiStack));
top->next=NULL;
printf("\n\n\t\t------------欢迎使用商品货架管理系统------------\n");
while
(1){
printf("\t\t******************************************\n");
printf("\t\t-----------1.建立目前商品信息--------\n");
printf("\t\t-----------2.添加商品--------\n");
printf("\t\t-----------3.出售商品--------\n");
printf("\t\t-----------4.查询商品--------\n");
printf("\t\t-----------5.修改商品--------\n");
printf("\t\t-----------6.显示所有商品信息--------\n");
printf("\t\t-----------0.退出系统--------\n");
printf("\t\t******************************************\n\n");
printf("\t\t\t请输入您的操作:
");
scanf("%s",&i);
scanf("%c",&j);
printf("\n\n");
if(i=='0'){
printf("\t\t\t退出成功,欢迎下次使用!
\n");
break;
}else{
switch(i)
{
case'1':
top=creat();break;
case'2':
top=push(top);break;
case'3':
top=pop(top);break;
case'4':
find(top);break;
case'5':
top=update(top);break;
case'6':
print(top);break;
default:
printf("\t\t\t输入错误,请选择正确的功能\n");
}
}
}
}
六.测试分析
按照附录中的测试数据,得出如下测试、分析结果:
1、新建商品信息。
a/b/c/d
2、增加商品。
f。
3、出售商品代号3,商品名称c,50个。
4、出售商品代号2,商品名称b,200个。
5、查询,按序号查询,输入1.
6、查询,按商品名称查询,输入b。
7、查询,按生产日期查询,输入20131010.
8、查询,输入小于数量200的商品。
9、查询,输出20131226时过期的商品。
10、修改商品。
修改商品代号为4的商品。
11、输出货架上的所有商品。
12、退出系统。
七.使用说明
1、建立目前商品信息。
输入1,‘-1’表示结束。
按照提示依次输入商品代号、商品名称、生产日期、保质期、数量。
2、添加商品。
输入2,依次输入商品代号、商品名称、生产日期、保质期、数量。
3、出售商品。
输入3,显示所有商品,选择要出售的商品代号、数量,如果出售的数量小于等于该商品有的数量则显示出售成功。
否则显示出售失败。
4、查询商品。
输入4,选择1、2、3则按商品代号、名称、生产日期查询商品,选择4、5,则分别输出小于该数值的商品,输出过期商品。
5、修改商品信息。
输入5,输入修改商品代号,按照提示输入商品名称、生产日期,保质期,数量。
6、输入所有商品信息。
输入6,显示所有商品信息。
7、退出系统。
输入0,退出系统。
八.测试数据如,测分析六
九.源程序清单
#include
#include
#include
//定义结构体
typedefstructnode
{
intn;//商品代号
charname[20];//商品名称
intdate;//生产日期
intvalidity;//保质期(天)
intnum;//商品数量
structnode*next;
}LiStack,*sqstack;
//输出所有商品p的名字、生产日期、保质期。
voidprint(sqstackp)
{
sqstackL=(LiStack*)malloc(sizeof(LiStack));
L=p->next;
if(L==NULL)
printf("货架为空。
\n");
else
{
printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n");
while(L!
=NULL)
{
printf("%d",L->n);
printf("\t%s\t\t",L->name);
printf("%d\t\t",L->date);
printf("%d\t\t",L->validity);
printf("%d\t\t\n",L->num);
p=L;
L=p->next;
}
printf("\t***************************************\n");
}
}
//增加商品
sqstackpush(LiStack*top)
{
intvalidity,num,n;
intdate;
charname[20];
LiStack*temp=(LiStack*)malloc(sizeof(LiStack));
printf("\t\t\t-----欢迎进入商品添加界面!
-----\n");
temp=(LiStack*)malloc(sizeof(LiStack));
printf("\t增加商品的代号是:
");
scanf("%d",&n);
printf("\t增加的商品名称是:
");
scanf("%s",name);
printf("\t生产日期(年月日,如:
20131215:
)是:
");
scanf("%d",&date);
printf("\t保质期(天)是:
");
scanf("%d",&validity);
printf("\t数量(个):
");
scanf("%d",&num);
temp->date=date;strcpy(temp->name,name);
temp->num=num;temp->validity=validity;
temp->n=n;
if(top->next==NULL)
{
temp->next=NULL;
top->next=temp;
}
else
{
temp->next=top->next;
top->next=temp;
}
printf("\t商品添加成功!
\n");
return(top);
}
//创建一个存放商品信息的栈
sqstackcreat()
{
intn,validity,num;
charname[20];
intdate;
LiStack*p;
LiStack*top=(LiStack*)malloc(sizeof(LiStack));
top->next=NULL;
while
(1)
{
printf("\t请输入商品代号(int),代号为'-1'表示输入结束:
");
scanf("%d",&n);
if(n<0)break;
else
{
printf("\t请输入%d号——商品名称:
",n);
scanf("%s",name);
printf("\t请输入%d号——生产日期(年月日,如20131215):
",n);
scanf("%d",&date);
printf("\t请输入%d号——保质期(天):
",n);
scanf("%d",&validity);
printf("\t请输入%d号——数量(个):
",n);
scanf("%d",&num);
p=(LiStack*)malloc(sizeof(LiStack));
p->date=date;
p->validity=validity;
strcpy(p->name,name);
p->num=num;p->n=n;
if(top->next==NULL)
{
p->next=NULL;
top->next=p;
}
else
{
p->next=top->next;
top->next=p;
}
}
}
return(top);
}
//出售商品
sqstackpop(LiStack*top)
{
intn,num;
LiStack*p,*L;
p=(LiStack*)malloc(sizeof(LiStack));
L=(LiStack*)malloc(sizeof(LiStack));
printf("\t\t\t-----欢迎进入商品出售界面!
-----\n");
printf("\t----目前商品有:
\n");
print(top);
printf("出售的商品代号是:
");
scanf("%d",&n);
printf("出售的商品数量(个):
");
scanf("%d",&num);
p=top->next;
if(top->next==NULL)
{
printf("货架为空,请先添加货物!
\n");
}
else
{
while(p->next!
=NULL)
{
if(p->next->n==n)
{
if(p->next->num {printf("出售商品数量小于原有数量,出售商品失败。 ");} else { if(p->next->num==num) { if(p->next->next==NULL) { p->next=NULL; printf("商品出售成功! "); free(L);break;} else { L=p->next; p->next=L->next; free(L); printf("商品出售成功! ");break;} } else { p->next->num-=num; printf("商品出售成功! ");break; } } } p=p->next; } if(p==NULL) printf("输入的商品序号有误,请重新操作。 \n"); } return(top); } //按序号查找商品 voidSequenceNumberF(LiStack*top) { intn,x=0; LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); printf("需要查询的商品代号是: "); scanf("%d",&n); p=top; while(p->next! =NULL) { if(p->next->n==n) { printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); x=1;break; } p=p->next; } if(x==0&&p->next==NULL) printf("\t没有您要查询的商品。 \n"); printf("\t查询成功,欢迎再次使用查询系统.\n"); } //按商品名字查询商品 voidNameF(LiStack*top) { charname[20]; intx=0; LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); printf("需要查询的商品名称是: "); scanf("%s",name); p=top; while(p->next! =NULL) { if(strcmp(p->next->name,name)==0) { printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); x=1;break; } p=p->next; } if(x==0&&p->next==NULL) printf("\t没有您查询的商品。 \n"); printf("\t查询成功,欢迎再次使用查询系统.\n"); } //按商品生产日期查找商品 voidProductionDateF(LiStack*top) { intx=0; intdate; LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); printf("需要查询的生产日期是: "); scanf("%d",&date); p=top; printf("需要查询的生产日期%d的商品有: \n",date); printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); while(p->next! =NULL) { if(date==p->next->date) { printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); x=1; } p=p->next; } if(x==0&&p->next==NULL) printf("\t没有商品的生产日期在%d之前商品。 \n",date); printf("\t查询成功,欢迎再次使用查询系统.\n"); } //按商品数量查找商品,查找小于该数量的商品 voidNumberF(LiStack*top) { intnum,x=0; LiStack*p; p=(LiStack*)malloc(sizeof(LiStack)); printf("需要查询的商品数量是: "); scanf("%d",&num); p=top; printf("商品数量低于%d的商品有: \n",num); printf("代号\t商品名称\t生产日期\t\t保质期(天)\t\t数量(个)\n"); while(p->next! =NULL) { if(p->next->num<=num) { printf("%d",p->next->n); printf("\t%s\t\t",p->next->name); printf("%d\t\t",p->next->date); printf("%d\t\t",p->next->validity); printf("%d\t\t\n",p->next->num); x=1; } p=p->next; } if(x==0&&p->next==NULL) printf("\t没有商品低于%d的商品。 \n",num); printf("\t查询成功,欢迎再次使用查询系统.\n"); } //date加validity,并返回date,到期时间。 intDateF(intdate,intvalidity) { inti=0,j=0,k=0; intc=0; i=date/10000; j=(date-10000*i)/100; k=date-10000*i-100*j; k=k+validity; if(k>30) { c=k/30; k=k%30; } j=j+c; c=0; if(j>12) { c=j/12; j=j%12; } i=i+c; date=i*10000+j*100+k; return(date); } //查询过期商品信息 voidOverdueF(LiStack*top) { intvalidity,x=0; LiStack*p; intdate,date2,date1; p=(LiStack*)malloc(sizeof(LiStack)); printf("请输入目前的日期是: "); scanf("%d",&date); p=top; printf("需要查询目前日期(%d)的过期的商品有: \n",date); while(p->next! =NULL) { validity=p->next->validity; date1=p->next->date;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 商品 货架 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)