C語言設計課程設計職工信息管理系統(tǒng)說明書_第1頁
C語言設計課程設計職工信息管理系統(tǒng)說明書_第2頁
C語言設計課程設計職工信息管理系統(tǒng)說明書_第3頁
C語言設計課程設計職工信息管理系統(tǒng)說明書_第4頁
C語言設計課程設計職工信息管理系統(tǒng)說明書_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設計說明書一 引言21世紀,人類經(jīng)濟高速發(fā)展,人們發(fā)生了日新月異的變化,特別是計算機的應用及普及到經(jīng)濟和社會生活中的各個領(lǐng)域。使原本的舊的管理方法越來越不適應現(xiàn)代社會的發(fā)展。許多還停留在以前的手工操作。這大大的阻礙了人類經(jīng)濟的發(fā)展。為了適應現(xiàn)代社會人們高度強烈的時間觀念,企事業(yè)職工信息管理類的智能化更加重要,人工的職工信息管理已經(jīng)不能滿足我們的需求,查詢困難等缺點是人工的試驗設備管理所不能克服的。在此情況下,就需要一個程序化的自動的設備信息管理系統(tǒng)來滿足人們的需求。在c語言的平臺下實現(xiàn),用戶可以方便的進行各項操作。c語言是一種程序設計語言1,早在20世紀90年代,c語言表現(xiàn)出了強勁的生命力

2、,c語言是一種結(jié)構(gòu)化語言。它層次清晰,便于按模塊化方式組織程序,易于調(diào)試和維護。c語言的表現(xiàn)能力和處理能力極強。它不僅具有豐富的運算符和數(shù)據(jù)類型,便于實現(xiàn)各類復雜的數(shù)據(jù)結(jié)構(gòu)。它還可以直接訪問內(nèi)存的物理地址2,進行位(bit)一級的操作。由于c語言實現(xiàn)了對硬件的編程操作,因此c語言集高級語言和低級語言的功能于一體,既可用于系統(tǒng)軟件的開發(fā),也適合于應用軟件的開發(fā)。此外,c語言還具有效率高,可移植性強等特點3。因此可以廣泛地移植到了各類型計算機上,從而形成了多種版本的c語言,幾乎應用了各個領(lǐng)域,如科學,醫(yī)藥,航天等多個方面。c語言設計具有重要的意義,可以提高經(jīng)濟的快速發(fā)展,促進各行各業(yè)的發(fā)展。從而

3、創(chuàng)造出更高的價值。本次設計采用結(jié)構(gòu)體數(shù)組和結(jié)構(gòu)體指針,完成了對數(shù)據(jù)的添加、顯示、查找、刪除、修改等功能。二 需求分析職工信息用文件存儲,提供文件的輸入輸出操作;要能夠完成職工信息的錄入和修改,需要提供職工信息添加和修改操作;實現(xiàn)對職工信息查詢需要提供查找操作,職工信息的查詢可根據(jù)職工號 、學歷、工資等多種方式查詢修改;另外還要根據(jù)鍵盤式選擇菜單以實現(xiàn)功能選擇。職工信息管理系統(tǒng)包括:職工號、姓名、性別、年齡、學歷、工資、住址、電話。包括插入、刪除、添加等功能,為職工的有效管理提供一個方便快捷的平臺。2.1 錄入用戶根據(jù)提示功能選擇添加即可實現(xiàn)對職工的職工號號、名字、性別、年齡、學歷、工資、住址、

4、電話,進行一次性輸入多條設備的信息記錄。2.2 查找可以按提示輸入要查找的職工號或?qū)W歷,然后系統(tǒng)將按職工號或?qū)W歷逐一進行核對,當滿足要求時,輸出該職工的全部信息;沒有時顯示無記錄。2.3 刪除該模塊提供的按職工號進行查找,當查找到后,通過if-else嵌套結(jié)構(gòu)來實現(xiàn),將滿足要求的設備數(shù)組成員用下一個數(shù)組的相應的成員進行替代,以此來實現(xiàn)刪除。2.4 修改修改職工的信息:提示用戶輸入要進行修改的職工號,然后系統(tǒng)就進行查找,如果在數(shù)組中存有該職工的信息,則提示用戶輸入要修改的職工的新信息同時顯示以前的信息,以防止修改錯誤。并且可以再次進行修改。2.5 顯示顯示功能是根據(jù)數(shù)組中的職工號是否為空來進行的

