c语言 商品管理系统 顺序表的应用

商品管理系统

需求描述

使用线性表编写程序,实现一在线商城对商品进行管理,商城客户可以查询商品信息,商城的商家可以添加、删除、查询、修改自己发布的商品信息。
要求:

  1. 商品用户分为客户和商家。
  2. 客户可以在程序中查询商家发布的商品信息。
  3. 商家可以在程序中对自己发布的商品进行添加、删除、查询、修改操作。
  4. 使用线性表实现
  5. 代码符合规范,正确、易读、易操作。

运行结果

结果

代码

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#define COMMODITY_NAME_MAXSIZE 20   //商品名称容量
#define COMMODITY_DESCRIBE_MAXSIZE 100    //商品描述容量
#define LIST_INIT_MAXSIZE 100		//列表初始容量
#define LIST_ADD_SIZE 20		//列表增加容量
#define SLEEP_TIME  500		//睡眠时间 
//client
//merchant
//定义顺序表结构体
typedef struct {
	char name[COMMODITY_NAME_MAXSIZE];//商品名称
	float price;//价格
	char describe[COMMODITY_DESCRIBE_MAXSIZE];//描述
}ElemType;
typedef struct {
	ElemType* data;
	int length;//当前长度
	int maxsize;//最大长度
}DataList;


//初始化商品列表
void initCommodityList(DataList* list);
//添加元素
void addData(DataList* list);
//删除元素
void deleteData(DataList* list);
//查询商品
void queryData(DataList* list);
//列表扩容
void listSizeAdd(DataList* list);
//更改元素
void changeData(DataList* list); 
//打印列表 
void printList(DataList* list); 
//商家操作系统
void managerSystem(DataList* list);
//用户操作系统 
void clientSystem(DataList* list);
//清屏 
void clear();

//初始化商品列表
void initCommodityList(DataList* list) {
	list->data = (ElemType*)malloc(sizeof(ElemType)*LIST_INIT_MAXSIZE);
	list->length = 0;
	list->maxsize = LIST_INIT_MAXSIZE;
}

void addData(DataList* list) {
	clear();
	if (list->length == list->maxsize) {
		listSizeAdd(list);
	}
	printf("请输入增加商品名称,价格,以及相关描述");
	fflush(stdin);
	scanf("%s %f %s", list->data[list->length].name, &list->data[list->length].price, list->data[list->length].describe);
	list->length++;
	printf("%s已添加\n", list->data[list->length-1].name);
}

void deleteData(DataList* list) {
	clear();
	char name[COMMODITY_NAME_MAXSIZE];
	printf("请输入要删除的商品名称:");
	fflush(stdin);
	scanf("%s", name);
	int i = 0;
	for (; i < list->length; i++) {
		if (strcmp(name, list->data[i].name) == 0) {
			break;
		}
	}
	if(i == list->length){
		printf("未查询到对应商品\n");
		return;
	}
	for (; i < list->length - 1; i++) {
		list->data[i] = list->data[i + 1];
	}
	list->length--;
	printf("%s已删除\n", name);
}

void queryData(DataList* list) {
	clear();
	char name[COMMODITY_NAME_MAXSIZE];
	printf("请输入您要查询的商品名称:");
	scanf("%s", name);
	for (int i = 0; i < list->length; i++) {
		if (strcmp(name, list->data[i].name) == 0) {
			printf("商品名称:%s\n价格:%.2f\n介绍:%s\n", i, list->data[i].name, list->data[i].price, list->data[i].describe);
			system("pause");
			return;
		}
	}
	printf("未查询到相关商品\n");
}

void changeData(DataList* list){
	clear();
	ElemType temp;
	printf("请输入您要修改的商品名称以及修改后的价格和相关描述:\n");
	fflush(stdin);
	scanf("%s %f %s", temp.name, &temp.price, temp.describe);
	for (int i = 0; i < list->length; i++) {
		if (strcmp(temp.name, list->data[i].name) == 0) {
			list->data[i] = temp;
			printf("修改成功\n");
			return;
		}
	}
	printf("未查询到相关商品\n");
}

