C语言航空订票系统课程设计

2023-11-07


 

目录

1.设计目的:

2总体设计和功能:

3.菜单设计

4.各功能代码详解(闲话少扯):

4.1.C语言文件的操作:

4.2.读取航班信息:

C语言知识回顾 

4.3.打印航班信息

5.根据要求查找航班(航班号、起点站、终点站)

6.订票功能(链表操作)


前言:最经做了一个课程设计,设计的内容就是航空订票系统,又认真复习了一遍c语言的知识,感觉这个设计对于初学者来说,C的能力和逻辑能力会有一个提升,为了更好的总结自己学习的成果,故写下此篇博客记录一下该课程设计的重点知识,以便以后回顾。


1.设计目的:

1.  数据结构课程设计是综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(C语言),自行实现一个较为完整的应用系统的设计与开发

2.  通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用 。

3.  学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。

  航空订票系统:

(1)熟练掌握链表存储结构及其建立过程和常用操作;

(2)熟练掌握队列的建立过程和常用操作;

(3)学会自己调试程序的方法并掌握一定的技巧。

2总体设计和功能:

通过此系统可以实现如下功能:

  1. 读取磁盘的航班信息和客户订票信息(通过C语言的FILE功能)。
  2. 显示航线信息:可以显示在磁盘读入的航班信息。
  3. 显示客户信息:可以查询的客户信息包括,在磁盘文件读入的客户信息和通过 系统订票的客户信息。
  4. 查询各航线信息:可以通过三种方式去查询一个航线的信息,第一:通过航班 号,第二:通过起点查询;第三:通过终点站查询航班信息。
  5. 订票功能:用户可以在系统进行订票,订票需要输入客户的、航班号、身份证 号码、客户姓名、仓位等级进行预定。
  6. 退票功能:退票功能,需要客户提供需要退票的航班号进行查询,然后输入客 户姓名,系统查询到此客户信息退票成功,否则失败。

 


3.菜单设计

3.1主菜单代码如下:

