设备采购信息管理系统
系列文章
任务14 设备采购信息管理系统
文章目录
- 系列文章
- 一、实践目的与要求
- 1、目的
- 2、要求
- 二、课题任务
- 三、总体设计
- 1.存储结构及数据类型定义
- 2.程序结构
- 3.所实现的功能函数
- 4、程序流程图
- 四、小组成员及分工
- 五、 测试
- 界面展示
- 添加采购信息
- 按编号查找采购信息
- 按设备编号查找采购信息
- 按设备名称查找采购信息
- 排序
- 查看所有采购信息
- 统计采购信息
- 删除采购信息
- 退出
- 六、源代码获取
一、实践目的与要求
1、目的
通过此次实践环节主要达到以下目的:
(1)进一步理解和运用结构化程序设计的思想和方法,学会根据具体问题选择合理的计算机存储结构实现数据的存储,构造较有效率的算法;
(2)学会算法描述的方法,并编制具有结构清晰、合理和易读性的小型实用程序;
(3)并会设计测试方案,完成程序的测试,能撰写出该程序的技术报告,为文档整理工作打下一个初步的基础;
(4)培养小组成员间互相学习,取长补短,协同工作的能力。
2、要求
(1)模块化程序设计,锯齿型书写格式,代码要有足够的注释;
(2)根据课题中规定的要求实现既定目标;
(3)撰写格式排版规范、结构完整的技术文档。
二、课题任务
(题目、内容及主要功能描述)
设备采购信息管理系统
设备采购的信息包括:编号、设备编号、设备名称、生产单位、单价、部门编号、部门名称、数量、要求到货时间、联系人等。系统能够完成设备采购信息的查询、更新、插入、删除、排序等功能。
(1) 排序:按设备编号对所有设备采购的信息进行排序。
(2) 查询:分别按编号、设备编号和设备名称查找设备采购信息。
(3) 更新:按编号对某个设备采购的某项信息进行修改。
(4) 插入:加入新设备采购的信息。
(5) 删除:按设备编号删除已淘汰设备的采购信息。
(6) 浏览:输出所有设备采购信息。
(7) 统计:统计某部门采购某种设备的总数量并输出。
三、总体设计
1.存储结构及数据类型定义
(采用了什么存储结构、被处理数据定义的数据类型,数据类型定义中要有注释说明)
#define MAX_LEN 100// 最大设备数
#define MAX_DEVICES 1000 // 最大字符串长度/// <summary>
/// 采购结构体
/// </summary>
typedef struct {int id;//编号char device_id[MAX_LEN];//设备编号char device_name[MAX_LEN];//设备名称char producer[MAX_LEN];//生产单位float price;//单价int department_id;//部门编号char department_name[MAX_LEN];//部门名称int quantity;//数量char arrival_time[MAX_LEN];//要求到货时间char contact[MAX_LEN];//联系人
} DevicePurchaseInfo;
2.程序结构
(程序整体的模块结构图)

3.所实现的功能函数
(每个功能对应的函数名、函数形参及返回值说明)
void add(DevicePurchaseInfo* devices, int* num_devices); //添加采购信息 函数名:add 函数形参:DevicePurchaseInfo* devices, int* num_devices 返回值:void
void remove_by_device_id(DevicePurchaseInfo* devices, int* num_devices);//删除采购信息 函数名:remove_by_device_id 函数形参:DevicePurchaseInfo* devices, int* num_devices 返回值: void
void update_by_id(DevicePurchaseInfo* devices, int num_devices);//修改采购信息 按编号对某个设备采购的某项信息进行修改。函数名: update_by_id 函数形参:DevicePurchaseInfo* devices, int num_devices 返回值:void
void search_by_id(DevicePurchaseInfo* devices, int num_devices);//按编号查找采购信息 函数名:search_by_id 函数形参: DevicePurchaseInfo* devices, int num_devices返回值:void
void search_by_device_id(DevicePurchaseInfo* devices, int num_devices);//按设备编号查找采购信息 函数名: search_by_device_id 函数形参:DevicePurchaseInfo* devices, int num_devices 返回值: void
void search_by_device_name(DevicePurchaseInfo* devices, int num_devices);// 按设备名称查找采购信息 函数名:search_by_device_name 函数形参:DevicePurchaseInfo* devices, int num_devices 返回值: void
void sort(DevicePurchaseInfo* devices, int num_devices);//排序 按设备编号对所有设备采购的信息进行排序 函数名:sort 函数形参:DevicePurchaseInfo* devices, int num_devices 返回值: void
void display_all(DevicePurchaseInfo* devices, int num_devices);//查看所有采购信息 函数名:display_all 函数形参:DevicePurchaseInfo* devices, int num_devices 返回值:void
void statistics(DevicePurchaseInfo* devices, int num_devices);//统计采购信息 函数名:statistics 函数形参:DevicePurchaseInfo* devices, int num_devices 返回值: void
void print_devices_list(DevicePurchaseInfo* devices, int num_devices);//查看所有采购信息 内置函数 函数名:print_devices_list 函数形参:DevicePurchaseInfo* devices, int num_devices 返回值: void
4、程序流程图

