第二次 第一个小项目(基于链表的增删改查)(仓库货物管理系统)

C++课程设计实战:面向对象仓库管理系统源码解析与实现 面向对象编程(OOP)是C++的核心思想,通过类、封装、继承和多态等概念,将数据和操作数据的方法绑定在一起,构建出模块化、可复用、易维护的软件结构。其原理在于将现实世界中的实体抽象为对象,通过消息传递进行交互。这种编程范式的技术价值在于能够有效管理复杂系统的代码,提升开发效率和软件质量。在工程实践中,一个典型的应用场景就是开发中小型的管理信息系统,例如学生信息管理、图书管理或仓库管理系统。这类项目通常涉及对核心业务实体(如货物、学生、图书)的增删改查(CRUD)操作以及数据持久化。本文以【C-C++源码】实 阅读详情
#define _CRT_SECURE_NO_WARNINGS     //排除部分警告干扰
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#include<conio.h>
#include<string.h>
#include<windows.h>
#include<stdbool.h>
#include<stdint.h>
typedef struct goods //定义一个结构体,即节点
 {
 void *datar; //加了datar
 char name[50], grade, num[15];
 int date;
 float money;
 struct goods * next;
}Goo, *NodePtr, *GoodsInfoPtr;//加了一个 *GoodsInfoPtr
struct info
{
 char account[30];
 char user[100];
 long dsit;
 long pw;
 struct info *xiage;
};
int main();
void regist1();
int judgePW(long ps);
int userInfoSave(char *u, char *p);
int search(char *s, int psw);
int searchAC(char *s);
int readfile();
void login();
void regist();
int menu();
int n = 0;
int textFile(NodePtr goods);
int userCheck(char *s, char *p);//**读取D盘user.txt文件,检测用户是否存在 不存在返回1,存在返回0
int userInfoSave(char *u, char *p);//**写入文件 将注册用户信息添加到D盘user.txt文件
struct info *pt, *header = NULL, *tail, *p0;
typedef bool (COMPTR)(const void*, const void*);
Goo * InitList(Goo * head) //把信息存入首节点
{
 strcpy(head->name, "示例:花盆");
 strcpy(head->num, "xxxxxxxxxxxx");
 head->grade = 'A';
 head->date = 2000;
 head->money = 0.00;
 head->next = NULL;
 return head;
}
void view(Goo* head) /*遍历链表,输出数据*/
{
 Goo * p;
 p = head;
 while (p != NULL)
 {
  printf("%-15s%-15s%3c%9d%9.2f\n", p->name, p->num, p->grade, p->date, p->money);//把d改成了f
  p = p->next;
 }
}
Goo * Search1(Goo* head, char * name) /*通过名称查找货物*/
{
 Goo * p = head;
 while (p && strcmp(p->name, name))
  p = p->next;
 return p;
}
Goo * Search2(Goo* head, char * num) /*通过货号查找货物*/
{
 Goo * p = head;
 while (p && strcmp(p->num, num))
  p = p->next;
 return p;
}
void Delete(Goo* head, char * i) /*删除货物信息*/
{
 Goo * p = head, *m, *q;
 while (p && strcmp(p->num, i) != 0)
 {
  q = p;   //q = p;       //如果不进行指针转换的话,那么删除指令只能删除本来输入到面板上的信息,而不能删除新增的信息
     //p = p;//新加一句              //要是像目前这样改掉呢,则是可以删原有的和新增的,但是不能删第一条
  p = p->next;//p = p->next;
 }
 if ((q != NULL) && (q->next != NULL) && head != NULL)
 {
  m = q->next;
  q->next = m->next;
  free(m);
  printf("Delete success!\n");
  Sleep(1000);
 }
 else
  printf("The goods does not exist!\n");
 Sleep(3000);
}
void AddHead(Goo* head, char name[50], char num[15], char grade, int date, float money) //*增加货物信息,把int改成float之后在显示上出了点问题
{
 Goo * p, *q = head;
 while (q->next != NULL)
 {
  q = q->next;
 }
 p = (Goo*)malloc(sizeof(Goo));
 strcpy(p->name, name);
 strcpy(p->num, num);
 p->grade = grade;
 p->date = date;
 p->money = money;
 p->next = NULL;
 q->next = p;
}
//里函数
int menu()
{
 int i, j, f;
 float g;
 Goo * head, *s;
 char a[50], b[50], t, e[15], h[15], k[15];
 system("cls");
 head = (Goo*)malloc(sizeof(Goo));
 head = InitList(head);
 for (j = 0;; j++)
 {
  printf("-----------------------------------------------------\n");
  printf("NAME              NUMBER      GRADE   DATE     MONEY\n");//把weight改成了money
  view(head);
  printf("-----------------------------------------------------\n");
  printf("******************请好好注意以下选项*****************\n");
  printf("*                                                   *\n");
  printf("*  1.增加货物信息                                   *\n");
  printf("*  2.删除货物信息                                   *\n");
  printf("*  3.通过货品名称查找货物                           *\n");
  printf("*  4.通过货号查找货品名称                           *\n");
  printf("*  5.刷新更改某一货物信息                           *\n");
  printf("*  6.写入后台文档                                   *\n");
  printf("*  7.修改登录信息                                   *\n");
  printf("*  8.从后台文档将货品信息读到控制面板               *\n");
  printf("*  9.退出                                           *\n");
  printf("*                                                   *\n");
  printf("****************please make a choice:****************\n");
  scanf("%d", &i);
  switch (i)
  {
   case 1:
   {
    printf("please insert the goods' information:");
    printf("\nName :");
    scanf("%s", a);
    printf("Number :");
    scanf("%s", e);
    printf("grade :");
    getchar();
    scanf("%c", &t);
    printf("Date :");
    scanf("%d", &f);
    printf("Money :");
    scanf("%f", &g);
    AddHead(head, a, e, t, f, g);
    system("cls");
    break;
   }
   case 2:
   {
    printf("\nNumber:");
    scanf("%s", h);
    Delete(head, h);
    system("cls");
    break;
   }
   case 3:
   {
    printf("please input the goods' name: ");
    scanf("%s", b);
    s = Search1(head, b);
    system("cls");
    printf("%-15s%-15s%3c%9d%9.2f\n", s->name, s->num, s->grade, s->date, s->money);
    break;
   }
   case 4:
   {
    printf("please input the goods' number: ");
    scanf("%s", k);
    s = Search2(head, k);
    system("cls");
    printf("%-15s%-15s%3c%9d%9.2f\n", s->name, s->num, s->grade, s->date, s->money);
    break;
   }
   case 5:
   {
    printf("please input the the goods' number:");
    scanf("%s", k);
    s = Search2(head, k);
    printf("input grade:");
    getchar();
    scanf("%c", &t);
    s->grade = t;
    printf("input name:");
    getchar();
    gets_s(s->name);//在vs2015中,考虑到安全性,用gets_s代替了gets
    printf("input Date:    ");
    scanf("%d", &f);
    s->date = f;
    printf("input money:");
    scanf("%9f", &g);
    s->money = g;
    view(head->next);
    system("cls");
    break;//后加的break
   }
   case 6:
   {
    textFile(head);
    Sleep(2000);
    printf("写入完成!\n");
    Sleep(2000);
    system("cls");
    break;//后加的break
   }
   case 7:
   {
    system("cls");
    regist1();
    Sleep(2000);
    printf("更改成功,需退出后重新登录");
    Sleep(2000);
    system("cls");
    main();
    break;
   }
   case 8:
   {
    Sleep(1000);
    printf("正在读取文件信息,请稍后......\n");
    Sleep(2000);
    system("cls");
    readfile();
    break;//后加的break
   }
   case 9:
   {
    main();
    break;
   }
  }
 }
}
//主函数(表函数)
int main()
{
 int i;
 int choice = -1;
 while (1)
 {
  printf(" *******欢迎使用仓库货物管理系统*******\n");
  printf("                                         ");
  printf("\n|| ================================||\n");
  printf("||1.登录                           ||\n");
  printf("||2.注册                           ||\n");
  printf("||3.退出                           ||\n");
  printf("|| ================================||\n");
  printf("\t* 请输入您的选择:");
  
  scanf("%d", &choice);
   switch (choice)
   {
   case 1:
    system("cls");
    for (i = 1; i <= 3; i++)   //加个循环限制登陆次数为三次,三次失败则退出程序
    {
     login();
     printf("您还有%d次机会!\n", 3 - i);//加个提示
    }
    exit(0);
    break;
   case 2:
    system("cls");
    regist();
    break;
   case 3:
    exit(0);
    break;
   default:
    printf("输入有误,请重输...\n");
    break;
   }
  }
 }
