数据结构课程设计——商品货架管理(顺序栈)
一、问题描述
商品货架可以看成一个栈,栈顶商品的生产日期最早,栈底商品的生产日期最近。上货时,需要进行倒货架,以保证生产日期较近的商品在较下的位置。
二、基本要求
针对一种特定商品,实现上诉管理过程。
三、实现提示
用栈模拟货架和周转空间。
四、源程序
#include <stdio.h>
#include <string.h>//字符串
#include<time.h>//时间
#include<stdlib.h>
#include <conio.h>
#include <windows.h>
#define size 3 //货架最大容量
//商品信息结构体
struct Data{
int year; //年份
int month; //月份
int day; //日期
int num; //数量
int data; //保质期
int num_1; //货件编号
};
//定义顺序栈
typedef struct{
struct Data sp[size];//看成数组
int top;//栈顶
}seqstack;
void InitStack(seqstack *S1);
int StackEmpty(seqstack *S1);
int StackFull(seqstack *S1);
void push(seqstack *S1,seqstack *S2);
void pop(seqstack *S1,seqstack *S2);
void find(seqstack *S1);
void Print(seqstack *S1);
void output(seqstack *S1);
void print1(seqstack *S1);
void del(seqstack *S1);
void save(seqstack *S1);
void menu();
void InitStack(seqstack *S1){
//栈初始化
S1->top=-1;
}
int StackEmpty(seqstack *S1){
//判断栈是否空
if(S1->top==-1) return 1;
else return 0;
}
int StackFull(seqstack *S1){
//判断栈是否满
if(S1->top==size-1)return 1;
else return 0;
}
void push(seqstack *S1,seqstack *S2){
//商品货件上架(录入商品货件信息)
int i,n,m,j=0;
time_t t;
struct tm * lt;
time (&t);//获取Unix时间戳。
lt = localtime (&t);//转为时间结构。
struct Data p;
m=(lt->tm_year+1900)*365+(lt->tm_mon)*30+lt->tm_mday;
printf("------------欢迎进入商品上货界面!------------\n\n\n");
if(StackFull(S1))printf("\t*货架已满,无法上货!");
else{
printf("该货架最大容量为%d!,货架已有%d件货物!\n\n",size,S1->top+1);
do{
fflush(stdin);
printf("\n请输入本次上货的件数:"); //超过货架最大容量,重新输入
scanf("%d",&n);
if(n+S1->top+1>size) printf("\n该货架最大容量为%d且货架已有%d件货物!请重新输入!\n\n",size,S1->top+1);
}while(n+S1->top+1>size);
for(j=0;j<n;j++){
printf("\n请输入第%d件货物的信息:\n",j+1);
printf("\n\to货件编号:");
scanf("%d",&p.num_1);
do{
fflush(stdin);
printf("\n\to生产日期:"); //生产日期小于今天且规范,货件为近十年的货件
scanf("%d/%d/%d",&p.year,&p.month,&p.day);
if((p.year*365+(p.month-1)*30+p.day)>m||p.year<=0||p.year<(lt->tm_year+1890)||p.month<=0||p.month>12||p.day<=0||p.day>30)
printf("\n输入的生产日期不对!请重新输入!\n");
}while((p.year*365+(p.month-1)*30+p.day)>m||p.year<=0||p.year<(lt->tm_year+1890)||p.month<=0||p