商品货架管理 1

合肥学院

计算机科学与技术系

课程设计报告

2014 ~ 2015 学年第二学期

数据结构与算法

课程设计名称

超市货架管理 学生姓名 许世琨 学

1304031035 专业班级 13网络工程一班 指导教师

何立新、华珊珊

2015 年 6 月

目录

一:问题分析和任务定义 . ................................................. 2

Ⅰ、问题描述与分析 . ................................................. 2 Ⅱ、任务定义 . ....................................................... 2 二:功能模块图 . ......................................................... 2 三:详细设计和编码 . ..................................................... 4 四:上机调试过程 . ....................................................... 6 五:测试结果及其分析 . ................................................... 7 六:用户使用说明 . ....................................................... 9 七:参考文献 . ........................................................... 9 八:附录 . ................................................................ 9

一:问题分析和任务定义

Ⅰ、问题描述与分析

[问题描述]

商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。 上货时,需要倒货架,以保证生产日期较近的商品在较下的位置。

[问题分析]

基本思路是先建立两个栈!在一个栈里放入已有的商品!然后用一个循环语句对新加入的商品进行个数的确定输入!然后把第一个栈里的元素出栈与新加入的进行比较新的比旧的大就把旧的放到第二个栈里,小的话就把新的入栈1, 完成后把栈2的入栈1。完成输出。

Ⅱ、任务定义

1、先定义数据日期的结构体--里面包括日期。 2、写进栈和出栈的函数。 3、写倒货函数。

4、函数输出,输出只是单纯的输出,不是求出栈。

二:功能模块图

1.各个模块的功能描述。

struct data:定义商品信息

包括商品名和生产日期

Seqstack :定义顺序栈

putin(seqstack *s1):输入货架原始商品数据

存放在顺序栈A 中

cmp(seqstack *s1, seqstack *s2, int TOP):输入并比较新商品,以调整其在货架中的

位置

借助顺序栈B 在栈A 上操作

putout(seqstack *s1,int TOP):输出顺序栈

2.功能模块图

三:详细设计和编码

定义商品信息模块: struct data {

char name[10]; long date; };

定义顺序栈模块: typedef struct {

struct data sp[size]; int top; }seqstack;

输入原始数据模块: int putin(seqstack *s1) {

int i = 0;

for(s1->top = 0; s1->top top ++) { 要求摆放

printf("请输入第%d件商品名称:",s1->top + 1); scanf("%s", s1->sp[s1->top].name); printf("请输入生产日期:");

scanf("%d", &s1->sp[s1->top].date); printf("\n"); }

/*商品名称*/

/*商品生产日期*/

//此处输入商品生产时间应按照由近到远输入,以确保货架上原始商品已经按

return(-- s1->top); }

处理新商品模块:

int cmp(seqstack *s1, seqstack *s2, int TOP) {

struct data new; s1->top = TOP; s2->top = -1;

printf("请输入新商品名称:"); scanf("%s", new.name); printf("请输入生产日期:"); scanf("%d", &new.date); /*比较新旧商品的生产日期*/

while(s1->top != -1 && new.date - s1->sp[s1->top].date > 0) {

s2-> top ++;

strcpy(s2->sp[s2->top].name, s1->sp[s1->top].name); s2->sp[s2->top].date = s1->sp[s1->top].date; s1->top--; }

s1->top++;

/*将新商品插入货架*/

strcpy(s1->sp[s1->top].name, new.name); s1->sp[s1->top].date = new.date; for(;s2->top>-1;s2->top--) {

s1->top++;

strcpy(s1->sp[s1->top].name,s2->sp[s2->top].name); s1->sp[s1->top].date=s2->sp[s2->top].date; }

return(s1->top); }

顺序栈输出模块:

void putout(seqstack *s1,int TOP) {

printf("\n\n更新商品后的货架商品顺序为:\n"); printf("\n商品名称 生产日期:\n\n"); for(s1->top=TOP;s1->top>=0;s1->top--) {

printf(" %s ",s1->sp[s1->top].name); printf("%d\n",s1->sp[s1->top].date); }

printf("\n\n\n\n"); }