//登录
void login()
{
 int i;
 int flag;
 char my_act[100];
 char my_pass[100];
 int X = -1;
 printf("\t\t=================****登录****=================\n\n");
 printf("\t\t* 输入账户: ");
 scanf("%s", my_act);
 printf("\n");
 printf("\t\t* 输入密码: ");
 scanf("%s", my_pass);
 //flag = search(my_act, password);
 flag = userCheck(my_act, my_pass);////改动
 if (flag == 1)
 {
  printf("\t\t登录成功,正在跳转页面...\n");
  p0 = pt;
  Sleep(2000);
  system("cls");
  while (1)
  {
   X = menu();//成功进入
   if (X == 1)
   {
    system("cls");
    menu();
   }
   else return;
  }
 }
 else if (flag == 0)
 {
  printf("\t\t账号或密码错误,请重新输入...\n");
  Sleep(2000);
  system("cls");
  return;
 }
}
int search(char *s, int psw)
{
 if (header == NULL)
 {
  return 0;
 }
 pt = header;
 while (1)
 {
  if (strcmp(pt->account, s) == 0 && pt->pw == psw)
  {
   return 1;
  }
  if (pt->xiage == NULL)//这里next改成了xiage
   break;
  pt = pt->xiage;//这里next改成了xiage
 }
 return 0;
}
int searchAC(char *s)
{
 if (header == NULL)
 {
  return 0;
 }
 pt = header;
 while (1)
 {
  if (strcmp(pt->account, s) == 0)
  {
   return 1;
  }
  if (pt->xiage == NULL)//这里next改成了xiage
   break;
  pt = pt->xiage;//这里next改成了xiage
 }
 return 0;
}
//注册
void regist()
{
 printf("\t\t=================****注册****=================\n\n");
 struct info *p1;
 char userPas[100] = {
  0
 };
 p1 = (struct info*)malloc(sizeof(struct info));
 p1->xiage = NULL;//这里next改成了xiage
 int flag;
 printf("\t\t请输入您的账户....\n");
 printf("\t\t");
 scanf("%s", p1->account);
 printf("\t\t请输入用户名......\n");
 printf("\t\t");
 scanf("%s", p1->user);
 printf("\t\t输入您的密码......\n");
 printf("\t\t");
 scanf("%ld", &p1->pw);
 sprintf(userPas, "%ld", p1->pw);
 flag = userCheck(p1->account, userPas);
 //flag = search(p1->account, p1->pw);
 if (flag == 1)
 {
  printf("\t\t账户已存在,请重新注册......\n");
  Sleep(2000);
  system("cls");
  return;
 }
 else if (flag == 0)
 {
  userInfoSave(p1->account, userPas);
  printf("\t\t注册成功\n"); //flagN = N;标记当前注册账户是链表中的第几个 p1->dsit = 0;
  if (n == 0)
  {
   header = p1;
   tail = p1;
   n++;
   Sleep(2000);
   system("cls");
   return;
  }
  else
  {
   tail->xiage = p1;//这里next改成了xiage
   tail = p1;
   n++;
   Sleep(2000);
   system("cls"); return;
  }
 }
}
//修改登录信息
void regist1()
{
 printf("\t\t=================****修改信息****=================\n\n");
 struct info *p1;
 char userPas[100] = {
  0
 };
 p1 = (struct info*)malloc(sizeof(struct info));
 p1->xiage = NULL;//这里next改成了xiage
 int flag;
 printf("\t\t请刷新您的账户....\n");
 printf("\t\t");
 scanf("%s", p1->account);
 printf("\t\t请刷新您的用户名......\n");
 printf("\t\t");
 scanf("%s", p1->user);
 printf("\t\t输刷新的密码......\n");
 printf("\t\t");
 scanf("%ld", &p1->pw);
 sprintf(userPas, "%ld", p1->pw);
 flag = userCheck(p1->account, userPas);
 if (flag == 1)
 {
  printf("\t\t账户已存在,请重新注册......\n");
  Sleep(2000);
  system("cls");
  return;
 }
 else if (flag == 0)
 {
  userInfoSave(p1->account, userPas);
  printf("\t\t更改信息成功\n"); //flagN = N;标记当前注册账户是链表中的第几个 p1->dsit = 0;
  if (n == 0)
  {
   header = p1;
   tail = p1;
   n++;
   Sleep(2000);
   system("cls");
   return;
  }
  else
  {
   tail->xiage = p1;//这里next改成了xiage
   tail = p1;
   n++;
   Sleep(2000);
   system("cls"); return;
  }
 }
}
//密码判断
int judgePW(long ps)
{
 int n, k;
 for (k = 0; k<6; k++)
 {
  n = ps % 10;
  ps = ps / 10;
  if ((n < 0 || n > 9) && ((n<int('z') || n>int('a')) && (n<int('Z') || n>int('A'))))      //(n < 0 || n > 9)
  {
   return 2;
  }
 }
 return 1;
}
//文件写入函数
int textFile(NodePtr goods)//把list改成了goods  把void改成了int
{
 FILE *writePtr;
 Goo* curnode = goods;//把list改成了Goo
 writePtr = fopen("d:\\abc.txt", "wb+");//把TXT改成dat拓展名,则为二进制
 fprintf(writePtr, "%-6s%-16s%-11s%10s%20s\r\n",//fprintf->fwrite
  "NAME", "NUMBER", "GRADE", "DATA", "WEIGHT(kg)");
 while (curnode != NULL)
 {
  fprintf(writePtr, "%-6s%-16s%-11c%10d%20f\r\n", curnode->name, curnode->num, curnode->grade, curnode->date, curnode->money);   //修改参数 ////fprintf->fwrite    
  curnode = curnode->next;
 }
 fclose(writePtr);
 return 0;
}
//文件的读取
int readfile()
{
 FILE *readPtr;
 char ch;
 if ((readPtr = fopen("d:\\abc.txt", "rb")) == NULL)
 {
  printf("Cannot open file strike any key exit!");
  getch();
  exit(1);
 }
 ch = fgetc(readPtr);
 while (ch != EOF)
 {
  putchar(ch);
  ch = fgetc(readPtr);
 }
 fclose(readPtr);
}
//用户检查,如果已存在用户,那么就不用重新注册
int userCheck(char *s, char *p)
{
 char szTest[1000] = { 0 };
 char szTest1[1000] = { 0 };
 int len = 0;
 int num = 0;
 FILE *fp = fopen("D:\\user.txt", "r");
 if (NULL == fp)
 {
  printf("failed to open dos.txt\n");
  return 0;
 }
 while (!feof(fp))
 {
  memset(szTest, 0, sizeof(szTest));
  fgets(szTest, sizeof(szTest) - 2, fp); // 包含了\n 
  int i = strlen(szTest);
  if (szTest[i - 1] == '\n') //因为最后一行没有回车符
  {
   szTest[i - 1] = 0;
  }

  memset(szTest1, 0, sizeof(szTest1));
  fgets(szTest1, sizeof(szTest1) - 2, fp); // 包含了\n 
  i = strlen(szTest1);
  if (szTest1[i - 1] == '\n') //因为最后一行没有回车符
  {
   szTest1[i - 1] = 0;
  }

  //printf("%s%s",szTest,szTest1);
  if (strcmp(szTest, s) == 0 && strcmp(szTest, p) == 0)
  {
   return 1;
  }
  // printf("%s", szTest); 
 }
 fclose(fp);
 return 0;
}
//保存密码
int userInfoSave(char *u, char *p)
{
 FILE *fp = fopen("D:\\user.txt", "a+");
 if (fp == 0) { printf("can't open file\n"); return 0; }
 fseek(fp, 0, SEEK_END);
 fwrite("\n", strlen("\n"), 1, fp);
 fwrite(u, strlen(u), 1, fp);
 printf("%s", u);
 fwrite("\n", strlen("\n"), 1, fp);
 fwrite(p, strlen(p), 1, fp);
 fwrite("\n", strlen("\n"), 1, fp);
 fclose(fp);
 return 1;
}












