C語言程序設(shè)計-職工信息管理系統(tǒng)(鏈表)_第1頁
C語言程序設(shè)計-職工信息管理系統(tǒng)(鏈表)_第2頁
C語言程序設(shè)計-職工信息管理系統(tǒng)(鏈表)_第3頁
C語言程序設(shè)計-職工信息管理系統(tǒng)(鏈表)_第4頁
C語言程序設(shè)計-職工信息管理系統(tǒng)(鏈表)_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精品文檔飄流爐N嘀/學冬 ZHEJIANG GONGSHANG UNIVERSITY 桁息與電子工程學院C語言課程設(shè)計職工信息管理系統(tǒng)設(shè)計實驗日期和時間:2011年06月27日06月29日實驗類別:課程設(shè)計實驗類型:設(shè)計性. 。1歡迎下載精品文檔驗環(huán)境操作系統(tǒng):windows xp編程工具:Microsoft Visual C+ 6.0開發(fā)環(huán)境:CP(U Inter(R)Core(TM)2QuadcpuQB2002.33GHz)內(nèi)存: 2.76GB硬盤: 228.3GB開發(fā)地點:現(xiàn)代教育中心201機房A17座IP : 7:、實驗?zāi)康暮鸵髮嶒災(zāi)康模海?1)使學生進一步理解

2、和掌握課堂上所學各種基本抽象數(shù)據(jù)類型的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)和操作算法。( 2)使學生進一步掌握程序設(shè)計、編寫、調(diào)試能力。( 3)使學生了解軟件開發(fā)的基本步驟和內(nèi)容。實驗要求:完成一個職工信息管理系統(tǒng)程序,具體內(nèi)容如下:( 1)在內(nèi)存中用鏈表記錄,在硬盤上用二進制文件保存。( 2)設(shè)計完的程序能夠以命令行或者菜單形式增加、刪除、更新和查詢數(shù)據(jù)的內(nèi)容。數(shù)據(jù)內(nèi)容能夠排序以方便查詢。( 3)數(shù)據(jù)庫中應(yīng)該有至少20 條記錄。3 歡迎下載。精品文檔3歡迎下載實驗內(nèi)容和結(jié)果(1)程序整體功能;1、系統(tǒng)總體框精品文檔2、模塊設(shè)計該程序主要分為 7 個模塊,分別是創(chuàng)建與添加模塊、顯示模塊、查找模塊、修改模塊、刪除

3、模塊、存檔模塊、文件統(tǒng)計模塊、退出模塊( 2)程序組成及各模塊/ 函數(shù)功能;創(chuàng)建與添加模塊 :該模塊的功能是輸入職工信息。函數(shù)為 void Add(Node*woker)原理: 采用尾插法, 先建立鏈表與頭結(jié)點, 新增一個結(jié)點, 鍵盤輸入職工號、職工姓名、職工性別、職工出生年月、職工學歷、職工職位、職工工資,將這些信息存儲到新增結(jié)點中, 將新增加的節(jié)點連到鏈表的尾端, 如此以往, 將尾結(jié)點的指針域置空, 這樣就得到了一條存儲職工信息的鏈表, 這樣就完成了職工信息的創(chuàng)建與增加。顯示模塊 :該模塊功能是顯示職工信息。函數(shù)為 void Disp(Node *woker)原理:先新建一個指針 P 指向

4、頭結(jié)點,判斷它的指針域是否為空,若為空,則輸出“沒有記錄可以顯示” ;若不為空,則輸出它的指針域所指向節(jié)點所儲存的職工信息, 并將該指針向后移一個結(jié)點, 直到 P 指向空, 即輸出了所有職工的信息,這樣就完成了所有職工信息的顯示。查找模塊 :該模塊功能是查找職工信息。函數(shù)為 void Tongji(Node *woker)原理:該模塊分為兩種查找方法,分別是按職工號查找和按職工姓名查找,因為這兩種查找方法雷同, 所以這里將只解釋按職工號查找的原理。 先鍵盤輸入一個要查找的職工號并新建一個指針P 指向頭結(jié)點,判斷它的指針域是否為空,若為空,則輸出“沒有資料可以統(tǒng)計分類” ,若不為空,則判斷它的指