四、小组成员及分工
(组长、组员及每人承担的具体模块任务或其他)
组长:完成采购系统四大模块以及界面开发,包含添加采购信息、删除采购信息、按编号对某个设备采购的某项信息进行修改以及按编号查找采购信息,函数内容如下:
void add(DevicePurchaseInfo* devices, int* num_devices); //添加采购信息
void remove_by_device_id(DevicePurchaseInfo* devices, int* num_devices);//删除采购信息
void update_by_id(DevicePurchaseInfo* devices, int num_devices);//修改采购信息 按编号对某个设备采购的某项信息进行修改。
void search_by_id(DevicePurchaseInfo* devices, int num_devices);//按编号查找采购信息
组员1:完成按设备编号查找采购信息、按设备名称查找采购信息以及按设备编号对所有设备采购的信息进行排序功能的实现。
void search_by_device_id(DevicePurchaseInfo* devices, int num_devices);//按设备编号查找采购信息
void search_by_device_name(DevicePurchaseInfo* devices, int num_devices);// 按设备名称查找采购信息
void sort(DevicePurchaseInfo* devices, int num_devices);//排序 按设备编号对所有设备采购的信息进行排序
组员2:完成了查看所有采购信息、统计采购信息以及查看所有采购信息 内置函数的编写
void display_all(DevicePurchaseInfo* devices, int num_devices);//查看所有采购信息
void statistics(DevicePurchaseInfo* devices, int num_devices);//统计采购信息
void print_devices_list(DevicePurchaseInfo* devices, int num_devices);//查看所有采购信息 内置函数
五、 测试
(整合各功能模块后的测试结果截图及说明)
界面展示

添加采购信息


按编号查找采购信息

按设备编号查找采购信息

按设备名称查找采购信息

排序

查看所有采购信息

统计采购信息

删除采购信息

退出

