【C语言期末】商品管理系统
本文资源: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.添加商品
-
创建一个名为
newProduct
的Product
结构体,用于存储新商品的信息。结构体的各字段包括编号(id
)、类别(category
)、名称(name
)、价格(price
)、折扣比例(discount
)、生产日期(productionDate
)和库存数量(inventory
)。 -
通过
printf
和scanf_s
函数,向用户展示商品信息的输入提示,并接收用户输入的商品信息。用户需要输入产品编号、类别、名称、价格、折扣比例、生产日期和库存数量。 -
将用户输入的新商品(
newProduct
)添加到商品数组(products
)的末尾,即数组的下一个位置。 -
打印"修改成功!"的提示消息,表示商品添加操作成功。
-
更新商品数组的长度,通过递增
len
指针所指向的值。 -
调用
saveToCSV
函数,将更新后的商品数组保存到CSV文件中。 -
使用
system("pause")
暂停程序执行,以便用户查看输出信息。这通常用于保持控制台窗口打开,直到用户手动关闭。
2.修改商品
-
用户首先被要求输入要修改的商品编号(
productId
)。 -
通过循环遍历商品数组(
products
),查找与用户输入的商品编号匹配的商品在数组中的位置(index
)。 -
如果找到对应编号的商品(
index != -1
),则向用户展示一个菜单,要求用户选择要修改的商品属性。 -
用户通过输入菜单编号,选择要修改的商品属性,包括商品类别、商品名称、商品价格、折扣比例、生产时间、存货数量等。
-
根据用户的选择,通过
switch
语句分别执行相应的修改操作。用户输入的新信息将替代原有的商品属性。 -
修改完成后,调用
saveToCSV
函数将更新后的商品数组保存到CSV文件中。 -
打印"修改成功"的提示消息,告知用户修改操作成功。
-
使用
system("pause")
暂停程序执行,以便用户查看输出信息。这通常用于保持控制台窗口打开,直到用户手动关闭。 -
如果未找到对应编号的商品,打印"未找到该商品编号"的提示消息。
3.查询商品
用户首先选择查询方式(通过商品编号、商品类别、商品名称或生产日期),然后输入相应的信息进行查询。根据用户的选择,函数会遍历商品数组,找到匹配的商品,并打印出相应的详细信息。如果找不到匹配的商品,会提示用户未找到。
4.删除商品
用户首先输入要删除的商品编号,函数会查找该编号对应的商品在数组中的位置。如果找到对应编号的商品,会打印出该商品的详细信息,并将数组中该位置后的所有数据向前移动一位,相当于删除该商品。最后,数组长度减一,表示删除了一个商品。如果未找到匹配的商品,会提示用户未找到。
5.统计
函数首先检查数组中是否存在商品信息,如果数组长度小于等于0,则输出提示信息暂无商品信息并返回。接下来,用户需要输入要统计的商品类别。函数会遍历商品数组,对于每一个匹配输入类别的商品,累加总存货量、总价格,并统计匹配商品数量。同时,函数寻找该类别存货量最多的商品信息。
最后,函数输出该类别的总存货量、平均价格,以及存货量最多的商品信息。如果该类别暂无商品信息,会相应地输出提示。
6.排序
首先,函数会检查数组的长度是否小于等于1,如果是,则表示无需排序,直接返回。接下来,函数使用冒泡排序算法,按照商品的类别进行升序排序。
内层循环比较相邻两个商品的类别,如果前一个商品的类别字符串大于后一个商品的类别字符串(按照字典顺序),则交换它们的位置,以达到升序排序的目的。
最后,函数打印排序后的商品信息,保存到CSV文件。
相关文章:

【C语言期末】商品管理系统
本文资源:https://download.csdn.net/download/weixin_47040861/88820155 1.题目要求 商品管理系统 商品信息包括:包括编号、类别、名称、价格、折扣比例、生产时间 、存货数量等要求:1、信息首先保存在文件中,然后打开文件进行…...

单片机学习笔记---串口通信(2)
目录 串口内部结构 串口相关寄存器 串口控制寄存器SCON SM0和SM1 SM2 REN TB8和RB8 TI和RI 电源控制寄存器PCON SMOD 串口工作方式 方式0 方式0输出: 方式0输入 方式1 方式1输出。 方式1输入 方式2和方式3 方式2和方式3输出: 方式2和…...
【Java】乐观锁有哪些常见实现方式?
Java中的乐观锁主要有两种常见的实现方式: CAS(Compare and Swap):这是实现乐观锁的核心算法。CAS操作包含三个参数:内存地址V、旧的预期值A和要修改的新值B。执行CAS操作时,会先比较内存地址V中的值是否等…...

Javaweb之SpringBootWeb案例之登录校验功能的详细解析
2. 登录校验 2.1 问题分析 我们已经完成了基础登录功能的开发与测试,在我们登录成功后就可以进入到后台管理系统中进行数据的操作。 但是当我们在浏览器中新的页面上输入地址:http://localhost:9528/#/system/dept,发现没有登录仍然可以进…...

