【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.添加商品

  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.mzph.cn/news/677364.shtml

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

相关文章

时间序列预测 —— DeepAR 模型

时间序列预测 —— DeepAR 模型 DeepAR 模型是一种专门用于处理时间序列概率预测的深度学习模型,它可以自动学习数据中的复杂模式,提高预测的准确性。本文将介绍 DeepAR 模型的理论基础、优缺点,并通过 Python 实现单步预测和多步预测的完整…

单片机项目调试中的技巧和常见问题解决

单片机是嵌入式系统中的重要组成部分,在各种电子设备中发挥着重要的作用。在单片机项目开发过程中,调试是至关重要的一环,同时也会遇到一些常见问题。本文将介绍一些单片机项目调试的技巧以及常见问题的解决方法,希望能够对单片机…

基于“python+”潮汐、风驱动循环、风暴潮等海洋水动力模拟实践技术

基于Python的海洋水动力模拟实践技术,可以结合潮汐、风驱动循环和风暴潮等因素进行模拟。以下是一些相关的实践技术: 潮汐模拟:Python可以通过调用相关的海洋模型库,如ECOMSED或ROMS,来进行潮汐模拟。潮汐模拟需要考虑…

应用层 HTTP协议(1)

回顾 前面我们说到了数据链路层,网络层IP协议,传输层的TCP/UDP协议一些知识点,现在让我们谈谈 应用层的HTTP协议的知识点. 这篇我们先从大局入手,仍然是对总体报文进行全局分析,再对细节报文进行拆解分析 版本 首先我们谈谈HTTP协议的版本 HTTP 0.9 (1991) HTTP 1.0 (1992 - 1…

Python学习之路-初识爬虫:基础知识

Python学习之路-初识爬虫:基础知识 什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。 原则上,只要是浏览器…

96.网游逆向分析与插件开发-游戏窗口化助手-窗口化助手与游戏窗口同步移动

内容参考于:易道云信息技术研究院VIP课 上一个内容:窗口化助手显示与大小调整 码云地址(游戏窗口化助手 分支):https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号:e85c0fc8b85895c8c2d3417ec3…

大模型2024规模化场景涌现,加速云计算走出第二增长曲线

导读:2024,大模型第一批规模化应用场景已出现。 如果说“百模大战”是2023年国内AI产业的关键词,那么2024年我们将正式迈进“应用为王”的新阶段。 不少业内观点认为,2024年“百模大战”将逐渐收敛甚至洗牌,而大模型在…

幻兽帕鲁专用服务器,多人游戏(专用服务器)搭建

玩转幻兽帕鲁服务器,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云服务器网aliyunfuwuqi.com分享2024年新版基于阿里云搭建幻兽帕鲁服…

如何用Hexo搭建一个优雅的博客

引言 在数字化时代,拥有一个个人博客已经成为许多人展示自己技能、分享知识和与世界互动的重要方式。而在众多博客平台中,Hexo因其简洁、高效和易于定制的特点而备受青睐。本文将详细介绍如何从零开始搭建一个Hexo博客,让你的个人博客在互联…

Tuxera NTFS2024永久免费版磁盘读写软件

Tuxera NTFS 2024由Tuxera公司开发,是一款专为Mac系统设计的NTFS磁盘读写软件。以下是这款软件的具体优势: 全面的读写功能:Tuxera NTFS 2024允许Mac用户全面读写NTFS格式的硬盘、U盘、SD卡等存储设备。这意味着用户可以在Mac上自由读取和写…

魔术《守岁共此时》揭秘

魔术介绍 魔术《守岁共此时》是 2024 2024 2024 年春节联欢晚会上刘谦表演的魔术。刘谦共表演了两个魔术,其中的第二个魔术为观众共同参与的魔术。 第二个魔术的操作内容如下。 任取 4 4 4 张牌,打乱顺序。将 4 4 4 张牌撕开,变成 8 8…

【JavaEE Spring 项目】博客系统

博客系统 前⾔项⽬介绍1. 准备⼯作1.1 数据准备1.2 创建项⽬1.3 准备前端⻚⾯1.4 配置配置⽂件1.5 测试 2. 项⽬公共模块2.1 实体类的编写2.2 公共层 3. 业务代码3.1 持久层3.2 实现博客列表3.3 实现博客详情3.4 实现登陆令牌技术JWT令牌介绍JWT令牌⽣成和校验 3.5 实现强制要求…

Netty应用(四) 之 Reactor模型 零拷贝

目录 6.Reactor模型 6.1 单线程Reactor 6.2 主从多线程Reactor (主--->Boss | 从--->Worker | 一主多从机制) 7.扩展与补充 8.Reactor模型的实现 8.1 多线程Reactor模型的实现(一个Boss线程,一个Worker线程) 8.2 多线程Reactor模…

c#进程(Process)常用方法

在C#中,Process类提供了一系列用于操作进程的常用方法,以下是其中一些常用的方法: Start():启动一个新的进程。 Process.Start("notepad.exe");Kill():终止进程。 Process.GetProcessesByName("note…

[office] 使用TRANSPOSE函数实现EXCEL表横向转纵向引用的操作方法 #知识分享#知识分享

使用TRANSPOSE函数实现EXCEL表横向转纵向引用的操作方法 一、问题的提出 我们在使用EXCEL过程中,有时需要将一个表中数据的“列”变为“行”,,需要将表2中引用表1的数据,将“列”转换为“行”,即大家通常所说的引用E…

SolidWorks学习笔记——入门知识1

目录 1、固定最近文档 2、根据需要自定义菜单栏 3、根据需要增添选项卡 4、命令搜索框 5、鼠标右键长按快速切换视图 6、鼠标笔势 自定义鼠标笔势 1、固定最近文档 图1 固定最近文档 2、根据需要自定义菜单栏 图2 根据需要自定义菜单栏 3、根据需要增添选项卡 图3 根据…

个人搜集的gstreamer学习链接

gstreamer资源: GStreamer: 官方英文官网 GStreamer C开发教程 (gstreamer安装包下载目录) GStreamer GitLab源码 gstreamer 插件列表) gstreamer官方文档: https://gstreamer.freedesktop.org/documentation/tutorials/index.html?gi-languagec …

设计模式-建造者模式Builder

建造者模式 建造者模式 (Builder)1) 原理2) 为什么需要建造者模式3) 源码应用 建造者模式 (Builder) 1) 原理 Builder 模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式。 创建者模式主要包含以下四个角色: 1.产品&#xf…

架构(十二)动态Excel

一、引言 作者最近的平台项目需要生成excel,excel的导入导出是常用的功能,但是作者想做成动态的,不要固定模板,那就看看怎么实现。 二、后端 先捋一下原理,前后端的交互看起来是制定好的接口,其实根本上是…

面试 JavaScript 框架八股文十问十答第七期

面试 JavaScript 框架八股文十问十答第七期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)原型修改、重写 …