版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、河北科技大學(xué)課 程 設(shè) 計 報 告學(xué)生姓名: 付建海 學(xué)號:080702122專業(yè)班級:計算機081班課程名稱:數(shù)據(jù)結(jié)構(gòu)設(shè)計題目:簡單的職工管理系統(tǒng)學(xué)年學(xué)期:2010-2011學(xué)年第一學(xué)期指導(dǎo)教師:白云飛2011年6月一、 需求分析2二、 概要設(shè)計3三、 詳細(xì)設(shè)計4四、 調(diào)試分析8五、 用戶使用說明8六、 測試結(jié)果9七、 附錄10一、需求分析職工管理系統(tǒng)是一個工作單位不可缺少的管理工具,它管理的數(shù)據(jù)對于公司的決策者和管理者來說都至關(guān)重要,所以職工管理系統(tǒng)應(yīng)該能夠為用戶提供充足的信息和快捷的查詢手段。但一直以來各個公司基本上都是靠傳統(tǒng)的人工方式來管理職工信息,這種管理方式存在著許多缺點,如:效率
2、低、保密性差,另外時間一長,將產(chǎn)生大量的文件和數(shù)據(jù),這對于信息的查找、更新和維護都帶來了不少的困難。當(dāng)今社會,信息迅速膨脹,隨著各個公司的規(guī)模增大,有關(guān)信息管理工作所涉及的數(shù)據(jù)量越來越大,職工信息量也大大增加,利用傳統(tǒng)的手工查詢、登記、修改等方法的處理速度遠(yuǎn)遠(yuǎn)跟不上公司的需求,有的公司不得不靠增加人力、物力來進行信息管理。 隨著計算機技術(shù)的不斷提高,計算機作為知識經(jīng)濟時代的產(chǎn)物,其強大的功能已為人們深刻認(rèn)識,它已進入人類社會的各個行業(yè)和領(lǐng)域并發(fā)揮著越來越重要的作用,成為人們工作和生活中不可缺少的一部分。而作為計算機應(yīng)用的一部分,使用計算機對職工進行管理,具有手工管理所無法比擬的優(yōu)點。例如:檢索
3、迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高職工管理的效率,也是公司的科學(xué)化、正規(guī)化管理和與世界接軌的重要條件。職工管理系統(tǒng)作為一種管理軟件正在各公司中得到越來越廣泛的應(yīng)用,且已達到了良好效果。簡單的職工管理系統(tǒng):1、問題描述對單位的職工進行管理,包括插入、刪除、查找、排序等功能。2、要求職工對象包括姓名(字符串)、性別(字符)、出生年月(數(shù)字)、工作年月(數(shù)字)、學(xué)歷(字符串)、職務(wù)(字符串)、住址(字符串)、電話(字符串)等信息。(1)新增一名職工:將新增職工對象按姓名以字典方式職工管理文件中。(2)刪除一名職工:從職工管理文件中刪除一名職工對象。
4、(3)查詢:從職工管理文件中查詢符合某些條件的職工。(4)修改:檢索某個職工對象,對其某些屬性進行修改。(5)排序:按某種需要對職工對象文件進行排序。3、實現(xiàn)功能(1)由鍵盤輸入職工對象,以文件方式保存。程序執(zhí)行時先將文件讀入內(nèi)存。(2)對職工對象中的“姓名”按字典順序進行排序。(3)對排序后的職工對象進行增、刪、查詢、修改、排序等操作。二、概要設(shè)計 1、輸入功能的實現(xiàn):要想實現(xiàn)職工管理系統(tǒng)的輸入,必須要建立一個職工信息系統(tǒng)的抽象數(shù)據(jù)類型,其中職工信息以鏈表的存儲方式實現(xiàn)。由鍵盤輸入職工對象,以文件方式保存。程序執(zhí)行時先將文件讀入內(nèi)存。2、系統(tǒng)處理功能的實現(xiàn):系統(tǒng)管理員根據(jù)公司的人員流動情況,
5、在提示信息的提示下,選擇相應(yīng)的服務(wù)進行操作。如對職工對象中的"姓名"按字典順序進行排序;對排序后的職工對象進行增、刪、查詢、修改、排序等操作。3、輸出的實現(xiàn):根據(jù)選擇的操作,輸出與之對應(yīng)的信息。綜上可以繪制出職工管理功能的系統(tǒng)流程圖,如圖1所示圖1 系統(tǒng)流程圖4、系統(tǒng)功能結(jié)構(gòu)根據(jù)職工管理系統(tǒng)問題的分析和設(shè)計要求,可以得到該職工管理系統(tǒng)可以分為五個模塊:職工信息添加模塊、職工信息修改模塊、職工信息刪除模塊、職工信息查詢模塊、職工信息排序模塊。其系統(tǒng)功能結(jié)構(gòu)如圖2所示。圖2 系統(tǒng)功能結(jié)構(gòu)圖5、模塊函數(shù)構(gòu)造根據(jù)系統(tǒng)功能結(jié)構(gòu)圖的描述,可以構(gòu)造出該系統(tǒng)的抽象數(shù)據(jù)類型和相對應(yīng)的函數(shù),其
6、方法名和功能如表1所示。表1 函數(shù)功能表模塊函數(shù)或數(shù)據(jù)結(jié)構(gòu)功能鏈表數(shù)據(jù)類型typedef struct Node定義鏈表結(jié)點typedef struct Datatype定義職工信息ListInitiate(SLNode *head)初始化鏈表系統(tǒng)處理模塊SLNode *ListInsert(SLNode *head,DataType x)插入職工信息ListDelete(SLNode *head)刪除職工信息ListModify(SLNode *head)修改職工信息put(SLNode *head,FILE *fp)保存職工信息Listfind(SLNode head)查詢職工信息List
7、paixu(SLNode *head)職工信息排序輸出模塊print(SLNode *head)顯示職工信息三、詳細(xì)設(shè)計1、抽象數(shù)據(jù)類型定義1)定義表結(jié)點(typedef struct Node)typedef struct Nodelong int born_time,work_time,tele_num;char sex,nameALLMAX,degreeALLMAX,jobALLMAX,addressALLMAX;struct Node *next;SLNode;2)定義職工信息(typedef struct Datatype)typedef structlong int born_ti
8、me,work_time,tele_num;char nameALLMAX,sex,degreeALLMAX,jobALLMAX,addressALLMAX;DataType;3)初始化鏈表(ListInitiate(SLNode *head))void ListInitiate(SLNode *head)/-鏈表初始化if(*head=(SLNode *)malloc(sizeof(SLNode)=NULL) exit(1);/動態(tài)分配存儲空間(*head)->next=NULL;2、主函數(shù)設(shè)計(1)根據(jù)詳細(xì)設(shè)計要求,可以得到主函數(shù)代碼及其對應(yīng)的程序流程圖:在主函數(shù)中,實現(xiàn)了友好的界面
9、設(shè)計。系統(tǒng)需要輸入職工的基本信息:姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話等。這個系統(tǒng)還利用鍵盤輸入提供的主菜單服務(wù),在主菜單中,有七種操作的調(diào)用:新增職工信息:SLNode *ListInsert(SLNode *head,DataType x)查詢職工信息:Listfind(SLNode head)刪除職工信息:ListDelete(SLNode *head)修改職工信息:ListModify(SLNode *head)職工信息排序:Listpaixu(SLNode *head)保存職工信息:put(SLNode *head,FILE *fp)顯示職工信息:print(SLN
10、ode *head)(2)主函數(shù)程序流程圖如圖3所示:圖 3 主函數(shù)程序流程圖3、查找算法設(shè)計在查詢算法中,職工管理系統(tǒng)提供了七種查詢操作,實現(xiàn)了系統(tǒng)的人性化查詢操作。這些查詢操作分別為:對姓名進行查詢,對性別進行查詢,對出生年月進行查詢,對工作年月進行查詢,對學(xué)歷進行查詢,對職位進行查詢,對住址進行查詢,對電話進行查詢等一些列操作。查找算法中,利用鏈表的指針的移動掃描整個職工信息表,利用strcmp()函數(shù)判斷字符串是否匹配。查詢算法程序流程圖如圖4所示:圖 4 查詢算法程序流程圖4、排序算法設(shè)計在排序算法中,職工管理系統(tǒng)提供了四種查詢操作,實現(xiàn)了系統(tǒng)的基本排序操作。這些排序操作分別為:對姓
11、名進行排序,對性別進行排序,對出生年月進行排序,對工作年月進行排序,等一些列操作。排序算法中,利用鏈表的指針的移動掃描整個職工信息表,利用strcmp()函數(shù)判斷字符串是否匹配。排序的核心代碼:for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next)if(p->born_time>q->born_time)/對出生年月進行排序if(head=p) head->next=q->next; head=q; q->next=p;q=head->next;p=head;elsep->next=q->
12、;next; q->next=p; s->next=q; p=q; q=p->next; flag=1;排序算法流程圖如圖5所示:圖5 排序算法程序流程圖四、調(diào)試分析測試是使用人工或者自動手段來運行或測試某個系統(tǒng)的過程,其目的在于檢驗是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實際結(jié)果之間的差別。在調(diào)試查詢修改功能過程中,查詢的總是不正確,查詢的結(jié)果顯示,沒有找到職工信息,最后發(fā)現(xiàn)查找的結(jié)點不正確,查詢應(yīng)該與輸入的值和頭結(jié)點next比較,而不是頭結(jié)點。還有就是查詢結(jié)點不知道如何循環(huán),最后又看看了記得筆記和書,才知道如何繼續(xù)查找而不出錯誤。修改時總是不能正確的修改,最初時修改總是修改最后
13、輸入的數(shù)據(jù)。最后終于找到了,又是結(jié)點寫錯了。排序時注意交換的先后順序就可以了,刪除時注意交換結(jié)點的順序。經(jīng)驗與體會:本次課程設(shè)計是圍繞數(shù)據(jù)結(jié)構(gòu)進行。根據(jù)問題描述可知,需要解決問題并不復(fù)雜,整個問題只需要實現(xiàn)一個職工管理系統(tǒng)功能,那就是在這個系統(tǒng)中實現(xiàn)對職工信息的插入、刪除、查詢、排序、修改以及保存。但是,為了實現(xiàn)該功能,卻需要優(yōu)秀的算法和數(shù)據(jù)結(jié)構(gòu)以保證實現(xiàn)的時間和空間效率。把職工信息存儲在一個單鏈表中,利用指針實現(xiàn)對職工信息的各項基本操作。雖然設(shè)計的程序完成了題目描述所需要實現(xiàn)的功能,但是仍然存在不如人意的地方。那就是可以排序上面多設(shè)計幾個算法。實現(xiàn)多角度排序。在這個系統(tǒng)中沒有職工序號的信息,
14、所以允許職工姓名相同,在很大程度上面,可能是的職工信息重復(fù)。經(jīng)過這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計,我們不僅及時鞏固的了數(shù)據(jù)結(jié)構(gòu)、算法、以及軟件工程的知識,并明白數(shù)據(jù)結(jié)構(gòu)和算法對于程序時間和空間性能的影響,及軟件工程提供的開發(fā)流程和工具對于實現(xiàn)特定功能程序的重要意義。當(dāng)我們面對一個實際問題,應(yīng)該迅速根據(jù)問題性質(zhì)和特點抽象成特定的數(shù)據(jù)結(jié)構(gòu),當(dāng)然每個問題都有可能能夠抽象成多種數(shù)據(jù)結(jié)構(gòu),每種數(shù)據(jù)結(jié)構(gòu)適應(yīng)于不同的算法。因此應(yīng)該綜合考慮這樣的數(shù)據(jù)結(jié)構(gòu)、算法以及它們的空間和時間效率,然后從中選擇一個作為實現(xiàn)程序的基礎(chǔ)。此外,對程序的測試應(yīng)該要仔細(xì),根據(jù)模塊的特點和測試階段,采用各種軟件測試方法對程序進行測試,確保各個模
15、塊的正確性和完整性,最后集成起來測試其是否正確和完整地實現(xiàn)了問題描述中要求的功能。五、用戶使用說明進入職工管理系統(tǒng),首先看到的就是歡迎界面,然后提示:請輸入要錄入的職工數(shù),輸入完數(shù)字后,就提示:按次序依次輸入職工的姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、電話的信息(注意是依次輸入,中間可以用空格,tab,回車做切換輸入),輸完信息后自動回到主界面,根據(jù)提示:0.結(jié)束管理系統(tǒng) 1.新增職工信息2.刪除職工信息3.查詢職工信息4.修改職工信息5.職工信息排序,輸入相應(yīng)操作的數(shù)字,如0,退出簡單職工管理系統(tǒng);如1,提示依次輸入職工信息,錄入完畢自動返回主界面;如2,提示輸入刪除的姓名,成功正確返
16、回,錯誤有提示無此員工信息;如3,會提示查詢方式:0.退出查詢系統(tǒng),回到主菜單1.對姓名進行查詢2.對出生年月進行查詢3.對學(xué)歷進行查詢4.對工作年月進行查詢,輸入相應(yīng)編號進行查詢;如4,提示輸入修改職工姓名,然后進行依次修改職工所有信息;如5,提示:0.退出排序系統(tǒng),回到主菜單1.對性別進行排序2.對出生年月進行排序3.對工作年月進行排序4.對姓名進行排序,輸入號碼進行查詢。六、測試結(jié)果1)進入職工管理系統(tǒng),如圖6所示:圖 6主菜單選擇界面2)新增一職工信息并查詢?nèi)柯毠ば畔?,如圖7、8所示:圖 7 新增并查詢職工信息界3)修改職工信息并與前面信息對照,如圖8所示:圖8 修改職工信息界面4)
17、按姓名排序職工信息并顯示,如圖9所示圖9 按姓名排序職工信息并顯示5)退出系統(tǒng),如圖10所示:選擇 0,退出職工管理系統(tǒng)。圖10 退出職工管理系統(tǒng)七、附錄參考文獻:1李云清,楊慶紅,揭安全.數(shù)據(jù)結(jié)構(gòu)(C語言版)M.北京:人民郵電大學(xué)出版社,2004.62潘彥.算法設(shè)計與分析基礎(chǔ)M.北京:清華大學(xué)出版社,2007.13肖夢強,曲秀清.軟件工程原理、方法與應(yīng)用 M.北京:中國水利水電出版社,2005.104 呂鳳翥.C+語言程序設(shè)計(第2版)M.北京:電子工業(yè)出版社,2007.25 嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語言版)M.北京:清華大學(xué)出版社,2002.9實驗程序:#include <std
18、io.h>#include <string.h>#include <malloc.h>#include <stdlib.h>#define ALLMAX 100 /總共統(tǒng)計的職工的人數(shù)typedef struct Nodelong int born_date,work_date,tele_num;char sex,nameALLMAX,degreeALLMAX,jobALLMAX,addressALLMAX;struct Node *next;SLNode;typedef structlong int born_date,work_date,tele_
19、num;char nameALLMAX,sex,degreeALLMAX,jobALLMAX,addressALLMAX;DataType;void ListInitiate(SLNode *head)/鏈表初始化if(*head=(SLNode *)malloc(sizeof(SLNode)=NULL) exit(1);/動態(tài)分配存儲空間(*head)->next=NULL;SLNode *ListInsert(SLNode *head,DataType x)/職工信息的插入姓名并按照升序排列SLNode *p,*q,*s;p=head->next;if(q=(SLNode *)
20、malloc(sizeof(SLNode)=NULL) exit(1);/動態(tài)分配存儲空間q->born_date=x.born_date; q->work_date=x.work_date;q->tele_num=x.tele_num; strcpy(q->name,);q->sex=x.sex; strcpy(q->degree,x.degree);strcpy(q->job,x.job); strcpy(q->address,x.address);if(head->next=NULL)/如果只有鏈表的頭結(jié)點,沒有其他的結(jié)點
21、,直接插入在頭結(jié)點后面head->next=q;head->next->next=NULL;else/鏈表非空for(;p;p=p->next)if(p->next!=NULL)if(strcmp(p->name,)<0&&strcmp(p->next->name,)>0)/位于兩個結(jié)點之間s=p->next;p->next=q;q->next=s;break;/else if(strcmp(p->name,)=0)break; /如果姓名相同則不插入信息el
22、se if(strcmp(p->name,)<0&&p->next=NULL)/鏈表非空,并且在排序中是最后一個p->next=q;q->next=NULL;break;if(strcmp(p->name,)>0)/位于鏈表頭結(jié)點之后的位置s=head->next;head->next=q;q->next=s;break;return head;void ListDelete(SLNode *head)/職工信息的刪除SLNode *p,*s;char x20;s=head;p=head->
23、;next;if(head->next=NULL)/鏈表為空,輸出:名單中無職工信息,無須刪除!printf("名單中無此職工信息,無須刪除!n");return;printf("請輸入要刪除職工的姓名:n"); /輸入要刪除的人的姓名scanf("%s",x);for(p;p;p=p->next)/在鏈表中從頭到尾查找輸入的人的姓名if(strcmp(p->name,x)=0)/如果存在,則刪除,否則輸出:名單中無職工信息,無須刪除!s->next=p->next;free(p);printf(&quo
24、t;刪除成功!請繼續(xù)操作!n");break;s=p;if(p=NULL)/鏈表本身為空printf("名單中無此職工信息,無須刪除!n");void ListModify(SLNode *head)/職工信息的修改DataType x;SLNode *p;p=head->next;if(p=NULL)/鏈表本身為空printf("職工名單無職工信息,無須修改!n");return;printf("請輸入要修改的職工姓名:n");scanf("%s",);for(;p;p=p->n
25、ext)if(strcmp(,p->name)=0)/查找到了該職工的信息printf("依次寫入該職工的新信息:n");printf("請輸入職工信息:n姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話n");scanf("%s %c %d %d %s %s %s %d",p->name,&p->sex,&p->born_date,&p->work_date,p->degree,p->job,p->address,&p->tele
26、_num);printf("修改成功!請繼續(xù)操作!n");break;if(p=NULL)/如果鏈表為空printf("此職工不存在,無法修改其信息!n");void put(SLNode *head,FILE *fp)/職工信息的保存SLNode *p;if(fp=fopen("Employee.txt","w")=NULL)/printf("無法打開'Employee.txt'!n");exit(0);for(p=head->next;p;p=p->next)fp
27、rintf(fp,"%s %c %d %d %s %s %s %dn",p->name,p->sex,p->born_date,p->work_date,p->degree,p->job,p->address,p->tele_num);if(fclose(fp)printf("無法關(guān)閉'Employee.txt'!n"); exit(0);void Listfind(SLNode head)/職工信息的查找int i,j;SLNode *p;DataType x;if(head.next=N
28、ULL)/鏈表為空printf("名單中無職工信息,查詢失敗!n");return;/返回主菜單printf("n");printf("tn");printf("t 職工信息查詢操作 n");printf("t n");printf("t 0.退出查詢系統(tǒng),回到主菜單tt 1.對姓名進行查詢tnt 2.對出生年月進行查詢 tt 3.對學(xué)歷進行查詢tnt 4.對工作年月進行查詢 tt 5.對職務(wù)進行查詢tnt 6.對住址進行查詢 tt 7.對電話進行查詢tn"); printf
29、("tn");while(1)printf("請輸入您要選擇的操作:");scanf("%d",&i);if(i=0)/輸入0,退出查詢系統(tǒng),回到主菜單break;else if(i=1)/輸入1,對姓名進行查詢p=head.next;printf("請輸入姓名:");scanf("%s",);j=0;for(p;p;p=p->next)if(strcmp(p->name,)=0)/如果存在這個人,那么j自加+j;printf("n姓名、性別
30、、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話n");printf("%s %c %d %d %s %s %s %dn",p->name,p->sex,p->born_date,p->work_date,p->degree,p->job,p->address,p->tele_num);if(j=0)/表示沒有找到輸入的信息printf("職工名單中不存在此人!n");else printf("查詢成功!繼續(xù)操作!n");else if(i=2)/輸入2,對出生年月進行查詢p=he
31、ad.next;printf("請輸入出生年月:");scanf("%d",&x.born_date);j=0;for(p;p;p=p->next)if(p->born_date=x.born_date)/輸入的出生年月在鏈表中存在+j;/如果存在這個人,那么j自加printf("n姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話n");printf("%s %c %d %d %s %s %s %dn",p->name,p->sex,p->born_date,p->
32、work_date,p->degree,p->job,p->address,p->tele_num);if(j=0)/表示沒有找到輸入的信息printf("職工名單中沒有這個時間出生的!n");else printf("查詢成功!請繼續(xù)操作!n");else if(i=4)/輸入4,對工作年月進行查詢p=head.next;printf("請輸入工作年月:");scanf("%d",&x.work_date);j=0;for(p;p;p=p->next)if(p->wor
33、k_date=x.work_date)+j;/如果存在這個人,那么j自加printf("n姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話n");printf("%s %c %d %d %s %s %s %dn",p->name,p->sex,p->born_date,p->work_date,p->degree,p->job,p->address,p->tele_num);if(j=0)/表示沒有找到輸入的信息printf("職工名單中沒有這個時間工作的!n");else pri
34、ntf("查詢成功!請繼續(xù)操作!n");else if(i=3)/輸入3,對學(xué)歷進行查詢p=head.next;printf("請輸入學(xué)歷:");scanf("%s",x.degree);j=0;for(p;p;p=p->next)if(strcmp(p->degree,x.degree)=0)+j;/如果存在這個人,那么j自加printf("n姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話n");printf("%s %c %d %d %s %s %s %dn",p->
35、;name,p->sex,p->born_date,p->work_date,p->degree,p->job,p->address,p->tele_num);if(j=0)/表示沒有找到輸入的信息printf("職工名單中沒有這種學(xué)歷的!n");else printf("查詢成功!請繼續(xù)操作!n");else if(i=5)/輸入5,對職務(wù)進行查詢p=head.next;printf("請輸入職務(wù):");scanf("%s",x.job);j=0;for(p;p;p=p-
36、>next)if(strcmp(p->job,x.job)=0)+j;/如果存在這個人,那么j自加printf("n姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話n");printf("%s %c %d %d %s %s %s %dn",p->name,p->sex,p->born_date,p->work_date,p->degree,p->job,p->address,p->tele_num);if(j=0)/表示沒有找到輸入的信息printf("職工名單中沒有這種職務(wù)的!
37、n");else printf("查詢成功!請繼續(xù)操作!n");else if(i=6)/輸入6,對住址進行查詢p=head.next;printf("請輸入住址:");scanf("%s",x.address);j=0;for(p;p;p=p->next)if(strcmp(p->address,x.address)=0)+j;/如果存在這個人,那么j自加printf("n姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話n");printf("%s %c %d %d %s %
38、s %s %dn",p->name,p->sex,p->born_date,p->work_date,p->degree,p->job,p->address,p->tele_num);if(j=0)/表示沒有找到輸入的信息printf("職工名單中沒有住這的!n");else printf("查詢成功!請繼續(xù)操作!n");else if(i=7)/輸入7,對電話號碼進行查詢p=head.next;printf("請輸入電話:");scanf("%d",&am
39、p;x.tele_num);j=0;for(p;p;p=p->next)if(p->tele_num=x.tele_num)+j;/如果存在這個人,那么j自加printf("n姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話n");printf("%s %c %d %d %s %s %s %dn",p->name,p->sex,p->born_date,p->work_date,p->degree,p->job,p->address,p->tele_num);if(j=0)/表示沒有找到輸
40、入的信息printf("職工名單中沒人用這個號碼!n");else printf("查詢成功!請繼續(xù)操作!n");else if(i!=0 && i!=1 && i!=2 && i!=3 && i!=4 && i!=5 && i!=6 && i!=7)/輸入任意不是上述數(shù)字的,那么久顯示輸入錯誤printf("輸入出錯!請再次輸入!n");printf("n");printf("tn"
41、);printf("t 職工信息查詢系統(tǒng) n");printf("t n");printf("t 0.退出查詢系統(tǒng),回到主菜單tt 1.對姓名進行查詢tnt 2.對出生年月進行查詢 tt 3.對學(xué)歷進行查詢tnt 4.對工作年月進行查詢 tt 5.對職務(wù)進行查詢tnt 6.對住址進行查詢 tt 7.對電話進行查詢tn"); printf("tn");/printf("0.退出查詢系統(tǒng),回到主菜單n1.對姓名進行查詢n2.對出生年月進行查詢n3.對工作年月進行查詢n4.對學(xué)歷進行查詢n5.對職務(wù)進行查詢n6
42、.對住址進行查詢n7.對電話號碼進行查詢n"); void print(SLNode *head)/職工信息的顯示for(SLNode *p=head->next;p;p=p->next)/輸出所有職工的信息printf("%s %c %d %d %s %s %s %dn",p->name,p->sex,p->born_date,p->work_date,p->degree,p->job,p->address,p->tele_num);void printLink(SLNode *head)/職工信息的顯
43、示printf("職工名單:n姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話n");print(head);void Listpaixu(SLNode *head)/職工信息的排序int i,n=0,m,flag=1;SLNode *p,*q,*s;if(head->next=NULL)/職工鏈表為空printf("名單中無職工信息,無法排序!nn");return;/printf("輸入出錯!請再次輸入!nn");printf("tt.n");printf("tt. 職工信息排序操作 .n
44、");printf("tt. .n"); printf("tt.t0.退出排序系統(tǒng),回到主菜單 .ntt.t1.對性別進行排序 .ntt.t2.對出生年月進行排序 .ntt.t3.對工作年月進行排序 .ntt.t4.對姓名進行排序 .n");printf("tt.n");while(1)printf("請輸入您要選擇的操作:");scanf("%d",&i);if(i=0)/輸入0,退出排序系統(tǒng),回到主菜單break;else if(i=1)/輸入1,對性別進行排序n=0,m,
45、flag=1;for(p=head;NULL!=p;p=p->next)/統(tǒng)計職工人數(shù)n+; for(m=1;flag&&m<=n;m+) flag=0; for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next)if(p->sex>q->sex)/p為當(dāng)前節(jié)點,p的性別>p的后繼節(jié)點的性別if(head=p)/p為頭結(jié)點 head->next=q->next; head=q; q->next=p;/交換節(jié)點信息q=head->next;p=head;elsep->
46、;next=q->next; q->next=p; s->next=q; p=q; q=p->next; flag=1; printf("排好序的信息如下:n");printLink(head);/輸出所有節(jié)點的信息return;else if(i=2)/輸入2,對出生年月進行排序n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)/統(tǒng)計職工人數(shù)n+; for(m=1;flag&&m<=n;n+)/循環(huán) flag=0; for(q=head->next,p=head,s=p;q;s=p
47、,p=q,q=q->next)if(p->born_date>q->born_date)/對出生年月進行排序if(head=p) head->next=q->next; head=q; q->next=p;q=head->next;p=head;elsep->next=q->next; q->next=p; s->next=q; p=q; q=p->next; flag=1;printf("排好序的信息如下:n");printLink(head);return;else if(i=3)/輸入3,按
48、工作時間進行排序n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)n+; for(m=1;flag&&m<=n;n+) flag=0; for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next)if(p->work_date>q->work_date)if(head=p) head->next=q->next; head=q; q->next=p;q=head->next;p=head;elsep->next=q->next; q
49、->next=p; s->next=q; p=q; q=p->next; flag=1;printf("排好序的信息如下:n");printLink(head);return;else if(i=4)n=0,m,flag=1;for(p=head;NULL!=p;p=p->next)n+; for(m=1;flag&&m<=n;n+) flag=0; for(q=head->next,p=head,s=p;q;s=p,p=q,q=q->next)if(p->name0>q->name0)if(head=p) head->next=q->next; head=q; q->next=p;q=head->next;p=head;elsep->next=q->next; q->next=p; s->next=q; p=q; q=p->next; flag=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 校友會與校企合作
- 2024葡萄酒年份酒經(jīng)銷商銷售數(shù)據(jù)分析與合同3篇
- 2025年度智能倉儲與車位買賣合同模板4篇
- 二零二五版酒店客房衛(wèi)生間防水處理與瓷磚粘貼合同2篇
- 2025年綠色生態(tài)住宅區(qū)物業(yè)管理招投標(biāo)及執(zhí)行合同3篇
- 學(xué)校的發(fā)展戰(zhàn)略和規(guī)劃
- 2025年度物流車輛安全責(zé)任合同協(xié)議書4篇
- 2025年度長途客運大巴租賃合同范本4篇
- 2024年08月中國光大銀行蘇州分行互聯(lián)網(wǎng)業(yè)務(wù)產(chǎn)品經(jīng)理崗招聘1人筆試歷年參考題庫附帶答案詳解
- 2024石斛花卉種植基地環(huán)保改造與采購合同3篇
- 教師培訓(xùn)課件信息技術(shù)與數(shù)字素養(yǎng)教育
- 外觀專利授權(quán)協(xié)議書
- 全套消防管理記錄本
- 項目管理實施規(guī)劃-無錫萬象城
- 浙大一院之江院區(qū)就診指南
- 離婚協(xié)議書電子版下載
- 完整版供應(yīng)商質(zhì)量審核檢查評分表(供應(yīng)商審核表)
- 項目日程表模板
- 質(zhì)量評估報告(光伏)
- 農(nóng)村個人房屋抵押借款合同
- 公衛(wèi)執(zhí)業(yè)醫(yī)師述職報告
評論
0/150
提交評論