数据结构课程设计-商品货架管理(C语言)

本文介绍了使用C语言进行数据结构课程设计的一个案例——商品货架管理,通过顺序栈实现上货、出货、查询、打印过期货件、删除货件和保存操作等功能。详细阐述了每个功能的工作原理,并提供了程序运行截图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构课程设计——商品货架管理(顺序栈)

一、问题描述

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

二、基本要求

针对一种特定商品,实现上诉管理过程。

三、实现提示

用栈模拟货架和周转空间。

四、源程序

#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)
好的,为您提供一个简单的商品货架管理系统的数据结构课程设计方案。 1. 需求分析 本系统需要实现以下功能: - 能够添加、删除、修改商品货架信息 - 能够添加、删除、修改商品信息 - 能够根据货架编号、商品编号查询货架商品信息 - 能够实现货架商品信息的排序和统计 2. 数据结构设计 在实现上述功能的基础上,我们可以设计以下数据结构- 货架信息(Shelf):包含货架编号、货架名称、货架容量等属性。 - 商品信息(Commodity):包含商品编号、商品名称、商品价格等属性。 - 货架商品关系(ShelfCommodity):用于记录货架商品之间的关系,包含货架编号、商品编号、商品数量等属性。 为了实现排序和统计功能,我们可以使用以下数据结构- 货架信息数组(ShelfArray):用于存储所有的货架信息。 - 商品信息数组(CommodityArray):用于存储所有的商品信息。 - 货架商品关系数组(ShelfCommodityArray):用于存储所有的货架商品之间的关系。 3. 算法设计 在实现商品货架管理系统时,我们需要使用以下算法: - 添加货架信息算法:当要添加一个新的货架信息时,需要将新的货架信息添加到货架信息数组中。 - 删除货架信息算法:当要删除一个货架信息时,需要在货架信息数组中查找该货架信息,并将其从数组中删除。同时,需要将该货架上的所有商品信息也删除。 - 修改货架信息算法:当要修改一个货架信息时,需要在货架信息数组中查找该货架信息,并将其修改。 - 添加商品信息算法:当要添加一个新的商品信息时,需要将新的商品信息添加到商品信息数组中,并更新货架商品关系数组中的数据。 - 删除商品信息算法:当要删除一个商品信息时,需要在商品信息数组中查找该商品信息,并将其从数组中删除。同时,需要将该商品从所有的货架中移除。 - 修改商品信息算法:当要修改一个商品信息时,需要在商品信息数组中查找该商品信息,并将其修改。同时,需要更新货架商品关系数组中的数据。 - 查询货架商品信息算法:根据货架编号、商品编号查询货架商品信息。 - 排序与统计算法:根据需要实现不同的排序和统计算法。 4. 总结 通过以上数据结构和算法的设计,我们可以实现一个简单的商品货架管理系统。当然,实际开发中,还需要考虑很多细节问题,如数据持久化、界面设计等,但这些问题超出了本文的范围。
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值