5、,通過if語句來實現(xiàn)。當數(shù)組中某個成員的職工號不為空時,就輸出;否則就跳過。依次來顯示全部職工的信息三 總體設計進行總體設計的目的是用比較抽象概括的方式確定系統(tǒng)如何完成預定的功能,進而確定組成系統(tǒng)的每個模塊的結(jié)構(gòu)和功能,從而實現(xiàn)c語言的編碼的實現(xiàn)。3.1 總體設計思想本系統(tǒng)主要應用結(jié)構(gòu)化的設計思想實現(xiàn)職工信息管理系統(tǒng)的添加、修改、刪除等典型管理功能。在軟件開發(fā)過程中應用了高級語言程序設計中的基本控制結(jié)構(gòu),如選擇、循環(huán)、順序結(jié)構(gòu)。系統(tǒng)的設計方法是結(jié)構(gòu)化設計方法,采用c語言進行開發(fā)。本次設計的職工信息系統(tǒng),采用創(chuàng)建一個結(jié)構(gòu)體數(shù)組,用來記錄設備的詳細信息,然后再通過對數(shù)組的各種操作來完成對職工信息的

6、添加、刪除、修改、查找等功能。有效實現(xiàn)添加、修改、刪除等功能,在程序設計過程中運用了結(jié)構(gòu)體數(shù)組的知識,以完成對職工信息的錄入、顯示等功能。職工信息錄入模塊職工信息查找模塊職工信息刪除模塊職工信息修改模塊職工信息管理系統(tǒng)設計職工信息顯示模塊圖3-1 系統(tǒng)總體功能結(jié)構(gòu)圖3.2 系統(tǒng)功能結(jié)構(gòu)圖職工信息包括職工號、姓名、性別、年齡、學歷、工資、住址、電話等。其結(jié)構(gòu)圖如3-2所示。職工詳細信息學歷電話住址工資年齡性別姓名職工號圖3-2 職工詳細信息圖四 詳細設計本次設計采用逐個模塊設計的方法,把一個復雜程序設計問題劃分為七個模塊,即:職工信息添加錄入,職工信息修改,職工信息顯示,職工信息查找,職工信息刪

7、除,職工信息插入和一個主函數(shù)模塊。4.1 主函數(shù)模塊在主函數(shù)中了while循環(huán)和switch 選擇兩個函數(shù),通過switchcase結(jié)構(gòu)實現(xiàn)菜單目錄的擇功能。其主體流程圖如下圖4-1所示。開始顯示一系列功能選擇輸入number判斷 是否是0到8根據(jù)n值調(diào)用各功能模塊函數(shù)結(jié)束no圖4-1 系統(tǒng)的選擇流程圖圖4-2 系統(tǒng)選擇界面圖系統(tǒng)的選擇實現(xiàn)了各個功能模塊之間的有效切換,使系統(tǒng)的使用更加方便快捷,給職工信息的管理帶來極大方便,其工作的界面如4-2所示。4.2 實驗設備信息錄入添加模塊利用宏定義,定義所聲明的結(jié)構(gòu)體數(shù)組的大小,while輸入職工信息依次賦給結(jié)構(gòu)體中的成員,在一個實驗設備信息錄入添加

