国庆作业

  day1

1.开发环境

Linux系统+GCC+FDB+makefile+sqlite3

2.功能描述

项目功能:

服务器处理客户端的请求,并将数据存入数据库中,客户端请求的数据从数据库进行获取,服务器转发给客户端。

用户客户端实现账号的注册、登录、注销、修改用户密码功能,当登录成功时可以寄快递、查快递、修改快递信息、取消订单等功能。

快递员客户端实现账号的注册、登录、注销、修改用户密码功能,当登录成功时可以查快递、送快递、查看历史订单等功能。

  1. 设计实施

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/888590.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

加密软件有哪些?2024年十大好用的企业文件加密软件大盘点

随着数字化转型的加速&#xff0c;企业面临的数据安全威胁日益增加。为防止敏感数据泄露&#xff0c;企业文件加密已成为保护公司机密信息的必要手段。以下是2024年十大好用的企业文件加密软件大盘点&#xff0c;帮助企业在复杂的数字环境中确保数据安全。 1.安秉加密软件 安秉…

Navicat下载安装

官网地址&#xff1a;Navicat | Download Navicat Premium 14-day trial versions for Windows, macOS and Linux 1、进入官网下载地址&#xff0c;根据需求进行下载 2、双击安装程序&#xff0c;点击【下一步】 3、选择【我同意】&#xff0c;点击下一步 4、自定义安装路径&a…

基于Dify的工作流简单测试

文章目录 工作流定义工作流构建新建工作流任务分解任务分类任务执行日常聊天任务执行计算字符串长度的三次幂任务执行获取ip地址任务执行其他任务不执行 变量汇集结果返回效果展示 工作流定义 下面是工作流官方文档中给出的工作流定义&#xff0c;其实工作流与Agent调用的对象…

java:pdfbox 3.0 去除扫描版PDF中文本水印

官网下载 https://pdfbox.apache.org/download.html下载 pdfbox-app-3.0.3.jar cd D:\pdfbox 运行 java -jar pdfbox-app-3.0.3.jar java -jar pdfbox-app-3.0.3.jar Usage: pdfbox [COMMAND] [OPTIONS] Commands:debug Analyzes and inspects the internal structu…

《Windows PE》4.3 延迟加载导入表

延迟加载导入表&#xff08;Delayed Import Table&#xff09;是PE文件中的一个数据结构&#xff0c;用于实现延迟加载&#xff08;Lazy Loading&#xff09;外部函数的机制。 延迟加载是指在程序运行时&#xff0c;只有当需要使用某个外部函数时才进行加载和绑定&#xff0c;…

Llama系列上新多模态!3.2版本开源超闭源,还和Arm联手搞了手机优化版,Meta首款多模态Llama 3.2开源!1B羊驼宝宝,跑在手机上了

Llama系列上新多模态&#xff01;3.2版本开源超闭源&#xff0c;还和Arm联手搞了手机优化版&#xff0c;Meta首款多模态Llama 3.2开源&#xff01;1B羊驼宝宝&#xff0c;跑在手机上了&#xff01; 在多模态领域&#xff0c;开源模型也超闭源了&#xff01; 就在刚刚结束的Met…

VSCode运行QT界面

VSCode用久了,感觉Qt Creator的写起代码来还是不如VSCode得心应手,虽然目前还是存在一些问题,先把目前实现的状况做个记录,后续有机会再进一步优化。 当前方式 通过QtCreator创建一个CMake项目,然后使用CMake的方式在VSCode中进行编译。 claude给出的建议 左上角的名字会…

C++ 算法学习——1.6 前缀和与二维前缀和算法

前缀和算法&#xff08;Prefix Sum Algorithm&#xff09;&#xff1a; 概念&#xff1a;前缀和算法通过在遍历数组时计算前缀和&#xff08;从数组的第一个元素开始累加到当前元素的和&#xff09;&#xff0c;可以在O(1)时间内得到任意区间的子数组和&#xff0c;而不需要重复…

详解 PDF 转 JPG:简单操作,高效转换

如今&#xff0c;众多软件都已具备将PDF转换为JPG的功能&#xff0c;所以pdf怎么转换成jpg图片已经不难解决了吧。接下来&#xff0c;我想分享几款依然保存在我电脑中&#xff0c;且非常实用的PDF转JPG工具给大家。 1.福昕PDF转换大师 链接一下>>https://www.pdf365.cn…

【2024年10月测试通过】conda下使用虚拟环境安装最新版pytorch2.4+cuda12.4

