栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

商品管理系统
  • 需求描述
  • 运行结果
  • 代码

需求描述

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

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

代码
#include 
#include 
#include 
#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("商品名称:%sn价格:%.2fn介绍:%sn", 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商品名称:%sn价格:%.2fn介绍:%sn", 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;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/928502.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号