Java 集合框架:LinkedList 的增删改查操作指南 我们的目的是全面深入地了解 Java 里的 LinkedList 集合,搞清楚它是怎么进行数据的增加、删除、修改和查找操作的。范围涵盖了 LinkedList 的基本概念、操作原理、实际代码示例以及应用场景等方面。接下来,我们会先介绍 LinkedList 的核心概念,再讲解增删改查操作的算法原理和具体步骤,然后通过项目实战给出代码示例并详细解读,接着探讨它的实际应用场景,推荐一些相关工具和资源,最后总结所学内容并提出思考题。LinkedList。 阅读详情

相关推荐

C/C++工业级二维码扫码出入库系统设计与实战

二维码扫码系统是现代仓储自动化的核心基础能力,其本质是将物理世界的数据采集行为转化为结构化业务指令。实现稳定可靠的扫码功能,需深入理解串口通信原理、本地数据库事务机制及工业环境下的实时性约束。C/C++凭借零运行时依赖、低内存占用和直接调用Windows API的能力,成为弱网/断网场景下扫码出入库系统的首选技术栈。结合SQLite WAL模式、ZBar轻量解码与GDI+简易打印,可构建出启动快、响应稳、部署简的离线仓储作业终端。本文聚焦真实产线落地经验,覆盖扫码枪配置、数据解析鲁棒性、库存并发控制与极端环

