《数据结构》课程设计报告商品货架管理系统.docx

上传人:b****2 文档编号:23446214 上传时间:2023-05-17 格式:DOCX 页数:25 大小:19.60KB
下载 相关 举报
《数据结构》课程设计报告商品货架管理系统.docx_第1页
第1页 / 共25页
《数据结构》课程设计报告商品货架管理系统.docx_第2页
第2页 / 共25页
《数据结构》课程设计报告商品货架管理系统.docx_第3页
第3页 / 共25页
《数据结构》课程设计报告商品货架管理系统.docx_第4页
第4页 / 共25页
《数据结构》课程设计报告商品货架管理系统.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

《数据结构》课程设计报告商品货架管理系统.docx

《《数据结构》课程设计报告商品货架管理系统.docx》由会员分享,可在线阅读,更多相关《《数据结构》课程设计报告商品货架管理系统.docx(25页珍藏版)》请在冰豆网上搜索。

《数据结构》课程设计报告商品货架管理系统.docx

《数据结构》课程设计报告商品货架管理系统

 

湖北第二师范学院

课程设计报告

课程名称:

数据结构课程设计

 

设计题目:

商品货架管理系统

系别:

计算机科学系

专业:

软件工程

组别:

蔡桥利,阳乐,邱东明,郝耀峰

学生姓名:

--学号:

--

起止日期:

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;

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1