C语言-商品销售管理系统

2023-11-01

C语言-商品销售管理系统

全部代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h> 
#include<time.h> 
// 商品结构体 
typedef struct
{
	int number;
	char name[20];
	float inprice;
	float outprice;
	int count;
}product;

// 存放数据的链表 
struct data{
	product p;
	struct data * next;
};

/*
函数声明 
*/
void menu(int* choose);											//功能菜单 
struct data* load(struct data* head);					//加载数据 
void addProduct(struct data** end);						//添加商品 
void delProduct(struct data* head);						//删除商品 
void write(struct data* head);							//写入数据 
void purchase(struct data* head);						//商品进货 
void settlement(struct data* head, struct data* res);	//商品结算
//void getTime(FILE *fp);
void writelist(struct data* res);						//写入清单 
/*
主函数 
*/ 
int main(){
	// 模式 
	int choose;
	// 销售清单 
	struct data* res = (struct data*) malloc(sizeof(struct data));
	res -> next = NULL;
	
	struct data* head = (struct data* )malloc(sizeof(struct data));
	struct data* end = NULL;
	head -> next = NULL;
	while(1){
		menu(&choose);
		end = load(head);
		if(choose == 1){
			purchase(head);
		}else if(choose == 2){
			settlement(head, res);
			writelist(res); 
		}else if(choose == 3){
			addProduct(&end);
		}else if(choose == 4){
			delProduct(head);
		}
	}
	
	return 0;
}

/*
功能菜单:
	进货:1
	结算:2
	添加:3
	删除:4 
*/
void menu(int* choose){
	// 清屏 
	system("cls");
	// 交互界面 
	printf("******************************************************\n");
	printf("*                   商店销售管理系统                 *\n"); 
	printf("******************************************************\n");
	printf("*                      输入 1 进货                   *\n");
	printf("*                      输入 2 结算                   *\n");
	printf("*                  输入 3 添加新的商品               *\n");
	printf("*                输入 4 删除不需要的商品             *\n");
	printf("******************************************************\n");
	// 输入模式 
	scanf("%d", choose);
	return; 
}
/*
读取数据 
*/
struct data* load(struct data *head){
	FILE* fp;
	if((fp = fopen("data.txt","r")) == NULL){
		printf("加载存档时发生错误\n");
		exit(1);
	}
	// 临时存放文件数据 
	int number_t;
	char name_t[20];
	float inprice_t;
	float outprice_t;
	int count_t;
	struct data *q = head;
	// 读取 
	while(!feof(fp)){
		fscanf(fp, "%d", &number_t);
		fscanf(fp, "%s", name_t);
		fscanf(fp, "%f", &inprice_t);
		fscanf(fp, "%f", &outprice_t);
		fscanf(fp, "%d", &count_t);
		struct data *tmp = (struct data* )malloc(sizeof(struct data));
		tmp -> next = NULL;
		// 存入链表 
		tmp -> p.number = number_t;
		strcpy(tmp -> p.name, name_t);
		tmp -> p.inprice = inprice_t;
		tmp -> p.outprice = outprice_t;
		tmp -> p.count = count_t;
		q -> next = tmp;
		q = q -> next;
		//printf("%d %s %f %f %d", number_t, name_t, inprice_t, outprice_t, count_t);
		
	}
	fclose(fp);
	return q; 
} 
/*
清单写入磁盘 
*/
void writelist(struct data* res){
	FILE* fp;
	fp = fopen("list.txt","a");
	res = res -> next;
	while(res != NULL){
		fprintf(fp, "\n%d %s %f %f %d \n", res -> p.number, res -> p.name, res -> p.inprice, res -> p.outprice, res -> p.count);
		//fprintf(fp, "%s\n", res -> p.name);
		//fprintf(fp, "%f\n", res -> p.inprice);
		//fprintf(fp, "%f\n", res -> p.outprice);
		//fprintf(fp, "%d\n", res -> p.count);
		res = res -> next;
	}
	
	fclose(fp);
	printf("数据写入成功\n");
	return;
}
/*
数据写入磁盘 
*/
void write(struct data* head){
	system("del data.txt");
	FILE* fp;
	fp = fopen("data.txt","w+");
	head = head -> next;
	while(head != NULL){
		fprintf(fp, "\n%d\n", head -> p.number);
		fprintf(fp, "%s\n", head -> p.name);
		fprintf(fp, "%f\n", head -> p.inprice);
		fprintf(fp, "%f\n", head -> p.outprice);
		fprintf(fp, "%d", head -> p.count);
		head = head -> next;
	}
	
	fclose(fp);
	printf("数据写入成功\n");
	return;
}