int main()
{
	int sel;
	readinfo(&L);
	readinfo_book(&B);
	InitOrder();
	while (1)
	{
		printf("\n\n\n\n");
		printf("\t欢迎进入航班订票系统\n");
		printf("*****************************\n");
		printf("*       航空订票客运系统    *\n");
		printf("*      1.显示各航线信息     *\n");
		printf("*      2.查询各航线信息     *\n");
		printf("*      3.订          票     *\n");
		printf("*      4.退          票     *\n");
		printf("*      0.退  出  系  统     *\n");
		printf("*****************************\n");
		printf("请 选 择(0-4):\n");
		scanf("%d", &sel);
		switch (sel)
		{
		case 1:meau1(); break;//选择菜单1
		case 2:meau2(); break;//选择菜单2
		case 3:orderTicket(); break;//订票
		case 4:refund_ticket(); break;//退票
		case 0:return;//退出程序
		default:printf("输入错误\n"); break;
		}
	}

 界面如下:

主程序是整个系统的入口,首先初始化L和B的结构体变量,打印提示信息,然后让用户输入一个数值,从.0-4,输入数值1进入菜单1(meau1()):

meau1()程序如下:

void meau1(void)
{
	int subsel;
	while (1)
	{
		printf("============================\n");
		printf("=  显示各航线信息的子菜单  =\n");
		printf("============================\n");
		printf("*      1.显示所有航线     *\n");
		printf("*      2.显示订单客户     *\n");
		printf("*      3.返回主菜单       *\n");
		printf("============================\n");
		printf("请 选 择(1-3):\n");
		scanf("%d", &subsel);
		switch (subsel)
		{
		case 1:printAllofAirMsg(); break;
		case 2:printOrderCustomByAirNum1(); break;
		case 3:return;
		default:printf("输入错误\n"); break;
		}
	}
}

界面如下:

meau2() 程序如下:

void meau2(void)
{
	int subsel;
	while (1)
	{
		printf("============================\n");
		printf("=     航线信息查询子菜单   =\n");
		printf("============================\n");
		printf("*      1.按航班号查询       *\n");
		printf("*      2.按起点站查询       *\n");
		printf("*      3.按终点站查询       *\n");
		printf("*      4.返回主菜单         *\n");
		printf("============================\n");
		printf("请 选 择(1-4):\n");
		scanf("%d", &subsel);
		switch (subsel)
		{
		case 1:searchbyAirno(); break;
		case 2:searchbystartPlace(); break;
		case 3:searchbyEndPlace(); break;
		case 4: return;
		default:printf("输入错误\n"); break;
		}
	}
}

界面如下: 

还有一些菜单都是都是比较简单的知识,直接看源代码即可。 


 

4.各功能代码详解(闲话少扯):

4.1.C语言文件的操作:

在这个系统中,需要读取两个文件,一个是航班信息文件,一个是订票客户信息文件,后缀都是(.txt),内容如下:

航班信息.txt

航班号	起点	终点	飞行日	起飞时间	到达时间	机型	价格	乘员定额	余票量
CA1544	合肥	北京	1.3.5	10:55	12:40	A733	960	      100	 90 
MU5341	上海	广州	每日	14:20	16:15	M90	    1280	  150	150 
CZ3869	重庆	深圳	2.4.6	08:55	10:35	733	    1010	  100	100 
MU3682	桂林	南京	2.3.4	20:50	22:15	M90	    1380	  150	120 
HU1836	上海	北京	每日	09:40	11:20	738	    1250	  120	120 
CZ3528	成都	厦门	1.3.5	15:10	16:50	CRJ	    1060	  130	130 
MU4594	昆明	西安	2.4.6	10:15	11:40	328	    1160	  140	140 
SC7425	青岛	海口	1.3.6	19:20	21:20	DH4	    1630	  190	190 
CA1234	洛阳	上海	1.3.5	08:00	10:00	DH4	    1050	  300	300 
CA4321	shai	洛阳	2.4.6	16:00	18:00	DH4	    1100	  300	300 

订票信息.txt

航班号	姓名	身份证	订票数量
CA1544	丁方	410221    4
CA1544	邢风	410222    4
CA1544	刘向	410223    2
MU5341	wan 	415225    2
MU5341	严寒	412003    12
MU3682	吴伟	412009    2
MU3682	刘敏	400281    1

在系统运行时,首先会从电脑本地磁盘读取上面两个文件的信息到两个不同的结构体里面,然后就可以通过读取结构体的内容获取到这个航班信息和订票客户的信息了(注意结构体的成员变量应该是和我们所需要读取文件的内容是一致的,就是说要读取多少的内容,就需要为这个结构体变量开辟多少的静态内存):

航班信息结构体如下:

//航班信息结构体定义,每个航班号都会有不同的乘客名单,所以每个航班都应该有一个链表
typedef struct airinfo
{
	char Airno[8];//航班号
	char start[6];//出发地
	char end[6];//目的地
	char sche[6];//飞行日
	char time1[8];//出发时间
	char time2[8];//到达时间
	char mode[5];//机型
	int  price;//票价
	int  fixed;//  乘客定额
	int  remained;//余票
	PBookList order;/*指向乘员名单链表的头指针,通过这个指针就可以找到所有乘客的名单了*/
}AirInfo,*PAirInfo;

客户订单结构体:

//航订票客户列表体结构体定义
typedef struct Book
{
	char Airnum[8];//航班号
	char name[20];//客户姓名 
	char didentify[6];//身份证号 
	int  order_amount;//订票数量
	int grade;
	struct Book *Pnext;//指向下一个用户的首地址
}*PBookList, BookList;

接下来再定义两个结构体,去定义航班信息和客户的总体信息,以及统计航班数和客户订单数量:

//航班信息总体结构体定义
typedef struct
{
	AirInfo s[MAX]; //航班信息数组
	int acount;  //记录当前航班信息数
}SSList;
//订单客户总体信息
typedef struct
{
	BookList book[BOOKMAX];
	int book_acount;
}SbookList;


#define MAX  20
#define BOOKMAX  100

4.2.读取航班信息:

下贴上程序,然后再进行分析:

//读取文本信息,并赋值给结构体变量,传入的参数是SSList结构体变量的指针
void readinfo(SSList *L)
{
	FILE *fp;//定义文件指针
	if ((fp = fopen("航班信息.txt", "r")) == NULL)
	{
		printf("航班文件不存在 \n");
		exit(1);
	}
	else
	{
		int i = 0; char tep[500];
		L->acount = 0;     //航班次数初始化
		while (!feof(fp))
		{
			fgets(tep, 500, fp);//读取第一行说明:航班号  起点  终点 略..;
			//读取正确的信息;
			if (10 != fscanf(fp, "%s %s %s %s %s %s %s %d %d %d", L->s[i].Airno, L->s[i].start, L->s[i].end, L->s[i].sche, L->s[i].time1, L->s[i].time2,
				L->s[i].mode, &L->s[i].price, &L->s[i].fixed, &L->s[i].remained))
			{
				printf("读取文件出错\n");
				//关闭文件流指针,退出;
				fclose(fp);
				exit(1);
			}
			i++;
			L->acount++;
		}
	}
	fclose(fp);
}

程序分析:

提示:文件读取的详细解释:带我查看

注意:这里打开的文件使用的相对路径。 

如果fopen返回了打开文件的首地址,打开成功,进行航班信息的读取工作。


  • fcanf函数的讲解

格式化输入函数fscanf

 调用:fscanf(fpt,格式控制,地址列表);

 功能:以ASCII码值的方式从fpt关联的文件中读取数据,按格式控制字符串中指定的数据格式转换后送到由输入地址列表中相应项指定的内存单元。函数返回值为正确处理的数据项个数。

例子:

如果文件的内容为 ”6,6.6“,则可以使用如下语句读取:

//m和a是已经定义的int类型和double类型的变量

fcanf(fp,"%d,%lf",&m,&a);   //注意此处是地址列表
 

fscanf(fp, "%s %s %s %s %s %s %s %d %d %d",
                L->s[i].Airno, L->s[i].start, L->s[i].end, L->s[i].sche,
                L->s[i].time1,L->s[i].time2,L->s[i].mode, &L->s[i].price, 
                &L->s[i].fixed, &L->s[i].remained))