weixin_31860973的博客 338

库存管理系统(用户信息的增删改查)

视图层`` package com.hyg.view; import java.util.List; import java.util.Scanner; import com.hyg.model.User; import com.hyg.service.UserService; public class Menu { UserService userservice = new UserService(); Scanner sc =new Scanner(System.in); //

qq_46343373的博客 1651

仓库信息的增删改查

本系统面向仓库信息相关业务设计与实现。 主要基本业务:管理员登录后分别对员工信息和商品信息的管理。 主要系统功能:员工信息的添加、删除、修改、全部浏览和按名字查询功能,商品信息的添加、删除、修改、全部浏览和按名字查询功能。 开发环境与技术:MyEclipse,Java语言,JDK 1.7,Windows 8操作系统,数据库为MySQL 6.0。

C/C++仓库管理

cout

2301_76817904的博客 150

用链表做的库存管理系统

create:接收用户输入的商品号和商品名称的信息,建立链表;库存初始化为0,没有进货之前不允许销售;商品号为0表示用户输入结束。本函数用于初始化,如果第二次被调用的时候,首先要执行destroy清除旧链表。 destroy:给定链表的头指针,删除链表的所有节点,并释放相应的空间。本函数在程序退出前应至少被调用一次。在调用此函数前,必须给予用户提示,使用户在删除前有反悔的机会。 sell:商品销售,由参数传入商品号和销售数量。如果不存在给定商品号的商品或销售数量大于相应商品的库存则出错;否则,从指定商品的库存中扣除相应的销售数量。当商品库存为0,则从链表中删除该商品。 stock:商品进货,由参数传入商品号和进货数量。如果不存在给定商品号的商品则在链表中插入新商品,并提示用户输入该商品名称;否则,增加指定商品的库存量。 list:列出所有商品的情况。 主程序 程序运行后,循环显示如下菜单: 1. 输入商品信息 2. 销售 3. 进货 4. 列举商品信息 5. 清除所有商品 6. 退出 根据用户的选择进一步提示用户输入并调用对应函数。

双链表实现仓库管理系统

C语言编写,用双链表实现仓库管理系统,相信对同学们有所帮助。

C/C++ 仓库管理

cout

2301_76817904的博客 107

仓库管理系统 链表操作

货物入库 货物出库 删除一定数量的指定商品名称的商品 修改指定商品编号或者商品名称的价格 删除指定商品编号、商品名称的商品记录 查询所有商品信息 查询指定商品编号、商品名称的商品信息 根据价格或数量对商品进行排序 张步阳

C语言大作业

仓库管理系统 这是本人有了两个星期写出来的代码,也是有一些小bug的。1.名字会重复。2.保存没有注释(打开文件之后用户可能无法识别保存的是什么)。3.提示一下,我上面写的提示性词语都是本社团的人员,我只不过是开开玩笑,各位可以在用时进行删改。 在这里插入代码片#include<stdio.h> #include<string.h> #include<stdlib.h> #define Q 20 char newname[Q]; char password[Q];

qq_51960895的博客 455

仓库管理系统,基于单链表的应用,应用范围广泛,纯手工代码

单链表应用,用于开发学习,主要功能都已实现了,剩余功能可以继续扩充,这是我在初学时纯手工写的代码,适用于初学者及有一定基础的人群。

仓库货物管理系统(MFC)

仓库货物管理系统!是通过链表实现的!个人感觉还行!希望大家多多支持!

B树与B+树深度解析:从磁盘I/O优化到数据库索引实战

在数据库与文件系统等海量数据存储场景中,磁盘I/O是主要性能瓶颈。为了高效管理磁盘数据,平衡多路搜索树应运而生,它通过增加节点关键字数量来降低树高,从而减少磁盘访问次数。B树和B+树是其中两种核心数据结构,它们在数据组织方式上存在根本差异:B树在每个节点都存储键值对,适合点查询;而B+树将数据全部存储在叶子节点并链接成有序链表,内部节点仅作导航。这种设计使B+树在范围查询和全表扫描时能利用顺序I/O,性能远超B树的随机I/O。因此,B+树成为MySQL等主流数据库索引的标准实现,支撑着高效的范围查询和排序操

weixin_30448603的博客 770

仓库管理系统(分别通过数据库实现和文件实现,含流程图)

选题四:仓库管理系统(输入、输出、插入、删除、查找、增加、统计等)。 题目描述 编写一个程序来管理仓库的货物,系统能实现以下功能: 输入信息:产品信息的输入; 修改信息:对产品信息进行添加、删除与修改; 查询:能够根据产品号或产品名查询某个产品的信息; 输出:输出所有产品信息或查询产品信息的结果。 报表输出:根据库存数据产生月报表。 设计提示 1)先确定仓库中产品信息的数据结构。如各种产品的信息:产品号、产品名、单价、数量、入库时间、出库时间…… 等,每个数据项各用什么数据类型; 2)划分实现仓库管理的功能模块:如主菜单、输入数据、修改、查询、输出等功能,并确定各功能模块的实现算法。 3)画出各模块的流程图或S-R图; 4)选择C语言的技术:普通数组、结构体数组、函数、指针、单链表或文件等。 5)编写程序代码。