5、針域所指向節(jié)點所儲存的職工信息中的職工號, 若相等, 則輸出這個職工的其他所有信息,并將 P 指向下一個結(jié)點, 再次進行判斷, 直到 P 指向空, 即輸出了所有查找到的信息。若不相等,則 P 指向下一個結(jié)點,再次進行判斷,直到 P 指向空,即輸出了所有查找到的信息,這樣就完成了職工信息的查找。修改模塊 : 該模塊功能是修改職工信息。 函數(shù)為 void change(Node *woker)原理:根據(jù)查找原理,查找到要修改信息的職工,刪除這一節(jié)點,并新建一個節(jié)點, 鍵盤輸入想要修改的內(nèi)容, 并儲存到新的結(jié)點中, 將新的節(jié)點連接到鏈表中原先刪除結(jié)點的位子,這樣就完成了職工信息的修改。刪除模塊 :該

6、模塊功能是刪除管理職工信息。函數(shù)為 void dismiss(Node*woker)根據(jù)查找的原理, 查找到要修改信息的職工, 刪除這一節(jié)點, 并將其前驅(qū)結(jié)點的指針域指向其后繼結(jié)點,這樣就完成了職工信息的刪除。存檔模塊: 將內(nèi)存中的信息存儲到文件中。函數(shù)為 void save(Node *woker)原理:打開文件,新建一個指針 P 指向頭結(jié)點,判斷它的指針域是否為空,若為空,則輸出“無記錄” ,若不為空,則將這個職工的所有信息輸入到文件中,并將 P 指向下一個結(jié)點,直到 P 指向空,即輸入了的信息,文件統(tǒng)計模塊: 打開文件,統(tǒng)計職工數(shù)目,并輸出。函數(shù)為 void load(Node*woke

7、r)退出模塊: 該模塊功能是退出管理檔案。3)重要數(shù)據(jù)結(jié)構(gòu),重要模塊/ 函數(shù)算法;1:創(chuàng)建與添加模塊:/ 添加記錄/ 先用于輸入職工號, 也用于判斷是否跳出循void Add(Node *woker)Node *p,*r,*s;char n10;環(huán)r=woker;s=woker->next; /while(r->next!=NULL) /點r=r->next;/使 s 為第一個有用的結(jié)點這個循環(huán)的作用是使r 為最后一個有用的結(jié)將指針置于最末尾8 歡迎下載。while(1)提示 : 輸入 0 則返回主菜單!n");printf(">>>&g