四:上机调试过程

1. 这个程序代码比较少,也比较简单,所以刚开始错误大多是大小写问题,输入格式问题,标点符号问题,括号匹配问题等,简单的检查即可解决。

2. 很多不懂的还是请教别的同学的,老是也给于了很多的帮助!

3. 输入时会出现格式错误(如下)

图3-1

五:测试结果及其分析

1. 你可以定义你要输入的货架上的商品个数,名称你也可以随意的取,生产日期自己定义

图4-1(输入已有商品)

图4-2(输入新的商品)

图4-3(结果输出)

六:用户使用说明

1.输入已有的商品个数 2.输入已有商品的名字、日期 3.输入新加入的商品个数 4.输入新加入的商品名字、日期 5.输出结果

七:参考文献

[1] 王昆仑,李红. 数据结构与算法. 北京:中国铁道出版社,2006年5月。 [2] 《数据结构算法与应用——C 语言描述》第一版,Sartaj Sahni 著,国防科技大学汪诗林、孙晓东等译,王广芳审校,机械工业出版社。

[3]《算法设计方法》,吴哲辉、崔焕庆、马炳先、吴振寰著,机械工业出版社,2008。

[4] 《数据结构与算法分析——C 语言描述》(Data Structures and Algorithms Analysis in C)第二版,Mark Allen Weiss著,天津师范大学冯舜玺译,机械工业出版社。

[5] 《数据结构(C 语言版)》,严蔚敏、吴伟民著,清华大学出版社。

[6] 《C++数据结构原理与经典问题求解》,左飞著,飞思科技产品研发中心监制,电子工业出版社,2008。

[7]《C 陷阱与缺陷》作者 : 凯尼格 出版社 : 人民邮电出版社。

[8]《编程精粹》 作者 : Steve Maguire 出版社 : 人民邮电出版社。

八:附录

#include

#include

#define size 20

struct data//定义商品信息

char name[6]; //商品名称

long int date; //商品生产日期

};

typedef struct//定义顺序栈

{

struct data sp[size];

int top;

}seqstack;

int push1(seqstack *s1)

{

int i=0,n;

// 先输入n 件

puts("输入已有商品的件数:");

scanf(" %d", &n);

for(s1->top=0;s1->toptop++)

{

printf("请输入第%d件商品名称:",s1->top+1);

scanf("%s",s1->sp[s1->top].name);

printf("请输入生产日期:");

scanf("%d",&s1->sp[s1->top].date);

printf("\n");

}

return(--s1->top);

}

int cmp(seqstack *s1,seqstack *s2,int TOP)

{

int n,i;

struct data new;

s1->top=TOP;

s2->top=-1;

puts("输入新商品的个数:");

scanf(" %d", &n);

// 循环

for(i=0;i

printf("请输入新商品名称:");

scanf("%s",new.name);

printf("请输入生产日期:");

scanf("%d",&new.date);

while(s1->top!=-1&&new.date-s1->sp[s1->top].date>0)

//比较新旧商品的生产日期

{

s2->top++;

strcpy(s2->sp[s2->top].name,s1->sp[s1->top].name);

s2->sp[s2->top].date=s1->sp[s1->top].date;

s1->top--;

}

s1->top++;//将新商品插入货架

strcpy(s1->sp[s1->top].name,new.name);

s1->sp[s1->top].date=new.date;

for(;s2->top>-1;s2->top--)

{

s1->top++;

strcpy(s1->sp[s1->top].name,s2->sp[s2->top].name);

s1->sp[s1->top].date=s2->sp[s2->top].date;

}

}

return(s1->top);

}

void pop(seqstack *s1,int TOP)//输出插入新商品后的货架商品顺序

