![C語言課程設計報告-職工信息管理系統(tǒng)_第1頁](http://file4.renrendoc.com/view/a7310f0a082d78d9807c607e10619cf6/a7310f0a082d78d9807c607e10619cf61.gif)
![C語言課程設計報告-職工信息管理系統(tǒng)_第2頁](http://file4.renrendoc.com/view/a7310f0a082d78d9807c607e10619cf6/a7310f0a082d78d9807c607e10619cf62.gif)
![C語言課程設計報告-職工信息管理系統(tǒng)_第3頁](http://file4.renrendoc.com/view/a7310f0a082d78d9807c607e10619cf6/a7310f0a082d78d9807c607e10619cf63.gif)
![C語言課程設計報告-職工信息管理系統(tǒng)_第4頁](http://file4.renrendoc.com/view/a7310f0a082d78d9807c607e10619cf6/a7310f0a082d78d9807c607e10619cf64.gif)
![C語言課程設計報告-職工信息管理系統(tǒng)_第5頁](http://file4.renrendoc.com/view/a7310f0a082d78d9807c607e10619cf6/a7310f0a082d78d9807c607e10619cf65.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
C語言課程設計報告-職工信息管理系統(tǒng)一、設計任務課題:職工信息管理系統(tǒng)設計工號不重復)。是設計一職工信息管理系統(tǒng),使之能提供以下功能:系統(tǒng)以菜單方式工作職工信息錄入功能(職工信息用文件保存)——輸入職工信息瀏覽功能——輸出查詢和排序功能——算法按工資查詢按學歷查詢等職工信息刪除,修改功能。補充要求:1)整個系統(tǒng)均用c語言實現(xiàn);2)可以利用數(shù)組,指針,鏈表來實現(xiàn)數(shù)據(jù)結構設計;3)系統(tǒng)具有輸入,顯示,查詢,刪除,排序,插入,保存,讀取等基本功能;4)系統(tǒng)的各個功能模塊都用函數(shù)的形式來實現(xiàn);5)可以將信息保存在文件中讀取出來。二、系統(tǒng)設計方案1.程序采用模塊化設計,主函數(shù)為程序的入口,各模塊獨立,可分塊調(diào)試,各模塊由主函數(shù)控制調(diào)用。主函數(shù)的控制功能通過循環(huán)執(zhí)行一個開關語句來實現(xiàn)。該開關語句的條件值為調(diào)用主菜單函數(shù)得到的返回值,根據(jù)該值,調(diào)用相應的各功能函數(shù)。。2.應用高級語言程序設計中的基本控制結構,如選擇和循環(huán)等,并且包含對文件的讀、寫等基本操作,在軟件開發(fā)過程中應用了軟件工程的基本理論。因此,系統(tǒng)的設計方法是結構化設計方法,開發(fā)手段是C語言。3.源程序運用多個函數(shù),開頭先進行函數(shù)聲明,然后分別定義、調(diào)用各函數(shù)。程序流程圖三、程序主要代碼分析/*下面定義職工信息結構*/id;charname[20];charsex[3];intage;charedu[50];intwages;charadr[255];charphone[13];}WORKER,*PWORKER;//typedefstructWORKER*PWORKER;typedefstructlink分析:我認為鏈表的使用正是本程序的最精彩的地方所在,較數(shù)組而言它的使用帶來了很多優(yōu)點:(1)空間的靈活分配,雖然地址不是連續(xù)的,但只要找到鏈表的頭所有數(shù)據(jù)都可以迅速找到(2)可以靈活的插入或刪除元素而不會像數(shù)組那樣帶來較多數(shù)據(jù)的移動。。WORKERw;structlink*next;}LINK,*PLINK;//typedefstructLINK*PLINK;/*創(chuàng)建職工信息鏈表*/PLINKcreate。。PLINKp=(PLINK)malloc(sizeof(LINK));if(NULL!=p)。p->next=NULL;returnp;}printf("內(nèi)存不足!\n");returnNULL;}/*顯示程序界面文字*/voidmessage。{system("color09f");/*設置當前窗口的背景色和前景色*/分析:界面設計我運用了適當?shù)臉它c使得界面變得清晰大方,背景色的添加也可給用戶新的視覺效果/*0=黑色8=灰色1=藍色9=淡藍色2=綠色A=淡綠色3=淺綠色B=淡淺綠色4=紅色C=淡紅色5=紫色D=淡紫色6=黃色E=淡黃色7=白色F=亮白色*/system("cls");printf("\t\t************************************************\n\n");printf("\t\t************************************************\n\n");printf("\t\t**************ChooseFunction*************\n\n");printf("\t\t************幫助請輸入:0************\n\n");printf("\t\t************錄入職工信息請輸入:1************\n\n");printf("\t\t************瀏覽職工信息請輸入:2************\n\n");printf("\t\t************查詢職工信息請輸入:3************\n\n");printf("\t\t************刪除職工信息請輸入:4************\n\n");printf("\t\t************修改職工信息請輸入:5************\n\n");printf("\t\t************清屏請輸入:6************\n\n");printf("\t\t************退出請輸入:-1***********\n\n");printf("\t\t************************************************\n\n");printf("\t\t************************************************\n\n");}/*錄入職工信息*/intadd(PLINKp)。分析:周密地考慮到了內(nèi)存不足以及職工號已存在導致的錄入失敗,給予用戶適當?shù)奶崾臼沟迷O計更加人性化PLINKh=NULL;PLINKq=(PLINK)malloc(sizeof(LINK));if(NULL==q)。printf("錄入失敗提示:內(nèi)存不足!\n");return-1;}printf("請輸入職工號(數(shù)字):");scanf("%d",&q->w.id);h=p->next;while(h)。if(h->w.id==q->w.id)。free(q);printf("錄入失敗提示:此職工號已經(jīng)存在!\n");return-1;}h=h->next;分析:適當?shù)匿浫胩崾?,更加方便了用戶的錄入操作}printf("請輸入職工姓名(文字):");scanf("%s",&q->);printf("請輸入職工性別(文字):");scanf("%s",&q->w.sex);printf("請輸入職工年齡(數(shù)字):");scanf("%d",&q->w.age);printf("請輸入職工學歷(文字):");scanf("%s",&q->);printf("請輸入職工工資(數(shù)字):");scanf("%d",&q->w.wages);printf("請輸入職工住址(文字):");scanf("%s",&q->w.adr);scanf("%s",&q->w.phone);q->next=p->next;p->next=q;printf(".^_^.錄入成功!.^_^.\n");return-1;}/*按姓名查詢*/PLINKfindname(PLINKp,char*name)。message(;printf("按姓名查詢\n");分析:鏈表、結構指針的使用大大方便了信息的查找定位。值得注意的是判斷兩字符串內(nèi)容是否相同時需用到strcmp函數(shù)!while(NULL!=p->next)。if(0==strcmp(p->next->,name))。printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",p->next->w.id,p->next->,p->next->w.sex,p->next->w.adr,p->next->,p->next->w.wages,p->next->w.adr,p->next->w.phone);returnp;}p=p->next;}printf(".^_^.查詢結束!.^_^.\n");returnNULL;}/*按職工號刪除職工信息*/intdel(PLINKp,intid)。message(;printf("按職工號刪除職工信息\n");while(NULL!=p->next)。if(p->next->w.id==id)。PLINKq=p->next;p->next=p->next->next;free(q);printf(".^_^.刪除成功!.^_^.\n");return1;}p=p->next;}printf("沒有你輸入的職工號!\n");return-1;}分析:及時的在程序結束時釋放內(nèi)存,避免占用多余的空間充分顯示出了鏈表使用的優(yōu)越性,占用最小的空間滿足用戶更多的需求/*程序結束釋放內(nèi)存*/voidrelease(PLINKp)。PLINKq;while(NULL!=p->next)。q=p;p=p->next;free(q);}free(p);}/*查詢調(diào)用*/分析:此處是我對源程序的改進處之一,用此函數(shù)調(diào)用另外3種查詢方式使得界面變得更清晰簡單些,雖然只是小小switch函數(shù)的使用但會使用戶的使用更具目的指向性id;charname[20];charstr[20];PLINKpworker;intl;printf("\t\t\t\t*姓名查找按:1*\n");printf("\t\t\t\t*學歷查找按:2*\n");printf("\t\t\t\t*職工號查按:3*\n");scanf("%d",&l);if(l>0&&l<4){switch(l)。scanf("%s",name);findname(pworker,name);break;case2:printf("請輸入要查詢的職工學歷:");scanf("%s",str);find_sr(pworker,str);break;case3:printf("請輸入要查詢的職工號:");scanf("%d",&id);findid(pworker,id);break;}printf("\n\n選擇完畢!!!");}elseprintf("\t\t\t\t輸入有誤!!!");}/*修改職工信息*/intmodify(PLINKp){intid;PLINKq;PLINKh=NULL;分析:此修改函數(shù)是我對原函數(shù)的一個補充,彌補了原程序修改功能的缺失,但相比較別人的函數(shù)似乎浪費了許多資源,單個信息的修改根本不需要如此大費周章,急需一改進——就是對需改進處的準確定位。當然相比較我原本打算的先刪除再錄入還是有了一定的進步之出。printf("請輸入職工號(數(shù)字):");scanf("%d",&id);h=p->next;while(h)。if(h->w.id==id)。break;}h=h->next;}if(h==NULL)。printf("找不到此職工,請重試\n");return-1;}printf("請輸入職工姓名(文字):");scanf("%s",&h->);printf("請輸入職工性別(文字):");scanf("%s",&h->w.sex);printf("請輸入職工年齡(數(shù)字):");scanf("%d",&h->w.age);printf("請輸入職工學歷(文字):");scanf("%s",&h->);printf("請輸入職工工資(數(shù)字):");scanf("%d",&h->w.wages);printf("請輸入職工住址(文字):");scanf("%s",&h->w.adr);scanf("%s",&h->w.phone);q->next=p->next;p->next=q;printf(".^_^.修改成功!.^_^.\n");return-1;}cmd=0;分析:主函數(shù)實現(xiàn)了控制調(diào)用其他函數(shù)的功能,一個while循環(huán)給用戶以多次更改的機會,從而更好的滿足用戶的不同要求。swith條件語句,編寫簡單明了,恰到好處的考慮到了用戶的需求intid;charname[20];charstr[20];PLINKpworker;if(!(pworker=create())。exit(0);}while(cmd!=-1)。switch(cmd)。case0:message(;break;case1:add(pworker);break;case2:show(pworker);break;case3:search(;break;case4:printf("請輸入要刪除的職工號:");scanf("%d",&id);del(pworker,id);break;case5:modify(pworker);break;case6:message(;break;}printf("請輸入操作命令數(shù)字:\n");scanf("%d",&cmd);}printf(".^_^.謝謝使用!.^_^.\n");release(pworker);return0;}四、程序調(diào)試中出現(xiàn)的問題及其解決方法(1)由于開始不能完全看懂鏈表在各個函數(shù)中是怎樣調(diào)用的,以致編寫查詢調(diào)用search()函數(shù)時,一再出現(xiàn)什么什么未定義的狀況解決方法:加入“charname[20];charstr[20];PLINKpworker;”對未定義的結構、數(shù)組什么的定義一下就完成了(2)計劃加入背景色時,對“system("color09f");”應該添加的位置很難琢磨解決方法:經(jīng)查閱資料了解該函數(shù)可能添加的位置,最終放在了界面設計message(函數(shù)中,終于可以正常運行了(3)各種變量的運用需要注意,稍對程序進行改動就會出現(xiàn)各種變量未定義解決方法:再次通看源程序,分清外部變量、局部變量五、改進意見與收獲體會改進意見:(1)運行程序時,輸入信息后,再關閉,輸入的數(shù)據(jù)會丟失,所以急需一個實時保存的函數(shù),寫入一文件中,可以下次使用時打開讀?。?)修改函數(shù)中需要一定位功能避免需要對一個記錄整體修改,耗時又增大了繼續(xù)錄入錯誤的可能性(3)界面設計可以更加靈活一些,加入動畫或是什么的?;蛘呖梢钥紤]利用書中提供的下拉菜單的方式使使用更方便便捷(4)對不同用戶進行不同的登錄方式或許會更加實用,可以分普通職工用戶、高層管理人員、系統(tǒng)管理人員,對不同用戶提供更據(jù)針對性的服務,比如職工主要就是瀏覽查詢個人資料,高層管理可查詢了解所有職工的信息,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣西工程職業(yè)學院《隨機過程與多元統(tǒng)計分析初步》2023-2024學年第二學期期末試卷
- 福建醫(yī)科大學《生物化學檢測技術》2023-2024學年第二學期期末試卷
- 和田職業(yè)技術學院《游戲引擎應用》2023-2024學年第二學期期末試卷
- 山東建筑大學《三維設計基礎》2023-2024學年第二學期期末試卷
- 遼寧職業(yè)學院《數(shù)字設備與裝置》2023-2024學年第二學期期末試卷
- 浙江經(jīng)濟職業(yè)技術學院《地方政府學》2023-2024學年第二學期期末試卷
- 二零二五年度門面房出租合同糾紛解決條款
- 二零二五年度文化藝術品交易貨款結算與鑒定評估合同
- 二零二五年度短視頻演員網(wǎng)絡劇出演合同
- 《風化作用與》課件
- 二零二五年度大型自動化設備買賣合同模板2篇
- 2024版金礦居間合同協(xié)議書
- GA/T 2145-2024法庭科學涉火案件物證檢驗實驗室建設技術規(guī)范
- 2025內(nèi)蒙古匯能煤化工限公司招聘300人高頻重點提升(共500題)附帶答案詳解
- 2025年中國融通資產(chǎn)管理集團限公司春季招聘(511人)高頻重點提升(共500題)附帶答案詳解
- 寵物護理行業(yè)客戶回訪制度構建
- 電廠檢修管理
- 《SPIN銷售法課件》課件
- 機動車屬性鑒定申請書
- 2024年中考語文試題分類匯編:非連續(xù)性文本閱讀(學生版)
- 門店禮儀培訓
評論
0/150
提交評論