void printList(DataList* list){
	clear();
	for(int i = 0; i < list->length; i++){
		printf("%d.\n商品名称:%s\n价格:%.2f\n介绍:%s\n", i + 1, list->data[i].name, list->data[i].price, list->data[i].describe);
	}
	system("pause");
}

void listSizeAdd(DataList* list) {
	list->data = (ElemType*)realloc(list, sizeof(ElemType) * (list->maxsize + LIST_ADD_SIZE));
}

void clear(){
	Sleep(SLEEP_TIME);
	system("cls");
}
void managerSystem(DataList* list) {
	int n = 1;
	while (n != 0) {
		clear();
		printf("请输入您的操作指令:\n1.增加商品\n2.删除商品\n3.查询商品\n4.修改商品数据\n5.打印列表\n0.退出\n");
		fflush(stdin);
		scanf("%d", &n);
		switch (n)
		{
		case 1:
			addData(list);
			break;
		case 2:
			deleteData(list);
			break;
		case 3:
			queryData(list);
			break;
		case 4:
			changeData(list);
		case 5:
			printList(list);
			break;
		case 0:
			return;
		default:
			printf("指令错误\n");
			return;
		}
	}
}

void clientSystem(DataList* list){
	int n = 1;
	while (n != 0) {
		clear();
		printf("请输入您的操作指令:\n1.查询商品\n2.打印列表\n0.退出\n");
		fflush(stdin);
		scanf("%d", &n);
		switch (n)
		{
		case 1:
			queryData(list);
			break;
		case 2:
			printList(list);
			break;
		case 0:
			return;
		default:
			printf("指令错误\n");
			return;
		}
	}
}
	 

int main() {
	DataList list;
	initCommodityList(&list);
	int n = 1;
	while(n != 0){
		clear();
		printf("请登录:\n1.客户登录\n2.管理员登录\n0.退出\n");
		scanf("%d", &n);
		if (n == 1) {
			printf("登录成功!\n");
			clientSystem(&list);
		}
		else if (n == 2) {
			printf("登录成功!\n"); 
			managerSystem(&list);
		}
		else if(n == 0){
			return 0;
		}
		else {
			printf("指令错误\n");
		}
	}
	return 0;
}
  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言顺序表图书管理是一种用C语言实现的图书管理系统,通过顺序表数据结构来存储和管理图书信息。顺序表是一种线性表的存储结构,可以将图书信息按顺序存储在连续的存储空间中。 对于图书管理系统,我们可以创建一个结构体来表示图书的信息,包括图书编号、书名、作者、出版日期等字段。然后,我们可以使用一个一维数组来作为顺序表,每个元素存储一个图书的信息。 在顺序表图书管理系统中,我们可以实现以下功能: 1. 添加图书:当新书到馆时,可以通过输入图书信息,将图书添加到顺序表中。 2. 删除图书:当图书被借走或丢失时,可以根据图书编号或书名等信息,在顺序表中查找并删除对应的图书信息。 3. 查询图书:可以根据图书编号、书名、作者等信息,在顺序表中查找并显示符合条件的图书信息。 4. 修改图书信息:可以根据图书编号或书名等信息,在顺序表中定位到某本图书,并可以修改其相关信息,如作者、出版日期等。 5. 显示图书列表:可以将顺序表中的所有图书信息全部显示出来。 6. 图书统计:可以统计顺序表中的图书数量、不同作者的图书数量等统计信息。 通过上述功能的实现,我们可以方便地进行图书的管理查询。同时,使用顺序表作为存储结构,还可以减少内存空间的浪费,提高数据的访问效率。 总之,C语言顺序表图书管理系统可以帮助我们实现图书的存储、查询、修改和删除等功能,方便管理图书馆或个人的图书资源。同时,通过学习和实现该系统,我们也可以加深对C语言顺序表数据结构的理解和应用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值