課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告-職工管理系統(tǒng)_第1頁(yè)
課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告-職工管理系統(tǒng)_第2頁(yè)
課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告-職工管理系統(tǒng)_第3頁(yè)
課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告-職工管理系統(tǒng)_第4頁(yè)
課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告-職工管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

PAGEPAGE33課程設(shè)計(jì)報(bào)告課程名稱(chēng):院(系):專(zhuān)業(yè)班級(jí):學(xué)號(hào):姓名:指導(dǎo)老師:承諾書(shū)鄭重聲明:本人所呈交的課程設(shè)計(jì)是本人在導(dǎo)師指導(dǎo)下獨(dú)立撰寫(xiě)并完成的,課程設(shè)計(jì)沒(méi)有剽竊、抄襲、造假等違反學(xué)術(shù)道德、學(xué)術(shù)規(guī)范和侵權(quán)行為。本課程設(shè)計(jì)不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫(xiě)過(guò)的研究成果,如果引用則標(biāo)識(shí)出了出處。對(duì)本課程設(shè)計(jì)的研究做出貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式標(biāo)明。課程設(shè)計(jì)與資料若有不實(shí)之處,本人承擔(dān)一切相關(guān)責(zé)任。特此聲明。簽名:年月日

目錄1課程設(shè)計(jì)任務(wù)與要求 31.1課程設(shè)計(jì)目的 31.1.1問(wèn)題描述 41.1.2詳細(xì)要求 41.2問(wèn)題分析 42概要設(shè)計(jì) 52.1總體設(shè)計(jì)思想 52.2系統(tǒng)功能設(shè)計(jì) 62.3模塊函數(shù)構(gòu)造 63詳細(xì)設(shè)計(jì) 73.1抽象數(shù)據(jù)類(lèi)型定義 73.2主函數(shù)設(shè)計(jì) 73.3查找算法設(shè)計(jì) 83.4排序算法設(shè)計(jì) 94課程設(shè)計(jì)總結(jié) 115.1該課程設(shè)計(jì)的特點(diǎn) 115.2存在的不足 115.3心得體會(huì) 11參考文獻(xiàn) 11簡(jiǎn)單的職工管理系統(tǒng)1課程設(shè)計(jì)任務(wù)與要求1.1課程設(shè)計(jì)目的《數(shù)據(jù)結(jié)構(gòu)》是計(jì)算機(jī)專(zhuān)業(yè)一門(mén)重要的專(zhuān)業(yè)技術(shù)基礎(chǔ)課程。本課程較系統(tǒng)地介紹了軟件設(shè)計(jì)中常用的數(shù)據(jù)結(jié)構(gòu)以及相應(yīng)的存儲(chǔ)結(jié)構(gòu)和實(shí)現(xiàn)算法,介紹了常用的多種查找和排序技術(shù)。本課程將為整個(gè)專(zhuān)業(yè)的學(xué)習(xí)以及軟件設(shè)計(jì)水平的提高打下良好的基礎(chǔ)。為了學(xué)好《數(shù)據(jù)結(jié)構(gòu)》,必須掌握編寫(xiě)一些在特定數(shù)據(jù)結(jié)構(gòu)上的算法,并通過(guò)上機(jī)調(diào)試,更好地掌握各種數(shù)據(jù)結(jié)構(gòu)及其特點(diǎn),此次《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計(jì)目的正在于此。經(jīng)過(guò)本次課程設(shè)計(jì),我們對(duì)于數(shù)據(jù)結(jié)構(gòu)基本理論和存儲(chǔ)結(jié)構(gòu)及算法設(shè)計(jì)將有更加深入的理解,并提高我們?cè)趯?shí)際設(shè)計(jì)操作中系統(tǒng)分析、結(jié)構(gòu)確定、算法選擇、數(shù)學(xué)建模和信息加工的能力,提高我們的C/C++語(yǔ)言程序設(shè)計(jì)能力,以及培養(yǎng)學(xué)我們編寫(xiě)程序設(shè)計(jì)文檔的能力。1.1.1問(wèn)題描述根據(jù)題目要求,由于職工信息是存放在文件中,所以應(yīng)提供文件的輸入、輸出等操作;在程序中需要瀏覽職工的信息,應(yīng)提供顯示、查找、排序等操作;另外還應(yīng)提供鍵盤(pán)式選擇菜單實(shí)現(xiàn)功能選擇。1.1.2詳細(xì)要求(1)問(wèn)題說(shuō)明設(shè)計(jì)一個(gè)簡(jiǎn)單的職工管理系統(tǒng),按照課程設(shè)計(jì)的要求,實(shí)現(xiàn)對(duì)職工信息的新增、修改、插入、刪除、以及排序操作。(2)輸入要求由系統(tǒng)管理員依次輸入現(xiàn)有職工和新增職工的以下信息:姓名(可以重復(fù))、性別、出生年月、工作年月、學(xué)歷、職務(wù)、地址、電話等信息,并且注意輸入時(shí)姓名、學(xué)歷、職務(wù)、地址為字符串形式,性別為字符,其余的為長(zhǎng)整型數(shù)字。(3)輸出要求系統(tǒng)管理員根據(jù)公司的人員流動(dòng)情況,選擇系統(tǒng)提供的各項(xiàng)功能進(jìn)行操作,并輸出相應(yīng)的結(jié)果。1.2問(wèn)題分析(1)具體要求簡(jiǎn)單的職工管理系統(tǒng)主要實(shí)現(xiàn)以下功能:=1\*GB3①新增一名職工:將新增職工對(duì)象按姓名以字典方式職工管理文件中。=2\*GB3②刪除一名職工:從職工管理文件中刪除一名職工對(duì)象。=3\*GB3③查詢(xún):從職工管理文件中查詢(xún)符合某些條件的職工。=4\*GB3④修改:檢索某個(gè)職工對(duì)象,對(duì)其某些屬性進(jìn)行修改。=5\*GB3⑤排序:按某種需要對(duì)職工對(duì)象文件進(jìn)行排序。要求:職工信息包括姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話等信息。(2)實(shí)現(xiàn)提示:=1\*GB3①由鍵盤(pán)輸入職工對(duì)象,以文件方式保存。程序執(zhí)行時(shí)先將文件讀入內(nèi)存。=2\*GB3②對(duì)職工對(duì)象中的"姓名"按字典順序進(jìn)行排序。=3\*GB3③對(duì)排序后的職工對(duì)象進(jìn)行增、刪、查詢(xún)、修改、排序等操作。2概要設(shè)計(jì)2.1總體設(shè)計(jì)思想根據(jù)職工管理系統(tǒng)問(wèn)題的描述和詳細(xì)需求分析,要達(dá)到上述功能,鏈表的數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)職工信息,并對(duì)其進(jìn)行相應(yīng)的插入、刪除、修改、查詢(xún)、排序、保存等操作。(1)輸入功能的實(shí)現(xiàn):要想實(shí)現(xiàn)職工管理系統(tǒng)的輸入,必須要建立一個(gè)職工信息系統(tǒng)的抽象數(shù)據(jù)類(lèi)型,其中職工信息以鏈表的存儲(chǔ)方式實(shí)現(xiàn)。(2)系統(tǒng)處理功能的實(shí)現(xiàn):系統(tǒng)管理員根據(jù)公司的人員流動(dòng)情況,在提示信息的提示下,選擇相應(yīng)的服務(wù)進(jìn)行操作。(3)輸出的實(shí)現(xiàn):根據(jù)選擇的操作,輸出與之對(duì)應(yīng)的信息。綜上可以繪制出職工管理問(wèn)題的系統(tǒng)流程圖,如圖所示2.2系統(tǒng)功能設(shè)計(jì)根據(jù)職工管理系統(tǒng)問(wèn)題的分析和設(shè)計(jì)要求,可以得到該職工管理系統(tǒng)可以分為五個(gè)模塊:職工信息添加模塊、職工信息修改模塊、職工信息刪除模塊、職工信息查詢(xún)模塊、職工信息排序模塊。其系統(tǒng)功能結(jié)構(gòu)如圖所示。2.3模塊函數(shù)構(gòu)造根據(jù)系統(tǒng)功能結(jié)構(gòu)圖的描述,可以構(gòu)造出該系統(tǒng)的抽象數(shù)據(jù)類(lèi)型和相對(duì)應(yīng)的函數(shù),其方法名和功能如表1所示。表1函數(shù)功能表模塊函數(shù)或數(shù)據(jù)結(jié)構(gòu)功能鏈表數(shù)據(jù)類(lèi)型typedefstructNode定義鏈表結(jié)點(diǎn)typedefstructDatatype定義職工信息ListInitiate(SLNode**head)初始化鏈表系統(tǒng)處理模塊SLNode*ListInsert(SLNode*head,DataTypex)插入職工信息ListDelete(SLNode*head)刪除職工信息ListModify(SLNode*head)修改職工信息bc(SLNode*head,FILE*fp)保存職工信息Listfind(SLNodehead)查詢(xún)職工信息Listpaixu(SLNode*head)職工信息排序輸出模塊print(SLNode*head)顯示職工信息3詳細(xì)設(shè)計(jì)3.1抽象數(shù)據(jù)類(lèi)型定義(1)定義表結(jié)點(diǎn)(typedefstructNode)typedefstructNode{ longintborn_time,work_time,tele_num; charsex,name[ALLMAX],degree[ALLMAX],job[ALLMAX],address[ALLMAX]; structNode*next;}SLNode;(2)定義職工信息(typedefstructDatatype)typedefstruct{ longintborn_time,work_time,tele_num; charname[ALLMAX],sex,degree[ALLMAX],job[ALLMAX],address[ALLMAX];}DataType;(3)初始化鏈表(ListInitiate(SLNode**head))voidListInitiate(SLNode**head)//鏈表初始化{ if((*head=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit(1);//動(dòng)態(tài)分配存儲(chǔ)空間 (*head)->next=NULL;}3.2主函數(shù)設(shè)計(jì)根據(jù)詳細(xì)設(shè)計(jì)要求,可以得到主函數(shù)代碼及其對(duì)應(yīng)的程序流程圖:在主函數(shù)中,實(shí)現(xiàn)了友好的界面設(shè)計(jì)。系統(tǒng)需要輸入職工的基本信息:姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話等。這個(gè)系統(tǒng)還利用鍵盤(pán)輸入提供的主菜單服務(wù),在主菜單中,有七種操作的調(diào)用:新增職工信息:SLNode*ListInsert(SLNode*head,DataTypex)查詢(xún)職工信息:Listfind(SLNodehead)刪除職工信息:ListDelete(SLNode*head)修改職工信息:ListModify(SLNode*head)職工信息排序:Listpaixu(SLNode*head)保存職工信息:bc(SLNode*head,FILE*fp)顯示職工信息:print(SLNode*head)主函數(shù)代碼見(jiàn)附錄1主函數(shù)程序流程圖如圖所示:3.3查找算法設(shè)計(jì)在查詢(xún)算法中,職工管理系統(tǒng)提供了七種查詢(xún)操作,實(shí)現(xiàn)了系統(tǒng)的人性化查詢(xún)操作。這些查詢(xún)操作分別為:對(duì)姓名進(jìn)行查詢(xún),對(duì)性別進(jìn)行查詢(xún),對(duì)出生年月進(jìn)行查詢(xún),對(duì)工作年月進(jìn)行查詢(xún),對(duì)學(xué)歷進(jìn)行查詢(xún),對(duì)職位進(jìn)行查詢(xún),對(duì)住址進(jìn)行查詢(xún),對(duì)電話進(jìn)行查詢(xún)等一些列操作。查找算法中,利用鏈表的指針的移動(dòng)掃描整個(gè)職工信息表,利用strcmp()函數(shù)判斷字符串是否匹配。查詢(xún)算法程序流程圖如圖所示:3.4排序算法設(shè)計(jì)在排序算法中,職工管理系統(tǒng)提供了四種查詢(xún)操作,實(shí)現(xiàn)了系統(tǒng)的基本排序操作。這些排序操作分別為:對(duì)姓名進(jìn)行排序,對(duì)性別進(jìn)行排序,對(duì)出生年月進(jìn)行排序,對(duì)工作年月進(jìn)行排序,等一些列操作。排序算法中,利用鏈表的指針的移動(dòng)掃描整個(gè)職工信息表,利用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)//對(duì)出生年月進(jìn)行排序 { if(head==p) { head->next=q->next; head=q; q->next=p; q=head->next; p=head; } else { p->next=q->next; q->next=p; s->next=q; p=q; q=p->next; } flag=1; } }排序算法流程圖如圖所示:4課程設(shè)計(jì)總結(jié)5.1該課程設(shè)計(jì)的特點(diǎn)本次課程設(shè)計(jì)是圍繞數(shù)據(jù)結(jié)構(gòu)進(jìn)行。根據(jù)問(wèn)題描述可知,需要解決問(wèn)題并不復(fù)雜,整個(gè)問(wèn)題只需要實(shí)現(xiàn)一個(gè)職工管理系統(tǒng)功能,那就是在這個(gè)系統(tǒng)中實(shí)現(xiàn)對(duì)職工信息的插入、刪除、查詢(xún)、排序、修改以及保存。但是,為了實(shí)現(xiàn)該功能,卻需要優(yōu)秀的算法和數(shù)據(jù)結(jié)構(gòu)以保證實(shí)現(xiàn)的時(shí)間和空間效率。把職工信息存儲(chǔ)在一個(gè)單鏈表中,利用指針實(shí)現(xiàn)對(duì)職工信息的各項(xiàng)基本操作。5.2存在的不足雖然設(shè)計(jì)的程序完成了題目描述所需要實(shí)現(xiàn)的功能,但是仍然存在不盡人意的地方。那就是可以再排序上面多設(shè)計(jì)幾個(gè)算法。實(shí)現(xiàn)多角度排序。在這個(gè)系統(tǒng)中沒(méi)有職工序號(hào)的信息,所以允許職工姓名相同,在很大程度上面,可能是的職工信息重復(fù)。5.3心得體會(huì)經(jīng)過(guò)這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì),我們不僅及時(shí)鞏固的了數(shù)據(jù)結(jié)構(gòu)、算法、以及軟件工程的知識(shí),并對(duì)數(shù)據(jù)結(jié)構(gòu)和算法的配合對(duì)于程序時(shí)間和空間性能的影響以及軟件工程提供的開(kāi)發(fā)流程和工具對(duì)于實(shí)現(xiàn)特定功能程序的重要意義。當(dāng)我們面對(duì)一個(gè)實(shí)際問(wèn)題,應(yīng)該迅速根據(jù)問(wèn)題性質(zhì)和特點(diǎn)抽象成特定的數(shù)據(jù)結(jié)構(gòu),當(dāng)然每個(gè)問(wèn)題都有可能能夠抽象成多種數(shù)據(jù)結(jié)構(gòu),每種數(shù)據(jù)結(jié)構(gòu)適應(yīng)于不同的算法,例如,馬踏棋盤(pán)問(wèn)題就可以采用廣度優(yōu)先搜索或深度優(yōu)先搜索來(lái)解決。因此此時(shí)就應(yīng)該綜合考慮這樣的數(shù)據(jù)結(jié)構(gòu)、算法以及它們的空間和時(shí)間效率,然后從中選擇一個(gè)作為實(shí)現(xiàn)程序的基礎(chǔ)。此外,對(duì)程序的測(cè)試應(yīng)該要仔細(xì),根據(jù)模塊的特點(diǎn)和測(cè)試階段,采用各種軟件測(cè)試方法對(duì)程序進(jìn)行測(cè)試,確保各個(gè)模塊的正確性和完整性,最后集成起來(lái)測(cè)試其是否正確和完整地實(shí)現(xiàn)了問(wèn)題描述中要求的功能。參考文獻(xiàn)[1]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)[M].清華大學(xué)出版社,2002.9附源代碼#include<stdio.h>#include<string.h>#include<malloc.h>#include<stdlib.h>#defineMAX100typedefstructNode{ longintborn_time,work_time,tele_num; charsex[MAX],name[MAX],degree[MAX],job[MAX],address[MAX]; structNode*next;}SLNode;typedefstruct{ longintborn_time,work_time,tele_num; charname[MAX],sex[MAX],degree[MAX],job[MAX],address[MAX];}DataType;voidListInitiate(SLNode**head){ if((*head=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit(1); (*head)->next=NULL;}voidbc(SLNode*head,FILE*fp){ SLNode*p; if((fp=fopen("職工名單.txt","w"))==NULL){// printf("無(wú)法打開(kāi)'職工名單.txt'!\n"); exit(0); } for(p=head->next;p;p=p->next) { fprintf(fp,"%s%s%d%d%s%s%s%d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num); } if(fclose(fp)) { printf("無(wú)法關(guān)閉'職工名單.txt'!\n");exit(0); }}SLNode*ListInsert(SLNode*head,DataTypex){ SLNode*p,*q,*s; p=head->next; if((q=(SLNode*)malloc(sizeof(SLNode)))==NULL)exit(1); q->born_time=x.born_time;q->work_time=x.work_time; q->tele_num=x.tele_num;strcpy(q->name,); strcpy(q->sex,x.sex);strcpy(q->degree,x.degree); strcpy(q->job,x.job);strcpy(q->address,x.address); if(head->next==NULL){ 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){ s=p->next; p->next=q; q->next=s; break; } elseif(strcmp(p->name,)==0)break; } elseif(strcmp(p->name,)<0&&p->next==NULL){ p->next=q; q->next=NULL; break; } if(strcmp(p->name,)>0){ s=head->next; head->next=q; q->next=s; break; } } } returnhead;}voidListDelete(SLNode*head){ SLNode*p,*s; charx[20]; s=head; p=head->next; if(head->next==NULL){ printf("名單中無(wú)職工信息,無(wú)須刪除!\n"); return; } printf("請(qǐng)輸入要?jiǎng)h除職工的姓名:\n"); scanf("%s",x); for(p;p;p=p->next){ if(strcmp(p->name,x)==0){ s->next=p->next; free(p); printf("刪除成功!請(qǐng)繼續(xù)操作!\n"); break; } s=p; } if(p==NULL){ printf("名單中無(wú)職工信息,無(wú)須刪除!\n"); }}voidListModify(SLNode*head){ DataTypex; SLNode*p; p=head->next; if(p==NULL){ printf("職工名單無(wú)職工信息,無(wú)須修改!\n"); return; } printf("請(qǐng)輸入要修改的職工姓名:\n"); scanf("%s",); printf("依次寫(xiě)入該職工的新信息:\n"); for(;p;p=p->next) { if(strcmp(,p->name)==0){ scanf("%s%s%d%d%s%s%s%d",p->name,p->sex,&p->born_time,&p->work_time,p->degree,p->job,p->address,&p->tele_num); printf("修改成功!請(qǐng)繼續(xù)操作!\n"); break; } } if(p==NULL) printf("此職工不存在,無(wú)法修改其信息!\n"); }voidListfind(SLNodehead){ inti,j; SLNode*p; DataTypex; if(head.next==NULL){ printf("名單中無(wú)職工信息,無(wú)法查詢(xún)!\n"); return; } printf("\n"); printf("\t*********************************\n"); printf("\t*職工信息查詢(xún)操作*\n"); printf("\t**\n"); printf("\t*0.退出查詢(xún)系統(tǒng),回到主菜單\t\t1.對(duì)姓名進(jìn)行查詢(xún)\t*\n\t*2.對(duì)出生年月進(jìn)行查詢(xún)\t\t3.對(duì)學(xué)歷進(jìn)行查詢(xún)\t*\n\t*4.對(duì)工作年月進(jìn)行查詢(xún)\t\t5.對(duì)職務(wù)進(jìn)行查詢(xún)\t*\n\t*6.對(duì)住址進(jìn)行查詢(xún)\t\t7.對(duì)電話進(jìn)行查詢(xún)\t*\n");printf("\t*********************************\n"); printf("請(qǐng)輸入您要選擇的操作:"); scanf("%d",&i); switch(i) { case0:break; case1: p=head.next; printf("請(qǐng)輸入姓名:"); scanf("%s",); j=0; for(p;p;p=p->next){ if(strcmp(p->name,)==0){ ++j; printf("%s%s%d%d%s%s%s%d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num); } } if(j==0) printf("職工名單中不存在此人!\n"); elseprintf("查詢(xún)成功!請(qǐng)繼續(xù)操作!\n"); break; case2: p=head.next; printf("請(qǐng)輸入出生年月:"); scanf("%d",&x.born_time); j=0; for(p;p;p=p->next){ if(p->born_time==x.born_time){ ++j; printf("%s%s%d%d%s%s%s%d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num); } } if(j==0) printf("職工名單中沒(méi)有這個(gè)時(shí)間出生的!\n"); elseprintf("查詢(xún)成功!請(qǐng)繼續(xù)操作!\n"); break; case3: p=head.next; printf("請(qǐng)輸入學(xué)歷:"); scanf("%s",x.degree); j=0; for(p;p;p=p->next){ if(strcmp(p->degree,x.degree)==0){ ++j; printf("%s%s%d%d%s%s%s%d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num); } } if(j==0) printf("職工名單中沒(méi)有這種學(xué)歷的!\n"); elseprintf("查詢(xún)成功!請(qǐng)繼續(xù)操作!\n"); break; case4: p=head.next; printf("請(qǐng)輸入工作年月:"); scanf("%d",&x.work_time); j=0; for(p;p;p=p->next){ if(p->work_time==x.work_time){ ++j; printf("%s%s%d%d%s%s%s%d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num); } } if(j==0) printf("職工名單中沒(méi)有這個(gè)時(shí)間工作的!\n"); elseprintf("查詢(xún)成功!請(qǐng)繼續(xù)操作!\n"); break; case5: p=head.next; printf("請(qǐng)輸入職務(wù):"); scanf("%s",x.job); j=0; for(p;p;p=p->next){ if(strcmp(p->job,x.job)==0){ ++j; printf("%s%s%d%d%s%s%s%d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num); } } if(j==0) printf("職工名單中沒(méi)有這種職務(wù)的!\n"); elseprintf("查詢(xún)成功!請(qǐng)繼續(xù)操作!\n"); break; case6: p=head.next; printf("請(qǐng)輸入住址:"); scanf("%s",x.address); j=0; for(p;p;p=p->next){ if(strcmp(p->address,x.address)==0){ ++j; printf("%s%s%d%d%s%s%s%d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num); } } if(j==0) printf("職工名單中沒(méi)有住這的!\n"); elseprintf("查詢(xún)成功!請(qǐng)繼續(xù)操作!\n"); break; case7: p=head.next; printf("請(qǐng)輸入電話:"); scanf("%d",&x.tele_num); j=0; for(p;p;p=p->next) { if(p->tele_num==x.tele_num) { ++j; printf("%s%s%d%d%s%s%s%d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num); } } if(j==0) printf("職工名單中沒(méi)人用這個(gè)號(hào)碼!\n"); elseprintf("查詢(xún)成功!請(qǐng)繼續(xù)操作!\n"); break; default: printf("輸入出錯(cuò)!請(qǐng)?jiān)俅屋斎耄n"); } }voidprint(SLNode*head){ for(SLNode*p=head->next;p;p=p->next) printf("%s%s%d%d%s%s%s%d\n",p->name,p->sex,p->born_time,p->work_time,p->degree,p->job,p->address,p->tele_num);}voidListpaixu(SLNode*head){ inti,n=0,m,flag=1; SLNode*p,*q,*s; if(head->next==NULL){ printf("名單中無(wú)職工信息,無(wú)法排序!\n\n"); return; } printf("\t\t~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~\n"); printf("\t\t~.~職工信息排序操作~.~\n"); printf("\t\t~.~~.~\n");printf("\t\t~.~\t0.退出排序系統(tǒng),回到主菜單~.~\n\t\t~.~\t1.對(duì)性別進(jìn)行排序~.~\n\t\t~.~\t2.對(duì)出生年月進(jìn)行排序~.~\n\t\t~.~\t3.對(duì)工作年月進(jìn)行排序~.~\n\t\t~.~\t4.對(duì)姓名進(jìn)行排序~.~\n"); printf("\t\t~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~.~\n"); while(1) { printf("請(qǐng)輸入您要選擇的操作:"); scanf("%d",&i); if(i==0) break; elseif(i==1){ n=0,m,flag=1; for(p=head;NULL!=p;p=p->next) 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) { if(head==p) { head->next=q->next; head=q; q->next=p; q=head->next; p=head; } else { p->next=q->next; q->next=p; s->next=q; p=q; q=p->next; } flag=1; } } } printf("排好序的信息如下:\n姓名\t性別\t出生年月\t工作年月\t學(xué)歷\t職位\t住址\t電話\n"); print(head); return; } elseif(i==2){ 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->born_time>q->born_time) { if(head==p) { head->next=q->next; head=q; q->next=p; q=head->next; p=head; } else { p->next=q->next; q->next=p; s->next=q; p=q; q=p->next; } flag=1; } } } printf("排好序的信息如下:\n姓名\t性別\t出生年月\t工作年月\t學(xué)歷\t職位\t住址\t電話\n"); print(head); return; } elseif(i==3){ 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_time>q->work_time){ if(head==p){ head->next=q->next; head=q; q->next=p; q=head->next; p=head; } else{ p->next=q->next; q->next=p; s->next=q; p=q; q=p->next; } flag=1; } } } printf("排好序的信息如下:\n姓名\t性別\t出生年月\t工作年月\t學(xué)歷\t職位\t住址\t電話\n"); print(head); return; } elseif(i==4) { printf("排好序的信息如下:\n姓名\t性別\t出生年月\t工作年月\t學(xué)歷\t職位\t住址\t電話\n"); print(head); } elseif(i!=0&&i!=1&&i!=2&&i!=3&&i!=4) printf("輸入出錯(cuò)!請(qǐng)?jiān)俅屋斎?!\n\n");}}voidmenu(){ printf("\t★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★☆☆★\n"); printf("\t☆*主菜單*☆\n");printf("\t★**********★\n"); printf("\t☆☆\n"); printf("\t★0.結(jié)束管理系統(tǒng)\t\t\t\t1.新增職工信息\t★\n\t☆2.刪除職工信息\t\t\t\t3.查詢(xún)職工信息\t☆\n\t★4.修改職工信息\t\t\t\t5.職工信息排序\t★\n"); printf("\t☆☆\n");printf("\t★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★★☆☆★☆☆★☆☆★☆☆★\n");}/*SLNode*load(SLNode*head){ DataTypea; SLNode*p,*end; FILE*fp; if((fp=fopen("職工名單.txt","rb"))==NULL) { printf("\t無(wú)法打開(kāi)'職工名單.txt'!\n"); returnhead; } p=(SLNode*)malloc(sizeof(SLNode)); p=head; p->next=NULL; if(head==0){printf("文件內(nèi)沒(méi)有數(shù)據(jù)!");returnhead;} else { while(head!=0) {end=(SLNode*)malloc(sizeof(SLNode)); p->next=end; p=end; p->next=NULL; f

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論