版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、信息與電子工程學(xué)院c語(yǔ)言課程設(shè)計(jì)職工信息管理系統(tǒng)設(shè)計(jì)實(shí)驗(yàn)日期和時(shí)間: 2011年06月27日06月29日實(shí)驗(yàn)類(lèi)別:課程設(shè)計(jì)實(shí)驗(yàn)類(lèi)型:設(shè)計(jì)性一、 實(shí)驗(yàn)環(huán)境操作系統(tǒng):windows xp編程工具:microsoft visual c+ 6.0開(kāi)發(fā)環(huán)境:cpu(inter(r)core(tm)2 quad cpu qb200 2.33ghz) 內(nèi)存:2.76gb硬盤(pán):228.3gb開(kāi)發(fā)地點(diǎn):現(xiàn)代教育中心201機(jī)房a17座ip:7二、實(shí)驗(yàn)?zāi)康暮鸵髮?shí)驗(yàn)?zāi)康模海?)使學(xué)生進(jìn)一步理解和掌握課堂上所學(xué)各種基本抽象數(shù)據(jù)類(lèi)型的邏輯結(jié)構(gòu)、存儲(chǔ)結(jié)構(gòu)和操作算法。(2)使學(xué)生進(jìn)一步掌握程序設(shè)計(jì)、編
2、寫(xiě)、調(diào)試能力。(3)使學(xué)生了解軟件開(kāi)發(fā)的基本步驟和內(nèi)容。實(shí)驗(yàn)要求:完成一個(gè)職工信息管理系統(tǒng)程序,具體內(nèi)容如下:(1)在內(nèi)存中用鏈表記錄,在硬盤(pán)上用二進(jìn)制文件保存。(2)設(shè)計(jì)完的程序能夠以命令行或者菜單形式增加、刪除、更新和查詢(xún)數(shù)據(jù)的內(nèi)容。數(shù)據(jù)內(nèi)容能夠排序以方便查詢(xún)。(3)數(shù)據(jù)庫(kù)中應(yīng)該有至少20條記錄。三、實(shí)驗(yàn)內(nèi)容和結(jié)果(1)程序整體功能;1、系統(tǒng)總體框菜單開(kāi)始根據(jù)菜單輸入n的值選擇程序結(jié)束是否繼續(xù)進(jìn)行 ny2修改職工信息3瀏覽職工信息4分類(lèi)查找職工信息5刪除職工信息6從文件讀取信息0退出1錄入職工信息按職工號(hào)查找按姓名查找2、模塊設(shè)計(jì)該程序主要分為7個(gè)模塊,分別是創(chuàng)建與添加模塊、顯示模塊、查找
3、模塊、修改模塊、刪除模塊、存檔模塊、文件統(tǒng)計(jì)模塊、退出模塊(2)程序組成及各模塊/函數(shù)功能;創(chuàng)建與添加模塊:該模塊的功能是輸入職工信息。函數(shù)為void add(node *woker)原理:采用尾插法,先建立鏈表與頭結(jié)點(diǎn),新增一個(gè)結(jié)點(diǎn),鍵盤(pán)輸入職工號(hào)、職工姓名、職工性別、職工出生年月、職工學(xué)歷、職工職位、職工工資,將這些信息存儲(chǔ)到新增結(jié)點(diǎn)中,將新增加的節(jié)點(diǎn)連到鏈表的尾端,如此以往,將尾結(jié)點(diǎn)的指針域置空,這樣就得到了一條存儲(chǔ)職工信息的鏈表,這樣就完成了職工信息的創(chuàng)建與增加。顯示模塊:該模塊功能是顯示職工信息。函數(shù)為void disp(node *woker)原理:先新建一個(gè)指針p指向頭結(jié)點(diǎn),判斷
4、它的指針域是否為空,若為空,則輸出“沒(méi)有記錄可以顯示”;若不為空,則輸出它的指針域所指向節(jié)點(diǎn)所儲(chǔ)存的職工信息,并將該指針向后移一個(gè)結(jié)點(diǎn),直到p指向空,即輸出了所有職工的信息,這樣就完成了所有職工信息的顯示。查找模塊:該模塊功能是查找職工信息。函數(shù)為void tongji(node *woker)原理:該模塊分為兩種查找方法,分別是按職工號(hào)查找和按職工姓名查找,因?yàn)檫@兩種查找方法雷同,所以這里將只解釋按職工號(hào)查找的原理。先鍵盤(pán)輸入一個(gè)要查找的職工號(hào)并新建一個(gè)指針p指向頭結(jié)點(diǎn),判斷它的指針域是否為空,若為空,則輸出“沒(méi)有資料可以統(tǒng)計(jì)分類(lèi)”,若不為空,則判斷它的指針域所指向節(jié)點(diǎn)所儲(chǔ)存的職工信息中的職
5、工號(hào),若相等,則輸出這個(gè)職工的其他所有信息,并將p指向下一個(gè)結(jié)點(diǎn),再次進(jìn)行判斷,直到p指向空,即輸出了所有查找到的信息。若不相等,則p指向下一個(gè)結(jié)點(diǎn),再次進(jìn)行判斷,直到p指向空,即輸出了所有查找到的信息,這樣就完成了職工信息的查找。修改模塊 :該模塊功能是修改職工信息。函數(shù)為void change(node *woker)原理:根據(jù)查找原理,查找到要修改信息的職工,刪除這一節(jié)點(diǎn),并新建一個(gè)節(jié)點(diǎn),鍵盤(pán)輸入想要修改的內(nèi)容,并儲(chǔ)存到新的結(jié)點(diǎn)中,將新的節(jié)點(diǎn)連接到鏈表中原先刪除結(jié)點(diǎn)的位子,這樣就完成了職工信息的修改。刪除模塊:該模塊功能是刪除管理職工信息。函數(shù)為void dismiss(node *wo
6、ker)根據(jù)查找的原理,查找到要修改信息的職工,刪除這一節(jié)點(diǎn),并將其前驅(qū)結(jié)點(diǎn)的指針域指向其后繼結(jié)點(diǎn),這樣就完成了職工信息的刪除。存檔模塊:將內(nèi)存中的信息存儲(chǔ)到文件中。函數(shù)為void save(node *woker)原理:打開(kāi)文件,新建一個(gè)指針p指向頭結(jié)點(diǎn),判斷它的指針域是否為空,若為空,則輸出“無(wú)記錄”,若不為空,則將這個(gè)職工的所有信息輸入到文件中,并將p指向下一個(gè)結(jié)點(diǎn),直到p指向空,即輸入了的信息,文件統(tǒng)計(jì)模塊:打開(kāi)文件,統(tǒng)計(jì)職工數(shù)目,并輸出。函數(shù)為void load(node *woker)退出模塊:該模塊功能是退出管理檔案。(3)重要數(shù)據(jù)結(jié)構(gòu),重要模塊/函數(shù)算法;1:創(chuàng)建與添加模塊:v
7、oid add(node *woker)/添加記錄node *p,*r,*s; char n10; /先用于輸入職工號(hào),也用于判斷是否跳出循環(huán)r=woker;s=woker-next; /使s為第一個(gè)有用的結(jié)點(diǎn)while(r-next!=null) /這個(gè)循環(huán)的作用是使r為最后一個(gè)有用的結(jié)點(diǎn)r=r-next; /將指針置于最末尾while(1) printf(提示:輸入0則返回主菜單!n); printf(n請(qǐng)你輸入職工號(hào):); scanf(%s,n); if(strcmp(n,0)=0) break; p=(node *)malloc(sizeof(node); /申請(qǐng)空間 strcpy(p
8、-data.num,n); printf(n請(qǐng)輸入姓名:); scanf(%s,); printf(n請(qǐng)輸入性別:); scanf(%s,p-data.sex); printf(n請(qǐng)輸入出生年月:); scanf(%s,&p-data.birthday); printf(n請(qǐng)輸入學(xué)歷:); scanf(%s,&p-data.degree); printf(n請(qǐng)輸入職位:); scanf(%s,&p-data.position); printf(n請(qǐng)輸入工資:); scanf(%s,&p-data.salary); printf(提示:已經(jīng)完成一條記錄的添加。n); p-n
9、ext=null; r-next=p; /這一步是必需的,將p與先前的鏈表連起來(lái)構(gòu)成一條新鏈表 r=p; /也是必需的.將r 又重設(shè)為新鏈的最后一個(gè)有用結(jié)點(diǎn) 2:顯示模塊void disp(node *woker)/輸出職工信息node *p;p=woker-next;if(!p) printf(n提示:沒(méi)有記錄可以顯示!n); return; printf(tttt顯示結(jié)果n); printf(職工號(hào) 職工姓名 職工性別 職工生日 職工學(xué)歷 職工職位 職工工資n); while(p) printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,
10、,p-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary); p=p-next;3:查找模塊void tongji(node *woker)/查找統(tǒng)計(jì)函數(shù)node *p;int sel;int flag2=0,ha=0;p=woker-next;char find20; if(!woker-next)/若鏈表為空 printf(n提示:沒(méi)有資料可以統(tǒng)計(jì)分類(lèi)!n); return;printf(提示:n=0退出n=1按職工號(hào)統(tǒng)計(jì)n=2按職工姓名名稱(chēng)統(tǒng)計(jì)n);scanf(%d,&sel);i
11、f(sel=1) printf(n輸入你要統(tǒng)計(jì)分類(lèi)的職工號(hào):);scanf(%s,find); while(p) if(strcmp(p-data.num,find)=0) flag2+; if(flag2=1&ha!=flag2) printf(職工號(hào) 職工姓名 職工性別 職工生日 職工學(xué)歷 職工職位 職工工資n); printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,,p-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary);
12、ha=flag2; else if(flag2ha)printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,,p-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary);ha=flag2; p=p-next; if(flag2) printf(n*按設(shè)備號(hào)%s統(tǒng)計(jì)分類(lèi)的有%d條記錄:*nn,find,flag2); else printf(n按職工號(hào)%s統(tǒng)計(jì)的結(jié)果為0個(gè)nn,find);else if(sel=2) printf(n輸入你
13、要統(tǒng)計(jì)分類(lèi)的職工姓名:); scanf(%s,find); while(p) if(strcmp(,find)=0) flag2+; if(flag2=1&ha!=flag2) printf(職工號(hào) 職工姓名 職工性別 職工生日 職工學(xué)歷 職工職位 職工工資n); printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,,p-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary); ha=flag2; else if
14、(flag2ha)printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,,p-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary);ha=flag2; p=p-next; if(flag2) printf(n*按設(shè)備名稱(chēng)%s統(tǒng)計(jì)的有%d條記錄:*nn,find,flag2); else printf(n按職工姓名%s統(tǒng)計(jì)分類(lèi)的結(jié)果為0個(gè)nn,find);else if(sel=0) return;4:修改模塊void change(n
15、ode *woker)/修改職工信息函數(shù)node *p;char find20;if(!woker-next) printf(n提示:沒(méi)有資料可以修改!n); return;printf(請(qǐng)輸入要修改的職工號(hào):); scanf(%s,find); p=woker-next; while(p!=null) if(strcmp(p-data.num,find)=0) /如果找到的話(huà)返回的是符合要求 break; p=p-next; if(p) int x; while(1) printf(完成修改請(qǐng)輸入0否則輸入任意數(shù)再進(jìn)行修改:); scanf(%d,&x); if(x=0) break; pr
16、intf(請(qǐng)輸入新職工號(hào)(原來(lái)是 %s ):,p-data.num); scanf(%s,p-data.num); printf(請(qǐng)輸入新職工姓名(原來(lái)是 %s ):,); scanf(%s,); printf(請(qǐng)輸入新職工性別(原來(lái)是 %s ):,p-data.sex); scanf(%s,p-data.sex); printf(請(qǐng)輸入新出生年月(原來(lái)是 %s ):,p-data.birthday); scanf(%s,p-data.birthday); printf(請(qǐng)輸入新職工學(xué)歷(原來(lái)是 %s ):,p-data.degree); scanf
17、(%s,p-data.degree); printf(請(qǐng)輸入新職工職位(原來(lái)是 %s ):,p-data.position); scanf(%s,p-data.position); printf(請(qǐng)輸入新職工工資(原來(lái)是 %s ):,p-data.salary); scanf(%s,p-data.salary); printf(n提示:該項(xiàng)記錄資料已經(jīng)成功修改!n); else printf(n提示:你要修改的信息不存在!n);5:刪除模塊void dismiss(node *woker)/刪除職工信息函數(shù)node *p,*r,*s;char find10;if(!woker-next) pr
18、intf(n提示:沒(méi)有資料可以顯示!n); return; printf(n提示:請(qǐng)輸入您要?jiǎng)h除的職工號(hào)!n);scanf(%s,find);p=woker-next;while(p!=null) if(strcmp(p-data.num,find)=0)/如果找到的話(huà)返回的是符合要求 break; p=p-next; if(!p)printf(n提示:找不到您想刪除的職工號(hào)!n);elser=woker;while(r-next!=p)r=r-next;s=r-next;r-next=r-next-next;6:存檔模塊void save(node *woker)/將職工信息保存到文件int
19、 n;node *p;file *fp; /指向文件的指針printf(需要保存嗎?(1-保存 0-不保存));scanf(%d,&n);if(n)if(woker-next=null)printf(無(wú)記錄);else p=woker-next;if(fp = fopen(職工管理系統(tǒng).dat, wb) = null) /打開(kāi)文件,并判斷打開(kāi)是否正常printf(can not open filen);/ 打開(kāi)文件出錯(cuò)while(p!=null)fprintf(fp,%s %s %s %s %s %s %s,&p-data.num,&,&p-data.sex,&p-dat
20、a.birthday,&p-data.degree,&p-data.position,&p-data.salary);p=p-next;fclose(fp);/關(guān)閉文件7:文件統(tǒng)計(jì)模塊void load(node *woker)node *p,*q;file *fp;/指向文件的指針int recordnum;/ 統(tǒng)計(jì)記錄數(shù)if(fp = fopen(職工管理系統(tǒng).dat, rb) = null)/打開(kāi)文件printf(can not open filen);/不能打開(kāi)p=woker;recordnum = 0;while(!feof(fp)q=(node*)malloc(sizeof(nod
21、e); fscanf(fp, %s %s %s %s %s %s %s,p-data.num,,p-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary);/*從文件讀入記錄*/p-next=q;q-next=null;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
22、); woker=(node*)malloc(sizeof(node); woker-next=null; p=woker; while(1) printf(*目錄*); printf(n1添加記錄n); printf(n2修改記錄n); printf(n3瀏覽記錄n); printf(n4分類(lèi)查找記錄n); printf(n5刪除記錄n); printf(n6從文件讀取記錄n); printf(n0*-exit-*n); printf(請(qǐng)輸入你要操作的序號(hào):); scanf(%d,&flag); switch(flag) case 0: printf(n提示:已經(jīng)退出系統(tǒng),byebye!n)
23、;break; case 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提示:輸入錯(cuò)誤!n); break; (4)程序的運(yùn)行和測(cè)試結(jié)果主界面:創(chuàng)建與增加模塊:輸入職工信息為:職工號(hào)職工姓名職
24、工性別職工出生年月職工學(xué)歷職工職位職工工資1af11aaa10002bm22bbb20003cf33ccc30004dm44ddd4000輸入第一次時(shí):輸入第二次時(shí):輸入第三次時(shí):輸入第四次時(shí):顯示模塊:輸入四次后顯示的結(jié)果為:存檔模塊:文件統(tǒng)計(jì)模塊:查找模塊:輸入查找職工號(hào)為3的職工信息:輸入查找職工姓名為c的職工信息:修改模塊:修改職工號(hào)為3的職工信息為:職工號(hào)職工姓名職工性別職工出生年月職工學(xué)歷職工職位職工工資5ef55eee5000職工信息變成:刪除模塊:刪除職工號(hào)為5的職工信息:刪除后的結(jié)果為:退出模塊:四、實(shí)驗(yàn)中的問(wèn)題及心得此次實(shí)踐課編寫(xiě)的是一個(gè)應(yīng)用程序,相對(duì)于以前我們見(jiàn)到的程序,
25、它要大得多,運(yùn)行的結(jié)果也沒(méi)有預(yù)想中的好,數(shù)據(jù)的輸出格式不太規(guī)范,而且各模塊也出現(xiàn)了一些小問(wèn)題,在老師和同學(xué)的幫助下,我很有耐心的一次又一次的進(jìn)行修改,最后運(yùn)行的結(jié)果基本上達(dá)到了預(yù)期的目的。本次c 語(yǔ)言的實(shí)習(xí)課讓我對(duì)c 語(yǔ)言的學(xué)習(xí)又有了更深入的了解,也讓我更深刻地領(lǐng)悟到了“實(shí)踐出真理”這個(gè)道理,在上機(jī)實(shí)踐過(guò)程中學(xué)到的知識(shí)遠(yuǎn)遠(yuǎn)超過(guò)了在課堂上十幾周學(xué)到的,這次程序設(shè)計(jì)課讓我增添了許多程序設(shè)計(jì)經(jīng)驗(yàn),為我們將來(lái)走上工作崗位其了不小的鋪墊作用。本次實(shí)習(xí)中遇到了很多以前沒(méi)有遇到過(guò)的問(wèn)題,也曾想過(guò)要放棄,但看到那些同學(xué)都在那認(rèn)真的寫(xiě)程序,給了我繼續(xù)的信心。在同學(xué)和老師的幫助下,我順利的結(jié)束了本次實(shí)習(xí),讓我知道
26、原來(lái)憑借自己努力取得的成功會(huì)讓自己這么欣慰,也讓我知道了友誼和團(tuán)結(jié)的重要性。(4)程序清單#include stdio.h#include stdlib.h#include string.hstruct wokers/定義一個(gè)woker的結(jié)構(gòu)體char num10;/職工號(hào)char name15;/職工姓名char sex15;/職工性別char birthday15; /職工出生年月char degree10; /職工學(xué)歷char position10; /職工職位char salary10; /職工工資;typedef struct nodestruct wokers data;struc
27、t node *next;/建立一個(gè)鏈表。node;void add(node *woker)/添加記錄node *p,*r,*s; char n10; /先用于輸入職工號(hào),也用于判斷是否跳出循環(huán)r=woker;s=woker-next; /使s為第一個(gè)有用的結(jié)點(diǎn)while(r-next!=null) /這個(gè)循環(huán)的作用是使r為最后一個(gè)有用的結(jié)點(diǎn)r=r-next; /將指針置于最末尾while(1) printf(提示:輸入0則返回主菜單!n); printf(n請(qǐng)你輸入職工號(hào):); scanf(%s,n); if(strcmp(n,0)=0) break; p=(node *)malloc(s
28、izeof(node); /申請(qǐng)空間 strcpy(p-data.num,n); printf(n請(qǐng)輸入姓名:); scanf(%s,); printf(n請(qǐng)輸入性別:); scanf(%s,p-data.sex); printf(n請(qǐng)輸入出生年月:); scanf(%s,&p-data.birthday); printf(n請(qǐng)輸入學(xué)歷:); scanf(%s,&p-data.degree); printf(n請(qǐng)輸入職位:); scanf(%s,&p-data.position); printf(n請(qǐng)輸入工資:); scanf(%s,&p-data.salary); pr
29、intf(提示:已經(jīng)完成一條記錄的添加。n); p-next=null; r-next=p; /這一步是必需的,將p與先前的鏈表連起來(lái)構(gòu)成一條新鏈表 r=p; /也是必需的.將r 又重設(shè)為新鏈的最后一個(gè)有用結(jié)點(diǎn) void change(node *woker)/修改職工信息函數(shù)node *p;char find20;if(!woker-next) printf(n提示:沒(méi)有資料可以修改!n); return;printf(請(qǐng)輸入要修改的職工號(hào):); scanf(%s,find); p=woker-next; while(p!=null) if(strcmp(p-data.num,find)=0
30、) /如果找到的話(huà)返回的是符合要求 break; p=p-next; if(p) int x; while(1) printf(完成修改請(qǐng)輸入0否則輸入任意數(shù)再進(jìn)行修改:); scanf(%d,&x); if(x=0) break; printf(請(qǐng)輸入新職工號(hào)(原來(lái)是 %s ):,p-data.num); scanf(%s,p-data.num); printf(請(qǐng)輸入新職工姓名(原來(lái)是 %s ):,); scanf(%s,); printf(請(qǐng)輸入新職工性別(原來(lái)是 %s ):,p-data.sex); scanf(%s,p-data.sex);
31、 printf(請(qǐng)輸入新出生年月(原來(lái)是 %s ):,p-data.birthday); scanf(%s,p-data.birthday); printf(請(qǐng)輸入新職工學(xué)歷(原來(lái)是 %s ):,p-data.degree); scanf(%s,p-data.degree); printf(請(qǐng)輸入新職工職位(原來(lái)是 %s ):,p-data.position); scanf(%s,p-data.position); printf(請(qǐng)輸入新職工工資(原來(lái)是 %s ):,p-data.salary); scanf(%s,p-data.salary); printf(n提示:該項(xiàng)記錄資料已經(jīng)成功修改
32、!n); else printf(n提示:你要修改的信息不存在!n); void disp(node *woker)/輸出職工信息node *p;p=woker-next;if(!p) printf(n提示:沒(méi)有記錄可以顯示!n); return; printf(tttt顯示結(jié)果n); printf(職工號(hào) 職工姓名 職工性別 職工生日 職工學(xué)歷 職工職位 職工工資n); while(p) printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,,p-data.sex,p-data.birthday,p-data.deg
33、ree,p-data.position,p-data.salary); p=p-next;void tongji(node *woker)/查找統(tǒng)計(jì)函數(shù)node *p;int sel;int flag2=0,ha=0;p=woker-next;char find20; if(!woker-next)/若鏈表為空 printf(n提示:沒(méi)有資料可以統(tǒng)計(jì)分類(lèi)!n); return;printf(提示:n=0退出n=1按職工號(hào)統(tǒng)計(jì)n=2按職工姓名名稱(chēng)統(tǒng)計(jì)n);scanf(%d,&sel);if(sel=1) printf(n輸入你要統(tǒng)計(jì)分類(lèi)的職工號(hào):);scanf(%s,find); while(p
34、) if(strcmp(p-data.num,find)=0) flag2+; if(flag2=1&ha!=flag2) printf(職工號(hào) 職工姓名 職工性別 職工生日 職工學(xué)歷 職工職位 職工工資n); printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,,p-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary); ha=flag2; else if(flag2ha)printf(n%-13s%-11s%-7s%-10s%-
35、13s%-10s%-5sn,p-data.num,,p-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary);ha=flag2; p=p-next; if(flag2) printf(n*按設(shè)備號(hào)%s統(tǒng)計(jì)分類(lèi)的有%d條記錄:*nn,find,flag2); else printf(n按職工號(hào)%s統(tǒng)計(jì)的結(jié)果為0個(gè)nn,find);else if(sel=2) printf(n輸入你要統(tǒng)計(jì)分類(lèi)的職工姓名:); scanf(%s,find); while(p) if(strcmp(p-data
36、.name,find)=0) flag2+; if(flag2=1&ha!=flag2) printf(職工號(hào) 職工姓名 職工性別 職工生日 職工學(xué)歷 職工職位 職工工資n); printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,,p-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary); ha=flag2; else if(flag2ha)printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-d
37、ata.num,,p-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary);ha=flag2; p=p-next; if(flag2) printf(n*按設(shè)備名稱(chēng)%s統(tǒng)計(jì)的有%d條記錄:*nn,find,flag2); else printf(n按職工姓名%s統(tǒng)計(jì)分類(lèi)的結(jié)果為0個(gè)nn,find);else if(sel=0) return;void load(node *woker)node *p,*q;file *fp;/指向文件的指針int recordnum;/ 統(tǒng)計(jì)記錄數(shù)if(
38、fp = fopen(職工管理系統(tǒng).dat, rb) = null)/打開(kāi)文件printf(can not open filen);/不能打開(kāi)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-data.sex,p-data.birthday,p-data.degree,p-data.position,p-data.salary);/*從文件讀入記錄*/p-next=q;q-next=null;p=q
39、;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(無(wú)記錄);else p=woker-next;if(fp = fopen(職工管理系統(tǒng).dat, wb) = null) /打開(kāi)文件,并判斷打開(kāi)是否正常printf(can not open filen);/ 打開(kāi)文件出
40、錯(cuò)while(p!=null)fprintf(fp,%s %s %s %s %s %s %s,&p-data.num,&,&p-data.sex,&p-data.birthday,&p-data.degree,&p-data.position,&p-data.salary);p=p-next;fclose(fp);/關(guān)閉文件void dismiss(node *woker)/刪除職工信息函數(shù)node *p,*r,*s;char find10;if(!woker-next) printf(n提示:沒(méi)有資料可以顯示!n); return; printf(n提示:請(qǐng)輸入您要?jiǎng)h除的職工號(hào)!n);scanf(%s,find);p=woker-next;while(p!=null) if(strcmp(p-data.num,find)=0)/如果找到的話(huà)返回的是符合要求 break; p=p-next; if(!p)printf(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 石河子大學(xué)《中小學(xué)生心理輔導(dǎo)》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《武術(shù)》2021-2022學(xué)年第一學(xué)期期末試卷
- 石河子大學(xué)《基本樂(lè)理》2021-2022學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)理工大學(xué)《專(zhuān)題產(chǎn)品設(shè)計(jì)》2022-2023學(xué)年第一學(xué)期期末試卷
- 沈陽(yáng)理工大學(xué)《新能源與分布式發(fā)電》2023-2024學(xué)年期末試卷
- 沈陽(yáng)理工大學(xué)《人工智能》2023-2024學(xué)年期末試卷
- 沈陽(yáng)理工大學(xué)《計(jì)算機(jī)網(wǎng)絡(luò)實(shí)踐指導(dǎo)》2022-2023學(xué)年期末試卷
- 警察現(xiàn)場(chǎng)救護(hù)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 沈陽(yáng)理工大學(xué)《光電子學(xué)》2022-2023學(xué)年期末試卷
- 沈陽(yáng)理工大學(xué)《德語(yǔ)國(guó)家社會(huì)與文化》2022-2023學(xué)年第一學(xué)期期末試卷
- 醫(yī)科大學(xué)2024年12月精神科護(hù)理學(xué)作業(yè)考核試題答卷
- 論青少年合理懷疑精神的培育
- 機(jī)關(guān)干部禮儀培訓(xùn)課件
- 安徽省合肥市2024年七年級(jí)上學(xué)期期中數(shù)學(xué)試卷【附答案】
- 成都鐵路局招聘2024屆高校畢業(yè)生663人高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 《剪映專(zhuān)業(yè)版:短視頻創(chuàng)作案例教程(全彩慕課版)》 課件 第2章 剪映專(zhuān)業(yè)版快速入門(mén)
- 中考物理試題及答案經(jīng)典大全集高分
- DB11T 854-2023 占道作業(yè)交通安全設(shè)施設(shè)置技術(shù)要求
- 2024-2025學(xué)年浙教版八年級(jí)上冊(cè)科學(xué)期中模擬卷
- 第6課《我們神圣的國(guó)土》 (教學(xué)設(shè)計(jì))-部編版道德與法治五年級(jí)上冊(cè)
- 模擬電子技術(shù)說(shuō)課
評(píng)論
0/150
提交評(píng)論