对于系统架构:从单体到云原生的九阶演进之路

本文系统梳理了从单机架构到千万级并发分布式系统的九次架构演进历程,以电商平台为例,详细分析了每个阶段的架构特点、瓶颈问题及解决方案。文章首先强调了架构演进的核心逻辑是随业务增长逐步解决瓶颈问题,而非一次性设计。随后通过九次跃迁(如应用数据分离、读写分离、微服务化等)展示了技术决策背后的思考过程,包括引入缓存、分库分表、容器编排等关键技术。最后总结了架构决策方法论,指出应基于实际业务需求选择合适架构,避免过度设计。全文提供了技术选型速查表,为开发者提供实用参考。

2503_92929084的博客 436

基于Linux-C内核链表三种角色账号登录的学生管理系统

实现了三种角色(包括管理员、教师、学生)登录系统,但是里面有些功能还不够完善,漏洞也比较多,欢迎大家帮忙纠正。

ITIL 4 Foundation 自学通关笔记1

ITIL 4 Foundation 自学通关笔记

m0_58817196的博客 952

仓库管理系统——结构体链表(包括账户注册登录修改)

我的网站:https://www.liuzhi.org.cn大家可以进入看看! 运行软件CodeBlocks #include <stdio.h> #include <stdlib.h> #include <string.h> #include <conio.h> #define h1 "===============货物信息数据如下===...