开头先说重点&#xff1a; 1.采用conda的虚拟环境&#xff0c;会在沙盒环境下安装好所有所需包&#xff0c;而且该虚拟环境拷贝给其他人员可以直接用&#xff0c;很方便。 2.pytorch官网访问不了&#xff0c;有一个国内镜像推荐&#xff0c;地址为PyTorch - PyTorch 中文 3.…

OXO:一款针对Orchestration框架的安全扫描引擎

关于OXO OXO是一款针对Orchestration框架的安全扫描引擎&#xff0c;该工具可以帮助广大研究人员检测Orchestration安全问题&#xff0c;并执行网络侦查、 枚举和指纹识别等操作。 值得一提的是&#xff0c;OXO还提供了数十种其他的协同工具&#xff0c;包括网络扫描代理&…

erlang学习:Linux命令学习10

从百度网盘下载文件 共享百度网盘获得链接 https://pan.baidu.com/s/1iUOTAWr1SRlL2fBZ7lIV拿到链接之后在浏览器中进行下载&#xff0c;可以查看下载链接 右键这些文件即可得到下载链接 类似于长这样 https://bdbl-cm01.baidupcs.com/file/b02f72906b3d0d07130be625eabc76…

出海快报 | “三消+短剧”手游横空出世,黄油相机“出圈”日本市场,从Q1看日本手游市场趋势和机会

编者按&#xff1a;TopOn出海快报栏目为互联网出海从业者梳理出海热点&#xff0c;供大家了解行业最新发展态势。 1.“三消短剧”横空出世&#xff0c;融合创新手游表现亮眼 随着竞争的加剧&#xff0c;新产品想要突出重围&#xff0c;只能在游戏中加入额外的元素。第一次打开…

java复制查询数组-cnblog

java数组 复制数组 copyOf(待复制数组,复制后新数组的长度) 如果复制后数组的长度&#xff0c;长于原来数组&#xff0c;多出来的元素会被补0&#xff0c;如果新数组元素少会从第一个元素&#xff0c;取到指定元素长度 package nb;import java.util.Arrays;public class co…

行业预测 60TB 硬盘将于 2028 年到来

在硬盘容量增长停滞了一段时间后&#xff0c;在短短四年内从目前的 30TB 增长到 60TB 将是一个巨大的增长。 然而&#xff0c;这正是 IEEE 最新发布的《海量数据存储设备和系统国际路线图》报告所预测的。 该路线图预计 2028 年市场上将出现 60TB 的硬盘驱动器。 这一增长将由一…

Flet介绍:平替PyQt的好用跨平台Python UI框架

随着Python在各个领域的广泛应用&#xff0c;特别是在数据科学和Web开发领域&#xff0c;对于一个简单易用且功能强大的用户界面&#xff08;UI&#xff09;开发工具的需求日益增长。传统的Python GUI库如Tkinter、PyQt虽然功能强大&#xff0c;但在易用性和现代感方面略显不足…

计算机毕业设计 | SpringBoot 房屋租赁网 租房买房卖房平台(附源码)

1&#xff0c;绪论 1.1 背景调研 在房地产行业持续火热的当今环境下&#xff0c;房地产行业和互联网行业协同发展&#xff0c;互相促进融合已经成为一种趋势和潮流。本项目实现了在线房产平台的功能&#xff0c;多种技术的灵活运用使得项目具备很好的用户体验感。 这个项目的…

Authentication Lab | Client Side Auth

关注这个靶场的其它相关笔记&#xff1a;Authentication Lab —— 靶场笔记合集-CSDN博客 0x01&#xff1a;Client Side Auth 前情提要 有些时候&#xff0c;开发人员会将身份验证的逻辑写于前端&#xff0c;这样写是十分不安全的&#xff0c;因为前端的代码几乎全部都是可见的…

C#多线程基本使用和探讨

线程是并发编程的基础概念之一。在现代应用程序中&#xff0c;我们通常需要执行多个任务并行处理&#xff0c;以提高性能。C# 提供了多种并发编程工具&#xff0c;如Thread、Task、异步编程和Parallel等。 Thread 类 Thread 类是最基本的线程实现方法。使用Thread类&#xff0…

快递查询软件:实现单号识别与批量物流查询的高效工具

随着网络购物的普及&#xff0c;快递物流行业迎来了前所未有的发展机遇&#xff0c;同时也面临着巨大的挑战。跟踪物流信息成为一个难题&#xff0c;因此&#xff0c;快递查询软件的核心功能之一便是单号识别。传统的快递单号输入方式繁琐且易出错在此背景下&#xff0c;快递查…