8、完畢后提示是否繼續(xù)。選擇繼續(xù)可以繼續(xù)添加錄入;選擇退出就可以直接返回主界面,進行其它的功能選擇。其設計代碼如下所示。void add(link l) node *p,*r,*s; char zhigonghao10; int flag=0;r=l; s=l-next; while(r-next!=null) r=r-next; while(1) printf(請你輸入學號(以0返回上一級菜單:); scanf(%s,zhigonghao); if(strcmp(zhigonghao,0)=0) break; while(s) if(strcmp(s-data.zhigonghao,zhigon

9、ghao)=0) printf(=提示:職工號為%s的職工已經(jīng)存在,若要修改請你選擇4 修改!n,zhigonghao); printstart(); printc(); printe(s); printstart(); printf(n); return; s=s-next; p=(node *)malloc(sizeof(node); strcpy(p-data.zhigonghao,zhigonghao); printf(請你輸入姓名:); scanf(%s,); getchar(); printf(請你輸入性別:); scanf(%s,p-data.sex); g

10、etchar(); printf(請你輸入年齡:); scanf(%s,&p-data.nianling); getchar(); printf(請你輸入學歷:); scanf(%s,&p-data.xueli); getchar(); printf(請你輸入工資:); scanf(%s,&p-data.gongzi); getchar(); printf(請你輸入住址:); scanf(%s,&p-data.zhuzhi); getchar(); printf(請你輸入電話號碼:); scanf(%s,&p-data.tel); getchar(); p-next=null; r-next=

11、p; r=p; shoudsave=1; 其工作的界面如4-3所示。圖4-3 信息錄入界面圖4.3 實驗設備信息查找模塊本模塊按職工號進行查找,用for語句遍歷數(shù)組,字符串比較函數(shù)對輸入的信息與結(jié)構(gòu)體存儲的成員信息進行比對,若相等則輸出;否則顯示無記錄;其主要程序代碼如下所示。void qur(link l) int sel; char findmess20; node *p; if(!l-next) printf(n=提示:沒有資料可以查詢!n); return; printf(n=1按職工號查找n=3按學歷查找n); scanf(%d,&sel); if(sel=1) printf(請你輸

12、入要查找的職工號:); scanf(%s,findmess); p=locate(l,findmess,zhigonghao); if(p) printf(tttt查找結(jié)果n); printstart(); printc(); printe(p); printstart(); else nofind(); else if(sel=3) printf(請你輸入要查找的學歷:); scanf(%s,findmess); p=locate(l,findmess,xueli); if(p) printf(tttt查找結(jié)果n); printstart(); printc(); printe(p); wh

13、ile(1) p=locate(p,findmess,xueli);if(p=null)break; printe(p); printstart(); else nofind(); else wrong(); 其工作的界面如4-4所示。圖4-4 信息查找界面圖4.4 實驗設備信息刪除模塊在刪除之前,要輸入要刪除的信息的職工號,然后在進行查找,查找到以后,利用for循環(huán),依次將該數(shù)組元素的后位向前移動覆蓋,形成刪除功能。其刪除程序的部分語句如下:void del(link l) int sel; node *p,*r; char findmess20; if(!l-next) printf(n=

14、提示:沒有資料可以刪除!n); return; printf(n=1按職工號刪除n=2按姓名刪除n); scanf(%d,&sel); if(sel=1) printf(請你輸入要刪除的學號:); scanf(%s,findmess); p=locate(l,findmess,zhigonghao); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:該職工已經(jīng)成功刪除!n); shoudsave=1; else nofind(); else if(sel=2) printf(請你輸入要刪除的姓名

15、:); scanf(%s,findmess); p=locate(l,findmess,name); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:該職工已經(jīng)成功刪除!n); shoudsave=1; else nofind(); else wrong(); 其工作的界面如4-5所示。圖4-5 信息刪除界面圖4.5 實驗設備信息修改模塊利用for語句對結(jié)構(gòu)體進行查找,if語句進行判斷,找到要修改的信息,否則提示不存在;其主要程序代碼如下所示。void modify(link l) node *

16、p; char findmess20; if(!l-next) printf(n=提示:沒有資料可以修改!n); return; printf(請你輸入要修改的職工號:); scanf(%s,findmess); p=locate(l,findmess,zhigonghao); if(p) printf(請你輸入新職工號(原來是%s):,p-data.zhigonghao); scanf(%s,p-data.zhigonghao); printf(請你輸入新姓名(原來是%s):,); scanf(%s,); getchar(); printf(請你輸

17、入性別(原來是%s):,p-data.sex); scanf(%s,p-data.sex); printf(請你輸入新的年齡(原來是%s):,p-data.nianling); scanf(%s,&p-data.nianling); getchar(); printf(請你輸入新的學歷(原來是%s):,p-data.xueli); scanf(%s,&p-data.xueli); getchar(); printf(請你輸入新的工資(原來是%s):,p-data.gongzi); scanf(%s,&p-data.gongzi); getchar(); printf(請你輸入新的住址(原來是%

18、s):,p-data.zhuzhi); scanf(%s,&p-data.zhuzhi); getchar(); printf(請你輸入新的電話號碼(原來是%s):,p-data.tel); scanf(%s,&p-data.tel); printf(n=提示:資料修改成功!n); shoudsave=1; else nofind(); 對職工信息的修改可以實現(xiàn)信息的正確性,實時性。而且其操作簡單、快捷;其工作的界面如4-6所示。圖4-6 信息修改界面圖4.6 實驗設備信息顯示模塊本模塊按職工號是否為零進行顯示。使用字符串比較函數(shù)比較各成員的職工號,當編號為零時,跳過;不為零時就顯示出全部信息

19、。信息的顯示可以顯示全部的信息,可以有進行設備信息的顯示核對,其主要程序代碼如下所示。void disp(link l) int count=0;node *p; p=l-next; if(!p) printf(n=提示:沒有資料可以顯示!n); return; printf(tttt顯示結(jié)果n); printstart(); printc(); printf(n); while(p) printe(p); p=p-next; printstart(); printf(n); 它的操作界面如4-7所示。圖4-7 信息顯示界面圖五 總結(jié)本次設計運用了所學的模塊設計方法、結(jié)構(gòu)體、循環(huán)語句、選擇語句