解释:fscanf函数的第一个参数是打开文件的指针变量,第二个参数格式控制,第三个参数就是读取的地址列表。

我们需要读入的数据以空格隔开,共有十个数据,所以上面橙色字体的格式控制有10个,我们需要读入的是结构体里面,定义了一个结构体变量L来存放它。

为什么是这种形式赋值:L->s[i].Airno

回忆一下:我们传入这个函数的形参是SSList *类型的

这里为了去统计航班信息数,使用了一个结构体的嵌套:如下:

如果在函数void readinfo(SSList *L),中需要去改变第i个航班的Airno的成员变量的值,如何做?


C语言知识回顾 

此处就涉及到了C语言指针一些语法的问题了,先复习一下指针的知识吧,例如我定义了一下的两个变量

int a=5;   //定义了一个整形变量a
int * b; //定义了一个变量b,这个变量是整形的指针变量,用于存放整形数据的地址
b = &a;  //把a的地址 赋予给b这个指针变量

上面的语句相当于做了什么事呢?用一个简图表示如下:

那么在C语言中有规定,此时:*b  和  的值是相等的。

注意:*b的含义是:以b内容(1000h)为地址的变量的值(那就是变量a的值咯)。


继续深入,结合结构体:

现在定义一个如下的结构体:

typedef struct student
{
    int age;  //结构体成员变量
    int num;
}stu;

stu stu1;  //定义了一个结构体变量stu1,此时已经在内存开辟了一块静态空间给结构体变量stu1,因为没有
           //进行赋值,所以里面的是垃圾值

如果此时我们想在主函数调用一个函数去改变这个stu1结构体变量的信息,如何做?

提示:如果我们想通过函数调用的方法去改变一个函数的值,那必须传递指针才能做到,因为当你在主函数中调用一个函数,那么此时就会分一块新的空间给这个函数,即使我们改变了调用函数的值,但是函数执行结束,就会自动释放内存,也无法把我们想要的结果传递回来。所以在主函数通过调用函数的方式改变一个变量或者结构体变量,必须传递指针(当然还有返回值,但是返回值只能返回一个数据)。