8、t;>>>>>>printf("n 請你輸入職工號:");scanf("%s",n);if(strcmp(n,"0")=0) break;申請空間p=(Node *)malloc(sizeof(Node); /strcpy(p->data.num,n);printf("n 請輸入姓名 :");scanf("%s",p->);printf("n 請輸入性別 :");scanf("%s",p-&

9、gt;data.sex);printf("n 請輸入出生年月 :");scanf("%s",&p->data.birthday);printf("n 請輸入學歷 :");scanf("%s",&p->data.degree);printf("n請輸入職位:");scanf("%s",&p->data.position);printf("n請輸入工資:");scanf("%s",&p-&g

10、t;data.salary);printf(">>>>>>>>>>p->next=NULL;r->next=p; /新鏈表r=p; /提示 : 已經(jīng)完成一條記錄的添加。 n");這一步是必需的 , 將 p 與先前的鏈表連起來構(gòu)成一條也是必需的 . 將 r 又重設(shè)為新鏈的最后一個有用結(jié)點2:顯示模塊void Disp(Node *woker)/ 輸出職工信息 Node *p; p=woker->next; if(!p) printf("n>>>>>>&g

11、t;>>> 提示 : 沒有記錄可以顯示!n");return; printf("tttt顯示結(jié)果 n");printf(" 職工號 職工姓名 職工性別 職工生日 職工學歷職工職位職工工資 n"); while(p) printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.num,p->,p->data .sex,p->data.birthday,p->data.degree,p->data.positio

12、n,p->data.salary);p=p->next; 3:查找模塊void Tongji(Node *woker)/ 查找統(tǒng)計函數(shù) Node *p;int sel;int flag2=0,ha=0;精品文檔p=woker->next;char find20;if(!woker->next)/ 若鏈表為空printf("n>>>>>>>>>> 提示 : 沒有資料可以統(tǒng)計分類!n");return;printf(">>>>>>>>&g

13、t;> 提示 :n=>0 退出 n=>1 按職工號統(tǒng)計n=>2 按職工姓名名稱統(tǒng)計 n");scanf("%d",&sel);if(sel=1)printf("n 輸入你要統(tǒng)計分類的職工號 :");scanf("%s",find);while(p)if(strcmp(p->data.num,find)=0)flag2+;if(flag2=1&&ha!=flag2) printf(" 職工號職工姓名 職工性別 職工生日 職工學歷職工職位職工工資 n");

14、printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.num,p->,p->data .sex,p->data.birthday,p->data.degree,p->data.position,p->data.salary);ha=flag2;else if(flag2>ha)printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.num,p->data .name,p->

15、;data.sex,p->data.birthday,p->data.degree,p->data.position,p->data.sala ry);ha=flag2;p=p->next;if(flag2)printf("n*按 設(shè) 備 號 %s 統(tǒng) 計 分 類 的 有 %d 條 記錄:*nn",find,flag2);11 歡迎下載。else printf("n按職工號 s統(tǒng)計的結(jié)果為 0個nn",find); else if(sel=2)輸入你要統(tǒng)計分類的職工姓名 :");printf("n。sca

16、nf("%s",find);while(p)if(strcmp(p->,find)=0)flag2+;if(flag2=1&&ha!=flag2)職工性別 職工生日 職工學歷職工職位 printf(" 職工號職工姓名職工工資 n");printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.num,p->,p->data .sex,p->data.birthday,p->data.degree,p-&

17、gt;data.position,p->data.salary);ha=flag2;else if(flag2>ha)printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.num,p->data .name,p->data.sex,p->data.birthday,p->data.degree,p->data.position,p->data.sala ry);ha=flag2;p=p->next; if(flag2)按 設(shè) 備 名 稱 %s 統(tǒng) 計 的 有 %d