{

printf("更新商品后的货架商品顺序为:\n");

printf("商品名称 生产日期:\n");

for(s1->top=TOP;s1->top>=0;s1->top--)

{

printf(" %s ",s1->sp[s1->top].name);

printf("%d\n",s1->sp[s1->top].date);

}

printf("over");

}

void main()

{

int TOP=0;

seqstack A,B;

TOP=push1(&A);

TOP=cmp(&A,&B,TOP);

pop(&A,TOP); }

合肥学院

计算机科学与技术系

课程设计报告

2014 ~ 2015 学年第二学期

数据结构与算法

课程设计名称

超市货架管理 学生姓名 许世琨 学

1304031035 专业班级 13网络工程一班 指导教师

何立新、华珊珊

2015 年 6 月

目录

一:问题分析和任务定义 . ................................................. 2

Ⅰ、问题描述与分析 . ................................................. 2 Ⅱ、任务定义 . ....................................................... 2 二:功能模块图 . ......................................................... 2 三:详细设计和编码 . ..................................................... 4 四:上机调试过程 . ....................................................... 6 五:测试结果及其分析 . ................................................... 7 六:用户使用说明 . ....................................................... 9 七:参考文献 . ........................................................... 9 八:附录 . ................................................................ 9

一:问题分析和任务定义

Ⅰ、问题描述与分析

[问题描述]

商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。 上货时,需要倒货架,以保证生产日期较近的商品在较下的位置。

[问题分析]

基本思路是先建立两个栈!在一个栈里放入已有的商品!然后用一个循环语句对新加入的商品进行个数的确定输入!然后把第一个栈里的元素出栈与新加入的进行比较新的比旧的大就把旧的放到第二个栈里,小的话就把新的入栈1, 完成后把栈2的入栈1。完成输出。

Ⅱ、任务定义

1、先定义数据日期的结构体--里面包括日期。 2、写进栈和出栈的函数。 3、写倒货函数。

4、函数输出,输出只是单纯的输出,不是求出栈。

二:功能模块图

1.各个模块的功能描述。

struct data:定义商品信息

包括商品名和生产日期

Seqstack :定义顺序栈

putin(seqstack *s1):输入货架原始商品数据

存放在顺序栈A 中

cmp(seqstack *s1, seqstack *s2, int TOP):输入并比较新商品,以调整其在货架中的

位置

借助顺序栈B 在栈A 上操作

putout(seqstack *s1,int TOP):输出顺序栈

2.功能模块图

三:详细设计和编码

定义商品信息模块: struct data {

char name[10]; long date; };

定义顺序栈模块: typedef struct {

struct data sp[size]; int top; }seqstack;

输入原始数据模块: int putin(seqstack *s1) {

int i = 0;

for(s1->top = 0; s1->top top ++) { 要求摆放

printf("请输入第%d件商品名称:",s1->top + 1); scanf("%s", s1->sp[s1->top].name); printf("请输入生产日期:");

scanf("%d", &s1->sp[s1->top].date); printf("\n"); }

/*商品名称*/

/*商品生产日期*/

//此处输入商品生产时间应按照由近到远输入,以确保货架上原始商品已经按

return(-- s1->top); }

处理新商品模块:

int cmp(seqstack *s1, seqstack *s2, int TOP) {

struct data new; s1->top = TOP; s2->top = -1;

printf("请输入新商品名称:"); scanf("%s", new.name); printf("请输入生产日期:"); scanf("%d", &new.date); /*比较新旧商品的生产日期*/

while(s1->top != -1 && new.date - s1->sp[s1->top].date > 0) {

s2-> top ++;

strcpy(s2->sp[s2->top].name, s1->sp[s1->top].name); s2->sp[s2->top].date = s1->sp[s1->top].date; s1->top--; }

s1->top++;

/*将新商品插入货架*/

strcpy(s1->sp[s1->top].name, new.name); s1->sp[s1->top].date = new.date; for(;s2->top>-1;s2->top--) {

s1->top++;

strcpy(s1->sp[s1->top].name,s2->sp[s2->top].name); s1->sp[s1->top].date=s2->sp[s2->top].date; }

return(s1->top); }

