c语言实现图书管理系统创新_c语言图书管理系统源代码

c语言实现图书管理系统创新_c语言图书管理系统源代码/* 课程设计项目名称:图书查询系统 作者:施瑞文 时间:2018.3.4*/#include<stdio.h>#include<string.h>#include<windows.h>#include<conio.h>#include<stdlib.h>#defineNsizeof(structBOOK)…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用
c语言实现图书管理系统创新_c语言图书管理系统源代码
c语言实现图书管理系统创新_c语言图书管理系统源代码
c语言实现图书管理系统创新_c语言图书管理系统源代码
c语言实现图书管理系统创新_c语言图书管理系统源代码

/*
课程设计项目名称:图书查询系统
作者:施瑞文
时间:2018.3.4 
*/ 
#include<stdio.h>
#include<string.h>
#include<windows.h>
#include<conio.h>
#include<stdlib.h>
#define N sizeof(struct BOOK)
struct BOOK        //图书信息 
{
char number[10];   //登录号 
char name[10];     //书名 
char author[10];    //作者名 
char type[10];      //类型 
char publish[10];  //出版单位 
char time[8];        //出版时间 
float price;       //价格 
int num;         //数量 
int x;
struct BOOK *next;   //指针域 
};
typedef struct BOOK Book;
typedef Book *book;	 
void HideCursor();    //隐藏光标
void toxy(int x, int y);    //将光标移动到X,Y坐标处
void color(short x);     //设置颜色
void over();             //退出 
void menu();           //菜单 
void input_book();     //图书入库 
void save_book(book p);//将图书信息存入文件 
void find_book();      //查询 
void print_book();    //图书总览 
void del_book();     //删除图书 
void amend_book();    //修改信息 
book ss();
void find_name_book();  //按书名查询 
void find_author_book(); //按作者查询 
void find_number_book();  //按登录号查询
void find_publish_book();  //按出版社查询 
void fuzzy_search();     //模糊查找 
void HideCursor()     //隐藏光标
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0}; 
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void color(short x)
{
if(x>=0&&x<=15)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
}
else
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),x);
}
} 
void toxy(int x, int y)      //将光标移动到X,Y坐标处
{
COORD pos = { x , y };
HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(Out, pos); 
}
void menu()    //菜单 
{
do
{
system("cls");  //清屏 
HideCursor();  //隐藏光标 
color(15);    //设置一个好看的颜色 
char t;
toxy(50,5);//将光标移动到(50,5)坐标处
printf(" 图书查询管理系统");
toxy(48,8);
printf("|     1.图书入库      |");
toxy(48,10);
printf("|     2.修改信息      |");
toxy(48,12);
printf("|     3.删除信息      |");
toxy(48,14);
printf("|     4.图书查询      |");
toxy(48,16);
printf("|     5.图书总览      |");
toxy(48,18);
printf("|     6.退出软件      |");
t=getch();    //不回显函数 
switch(t)
{
case '1':input_book();break;
case '2':amend_book();break;
case '3':del_book();break;
case '4':find_book();break;
case '5':print_book();break; 
case '6':over();break;
default :break;
}
}while(1);
} 
book ss()      //将文件中的内容读出到链表中,返回值为表头地址 
{
FILE *fp;       //文件指针 
int n=0;
book head=NULL;
book p2,p,pr=NULL;
fp=fopen("mybook","ab+");     //以只读的方式打开文件 
if(fp==NULL)
{
printf("cannot open file\n");
}
while(!feof(fp))        //判断文件位置标志是否移动到文件末尾 
{
n++;
p=(book)malloc(N); //向内存申请一段空间 
fread(p,N,1,fp);     //将fp所指向的文件中的内容赋给p 
if(n==1)
{
head=p;
p2=p;
}
else             //创建链表 
{
pr=p2;
p2->next=p;
p2=p;
}
}
if(pr!=NULL)
pr->next=NULL;
else
head=NULL;
fclose(fp);    //关闭文件 
return head;   //返回头指针 
}
void input_book()    //图书录入 
{
do
{
system("cls");
color(10);
char t;
book p;
p=(book)malloc(N);     //申请空间 
//输入图书信息
toxy(48,8);
printf("请输入图书登录号(小于10位数):");    
scanf("%s",p->number);getchar();
toxy(48,10);
printf("请输入书名(小于10位数):");
scanf("%s",p->name);getchar();
toxy(48,12);
printf("请输入作者名(小于10位数):");
scanf("%s",p->author);getchar();
toxy(48,14);
printf("请输入图书类别(小于10位数):");
scanf("%s",p->type);getchar();
toxy(48,16);
printf("请输入图书出版单位(小于10位数):");
scanf("%s",p->publish);getchar();
toxy(48,18);
printf("请输入图书出版时间(小于8位数):");
scanf("%s",p->time);getchar();
toxy(48,20);
printf("请输入图书价格:");
scanf("%f",&p->price);getchar();
toxy(48,22);
printf("请输入图书数量:");
scanf("%d",&p->num);
save_book(p);
toxy(48,24);
printf("正在保存....");
Sleep(500);   //暂停0.5秒 
system("cls");
toxy(46,8);
printf("-------------------------");
toxy(46,9);
printf("|                       |");
toxy(46,10);
printf("| 保存成功!是否继续?  |");
toxy(46,12);
printf("| 1.是             2.否 |");
toxy(46,13);
printf("|                       |");
toxy(46,14);
printf("-------------------------");
while(1)    //利用死循环可有效防止其他按键干扰 
{
t=getch();
if(t=='1')
{
break;
} 
else if(t=='2')
{
menu();
}
}
}while(1);
} 
void amend_book()    //修改图书信息 
{
do
{
system("cls");
color(10);
book head,p;
int i=11,j=0,x;
char ch,t;
FILE *fp;    //文件指针 
char _name[10];
char number[10];   //登录号 
char name[10];     //书名 
char author[10];    //作者名 
char type[10];      //类型 
char publish[10];  //出版单位 
char time[8];        //出版时间 
float price;       //价格 
int num;         //数量 
head=ss();
p=head;
toxy(48,10);
printf("请输入你要修改的图书的书名:");
gets(_name); 
while(p!=NULL)    //初始化p->x为0 
{
p->x=0;
p=p->next;
}
p=head;    //让p重新指向表头 
toxy(20,5);
printf("***********************************************图书信息******************************************************");
toxy(20,8);
printf("-------------------------------------------------------------------------------------------------------------");
toxy(20,9);
printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量");
toxy(20,10);
printf("-------------------------------------------------------------------------------------------------------------");
while(p!=NULL)
{
if(p!=NULL&&strcmp(p->name,_name)==0)
{
toxy(20,i);
j++;
printf("%d:%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",j,p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
p->x=j;    //给符合查询标准的结点标号 
i++;
}
p=p->next;
}
if(j==0)                   //如果j=0,即没有进入前面的搜索循环,也就是没有找到相应的信息 
{ 
toxy(50,i);
printf("没有找到相应的信息!(按0返回,按1重新搜索)");
while(1)               //死循环是为了防止除0和1的其他按键干扰 
{
ch=getch();
if(ch=='0')
{
menu();break;
}
else if(ch=='1')
{
break;
}
}
if(ch=='1')     //如果输入的ch等于1,则结束本次循环 
continue;
}
while(1)
{
toxy(45,i);
printf("请输入您要修改的图书的编号:");
scanf("%d",&x);getchar();
if(x>j||x==0)     
{
toxy(45,++i);
printf("输入错误,请重新输入!");
Sleep(500);
}
else
{
break;
}
}
p=head;     //让p重新指向表头 
while(p!=NULL&&p->x!=x)   //遍历链表查询符合条件的结点 
{
p=p->next;
}
if(p)    //如果p不为空 
{
system("cls");
//输入要修改的信息 
toxy(48,8);
printf("请输入图书登录号(小于10位数):");
scanf("%s",number);getchar();strcpy(p->number,number);
toxy(48,10);
printf("请输入书名(小于10位数):");
scanf("%s",name);getchar();strcpy(p->name,name);
toxy(48,12);
printf("请输入作者名(小于10位数):");
scanf("%s",author);getchar();strcpy(p->author,author);
toxy(48,14);
printf("请输入图书类别(小于10位数):");
scanf("%s",type);getchar();strcpy(p->type,type);
toxy(48,16);
printf("请输入图书出版单位(小于10位数):");
scanf("%s",publish);getchar();strcpy(p->publish,publish);
toxy(48,18);
printf("请输入图书出版时间(小于8位数):");
scanf("%s",time);getchar();strcpy(p->time,time);
toxy(48,20);
printf("请输入图书价格:");
scanf("%f",&price);getchar();p->price=price;
toxy(48,22);
printf("请输入图书数量:");
scanf("%d",&num);getchar();p->num=num;
}
color(7);
toxy(46,8);
printf("-------------------------");
toxy(46,9);
printf("|                       |");
toxy(46,10);
printf("|     是否确认修改?    |");
toxy(46,12);
printf("| 1.是             2.否 |");
toxy(46,13);
printf("|                       |");
toxy(46,14);
printf("-------------------------");
while(1)   //利用死循环防止其他按键干扰 
{
t=getch();
if(t=='1')
{
break;
} 
else if(t=='2')
{
menu();
}
}
system("cls");
toxy(46,10);
printf("正在修改,请稍后....");
fp=fopen("mybook","wb");   //以只写的方式打开名为mybook的二进制文件,打开的同时清空文件中的内容 
if(fp==NULL)
{
printf("cannot open file"); 
}
if(fwrite(head,N,1,fp)!=1)   //将head写入fp所指向的文件中 
{
printf("write error!"); 
}
fclose(fp);   //关闭文件 
if(head!=NULL)   //如果head不为空 
{
p=head->next;     //让p指向第二个结点 
fp=fopen("mybook","ab");   //以追加的方式打开文件 
if(fp==NULL)
{
printf("cannot open file");
}
while(p!=NULL)
{
if(fwrite(p,N,1,fp)!=1)//将p写入fp所指向的文件中
{
printf("write error!");
}
p=p->next;
}
fclose(fp);  //关闭文件 
}
Sleep(500);   //暂停0.5秒 
system("cls");
toxy(46,10);
printf("修改成功!即将自动返回主菜单....");
Sleep(500);
break;
}while(1);
}
void del_book()   //删除信息 
{
do
{
system("cls");
color(9);
FILE *fp;
book head,p,pre=NULL; 
int j=0,x,i=11;
char name[10];
char t,c,ch;
head=ss();    //调用函数,返回表头地址 
toxy(48,10);
printf("请输入你要删除的图书的书名:");
scanf("%s",name);
p=head;
while(p!=NULL)
{
p->x=0;
p=p->next;
}
p=head;
toxy(20,5);
printf("***********************************************图书信息******************************************************");
toxy(20,8);
printf("-------------------------------------------------------------------------------------------------------------");
toxy(20,9);
printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量");
toxy(20,10);
printf("-------------------------------------------------------------------------------------------------------------");
while(p!=NULL)
{
if(p!=NULL&&strcmp(p->name,name)==0)
{
toxy(20,i);
j++;
printf("%d:%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",j,p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
p->x=j;
i++;
}
p=p->next;
}
if(j==0)                   //如果j=0,即没有进入前面的搜索循环,也就是没有找到相应的信息 
{ 
toxy(50,i);
printf("没有找到相应的信息!(按0返回,按1重新搜索)");
while(1)               //死循环是为了防止除0和1的其他按键干扰 
{
ch=getch();
if(ch=='0')
{
menu();break;
}
else if(ch=='1')
{
break;
}
}
if(ch=='1')     //如果输入的ch等于1,则结束本次循环 
continue;
}
while(1)
{
toxy(45,i);
printf("请输入您要删除的图书的编号:");
scanf("%d",&x);getchar();
if(x>j||x==0)
{
toxy(45,++i);
printf("输入错误,请重新输入!");
Sleep(500);
}
else
{
break;
}
}
color(7);
toxy(46,8);
printf("-------------------------");
toxy(46,9);
printf("|                       |");
toxy(46,10);
printf("|     是否确认删除?    |");
toxy(46,12);
printf("| 1.是             2.否 |");
toxy(46,13);
printf("|                       |");
toxy(46,14);
printf("-------------------------");
while(1)
{
t=getch();
if(t=='1')
{
break;
} 
else if(t=='2')
{
menu();
}
}
p=head;
while(p!=NULL&&p->x!=x)
{
pre=p;
p=p->next;
}
if(p!=NULL)
{
if(pre==NULL)
{
head=head->next;
}
else
{
pre->next=p->next;
}
}
free(p);
fp=fopen("mybook","wb");
if(fp==NULL)
{
printf("cannot open file"); 
}
if(fwrite(head,N,1,fp)!=1)
{
printf("write error!"); 
}
fclose(fp);
if(head!=NULL)
{
p=head->next;
fp=fopen("mybook","ab");
if(fp==NULL)
{
printf("cannot open file");
}
while(p!=NULL)
{
if(fwrite(p,N,1,fp)!=1)
{
printf("write error!");
}
p=p->next;
}
fclose(fp);
}
system("cls");
toxy(46,10);
printf("正在删除,请稍后....");
Sleep(500);
system("cls");
toxy(46,8);
printf("-------------------------");
toxy(46,9);
printf("|                       |");
toxy(46,10);
printf("|  删除成功,是否继续? |");
toxy(46,12);
printf("| 1.是             2.否 |");
toxy(46,13);
printf("|                       |");
toxy(46,14);
printf("-------------------------");
while(1)
{
c=getch();
if(c=='1')
{
break;
}
else if(c=='2')
{
menu();
}
}
}while(1);
}
void print_book()   //图书总览 
{
system("cls");
color(6);
book head,p;
int i=11;
int sum=0;
head=ss();
toxy(20,5);
printf("***********************************************图书总览******************************************************");
toxy(20,8);
printf("-------------------------------------------------------------------------------------------------------------");
toxy(20,9);
printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量");
toxy(20,10);
printf("-------------------------------------------------------------------------------------------------------------");
if(head==NULL)
{
toxy(45,11);
printf("书库暂时没有书哦~赶快去添加几本吧^_^(按任意键返回)");
getch();
menu();
}
p=head;
while(p!=NULL)
{
toxy(20,i);
printf("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
i++;
sum+=p->num;//计算图书总量 
p=p->next;
}
toxy(48,7);
printf("图书总量为:%d",sum);
toxy(45,i);
printf("按任意键返回");
getch();//不回显函数 
}
void find_book()  //查询图书 
{
do
{
system("cls");  //清屏 
color(8);
char t;
toxy(50,5);
printf(" 图书查询");
toxy(48,8);
printf("|     1.书名  查询      |");
toxy(48,10);
printf("|     2.作者  查询      |");
toxy(48,12);
printf("|     3.登录号查询      |");
toxy(48,14);
printf("|     4.出版社查询      |");
toxy(48,16);
printf("|     5.模糊  查询      |");
toxy(50,18);
printf("按0返回主菜单");
t=getch();
switch(t)
{
case '0':menu();break;
case '1':find_name_book();break;
case '2':find_author_book();break;
case '3':find_number_book();break;
case '4':find_publish_book();break;
case '5':fuzzy_search();break;
default :break;
} 
}while(1);
}
void find_name_book()  //按名字查询 
{
system("cls");
color(8);
book head,p;
int i=11;
head=ss();
char name[10];
toxy(48,8);
printf("请输入您要查询图书的书名:");
gets(name);
toxy(48,10);
printf("正在查询....");
Sleep(500);
p=head;
toxy(20,5);
printf("***********************************************图书总览******************************************************");
toxy(20,8);
printf("-------------------------------------------------------------------------------------------------------------");
toxy(20,9);
printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量");
toxy(20,10);
printf("-------------------------------------------------------------------------------------------------------------");
while(p!=NULL)
{
if(p!=NULL&&strcmp(p->name,name)==0)
{
toxy(20,i);
printf("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
i++;
}
p=p->next;
}
toxy(45,i);
printf("按任意键返回!");
getch();
find_book();
}
void find_author_book()   //按作者名查询 
{
system("cls");
color(8);
book head,p;
int i=11;
head=ss();
char author[10];
toxy(48,8);
printf("请输入您要查询图书的作者名:");
gets(author);
toxy(48,10);
printf("正在查询....");
Sleep(500);
p=head;
toxy(20,5);
printf("***********************************************图书总览******************************************************");
toxy(20,8);
printf("-------------------------------------------------------------------------------------------------------------");
toxy(20,9);
printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量");
toxy(20,10);
printf("-------------------------------------------------------------------------------------------------------------");
while(p!=NULL)
{
if(p!=NULL&&strcmp(p->author,author)==0)
{
toxy(20,i);
printf("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
i++;
}
p=p->next;
}
toxy(45,i);
printf("按任意键返回!");
getch();
find_book();
}
void find_number_book()   //按图书编号查询 
{
system("cls");
color(8);
book head,p;
int i=11;
head=ss();
char number[10];
toxy(48,8);
printf("请输入您要查询图书的登录号:");
gets(number);
toxy(48,10);
printf("正在查询....");
Sleep(500);
p=head;
toxy(20,5);
printf("***********************************************图书总览******************************************************");
toxy(20,8);
printf("-------------------------------------------------------------------------------------------------------------");
toxy(20,9);
printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量");
toxy(20,10);
printf("-------------------------------------------------------------------------------------------------------------");
while(p!=NULL)
{
if(p!=NULL&&strcmp(p->number,number)==0)
{
toxy(20,i);
printf("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
i++;
}
p=p->next;
}
toxy(45,i);
printf("按任意键返回!");
getch();
find_book();
}
void find_publish_book()   //按出版商查询 
{
system("cls");
color(8);
book head,p;
int i=11;
head=ss();
char publish[10];
toxy(48,8);
printf("请输入您要查询图书的出版社:");
gets(publish);
toxy(48,10);
printf("正在查询....");
Sleep(500);
p=head;
toxy(20,5);
printf("***********************************************图书总览******************************************************");
toxy(20,8);
printf("-------------------------------------------------------------------------------------------------------------");
toxy(20,9);
printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量");
toxy(20,10);
printf("-------------------------------------------------------------------------------------------------------------");
while(p!=NULL)
{
if(p!=NULL&&strcmp(p->publish,publish)==0)
{
toxy(20,i);
printf("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
i++;
}
p=p->next;
}
toxy(45,i);
printf("按任意键返回!");
getch();
find_book();
}
void fuzzy_search()   //模糊查询 
{
system("cls");
color(8);
book head,p;
int i=11;
head=ss();
char information[10];
toxy(48,8);
printf("请输入您要查询图书的信息:");
gets(information);
toxy(48,10);
printf("正在查询....");
Sleep(500);
p=head;
toxy(20,5);
printf("***********************************************图书总览******************************************************");
toxy(20,8);
printf("-------------------------------------------------------------------------------------------------------------");
toxy(20,9);
printf("登录号        书名        作者名         图书类别         出版单位         出版时间          价格        数量");
toxy(20,10);
printf("-------------------------------------------------------------------------------------------------------------");
while(p!=NULL)
{
if(p!=NULL&&(strcmp(p->name,information)==0||strcmp(p->author,information)==0||strcmp(p->number,information)==0||strcmp(p->publish,information)==0))
{
toxy(20,i);
printf("%s%14s%14s%14s   %14s   %18s         %.2f%12d\n",p->number,p->name,p->author,p->type,p->publish,p->time,p->price,p->num);
i++;
}
p=p->next;
}
toxy(45,i);
printf("按任意键返回!");
getch();
find_book();
}
void save_book(book p)   //将p中内容写入文件 
{
FILE *fp;    //文件指针 
fp=fopen("mybook","ab");   //以追加的方式打开名字为mybook的二进制文件 
if(fp==NULL)
{
printf("cannot open file");
}
if(fwrite(p,N,1,fp)!=1)   //将p所指向的一段大小为N的内容存入fp所指向的文件中 
{
printf("write error");
}
fclose(fp);    //关闭文件  
} 
void over()       //退出软件 
{
char t;
toxy(48,11);
printf("-----------------------");
toxy(48,12);
printf("|   您确定要退出吗?  |");
toxy(48,14);
printf("| 1.确定     2.取消   |");
toxy(48,15);
printf("-----------------------");
while(1)
{
t=getch();         //输入t
switch(t)
{
case '1':
system("cls");
color(6);
toxy(48,10);
printf("正在安全退出....");
Sleep(1000);     //暂停1秒 
system("cls");
color(8);
toxy(48,10);
printf("已安全退出软件");
toxy(48,12);
printf("谢谢使用!");
toxy(48,14);
printf("by-by^_^");
exit(0);  break; //终止程序 
case '2':
menu(); break;   //调用函数,进入菜单 
default :break;
}
}
} 
main()   //简洁明了的主函数 
{
menu();//菜单 
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/183072.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Pytorch_hook机制的理解及利用register_forward_hook(hook)中间层输出[通俗易懂]

    Pytorch_hook机制的理解及利用register_forward_hook(hook)中间层输出[通俗易懂]参考文献:【1】梯度计算问题含公式:参考链接1.【2】pytorch改动和.data和.detch()问题:https://blog.csdn.net/dss_dssssd/article/details/83818181【3】hook技术介绍:https://www.cnblogs.com/hellcat/p/8512090.html【4】hook应用->中间层的输出:https://blog.csdn.net/qq_40303258/article/details/10688431

    2022年10月26日
  • fileinput基本使用[通俗易懂]

    fileinput基本使用[通俗易懂]新增$(“#attachmentsFile”).fileinput({theme:”fa”,showPreview:true,//是否显示预览hideThumbnailContent:true,//是否在缩略图中隐藏预览内容(图像,pdf内容,文本内容等)。showUpload:false,//隐藏上传按钮…

  • 51单片机智能小车的通俗易懂讲解「建议收藏」

    51单片机智能小车的通俗易懂讲解「建议收藏」..从上面导航图,我们可以看到,智能小车,共分为三步外部检测,控制中心,轮子输出控制。等于人的眼睛,大脑,手脚。..因为控制中心和轮子输出控制是一样的,只有前面的外部检测,换个模块工作而已。…..在这里我们先简单了解一下,上面两个外部检测,可以扩展什么功能。,.红外线类循迹避障循迹加避障等等..超声波类避障魔法手舵机式避障等等…..

  • matlab怎么定义矩阵函数,MATLAB数组的常用函数

    3进行数组运算的常用函数在MATLAB中有一些常用函数,这些函数在日常的编程计算过程中会经常遇到,一般是基本的数学概念在MATLAB中的函数表达方式。这些函数在MATLAB中可以同时作用于整个矩阵或者数组,应用起来非常方便,不需要再另写循环程序来对各元素分别进行计算。掌握这些函数是进一步学习的基础。MATLAB人性化的地方在于其自带函数基本是按照相对应的英文名称缩写而来,所以便于记忆。3.1…

  • oracle11g的standby性能分析报告statpack安装

    一般常见的分析standbydatabase的性能问题的方法就是通过动态性能视图来判断,从11g开始,随着ActiveDataGuard功能的出现,早期的Statspack工具可以在stand

    2021年12月24日
  • hmacsha256算法原理_一次解析

    hmacsha256算法原理_一次解析需要支持HMACSHA256算法,GitHub找到源码具体地址https://github.com/aperezdc/hmac-sha256/blob/master/hmac-sha256.c移植到目标平台,稍作处理测试ok了,原理:1.输入密钥key和固定的数据(0x36)进行异或操作生成一个64B的数据kx;2.使用kx+输入数据执行sha256算法得到32B的out;3.使用…

    2022年10月22日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号