18、 條 記printf("n*錄:*else printf("n*nn",find,flag2);按職工姓名s統(tǒng)計分類的結(jié)果為0個nn"find);else if(sel=0) return;/ 修改職工信息函數(shù)4:修改模塊void change(Node *woker) Node *p;char find20;if(!woker->next)printf("n>>>>>>>>>> 提示 : 沒有資料可以修改 !n");return;printf(" 請輸入要修

19、改的職工號:");scanf("%s",find);p=woker->next;while(p!=NULL)如果找到的話返回的是符合要求 if(strcmp(p->data.num,find)=0) / break;p=p->next; if(p)int x;while(1) printf(" 完成修改請輸入 scanf("%d",&x);if(x=0)break;printf("請輸入新職工號scanf("%s",p->data.num);printf("請輸入

20、新職工姓名scanf("%s",p->);printf("請輸入新職工性別scanf("%s",p->data.sex);printf("請輸入新出生年月scanf("%s",p->data.birthday);printf("請輸入新職工學歷scanf("%s",p->data.degree);printf("請輸入新職工職位scanf("%s",p->data.position); printf(&quo

21、t;請輸入新職工工資scanf("%s",p->data.salary); printf("n>>>>>>>>>>else printf("n>>>>>>>>>>5:刪除模塊void dismiss(Node *woker)Node *p,*r,*s;char find10;if(!woker->next)printf("n>>>>>>>>>>提示 : 沒

22、有資料可以顯示0 否則輸入任意數(shù)再進行修改:");( 原來是 %s ):",p->data.num);( 原來是%s ):",p->);( 原來是%s ):",p->data.sex);( 原來是%s ):",p->data.birthday);( 原來是%s ):",p->data.degree);( 原來是%s ):",p->data.position);( 原來是%s ):",p->data.salary);提示 : 該項記錄資料已經(jīng)成功修改!n&q

23、uot;);: 你要修改的信息不存在!n");/ 刪除職工信息函數(shù)!n");return;printf("n>>>>>>>>>> 提示 : 請輸入您要刪除的職工號!n");scanf("%s",find);精品文檔p=woker->next;while(p!=NULL)if(strcmp(p->data.num,find)=0)/ 如果找到的話返回的是符合要求break;p=p->next;if(!p)printf("n>>>&g

24、t;>>>>>> 提示 : 找不到您想刪除的職工號!n");elser=woker;while(r->next!=p)r=r->next;s=r->next;r->next=r->next->next;6:存檔模塊void save(Node *woker)/ 將職工信息保存到文件int n;Node *p;FILE *fp;/ 指向文件的指針printf(" 需要保存嗎?(1- 保存 0- 不保存) ");scanf("%d",&n);if(n)if(woker-

25、>next=NULL)printf(" 無記錄 ");else p=woker->next;if(fp = fopen(" 職工管理系統(tǒng).dat", "wb") = NULL) / 打開文件,并判斷打開是否正常printf("can not open filen");/ 打開文件出錯while(p!=NULL)fprintf(fp,"%s %s %s %s %s %s %s",&p->data.num,&p->,&p->da

26、ta.sex,&p->d ata.birthday,&p->data.degree,&p->data.position,&p->data.salary);p=p->next;fclose(fp);/ 關(guān)閉文件7:文件統(tǒng)計模塊void load(Node *woker)Node *p,*q;/ 指向文件的指針/ 統(tǒng)計記錄數(shù)/ 打開文件/ 不能打開FILE *fp;int recordNum;if(fp = fopen(" 職工管理系統(tǒng).dat", "rb") = NULL)printf(&quo

27、t;can not open filen");p=woker;recordNum = 0;while(!feof(fp)q=(Node*)malloc(sizeof(Node);fscanf(fp,"%s %s %s %s %s %s %s",p->data.num,p->,p->data.sex,p->data.birthday,p- >data.degree,p->data.position,p->data.salary);/*從文件讀入記錄*/p->next=q;q->next=NULL

28、;p=q;recordNum+;fclose(fp);printf("文件里共有 d條記錄:n",recordNum);8:主函數(shù)模塊 void main()Node *woker;FILE *fp;int flag;Node *p,*q;printf("tttt職工信息管理系統(tǒng)n");woker=(Node*)malloc(sizeof(Node);woker->next=NULL;p=woker;while(1)printf(”*");printf("n1添加記錄n");printf("n2修改記錄n&q

29、uot;);printf("n3瀏覽記錄n");14 歡迎下載。精品文檔printf("n4printf("n5printf("n6分類查找記錄n");刪除記錄n");從文件讀取記錄n");printf("請輸入你要操作的序號:");printf("n0*-EXIT-*n");21歡迎下載scanf("%d",&flag); switch(flag)case 0:printf("n>>>>>>>&

30、gt;>>提示:已經(jīng)退出系統(tǒng),ByeBye!n");breacase 1:Add(woker);save(woker);break;/增加記錄case 2:change(woker); break;修改記錄case 3:Disp(woker); break;/顯示記錄信息case 4:Tongji(woker); break;/查找記錄case 5:dismiss(woker);break;/刪除記錄case 6:load(woker);break;/讀取記錄default:printf("n>>>>>>>>>

31、;>提示:輸入錯誤!n"); break;(4)程序的運行和測試結(jié)果主界面:,從文件讀取記錄3瀏覽記錄4分類皆找記錄0W-EXIT-請輸入你要操作的序號創(chuàng)建與增加模塊:輸入職工信息為:職工姓職工性職工出生年職工學職,職職工工職,號名月歷別位資1Af11aaa10002Bm22bbb20003Cf33ccc30004Dm44ddd4000輸入第一次時:輸入第二次時:輸入第三次時:輸入第四次時:顯示模塊:輸入四次后顯示的結(jié)果為:請輸入你要操作的序號二3顯示結(jié)果 職工生日職工號職工姓名職工性別職工學歷職J職位職LL資1af11aaa10002bm22bbb2萌日3cf33ccc300

32、04dn441<_2ddd4000存檔模塊:»»»»»:已經(jīng)完成一條記錄的添加. »>>»>>提示嗡人0則返回主菜單?輸入職工號要保存嗎?(】若存.二|職工管理至統(tǒng)記事本文件聚壕E)格式(0)意奇明奇助(H)0 0 0 0 o o o O o o o O 12 3 4 abed abed abed 12 3 4 12 3 4 f mf m a b c d 1 2 3 k文件統(tǒng)計模塊:查找模塊:輸入查找職工號為 3的職工信息:輸入你要統(tǒng)計您的職工號門耳二工U 即工姓名 汨工性¥1職工生日

33、 配工學廳 職二職衛(wèi) 職工二帝3cf 33ccc3000宇:殳備號3 統(tǒng)計分舉的有 1 條 j 己錄"注 * * * * * *!< *輸入查找職工姓名為 c的職工信息:常人你要統(tǒng)計分卷的職工姓希。快工號職工起茗 職工性別職工生日 職工學歷職工職校職工工資!c£33ccc3000 MMM JtM 具 1<1<<1<1<<>1*其>11<寸安"音名 利由 g 充 if)-的有-1 集3 己修改模塊:修改職工號為3的職工信息為:該項記住項修改!:日»>»»»>

34、;'e裔人口涯隼學職工 患輸工工工生工工工 署請職職土職職職 你要改®入入人入入入 .Lj- -¥!.7U-:,- Fi¥K -.4-.¥-4-.¥ E.',-|-.¥.4-.¥-|-.¥.4-.¥-|-.號.4-.¥-|-.號i:看7E來¥米¥米夫 原原原原原原3 日若雷¥¥¥7e: 3 C> c f 3 c C5 e5 e efx >>的職暗嶂靠樂家資請請請請請清,>職工信息變成:職工姓職工性職工出生年

35、職工學職,職職工工職工號名月歷別位資5Ef55eee5000刪除模塊:刪除職工號為5的職工信息:請輸入你要操作的序號A提示:請輸入您要刪除的職工號?5刪除后的結(jié)果為:業(yè)小二口木職工號 職工姓名 職工性別 職工生日 職工學歷 職工職位 職,資1aF11aaa10002bm22bbb2QQ04d1144ddd40WU退出模塊:貯 -E:stu dykJXtyjtrykyiJO, 口已 bug'tyjtrykyucLexe"5刪除記錄6從文件讀取記錄0-EXIT-*請輸入你要操作的序號泅>>>>>>>>>提示:已經(jīng)退出系統(tǒng),By

36、eBye,四、實驗中的問題及心得此次實踐課編寫的是一個應(yīng)用程序, 相對于以前我們見到的程序,它 要大得多,運行的結(jié)果也沒有預(yù)想中的好,數(shù)據(jù)的輸出格式不太規(guī)范,而 且各模塊也出現(xiàn)了一些小問題,在老師和同學的幫助下,我很有耐心的一 次又一次的進行修改,最后運行的結(jié)果基本上達到了預(yù)期的目的。本次C語言的實習課讓我對C語言的學習又有了更深入的了解,也 讓我更深刻地領(lǐng)悟到了 “實踐出真理”這個道理,在上機實踐過程中學到 的知識遠遠超過了在課堂上十幾周學到的,這次程序設(shè)計課讓我增添了許 多程序設(shè)計經(jīng)驗,為我們將來走上工作崗位其了不小的鋪墊作用。本次實習中遇到了很多以前沒有遇到過的問題, 也曾想過要放棄,但

37、 看到那些同學都在那認真的寫程序,給了我繼續(xù)的信心。在同學和老師 的幫助下,我順利的結(jié)束了本次實習,讓我知道原來憑借自己努力取得 的成功會讓自己這么欣慰,也讓我知道了友誼和團結(jié)的重要性。(4)程序清單#include "stdio.h" #include "stdlib.h" #include "string.h"struct wokers/定義一個woker的結(jié)構(gòu)體char num10;char name15;char sex15;/職工號 職工姓名 職工性別精品文檔32 歡迎下載。char birthday15;/職工出生年月ch

38、ar degree10;/職工學歷char position10;/職工職位char salary10;/職工工資;typedef struct node struct wokers data; struct node *next;Node;/ 建立一個鏈表。void Add(Node *woker) Node *p,*r,*s;char n10;/r=woker; s=woker->next; / while(r->next!=NULL) / r=r->next;/while(1)/ 添加記錄先用于輸入職工號, 也用于判斷是否跳出循環(huán)使 s 為第一個有用的結(jié)點這個循環(huán)的作用

39、是使r 為最后一個有用的結(jié)點將指針置于最末尾printf(">>>>>>>>>> 提示 : 輸入 0 則返回主菜單 !n");printf("n 請你輸入職工號 :");scanf("%s",n);if(strcmp(n,"0")=0) break;p=(Node *)malloc(sizeof(Node); / strcpy(p->data.num,n);printf("n 請輸入姓名 :");申請空間scanf("%

40、s",p->);printf("n 請輸入性別:");scanf("%s",p->data.sex);printf("n 請輸入出生年月 :");scanf("%s",&p->data.birthday);printf("n請輸入學歷:");scanf("%s",&p->data.degree);printf("n請輸入職位:");scanf("%s",&p-&

41、gt;data.position);printf("n 請輸入工資:");scanf("%s",&p->data.salary);printf(">>>>>>>>>> 提示 : 已經(jīng)完成一條記錄的添加。 n");p->next=NULL;r->next=p; /這一步是必需的,將p與先前的鏈表連起來構(gòu)成一條新鏈表r=p;/也是必需的 . 將 r 又重設(shè)為新鏈的最后一個有用結(jié)點void change(Node *woker)/ 修改職工信息函數(shù)Node

42、 *p;char find20;if(!woker->next)printf("n>>>>>>>>>> 提示 : 沒有資料可以修改 !n"); return; printf(" 請輸入要修改的職工號:");scanf("%s",find);p=woker->next;while(p!=NULL)if(strcmp(p->data.num,find)=0) /如果找到的話返回的是符合要求break; p=p->next; if(p) int x;0 否則

43、輸入任意數(shù)再進行修改while(1) printf(" 完成修改請輸入 scanf("%d",&x); if(x=0) break;printf("請輸入新職工號scanf("%s",p->data.num); printf("請輸入新職工姓名scanf("%s",p->);printf("請輸入新職工性別scanf("%s",p->data.sex); printf("請輸入新出生年月scanf("%s&quo

44、t;,p->data.birthday);printf("請輸入新職工學歷scanf("%s",p->data.degree); printf("請輸入新職工職位scanf("%s",p->data.position);:");( 原來是 %s ):",p->data.num);( 原來是%s):",p->);( 原來是%s):",p->data.sex);( 原來是%s):",p->data.birthday)( 原來是%s

45、):",p->data.degree);( 原來是%s):",p->data.position);printf("請輸入新職工工資( 原來是 %s ):",p->data.salary);scanf("%s",p->data.salary);printf("n>>>>>>>>>>提示 : 該項記錄資料已經(jīng)成功修改!n"); else printf("n>>>>>>>>>

46、>提示 : 你要修改的信息不存在!n"); void Disp(Node *woker)/ 輸出職工信息 Node *p; p=woker->next; if(!p) printf("n>>>>>>>>>> 提示 : 沒有記錄可以顯示!n");return;printf("tttt顯示結(jié)果 n");printf(" 職工號 職工姓名 職工性別 職工生日 職工學歷職工職位職工工資 n");while(p) printf("n%-13s%-11s%

47、-7s%-10s%-13s%-10s%-5sn",p->data.num,p->,p-> data.sex,p->data.birthday,p->data.degree,p->data.position,p->data.salary);p=p->next; void Tongji(Node *woker)/ 查找統(tǒng)計函數(shù) Node *p;int sel;int flag2=0,ha=0;p=woker->next;char find20;if(!woker->next)/ 若鏈表為空printf(&quo

48、t;n>>>>>>>>>> 提示 : 沒有資料可以統(tǒng)計分類!n");return; printf(">>>>>>>>>> 提示 :n=>0 退出 n=>1 按職工號統(tǒng)計n=>2 按職工姓名名稱統(tǒng)計 n");scanf("%d",&sel); if(sel=1)printf("n 輸入你要統(tǒng)計分類的職工號 :");scanf("%s",find);while(p)

49、if(strcmp(p->data.num,find)=0)flag2+;if(flag2=1&&ha!=flag2)職工性別 職工生日 職工學歷職工職位 printf(" 職工號 職工姓名職工工資 n");printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.num,p->,p-> data.sex,p->data.birthday,p->data.degree,p->data.position,p->data.sala

50、ry);ha=flag2;elseif(flag2>ha)printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.num,p-> ,p->data.sex,p->data.birthday,p->data.degree,p->data.position,p->d ata.salary);ha=flag2;p=p->next; if(flag2)printf("n*按設(shè)備號s統(tǒng)計分類的有d條記錄:*nn",find,flag2);els

51、e printf("n按職工號 s統(tǒng)計的結(jié)果為 0個nn",find); else if(sel=2)printf("n 輸入你要統(tǒng)計分類的職工姓名 :");scanf("%s",find);while(p)if(strcmp(p->,find)=0)flag2+;if(flag2=1&&ha!=flag2) printf(" 職工號 職工姓名 職工性別 職工生日 職工學歷職工職位職工工資 n");printf("n%-13s%-11s%-7s%-10s%-13s%

52、-10s%-5sn",p->data.num,p->,p->data.sex,p->data.birthday,p->data.degree,p->data.position,p->data.salary);ha=flag2; elseif(flag2>ha)printf("n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn",p->data.num,p-> ,p->data.sex,p->data.birthday,p->data

53、.degree,p->data.position,p->d ata.salary);ha=flag2;p=p->next;if(flag2)printf("n*按設(shè)備名稱$統(tǒng)計的有d條記錄:*nn",find,flag2);else printf("n按職工姓名 s統(tǒng)計分類的結(jié)果為0個nn"find);else if(sel=0) return;void load(Node *woker) Node *p,*q;FILE *fp;/ 指向文件的指針int recordNum;/ 統(tǒng)計記錄數(shù)if(fp = fopen(" 職工管

54、理系統(tǒng).dat", "rb") = NULL)/ 打開文件printf("can not open filen");/ 不能打開 p=woker; recordNum = 0; while(!feof(fp) q=(Node*)malloc(sizeof(Node);fscanf(fp,"%s %s %s %s %s %s %s",p->data.num,p->,p->data.sex,p->data.birthda y,p->data.degree,p->data.po

55、sition,p->data.salary);/*從文件讀入記錄 */p->next=q; q->next=NULL; p=q; recordNum+; fclose(fp);printf("文件里共有 d條記錄:n",recordNum); void save(Node *woker)int n;Node *p;FILE *fp;printf(" 需要保存嗎?(1-保存 0-scanf("%d",&n);if(n)if(woker->next=NULL)printf(" 無記錄 ");els

56、e p=woker->next;if(fp = fopen(" 職工管理系統(tǒng)否正常不保存) ");.dat", "wb") = NULL) / 將職工信息保存到文件/ 指向文件的指針打開文件,并判斷打開是printf("can not open filen"); while(p!=NULL)/ 打開文件出錯fprintf(fp,"%s %s %s %s %s %s %s",&p->data.num,&p->,&p->data.sex,&am

57、p;p->d ata.birthday,&p->data.degree,&p->data.position,&p->data.salary);p=p->next;fclose(fp);/關(guān)閉文件void dismiss(Node *woker) Node *p,*r,*s;char find10;if(!woker->next)/刪除職工信息函數(shù)printf("n>>>>>>>>>> return;printf("n>>>>>>>>>> scanf("%s",find);

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論