顺序栈输出模块:

void putout(seqstack *s1,int TOP) {

printf("\n\n更新商品后的货架商品顺序为:\n"); printf("\n商品名称 生产日期:\n\n"); for(s1->top=TOP;s1->top>=0;s1->top--) {

printf(" %s ",s1->sp[s1->top].name); printf("%d\n",s1->sp[s1->top].date); }

printf("\n\n\n\n"); }

四:上机调试过程

1. 这个程序代码比较少,也比较简单,所以刚开始错误大多是大小写问题,输入格式问题,标点符号问题,括号匹配问题等,简单的检查即可解决。

2. 很多不懂的还是请教别的同学的,老是也给于了很多的帮助!

3. 输入时会出现格式错误(如下)

图3-1

五:测试结果及其分析

1. 你可以定义你要输入的货架上的商品个数,名称你也可以随意的取,生产日期自己定义

图4-1(输入已有商品)

图4-2(输入新的商品)

图4-3(结果输出)

六:用户使用说明

1.输入已有的商品个数 2.输入已有商品的名字、日期 3.输入新加入的商品个数 4.输入新加入的商品名字、日期 5.输出结果

七:参考文献

[1] 王昆仑,李红. 数据结构与算法. 北京:中国铁道出版社,2006年5月。 [2] 《数据结构算法与应用——C 语言描述》第一版,Sartaj Sahni 著,国防科技大学汪诗林、孙晓东等译,王广芳审校,机械工业出版社。

[3]《算法设计方法》,吴哲辉、崔焕庆、马炳先、吴振寰著,机械工业出版社,2008。

[4] 《数据结构与算法分析——C 语言描述》(Data Structures and Algorithms Analysis in C)第二版,Mark Allen Weiss著,天津师范大学冯舜玺译,机械工业出版社。

[5] 《数据结构(C 语言版)》,严蔚敏、吴伟民著,清华大学出版社。

[6] 《C++数据结构原理与经典问题求解》,左飞著,飞思科技产品研发中心监制,电子工业出版社,2008。

[7]《C 陷阱与缺陷》作者 : 凯尼格 出版社 : 人民邮电出版社。

[8]《编程精粹》 作者 : Steve Maguire 出版社 : 人民邮电出版社。

八:附录

#include

#include

#define size 20

struct data//定义商品信息

char name[6]; //商品名称

long int date; //商品生产日期

};

typedef struct//定义顺序栈

{

struct data sp[size];

int top;

}seqstack;

int push1(seqstack *s1)

{

int i=0,n;

// 先输入n 件

puts("输入已有商品的件数:");

scanf(" %d", &n);

for(s1->top=0;s1->toptop++)

{

printf("请输入第%d件商品名称:",s1->top+1);

scanf("%s",s1->sp[s1->top].name);

printf("请输入生产日期:");

scanf("%d",&s1->sp[s1->top].date);

printf("\n");

}

return(--s1->top);

}

int cmp(seqstack *s1,seqstack *s2,int TOP)

{

int n,i;

struct data new;

s1->top=TOP;

s2->top=-1;

puts("输入新商品的个数:");

scanf(" %d", &n);

// 循环

for(i=0;i

printf("请输入新商品名称:");

scanf("%s",new.name);

printf("请输入生产日期:");

scanf("%d",&new.date);

while(s1->top!=-1&&new.date-s1->sp[s1->top].date>0)

//比较新旧商品的生产日期

{

s2->top++;

strcpy(s2->sp[s2->top].name,s1->sp[s1->top].name);

s2->sp[s2->top].date=s1->sp[s1->top].date;

s1->top--;

}

s1->top++;//将新商品插入货架

strcpy(s1->sp[s1->top].name,new.name);

s1->sp[s1->top].date=new.date;

for(;s2->top>-1;s2->top--)

{

s1->top++;

strcpy(s1->sp[s1->top].name,s2->sp[s2->top].name);

s1->sp[s1->top].date=s2->sp[s2->top].date;

}

}

return(s1->top);

}