因此定义一个函数为:void change_stu_msg(stu * student)

那么在这个函数中应该怎样写,可以考虑一下,这个函数的形参是stu * 类型的,表示的是接受stu结构体变量的地址,那么想要改变stu1这个结构体变量的内容,传递进来的应该是 : stu1的地址(&stu1)。

通过上面知道,此时 student = &stu1,也就是student这个结构体指针变量存放了stu1的地址。

那么,*student 就等价于 stu1 ,此时想要改变stu1结构体变量的值,函数就可以如下这样写:

void change_stu_msg(stu * student)
{
    (*student).age=10;
    (*student).num=20;
    
}

那么当我们在main主函数中调用这个函数:change_stu_msg(&stu1);

执行结果:这个结构体变量的成员,age=10,num=20;不再是一个垃圾值了。

那么箭头  -> 和这个有什么关系? 这点其实就是语法的规定而已

在C语言中规定:

还是拿上面的函数举例,为了方便书写,可以把 :(*student).    等价成为    ->    

那么 void change_stu_msg(stu * student) 也可以这样子写:

void change_stu_msg(stu * student)
{
    student->age=10;
    student->num=20;
    
}

这下应该对上面的赋值语句有所了解了吧。


复习完C语言的知识,回到刚刚那么问题:

如果在函数void readinfo(SSList *L),中需要去改变第i个航班的Airno的成员变量的值,如何做?

这个函数的形参不就是接受一个 SSList 结构体变量的指针嘛,那先定义一个结构体变量咯:SSList L;

提示:其实这个L变量就是用来存放我们的数据的,只是现在是一些垃圾值,void readinfo(SSList *L) 这个函数就是对这个变量 L 进行初始化滴。

那在主函数中调用的话,必须把L的指针传递进去,即为:readinfo(&L);

此时就会有这样的一个关系: L = &L;     //注意此时这两个L不是一样的,一个是实参,一个是形参。形参的L可以随便改

这样看起来怪怪的,把形参的L修改成 List 把,这样容易看一点 ,即为:void readinfo(SSList *List) 

此时有这样一个关系: List = &L;    那么 *List = L 。

而L结构体有两个成员变量,如下:

改变第一个成员变量的值使用:(*List).s[MAX] 

可以看到s[MAX] 是一个数组,他是一个怎样的数组呢?AirInfo类型的数组,而Airinfo是一个结构体,那s[MAX] 就是一个结构体数组(定义MAX为20),AirInfo结构体有什么内容?

从内存角度来说其实就是开辟了类似如下的一大块静态内存:

那么想改变第2个航班的信息,就必须定位到 s[1]这个结构体咯,即为:(*List).s[1]

想改变这个结构体变量  s[1]的成员变量  Airno[8],如何做?  即为:(*List).s[1].Airno ="Hello"  

在C语言复习那部分,知道  (*List).  可以等价于  List->

这样子就可以回答上面提出的问题了:

如果在函数void readinfo(SSList *List),中需要去改变第i个航班的Airno的成员变量的值,如何做?

在函数中可以这样写:List->s[ i ].Airno ="Hello"


 

从本地磁盘读取用户信息,因为其逻辑和读取航班信息是一样的,只贴出程序:

