国庆作业
day1
1.开发环境
Linux系统+GCC+FDB+makefile+sqlite3
2.功能描述
项目功能:
服务器:处理客户端的请求,并将数据存入数据库中,客户端请求的数据从数据库进行获取,服务器转发给客户端。
用户客户端:实现账号的注册、登录、注销、修改用户密码功能,当登录成功时可以寄快递、查快递、修改快递信息、取消订单等功能。
快递员客户端:实现账号的注册、登录、注销、修改用户密码功能,当登录成功时可以查快递、送快递、查看历史订单等功能。



- 设计实施
1.Sock编程
启动服务端程序,监听端口,等待客户端连接。完成客户端与服务端的tcp连接。使用I/O复用机制或完成客户端与服务端之间的一对多的连接。服务端记录每个客户端的基本信息:每个客户端的IP、端口等基本信息。
2.数据包协议
客户端使用TCP连接服务端后,发送接受数据使用数据封包。封包格式如下:
|协议版本(1)|数据包类型(1)|数据包的长度(2)|数据包的内容(变长)|
协议版本:发送端填充自己的该数据包的版本信息,服务端接受数据包后,查看该版本是否是自己能识别的版本。是则进行解析,否则作为非法数据包(一般丢弃)。
数据包类型:发送端根据自己发送的数据包里面的数据内容的不同填充不同的类型。
如:如果数据包的数据信息是登录信息,类型为0x0001。如果是断开连接的信息则类型为0x0002。这样接收端接受到数据之后就可以根据数据类型的值,对数据做不同的处理。数据包的长度:TCP是数据流协议,数据发送者多次发送的数据,但在tcp的接受端缓冲区内数据与数据之间没有间隔。无法分开。所以在数据包中增加一项数据长度。这样接收端可以根据数据长度信息确定本数据包的长度,确定要从tcp的缓冲区内每次要读取的长度。数据包内容:要发送的数据。
数据包发送者:在发送数据前,在数据前增加数据包头。数据包头包含以上的包头信息。封包可以采用数据结构:
Struct pack_head
{
Int acceptfd;
Unsigned char type;//消息类型
Unsigned char usertype;//用户类型:1:用户2:快递员
Char name [32];//用户名
Char paaswd [32];//密码
Char buf [32];//调试信息
Struct order_msg msgg;//单号信息
}PACK;
数据包接受端:接受到数据后,分成两次读取一个数据包,第一次读取首先读取一个数据包头长度,然后根据数据包头中的数据长度读取整个数据包。这样一个一个的数据包就分别被读取出来。
数据包协议总结:协议是数据的收发端之间一种约定要好的一种规定。发送者按照该格式发送,接受者按照该格式进行解析。
3.数据管理
服务端接收所有客户端的信息。将所有账号和密码以及快递单信息存在数据库中。同一管理用户信息用户名、密码以及快递单信息。
快递单信息包括:
Struct order_msg
{
Int status;//0:表示未完成订单1:表示已完成订单
Long order;//订单号,由服务器端生成
Char sender[ 32];//发送人
Char send_addr [64];//发送地址
Long send_tel;//发送电话
Char reciver [32];//收件人
Char recive_addr[64];//收件地址
Long recive_tel;//收件人电话
Float weight;//货物重量
Char goods[ 32];//货物名称
Float price;//快递费用
};
4.项目要求
1、采用C语言完成代码的编写。
2、编写makefile管理整个项目。
3、编写项目设计书。
4、以模块化编写项目代码,按照不同模块组织.h /.c文件。
5、规范代码格式并添加注释。
6、编写测试报告,包括单模块测试,模块间测试。
7、编写项目总结,包括项目设计说明、项目中采用的知识点列举、项目中遇到的问题及解决方法等
5.项目完成参考步骤
1、完成服务端与客户端1对1的tcp连接。
2、把相关信息存贮到数据库中。
3、实现用户注册、登陆。
4、实现数据库的创建、管理与维护
5、实现寄快递,查找快递等功能
day2
#include <stdio.h> #include <stdlib.h> #include <string.h>//创建节点结构体 typedef struct node{char data[16];//节点数据struct node *L;//左节点struct node *R;//右结点}tree,*treeptr;//先序方式创建节点 treeptr create() {char buf[16];scanf("%s",buf);if(strcmp(buf,"#")==0){return NULL;}//创建节点空间treeptr H=(treeptr)malloc(sizeof(tree));if(H==NULL){printf("节点创建失败\n");return NULL;}strcpy(H->data,buf);H->L = create();H->R = create();return H; }//先序遍历 void pri_show(treeptr H) {if(H==NULL)//判断节点是否为空{return ;}printf("%s",H->data);pri_show(H->L);pri_show(H->R); } //中序遍历 void mid_show(treeptr H) {if(H==NULL)//判断节点是否为空{return ;}mid_show(H->L);printf("%s",H->data); mid_show(H->R); } //后序遍历 void lat_show(treeptr H) {if(H==NULL)//判断节点是否为空{return ;}lat_show(H->L);lat_show(H->R);printf("%s",H->data); } int main() {treeptr H = create();//创建二叉树pri_show(H);putchar(10);mid_show(H);putchar(10);lat_show(H);putchar(10);return 0; }
day3
相关文章:
国庆作业
day1 1.开发环境 Linux系统GCCFDBmakefilesqlite3 2.功能描述 项目功能: 服务器:处理客户端的请求,并将数据存入数据库中,客户端请求的数据从数据库进行获取,服务器转发给客户端。 用户客户端:实现账号的注册、登…...
Android OpenGLES2.0开发(四):矩阵变换和相机投影
事物的本质是事物本身所固有的、深藏于现象背后并决定或支配现象的方面。 还记得我们上一篇绘制的三角形吗,我们确实能够顺利用OpenGL ES绘制出图形了,这是一个好的开始,但这还远远不够。我们定义的坐标是正三角形,但是绘制出…...
快递查询软件:实现单号识别与批量物流查询的高效工具
随着网络购物的普及,快递物流行业迎来了前所未有的发展机遇,同时也面临着巨大的挑战。跟踪物流信息成为一个难题,因此,快递查询软件的核心功能之一便是单号识别。传统的快递单号输入方式繁琐且易出错在此背景下,快递查…...
nodejs与npm版本对应表
Node.js — Node.js 版本 (nodejs.org)...
Spring Boot 项目中如何使用异步任务
前置知识: 同步任务: 同步任务是在单线程中按顺序执行,每次只有一个任务在执行,不会引发线程安全和数据一致性等并发问题 同步任务需要等待任务执行完成后才能执行下一个任务,无法同时处理多个任务,响应慢…...
Scrum实战中遇到的问题与解决方法
在当今快速变化的技术环境中,IT企业面临着持续的市场压力和竞争,传统的瀑布式开发模式已经难以满足现代企业的需要。瀑布模型过于僵化,缺乏灵活性,导致项目经常延期,成本增加,最终可能无法达到预期效果。为…...
全面介绍 Windows 录屏工具:开启录制新篇章
高质量的录屏工具是我们录屏的得力助手。但是日常因为侧重点的不同,比如有的喜欢录制游戏画面、有的需要录制教学视频、演示操作也需要录屏工具。这次我们就来探讨一下windows录屏工具有哪些吧。 1.福晰录屏大师 链接:www.foxitsoftware.cn/REC/ 从这…...
Maven 和 NetBeans:集成与使用
Maven 和 NetBeans:集成与使用 Maven 和 NetBeans 是两款强大的工具,常用于Java开发。Maven是一个项目管理工具,它能够帮助管理项目的构建、报告和文档。NetBeans是一个集成开发环境(IDE),它为Java开发提供了丰富的功能和友好的用户界面。将Maven集成到NetBeans中,可以…...
【系统架构设计师】目录提纲
一、绪论(TODO) 二、计算机与网络基础知识(TODO) 三、信息系统基础知识(TODO) 四、系统开发基础知识(TODO) 五、软件架构设计(TODO) 六、UML建模与架构文…...
【微服务】—SpringBoot入门
⭐⭐⭐⭐⭐⭐ Github主页👉https://github.com/A-BigTree 笔记仓库👉https://github.com/A-BigTree/tree-learning-notes 个人主页👉https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 文章目录 1 SpringBoot快速入门1.1 SpringBoot简介1.1.1 简介1.1.2…...
Linux: debug: perf: report: --sort
文章目录 简介实例简介 接上回:https://mzhan017.blog.csdn.net/article/details/142689870。 这里介绍perf的这个参数,还是非常的有用,尤其是分析对整个系统做perf record的数据,而不是单个进程做perf record。-s, --sort= : Sort histogram entries by given key(s) - …...
like 模糊查询的底层算法
like 模糊查询的底层算法 全文搜索算法、模糊查询、n-gram分隔算法功能介绍 百度搜索,文心一言给出的结果: SQL模糊查询底层通常使用全文搜索算法,如LIKE操作符和全文索引通常使用的n-gram分割算法。 n-gram是一种将文本分割成固定大小的词…...
【Linux实践】实验九:Shell流程控制语句
文章目录 实验九:Shell流程控制语句实验目的:实验内容:操作步骤:1. 复制*.c文件并排序2. 计算1-10的平方 实验九:Shell流程控制语句 实验目的: 掌握条件判断语句,如if语句、case语句。掌握循环…...
YOLOv8实战TT100K中国交通标志检测【数据集+YOLOv8模型+源码+PyQt5界面】
YOLOv8实战TT100k交通标志识别 文章目录 研究背景资源获取1.前言1.1 YOLO 系列:中国交通标志检测领域的璀璨明星1.2 Transformer与注意力机制:为中国交通标志检测注入新活力1.3 中国交通标志检测技术:迎接挑战,砥砺前行1.4 YOLOv8…...
SQLite3
文章目录 SQLite3 C/CAPI介绍SQLite3 C/C API 使⽤ SQLite3 C/CAPI介绍 C/C API是SQLite3数据库的⼀个客⼾端,提供⼀种⽤C/C操作数据库的⽅法。 SQLite3 C/C API 使⽤ 下⾯我们将这⼏个接⼝封装成⼀个类,快速上⼿这⼏个接口 创建/打开数据库文件针对打开…...
我的创作纪念日一年
目录 机缘 收获 日常 成就 憧憬 机缘 我之所以开始写CSDN博客,源于一段特殊的时光。去年此时,我独自待在实验室,周围的世界仿佛与我无关。没有旅游,没有与朋友的欢聚,情感的挫折和学业的压力如潮水般袭来。在这样的…...
Docker基本操作命令(一)
Docker 是一个开源的应用容器引擎,允许开发者打包应用以及其依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。主要功能是为开发者提供一个简单…...
PGMP-02项目集管理绩效域
目录 1.概要 2.defintions定义 3.Program Management Performance Domain interactions 交互 4. Organizational Strategy, Portfolio Management, and Program Management Linkage 5. Portfolio and Program Distinctions 区别 6. Program and Project Distinctions区别 …...
CAN(Controller Area Network)总线的仲裁机制
CAN(Controller Area Network)总线的仲裁机制是其核心特性之一,它确保了在多节点环境中数据能够高效、公正地传输。以下是对CAN仲裁机制的详细解释和介绍: 一、仲裁机制概述 在CAN总线网络中,各个节点地位平等&#…...
计算机毕业设计 | SpringBoot 房屋租赁网 租房买房卖房平台(附源码)
1,绪论 1.1 背景调研 在房地产行业持续火热的当今环境下,房地产行业和互联网行业协同发展,互相促进融合已经成为一种趋势和潮流。本项目实现了在线房产平台的功能,多种技术的灵活运用使得项目具备很好的用户体验感。 这个项目的…...
从IMC层到应力点:手把手教你用SEM/EDS给BGA焊点做一次‘体检’
从IMC层到应力点:手把手教你用SEM/EDS给BGA焊点做一次‘体检’ 当一块电路板上的BGA焊点出现异常时,往往就像人体某个关节出了问题——表面看不出明显伤痕,但功能已经受限。这时候,我们需要像医生一样,用专业设备给焊…...
科研学术篇---论文搜索方法
高效搜集和研读论文,是构建扎实知识体系的基石。要想做到“高效”与“高质”并重,需要把整个过程当作一个闭环系统来优化——从目标锁定、来源筛选、检索策略,到快速粗筛、深度内化、持续追踪,每一步都有对应的工具和心法。下面逐…...
Agent工程2026:从提示词堆砌到生产级智能体的完整跃迁路径
如果你今天还在用"给LLM加几个工具调用"来描述你的Agent,那我们需要认真谈谈了。 2026年的AI工程现实是:绝大多数Agent项目死在了从Demo到生产的路上。不是因为模型不够强,而是因为工程没跟上。本文会系统梳理Agent工程化的核心路…...
如何用四探针精确测量半导体电阻率
在半导体行业中,准确测量晶圆电阻率是材料研发和制程质量控制的关键环节。随着工艺节点不断缩小,器件对电性一致性的要求日益严格,仅靠经验无法满足现代制造的需求。因此工程师们大量采用四探针方法对电阻率进行高精度测量。相比传统测量方式…...
告别复制粘贴:如何在 Cursor / 各种 IDE 中丝滑接入本地 AI 模型?
引言:AI 编程时代的囚徒困境 2026 年,AI 编程助手已经像 Git 一样成为每个开发者的标配。Cursor 的订阅量持续暴涨,GitHub Copilot 的免费版已经吸引了上千万用户,JetBrains 全线 IDE 都深度集成了 AI Agent。但在这个表面繁荣的生态之下,每一位开发者都在不知不觉中交出…...
手把手教你用示波器抓取Intel CPU的SVID时序(附读写判定与Intel送测指南)
实战指南:利用示波器精准解析Intel CPU的SVID通信时序 当一块新设计的服务器主板首次上电时,电源管理系统的稳定性往往决定了整个平台的可靠性。作为硬件工程师,我们常常需要直面这样的场景:主板虽然能点亮,但CPU与电压…...
预上屏是什么鬼?KikaInputMethod 输入预测功能深度解析
文章目录预上屏的本质预上屏执行流程核心预上屏代码Enter 键确认上屏光标操作全集私有命令通信(sendPrivateCommand)物理键盘处理(onKeyDown)InputClient 关键接口速查踩坑记录写在最后用搜狗或者系统键盘打字时,打到一…...
Agentic RAG的实现方式?
文档智能体开发正迎来“低门槛时代”。基于PaddleOCR与LangChain社区的集成合作,文心飞桨开发者进一步搭建了可视化管理工具ClawMaster——让开发者无需从零部署模型或编写复杂调用逻辑,10分钟即可跑通文档智能体工作流。与此同时,X-AnyLabel…...
嵌入式存储优化实战:从eMMC到NAND Flash的软件策略与性能提升
1. 项目概述:嵌入式存储的“软”实力较量在嵌入式开发这个行当里摸爬滚打了十几年,我见过太多项目在硬件选型上精打细算,却在软件优化上“一毛不拔”,最后性能瓶颈卡在存储上,整个系统跑起来像老牛拉破车。今天想和大家…...
AI率总超标?2026年AI论文平台排行榜权威发布,轻松定稿不是梦!
写论文效率低、熬夜赶稿、查重总不通过?别慌!2026 年最新 AI 论文写作工具合集来了,覆盖选题、大纲、初稿、润色、降重、格式、文献引用全流程,帮你精准匹配最适合的学术助手,彻底告别论文内耗!Ἴ…...