/*
进货:1 
*/
void purchase(struct data* head){
	printf("提示:输入-1完成进货\n");
	int n, cnt;
	while(1){
		printf("输入商品的编号:\n");
		scanf("%d", &n);
		if(n == -1) break;
		printf("输入进货数量:\n"); 
		scanf("%d", &cnt) ;
		
		struct data* q = head;
		q = q -> next;
		while(q != NULL){
			if(q -> p.number == n){
				q -> p.count += cnt;
				break;
			}
			q = q -> next;
		}
	}
	write(head);
	printf("进货完成\n");
	getchar();
	getchar();
	
}

/*
结算 
*/
void settlement(struct data* head, struct data* res){
	// 总售价 
	double money_all = 0;
	printf("提示:输入-1进行结算\n");
	int n,cnt;
	
	struct data* tmp;
	// 工作指针 
	tmp = res;
	while(1){
		printf("输入商品编号:\n");
		scanf("%d", &n);
		// 结算
		if(n == -1){
			struct data* tmp2 = res;
			tmp2 = tmp2 -> next;
			int i = 1;
			while(tmp2 != NULL){
				printf("项目%d 编号:%d 商品名称:%s 售价:%f 数量:%d\n", i, tmp2->p.number, tmp2->p.name, tmp2->p.outprice, tmp2->p.count);
				money_all += (tmp2 -> p.outprice) * (tmp2 -> p.count);
				i++;
				tmp2 = tmp2 -> next;
			}
			printf("总计:%lf元\n",money_all);
			break;
		} 
		printf("输入购买数量:\n"); 
		scanf("%d", &cnt);
		
		// 寻找商品信息 
		struct data* q = head;
		q = q -> next;
		while(q != NULL){
			if(q -> p.number == n){
				q -> p.count -= cnt;
				struct data* newp = (struct data*) malloc(sizeof(struct data));
				newp -> next = NULL;
				newp -> p.number = q -> p.number;
				strcpy(newp -> p.name, q -> p.name);
				newp -> p.inprice = q -> p.inprice;
				newp -> p.outprice = q -> p.outprice;
				// 此时count代表购买数量 
				newp -> p.count = cnt;
				tmp -> next = newp;
				tmp = tmp -> next;
				break;
			}
			q = q -> next;
		}
	}
	write(head);
	//return res; 
	getchar();
	getchar();
	return;
	
}


/*
添加新的商品: 3 
*/
void addProduct(struct data** end){
	struct data *newp = (struct data* )malloc(sizeof(struct data));
	newp -> next =  NULL;
	printf("输入新商品的编号:\n");
	scanf("%d", &newp -> p.number);
	printf("输入新商品的名字:\n");
	scanf("%s", newp -> p.name);
	printf("输入新商品的进价:\n");
	scanf("%f", &newp -> p.inprice);
	printf("输入新商品的售价:\n");
	scanf("%f", &newp -> p.outprice);
	printf("输入新商品的库存数量:\n");
	scanf("%d", &newp -> p.count);
	// 加入链表 
	(*end) -> next = newp;
	(*end) = (*end) -> next;
	// 写入文件
	FILE* fp;
	fp = fopen("data.txt","a");
	fprintf(fp, "\n%d\n", newp -> p.number);
	fprintf(fp, "%s\n", newp -> p.name);
	fprintf(fp, "%f\n", newp -> p.inprice);
	fprintf(fp, "%f\n", newp -> p.outprice);
	fprintf(fp, "%d", newp -> p.count);
	
	printf("成功添加\n");
	fclose(fp);
	getchar();
	getchar();
	return;
}