//读取订单客户的文件,传入的参数是BookList结构体变量的指针。
//读取到订单客户的信息应给是存储在一个数组里面。例如:book[BOOKMAX];
void readinfo_book(SbookList * book)
{
	FILE *fp;//定义文件指针
	if ((fp = fopen("订票信息.txt", "r")) == NULL)  //以只读的方式打开
	{
		printf("订票信息.txt文件不存在 \n");
		exit(1);
	}
	else
	{
		int i = 0; char title[500];  //读
		B.book_acount = 0;
		while (!feof(fp))  //C提供了一个测试文件状态的函数feof(pf),当文件未结束时feof函数的值为0,
			               //否则为非0值。使用函数feof来判断文件是否结束既可用于文本文件,还可用于二进制文件
		{
			fgets(title, 500, fp);//读取第一行说明:航班号  起点    终点 略去;
			//读取正确的信息,格式化读取信息,把fp所指向的文件读取到结构体里面去
			if (4 != fscanf(fp, "%s %s %s %d", B.book[i].Airnum, B.book[i].name, B.book[i].didentify, &B.book[i].order_amount))
			{
				printf("读取文件出错\n");
				//关闭文件流指针,退出;
				fclose(fp);
				exit(1);
			}
			i++;
			B.book_acount++;
		}
	}
	fclose(fp);
}

有了这两个结构体和结构体成员变量,还有文件读取函数,就可以把这些航班信息和客户信息读取到我们所定义的结构体里面,我们结构体就是存储。也就是存储到如下的结构体里面

4.3.打印航班信息

通过在主函数调用读取航班信息和读取订票用户信息,然后把文本数据读取到L和B的结构体变量:

通过上面的函数在结构体变量已经进行了赋值,也就是说我们的航班信息和客户订票信息已经储存于内存了。


接下来就可以通过调用相应的结构体去读取信息啦:

  • 打印航班信息:

代码如下,此处把结构体成员变量L的内容打印出来:

void printAllofAirMsg(void)
{
	int i = 0;
	for (i = 0; i < L.acount; i++)  //L.account是统计航班个数的,打印所有航班
	{
		printf("航班号 起点 终点 飞行日 起飞时间 到达时间 机型 价格 乘员定额 余票量\n");
		printf("%s %s %s %s %s %s %s %d %d %d\r\n", L.s[i].Airno, L.s[i].start, L.s[i].end, L.s[i].sche, L.s[i].time1, L.s[i].time2, L.s[i].mode, L.s[i].price, L.s[i].fixed, L.s[i].remained);


	}
}

已上的程序完成了一些简单的文件操作,需要掌握的知识是:

1.文件的操作

2.结构体的定义

3.结构体变量的赋值

4.打印结构体变量的内容 


5.根据要求查找航班(航班号、起点站、终点站)

此处只讲解一下按航班号查询航班信息,其他两个查询方式几乎和第一个一样。

先贴出代码如下:

/*根据客户提出的航班号输出航线信息*/
void searchbyAirno()
{
	PAirInfo info, a;
	char Airnum01[10];
	int i = 0, sel;
	info = L.s;
	a = L.s;
	printf("===============================\n");
	printf("== 为您列出航班号供您选择:   =\n");
	for (int j = 0; j < L.acount; j++)
	{
		printf("%d           %s\n", j, a[j].Airno);

	}
	printf("===============================\n");
	printf("请输入要选择航班的序号:");
	scanf("%d", &sel);
	//根据用户的选择,给Airnumber变量赋值不同的航班号
	if (sel >= L.acount) {
		printf("输入错误\n");
		return;
	}
	else  //输入的序列号有效
	{
		strcpy(Airnum01, info[sel].Airno);
	}

	while (i < MAXSIZE)
	{
		if (!strcmp(Airnum01, a[i].Airno)) break;
		i++;
	}
	if (i >= MAXSIZE)
	{
		printf("\n\n");
		printf("对不起,该航线未找到!\n");
		printf("\n\n");
	}

	else
	{
		printf("================================================================================\n");
		//printf("航班号 起点 终点 飞行日 起飞时间 到达时间 机型 价格 乘员定额 余票量\n");
		printOneofAirMsg(i);
	}
}

在界面上显示效果如下:

接下来读取航班序号,来判断你选择的航班信息:

打印航班信息:

void printOneofAirMsg(int i)
{
	
		printf("航班号 起点 终点 飞行日 起飞时间 到达时间 机型 价格 乘员定额 余票量\n");
		printf("%s %s %s %s %s %s %s %d %d %d\r\n", L.s[i].Airno, L.s[i].start, L.s[i].end, L.s[i].sche, L.s[i].time1, L.s[i].time2, L.s[i].mode, L.s[i].price, L.s[i].fixed, L.s[i].remained);

}

