设备采购信息管理系统
系列文章
任务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以后这个…...
3分钟安装:免费浏览器Markdown阅读器终极指南
3分钟安装:免费浏览器Markdown阅读器终极指南 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer 你是否经常在浏览器中打开Markdown文件,却只能看到枯燥的源代…...
Papa Parse故障排查:从异常识别到深度修复的5个实战策略
Papa Parse故障排查:从异常识别到深度修复的5个实战策略 【免费下载链接】PapaParse Fast and powerful CSV (delimited text) parser that gracefully handles large files and malformed input 项目地址: https://gitcode.com/gh_mirrors/pa/PapaParse 问题…...
基于STM32F103与L9110s的直流电机PWM调速实战
1. 硬件准备与电路连接 在开始STM32F103与L9110s的直流电机控制项目前,我们需要先准备好必要的硬件组件。这个部分我会详细列出所需材料,并解释如何正确连接它们。我第一次做这个项目时,就因为接线问题折腾了半天,希望你们能避开这…...
视频文件损坏如何修复?基于Untrunc的专业数据恢复方案
视频文件损坏如何修复?基于Untrunc的专业数据恢复方案 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 问题诊断…...
龙虾-OpenClaw一文详细了解-手搓OpenClaw-1
龙虾-OpenClaw一文详细了解-手搓OpenClaw-1 这一系列我会用 Python 一步步手搓一个“可运行、可扩展、可解释”的 OpenClaw 简化版。 第一篇先不追求功能多,而是先搭好最重要的骨架:服务入口、会话并发模型、最小 Agent Loop。 0. 为什么要手搓 OpenClaw…...
【算法三十八】200. 岛屿数量
200. 岛屿数量 DFS: class Solution {public int numIslands(char[][] grid) {int ans 0;for(int i 0;i<grid.length;i){for(int j 0;j<grid[0].length;j){if(grid[i][j]1){dfs(grid,i,j);ans;}}}return ans;}private void dfs(char[][] grid,int i,int …...
【基于Python技术的智慧中医商业项目】后端应用Articles代码实现(四)
后台文章接口一旦缺少统一的权限边界与查询约束,常见风险集中在未审核内容被暴露、分页与筛选口径不一致、详情阅读数更新链路出错,表现为列表数据异常、详情访问抖动、统计数据不可信。 内容围绕文章应用的 views 与 urls 两段链路拆解,聚焦分页与筛选参数、只读视图集的查…...
Harpy与Swift项目集成:从Objective-C到现代开发的平滑过渡终极指南
Harpy与Swift项目集成:从Objective-C到现代开发的平滑过渡终极指南 【免费下载链接】Harpy Notify users when a new version of your app is available and prompt them to upgrade. 项目地址: https://gitcode.com/gh_mirrors/ha/Harpy 在iOS应用开发中&am…...
S2-Pro辅助3D建模与场景描述:连接自然语言与Blender脚本生成
S2-Pro辅助3D建模与场景描述:连接自然语言与Blender脚本生成 1. 当3D建模遇上自然语言 想象一下这样的场景:你脑海中浮现出一个充满未来感的客厅设计,但打开Blender后却不知从何下手。传统3D建模需要掌握复杂软件操作和脚本编写,…...
Intv_AI_MK11自动化测试脚本生成:基于自然语言描述的测试用例实现
Intv_AI_MK11自动化测试脚本生成:基于自然语言描述的测试用例实现 1. 引言:当测试遇上自然语言处理 "测试工程师小王盯着屏幕上的登录页面,手指在键盘上敲击着:driver.find_element(By.ID, username).send_keys(testuser).…...