LIUZHIOJ的博客 3774

ADXL355 STM32 HAL 库 SPI 驱动实战:从零构建高精度加速度数据采集系统

本文详细介绍了如何使用STM32 HAL库通过SPI接口驱动ADXL355高精度加速度计,构建稳定可靠的数据采集系统。从硬件连接到寄存器配置,再到数据采集与处理,提供了完整的实战代码和优化技巧,特别适合工业级振动监测等应用场景。

weixin_28738397的博客 324

[源码和文档分享]利用C++实现仓库管理系统

一.需求分析 仓库管理系统的功能如下: 先读入仓库中已存在的商品的编号、名字、数量 在仓库进货时,读入含进货信息的文件,改变商品的种类以及数量 在仓库出货时,读入含出货信息的文件,减少对应商品的库存量 查询功能:可以根据商品编号或商品名称随时查看当前仓库的库存,包括货品编号、货品名称、原始库存、进货数目、出货...

qq_38474647的博客 2456

开源多波束声呐数据集:从原始回波到AI识别的关键一步

本文探讨了开源多波束前视声呐数据集(UATD)在AI目标识别中的关键作用。通过分析原始回波数据与处理后数据的差异,揭示了开源数据集如何降低研究成本、提升实验可重复性,并加速技术迭代。文章还详细解析了UATD数据集的结构、实战应用技巧及从原始数据到AI模型的完整流程,为水下目标识别研究提供了宝贵参考。

