




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、北京航空航天大學北海學院實驗報告學 院: 軟件與信息工程學院 專業(yè)班級: 軟件工程3班 課 程:學生成績管理系統(tǒng)程序設計實踐 指導老師: 學號及姓名:一實驗目的: 通過課程設計,提高自己動手的能力,讓實踐和理論相結(jié)合,進一步鞏固語言程序設計的課程內(nèi)容,掌握工程軟件的基本設計方法。 學會將知識應用于實踐,提高分析和解決問題的能力,加強綜合能力。 為以后計算機的學習打下堅實的基礎,有利于畢業(yè)時做畢業(yè)設計。二實驗內(nèi)容: 運用結(jié)構(gòu)體和共用體,以及單鏈表和循環(huán)的知識點編輯一個簡單的學生基本信息管理系統(tǒng),使之能夠完成學生基本信息的錄入、修改、插入、查詢、排序、打印、退出操作。 執(zhí)行編譯操作,并根據(jù)提示調(diào)試
2、此程序,排除所有的錯誤和警告。直到編譯成功為止。 執(zhí)行運行操作,直到全部程序能夠運行成功為止。 做完后請老師檢查,并能回答老師所提的相關問題。三. 需求分析:1. 該學生信息管理系統(tǒng)能夠完成基本的信息處理,如錄入,保存,讀取,輸出,修改,刪除,添加,統(tǒng)計,排序等項目操作。實現(xiàn)統(tǒng)計用戶的總分和平均分。能夠查看單個用戶的各科成績2. 每個模塊的功能如下:a) 錄入模塊:可先后輸入學號,姓名,高數(shù)成績,計算機成績,英語成績;b) 保存模塊:用于數(shù)據(jù)存盤處理,如果用戶沒有專門進行此操作且對數(shù) 據(jù)有修改,在退出時系統(tǒng)會提示用戶存盤。c) 查詢模塊:用于按編號或姓名來查詢用戶記錄d) 輸出模塊:可輸出讀取
3、的學生信息與平均成績;e) 修改模塊: 用于修改用戶記錄。先按輸入的編號查詢到該記錄,然后提示用戶修改編號之外的值,但是編號不能修改;f) 刪除模塊:可刪除所讀取的學生信息;g) 插入模塊:用于插入記錄。即按編號查詢到要插入的結(jié)點的位置,然后在該編號之后插入一個新結(jié)點;h) 排序模塊:利用插入排序?qū)崿F(xiàn)單鏈表的按總分字段的降序排序,格式是從高到低;i) 統(tǒng)計模塊:用于分別統(tǒng)計該班的總分第一名和單科第一及各科不及格的人數(shù);j) 退出模塊:可直接退出學生信息管理系統(tǒng); 該學生信息管理系統(tǒng)是在vc+的環(huán)境下運行的。該信息系統(tǒng)要測試的數(shù)據(jù)如下: 錄入模塊:學號 姓名 高數(shù) 英語 計算機 1 xxx 99
4、 80 99 2 xxx 99 89 89 3 xx 67 70 58 4 xxx 78 67 78 保存模塊:輸入文件名即可保存于該文件; 查詢模塊:輸入相應的文件名可調(diào)出相應的學生信息; 輸出模塊:可輸出錄入,修改,刪除,添加后的學生信息; 修改模塊: 修改信息( 3 xx 67 70 58 ) 刪除模塊:刪除信息( 2 xx 99 89 89) 添加模塊:添加信息(5 xxx 78 87 89) 排序模塊:按平均成績由小到大排列并輸出,如下:學號 姓名 高數(shù) 英語 計算機 平均成績 3 xx 67 70 58 65.000000 4 xxx 78 67 78 74.000000 5 xx
5、x 78 87 89 84.000000 1 xxx 99 80 99 92.000000 統(tǒng)計模塊:統(tǒng)計該班的總分第一名和單科第一及各科不及格的人數(shù),如下: 退出模塊:輸入 0 即可退出系統(tǒng);四 . 概要設計: 主函數(shù)結(jié)構(gòu)圖:錄 入插 入輸 出修 改刪 除保 存排 序退 出刪 除統(tǒng) 計 模塊功能詳細說明;a. 錄入模塊: 錄入基本信息;b. 保存模塊:輸入文件名即可保存于該文件;c. 讀取模塊:輸入相應的文件名可調(diào)出相應的學生信息;d. 輸出模塊:可輸出錄入,修改,刪除,添加后的學生 信息;e. 修改模塊: 修改學生信息;f. 刪除模塊:只要輸入要刪除的學生學號,就可刪除該學生的有關信息,以
6、后輸出時就不再顯示該學生的信息;g. 添加模塊:添加學生信息;h. 統(tǒng)計(排序)模塊:按平均成績由小到大排列并輸出;i. 退出模塊:推出系統(tǒng);五、詳細設計及運行結(jié)果流程圖, 函數(shù)之間相互調(diào)用的圖示 ,程序設計及編碼, 運行結(jié)果。 各模塊的程序控制圖:保 存 模 塊保存基本信息并輸入保存的文件名結(jié) 束yn錄 入 模 塊是 否 繼 續(xù) 錄 入錄入基本信息結(jié) 束yn讀 取 模 塊是 否 讀 取輸入保存的文件名,即可結(jié) 束yn查 詢 模 塊輸出所錄入的學生成績信息結(jié) 束修 改 模 塊是 否 修 改輸入要修改的學號結(jié) 束yn英語數(shù)學平均成績c語言姓名刪 除 模 塊輸入刪除學號結(jié) 束yn是 否 刪 除添
7、加 模 塊是 否 繼 續(xù) 添 加輸入添加信息結(jié) 束yn統(tǒng) 計 模 塊按學生成績由低到高排列結(jié) 束 函數(shù)之間相互調(diào)用的圖示:主函數(shù)調(diào) 用 錄 入函 數(shù)調(diào) 用 保 存 函 數(shù)調(diào) 用 查 詢 函 數(shù)調(diào) 用 修 改 函 數(shù)調(diào) 用 刪 除 函 數(shù) 調(diào)用輸出函數(shù)結(jié)束結(jié)束結(jié)束結(jié)束結(jié)束調(diào) 用 排 序 函 數(shù) 結(jié)束調(diào) 用 讀 取 模 塊調(diào) 用 保 存 函 數(shù)調(diào) 用 保 存 函 數(shù)調(diào) 用 添 加 函 數(shù)調(diào) 用 保 存 函 數(shù)調(diào) 用 查 找 函 數(shù)結(jié)束結(jié)束調(diào)用輸出函數(shù)、(3)各模塊流程圖 結(jié) 束 y否開 始head-next=null;p2=head;繼續(xù)輸入(y/n)? p2-next=p1;p2=p1;ny錄入
8、模塊輸入學生成績信息 return head返回return headp-next=head-next;head-next=p;真q=q-nextq-next!=null開始輸入新增學生信息申請結(jié)點p=headhead=null假假查詢學生信息:真假真flag!=0head=null無學生信息開始退出按學號查詢按姓名查詢2number=2number=1number=0switch(number)開始p1=head輸入學生學號xx!=p1-num&p1-next!=nullp1=p1-next返回主菜單輸出無信息輸出學生信息x=p1-num真真學生信息的刪除:nn無此學生信息輸出學生總?cè)藬?shù)su
9、m-p2-next=p1-next;free(p1)head=p1-next;free(p1)p1=headynumber=p1-numnp2=p1;p1=p1-nexty開始輸入要刪除學生的學號numberhead=nullnp1=headnumber!=p1-num&p1-next!=null 測試與行結(jié)果a錄入模塊:b刪除模塊:c查詢模塊:d修改模塊:e插入模塊:f統(tǒng)計模塊:g排序模塊:h保存模塊:源代碼:/*對用戶的有效信息進行輸入、排序等操作實現(xiàn)統(tǒng)計用戶的總分和平均分能夠查看單個用戶的各科成績*/#include stdio.h /*標準輸入輸出函數(shù)庫*/#include stdli
10、b.h /*標準函數(shù)庫*/#include string.h /*字符串函數(shù)庫*/#include conio.h /*屏幕操作函數(shù)庫*/#define header1 (#) -student-() n#define header4 w e l c o m e b a b y ! n#define header2 | number | name |eng|math|comp | sum | ave |mici | n#define header3 |-|-|-|-|-|-|-|-| #define format | %-10s |%-15s|%4d|%4d|%4d| %4d | %.2f |
11、%4d |n#define data p-data.num,,p-data.egrade,p-data.mgrade,p-data.cgrade,p-data.total,p-data.ave,p-data.mingci#define end - nint saveflag=0; /*是否需要存盤的標志變量*/*定義與學生有關的數(shù)據(jù)結(jié)構(gòu)*/typedef struct student /*標記為student*/char num10; /*學號*/char name15; /*姓名*/int cgrade; /*c語言成績*/int mgrade; /*數(shù)學成績*/int
12、 egrade; /*英語成績*/int total; /*總分*/float ave; /*平均分*/int mingci; /*名次*/;/*定義每條記錄或結(jié)點的數(shù)據(jù)結(jié)構(gòu),標記為:node*/typedef struct nodestruct student data; /*數(shù)據(jù)域*/struct node *next; /*指針域*/node,*link; /*node為node類型的結(jié)構(gòu)變量,*link為node類型的指針變量*/void menu() /*主菜單*/system(cls); /*調(diào)用dos命令,清屏.與clrscr()功能相同*/ /*在文本模式中選擇新的字符顏色*/
13、 /*在文本窗口中設置光標*/printf( the students grade management system nn);printf( *_ 為您服務是俺的榮幸!_* nn);printf( _ 菜單_ nnn);printf( * 1 input (_o not find this student!n);void disp(link l) /*顯示單鏈表l中存儲的學生記錄,內(nèi)容為student結(jié)構(gòu)中定義的內(nèi)容*/node *p;p=l-next; /*l存儲的是單鏈表中頭結(jié)點的指針,該頭結(jié)點沒有存儲學生信息,指針域指向的后繼結(jié)點才有學生信息*/if(!p) /*p=null,null
14、在stdlib中定義為*/ printf(n= not student record!n); getchar(); return;printf(nn);printheader(); /*輸出表格頭部*/while(p) /*逐條輸出鏈表中存儲的學生信息*/ printdata(p); p=p-next; /*移動至下一個結(jié)點*/ printf(header3);getchar();node* locate(link l,char findmess,char nameornum)node *r;if(strcmp(nameornum,num)=0) /*按學號查詢*/ r=l-next; whi
15、le(r) if(strcmp(r-data.num,findmess)=0) /*若找到findmess值的學號*/ return r; r=r-next; else if(strcmp(nameornum,name)=0) /*按姓名查詢*/ r=l-next; while(r) if(strcmp(,findmess)=0) /*若找到findmess值的學生姓名*/ return r; r=r-next; return 0; /*若未找到,返回一個空指針*/*輸入字符串,并進行長度驗證(長度lens)printf(n exceed the required len
16、gth! n); /*進行長度校驗,超過lens值重新輸入*/ while(strlen(n)lens); strcpy(t,n); /*將輸入的字符串拷貝到字符串t中*/*輸入分數(shù),分數(shù)100 | t100 | tnext;system(cls);disp(l); /*先打印出已有的學生信息*/while(r-next!=null) r=r-next; /*將指針移至于鏈表最末尾,準備添加記錄*/while(1) /*一次可輸入多條記錄,直至輸入學號為的記錄結(jié)點添加操作*/ while(1) /*輸入學號,保證該學號沒有被使用,若輸入學號為,則退出添加記錄操作*/ stringinput(n
17、um,10,input number(press 0return menu):); /*格式化輸入學號并檢驗*/ flag=0; if(strcmp(num,0)=0) /*輸入為,則退出添加操作,返回主界面*/ return; s=l-next; while(s) /*查詢該學號是否已經(jīng)存在,若存在則要求重新輸入一個未被占用的學號*/ if(strcmp(s-data.num,num)=0) flag=1; break; s=s-next; if(flag=1) /*提示用戶是否重新輸入*/ getchar(); printf(=the number %s is not existing,t
18、ry again?(y/n):,num); scanf(%c,&ch); if(ch=y|ch=y) continue; else return; else break; p=(node *)malloc(sizeof(node); /*申請內(nèi)存空間*/ if(!p) printf(n allocate memory failure ); /*如沒有申請到,打印提示信息*/ return ; /*返回主界面*/ strcpy(p-data.num,num); /*將字符串num拷貝到p-data.num中*/ stringinput(,15,name:); p-data.
19、cgrade=numberinput(c language score0-100:); /*輸入并檢驗分數(shù),分數(shù)必須在之間*/ p-data.mgrade=numberinput(math score0-100:); /*輸入并檢驗分數(shù),分數(shù)必須在之間*/ p-data.egrade=numberinput(english score0-100:); /*輸入并檢驗分數(shù),分數(shù)必須在之間*/ p-data.total=p-data.egrade+p-data.cgrade+p-data.mgrade; /*計算總分*/ p-data.ave=(float)(p-data.total/3); /*
20、計算平均分*/ p-data.mingci=0; p-next=null; /*表明這是鏈表的尾部結(jié)點*/ r-next=p; /*將新建的結(jié)點加入鏈表尾部中*/ r=p; saveflag=1; return ;void qur(link l) /*按學號或姓名,查詢學生記錄*/int select; /*1:按學號查,:按姓名查,其他:返回主界面(菜單)*/char searchinput20; /*保存用戶輸入的查詢內(nèi)容*/node *p;if(!l-next) /*若鏈表為空*/ system(cls); printf(n=no student record!n); getchar()
21、; return;system(cls);printf(n =1 search by number =2 search by namen);printf( please choice1,2:);scanf(%d,&select);if(select=1) /*按學號查詢*/ stringinput(searchinput,10,input the existing student number:); p=locate(l,searchinput,num);/*在l中查找學號為searchinput值的節(jié)點,并返回節(jié)點的指針*/ if(p) /*若p!=null*/ printheader();
22、 printdata(p); printf(end); printf(press any key to return); getchar(); else nofind(); getchar();else if(select=2) /*按姓名查詢*/ stringinput(searchinput,15,input the existing student name:); p=locate(l,searchinput,name); if(p) printheader(); printdata(p); printf(end); printf(press any key to return); ge
23、tchar(); else nofind(); getchar();else wrong(); getchar(); /*刪除學生記錄:先找到保存該學生記錄的節(jié)點,然后刪除該節(jié)點*/void del(link l)int sel;node *p,*r;char findmess20;if(!l-next) system(cls); printf(n=no student record!n); getchar(); return;system(cls);disp(l);printf(n =1 delete by number =2 delete by namen);printf( please
24、choice1,2:);scanf(%d,&sel);if(sel=1) stringinput(findmess,10,input the existing student number:); p=locate(l,findmess,num); if(p) /*p!=null*/ r=l; while(r-next!=p) r=r-next; r-next=p-next;/*將p所指節(jié)點從鏈表中去除*/ free(p); /*釋放內(nèi)存空間*/ printf(n=delete success!n); getchar(); saveflag=1; else nofind(); getchar()
25、;else if(sel=2) /*先按姓名查詢到該記錄所在的節(jié)點*/ stringinput(findmess,15,input the existing student name); p=locate(l,findmess,name); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=delete success!n); getchar(); saveflag=1; else nofind(); getchar();else wrong(); getchar();/*修改學生記錄。先按輸入的學號查
26、詢到該記錄,然后提示用戶修改學號之外的值,學號不能修改*/void modify(link l)node *p;char findmess20;if(!l-next) system(cls); printf(n=no student record!n); getchar(); return;system(cls);printf(modify student recorder);disp(l);stringinput(findmess,10,input the existing student number:); /*輸入并檢驗該學號*/p=locate(l,findmess,num); /*查
27、詢到該節(jié)點*/if(p) /*若p!=null,表明已經(jīng)找到該節(jié)點*/ printf(number:%s,n,p-data.num); printf(name:%s,); stringinput(,15,input new name:); printf(c language score:%d,p-data.cgrade); p-data.cgrade=numberinput(c language score0-100:); printf(math score:%d,p-data.mgrade); p-data.mgrade=numberinput(m
28、ath score0-100:); printf(english score:%d,p-data.egrade); p-data.egrade=numberinput(english score0-100:); p-data.total=p-data.egrade+p-data.cgrade+p-data.mgrade; p-data.ave=(float)(p-data.total/3); p-data.mingci=0; printf(n=modify success!n); disp(l); saveflag=1;else nofind(); getchar();/*插入記錄:按學號查詢
29、到要插入的節(jié)點的位置,然后在該學號之后插入一個新節(jié)點。*/void insert(link l) link p,v,newinfo; /*p指向插入位置,newinfo指新插入記錄*/ char ch,num10,s10; /*s保存插入點位置之前的學號,num保存輸入的新記錄的學號*/ int flag=0; v=l-next; system(cls); disp(l); while(1) stringinput(s,10,please input insert location after the number:); flag=0;v=l-next; while(v) /*查詢該學號是否存
30、在,flag=1表示該學號存在*/ if(strcmp(v-data.num,s)=0) flag=1;break; v=v-next; if(flag=1) break; /*若學號存在,則進行插入之前的新記錄的輸入操作*/ else getchar(); printf(n=the number %s is not existing,try again?(y/n):,s); scanf(%c,&ch); if(ch=y|ch=y) continue; else return; /*以下新記錄的輸入操作與add()相同*/ stringinput(num,10,input new studen
31、t number:); v=l-next; while(v) if(strcmp(v-data.num,num)=0) printf(=sorry,the new number:%s is existing !n,num); printheader(); printdata(v); printf(n); getchar(); return; v=v-next; newinfo=(node *)malloc(sizeof(node); if(!newinfo) printf(n allocate memory failure ); /*如沒有申請到,打印提示信息*/ return ; /*返回主
32、界面*/ strcpy(newinfo-data.num,num); stringinput(,15,name:); newinfo-data.cgrade=numberinput(c language score0-100:); newinfo-data.mgrade=numberinput(math score0-100:); newinfo-data.egrade=numberinput(english score0-100:); newinfo-data.total=newinfo-data.egrade+newinfo-data.cgrade+new
33、info-data.mgrade; newinfo-data.ave=(float)(newinfo-data.total/3); newinfo-data.mingci=0; newinfo-next=null; saveflag=1; /*在main()有對該全局變量的判斷,若為,則進行存盤操作*/ /*將指針賦值給p,因為l中的頭節(jié)點的下一個節(jié)點才實際保存著學生的記錄*/ p=l-next; while(1) if(strcmp(p-data.num,s)=0) /*在鏈表中插入一個節(jié)點*/ newinfo-next=p-next; p-next=newinfo; break; p=p-
34、next; disp(l); printf(nn); getchar();/*統(tǒng)計該班的總分第一名和單科第一,和各科不及格人數(shù)*/void tongji(link l)node *pm,*pe,*pc,*pt; /*用于指向分數(shù)最高的節(jié)點*/node *r=l-next;int countc=0,countm=0,counte=0; /*保存三門成績中不及格的人數(shù)*/if(!r) system(cls); printf(n=not student record!n); getchar(); return ;system(cls);disp(l);pm=pe=pc=pt=r;while(r) i
35、f(r-data.cgradedata.mgradedata.egradedata.cgrade=pc-data.cgrade) pc=r; if(r-data.mgrade=pm-data.mgrade) pm=r; if(r-data.egrade=pe-data.egrade) pe=r; if(r-data.total=pt-data.total) pt=r; r=r-next;printf(n-the tongji result-n);printf(c language60:%d (ren)n,countc);printf(math 60:%d (ren)n,countm);prin
36、tf(english ,pt-data.total);printf(the highest student by english score name:%s totoal score:%dn,,pe-data.egrade);printf(the highest student by math score name:%s totoal score:%dn,,pm-data.mgrade);printf(the highest student by c score name:%s totoal score:%dn,pc-data.
37、name,pc-data.cgrade);printf(nnpress any key to return);getchar();/*利用插入排序法實現(xiàn)單鏈表的按總分字段的降序排序,從高到低*/void sort(link l)link ll;node *p,*rr,*s;int i=0;if(l-next=null) system(cls); printf(n=not student record!n); getchar(); return ;ll=(node*)malloc(sizeof(node); /*用于創(chuàng)建新的節(jié)點*/if(!ll) printf(n allocate memory
38、 failure ); /*如沒有申請到,打印提示信息*/ return ; /*返回主界面*/ ll-next=null;system(cls);disp(l); /*顯示排序前的所有學生記錄*/p=l-next;while(p) /*p!=null*/ s=(node*)malloc(sizeof(node); /*新建節(jié)點用于保存從原鏈表中取出的節(jié)點信息*/ if(!s) /*s=null*/ printf(n allocate memory failure ); /*如沒有申請到,打印提示信息*/ return ; /*返回主界面*/ s-data=p-data; /*填數(shù)據(jù)域*/ s
39、-next=null; /*指針域為空*/ rr=ll; /*rr鏈表于存儲插入單個節(jié)點后保持排序的鏈表,ll是這個鏈表的頭指針,每次從頭開始查找插入位置*/ while(rr-next!=null & rr-next-data.total=p-data.total) rr=rr-next; /*指針移至總分比p所指的節(jié)點的總分小的節(jié)點位置*/ if(rr-next=null)/*若新鏈表ll中的所有節(jié)點的總分值都比p-data.total大時,就將p所指節(jié)點加入鏈表尾部*/ rr-next=s; else /*否則將該節(jié)點插入至第一個總分字段比它小的節(jié)點的前面*/ s-next=rr-nex
40、t; rr-next=s; p=p-next; /*原鏈表中的指針下移一個節(jié)點*/ l-next=ll-next; /*ll中存儲是的已排序的鏈表的頭指針*/ p=l-next; /*已排好序的頭指針賦給p,準備填寫名次*/ while(p!=null) /*當p不為空時,進行下列操作*/ i+; /*結(jié)點序號*/ p-data.mingci=i; /*將名次賦值*/ p=p-next; /*指針后移*/ disp(l);saveflag=1;printf(n =sort complete!n);/*數(shù)據(jù)存盤,若用戶沒有專門進行此操作且對數(shù)據(jù)有修改,在退出系統(tǒng)時,會提示用戶存盤*/void save(link l)file* fp;node *p;int count=0;fp=fopen(c:student,wb);/*以只寫方式打開二進制文件*/if(fp=null) /*打開文件失敗*/ printf(n=open file error!n); getchar(); return ;p=l-next;while(p
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年重油催化裂化催化劑項目發(fā)展計劃
- 2025年度企業(yè)并購重組咨詢顧問服務協(xié)議-@-1
- 2025年鈷粉系列項目發(fā)展計劃
- 家長參與小班教育的倡導計劃
- 實施有效反饋的工作方法計劃
- 文化演出活動的安保工作總結(jié)計劃
- 2025年高純四氧化三錳項目發(fā)展計劃
- 七年級下冊《相交線》課件與練習
- 汽車尾氣凈化催化轉(zhuǎn)化器安裝要求
- 2025年激光測距儀、測向儀項目合作計劃書
- 工作交接表表格模板
- 《三國演義》中的佛教文化:以黃承兒為例
- 論犯罪與刑罰
- 材料預定協(xié)議
- 《學習的本質(zhì)》讀書會活動
- 高氨血癥護理課件
- 物流營銷(第四版) 課件 胡延華 第3、4章 物流目標客戶選擇、物流服務項目開發(fā)
- 《石油化工電氣自動化系統(tǒng)設計規(guī)范》
- Q-GGW-BF-0117-2023天然氣管道無人站技術(shù)規(guī)范
- (完整版)潔凈室工程師培訓教材
- 新教科版三年級下冊科學 第二單元重點題型練習課件
評論
0/150
提交評論