效果如下:


6.订票功能(链表操作)

其实这一部分最终要的就是链表的操作,无非就是链表的创建,链表的增加,链表的删除等问题。

所以首先需要熟悉的是链表

 


最近比较忙,先贴上代码吧。

代码链接:https://download.csdn.net/download/qq_36243942/10785641

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言航空订票系统课程设计 的相关文章

  • Arduino:数码管显示原理详解和Proteus仿真实验

    Arduino 数码管显示原理详解和Proteus仿真实验 Proteus仿真 数码管介绍 数码管是半导体发光元件 其基本单元是发光二极管 根据段数 数码管分为七段管和八段管 八段管比七段管还多一个发光二极管单元 小数点多一个 我们将在这个
  • C0232 [2016普及组-A]买铅笔-C语言写

    题目描述 P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物 她发现商店一共有3种包装的铅笔 不同包装内的铅笔数量有可能不同 价格也有可能不同 为了公平起见 P老师决定只买同一种包装的铅笔 商店不允许将铅笔的包装拆开 因此P老师可能需
  • ctfshw (萌新赛)

    目录 萌新记忆 签到题 web 假赛生 0x2f666c6167是 flag得hex编码 用于更改cookie的值 萌新记忆 发现页面都没什么可利用的 尝试访问别的页面 用dirsearch可以扫描出 admin 目录 没错 是扫出目录而不
  • yolov5如何开启和关闭mosaic(马赛克)增强

    总结 将 hyp scratch yaml中的mosaic设置为0 表示关闭马赛克增强
  • 目标检测中的一些评价标准(ACC,Precision,recall,AP,MAP,F1Score,ROC,AUC)

    目标检测中的一些评价标准 ACC Precision recall AP MAP F1Score ROC AUC 介绍这些之前 应该了解一下最基本的TP TN FP FN 先看一下下面这些解释 True positives 简称为TP 即正
  • Qt线程池waitForDone+等待框

    QThreadPool waitForDone 可阻塞线程 采用std function方式将其置于其它线程执行 避免阻塞线程同时可设置等待框 其它线程 生存期 单纯不阻塞线程可以直接不使用waitForDone 一 调用 DlgProce
  • Git技能树(5):分支管理

    Git技能树 5 分支管理 git 分支 几乎所有的版本控制系统都以某种形式支持分支 使用分支意味着你可以把你的工作从开发主线上分离开来 以免影响开发主线 在很多版本控制系统中 这是一个略微低效的过程 常常需要完全创建一个源代码目录的副本
  • 细粒度图像识别算法Mask-CNN 论文笔记

    细粒度图像识别算法Mask CNN 论文笔记 原文 Mask CNN Localizing Parts and Selecting Descriptors for Fine Grained Image Recognition 下载地址 ht
  • ChatGPT 实战:快速了解一个新领域

    前段时间在社区里看到有人在分享 如何用 ChatGPT 麦肯锡方法论洞察一个行业 感觉这个方法在陌生行业的研究上很有帮助 同时我也一直好奇 投资经理在一两周的时间里如何快速了解一个新领域并做出投资决策的 先解决你的第一个疑问 如果你没听过麦
  • 在 Linux 中查找文件的 4 种方式

    Preface 4 种命令方式 locate 系统数据库内部索引 适合找历史数据 全 whereis 所有二进制文件 which 环境变量内的二进制文件 find home type f b c d l name test txt 在哪找什
  • 标准IO函数练习

    一 使用fgets实现计算一个文件有几行 include
  • 数字钟24小时制:Multisim仿真(百度网盘)分享

    图如下 链接 https pan baidu com s 19r3razNjIso 2vYB64FcKA 提取码 vqwx
  • 一文入门Go静态单赋值(SSA)

    在上一篇文章 通过实例理解Go内联优化 1 中 我们探讨了Go编译器在编译中端进行的内联优化 内联优化基于IR中间表示进行 不过Go编译过程不止有一种IR表示 这点和龙书 编译原理 第二版 2 的在第六章 中间代码生成 一开始处的讲解是一致
  • 浪漫七夕

    迢迢牵牛星 皎皎河汉女 这一句古老的诗句 映照着那悠远的星空 千百年来 牛郎织女的爱情传说代代传承 唤起人们对纯真爱情的向往 岁月流转 这段美丽的传说孕育出七夕节 是一个祈福许愿 象征爱情的节日 更是我们中国人专属的情人节 不论是情侣还是夫
  • 基于SSM框架的员工管理系统

    一 视频展示 https www bilibili com video BV1xM4y1K71m 二 基本介绍 1 关键技术 开发工具 IntelliJ IDEA 数据库 MySQL 5 7 前端技术 Jquery Bootstrap JS
  • 7个Facebook营销技巧:让你的产品轻松出圈!

    据统计 当前Facebook的月活跃用户为29 34亿 是全球最为活跃的社交媒体平台 跨境电商卖家利用好这个平台 可以让自己的产品给更多人看到 如果你还不知道怎么才能用好Facebook做营销推广 那就接着往下看吧 加入Facebook群组
  • jQuery将json字符串转换为数组

    简单的jQuery代码片段将JSON字符串转换为对象数组 然后插入其值的输出 var data JQUERY4U DASHBOARD data widgets data parseJSON data each data function i
  • CVPR冠军方案分享

    近日 全球三大计算机视觉顶级会议之一CVPR如期举行 深兰科技DeepBlueAI团队斩获TinyAction Challenge 低分辨率视频行为识别挑战赛 的冠军 TinyAction Challenge是第六届动作识别国际挑战赛系列竞
  • PC市场逆势复苏之路:创新与多元化引领未来

    市场调研机构Canalys数据显示 今年一季度 中国市场整体PC出货量同比下降24 至890万台 已是连续第五个季度下跌 今年截至618结束 都没有一家主要的PC厂商愿意发战报 PC市场怎样走出寒冬 谈谈你的理解和看法 一 2022年下半年