weixin_28675839的博客 421

华为S5720交换机堆叠配置

S5720交换机,做下堆叠,两条线,交叉互联(即A交换机23口连到B交换机24口,A交换机24口连接B交换机23口)。PS:S5720堆叠可基于电口或者光口做,本次测试基于电口。 SWA配置 # 改名 [Huawei]sysname SWA # 最好先shutdown接口 [SWA]interface GigabitEthernet 0/0/23 [SWA-GigabitEthernet0/0/23]shutdown [SWA-GigabitEthernet0/0/23]interface G.

Markdown 6340

数据结构之线性表的链式存储实现(附完整代码)

顺序表插入、删除时需要通过移动数据来实现,影响了执行效率。 而链表不要求逻辑上相邻的两个数据元素物理上也相邻,因此对线性表的插入、删除不需要移动数据元素,只需要修改链。 下面介绍带头结点的链式表: 数据结构: typedef int ElementType; typedef struct LNode * PtrToLNode; struct LNode{ ElementType Dat...

玥玥的博客博客博客 2万+

强化学习:Distributed PPO (DPPO) 学习笔记

DPPO = Distributed + Proximal Policy Optimization Distributed:多个智能体并行训练 Proximal:限制策略更新幅度,确保稳定性 Policy Optimization:基于策略梯度的优化方法 核心思想:多个智能体并行探索环境,共享经验,通过裁剪策略更新确保训练稳定

只是个人学习笔记 1330
上一篇: 第一次 小白之声
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值