飞机票查询

更新时间:2023-02-12 10:58:45 阅读: 评论:0

-

飞机票查询
2023年2月12日发(作者:hiphix车价格)

实验课程名称数据结构课程设计

专业班级10级计科一班

学生姓名孙旭

学号1

指导教师冯韵

2012至2013学年第1学期第八至九周

目录

第1章概述......................................................................................3

第2章设计要求与分析..................................................................3

2.1设计要求................................................................................3

2.2设计分析................................................................................4

2.2.1定义数据类型................................................................4

2.2.2实现排序的个函数说明................................................4

第3章算法实现..............................................................................5

3.1一趟分配算法.......................................................................5

3.2一趟收集算法.......................................................................5

3.3链式基数排序算法.............................................................12

3.4二分查找的函数定义.........................................................13

第4章程序代码............................................................................14

第5章运行与测试........................................................................21

第6章实验反思............................................................................24

参考文献..........................................................................................24

第1章概述

排序和查找是在数据信息处理中使用频度极高的操作。为了加快查找的速度,需要先对

数据记录按关键字排序。当今乘飞机旅行的人越来越多,人们需要关心了解各类航班的班次、

时间、价格及机型等信息。在这个飞机航班数据的信息模型中,航班号是关键字,而且是具

有结构特点的一类关键字。因为航班号是字母数字混变的,例如CZ3869,这种记录集合是

一个适合与多关键字排序的例子。

第2章设计要求与分析

2.1设计要求

该设计要求对飞机航班信息进行排序和查找.可按航班的航班号、起点站、到达站、起

飞时间以及到达时间等信息进行查询。

对于本设计,可采用基数排序法对一组具有结构特点的飞机航班号进行排序,利用二分

查找法对排好序的航班记录按航班号实现快速查找,按其他词关键字的查找可采用最简单的

顺序查找方法进行,因为他们用的较少。

每个航班记录包括八项,分别是:航班号、起点站、终点站、班期、起飞时间、到达时

间、飞机型号以及票价等,假设航班信息表如下表所示:

航班信息表

航班号起点站终点站班期起飞时间到达时间机型票价

CA1544

合肥北京

1.2.4.510

MU5341

上海广州每日

14201615M901280

CZ3869

重庆深圳

2.4.6010

MU3682

桂林南京

2.3.4.6.720502215M901380

HU1836

上海北京每日

250

CZ3528

成都厦门

1.3.4.5.715101650CRJ1060

MU4594

昆明西安

1.3.5.6160

SC7425

青岛海口

1.3.619202120DH41630

其中航班号一项的格式为:

k0k1k3k4k5k6

C3869

其中k0和k1的输入值是航空公司的别称,用两个大写字母表示,后4位为航班表号,这种

航班号关键字可分成两段,即字母和数字。其余七项输入内容因为不涉及本设计的核心,因

此除了票价为数值型外,均定义为字符串型即可。

2.2设计分析

2.2.1定义数据类型

根据设计要求,我们知道设计中所用到的数据记录只有航班信息,因此要定义行管的数

据类型:

Typedefstruct{

Charstart[7];

Charend[7];

Charsche[12];

Chartime1[5];

Chartime2[5];

Charmodel[4];

Intprice;

}InfoType;

Typedefstruct{

KeyTypekeys[keylen];

InfoTypeothers;

Intnext;

}SLNode;

Typedefstruct{

SLNodes1[MaxSpace];

Intkeylen;

Intlength;

}SLList;

为了进行基数排列,需要定义在分配和手机操作使用到的指针数组:

TypedefintArrType_n[10];

TypedefintArrType_.c[26];

2.2.2实现排序的个函数说明

(1)一趟分配函数:

VoidDistribute(SLNode*s1,intI,ArrTypef,ArrTypee);

//本算法是按关键字keys[i]建立RADIX个子集,是同一个子集中记录的keys[i]相同,

//f[0..RADIX]和e[0..RADIX]分别指向各自表中的第一个和最后一个记录

(2)一趟搜集函数:

VoidCollect(SLNode*s1,inti,ArrTypef,ArrTypee);

//本算法是按关键字keys[i]从小到大将[0..RADIX]所指的各子表一次连接成一个链表

(3)链式基数排序函数:

VoidRadixSort(SLList&L);

//本算法是按关键字从低位到高位依次对各关键字进行分配和收集,分两端实现

(4)二分查找函数:

