職工信息管理系統(tǒng)課設(shè)報告_第1頁
職工信息管理系統(tǒng)課設(shè)報告_第2頁
職工信息管理系統(tǒng)課設(shè)報告_第3頁
職工信息管理系統(tǒng)課設(shè)報告_第4頁
職工信息管理系統(tǒng)課設(shè)報告_第5頁
已閱讀5頁,還剩45頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、*實踐教學*計算機與通信學院20年春季學期C程序設(shè)計課程設(shè)計精品資料題 目:職工信息管理系統(tǒng)專業(yè)班級:姓 名:學 號:指導教師:成 績:摘要職工信息管理系統(tǒng)是一個工作單位不可缺少的管理工具, 它管理的數(shù)據(jù)對于公司的決策者和管理者來說都至關(guān)重要, 所以職工信息管理系統(tǒng)應該能夠為用戶提供充足的信息和快捷的查詢手段。使用計算機對職工信息進行管理,具有手工管理所無法比擬的優(yōu)點,如檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高職工管理的效率, 也是公司的科學化、 正規(guī)化管理和與世界接軌的重要條件。本系統(tǒng)利用 C 語言開發(fā),實現(xiàn)了簡單的職工基本信息的錄入、追加、

2、修改、查詢、刪除等操作, 并且能利用文件系統(tǒng)長久地保留原始數(shù)據(jù)。 通過本系統(tǒng)的開發(fā),我們熟悉了面向過程的程序設(shè)計的基本方法和步驟,對于 C 語言有了更深入的理解,并且較好地掌握了 C 語言的編程方法和技術(shù)。關(guān)鍵字: C 語言;職工;信息管理系統(tǒng);函數(shù)一、需求分析 1二、總體設(shè)計 2三、詳細設(shè)計 33.1 數(shù)據(jù)定義 33.2 主函數(shù)設(shè)計 53.3 算法流程圖 6四、編碼 10五、測試 125.1 職工管理系統(tǒng)主界面 125.2 進入新增職工信息界面 135.3 進入刪除職工信息界面 145.4 進入查詢職工信息界面 165.5 進入修改職工信息界面 175.6 進入職工信息排序界面 195.7

3、退出系統(tǒng) 20六、設(shè)計總結(jié) 21致謝 23參考文獻 24附錄 25、需求分析1.1 問題描述對單位的職工進行管理,包括插入、刪除、查找、排序等功能。1.2 要求職工對象包括姓名(字符串)、性別(字符)、出生年月(數(shù)字)、工作年月 (數(shù)字)、學歷(字符串)、職務(字符串)、住址(字符串)、電話(字符串)等 信息。(1)新增一名職工:將新增職工對象按姓名以字典方式職工管理文件中。(2)刪除一名職工:從職工管理文件中刪除一名職工對象。(3)查詢:從職工管理文件中查詢符合某些條件的職工。(4)修改:檢索某個職工對象,對其某些屬性進行修改。(5)排序:按某種需要對職工對象文件進行排序。1.3 實現(xiàn)功能(

4、1)由鍵盤輸入職工對象,以文件方式保存。程序執(zhí)行時先將文件讀入內(nèi) 存。(2)對職工對象中的“姓名”按字典順序進行排序。(3)對排序后的職工對象進行增、刪、查詢、修改、排序等操作。1二、總體設(shè)計根據(jù)需求分析,為了實現(xiàn)系統(tǒng)功能,我確定職工信息管理系統(tǒng)總體模塊如圖1所示。職工管理系統(tǒng)排序職工信息修改職工信息一刪除職工信息新增職工信息查詢職工信息對姓名進行排序?qū)Τ錾暝逻M行排序?qū)ぷ髂暝逻M行排序?qū)π詣e進行排序?qū)﹄娫掃M行查詢對住址進行查詢對職務進行查詢對工作年月進行查詢對學歷進行查詢對出生年月進行查詢對姓名進行查詢精品資料圖1工資管理系統(tǒng)功能模塊圖三、詳細設(shè)計3.1 數(shù)據(jù)定義3.1.1 定義表結(jié)點(ty

5、pedef struct Node )ypedef struct Nodelong int born_time,work_time,tele_num;charsex,nameALLMAX,degreeALLMAX,jobALLMAX,addressALLMAX;struct Node *next;SLNode;3.1.2 定義職工信息(typedef struct Datatype )typedef structlong int born_time,work_time,tele_num;charnameALLMAX,sex,degreeALLMAX,jobALLMAX,addressALLMA

