【C语言期末】商品管理系统

news2024/11/15 21:03:47

 本文资源:https://download.csdn.net/download/weixin_47040861/88820155


1.题目要求

商品管理系统

商品信息包括:包括编号、类别、名称、价格、折扣比例、生产时间 、存货数量等要求:
1、信息首先保存在文件中,然后打开文件进行读写操作,信息的改写必须与文件中保存的数据同步。
2、完成以下功能:
1 系统以菜单方式工作
2 增加商品信息
3 删除指定的商品信息
4 修改指定的商品信息
5 能按照多种方式查询(至少两种,如编号、类别、名称等
6 统计功能。按类别统计各种商品的存货数量,平均价格及存货量最多的商品信息
7 按照商品类别进行排序

2.实现效果

1.添加商品

2.修改商品

3.查询商品

4.删除商品

5.统计

6.排序

3.功能介绍

1.添加商品

  1. 创建一个名为newProductProduct结构体,用于存储新商品的信息。结构体的各字段包括编号(id)、类别(category)、名称(name)、价格(price)、折扣比例(discount)、生产日期(productionDate)和库存数量(inventory)。

  2. 通过printfscanf_s函数,向用户展示商品信息的输入提示,并接收用户输入的商品信息。用户需要输入产品编号、类别、名称、价格、折扣比例、生产日期和库存数量。

  3. 将用户输入的新商品(newProduct)添加到商品数组(products)的末尾,即数组的下一个位置。

  4. 打印"修改成功!"的提示消息,表示商品添加操作成功。

  5. 更新商品数组的长度,通过递增len指针所指向的值。

  6. 调用saveToCSV函数,将更新后的商品数组保存到CSV文件中。

  7. 使用system("pause")暂停程序执行,以便用户查看输出信息。这通常用于保持控制台窗口打开,直到用户手动关闭。

2.修改商品

  1. 用户首先被要求输入要修改的商品编号(productId)。

  2. 通过循环遍历商品数组(products),查找与用户输入的商品编号匹配的商品在数组中的位置(index)。

  3. 如果找到对应编号的商品(index != -1),则向用户展示一个菜单,要求用户选择要修改的商品属性。

  4. 用户通过输入菜单编号,选择要修改的商品属性,包括商品类别、商品名称、商品价格、折扣比例、生产时间、存货数量等。

  5. 根据用户的选择,通过switch语句分别执行相应的修改操作。用户输入的新信息将替代原有的商品属性。

  6. 修改完成后,调用saveToCSV函数将更新后的商品数组保存到CSV文件中。

  7. 打印"修改成功"的提示消息,告知用户修改操作成功。

  8. 使用system("pause")暂停程序执行,以便用户查看输出信息。这通常用于保持控制台窗口打开,直到用户手动关闭。

  9. 如果未找到对应编号的商品,打印"未找到该商品编号"的提示消息。

3.查询商品

用户首先选择查询方式(通过商品编号、商品类别、商品名称或生产日期),然后输入相应的信息进行查询。根据用户的选择,函数会遍历商品数组,找到匹配的商品,并打印出相应的详细信息。如果找不到匹配的商品,会提示用户未找到。

4.删除商品

用户首先输入要删除的商品编号,函数会查找该编号对应的商品在数组中的位置。如果找到对应编号的商品,会打印出该商品的详细信息,并将数组中该位置后的所有数据向前移动一位,相当于删除该商品。最后,数组长度减一,表示删除了一个商品。如果未找到匹配的商品,会提示用户未找到。

5.统计

函数首先检查数组中是否存在商品信息,如果数组长度小于等于0,则输出提示信息暂无商品信息并返回。接下来,用户需要输入要统计的商品类别。函数会遍历商品数组,对于每一个匹配输入类别的商品,累加总存货量、总价格,并统计匹配商品数量。同时,函数寻找该类别存货量最多的商品信息。

最后,函数输出该类别的总存货量、平均价格,以及存货量最多的商品信息。如果该类别暂无商品信息,会相应地输出提示。

6.排序

首先,函数会检查数组的长度是否小于等于1,如果是,则表示无需排序,直接返回。接下来,函数使用冒泡排序算法,按照商品的类别进行升序排序。

内层循环比较相邻两个商品的类别,如果前一个商品的类别字符串大于后一个商品的类别字符串(按照字典顺序),则交换它们的位置,以达到升序排序的目的。

最后,函数打印排序后的商品信息,保存到CSV文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1440496.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPT4技术报告介绍

GPT4_Technical_Report_zh 我们创建了 GPT-4,这是 OpenAI 努力扩展深度学习的最新里程碑。GPT-4 是一个大型多模态模型(接受图像和文本输入,发出文本输出),虽然在许多现实世界场景中的能力不如人类,但在各…

Netty的序列化之MessagePack

目录 引入MessagePack依赖 实体类 服务端代码 客户端代码 执行结果 引入MessagePack依赖 <dependency><groupId>org.msgpack</groupId><artifactId>msgpack</artifactId><version>0.6.12</version></dependency> 实体类…

Stable Diffusion 模型下载:GhostMix(幽灵混合)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 GhostMix 是绝对让你惊艳的模型&#xff0c;也是自己认为现在最强的2.5D模型。我认为模型的更新应该是基于现有的画面整体不大变的前提下&#xff0c;提高模型的成…

springboot167基于springboot的医院后台管理系统的设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

大数据术语系列(1)——COW和MOR,我如何使用chatgpt通俗易懂地理解了hudi这两种表类型

从传统数据库到大数据的转变&#xff0c;首当其冲的是各种术语的理解。 所以我与chatgpt发生了一系列对话&#xff0c;以便于我能快速理解这些术语。 我先把汇总的结果放在前边&#xff0c;后边会一步步地来说明我是如何获取这些信息的。前边我也发过一些关于chatgpt提示词相…

图像处理入门:OpenCV的基础用法解析

图像处理入门&#xff1a;OpenCV的基础用法解析 引言OpenCV的初步了解深入理解OpenCV&#xff1a;计算机视觉的开源解决方案什么是OpenCV&#xff1f;OpenCV的主要功能1. 图像处理2. 图像分析3. 结构分析和形状描述4. 动态分析5. 三维重建6. 机器学习7. 目标检测 OpenCV的应用场…

Go 语言中如何大小端字节序?int 转 byte 是如何进行的?

嗨&#xff0c;大家好&#xff01;我是波罗学。 本文是系列文章 Go 技巧第十五篇&#xff0c;系列文章查看&#xff1a;Go 语言技巧。 我们先看这样一个问题&#xff1a;“Go 语言中&#xff0c;将 byte 转换为 int 时是否涉及字节序&#xff08;endianness&#xff09;&#x…

Verilog刷题笔记26

题目&#xff1a; Build a combinational circuit with 100 inputs, in[99:0]. There are 3 outputs: out_and: output of a 100-input AND gate. out_or: output of a 100-input OR gate. out_xor: output of a 100-input XOR gate. 解题&#xff1a; module top_module( …

springboot157基于springboot的线上辅导班系统的开发与设计

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

数字图像处理实验记录八(图像压缩实验)

前言&#xff1a;做这个实验的时候很忙&#xff0c;就都是你抄我我抄你了 一、基础知识 1&#xff0e;为什么要进行图像压缩&#xff1a; 图像的数据量巨大&#xff0c;对计算机的处理速度、存储容量要求高。传输信道带宽、通信链路容量一定&#xff0c;需要减少传输数据量&a…

字节跳动公益平台“公益聚力计划”上线

为更好地联合社会多方力量参与社会公益&#xff0c;字节跳动公益平台于近日正式推出“公益聚力计划”&#xff08;以下简称“计划”&#xff09;。“计划”支持公益项目的策划与筛选、公益机构撮合&#xff0c;以及多种定制化的产品功能&#xff0c;如定制版公益证书、爱心回礼…

深入探索:缓冲区溢出漏洞及其防范策略

在网络安全的广阔领域中&#xff0c;缓冲区溢出漏洞一直是一个重要的议题。这种漏洞&#xff0c;如果被恶意利用&#xff0c;可能会导致严重的安全问题&#xff0c;包括数据泄露、系统崩溃&#xff0c;甚至可能被攻击者利用来执行恶意代码。在本文中&#xff0c;我们将深入探讨…

2月3日作业

1.编程实现单向循环链表的头插&#xff0c;头删、尾插、尾删 尾插/头插&#xff0c;头删&#xff0c;尾删&#xff1a; 头文件&#xff1a; #ifndef __HEAD_H_ #define __HEAD_H_#include<stdio.h> #include<string.h> #include<stdlib.h>enum {FALSE-1,SU…

18:蜂鸣器

蜂鸣器 1、蜂鸣器的介绍2、编程让蜂鸣器响起来3、通过定时控制蜂鸣器4、蜂鸣器发出滴滴声&#xff08;间歇性鸣叫&#xff09; 1、蜂鸣器的介绍 蜂鸣器内部其实是2个金属片&#xff0c;当一个金属片接正电&#xff0c;一个金属片接负电时&#xff0c;2个金属片将合拢&#xff…

二叉搜索树题目:验证二叉搜索树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 解法三思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;验证二叉搜索树 出处&#xff1a;98. 验证二叉搜索树 难度 3 级 题目描述 要求…

K8S之Pod常见的状态和重启策略

Pod常见的状态和重启策略 常见的Pod状态PendingPodScheduledUnschedulablePodInitializingImagePullBackOffInitializedRunningErrorCrashLoopBackOffTerminatingSucceededFailedEvictedUnknown Pod的重启策略使用Always重启策略使用Never重启策略使用OnFailure重启策略(常用) …

16、prometheus + grafana + alertmanager

16、prometheus grafana alertmanager k8s 手撕方式安装 prometheus grafana alertmanager k8s版本&#xff1a;k8s-1.29.1 prometheus grafana alertmanager 监控报警 1、k8s 手撕方式安装 prometheus mkdir ~/prometheus-ymlkubectl create ns monitoringcat > ~/…

python创建udf函数步骤

一、目标 实现一个函数&#xff0c;传入两个datetime类型的参数&#xff0c;返回double类型的工作日天数 二、思路 如何计算差值&#xff1f; 如果开始时间和结束时间在同一天&#xff1a;实现同 datediff(end, start, ‘ss’) / 86400.0 如果开始时间和结束时间在不同天&am…

c语言--一维数组传参的本质(详解)

目录 一、前言二、代码三、形式3.1形式13.2形式2 四、总结 一、前言 首先从⼀个问题开始&#xff0c;我们之前都是在函数外部计算数组的元素个数&#xff0c;那我们可以把函数传给⼀个函数后&#xff0c;函数内部求数组的元素个数吗&#xff1f; 二、代码 直接上代码&#x…

代码随想录算法训练营第十五天|102.二叉树的层序遍历、226.翻转二叉树

102.二叉树的层序遍历 刷题https://leetcode.cn/problems/binary-tree-level-order-traversal/description/文章讲解https://programmercarl.com/0102.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.html视频讲解https://www.bilibili.com/video…