/*
删除不需要的商品:4 
*/
void delProduct(struct data* head){
	int n;
	printf("输入要删除的商品的编号:\n");
	scanf("%d", &n);
	int flag = 0; // 标记是否存在 
	struct data* tmp = head, *head_t = head;
	head = head -> next;
	while(head != NULL){
		// 找到商品 
		if(head -> p.number == n){
			tmp -> next = head -> next;
			flag = 1;
			break;
		}
		tmp = head;
		head = head -> next;
	}
	if(flag){
		write(head_t);
		printf("删除成功\n"); 
		head_t = head_t -> next;
		while(head_t != NULL){
			printf("%d\n", head_t -> p.number);
			printf("%s\n", head_t -> p.name);
			printf("%f\n", head_t -> p.inprice);
			printf("%f\n", head_t -> p.outprice);
			printf("%d\n", head_t -> p.count);
			head_t = head_t -> next;
		}
	}else{
		printf("该商品不存在\n");
	}
	getchar();
	return;
} 
/*
void getTime(FILE *fp){
	//获取当前系统时间
	time_t tTime;//距离1900年1月1日的秒数
	time(&tTime);
	fprintf(fp, "%lld", tTime);
}
*/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言-商品销售管理系统 的相关文章

  • linux部署项目

    linux部署项目 一 安装jdk 1 二 安装tomcat 1 官网下载tomcat 官网地址 https tomcat apache org 2 部署项目 将下载的tomcat文件放入linux文件夹下 输入命令 tar zxvf ap
  • 离线pip安装paddlepaddle时存在的问题

    由于内网限制 只能从清华源安装软件包 而清华源没有满足条件的paddlepaddle安装包 为了成功在内网环境安装paddlepaddle 可以按照如下步骤 在开始使用 飞桨 源于产业实践的开源深度学习平台 官网平台 按照操作系统 计算平台
  • JDBC数据库连接 及JDBC使用讲解

    目录 1 什么是JDBC 2 JDBC 作原理 3 JDBC 使 3 1 创建项目并添加MySQL驱动 DataSource实现操作数据库 3 2 使用代码操作数据库 1 什么是JDBC Java 数据库连接 是 种 于执 SQL 语句的