CSS之盒模型
盒模型概念 浏览器盒模型(Box Model)是CSS中的基本概念,它描述了元素在布局过程中如何占据空间。盒模型由内容(content)、内边距(padding)、边框(border)、和外边距&…...

博客系统-SpringBoot版本
相比于之前使用Servlet来完成的博客系统,SpringBoot版本的博客系统功能更完善,使用到的技术更接近企业级,快来看看吧~ 目录 1.项目介绍 2.数据库准备 3.实体化类 4.返回格式 5.登录和注册功能 6.登出(注销)功能…...

详细分析Redis中数值乱码的根本原因以及解决方式
目录 前言1. 问题所示2. 原理分析3. 拓展 前言 对于这方面的相关知识推荐阅读: Redis框架从入门到学精(全)Java关于RedisTemplate的使用分析 附代码java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全) …...

网络专栏目录
大家好我是苏麟 , 这是网络专栏目录 . 图解网络 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 图解网络目录 基础篇 基础篇 TCP/IP网络模型有几层? : TCP/IP网络模型 键入网址到页面显示,期间发生了什么? : 键入网址到页面显示,期间发生了什么 现阶…...

【Python网络编程之Ping命令的实现】
🚀 作者 :“码上有前” 🚀 文章简介 :Python开发技术 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 Python网络编程之Ping命令的实现 代码见资源,效果图如下一、实验要求二、协议原理2…...
OpenHarmony轻量级驱动开发
OpenHarmony轻量级驱动开发 思维导图: https://download.csdn.net/download/lanlingxueyu/88817155 GPlO(General-purpose input/output)即通用型输入输出 描述 GPlO(General-purpose input/output)即通用型输入输出。通俗地说,GPlO口就是一些引脚可以通过它们输出高低…...
C语言如何输⼊字符数组?
一、问题 在程序中,scanf()函数可以输⼊任意类型的数据,gets()函数只能输⼊字符串等,但是如何更好地输⼊字符数组呢? 二、解答 我们知道如何使⽤格式输⼊函数 scanf(),那么可以使⽤%c 格式符逐个输⼊字符。这样输⼊有…...

人脸追踪案例及机器学习认识
1.人脸追踪机器人初制 用程序控制舵机运动的方法与机械臂项目完全相同。 由于摄像头的安装方式为上下倒转安装,我们在编写程序读取图像时需使用 flip 函数将 图像上下翻转。 现在,只需要使用哈尔特征检测得到人脸在图像中的位置,再指示舵机运…...

鸿蒙开发理论之页面和自定义组件生命周期
1、自定义组件和页面的关系 页面:即应用的UI页面。可以由一个或者多个自定义组件组成,Entry装饰的自定义组件为页面的入口组件,即页面的根节点,一个页面有且仅能有一个Entry。只有被Entry装饰的组件才可以调用页面的生命周期。自…...
docker-compose部署gitlab和jenkins
通过docker-compose部署gitlab和jenkins,方便后续工作 注意: gitlab占用资源较多,最好系统内存在8G以上,CPU4核心以上,否则gitlab有可能报错无法启动。docker版本用最新版本,低版本的docker可能会导致doc…...
Pytorch 复习总结 1
Pytorch 复习总结,仅供笔者使用,参考教材: 《动手学深度学习》 本文主要内容为:Pytorch 张量的常见运算、线性代数、高等数学、概率论。 Pytorch 张量的常见运算、线性代数、高等数学、概率论 部分 见 Pytorch 复习总结 1&…...
谷歌免费开放模糊测试框架OSS-Fuzz(物联网、车联网、供应链安全、C/C++)
目录 模糊测试的智能化和自动化 模糊测试不能代替安全设计原则 AI驱动的漏洞修补...

华为配置内部人员接入WLAN网络示例(802.1X认证)
配置内部人员接入WLAN网络示例(802.1X认证) 组网图形 图1 配置802.1X认证组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 用户接入WLAN网络,使用802.1X客户端进行认证,输入正确的用户名和密…...

EXCEL中如何调出“数据分析”的菜单
今天发现,原来WPS还是和EXCEL比,还是少了“数据分析”这个日常基本做统计的菜单,只好用EXCEL了,但奇怪发现我的EXCEL中没发现这个菜单,然后查了下,才发现,要用如下的方法打开: 1&…...

基于Qt的人脸识别项目(功能:颜值检测,口罩检测,表情检测,性别检测,年龄预测等)
完整代码链接在文章末尾 效果展示 代码讲解(待更新) qt图片文件上传 #include <QtWidgets> #include <QFileDialog>...

书生谱语-大语言模型测试demo
课程内容简介 通用环境配置 开发机 InterStudio 配置公钥 在本地机器上打开 Power Shell 终端。在终端中,运行以下命令来生成 SSH 密钥对: ssh-keygen -t rsa您将被提示选择密钥文件的保存位置,默认情况下是在 ~/.ssh/ 目录中。按 Enter …...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...