20、等實現(xiàn)了職工的信息管理系統(tǒng)的添加、刪除、修改、查找等功能,實現(xiàn)了對職工信息的錄入、對輸入信息的查詢、對輸入信息的修改、對輸入信息的輸出、對輸入信息的刪除等。在為期一周的c語言課程設計中,充分應用了所學的知識,但是由于知識掌握的不夠深入,且知識學的不全等原因?qū)е略谡n程設計過程中遇到很多困難。尤其是在進行錄入的信息匯總方面,耗費了很多的時間與精力。同時,在各功能的設計過程中有好多問題考慮還不夠全面且功能不夠理想全面,沒有實現(xiàn)對實驗設備信息的排序具體化、保存、插入的有效性和隨意性功能。通過這次課程設計,使我對c語言有了更進一步的認識和了解,使自己把知識進行了充分的應用,把知識更好的學以致用。明白了要

21、想學好c語言重在實踐,要通過不斷的上機操作才能更好地學習它,我也發(fā)現(xiàn)自己的好多不足之處,首先是自己在指法上還不行,經(jīng)常按錯字母,通過學習有所改進;再有對c語言的一些標準庫函數(shù)不太了解,對函數(shù)調(diào)用的正確使用不夠熟悉,對c語言中經(jīng)常出現(xiàn)的錯誤不了解,明白了學好任何技術(shù)方面的知識都重在實踐。這次課程設計不僅親自修改和編輯程序,通過本次課程設計也培養(yǎng)了我獨立思考、 綜合運用所學有關(guān)相應知識的能力,掌握 工程軟件設計的基本方法,強化上機動手編程能力,闖過理論與實踐相結(jié)合的難關(guān)!也學習到了很多的哲理,懂得如何制定計劃,怎么樣去進行這個計劃,掌握了如何去克服自己在進行實踐中的不良情緒??傊?,此次課程設計讓我

22、獲益良多,整體來說是比較成功的。參考文獻1 譚浩強,張基溫c語言程序設計教程(第3版)m北京:高等教育出版社,20062 呂鳳煮c語言基礎教程基礎理論與案例m北京:清華大學出版社,20053 黃明,梁旭,萬洪莉c語言課程設計m北京:電子工業(yè)出版社,2006附錄#include #include #include int shoudsave=0; struct zhigong char zhigonghao10; /職工號 char name20; /姓名char sex10; /性別char nianling22; /年齡char xueli22; /學歷char gongzi22; /工資c

23、har zhuzhi22; /住址char tel22; /電話; typedef struct node struct zhigong data; struct node *next; node,*link; void menu() printf(*); printf(t1錄入職工資料ttttt2刪除職工資料n); printf(t3查找職工資料ttttt4修改職工資料n); printf(t5顯示職工資料ttttt6保存職工資料n); printf(t0退出系統(tǒng)n); printf(*n); void printstart() printf(-n); void wrong() printf

24、(n=提示:輸入錯誤!n); void nofind() printf(n=提示:沒有找到該職工!n); void printc() / 本函數(shù)用于輸出中文 printf(職工號t 姓名t 性別t 年齡t 學歷t 工資t 電話號碼t); void printe(node *p)/本函數(shù)用于輸出英文 printf(%-9s%5st%5st%5st%5st%5stt%st n,p-data.zhigonghao,,p-data.sex,p-data.nianling,p-data.xueli,p-data.gongzi,p-data.zhuzhi,p-data.tel); n

25、ode* locate(link l,char findmess,char nameorzhigonghao) /該函數(shù)用于定位連表中符合要求的接點,并返回該指針 node *r; if(strcmp(nameorzhigonghao,zhigonghao)=0) /按職工號查詢 r=l-next; while(r!=null) if(strcmp(r-data.zhigonghao,findmess)=0) return r; r=r-next; else if(strcmp(nameorzhigonghao,name)=0) /按姓名查詢 r=l-next; while(r!=null)

26、if(strcmp(,findmess)=0) return r; r=r-next; else if(strcmp(nameorzhigonghao,xueli)=0) /按學歷查詢 r=l-next; while(r!=null) if(strcmp(r-data.xueli,findmess)=0) return r; r=r-next; return 0; void luru(link l) /錄入職工 node *p,*r,*s; char zhigonghao10; int flag=0;r=l; s=l-next; while(r-next!=null) r