6、X;DataType;3.1.3 初始化鏈表(ListInitiate(SLNode *head)void ListInitiate(SLNode *head)/ 鏈表初始化if(*head=(SLNode *)malloc(sizeof(SLNode)=NULL) exit(1);/ 動態(tài)分配存儲空間(*head)-next=NULL;3.2 主函數(shù)設(shè)計根據(jù)詳細設(shè)計要求,可以得到主函數(shù)代碼及其對應的程序流程圖。在主函數(shù)中, 實現(xiàn)了友好的界面設(shè)計。 系統(tǒng)需要輸入職工的基本信息: 姓名、性別、出生年月、工作年月、學歷、職務、住址、電話等。這個系統(tǒng)還利用鍵盤輸入提供的主菜單服務,在主菜單中,有七種

7、操作的調(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(SLNode *head)3.3算法流程圖3.3.1保存函數(shù)Save()的算法流程圖如圖2所示。圖2保存函數(shù)Save()的算法流程圖3.3.2主函數(shù)程序流程

8、圖如圖3所示。精品資料新增職 工信息結(jié)束系統(tǒng)刪除職 工信息選1選擇操作IU 4 除述字外操 選上數(shù)之的選2圖3主函數(shù)程序流程圖選5職工信息排序修改職工信息3.3.3按姓名查找的算法流程圖如圖4所示。精品資料選擇除上述數(shù)字之外的操作圖4按姓名查找的算法流程圖3.3.4排序算法流程圖如圖5所示。排序算法流程圖精品資料四、編碼4.1總體框架0,退出職工管理系統(tǒng);1,提示依次輸入職工信息,錄入完畢自動返回主界面;2,提示輸入刪除的姓名,成功正確返回,錯誤有提示無此員工信息;3,會提示查詢方式:0.退出查詢系統(tǒng),回到主菜單 1.對姓名進行查詢2.對出生年月進行查詢3.對學歷進行查詢4.對工作年月進行查詢

9、,輸入相應編號進行查詢;4,提示輸入修改職工姓名,然后進行依次修改職工所有信息;5,提示:0.退出排序系統(tǒng),回到主菜單1.對性別進行排序2.對出生年月進行排序3.對工作年月進行排序4.對姓名進行排序,輸入號碼進行查詢。(詳細見附錄)4.2模塊設(shè)計模塊函數(shù)或數(shù)據(jù)結(jié)構(gòu)功能typedef struct Node定義鏈表結(jié)點鏈表數(shù)據(jù)類型typedef struct Datatype定義職工信息ListInitiate(SLNode *head)初始化鏈表SLNode *ListInsert(SLNode *head,DataType x)插入職工信息系統(tǒng)處理模塊ListDelete(SLNode *h

10、ead)刪除職工信息ListModify(SLNode *head)修改職工信息put(SLNode *head,FILE *fp)保存職工信息Listfind(SLNode head)查詢職工信息Listpaixu(SLNode *head)職工信息排序輸出模塊print(SLNode *head)顯本職工信息精品資料五、測試5.1 職工管理系統(tǒng)主界面在Visual C+ 6.0中運行本系統(tǒng),可以得到圖5所示的錄入職工人數(shù)界面。圖7主菜單界面在圖5中輸入0,進入圖6所示的系統(tǒng)主菜單界面求迎使用職工管理系統(tǒng)請輸入要錄入的職工人數(shù)新增職工職二1 職工1圖6系統(tǒng)主菜單界面5.2 進入新增職工信息界

11、面在圖6中輸入1,進入圖7所示的新增職工界面以職工請輸入您要因孽的操作:清麟普工竄盥 職務、住址、電話I 二 I 回 lilj、學歷、職務、住址、電話無蘭州 1015090112州 101&09S11290SBQB0 19001106(9 本科無六*主菜單q .性別,出生年月、工作年月 喳立超?9P)H00S0 lf09S0An 本科工.新增職工信息充六六六A 請輸入您要選3的操作:.犯.圖7新增職工信息界面5.3 進入刪除職工信息界面在圖7中輸入2,進入圖8所示的刪除職工信息界面 D:M icrasoft Visual Stud iaMyPrcjects11JX BDebu g*fJXE.e

12、xe *菜主息自|=且l=d息 雙根-1一一口 增詢工 番職自,.系唐理工工窗職職束寓K .名看爵的工擇職選除一要刪您要入入超成 .息息序改k 蘭號 Ar加 工工息必 統(tǒng)息息 六 58 - 型工工 , 加 六作 直 的 Nyg 2 4 hT-#“丸8 刪除職工信息界面精品資料5.4 進入查詢職工信息界面在圖8中輸入3,進入圖9所示的查詢職工信息界面dD;Microsoft Visual Etudict: MyPr句eels里程Debug*箱程XB,exc精品資料t .修改職工請輸入您魏直猛鏟尸 8.除晟功!請繼續(xù)操作!*主菜單*一KMXM-KMX.信息盤序”鬻上15.職工信息;丈火火火火火火火

13、進進進進話 姓于普 -111 &Ti Li 又又又rx13 5?回查查統(tǒng)進進查火 系月月行大. 詢年金* t os大 作退對花這火火火火火火火火火要、圖9查詢職工信息界面在圖9中輸入1,進入圖10所示的對姓名查詢界面f-*D;Microsoft Visual StudiotMyProject式.娟程XBTDmbijg、編程XB.bxb111人入 SR火火火火火火火火要名o.2,4,fr.屋日 大選:,任備火 統(tǒng)進進查文 系月月行火1 詢年窿火- 查生重大作 出出工住火操超*信 火工 頭職到詢詢回查杳火息火查大作大操火詢亍一丁一 丁一. 1 廣 4ZIk 進進進進日 名話 姓學?裂 rx rx又

14、又上詢詢詢3查查杳未Um、性別.出生年月、工作年月-學歷、職務、住址、電話本科先=ft| 1915098112曹天招 ?如麗麗0 19060000 查詢成功!繼續(xù)操作!h 1615098112火火火火火火火火要、退井花即統(tǒng)進進查火 系月月行大 詢年上大t os大 作回查查13 5?進進進進話 姓于普丈火火火火火火火圖10對姓名進行查詢5.5進入修改職工信息界面在圖10中先輸入0返回圖5所示的主菜單,再輸入4,進入11圖所示的修改職工信息界面li WMT a-ws(1.增職工信息A2.4.J1職工信息食六六六翁人六六六戲六/*食我 要選擇的操F,請輸入要修改的職二姓名,kn 里立超,性別、出生年

15、月、工作年月、學歷職務、住址、電話修改成功!請繼續(xù)操作!*主菜單*1.* 4.,工信息11 修改職工信息系統(tǒng)界面5.6進入職工信息排序界面在圖11中輸入5,進入圖12所示的職工信息排序界面。rHD; ,Microsoft Visual Studio,MyPrujectwl里程為BDebug期程JXB,ex此職工不存在,無法修改其信息!*王菜單*機結(jié)束宣理系統(tǒng) 2,刪除職工 4.all5,職工六/六六六*六六六六金/人食六六 請輸入您要選擇的操作,5職工信息排序操作jkx itu- iz w m rw ru at w v tv nr at m ru ru ru1 at v cu jw0 1 2

16、3 4 世年事_出性比工姓 rnp -J-T1J-T- 韭ix * rx又口心、工左層L 1口 11y- -1=尾 I 口圖12職工信息排序界面5.7退出系統(tǒng)在圖12中先輸入0返回圖5所示的主菜單,再輸入0退出職工管理系統(tǒng)圖13退出職工管理系統(tǒng)六、設(shè)計總結(jié)本次課程設(shè)計是圍繞數(shù)據(jù)結(jié)構(gòu)進行。 根據(jù)問題描述可知, 需要解決問題并不復雜, 整個問題只需要實現(xiàn)一個職工管理系統(tǒng)功能, 那就是在這個系統(tǒng)中實現(xiàn)對職工信息的插入、刪除、查詢、排序、修改以及保存。但是,為了實現(xiàn)該功能,卻需要優(yōu)秀的算法和數(shù)據(jù)結(jié)構(gòu)以保證實現(xiàn)的時間和空間效率。 把職工信息存儲在一個單鏈表中,利用指針實現(xiàn)對職工信息的各項基本操作。雖然設(shè)

17、計的程序完成了題目描述所需要實現(xiàn)的功能, 但是仍然存在不如人意的地方。 那就是可以排序上面多設(shè)計幾個算法。 實現(xiàn)多角度排序。 在這個系統(tǒng)中沒有職工序號的信息, 所以允許職工姓名相同,在很大程度上面,可能是的職工信息重復。經(jīng)過這次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計, 我們不僅及時鞏固的了數(shù)據(jù)結(jié)構(gòu)、算法、以及軟件工程的知識, 并明白數(shù)據(jù)結(jié)構(gòu)和算法對于程序時間和空間性能的影響, 及軟件工程提供的開發(fā)流程和工具對于實現(xiàn)特定功能程序的重要意義。當我們面對一個實際問題, 應該迅速根據(jù)問題性質(zhì)和特點抽象成特定的數(shù)據(jù)結(jié)構(gòu), 當然每個問題都有可能能夠抽象成多種數(shù)據(jù)結(jié)構(gòu), 每種數(shù)據(jù)結(jié)構(gòu)適應于不同的算法。 因此應該綜合考慮這樣的數(shù)據(jù)

18、結(jié)構(gòu)、 算法以及它們的空間和時間效率,然后從中選擇一個作為實現(xiàn)程序的基礎(chǔ)。此外,對程序的測試應該要仔細,根據(jù)模塊的特點和測試階段,采用各種軟件測試方法對程序進行測試, 確保各個模塊的正確性和完整性, 最后集成起來測試其是否正確和完整地實現(xiàn)了問題描述中要求的功能。致謝通過一周的努力, 我們順利完成這一次的課程設(shè)計。在這里,首先感謝指導老師 x 老師在知識和技術(shù)上的指導和幫助。 在 x 老師的幫助下, 我們克服了許多技術(shù)上的難題,順利地完成這次課程設(shè)計。 同時, 也要感謝與我同做一個課題的xxx 同學。在我們兩人的共同努力下,終于順利地完成了這次課程設(shè)計。參考文獻1 姜靈芝,余健. C 語言課程設(shè)

19、計案例精編.北京 :清華大學出版社,20082 王新,孫雷 . C 語言課程設(shè)計.北京 :清華大學出版社,20093 游洪躍、彭駿、譚斌.C 語言程序設(shè)計實驗與課程設(shè)計教程.北京 :清華大學出版社 ,20114 .王連相.C/C+程序設(shè)計上機指導與測試.北京:中國鐵道出版社,20065 C 語言函數(shù)手冊,機械工業(yè)出版社, 1999附錄#include #include #include #include #define ALLMAX 100 / 總共統(tǒng)計的職工的人數(shù)typedef struct Nodelong int born_date,work_date,tele_num;char sex

20、,nameALLMAX,degreeALLMAX,jobALLMAX,addressALLMAX; struct Node *next;SLNode;typedef structlong int born_date,work_date,tele_num;char nameALLMAX,sex,degreeALLMAX,jobALLMAX,addressALLMAX; DataType;void ListInitiate(SLNode *head)/ 鏈表初始化if(*head=(SLNode *)malloc(sizeof(SLNode)=NULL) exit(1);/ 動態(tài)分配存儲空間 (*

21、head)-next=NULL;SLNode *ListInsert(SLNode *head,DataType x)/ 職工信息的插入姓名并按照升序排列SLNode *p,*q,*s;p=head-next;if(q=(SLNode *)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);strc

22、py(q-job,x.job);strcpy(q-address,x.address);if(head-next=NULL)/ 如果只有鏈表的頭結(jié)點,沒有其他的結(jié)點,直接插入在頭結(jié)點后面head-next=q;head-next-next=NULL;else/ 鏈表非空for(;p;p=p-next)if(p-next!=NULL)if(strcmp(p-name,)next-name,)0)/ 位于兩個結(jié)點之間s=p-next;p-next=q;q-next=s;break;/else if(strcmp(p-name,)=0)break;/如果姓名相同則

23、不插入信息else if(strcmp(p-name,)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-next;if(head-next=NULL)/ 鏈表為空,輸出:名單中無職工信息,無須刪

24、除!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( 刪除成功!請繼續(xù)操作! n);break;s=p;if(p=NULL)/ 鏈表本身為空printf(名單中無此職工信息,無須刪除!n);void ListModify(SLNode *head)/ 職

25、工信息的修改DataType x;SLNode *p;p=head-next;if(p=NULL)/ 鏈表本身為空printf(職工名單無職工信息,無須修改!n);return;printf( 請輸入要修改的職工姓名: n);scanf(%s,);for(;p;p=p-next)if(strcmp(,p-name)=0)/ 查找到了該職工的信息printf( 依次寫入該職工的新信息: n);printf( 請輸入職工信息: n 姓名、性別、出生年月、工作年月、學歷、職務、住址、電話 n);scanf(%s %c %d %d %s %s %s %d,p-name,&p-s

26、ex,&p-born_date,&p-work_date,p-degree,p-job,p-address,&p-te le_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)fprintf(fp,%s

27、 %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=NULL)/ 鏈表為空printf(名單中無職工信息,查詢失??! n);return;/返回主菜單printf(n);printf(t*n);pri

28、ntf(t 職工信息查詢操作n);printf(t n);printf(t 0.退出查詢系統(tǒng),回到主菜單 tt學歷進行查詢t nt 4. 對工作年月進行查詢1.對姓名進行查詢 t nt 2.對出生年月進行查詢tt 3.對tt 5. 對職務進行查詢 t nt 6. 對住址進行查詢tt 7.對電話進行查詢t n);printf(t*n);while(1)printf(請輸入您要選擇的操作:);scanf(%d,&i);if(i=0)/ 輸入 0 ,退出查詢系統(tǒng),回到主菜單break;else if(i=1)/ 輸入 1 ,對姓名進行查詢p=head.next;printf( 請輸入姓名: );sc

29、anf(%s,);j=0;for(p;p;p=p-next)if(strcmp(p-name,)=0)/如果存在這個人,那么 j 自加+j;printf(n 姓名、性別、出生年月、工作年月、學歷、職務、住址、電話 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_n um);if(j=0)/ 表示沒有找到輸入的信息printf(職工名單中不存在此人!n);else printf( 查詢成功!繼續(xù)操作! n);els

30、e if(i=2)/ 輸入 2 ,對出生年月進行查詢p=head.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 姓名、性別、出生年月、工作年月、學歷、職務、住址、電話 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

31、_n um);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-work_date=x.work_date)+j;/如果存在這個人,那么j自加printf(n 姓名、性別、出生年月、工作年月、學歷、職務、住址、電話 n);printf(%s %c %d %d %s %s %s %dn,p

32、-name,p-sex,p-born_date,p-work_date,p-degree,p-job,p-address,p-tele_n um);if(j=0)/ 表示沒有找到輸入的信息printf(職工名單中沒有這個時間工作的!n);else printf( 查詢成功!請繼續(xù)操作! n);else if(i=3)/ 輸入3 ,對學歷進行查詢p=head.next;printf( 請輸入學歷: );scanf(%s,x.degree);j=0;for(p;p;p=p-next)if(strcmp(p-degree,x.degree)=0)+j;/如果存在這個人,那么j自加printf(n 姓

33、名、性別、出生年月、工作年月、學歷、職務、住址、電話 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_n um);if(j=0)/ 表示沒有找到輸入的信息printf(職工名單中沒有這種學歷的!n);else printf( 查詢成功!請繼續(xù)操作! n);else if(i=5)/ 輸入5 ,對職務進行查詢p=head.next;printf( 請輸入職務: );scanf(%s,x.job);j=0;for(p;p;p=p-next)

34、if(strcmp(p-job,x.job)=0)+j;/如果存在這個人,那么j自加printf(n 姓名、性別、出生年月、工作年月、學歷、職務、住址、電話 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_n um);if(j=0)/ 表示沒有找到輸入的信息printf(職工名單中沒有這種職務的!n);else printf( 查詢成功!請繼續(xù)操作! n);else if(i=6)/ 輸入 6 ,對住址進行查詢p=head.next;p

35、rintf( 請輸入住址: );scanf(%s,x.address);j=0;for(p;p;p=p-next)if(strcmp(p-address,x.address)=0)+j;/如果存在這個人,那么j自加printf(n 姓名、性別、出生年月、工作年月、學歷、職務、住址、電話 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_n um);if(j=0)/ 表示沒有找到輸入的信息printf(職工名單中沒有住這的!n);else

36、printf( 查詢成功!請繼續(xù)操作!n);else if(i=7)/ 輸入 7 ,對電話號碼進行查詢p=head.next;printf( 請輸入電話: );scanf(%d,&x.tele_num);j=0;for(p;p;p=p-next)if(p-tele_num=x.tele_num)+j;/如果存在這個人,那么j自加printf(n 姓名、性別、出生年月、工作年月、學歷、職務、住址、電話 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

37、-tele_n um);if(j=0)/ 表示沒有找到輸入的信息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ù)字的,那么久顯示輸入錯誤n);printf( 輸入出錯!請再次輸入!printf(n);printf(t*n);printf(t職工信息查詢系統(tǒng)n);printf(tn);printf(t0. 退出查詢系統(tǒng),回到主菜單回到主菜單tt1.對姓名進行查詢t nt 2.對出生年月進行查詢tt3

38、. 對學歷進行查詢tnt 4. 對工作年月進行查詢tt5.對職務進行查詢 t nt 6.對住址進行查詢tt7. 對電話進行查詢t n);printf(t *n);/printf(0. 退出查詢系統(tǒng),回到主菜單 n1. 對姓名進行查詢 n2. 對出生年月進行查詢n3. 對工作年月進行查詢n4. 對學歷進行查詢n5.對職務進行查詢n6.對住址進行查詢n7.對電話號碼進行查詢n); void print(SLNode *head)/ 職工信息的顯示SLNode *p;for(p=head-next;p!=NULL;p=p-next)/ 輸出所有職工的信息printf(%s %c %d %d %s %

39、s %s %dn,p-name,p-sex,p-born_date,p-work_date,p-degree,p-job,p-address,p-tele_n um); void printLink(SLNode *head)/ 職工信息的顯示printf( 職工名單: n 姓名、性別、出生年月、工作年月、學歷、職務、住址、電話 n);print(head);void Listpaixu(SLNode *head)/ 職工信息的排序 (int i,n=0,m,flag=1;SLNode *p,*q,*s;if(head-next=NULL)/ 職工鏈表為空printf(名單中無職工信息,無法排

40、序! nn);return;)/printf(輸入出錯!請再次輸入!nn);printf(tt.n);printf(tt.職工信息排序操作.n);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

41、,flag=1;for(p=head;NULL!=p;p=p-next)/統(tǒng)計職工人數(shù)n+;for(m=1;flag&mnext,p=head,s=p;q;s=p,p=q,q=q-next) if(p-sexq-sex)/p為當前節(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-next=q-next;q-next=p;s-next=q;p=q;q=p-next;flag=1;printf( 排好序的信息如下: n);printLink(head);

42、/ 輸出所有節(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&mnext,p=head,s=p;q;s=p,p=q,q=q-next)if(p-born_dateq-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

43、=1;printf( 排好序的信息如下: n);printLink(head);return;else if(i=3)/ 輸入 3 ,按工作時間進行排序n=0,m,flag=1;for(p=head;NULL!=p;p=p-next)n+;for(m=1;flag&mnext,p=head,s=p;q;s=p,p=q,q=q-next)if(p-work_dateq-work_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

44、-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&mnext,p=head,s=p;q;s=p,p=q,q=q-next) if(p-name0q-name0)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-ne

45、xt; flag=1; printf(排好序的信息如下:n); printLink(head);return; else if(i!=0&i!=1&i!=2&i!=3&i!=4) printf(輸入出錯!請再次輸入!nn);printf(tt.n); printf(tt.職工信息排序系統(tǒng).n);printf(tt.n);printf(tt.t0.退出排序系統(tǒng),回到 主菜單.ntt.t1.對性別進行排序.ntt.t2.對出生年月進行排序.ntt.t3.對工作年月進行排序.ntt.t4.顯示全部職工信息.n);printf(tt.n);/printf(0.退出排序系統(tǒng),回到主菜單n1.對性別進行排序n2.

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論