版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第C語言實(shí)現(xiàn)通訊錄功能的流程與代碼用C語言制作一個(gè)擁有添加,刪除,查找,修改,排序,清空,打印功能的通訊錄
用分模塊的方法來實(shí)現(xiàn)這個(gè)通訊錄,函數(shù)的聲明,類型的聲明放在一個(gè).h文件中,函數(shù)的實(shí)現(xiàn)放在一個(gè).c文件中,在主文件中來調(diào)用函數(shù)。
首先創(chuàng)建一個(gè)test.c文件用來測(cè)試并且實(shí)現(xiàn)通訊錄的功能
通訊錄需要顯示一個(gè)菜單來讓用戶具體選擇哪個(gè)功能,那么在test.c文件中就需要打印出來一個(gè)菜單,如下代碼:
#includestdio.h
voidmenu()
printf("***********************************\n");
printf("******1.add2.del******\n");
printf("******3.search4.modify******\n");
printf("******5.sort6.empty******\n");
printf("******7.print0.exit******\n");
printf("***********************************\n");
intmain()
//通訊錄:1.add2.del3.search4,modify5.sort6.empty7.print0.exit
menu();
}while(0);
return0;
}
接著就要讓用戶選擇輸入某個(gè)數(shù)組來使用通訊錄的功能,這時(shí)就可以用一個(gè)switch開關(guān)來實(shí)現(xiàn)了,如下代碼:
intinput=0;
menu();
printf("請(qǐng)選擇功能
scanf("%d",input);
switch(input)
case1:
break;
case2:
break;
case3:
break;
case4:
break;
case5:
break;
case6:
break;
case7:
break;
case0:
break;
default:
printf("請(qǐng)重新輸入\n");
break;
}while(input);
在while循環(huán)的條件判斷部分直接寫input,這樣選擇輸入0的時(shí)候就直接跳出循環(huán)了,輸入其他數(shù)字可以繼續(xù)使用通訊錄的功能。
case后面跟著的都是數(shù)字,有時(shí)候調(diào)試代碼的時(shí)候比較容易忘記這個(gè)數(shù)字表示的是什么意思,所以這個(gè)時(shí)候可以用創(chuàng)建一個(gè)枚舉類型來定義對(duì)應(yīng)的枚舉常量。
創(chuàng)建一個(gè)contact.h文件來放類型的定義,函數(shù)的聲明。
然后把枚舉類型在里面進(jìn)行聲明
enuminput
Exit,
add,
sub,
search,
modify,
sort,
empty,
};
之后要在主文件中調(diào)用這個(gè)頭文件
#include"contact.h"
同時(shí)可以把#includestdio.h這些庫(kù)函數(shù)的引用都放到contact.h這個(gè)文件當(dāng)中,這樣要引用新的庫(kù)函數(shù)時(shí)只需要在contact.h這個(gè)文件中添加就可以了。
這樣switch開關(guān)中的代碼就可以改成這樣了:
switch(input)
caseadd:
break;
casesub:
break;
casesearch:
break;
casemodify:
break;
casesort:
break;
caseempty:
break;
caseprint:
break;
caseExit:
break;
}
然后開始用函數(shù)去實(shí)現(xiàn)每一個(gè)函數(shù)的功能,首先是添加功能,在添加之前,還得需要一個(gè)空的通訊錄,來存放添加進(jìn)去的通訊人的數(shù)據(jù),而通訊人的數(shù)據(jù)有姓名,年齡,性別,電話號(hào)碼,地址這些數(shù)據(jù),都是一些不同類型的值,這時(shí)可以聲明一個(gè)結(jié)構(gòu)體類型來包含這些成員
好,切到contact.h文件來聲明一個(gè)結(jié)構(gòu)體類型:
typedefstructPeople
charname[20];
intage;
charsex[5];
charphone[20];
charaddress[30];
}People;
同時(shí)還對(duì)這個(gè)類型重命名了一下,方便后續(xù)使用這個(gè)結(jié)構(gòu)體類型,這是需要考慮到通訊錄存放數(shù)據(jù)多少的問題,如果address里面存放的內(nèi)容放不下了,這是就需要對(duì)數(shù)組的大小進(jìn)行更改,那這時(shí)就要先找到這個(gè)結(jié)構(gòu)體類型才能更改了,如果代碼寫的比較多的話就會(huì)比較亂,所以可以用#define定義的標(biāo)識(shí)符常量來定義這些值,以后要改的話就只需要找到#define就可以了
如下代碼:
#defineNameMax20
#defineSexMax5
#definePhoneMax20
#defineAddressMax30
typedefstructPeople
charname[NameMax];
intage;
charsex[SexMax];
charphone[PhoneMax];
charaddress[AddressMax];
}People;
因?yàn)檫@里是不同類型的值的定義,所以用#define來定義而不用枚舉類型來定義,因?yàn)槊杜e類型是用來列舉相同類型的值的,比如前面的通訊錄功能都是屬于通訊錄的功能一類的值
下一步,通訊錄不只存放一個(gè)人的數(shù)據(jù),所以需要用這個(gè)結(jié)構(gòu)體類型來創(chuàng)建一個(gè)數(shù)組,假設(shè)這個(gè)通訊錄可以存放1000個(gè)人的數(shù)據(jù),同時(shí)還能記錄其中已存放了多少個(gè)人
那么可以在主函數(shù)中這么寫:
intmain()
//通訊錄:1.add2.del3.search4,modify5.sort6.empty7.print0.exit
Peoplecontact[1000];
intnum;
對(duì)于這個(gè)通訊錄和這個(gè)通訊人的數(shù)量,這兩個(gè)變量可以兩者之間是由聯(lián)系的,那么此時(shí)就可以再聲明一個(gè)結(jié)構(gòu)體類型來包含這兩個(gè)成員。
切到contact.h文件:
typedefstructContact
Peoplepeople[1000];
intnum;
}Contact;
聲明好這個(gè)通訊錄類型之后,需要在主文件中用這個(gè)類型創(chuàng)建一個(gè)變量,同時(shí)對(duì)變量的內(nèi)容進(jìn)行初始化
intmain()
//通訊錄:1.add2.del3.search4,modify5.sort6.empty7.print0.exit
Contactcontact;
InitialContact(contact);
切到contact.h文件聲明函數(shù):
//函數(shù)的聲明
//通訊錄初始化
voidInitialContact(Contact*pc);
此時(shí)創(chuàng)建一個(gè)contact.c文件來實(shí)現(xiàn)函數(shù)的內(nèi)容:
切到contact.c文件:
#include"contact.h"
voidInitialContact(Contact*pc)
memset(pc,0,sizeof(*pc));
}
要記得引這個(gè)contact.h頭文件
在對(duì)通訊錄的內(nèi)容進(jìn)行完初始化之后,可以開始往里面添加通訊人的信息了,再聲明一個(gè)函數(shù):
test.c:
caseadd:
printf("添加通訊人\n");
AddPeople(contact);
break;
contact.h:
//添加通訊人
voidAddPeople(Contact*pc);
contact.c:
voidAddPeople(Contact*pc)
if(pc-num==1000)
printf("通訊錄已滿\n");
return;
printf("請(qǐng)輸入姓名
scanf("%s",pc-people[pc-num].name);
printf("請(qǐng)輸入年齡
scanf("%d",pc-people[pc-num].age);
printf("請(qǐng)輸入性別
scanf("%s",pc-people[pc-num].sex);
printf("請(qǐng)輸入電話
scanf("%s",pc-people[pc-num].phone);
printf("請(qǐng)輸入地址
scanf("%s",pc-people[pc-num].address);
pc-num++;
}
輸入完成之后,要記得讓通訊人數(shù)量+1
接下來可以嘗試顯示一下通訊錄中的通訊人信息了
contact.h:
//顯示通訊人信息
voidPrintContact(constContact*pc);
contact.c:
voidPrintContact(constContact*pc)
printf("%-20s%-20s%-20s%-20s%-20s\n","姓名","年齡","性別","電話","地址");
inti=0;
for(i=0;ipc-i++)
printf("%-20s%-20d%-20s%-20s%-20s\n",pc-people[i].name,pc-people[i].age,pc-people[i].sex,pc-people[i].phone,pc-people[i].address);
}
在前面打印個(gè)通訊人列表修飾一下
test.c:
caseprint:
printf("顯示通訊人信息\n");
PrintContact(contact);
break;
接下來,開始實(shí)現(xiàn)通訊錄的刪除功能:
可以通過讓用戶輸入某個(gè)人的名字來刪除這個(gè)人在通訊錄中的信息,刪除功能的實(shí)現(xiàn)分為兩步,第一步,是需要找到這個(gè)人,第二步,刪除這個(gè)人在通訊錄中的信息
contact.h:
//刪除通訊人信息
voidSubPeople(Contact*pc);
contact.c:
intFindByName(Contact*pc,constchar*name)
//遍歷每一個(gè)contact結(jié)構(gòu)體中people數(shù)組成員中的已存放數(shù)據(jù)的每一個(gè)結(jié)構(gòu)體
inti=0;
for(i=0;isizeof(pc-num);i++)
if(strcmp(pc-people[i].name,name)==0)
returni;//找到了返回對(duì)應(yīng)結(jié)構(gòu)體的下標(biāo)
return-1;//找不到就返回-1
voidSubPeople(Contact*pc)
if(pc-num==0)//先判斷通訊錄中有無存儲(chǔ)信息
printf("通訊錄已清空\(chéng)n");
return;
//1.找到
printf("請(qǐng)輸入要?jiǎng)h除的人的姓名;
charname[NameMax];
scanf("%s",name);
intret=FindByName(pc,name);//用以接收放回的數(shù)組下標(biāo)
if(ret==-1)
printf("找不到要?jiǎng)h除的人\n");
return;//讓函數(shù)直接返回
//2.刪除
//從找到的那個(gè)下標(biāo)位置開始,后面的數(shù)組元素(通訊人結(jié)構(gòu)體)依次往前賦值
intj=0;
for(j=ret;jpc-num-1;j++)
pc-people[j]=pc-people[j+1];
printf("刪除成功\n");
pc-num--;//通訊人數(shù)量-1
}
test.c:
casesub:
SubPeople(contact);
break;
每完成一個(gè)功能,都要去嘗試運(yùn)行一下,看有沒有bug,否則最后才去找bug可能會(huì)比較麻煩。
在刪除功能中,用到了一個(gè)自己寫的FindByName函數(shù),然后在接下來的通訊錄查找功能實(shí)現(xiàn)中,同樣也要依賴這個(gè)函數(shù),不僅如此,在通訊錄修改功能中,也要用到這個(gè)函數(shù),而這個(gè)函數(shù)的實(shí)現(xiàn)是為了刪除、查找和修改功能而聲明的,所以可以不用寫在contact.h頭文件中進(jìn)行聲明。
下面,來開始實(shí)現(xiàn)查找功能:
contact.h:
//查找通訊人
voidSearchPeople(constContact*pc);
contact.c:
voidSearchPeople(constContact*pc)
//查找
printf("請(qǐng)輸入要查找的人的姓名;
charname[NameMax];
scanf("%s",name);
intret=FindByName(pc,name);//用以接收放回的數(shù)組下標(biāo)
if(ret==-1)
printf("找不到要查找的人\n");
return;//讓函數(shù)直接返回
//顯示
printf("%-20s%-20s%-20s%-20s%-20s\n","姓名","年齡","性別","電話","地址");
printf("%-20s%-20d%-20s%-20s%-20s\n",pc-people[ret].name,pc-people[ret].age,pc-people[ret].sex,pc-people[ret].phone,pc-people[ret].address);
}
test.c:
casesearch:
SearchPeople(contact);
break;
查找功能已經(jīng)實(shí)現(xiàn)了,接下來就要實(shí)現(xiàn)修改功能了,先通過通訊人的姓名找到需要修改的結(jié)構(gòu)體對(duì)應(yīng)的下標(biāo),然后重新對(duì)這個(gè)結(jié)構(gòu)體進(jìn)行賦值就可以了
contact.h:
//修改通訊人信息
voidModifyPeople(Contact*pc);
contact.c:
voidModifyPeople(Contact*pc)
//查找
printf("請(qǐng)輸入要修改的人的姓名;
charname[NameMax];
scanf("%s",name);
intret=FindByName(pc,name);//用以接收放回的數(shù)組下標(biāo)
if(ret==-1)
printf("找不到要修改的人\n");
return;//讓函數(shù)直接返回
//修改
printf("請(qǐng)輸入要修改的姓名
scanf("%s",pc-people[ret].name);
printf("請(qǐng)輸入要修改的年齡
scanf("%d",pc-people[ret].age);
printf("請(qǐng)輸入要修改的性別
scanf("%s",pc-people[ret].sex);
printf("請(qǐng)輸入要修改的電話
scanf("%s",pc-people[ret].phone);
printf("請(qǐng)輸入要修改的地址
scanf("%s",pc-people[ret].address);
}
test.c:
casemodify:
ModifyPeople(contact);
break;
接下來可以開始實(shí)習(xí)通訊錄的排序功能了,這里就按照年齡來進(jìn)行一個(gè)排序,用到qsort這個(gè)函數(shù),其中cmp函數(shù)需要自己去寫
contact.h:
//排序
voidSortByAge(Contact*pc);
contact.c:
intcmp(constvoid*e1,constvoid*e2)
Contact*p1=(Contact*)e1;
Contact*p2=(Contact*)e2;
if(p1-people[0].agep2-people[1].age)
return1;
elseif(p1-people[0].agep2-people[1].age)
return-1;
else
return0;
voidSortByAge(Contact*pc)
if(pc-num==0)
printf("通訊錄已清空\(chéng)n");
return;
intnum=pc-
intwidth=sizeof(pc-people[0]);
qsort(pc-people,num,width,cmp);
}
test.c:
casesort:
printf("按照年齡排序\n");
SortByAge(contact);
PrintContact(contact);
break;
到這里通訊錄的功能就只剩下清空了,可以用到一開始的初始化函數(shù)InitialContact
test.c:
caseempty:
printf("清空通訊錄\n");
InitialContact(contact);
break;
現(xiàn)在通訊錄的功能已經(jīng)全部實(shí)現(xiàn)了
可是這個(gè)通訊錄的功能還是有點(diǎn)不太好,就是通訊錄默認(rèn)的大小就是存放1000個(gè)人的數(shù)據(jù),那么能不能創(chuàng)建一個(gè)可以隨著添加人數(shù)的增加而變大的通訊錄呢?鑒于最近學(xué)習(xí)了動(dòng)態(tài)內(nèi)存管理,所以對(duì)通訊錄的功能做出了一點(diǎn)改進(jìn)
對(duì)結(jié)構(gòu)體類型的修改:
contact.h
typedefstructContact
People*people;
intnum;
intcapacity;//通訊錄的容量
}Contact;
contact.c:
對(duì)InitialContact函數(shù)的修改:
voidInitialContact(Contact*pc)
pc-people=(People*)calloc(3,sizeof(People));
if(pc-people==NULL)
perror("calloc");
return;
pc-num=0;
pc-capacity=3;
}
對(duì)AddPeople函數(shù)的修改:
voidAddPeople(Contact*pc)
if(pc-num==pc-capacity)
pc-people=realloc(pc-people,(pc-capacity+2)*sizeof(People));
if(pc-people==NULL)
perror("realloc");
return;
pc-capacity+=2;
printf("請(qǐng)輸入姓名
scanf("%s",pc-people[pc-num].name);
printf("請(qǐng)輸入年齡
scanf("%d",pc-people[pc-num].age);
printf("請(qǐng)輸入性別
scanf("%s",pc-people[pc-num].sex);
printf("請(qǐng)輸入電話
scanf("%s",pc-people[pc-num].phone);
printf("請(qǐng)輸入地址
scanf("%s",pc-people[pc-num].address);
pc-num++;
}
對(duì)排序函數(shù)中cmp函數(shù)的修改:
intcmp(constvoid*e1,constvoid*e2)
People*p1=(People*)e1;
People*p2=(People*)e2;
if(p1-agep2-age)
return1;
elseif(p1-agep2-age)
return-1;
else
return0;
}
test.c:
部分修改:
caseempty:
printf("清空通訊錄\n");
FreeContact(contact);
break;
caseExit:
FreeContact(contact);
break;
如下是完整的代碼:
contact.h:
#includestdio.h
#includestring.h
#includestdlib.h
#includectype.h
//類型的聲明
#defineNameMax20
#defineSexMax5
#definePhoneMax20
#defineAddressMax30
enuminput
Exit,
add,
sub,
search,
modify,
sort,
empty,
typedefstructPeople
charname[NameMax];
intage;
charsex[SexMax];
charphone[PhoneMax];
charaddress[AddressMax];
}People;
typedefstructContact
People*people;
intnum;
intcapacity;//通訊錄的容量
}Contact;
//函數(shù)的聲明
//通訊錄初始化
voidInitialContact(Contact*pc);
//添加通訊人
voidAddPeople(Contact*pc);
//顯示通訊人信息
voidPrintContact(constContact*pc);
//刪除通訊人信息
voidSubPeople(Contact*pc);
//查找通訊人
voidSearchPeople(constContact*pc);
//修改通訊人信息
voidModifyPeople(Contact*pc);
voidSortByAge(Contact*pc);
//銷毀通訊錄
voidFreeContact(Contact*pc);
contact.c:
#include"contact.h"
voidInitialContact(Contact*pc)
pc-people=(People*)calloc(3,sizeof(People));
if(pc-people==NULL)
perror("calloc");
return;
pc-num=0;
pc-capacity=3;
voidAddPeople(Contact*pc)
if(pc-num==pc-capacity)
pc-people=realloc(pc-people,(pc-capacity+2)*sizeof(People));
if(pc-people==NULL)
perror("realloc");
return;
pc-capacity+=2;
printf("請(qǐng)輸入姓名
scanf("%s",pc-people[pc-num].name);
printf("請(qǐng)輸入年齡
scanf("%d",pc-people[pc-num].age);
printf("請(qǐng)輸入性別
scanf("%s",pc-people[pc-num].sex);
printf("請(qǐng)輸入電話
scanf("%s",pc-people[pc-num].phone);
printf("請(qǐng)輸入地址
scanf("%s",pc-people[pc-num].address);
pc-num++;
voidPrintContact(constContact*pc)
printf("%-20s%-20s%-20s%-20s%-20s\n","姓名","年齡","性別","電話","地址");
inti=0;
for(i=0;ipc-i++)
printf("%-20s%-20d%-20s%-20s%-20s\n",pc-people[i].name,pc-people[i].age,pc-people[i].sex,pc-people[i].phone,pc-people[i].address);
intFindByName(Contact*pc,constchar*name)
//遍歷每一個(gè)contact結(jié)構(gòu)體中people數(shù)組成員中的已存放數(shù)據(jù)的每一個(gè)結(jié)構(gòu)體
inti=0;
for(i=0;isizeof(pc-num);i++)
if(strcmp(pc-people[i].name,name)==0)
returni;//找到了返回對(duì)應(yīng)結(jié)構(gòu)體的下標(biāo)
return-1;//找不到就返回-1
voidSubPeople(Contact*pc)
if(pc-num==0)//先判斷通訊錄中有無存儲(chǔ)信息
printf("通訊錄已清空\(chéng)n");
return;
//1.找到
printf("請(qǐng)輸入要?jiǎng)h除的人的姓名;
charname[NameMax];
scanf("%s",name);
intret=FindByName(pc,name);//用以接收放回的數(shù)組下標(biāo)
if(ret==-1)
printf("找不到要?jiǎng)h除的人\n");
return;//讓函數(shù)直接返回
//2.刪除
//從找到的那個(gè)下標(biāo)位置開始,后面的數(shù)組元素(通訊人結(jié)構(gòu)體)依次往前賦值
intj=0;
for(j=ret;jpc-num-1;j++)
pc-people[j]=pc-people[j+1];
printf("刪除成功\n");
pc-num--;//通訊人數(shù)量-1
voidSearchPeople(constContact*pc)
//查找
printf("請(qǐng)輸入要查找的人的姓名;
charname[NameMax];
scanf("%s",name);
intret=FindByName(pc,name);//用以接收放回的數(shù)組下標(biāo)
if(ret==-1)
printf("找不到要查找的人\n");
return;//讓函數(shù)直接返回
//顯示
printf("%-20s%-20s%-20s%-20s%-20s\n","姓名","年齡","性別","電話","地址");
printf("%-20s%-20d%-20s%-20s%-20s\n",pc-people[ret].name,pc-people[ret].age,pc-people[ret].sex,pc-people[ret].phone,pc-people[ret].address);
voidModifyPeople(Contact*pc)
//查找
printf("請(qǐng)輸入要修改的人的姓名;
charname[NameMax];
scanf("%s",name);
intret=FindByName(pc,name);//用以接收放回的數(shù)組下標(biāo)
if(ret==-1)
printf("找不到要修改的人\n");
return;//讓函數(shù)直接返回
//修改
printf("請(qǐng)輸入要修改的姓名
scanf("%s",pc-people[ret].name);
printf("請(qǐng)輸入要修改的年齡
scanf("%d",pc-people[ret].age);
printf("請(qǐng)輸入要修改的性別
scanf("%s",pc-people[ret].sex);
printf("請(qǐng)輸入要修改的電話
scanf("%s",pc-people[ret].phone);
printf("請(qǐng)輸入要修改的地址
scanf("%s",pc-people[ret].address);
intcmp(constvoid*e1,constvoid*e2)
People*p1=(People*)e1;
People*p2=(People*)e2;
if(p1-agep2-age)
return1;
elseif(p1-agep2-age)
return-1;
else
return0;
voidSortByAge(C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 警務(wù)室調(diào)解制度
- 用電基礎(chǔ)知識(shí)培訓(xùn)
- 2025高一政治期末模擬卷01(考試版)【測(cè)試范圍:必修1全冊(cè)+必修2全冊(cè)】(新高考用)含答案
- 醫(yī)院愛崗敬業(yè)培訓(xùn)課件
- 國(guó)考公安考試試題及答案
- 2026年上半年浙江杭州市婦產(chǎn)科醫(yī)院(杭州市婦幼保健院)高層次、緊缺專業(yè)人才招聘15人(總)備考考試試題附答案解析
- 2026某事業(yè)單位招聘保潔崗位1人備考考試題庫(kù)附答案解析
- JIS D 9101-2012 自行車術(shù)語標(biāo)準(zhǔn) Cycles - Terminology
- 2026福建福州市平潭綜合實(shí)驗(yàn)區(qū)黨工委黨校(區(qū)行政學(xué)院、區(qū)社會(huì)主義學(xué)院)招聘編外工作人員1人備考考試題庫(kù)附答案解析
- 2026福建龍巖鑫達(dá)彩印有限公司龍巖鑫利來酒店分公司(第一批)招聘3人參考考試試題附答案解析
- 江蘇省揚(yáng)州市區(qū)2025-2026學(xué)年五年級(jí)上學(xué)期數(shù)學(xué)期末試題一(有答案)
- 2024版2026春新教科版科學(xué)三年級(jí)下冊(cè)教學(xué)課件:第一單元4.磁極與方向含2個(gè)微課視頻
- 培訓(xùn)保安課件
- “黨的二十屆四中全會(huì)精神”專題題庫(kù)及答案
- 2026屆福建省寧德市三校高三上學(xué)期1月月考?xì)v史試題(含答案)
- 2026年冀教版初一地理上冊(cè)期末真題試卷+解析及答案
- 2025年文化產(chǎn)業(yè)版權(quán)保護(hù)與運(yùn)營(yíng)手冊(cè)
- 四川省樂山市高中高三上學(xué)期第一次調(diào)查研究考試數(shù)學(xué)試題【含答案詳解】
- 物流行業(yè)運(yùn)輸司機(jī)安全駕駛與效率績(jī)效評(píng)定表
- 2026年及未來5年市場(chǎng)數(shù)據(jù)中國(guó)脫硫市場(chǎng)運(yùn)行態(tài)勢(shì)及行業(yè)發(fā)展前景預(yù)測(cè)報(bào)告
- 中國(guó)農(nóng)業(yè)科學(xué)院2026年度第一批統(tǒng)一公開招聘筆試考試參考試題及答案解析
評(píng)論
0/150
提交評(píng)論