27、=r-next; /將指針置于最末尾 while(1) printf(請你輸入學號(以0返回上一級菜單:); scanf(%s,zhigonghao); if(strcmp(zhigonghao,0)=0) break; while(s) if(strcmp(s-data.zhigonghao,zhigonghao)=0) printf(=提示:職工號為%s的職工已經(jīng)存在,若要修改請你選擇4 修改!n,zhigonghao); printstart(); printc(); printe(s); printstart(); printf(n); return; s=s-next; p=(nod

28、e *)malloc(sizeof(node); strcpy(p-data.zhigonghao,zhigonghao); printf(請你輸入姓名:); scanf(%s,); getchar(); printf(請你輸入性別:); scanf(%s,p-data.sex); getchar(); printf(請你輸入年齡:); scanf(%s,&p-data.nianling); getchar(); printf(請你輸入學歷:); scanf(%s,&p-data.xueli); getchar(); printf(請你輸入工資:); scanf(%s,&

29、p-data.gongzi); getchar(); printf(請你輸入住址:); scanf(%s,&p-data.zhuzhi); getchar(); printf(請你輸入電話號碼:); scanf(%s,&p-data.tel); getchar(); /信息輸入已經(jīng)完成 p-next=null; r-next=p; r=p; shoudsave=1; void chazhao(link l) /查找職工 int sel; char findmess20; node *p; if(!l-next) printf(n=提示:沒有資料可以查詢!n); return; printf(n

30、=1按職工號查找n=2按學歷查找n); scanf(%d,&sel); if(sel=1)/職工號 printf(請你輸入要查找的職工號:); scanf(%s,findmess); p=locate(l,findmess,zhigonghao); if(p) printf(tttt查找結(jié)果n); printstart(); printc(); printe(p); printstart(); else nofind(); else if(sel=2) /學歷 printf(請你輸入要查找的學歷:); scanf(%s,findmess); p=locate(l,findmess,xueli)

31、; if(p) printf(tttt查找結(jié)果n); printstart(); printc(); printe(p); while(1) p=locate(p,findmess,xueli);if(p=null) break; printe(p); printstart(); else nofind(); else wrong(); void shanchu(link l) /刪除 int sel; node *p,*r; char findmess20; if(!l-next) printf(n=提示:沒有資料可以刪除!n); return; printf(n=1按職工號刪除n=2按姓名

32、刪除n); scanf(%d,&sel); if(sel=1) printf(請你輸入要刪除的學號:); scanf(%s,findmess); p=locate(l,findmess,zhigonghao); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:該職工已經(jīng)成功刪除!n); shoudsave=1; else nofind(); else if(sel=2) printf(請你輸入要刪除的姓名:); scanf(%s,findmess); p=locate(l,findmess,na

33、me); if(p) r=l; while(r-next!=p) r=r-next; r-next=p-next; free(p); printf(n=提示:該職工已經(jīng)成功刪除!n); shoudsave=1; else nofind(); else wrong(); void xiugai(link l) /修改 node *p; char findmess20; if(!l-next) printf(n=提示:沒有資料可以修改!n); return; printf(請你輸入要修改的職工號:); scanf(%s,findmess); p=locate(l,findmess,zhigongh

34、ao); if(p) printf(請你輸入新職工號(原來是%s):,p-data.zhigonghao); scanf(%s,p-data.zhigonghao); printf(請你輸入新姓名(原來是%s):,); scanf(%s,); getchar(); printf(請你輸入性別(原來是%s):,p-data.sex); scanf(%s,p-data.sex); printf(請你輸入新的年齡(原來是%s):,p-data.nianling); scanf(%s,&p-data.nianling); getchar(); printf(

35、請你輸入新的學歷(原來是%s):,p-data.xueli); scanf(%s,&p-data.xueli); getchar(); printf(請你輸入新的工資(原來是%s):,p-data.gongzi); scanf(%s,&p-data.gongzi); getchar(); printf(請你輸入新的住址(原來是%s):,p-data.zhuzhi); scanf(%s,&p-data.zhuzhi); getchar(); printf(請你輸入新的電話號碼(原來是%s):,p-data.tel); scanf(%s,&p-data.tel); printf(n=提示:資料修改成功!n); shoudsave=1; else nofind(); void xianshi(link l) /顯示 int count=0;node *p; p=l-next; if(!p) printf(n=提示:沒有資料可以顯示!n); return; printf(tttt顯示結(jié)果n); printstart(); printc(); printf(n); while(p) printe(p); p=p-next; printstart(); printf(n); void save(link l) file* fp;node *p; int

溫馨提示

  • 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

提交評論