随机推荐

  • 用Python编写代码,实现输出自己的姓名,班级,学号等信息

    可以使用以下代码实现输出自己的姓名 班级 学号等信息 name 你的姓名 class name 你的班级 student id 你的学号 print 姓名 name print 班级 class name print 学号 student
  • shell-环境变量以及环境变量的配置文件

    环境变量定义 用户自定义变量只在当前的shell中生效 而环境变量会在当前shell和这个shell的所有子shell当中生效 如果把环境变量写入相应的配置文件 那么这个环境变量就会在所有的shell中生效 设置环境变量 export 变量
  • Unity Shader小技巧-制作Shader时在Scene显示实时动态效果

    直接上截图 在编辑shader时 我们会使用到很多动态效果 例如 Time的函数 但是在Unity中会是静态效果 点击这个选项之后就以看到Scene窗口的Shader有动态效果了
  • malloc函数的使用

    调用被调函数 将主函数中动态内存分配的内存中的数据放大十倍 malloc动态分配了1字节的内存空间 最多能存放的整数是255 int型变量并不是一定占4字节 C语言从来没有规定一个整型必须要强制占几字节 C语言只规定了 短整型的长度不能大于
  • ASP.net DropDownList数据绑定及使用详解

    1 dropdownlist 绑定数据 1 1 固定绑定 适合已经固定的数据绑定到dropdownlist 实例
  • vue3中知识点总结(持续更新)

    1 具名插槽 Vue3 具名插槽 Named Slots 文档地址 具名插槽添加
  • java并发怎么理解_java中并发的理解

    在java中谈到并发 我们一定会想到两种锁 一种synchronized锁 一种ReentrantLock 还有一种轻量级的作用在变量上的volatile 那么他们三个有什么具体区别 和具体怎么用呢 下面针对他们三个分别说一下原理和作用 v
  • ArcGIS 正高转换成椭球体高度

    转载 https resources arcgis com zh cn help main 10 1 index html 009t000001vm000000 一 椭球体高度与正高 具体讲解可见 https resources arcgi
  • Fabric加密算法

    BCCSP Blockchain crypto provider 即区块链加密提供商 用于定义选择使用的密码学实现库 负责摘要生成 非对称密钥的签名与验证 根据证书查找私钥等 该模块提供了一系列的接口 这些接口定义了摘要的生成方法 签名 验
  • 负载均衡之Keepalived

    严格意义来说 Keepalived主要是通过虚拟路由冗余来实现高可用功能 但是其也可以借助IPVS实现负载均衡 所以也简要的学习了一下 简介 起初是设计来监控集群中各个节点的状态 根据TCP IP模型中网络层 ICMP控制消息请求 传输层
  • QFileInfo

    一 描述 QFileInfo 提供有关文件系统中文件的名称和位置 路径 访问权限 文件类型等信息 FileInfo 还可用于获取有关 Qt 资源的信息 这个类是隐式共享的 二 成员函数 2 1 判断函数 1 bool isAbsolute
  • python_sqlalchemy

    SQLAlchemy使用和踩坑记 知乎 2 长时间未请求连接自动断开 现象 长时间服务端没有连接数据库 数据库连接自动断开 原因 1 sqlalchemy在create engine时 使用连接池并没有指定连接池回收时间 则连接池的连接不会
  • 交互设计实用指南系列(1) – 操作入口明确

    链接 http ued taobao org blog 2009 12 the practice guidelines of interaction design clear operational entrance of effectiv
  • 微软 AD 已成过去式,这个身份领域国产化替代方案你了解吗?

    随着全球互联网和数字化浪潮的不断发展 信息安全已成为不可忽视的问题 并随着日益复杂的国内外市场格局 其重要性更加凸显 我国政府也相继印发和实施了 数字中国建设整体布局规划 全国一体化大数据体系建设指南 等一系列政策 将核心技术自主可控 安全
  • CSS学习————css的选择器(2)

    选择器的作用 用来查找要设置html样式的元素 css的选择器分为4大类 1 简单选择器 6种 1 1 通配符选择器 1 2 标签选择器 1 3 id选择器 1 4 属性选择器 1 5 类选择器 1 6 分组选择器
  • Mac OS X下Android系统华为手机无法连接问题之解决方案

    一般的android连接mac 很方便不用安装驱动就可以啦 可是不知道为什么特殊情况下有的android手机 小米2 华为等 就是连接不上 下来就说说特殊情况下如何连接 使用USB连接安卓手机后可以做2件事情 关于本机 gt 更多信息 gt
  • 模板的显示实例化与显示具体化

    显式实例化 C 中模板函数 类 的调用与定义分离时 需要使用显式实例化 否则就会出现链接错误 编译器对各个cpp分别编译的时候 模板函数必须被实例化编译 如果我们把调用与定义写在一个文件 在调用语句处有int a b cmp a b 那么编
  • UVM的phase机制(Ⅰ)

    uvm存在phase机制 每个phase完成对应的功能 将所有的程序分解在不同的phase中执行 保证了验证环境的验证代码的执行顺序 并且每个phase完成对应的功能 使验证环境运行仿真层次化 让各种组件的例化次序正确 环境的执行顺序正确
  • 万字长文分享,如何自学Java(方法+步骤)

    目录 收起 大家存在的问题 为什么我觉得方法很重要 五个步骤学习Java 第一阶段 揽全局 怎么办 你需要的是系统化学习 教程式笔记 我的大学 我准备从思想方法和具体的学习步骤上给大家聊一下我的做法 希望对大家有所帮助 看完本篇文章你会得到
  • C语言-商品销售管理系统

    C语言 商品销售管理系统 全部代码如下 include