




已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語言程序設(shè)計(jì)課程設(shè)計(jì)人事檔案管理系統(tǒng)指導(dǎo)教師:李耀成設(shè) 計(jì) 者:劉玉成、孫濤、馬新涌、郭恒陽 專業(yè)班級(jí):機(jī)電081設(shè)計(jì)時(shí)間:2009年11月人事檔案管理系統(tǒng)一、需求分析電腦已經(jīng)深入到我們?nèi)粘9ぷ骱蜕畹姆椒矫婷?,比如文字處理、信息管理、輔助設(shè)計(jì)、圖形圖像處理、教育培訓(xùn)以及游戲娛樂等。Windows系統(tǒng)的推出使電腦從高雅的學(xué)術(shù)殿堂走入了尋常百姓家,各行各業(yè)的人們無須經(jīng)過特別的訓(xùn)練就能夠使用電腦完成許許多多復(fù)雜的工作。然而,雖然現(xiàn)在世界上已經(jīng)充滿了多如牛毛的各種軟件,但它們依然不能滿足用戶的各種特殊需要,人們還不得不開發(fā)適合自己特殊需求的軟件。 隨著企事業(yè)單位的發(fā)展,人員會(huì)越來越多,少則幾十人、多則上萬人。例如一個(gè)企業(yè)分很多部門,每個(gè)部門又分為許多科或室等,而其下又分為各級(jí)領(lǐng)導(dǎo)和員工。用筆和紙傳統(tǒng)的手工管理檔案,這中管理方式存在著不易更新、不易存放、不安全、容易丟失、難以備份等重大缺陷,管理起來效率低下而且很可能造成管理上的混亂。而自己建立簡(jiǎn)單的電子文檔對(duì)信息管理進(jìn)行管理雖然克服了以上的缺點(diǎn),但查詢效率較低,特別是當(dāng)數(shù)據(jù)量十分龐大時(shí),劣勢(shì)尤其明顯。因此開發(fā)一個(gè)既可以存儲(chǔ)信息,又可以進(jìn)行更新、查詢、管理等功能,同時(shí)價(jià)格又能為廣大消費(fèi)者接受的多功能電子人事信息管理系統(tǒng)就顯得十分必要。 本實(shí)驗(yàn)的讀者對(duì)象為研發(fā)中心領(lǐng)導(dǎo)和主管技術(shù)人員以及項(xiàng)目設(shè)計(jì)和開發(fā)人員。 二、系統(tǒng)框圖 輸入i判斷i輸入人事信息顯示人事信息刪除人事信息查詢?nèi)耸滦畔⒆x取文件存儲(chǔ)文件讀取文件人事統(tǒng)計(jì)信息 性別統(tǒng)計(jì)人數(shù)規(guī)模入公司時(shí)間輸入判斷i開始關(guān)閉 2 三、任務(wù)分工 高玉峰負(fù)責(zé):輸入模塊,顯示模塊,刪除模塊 。祝令瑞負(fù)責(zé):存儲(chǔ)模塊 查詢模塊、讀取模塊統(tǒng)計(jì)模塊、退出模塊 。四、系統(tǒng)的軟硬件環(huán)境1、硬件環(huán)境: CPU 2.4GHz 256M內(nèi)存 80G硬盤。 2、軟件環(huán)境:turboc2.0 UCDOS5.0 操作系統(tǒng) WindowsXp。 五、設(shè)計(jì)分析人事檔案管理系統(tǒng)功能:程序設(shè)計(jì)一般由兩部分組成:算法和數(shù)據(jù)結(jié)構(gòu),合理地選擇和實(shí)現(xiàn)一個(gè)數(shù)據(jù)結(jié)構(gòu)和處理這些數(shù)據(jù)結(jié)構(gòu)具有同樣的重要性。在人事管理過程中,由于預(yù)計(jì)記錄對(duì)于一個(gè)單位的學(xué)生數(shù)或人事數(shù)來說太大,操作除了能夠增加、刪除、保存等外,更多的情況是查詢,且能夠?qū)崿F(xiàn)快速查詢。特別是當(dāng)需要?jiǎng)討B(tài)變化時(shí)利用鏈表,例如插入和刪除數(shù)據(jù)等操作時(shí),為方便插入和刪除人事記錄,通過數(shù)據(jù)的自動(dòng)的移動(dòng)數(shù)據(jù),實(shí)現(xiàn)動(dòng)態(tài)管理。本系統(tǒng)涉及的模塊主要有:開始、系統(tǒng)管理、人事管理、信息查詢等四大模塊。(1) 人事管理主要包括:(編號(hào)、姓名、性別、年齡、出生日期、政治面貌、家庭住址、圖片等)基本 內(nèi)容的輸入,刪除,修改,查詢(2) 系統(tǒng)管理主要包括:用戶的注冊(cè),資料的修改等。(3) 信息查詢主要包括:?jiǎn)T工信息的查找、打印等。2 模塊功能及操作步驟:各個(gè)模塊功能及流程圖 (1)record()系統(tǒng)將提示輸入人事姓名、性別、城市、街道、電話、郵編、進(jìn)入公司的時(shí)間(*注意:按提示輸入*),主要使用”scanf()”及”getchar()”語句。首先利用”malloc”函數(shù)在內(nèi)存的動(dòng)態(tài)存儲(chǔ)器中開辟一個(gè)長度為”sizeof”長度的空間,以存放預(yù)定義的”*worker”指向的內(nèi)容。并用”new”指向起始地址的指針。若不能執(zhí)行,返回空指針.否則,利用鏈表執(zhí)行輸入功能。即:else 流程圖 head=NULL輸入new=headnew=thisnew=this-nextthis-next=thisisthis-next.=NULLhead=this申請(qǐng)內(nèi)存記錄(1) Y(2)listall()系統(tǒng)將顯示文件中存儲(chǔ)的人事檔案。此功能利用dowhile;語句。若”this”不指向空。該系統(tǒng)利用語句 doprintf(“n記錄%d”,+i); printf(this);getchar(); this=this-next; 此外使用“printf()”語句完成顯示功能系統(tǒng)。(流程圖在7頁)()del()系統(tǒng)將提示輸入要?jiǎng)h除人事的姓名。輸入相應(yīng)信息。系統(tǒng)將刪除您所指定的信息。主要使用”strcmp()”及”printf()”等語句。本系統(tǒng)執(zhí)行刪除語句一條比較函數(shù)。即:if(strcmp(p-name,str)=0)break;應(yīng)用鏈表的實(shí)行地址轉(zhuǎn)換,以便執(zhí)行查找人名的功能:if(p2)p1-next=p2-next;free(p2);print (“n*請(qǐng)存盤*n”);顯示 head=NULLhead=this輸出thisthis-next=this this=NULL讀取getchar();elseprintf(“沒找到所須刪除員工n”);getchar(); 流程圖: 刪除刪除輸入strhead=p1p1=p2p2=NULL 比較p-name與strp2=p1p2-next=p2p2=headhead-next=nextp2=NULL(3) Y N Y() search()系統(tǒng)將對(duì)您指定的信息進(jìn)行查找。主要使用“strcmp()”“getchar()”等語句。該系統(tǒng)主要運(yùn)行過程為:若頭指針不為空,則利用比較函數(shù)if(strcmp(p1-name,nsme)= =0)如果該語句成立,證明輸入的信息已被查詢到,如果語句(p1=NULL)成立,表示您查找的人不是本公司員工,按任意鍵可回到主程序執(zhí)行區(qū)。(流程圖在11頁)() rfile()系統(tǒng)將顯示您所要讀取的信息。主要使用文件指針及“fopen”“fclose”語句。此模塊我們系統(tǒng)的重要部分,相對(duì)來說較為復(fù)雜。開始時(shí)要用到”mallo”函數(shù)來開辟空間(與模塊1中的原理相同),如果能打開目標(biāo)文件,逐條讀取,直到指針指向的下個(gè)地址為空,則表明讀取完畢。執(zhí)行此項(xiàng)功能的語句為: elsewhile(fread(p,sizeof(worker),1,in)= =1) j+; printf(“n 記錄n”,j); if(j= =1) head=p; p=p-next;if(p= =NULL)p=(worker*)malloc(sizeof(worker); p2=p; free(p); p2=NULL; fclose(in); printf(“n%d條文件讀取完畢n”,j);if(j = =0)printf(“*磁盤無數(shù)據(jù)*n”);printf(“按任意鍵繼續(xù)n”);getchar();(流程圖在下頁)head=p1 查詢顯示輸入str head=NULLp1=NULL比較str與姓名p1-head=p1is輸出(4) Y顯示存儲(chǔ)打開文件P=NULL存 儲(chǔ)p-next=p關(guān)閉文件P=NULL(5) Y Y() wfile()系統(tǒng)將自動(dòng)保存您所要存儲(chǔ)的信息。用到了”if”及”for”語句。如果該文件能打開,預(yù)將文件存儲(chǔ)在1.out文件中,即:while(p)fwrite(p,sizeof(worker),1.out);/*將p以sizeof長度逐條存儲(chǔ)在文件1.out中*/ n+;p =p-next;fclose(out);printf(“n文件的%d被寫入。n”,n);printf(“按任意鍵繼續(xù)”n); getchar; 流程圖 p=NULL申請(qǐng)內(nèi)存打開文件提取j+j=1p=nextp-next=pp=NULL申請(qǐng)內(nèi)存p-p2釋放p關(guān)閉 讀取(6) N N N() total()系統(tǒng)將統(tǒng)計(jì)您所輸入的信息。這個(gè)模塊是本組成員最滿意的,此模塊的執(zhí)行程序極為簡(jiǎn)單,但是執(zhí)行的功能確實(shí)非常齊全。本模塊主要運(yùn)用”if()else”的循環(huán)嵌套;就完成了性別統(tǒng)計(jì)、公司人員規(guī)模、入公司時(shí)間的三項(xiàng)功能。值得一提的是在執(zhí)行性別統(tǒng)計(jì)與公司人員規(guī)模的執(zhí)行語句后加上2個(gè)”getchar()”本小組成員在借鑒的同時(shí)的提高,這是為了減緩程序運(yùn)行速度,保證指針?biāo)赶虻淖詈笠粋€(gè)內(nèi)容被系統(tǒng)執(zhí)行,這才使兩項(xiàng)功能完整的執(zhí)行。(流程圖在16頁)開 始Head-p輸入str判斷strp=NULLp=NULLp=NULLx+y+i+輸出pt-sexpt-next=ptX+=1pt-next=pt輸出日期pt-next=pt()退出模塊:系統(tǒng)將退出到DOS環(huán)境。(7) 1 2 3 Y Y六、使用說明初始化界面輸入回車進(jìn)入主菜單選擇功能,(輸入0-7)錄入功能輸入人事信息輸入姓名,性別,城市,街道,電話,郵編,年齡。入公司年份。顯示人事信息鍵入6并按回車鍵以后,保存錄入信息,鍵入2并按回車,可以顯示錄入的人事信息。查詢功能鍵入4,按回車后,就可以進(jìn)行查詢功能。查詢?nèi)耸滦畔ⅲ枰斎氩樵內(nèi)耸碌男彰?。刪除功能鍵入3并按回車,可以進(jìn)行刪除功能。一旦刪除無法恢復(fù),請(qǐng)審用。刪除人事記錄結(jié)束程序,顯示 指導(dǎo)老師 遲老師,設(shè)計(jì)者,課程名稱,設(shè)計(jì)時(shí)間。七、結(jié)束語 程序優(yōu)點(diǎn):本系統(tǒng)屬于小型應(yīng)用程序,適用于人事管理系統(tǒng)。使用靈活方便,本系統(tǒng)操作界面友好,有無計(jì)算機(jī)基礎(chǔ)軍可使用。能提高工作效率,節(jié)約時(shí)間,使煩瑣的管理變得十分輕松。程序的不足之處:本程序雖然使用方便,但是并不十分完善,由于我們的能力和要求的范圍有限,對(duì)具體細(xì)節(jié)的內(nèi)容作的并不是很到位。我們并不能計(jì)算學(xué)生的借書時(shí)間等。設(shè)計(jì)之初我們也沒有把文件這一重要組成部分寫到程序里,使得本程序只能使用一次。經(jīng)過遲老師的細(xì)心指導(dǎo)我們才知道一個(gè)完整的程序是可以重復(fù)使用的并且及時(shí)添加了這一功能。由于時(shí)間有限,我們只能運(yùn)用一些簡(jiǎn)單的函數(shù)進(jìn)行編程本程序。以及對(duì)某些函數(shù)錄入的限制還有待改進(jìn)和完善。收獲: 成功之處:此系統(tǒng)程序雖然簡(jiǎn)單,卻集結(jié)了基本的管理功能。刪除,存儲(chǔ),統(tǒng)計(jì)等功能還是較為成功的。特別是人事檔案的統(tǒng)計(jì)管理功能,使煩瑣的工作變得簡(jiǎn)單輕松。不足之處:由于我們水平和時(shí)間有限,難免有不足和差強(qiáng)人意的地方。尤其是對(duì)于系統(tǒng)應(yīng)該配以保密性的設(shè)置,可是由于我們的知識(shí)積累不夠,運(yùn)行不了。還請(qǐng)遲老師海涵。小結(jié):我們只有兩人組成的程序設(shè)計(jì)小組,利用課余時(shí)間別編寫了這套人事管理系統(tǒng)。通過這次課程設(shè)計(jì),我們團(tuán)結(jié)合作,相互支持,充分發(fā)揮了團(tuán)隊(duì)精神,使我們所學(xué)的知識(shí)轉(zhuǎn)化今天的成果。當(dāng)然,在程序設(shè)計(jì)的過程中,通過與其他專業(yè)同學(xué)交流,我們也深刻體會(huì)到自計(jì)算機(jī)水平的有限與不足,為了將我們與齊大其他專業(yè)學(xué)生以及其他高校學(xué)生的差距縮小,我們今后將會(huì)以200%的努力投入到學(xué)習(xí)中去,用汗水和知識(shí)衡量我們與成功間的差距!最后,感謝給予我們這次實(shí)踐和創(chuàng)做機(jī)會(huì)的遲立穎老師 ! 八、源程序#include string.h#include #include stdlib.h#define NULL 0typedef struct worker char name20; char sex; char age4; char te20; char zi10; char adress20; char city10;typedef struct date int year; int month; int day; date;worker;worker *head,*this,*new;/*主函數(shù)*/main()char order;head=NULL;clrscr();printf(nn*提示請(qǐng)先讀取文件!*n);printf (nn* 按回車?yán)^續(xù)!*n);getchar();do clrscr();printf( n);printf(n);printf(*n);printf( * 1.輸入人事信息 $ 2.顯示人事信息 *n);printf( * 3.刪除人事信息 $ 4.查詢?nèi)耸滦畔?*n);printf( * 5.讀取文件 $ 6.存儲(chǔ)文件 *n);printf( * 7.人事統(tǒng)計(jì)信息 $ 0.退出系統(tǒng) *n);printf(*n);printf(n 請(qǐng)您在上述功能(0-7)中選擇:n);order=getch(); switch(order) case1:record();break; case2:listall();break; case3:del(head);break; case4:search();break; case5:rfile(head);break; case6:wfile(head);break; case7:total(head);break; case0:wfile(head);break; while(order!=0);clrscr();printf(nnnnnn);printf(* c 語言程序設(shè)計(jì) *n);printf(* 名稱:人事管理系統(tǒng)n);printf(* 班級(jí):化工062班。n);printf(* 指導(dǎo)老師:遲立穎老師n);printf(* 設(shè)計(jì)者:祝令瑞 高玉峰 n);printf(* 組長:高玉峰 n);printf(* 設(shè)計(jì)時(shí)間:2007年10月n);getchar();/*輸入信息*/record() char re,num30; new=(worker*)malloc(sizeof(worker);/*(*void)malloc(sizeof(*) *malloc(sizeof(*void)是內(nèi)存的動(dòng)態(tài)存儲(chǔ)中分配一個(gè)長度為sizeof的連續(xù)空間((*void)指向分配域起始地址的指針)若不能執(zhí)行返回空指針*if(head=NULL) head=new; else this=head; while(this-next!=NULL) this=this-next; this-next=new; this=new;clrscr(); printf(n 請(qǐng)您輸入姓名:n); scanf(%s,this=-name);getchar(); printf(n 請(qǐng)您輸入性別(m代表男,W代表女:n); this-sex=getchar();getchar(); printf(n 請(qǐng)您輸入城市:n); scanf(%s,this-city);getchar(); printf(n請(qǐng)您輸入街道:n); scanf(%s,this-address);getchar(); printf(n請(qǐng)您輸入電話n); scanf(%s,this-tel);getchar(); printf(n請(qǐng)您輸入郵編n); scanf(%s,this-zi);getchar(); printf(n請(qǐng)您輸入年齡n); scanf(%s,this-age);getchar() printf(n請(qǐng)輸入入公司時(shí)間年份n); scanf(%d,&this-date-year);getchar(); printf(n請(qǐng)輸入入公司時(shí)間月份n); scanf(%d,&this-date-month);getchar(); printf(n請(qǐng)輸入入公司時(shí)間日期n); scanf(%d,&this-date-day);getchar(); printf(n*請(qǐng)存盤!*);getchar(); this-next=NULL;/*顯示信息*/listall()int i=0;if(head=NULL) rfile();return(); this=head; clrscr();do printf(n記錄%dn,+i); print(this); this=this-next; while(this!=NULL); (-this)-next=NULL;void print(worker *t) * *t傳遞鏈表、儲(chǔ)存數(shù)據(jù)* printf(姓名:%sn,t-name); printf(性別:%cn,t-sex); printf(入公司時(shí)間:%4d/%2d/%2dn, pt-date-year, pt-date-month, pt-date-month); printf(城市:%sn,pt-city); printf(街道:%sn,pt-adress); printf(電話:%sn,pt-te); printf(郵編:%sn,pt-zi);/*查詢信息*/int search() worker *p1; char name20; p1 = head; printf(請(qǐng)輸入所需查詢員工姓名:); scanf(%s,name); printf(n); if(head = NULL) printf(記錄以空!n); return 0; printf(按回車鍵繼續(xù)!n); getchar(); clrscr(); while(p1!=NULL) if(strcmp(p1-name,name)!=0) p1 = p1-next; else printf(所查詢?nèi)藛T信息:n); print(p1); break; if(p1 = NULL) printf(%s 不是本公司人事.n); printf(按任意鍵繼續(xù)n); getchar(); /*刪除信息*/void del(worker *pt) worker *p1,p2; char str20; printf(請(qǐng)輸入所需刪除人員姓名:); scanf(%s,str); p1 = p5;p2 = p1; while(p2) if(strcmp(p2-name,str) = 0)break; elsep1 = p2;p2 = p2-next; if(p2) p1-next = p2-next; free(p2);/*free(void)釋放void內(nèi)存區(qū)使該區(qū)能被其它變量使用*/ printf(n* 請(qǐng)存盤 *n); else printf(沒找到所需刪除員工n); if(p2 = head) head = head-next; printf(按回車鍵繼續(xù) n); getchar();/*存儲(chǔ)信息*/void wfile(worker *p) int n =0; FILE *out; if(out = fopen(a:數(shù)據(jù).c,wb)=NULL) printf(n不能打開“a:數(shù)據(jù).c”); else if(p) while(p) fwrite(p,sizeof(worker),1,out); n+; p = p-next; fclose(out); listall(); printf(n文件的%d條記錄被寫入。n,n); printf(按任意鍵繼續(xù)n); getchar(); /*讀取信息*/void rfile(worker *p) int j=0; FILE *in; if(in = fopen(a:數(shù)據(jù).c,rb)= NULL) printf(不能打開目標(biāo)文件n); return; else while(fread(p,sizeof(worker),1,in)=1) j+; printf(n記錄:%d,j); if(j = 1) head = p; p = p-next; fclose(in); printf(n%d條文件讀取完畢.n,j); if(j = 0) printf(* 磁盤無數(shù)據(jù) *n); printf(按任意鍵繼續(xù)n); getchar(); /* 統(tǒng)計(jì)信息*/ void total(worker *p) char str; int i=0,x=0,y=0; float a=0.0; worker pt, /*pt當(dāng)前變量*/ pt2, /*pt2循環(huán)變量 */ pri; /*pri前驅(qū)*/ if(p = NULL) printf(n*請(qǐng)先讀文件*); printf(n* 按回車?yán)^續(xù) *); getchar(); return 0; pri = pt =t; printf(n*); printf(n* 1.性別統(tǒng)計(jì) 2.公司人數(shù)規(guī)模*); printf(n* 3.工齡 0.退出 *); printf(n*); printf(n 請(qǐng)你在上述功能(0-3)選擇 ); str = getchar(); if(str = 0) return; if
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇南京第十三中學(xué)2024~2025學(xué)年高二下冊(cè)期末考試數(shù)學(xué)試題學(xué)生卷
- 江蘇常州聯(lián)盟學(xué)校2024~2025學(xué)年高一下冊(cè)期末調(diào)研數(shù)學(xué)試題含解析
- 重癥監(jiān)護(hù)病例監(jiān)測(cè)指標(biāo)選擇考核試卷
- 水泵流體動(dòng)力學(xué)模擬考核試卷
- 單板加工生產(chǎn)質(zhì)量風(fēng)險(xiǎn)預(yù)防考核試卷
- 銷售區(qū)域市場(chǎng)顧客生命周期管理考核試卷
- 移動(dòng)營銷在家用紡織品市場(chǎng)中的情感營銷策略應(yīng)用考核試卷
- 體育市場(chǎng)體育培訓(xùn)行業(yè)競(jìng)爭(zhēng)格局分析考核試卷
- 2025年中國OA軟件數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國GPRS配變監(jiān)測(cè)儀數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 2024年 紹興市交通控股集團(tuán)公司招聘考試筆試真題試題含答案
- 維保人員培訓(xùn)管理制度
- 超限模板及高支模安全專項(xiàng)施工方案(論證后)
- 大隱靜脈患者的護(hù)理查房講課件
- 九師聯(lián)盟2024-2025學(xué)年高二下學(xué)期6月摸底聯(lián)考英語試題(含答案)
- 2025年新高考1卷(新課標(biāo)Ⅰ卷)英語試卷
- LY/T 2252-2014碳匯造林技術(shù)規(guī)程
- 四渡赤水課件(共25張PPT)
- (高清正版)JJF(浙)1080—2012明渠流量計(jì)在線校準(zhǔn)規(guī)范(電子版)
- 生活飲用水衛(wèi)生標(biāo)準(zhǔn)GB5749-2006
- 過渡金屬能級(jí)圖數(shù)據(jù)庫2
評(píng)論
0/150
提交評(píng)論