随机推荐

  • hihoCoder_A+B

    A B Problem 描述 求两个整数A B的和 输入 输入包含多组数据 每组数据包含两个整数A 1 A 100 和B 1 B 100 输出 对于每组数据输出A B的和 样例输入 1 2 3 4 5 6 样例输出 3 7 11 inclu
  • Unity鼠标控制3D物体的移动、旋转、缩放

    一 鼠标控制3D物体移动 1 使用协程 using System Collections using System Collections Generic using UnityEngine public class ControlMove
  • 使用OpenSSL做RSA签名验证 支付宝移动快捷支付 的服务器异步通知

    由于业务需要 我们需要使用支付宝移动快捷支付做收款 支付宝给了我们 移动快捷支付应用集成接入包支付接口 见支付宝包 WS SECURE PAY SDK 支付宝给的服务器demo只有Java C PHP三种 而我们服务器端使用的是C 这其中就
  • 建立ftp文件服务器群,2.1.6FTP文件服务器搭建.docx

    文件服务器 FTP 配置说明 FTP安装及基本配置 FileZillaServer软件安装 FileZilla Server的安装相对简单 一路按照默认安装即可 如图1 1至图1 8所示 图1 1 点击 I Agree 图1 2 点击Nex
  • echarts在vue中使用不报错,但是不显示

    没有设置div标签的宽和高 div class charts div charts width 900px height 500px
  • 一些神奇好用的网站

    文章目录 1 ilovepdf 2 Google Scholar 镜像 3 LetPub 4 Connected Papers 5 Overleaf 1 ilovepdf 网址 https www ilovepdf com 功能 PDF文件
  • Mysql如何定位慢查询(面试题)

    Mysql如何定位慢查询 面试题 相关概念 慢查询分析 慢查询工具定位 Arthas Prometheus Skywalking Mysql慢查询日志 相关概念 分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划 还可以
  • 宝尊+艺康 面经

    baozun 研发岗 线下专场面试 宣讲之后现场笔试 笔试都是选择题 不难 38道题 30小题基础知识 比较广 8道推理题 数学推理和图形推理 图形难度大 笔试完之后等叫名字就去和面试官谈话 估计是根据笔试成绩 成绩高的先被叫去 每次面试基
  • TVS的典型应用(图文详解)

    TVS瞬态电压抑制二极管 是一种采用半导体工艺制成的单个PN 结或多个PN结集成的高效型电路保护器件 TVS内部芯片为半导体硅材料 具有很高的可靠性 响应速度快 低动态内阻 低钳位电压 电压精度高 击穿电压一般为 5 的偏差 封装多样化 贴
  • oracle字符集总结

    字符集总结author skatetime 2007 12 4 最近公司的数据库要迁移 所以就此机会总结下字符集的知识 以便自己对字符集更全面 更深入的认识 用了 一小天的时间 我是边测试边写 1 什么是oracle字符集 Oracle字符
  • 分布式事务概述

    1 基础概念 1 1 什么是事务 事务可以看做是一次大的活动 它由不同的小活动组成 这些活动要么全部成功 要么全部失败 1 2 本地事务 在计算机系统中 更多的是通过关系型数据库来控制事务 这是利用数据库本身的事务特性来实现的 因此叫数据库
  • 2022年大厂java高频面试题附带答案解析

    本篇分享的面试题内容主要包括 Java SpringMVC Spring Spring Boot Spring Cloud MyBatis ZooKeeper Dubbo Elasticsearch Redis MySQL RabbitMQ
  • 和枚举类相关的Map类——EnumMap

    1 EnumMap类的简介 EnumMap是一个与枚举类一起使用的Map实现 EnumMap中所有key都必须是单个枚举类的枚举值 创建EnumMap时必须显式或隐式指定它对应的枚举类 EnumMap在内部以数组形式保存 所以这种实现形式非
  • EFFECTIVE C++ (万字详解)(一)

    前言 effective C 是一本经典之作 其翻译较为贴合原著 但读起来未免有些僵硬而让人摸不着头脑 所以 我会以更为贴近中国人的理解 对此书进行一些阐释 条款01 把 C 看成一个语言联邦 C 由几个重要的次语言构成 C语言 区块 语句
  • js获取指定日期所在月份的第一天和最后一天,并遍历

    1 获取月份的第一天和最后一天 获取指定日期所在月份的第一天和最后一天 function getfirstDateAndlastDate dateStr let date new Date dateStr let year date get
  • npm-cli----Cannot find module 'D:\node\nodejs\node_module\bin\npm-cli.js'

    我输入 npm init 报这个错 输入 npm v 想查看npm的版本也是这个错 自己试着全局安装npm cli 还是这个错 反正只要和npm有关的命令通通是这个错 之后就开始我的百度之旅 发现根本就没一个帖子有用 该错还是错 我来说下我
  • 配置虚拟机桥接网络的步骤

    一 先打开虚拟机 然后点击左上角的编辑选项 然后点击虚拟网络编辑器 二 设置成桥接模式 并选择自动模式 然后点击确定 三 然后点击虚拟机内右上角的三个方块的图标 如图所示 四 点击有线连接下的齿轮图标 五 需要手动配置IPv4和IPv6网络
  • 二极管的工作原理,什么是二极管?

    二极管是一种电子器件 具有两不对称电导的电极 故名 二极 只允许电流由单一方向流过 所以最常应用其整流功能 二极管的工作原理 什么是二极管 二极管具有阳极和阴极两个端子 电流只能往单一方向流动 也就是说 电流可以从阳极流向阴极 而不能从阴极
  • 使用php语言开Excel的导入功能

    使用 PHP 语言开发 Excel 导入功能 你需要使用 PHPExcel 库 首先 你需要在你的 PHP 项目中安装 PHPExcel 库 你可以使用 Composer 来安装 如下所示 composer require phpoffic
  • C语言航空订票系统课程设计

    目录 1 设计目的 2总体设计和功能 3 菜单设计 4 各功能代码详解 闲话少扯 4 1 C语言文件的操作 4 2 读取航班信息 C语言知识回顾 4 3 打印航班信息 5 根据要求查找航班 航班号 起点站 终点站 6 订票功能 链表操作 前