IntBinSerach(SLListL,KeyTypekey[]);

//L为待查找的表,key[]为待查找的关键字,按二分查找的思想实现查找

(5)主控函数:

Voidmain()

{

初始化;

数据输入;

排序处理;

接受查找要求及查找关键字;

查找处理;

输出查找结果;

}

第3章算法实现

3.1一趟分配算法

VoidDistribute(SLNode*s1,intI,ArrTypef,ArrTypee)

{

Intj,p;

For(j=0;j

{//分子表初始化为空表

F[j]=0;

E[j]=0;

}

For(p=s1[0].next;p;p=s1[p].next)

{

J=s1[p].keys[i]%48;

If(!f[j])

F[j]=p;

Else

S1[e[j]].next=p;

E[j]=p;

}

}

3.2一趟收集算法

VoidColect(SLNode*s1,intI,ARRTypef,ArrTypee)

{

Intj,t;

For(j=0;!f[j];j++);

S1[0].next=f[j];t=e[j];

While(j

{

For(j=j+1;j

If(f[j]){s1[t].next=f[j];t=e[j];}

}

S1[t].next=0;

}

//主函数程序

#include

#include

#defineMaxSpace100

#definekeylen6

#defineRADIX_n10

#defineRADIX_c26

#defineSHOW_MSG_ERROR"n错误信息:航班号须由2位大写字母和4位数字组成。n

输入数据错误,程序终止执行!n"

typedefcharKeyType;

typedefstruct{

charstart[6];

charend[6];

charsche[6];

chartime1[6];

chartime2[6];

charmodel[3];

intprice;

}InfoType;

typedefstruct{

KeyTypekeys[keylen];

InfoTypeothers;

intnext;

}SLNode;

typedefstruct{

SLNodesl[MaxSpace];

intkeynum;

intlength;

}SLList;

typedefintArrType_n[RADIX_n];

typedefintArrType_c[RADIX_c];

KeyTypekey[keylen],kl[4];

voidDistribute(SLNode*sl,inti,ArrType_n&f,ArrType_n&e);

voidCollect(SLNode*sl,inti,ArrType_nf,ArrType_ne);

voidDistribute_c(SLNode*sl,inti,ArrType_c&f,ArrType_c&e);

voidCollect_c(SLNode*sl,inti,ArrType_cf,ArrType_ce);

voidRadixSort(SLList&L);

voidArrange(SLList&L);

intBinSearch(SLListL,KeyTypekey[]);

voidSeqSearch(SLListL,KeyTypekey[],inti);

voidDisplayStyle(inti,char*s);

voidDisplay(SLListL,inti);

voidsearchcon(SLListL);

voidPrompt();

boolInputData(SLList&L);

boolCheck_HangBanHao(char*HangBanHao);

voidDistribute(SLNode*sl,inti,ArrType_n&f,ArrType_n&e)

{

intj,p;

for(j=0;j

f[j]=0;

for(p=sl[0].next;p;p=sl[p].next)

{

j=sl[p].keys[i]%48;

if(!f[j])

f[j]=p;

else

sl[e[j]].next=p;

e[j]=p;

}

}

voidCollect(SLNode*sl,ArrType_nf,ArrType_ne)

{

intj,t;

for(j=0;!f[j];j++);

sl[0].next=f[j];

t=e[j];

while(j

{

for(j=j+1;j

if(f[j])

{

sl[t].next=f[j];t=e[j];

}

}

sl[t].next=0;

}

voidDistribute_c(SLNode*sl,inti,ArrType_c&f,ArrType_c&e)

{

intj,p;

for(j=0;j

f[j]=0;

for(p=sl[0].next;p!=0;p=sl[p].next)

{

j=sl[p].keys[i]%65;

if(!f[j])

f[j]=p;

else

sl[e[j]].next=p;

e[j]=p;

}

}

voidCollect_c(SLNode*sl,ArrType_cf,ArrType_ce)

{

intj,t;

for(j=0;!f[j];j++);

sl[0].next=f[j];t=e[j];

while(j

{

for(j=j+1;j

if(f[j])

{

sl[t].next=f[j];t=e[j];

}

}

sl[t].next=0;

}

voidRadixSort(SLList&L)

{

inti;

ArrType_nfn,en;

ArrType_cfc,ec;

for(i=0;i<;i++)

[i].next=i+1;

[].next=0;

for(i=-1;i>=2;i--)

{

Distribute(,i,fn,en);

Collect(,fn,en);

}

for(i=1;i>=0;i--)

{

Distribute_c(,i,fc,ec);

Collect_c(,fc,ec);

}

}

voidArrange(SLList&L)

{

intp,q,i;

SLNodetemp;

p=[0].next;

for(i=1;i<;i++)

{

while(p

p=[p].next;

q=[p].next;

if(p!=i)

{

temp=[p];[p]=[i];[i]=temp;

[i].next=p;

}

p=q;

}

}

intBinSearch(SLListL,KeyTypekey[])

{intlow,high,mid;

low=1;high=;

while(low<=high){

mid=(low+high)/2;

if(strcmp(key,[mid].keys)==0)

returnmid;

elseif(strcmp(key,[mid].keys)<0)

high=mid-1;

elselow=mid+1;

}

return0;

}

voidSeqSearch(SLListL,KeyTypekey[],inti)

{intj,k,m=0;

for(j=1;j<=;j++)

{

switch(i){

case2:k=strcmp(key,[j].);break;

case3:k=strcmp(key,[j].);break;

case4:k=strcmp(key,[j].1);break;

case5:k=strcmp(key,[j].2);break;

}

if(k==0)

{

m=1;

Display(L,j);

}

}

if(m==0)

printf("很抱歉,无此航班信息。n");

}

voidDisplay(SLListL,inti)

{

printf("航班号起点站终点站航班期起飞时间到达时间机型票价n");

DisplayStyle(6,[i].keys);DisplayStyle(7,[i].);

DisplayStyle(7,[i].);DisplayStyle(7,[i].);

DisplayStyle(9,[i].1);DisplayStyle(9,[i].2);

DisplayStyle(5,[i].);printf("%6dn",[i].);

printf("n");

}

voidDisplayStyle(inti,char*s)

{

intj;

i-=strlen(s);

for(j=0;j

printf("");

printf("%s,",s);

}

voidsearchcon(SLListL)

{

inti=1,k;

while(i>=1&&i<=5){

printf("n请选择命令代号(0----5):");

scanf("%d",&i);

switch(i){

case1:printf("输入要查询的航班号(字母要大写):");

scanf("%s",key);k=BinSearch(L,key);

if(k)

Display(L,k);

else

printf("很抱歉,无此航班信息。n");

break;

case2:printf("输入要查询的航班起点站名:");

scanf("%s",key);SeqSearch(L,key,i);

break;

case3:printf("输入要查询的航班终点站名:");

scanf("%s",key);SeqSearch(L,key,i);

break;

case4:printf("输入要查询的航班起飞时间:");

scanf("%s",kl);SeqSearch(L,kl,i);

break;

case5:printf("输入要查询的航班到达时间:");

scanf("%s",kl);SeqSearch(L,kl,i);

break;

case0:printf("再见!n");

return;

}

Prompt();

}

}

voidPrompt()

{

printf("***************************************************n");

printf("*航班信息查询与检索系统*n");

printf("***************************************************n");

printf("*1.按航班号查询*n");

printf("*2.按起点站查询*n");

printf("*3.按终点站查询*n");

printf("*4.按起飞时间查询*n");

printf("*5.按到达时间查询*n");

printf("*0.退出系统*n");

printf("***************************************************n");

}

boolInputData(SLList&L)

{

inti=++;

charyn='y';

printf("n请依次录入航班信息数据(航班号由2位大写字母和4位数字组成):");

do

{

printf("n航班号起点站终点站航班期起飞时间到达时间机型票价

n");

scanf("%s%s%s%s%s%s%s%d",[i].keys,[i].,

[i].,[i].,[i].1,

[i].2,[i].,&[i].);

fflush(stdin);

if(!Check_HangBanHao([i].keys))

returnfalse;

++i;

printf("继续输入吗?y/n:");

scanf("%c",yn);

}

while(yn=='y'||yn=='Y');

printf("n");

=i-1;

RadixSort(L);

Arrange(L);

returntrue;

}

boolCheck_HangBanHao(char*HangBanHao)

{

if(strlen(HangBanHao)!=6)

returnfalse;

elseif(HangBanHao[0]<'A'||HangBanHao[0]>'Z'

||HangBanHao[1]<'A'||HangBanHao[1]>'Z')

returnfalse;

for(inti=2;i<=5;i++)

{

if(HangBanHao[i]<'0'||HangBanHao[i]>'9')

returnfalse;

}

returntrue;

}

intmain()

{

SLListL;

=6;=0;

Prompt();

if(!InputData(L))

{

printf(SHOW_MSG_ERROR);

return1;

}

searchcon(L);

return0;

}

3.3链式基数排序算法

VoidRadixSort(SLList&L)

{

ArrType_nfn,en;

ArrType_cfc,en;

For(i=0;k<;i++)

L.s1[i].next=i+1;

L.s1[h].next=0;

For(i=-1;i>=2;i--)

{//需分为两段完成,因为自负的那个分关键字要单独做

Distribute_n(L.s1,i,fn,en);

Collect_n(L.s1,i,fn,en);

}

For(i=1;i>=0;i--)

{

Distribute_c(L.s1,i,fc,ec);

Collect_c(L.s1,i,fc,ec);

}

}//RadixSort

//按指针链整理链表

VoidArrange(SLList&L)

{

p=L.s1[0].next;

For(i=1;i<;i++)

{

While(p

//找到第i个记录,并用p指示其在L中的当前位置

Q=L.s1[p].next;

If(p!=i)

{

Temp=L.s1[p];L.s1[p]=L.s1[i];L.s1[i]=temp;

L.s1[i].next=p;

}

P=q;

}

}//AArrange

3.4二分查找的函数定义

IntBinSearch(SLListL,KeysTypekey[])

{

While(low<=high){

Mid=(low+high)/2;

If(strcmp(key,L.s1[mid].keys)==0)

Returnmid;

Elselow=mid+1;

}

Return0;

}//BinSearch

第4章程序代码

#include

#include

/*宏定义*/

#defineMaxSpace100

#definekeylen6

#defineRADIX_n10

#defineRADIX_c26

#defineSHOW_MSG_ERROR"n错误信息:航班号须由2位大写字母和4位数字组成。n

输入数据错误,程序终止执行!n"

typedefcharKeyType;

/*航班记录数据结构描述*/

typedefstruct{

charstart[6];//起点

charend[6];//终点

charsche[6];//班期

chartime1[6];//起飞时间

chartime2[6];//到达时间

charmodel[3];//机型

intprice;//票价

}InfoType;

/*静态链表结点类型*/

typedefstruct{

KeyTypekeys[keylen];//关键字(航班号)

InfoTypeothers;

intnext;

}SLNode;

/*静态链表类型*/

typedefstruct{

SLNodesl[MaxSpace];//静态链表

intkeynum;//关键字字符数

intlength;//表长

}SLList;

typedefintArrType_n[RADIX_n];//数字字符

typedefintArrType_c[RADIX_c];//字母字符

KeyTypekey[keylen],kl[4];

/*功能函数声明*/

voidDistribute(SLNode*sl,inti,ArrType_n&f,ArrType_n&e);

voidCollect(SLNode*sl,inti,ArrType_nf,ArrType_ne);

voidDistribute_c(SLNode*sl,inti,ArrType_c&f,ArrType_c&e);

voidCollect_c(SLNode*sl,inti,ArrType_cf,ArrType_ce);

voidRadixSort(SLList&L);

voidArrange(SLList&L);

intBinSearch(SLListL,KeyTypekey[]);

voidSeqSearch(SLListL,KeyTypekey[],inti);

voidDisplayStyle(inti,char*s);

voidDisplay(SLListL,inti);

voidsearchcon(SLListL);

voidPrompt();

boolInputData(SLList&L);

boolCheck_HangBanHao(char*HangBanHao);

/*1.数字字符分配函数*/

voidDistribute(SLNode*sl,inti,ArrType_n&f,ArrType_n&e)

{

intj,p;

for(j=0;j

f[j]=0;

for(p=sl[0].next;p;p=sl[p].next)

{

j=sl[p].keys[i]%48;//将数字字符映射为十进制数字

if(!f[j])

f[j]=p;

else//将p指向的结点插入到第j个子表中

sl[e[j]].next=p;

e[j]=p;

}

}

/*2.数字字符收集函数*/

voidCollect(SLNode*sl,ArrType_nf,ArrType_ne)

{

intj,t;

for(j=0;!f[j];j++);//找第一个非空子表

sl[0].next=f[j];//将sl[0].next指向第一个非空子表的第一个结点

t=e[j];

while(j

{

for(j=j+1;j

if(f[j])

{

sl[t].next=f[j];t=e[j];//链接到主链表

}

}

sl[t].next=0;

}

/*3.字母字符分配函数*/

voidDistribute_c(SLNode*sl,inti,ArrType_c&f,ArrType_c&e)

{

intj,p;

for(j=0;j

f[j]=0;

for(p=sl[0].next;p!=0;p=sl[p].next)

{

j=sl[p].keys[i]%65;//将字母字符映射为字母集中的相应序号

if(!f[j])

f[j]=p;

else//将p指向的结点插入到第j个子表中

sl[e[j]].next=p;

e[j]=p;

}

}

/*4.字母字符收集函数*/

voidCollect_c(SLNode*sl,ArrType_cf,ArrType_ce)

{

intj,t;

for(j=0;!f[j];j++);//找第一个非空子表

sl[0].next=f[j];t=e[j];//将sl[0].next指向第一个非空子表的第一个结点

while(j

{

for(j=j+1;j

if(f[j])

{

sl[t].next=f[j];t=e[j];//链接到主链表

}

}

sl[t].next=0;

}

/*5.链式基数排序函数*/

voidRadixSort(SLList&L)

{

inti;

ArrType_nfn,en;

ArrType_cfc,ec;

for(i=0;i<;i++)//将线性表改造为静态链表

[i].next=i+1;

[].next=0;//"0"表示空指针

//按最低位优先依次对各关键字进行分配和收集

for(i=-1;i>=2;i--)//对低四位数字部分进行分配和收集

{

Distribute(,i,fn,en);

Collect(,fn,en);

}

for(i=1;i>=0;i--)//对高位的2位字母进行分配和收集

{

Distribute_c(,i,fc,ec);

Collect_c(,fc,ec);

}

}

/*6.按指针链整理线性表*/

voidArrange(SLList&L)

{

intp,q,i;

SLNodetemp;

p=[0].next;//p指向第一个结点

for(i=1;i<;i++)

{

while(p

p=[p].next;

q=[p].next;

if(p!=i)//若第i个结点不在当前位置,交换结点数据

{

temp=[p];[p]=[i];[i]=temp;

[i].next=p;

}

p=q;//p指向下一个未调整结点

}

}

/*7.二分查找函数*/

intBinSearch(SLListL,KeyTypekey[])

{intlow,high,mid;

low=1;high=;

while(low<=high){

mid=(low+high)/2;

if(strcmp(key,[mid].keys)==0)

returnmid;

elseif(strcmp(key,[mid].keys)<0)

high=mid-1;

elselow=mid+1;

}

return0;

}

/*8.顺序查找函数*/

voidSeqSearch(SLListL,KeyTypekey[],inti)

{intj,k,m=0;

for(j=1;j<=;j++)

{

switch(i){

case2:k=strcmp(key,[j].);break;

case3:k=strcmp(key,[j].);break;

case4:k=strcmp(key,[j].1);break;

case5:k=strcmp(key,[j].2);break;

}

if(k==0)

{

m=1;

Display(L,j);

}

}

if(m==0)

printf("很抱歉,无此航班信息。n");

}

/*9.打印班次信息函数*/

voidDisplay(SLListL,inti)

{

printf("航班号起点站终点站航班期起飞时间到达时间机型票价n");

DisplayStyle(6,[i].keys);DisplayStyle(7,[i].);

DisplayStyle(7,[i].);DisplayStyle(7,[i].);

DisplayStyle(9,[i].1);DisplayStyle(9,[i].2);

DisplayStyle(5,[i].);printf("%6dn",[i].);

printf("n");

}

/*10.调整对齐格式函数*/

voidDisplayStyle(inti,char*s)

{

intj;

i-=strlen(s);

for(j=0;j

printf("");

printf("%s,",s);

}

/*11.交互界面函数*/

voidsearchcon(SLListL)

{

inti=1,k;

while(i>=1&&i<=5){

printf("n请选择命令代号(0----5):");

scanf("%d",&i);

switch(i){

case1:printf("输入要查询的航班号(字母要大写):");

scanf("%s",key);k=BinSearch(L,key);

if(k)

Display(L,k);

else

printf("很抱歉,无此航班信息。n");

break;

case2:printf("输入要查询的航班起点站名:");

scanf("%s",key);SeqSearch(L,key,i);

break;

case3:printf("输入要查询的航班终点站名:");

scanf("%s",key);SeqSearch(L,key,i);

break;

case4:printf("输入要查询的航班起飞时间:");

scanf("%s",kl);SeqSearch(L,kl,i);

break;

case5:printf("输入要查询的航班到达时间:");

scanf("%s",kl);SeqSearch(L,kl,i);

break;

case0:printf("再见!n");

return;

}

Prompt();//循环显示主菜单

}

}

/*12.显示主菜单*/

voidPrompt()

{

printf("***************************************************n");

printf("*航班信息查询与检索系统*n");

printf("***************************************************n");

printf("*1.按航班号查询*n");

printf("*2.按起点站查询*n");

printf("*3.按终点站查询*n");

printf("*4.按起飞时间查询*n");

printf("*5.按到达时间查询*n");

printf("*0.退出系统*n");

printf("***************************************************n");

}

/*13.输入航班记录函数*/

boolInputData(SLList&L)

{

inti=++;

charyn='y';

printf("n请依次录入航班信息数据(航班号由2位大写字母和4位数字组成):");

do

{

printf("n航班号起点站终点站航班期起飞时间到达时间机型票价

n");

scanf("%s%s%s%s%s%s%s%d",[i].keys,[i].,

[i].,[i].,[i].1,

[i].2,[i].,&[i].);

fflush(stdin);//清空输入缓冲区

if(!Check_HangBanHao([i].keys))

returnfalse;

++i;

printf("继续输入吗?y/n:");

scanf("%c",&yn);

}

while(yn=='y'||yn=='Y');

printf("n");

=i-1;

RadixSort(L);

Arrange(L);

return(true);

}

/*14.航班号输入效验*/

boolCheck_HangBanHao(char*HangBanHao)

{

//必须为6位

if(strlen(HangBanHao)!=6)

returnfalse;

//1-2位须为大写字母

elseif(HangBanHao[0]<'A'||HangBanHao[0]>'Z'

||HangBanHao[1]<'A'||HangBanHao[1]>'Z')

returnfalse;

//3-6位须为数字

for(inti=2;i<=5;i++)

{

if(HangBanHao[i]<'0'||HangBanHao[i]>'9')

returnfalse;

}

returntrue;

}

/*15.主函数*/

intmain()

{

SLListL;

=6;=0;//初始化

Prompt();//显示界面

if(!InputData(L))//信息录入,并作输入效验

{

printf(SHOW_MSG_ERROR);

return1;

}

searchcon(L);//执行相关查询

return0;

}

第5章运行与测试

按要求依次输入要查询的信息:

(1)先输入航班信息

例如:

CA1544

合肥北京

1.2.4.510

(2)输入选择要怎样查询

输入1,查询航班号

输入2,查询起点站

输入3,查询终点站

输入4,查询起飞时间

输入5,查询到达时间

输入0,退出系

第6章实验反思

本设计的重点和难点是在于对航班数据的排序和查找,以链式基数排序为主线,用到

了二分查找和顺序查找等知识,还有建立静态链表等。通过这次课程设计,使我对C语言

编程有了新的认识。以前编程只是注重如何编写函数能够完成所需要的功能,只是凭单纯的

意识和简单的语句来堆砌出一段程序。但现在编程感觉完全不同了。在编写一个程序之前,

自己能够综合考虑各种因素,选取自己需要的数据结构,在编写每一个函数之前,可以仔细

斟酌比对,挑选出最适合当前状况的算法。这样,即使在完整的程序还没有写出来之前,自

己心中已经有了明确的原图了。这样无形中就提高了自己编写的程序的质量。另外,我还体

会到深刻理解数据结构的重要性。只有真正理解这样定义数据类型的好处,才能用好这样一

种数据结构。了解典型数据结构的性质是非常有用的,它往往是编写程序的关键。

参考文献

《数据结构课程设计》苏仕华等编著

《数据结构(C语言版)》严蔚敏吴伟民编著

本文发布于:2023-02-12 10:58:45,感谢您对本站的认可!

本文链接:http://www.yoguilin.com/write/167617072521682.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:返回列表
下一篇:返回列表
标签:飞机票查询
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
  • 飞机票查询
    -2023年2月12日发(作者:hiphix车价格)实验课程名称数据结构课程设计专业班级10级计科一班学生姓名孙旭学号1指导教师冯韵2012至2013学年第1学期第八至九周目录第1章概述......................................................................................3第2章设计要求与分析..........
Copyright ©2019-2022 Comsenz Inc.Powered by ©