void pop(seqstack *s1,int TOP)//输出插入新商品后的货架商品顺序

{

printf("更新商品后的货架商品顺序为:\n");

printf("商品名称 生产日期:\n");

for(s1->top=TOP;s1->top>=0;s1->top--)

{

printf(" %s ",s1->sp[s1->top].name);

printf("%d\n",s1->sp[s1->top].date);

}

printf("over");

}

void main()

{

int TOP=0;

seqstack A,B;

TOP=push1(&A);

TOP=cmp(&A,&B,TOP);

pop(&A,TOP); }


相关文章

  • 商品陈列标准
  • 商品陈列标 准 商品陈列标准 一. 陈列的基本概念 1.排面:某商品在货架上陈列时,面对视线所能看到的商品陈列的最大个数. 2.黄金陈列线:与人的水平视线基本平行的范围内的货架陈列空间. 3.商品分类:将商品按类别进行分类. 4.最大货架陈 ...查看


  • 超市货架摆放技巧
  • 我记得我好像在哪本书中读到过,但不是特地为写这个而提出的.我觉得你自己编几条就行了.摆放时可参考以下几点: 1.促进滞销产品销售: 2.对超市利润点最大的产品优先摆放: 3.同类产品集中摆放,方便顾客购物: 4.空间合理布局(有的商品较大, ...查看


  • 商品陈列培训资料
  • 商品陈列培训资料 A 商品满陈列原则 货架上的商品必须保持充分的放满陈列,放满陈列的意义有以下几个方面: 1. 2. 如果货架经常缺货,说明卖场有效的陈列空间被白白浪费: 货架不是满陈列原则,对顾客来说是商品自己的表现力降低了,在卖场几千种 ...查看


  • 如何做好仓储管理
  • 如何做好仓储管理 公司管理者都知道,当公司业务发展到一定阶段后,管理问题也就越发凸显,特别是当业务增多,产品线增多时,仓储管理问题就越发明显.比如在产品入库阶段,产品种类繁多,容易发生错包,入库验收时数量.种类容易错乱. 在库存管理阶段,领 ...查看


  • 门店运营管理手册
  • 门店产品销售区域 管理手册 一.前言 1.适用范围: 本手册用于公司各连锁店的营运人员作为店面销售区域工作的指南. 2.目的: 全面地介绍了销售区域的营运工作,有助于营运管理及销售人员迅速建立连锁经营的概念与统一管理模式. 3.益处: 更快 ...查看


  • 超市专业术语 1
  • 超 市--实行自助服务,集中一次性付款的销售方式,以满足消费者对基本的生活用品一次性购足的需求. 服务台--为来我超市购物的顾客提供方便以及服务的地方. 存包柜--用来方便为顾客存取物品的电子柜. 会员卡--在享受会员价商品待遇的同时,还可 ...查看


  • 超市品类管理分析
  • 武汉钧策咨询管理有限公司 www.jclingshou.com 香港华润超市品类管理分析 品类管理是使商品组合更为科学有效的管理手段,通过优化商品的组合,有效利用有限的空间资源,使销售利润达到最大化,并提高毛利,降低库存.品类管理较传统的商 ...查看


  • 9门店卫生管理制度
  • 门店卫生管理制度 营运NO:001 一.目的:为保证门店店面.货架.商品的卫生,保证商品质量,加强卫生管理,特制定本管理规定. 二.范围:公司营运各部门适用. 三.职责: 1. 门店员工负责门店店面.货架.商品及标识标物的卫生: 2. 门店 ...查看


  • 拉动式供应链策略
  • 英国的Mothercare是一家全球性的母婴用品零售商,主要销售母婴用品.学龄前儿童用品以及旅行用品和玩具,在英国有225家零售店,在38个国家拥有328个加盟店,同时还能够提供网上邮购业务,年全球销售额达5亿英镑. Mothercare的 ...查看


热门内容