六、源代码获取
本次的分享就到这里啦,创作不易,感谢点赞收藏👍
感兴趣的小伙伴可以在评论区留言或者私信我哦💕
提示:代码获取链接: 下载源码
相关文章:
设备采购信息管理系统
系列文章 任务14 设备采购信息管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试界面展示添加采购信息按编号查找采购信息按设备编号查找…...
Puppeteer入门实践
环境 1、安装nodejs 官网:https://nodejs.org/zh-cn 下载安装好nodejs只后 验证:node -v 出现版本号表示安装成功,否则需要配置环境变量 2、创建node项目并初始化 随便新建一个文件夹 进入文件夹搜索cmd回车 执行npm init -y 安装依赖 …...
生成VLC 及其模块的全面帮助
使用vlc.exe -H命令生成VLC帮助文件vlc-help.txt -h, --help, --no-help 打印 VLC 帮助 (可以和 --advanced 和 --help-verbose 一起使用) (默认禁用) -H, --full-help, --no-full-help VLC 及…...
什么是客户自助服务门户及其搭建方法
随着信息技术的快速发展,越来越多的企业开始转向以客户为中心的服务模式,而客户自助服务门户(Customer Self-Service Portal)则成为了重要的服务方式。它可以让客户在不需要人工干预的情况下,自行解决问题,…...
【5.19】三、白盒测试方法—逻辑覆盖法
目录 3.1 逻辑覆盖法 3.1.1 语句覆盖 3.1.2 判定覆盖 3.1.3 条件覆盖 3.1.4 判定—条件覆盖 3.1.5 条件组合覆盖 3.1.6 实例:三角形逻辑覆盖问题 白盒测试又称为透明盒测试、结构测试,它基于程序内部结构进行测试,而不是测试应用程序…...
Linux安装MySQL后无法通过IP地址访问处理方法
本文主要总结Linux安装Mysql后,其他主机访问不了MySQL数据库的原因和解决方法 环境说明: MySQL 5.7.30CentOS Linux release 7.6.1810 (Core) 创建完Mysql数据库后可以查看mysql 日志获取root 用户登录密码 [rootlocalhost mysql-5.7.30]# cat /var/l…...
使用Python实现Rest API指南
在今天的数字化世界中,数据的获取、交换和使用已经成为几乎所有行业的核心部分。无论您正在为一个大型公司设计复杂的软件系统,还是只是为了个人项目尝试获得一些公开的数据,理解和利 用API——尤其是RESTful API——都是一项至关重要的技术。…...
【2023 · CANN训练营第一季】进阶班 应用开发深入讲解→模型推理
1 模型离线推理 各步要解析如下: Host&Device内存管理与数据传输: Host&Device上的内存申请与释放,内存间的相互拷贝;模型加载:将离线的om文件加载到Device上;在样例的资源初始化模块中进行。模型输入输出准备∶根据禹线om的输入输出,在Device…...
单词分析问题
题目描述 小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出…...
3个月出国|材料科学老师自费赴韩国访学
K老师指定韩国为访学的目标国家,希望专业匹配,尽快出国。最终我们获得了韩国庆北大学的邀请函,其学校名气、专业匹配度及导师影响力都符合K老师的要求。本案例从开始委托我们申请到最终出国,仅仅用时3个月。 K老师背景:…...
MaaS来临,SaaS进入「奇点」时刻|产业深度
大模型热度持续发酵。MaaS的到来,不仅改变了云厂商的竞争格局,SaaS行业也将迎来「奇点」时刻。未来十年,基于MaaS底座,国内SaaS甚至可能会出现Salesforce一样的巨头。 作者|思杭 编辑|皮爷 出品|产业家 大模型热度正在持续发酵。…...
课程分享:华清远见联合NXP推出i.MX8M Plus开发与实践课程,超干超实用!
课程名称: i.MX8M Plus开发与实践课程 课程介绍: i.MX8M Plus应用处理器是NXP推出的一款致力于推动机器学习(ML),机器视觉,多媒体与工业边缘物联网应用的工业人工智能芯片。拥有4个ARM Cortex-A53核心…...
idea将java程序打包为jar
idea将java程序打包为jar 灵光一现: 用java拉起浏览器,打开指定的网络地址,省的手动打开浏览器再复制地址过去了 本文记录了使用idea将java程序打包为jar包的过程 源码地址:https://gitcode.net/qq_39339588/jar.git 文章目录 ide…...
快速掌握Redis基础知识及使用技巧
Redis 是一个高性能、基于内存的键值数据库,其主要特点是支持多种数据结构和高并发读写操作。在本文中,我们将介绍 Redis 的基本概念和使用方法,以帮助读者快速入门 Redis。 Redis 的基本概念 Redis 是一种基于内存的高性能 key-value 存储系…...
C++控制台打飞机小游戏
我终于决定还是把这个放出来。 视频在这:https://v.youku.com/v_show/id_XNDQxMTQwNDA3Mg.html 具体信息主界面上都有写。 按空格暂停,建议暂停后再升级属性。 记录最高分的文件进行了加密。 有boss(上面视频2分47秒)。 挺好…...
Pinna的使用以及pinna的持续化存储(两种方法)
一、简介 pinia是 vue3 新的状态管理工具,简单来说相当于之前 vuex,它去掉了 Mutations 但是也是支持 vue2 的,需要的朋友可以参考下 二、使用方法 1.安装 npm install pinia -S 2..引入 import { createPinia,PiniaPluginContext } from p…...
开发中造成空指针的常见用法,如何避免
1. 前言 《手册》的第 7 页和 25 页有两段关于空指针的描述: 【强制】Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals。 【推荐】防止 NPE,是程序员的基本修养,注意 NPE 产生的场景: 返回类型为…...
MySQL事务和索引
目录 事务的概念 事务的四大特性(ACID) 原子性 隔离性 持久性 一致性 什么是脏读、幻读和不可重复读? 脏读 幻读 不可重复读 事务的隔离级别 读未提交 读已提交 可重复读 串行化 索引 索引优点 索引缺点 索引分类 索引设…...
Kali工具集简介
Kali Linux提供了数种经过定制的专门为渗透测试设计的工具。工具都会按下图中下拉选单所示的方式按组分类聚合。了解工具是做渗透测试第一个认知。 口Information Gathering(信息收集) 这些都是侦察工具,用来收集目标网络和设备的数据。在这类工具中,从找出设备的工具到查看使…...
离散数学 | 图论 | 欧拉图 | 哈密顿图 | 割点 | 桥(欧拉图和哈密顿图有没有割点和桥?)
本文主要解决以下几个问题: 1.欧拉图能不能有割点,能不能有桥? 2.哈密顿图能不能有割点,能不能有桥? 首先我们要明白几个定义 割点的定义就是在一个图G中,它本来是连通的,去掉一个点v以后这个…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
多元隐函数 偏导公式
我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式,给定一个隐函数关系: F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 🧠 目标: 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z、 …...
