版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上淮陰工學(xué)院算法設(shè)計技能訓(xùn)練實習(xí)報告題目:簡單的職工管理系統(tǒng)系(院): 計算機工程學(xué)院 專 業(yè): 計算機科學(xué)與技術(shù)(微軟合作) 班 級: 計算機 1137 學(xué) 號: 姓 名 指導(dǎo)教師: 周海巖 學(xué)年學(xué)期: 2014 2015 學(xué)年 第 1 學(xué)期2014年12月31日算法設(shè)計技能訓(xùn)練任務(wù)書課題名稱簡單的職工管理系統(tǒng)設(shè)計目的1、通過算法設(shè)計技能訓(xùn)練,深入理解算法設(shè)計的意義和重要性,更好地掌握算法設(shè)計的知識。2、 能夠針對某一具體問題,設(shè)計算法進行解決。3、 鍛煉實踐動手能力,提高解決問題的能力。實驗環(huán)境硬件:1、PC機,奔騰以上CPU, 512MB以上內(nèi)存,80G以上硬盤;
2、 軟件:Visual C+編程工具任務(wù)要求1.對單位的職工進行管理,包括插入、刪除、查找、排序等功能.2.職工對象包括姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話等信息。 (1)新增一名職工:將新增職工對象按姓名以字典方式職工管理文件中。 (2)刪除一名職工:從職工管理文件中刪除一名職工對象。 (3)查詢:從職工管理文件中查詢符合某些條件的職工。 (4)修改:檢索某個職工對象,對其某些屬性進行修改。 (5)排序:按某種需要對職工對象文件進行排序。 3.實現(xiàn)功能 職工對象數(shù)不必很多,便于一次讀入內(nèi)容,所有操作不經(jīng)過內(nèi)外存交換。 (1)由鍵盤輸入職工對象,以文件方式保存。程序執(zhí)行時先將文
3、件讀入內(nèi)存。 (2)對職工對象中的“姓名”按字典順序進行排序。 (3)對排序后的職工對象進行增、刪、查詢、修改、排序等操作。工作進度計劃序號起止日期工 作 內(nèi) 容12014.12.28任務(wù)下達,查閱文獻資料22013.12.292013.12.31總體設(shè)計、素材搜集、課題詳細設(shè)計、調(diào)試32015.1.12015.1.3完善設(shè)計、撰寫報告42015.1.4答辯指導(dǎo)教師(簽章): 年 月 日 摘要在當(dāng)今社會,互聯(lián)網(wǎng)的發(fā)展,給人的工作和生活帶來了極大的便利和高效,信息化、電子化已經(jīng)成為節(jié)約運營成本提高工作效率的首選。隨著各個公司的規(guī)模增大,有關(guān)信息管理工作所涉及的數(shù)據(jù)量越來越大,職工信息量也大大增加
4、,利用傳統(tǒng)的手工查詢、登記、修改等方法的處理速度已經(jīng)遠遠跟不上公司的需求。而且,人工方式來管理職工信息,存在著許多缺點,如:效率低、保密性差,對信息的查找、更新和維護不便。計算機作為知識經(jīng)濟時代的產(chǎn)物,其強大的功能已為人們深刻認識。本文對職工管理系統(tǒng)進行設(shè)計,主要為了企業(yè)職工的信息進行集中管理和快捷查詢。本職工信息管理系統(tǒng)包括新增、刪除、查詢、修改、排序等常用功能。整個系統(tǒng)用C+語言設(shè)計,用戶可輕松管理企業(yè)員工信息。關(guān)鍵詞 職工管理系統(tǒng) 職工信息管理 C+ 數(shù)據(jù)結(jié)構(gòu)目 錄1 引言 51.1 設(shè)計目的 5 1.2 設(shè)計意義 52 需求分析 62.1 設(shè)計題目描述 62.2 設(shè)計要求 62.3 實
5、現(xiàn)提示 62.4 選做內(nèi)容 62.5 軟硬件運行環(huán)境及開發(fā)工具 63 課程設(shè)計報告內(nèi)容 6 3.1 系統(tǒng)設(shè)計思想 7 3.2 系統(tǒng)概要設(shè)計 7 3.3 系統(tǒng)詳細設(shè)計 93.3.1 結(jié)構(gòu)體設(shè)計 93.3.2 主函數(shù)設(shè)計 93.3.3 查找算法設(shè)計 113.3.4 排序算法設(shè)計 11 3.4 運行與測試 13總結(jié) 16致謝 17參考文獻 18附錄 程序代碼 19指導(dǎo)教師評語 32圖1 系統(tǒng)流程圖 7圖2 系統(tǒng)功能結(jié)構(gòu)圖 8表1 函數(shù)功能表 8圖3 模塊調(diào)用關(guān)系圖 9圖4 主函數(shù)程序流程圖 10圖5 排序算法程序流程圖 13圖6 主菜單選擇界面 13圖7 新增并查詢職工信息界面 14圖8 修改職工信
6、息界面 14圖9 按工資排序職工信息顯示圖 15圖10 退出職工管理系統(tǒng) 15專心-專注-專業(yè)1 引言通過大一一學(xué)年對C+語言的學(xué)習(xí),了解到了很多C+語言的相關(guān)知識。它簡潔緊湊、使用靈活方便、運算符豐富、適用范圍大、可移植性好。它既具有高級語言的特點,又具有匯編語言的特點。此職工管理系統(tǒng)利用C+語言的優(yōu)點,進行了設(shè)計。睡著社會經(jīng)濟的飛速發(fā)展,信息化程度的不斷深入,傳統(tǒng)方式的職工信息管理已愈來愈不能滿足各大公司的需求。企業(yè)間的競爭愈加激烈時,如何高效地管理大量的職工信息,如何進行快速地查詢,如何利用計算機技術(shù)加強企業(yè)職工信息管理,是擺在各家企業(yè)面前的一個迫切需要解決的問題。信息化的職工管理系統(tǒng)為
7、用戶提供充足的信息和快捷的查詢手段,具有手工管理所無法比擬的優(yōu)點。例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高職工管理的效率,也是公司的科學(xué)化、正規(guī)化管理和與世界接軌的重要條件。職工管理系統(tǒng)作為一種管理軟件正在各公司中得到越來越廣泛的應(yīng)用,且已達到了良好效果。11 設(shè)計目的本程序旨在訓(xùn)練基于C+語言的編程思想,進一步加深、鞏固所學(xué)專業(yè)課程的基本理論知識,理論聯(lián)系實際,了解管理信息系統(tǒng)的開發(fā)流程,熟悉C+語言的文件和結(jié)構(gòu)數(shù)組的各種基本操作。能夠利用所學(xué)的基本知識好技能,解決簡單的程序設(shè)計問題,增強獨立完成工作的能力。通過本程序的訓(xùn)練,提高邏輯思
8、維能力,熟練掌握一些排序算法,熟練掌握利用數(shù)組存儲結(jié)構(gòu)實現(xiàn)職工信息管理的原理,為進一步開發(fā)出高質(zhì)量的管理系統(tǒng)打下堅實的基礎(chǔ)。12 設(shè)計意義做一個企業(yè)員工信息管理系統(tǒng),就是需求所定制的,所以他首先要做的是滿足最基本得員工信息的增刪改查及排序基礎(chǔ)上進行功能的擴展,其次是部門管理,工資管理等等。 一個正規(guī)性企業(yè)都希望自己的員工管理非常合理,如此復(fù)雜性的操作如果通過人手動的寫,會非常的麻煩?;谶@一點考慮到設(shè)計管理類型的軟件,來解決這個繁瑣的問題,方便與企業(yè)的工作管理以及一些制度的規(guī)定。 在企業(yè)中,員工信息管理工作是非常重要的一項工作,它負責(zé)整個企業(yè)的日常人事安排,員工的人事管理等。高效的人事管理可以
9、提高企業(yè)的市場競爭力,使企業(yè)具有更強的凝聚力和活力。為此,提高員工管理工作的效率,設(shè)計 一套員工信息管理系統(tǒng)具有實際應(yīng)用意義。2 設(shè)計題目描述和設(shè)計要求21 設(shè)計題目描述對單位的職工進行管理,包括插入、刪除、查找、排序等功能。 22 設(shè)計要求職工對象包括姓名(字符串)、性別(字符)、出生年月(數(shù)字)、工作年月(數(shù)字)、學(xué)歷(字符串)、職務(wù)(字符串)、住址(字符串)、電話(字符串)等信息。 (1)新增一名職工:將新增職工對象按姓名以字典方式職工管理文件中。 (2)刪除一名職工:從職工管理文件中刪除一名職工對象。 (3)查詢:從職工管理文件中查詢符合某些條件的職工。 (4)修改:檢索某個職工對象,
10、對其某些屬性進行修改。 (5)排序:按某種需要對職工對象文件進行排序。2.3 實現(xiàn)提示 職工對象數(shù)不必很多,便于一次讀入內(nèi)容,所有操作不經(jīng)過內(nèi)外存交換。 (1)由鍵盤輸入職工對象,以文件方式保存。程序執(zhí)行時先將文件讀入內(nèi)存。 (2)對職工對象中的“姓名”按字典順序進行排序。 (3)對排序后的職工對象進行增、刪、查詢、修改、排序等操作。2.4 選做內(nèi)容 將職工對象按散列法存儲,并設(shè)計解決沖突的方法。在此基礎(chǔ)上實現(xiàn)增、刪、查詢、修改、排序等操作。2.5 軟硬件運行環(huán)境及開發(fā)工具Windows7操作系統(tǒng) Visual C+ 6.0 運行環(huán)境3 課程設(shè)計報告內(nèi)容3.1 系統(tǒng)設(shè)計思想(1)系統(tǒng)數(shù)據(jù)需求&
11、#160;通過對企業(yè)員工的信息管理業(yè)務(wù)流程的調(diào)查,總結(jié)系統(tǒng)對其數(shù)據(jù)的需求,主要有:員工檔案信息,員工工資信息,部門、職務(wù)、工資類型等基礎(chǔ)信息。(2)系統(tǒng)功能需求 系統(tǒng)的主要需求,即所設(shè)計的系統(tǒng)在功能上應(yīng)做什么。本系統(tǒng)主要的功能有:員工管理:完成員工檔案的新增、修改、刪除、查詢及打印等功能;主要實現(xiàn)對所有員工的姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)(字符串)、住址、電話等信息的管理。 工資管理:完成員工工資的錄入、查詢、分析及相關(guān)打印等功能;主要實現(xiàn)對員工的姓名、工資類別及工資金額等信息的管理。 系統(tǒng)幫助:幫助用戶解決問題,溝通與軟件開發(fā)者的聯(lián)系。(
12、3)系統(tǒng)性能需求 系統(tǒng)的性能指標包括存儲容量限制、運行時間限制、傳輸速度要求、安全保密性等幾個方面。 (4)系統(tǒng)運行環(huán)境需求 硬件方面:采用的設(shè)備機型以及外部設(shè)備等; 軟件方面:支持系統(tǒng)運行的系統(tǒng)軟件,如操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)等。 (5)系統(tǒng)可靠性及安全保密需求 對系統(tǒng)、重要子系統(tǒng)在運行中的安全、可靠、保密方面提出要求。3.2 系統(tǒng)總體設(shè)計1、輸入功能的實現(xiàn):要想實現(xiàn)職工管理系統(tǒng)的輸入,必須要建立一個職工信息系統(tǒng)的抽象數(shù)據(jù)類型,其中職工信息以鏈表的存儲方式實現(xiàn)。由鍵盤輸入職工對象,以文件方式保存。程序執(zhí)行時先將文件讀入內(nèi)存。 2、系統(tǒng)處
13、理功能的實現(xiàn):系統(tǒng)管理員根據(jù)公司的人員流動情況,在提示信息的提示下,選擇相應(yīng)的服務(wù)進行操作。如對職工對象中的"姓名"按字典順序進行排序;對排序后的職工對象進行增、刪、查詢、修改、排序等操作。 3、輸出的實現(xiàn):根據(jù)選擇的操作,輸出與之對應(yīng)的信息。 綜上可以繪制出職工管理功能的系統(tǒng)流程圖,如圖1所示。圖1 系統(tǒng)流程圖4、 功能結(jié)構(gòu)根據(jù)職工管理系統(tǒng)問題的分析和設(shè)計要求,可以得到該職工管理系統(tǒng)可以分為五個模塊:職工信息添加模塊、職工信息修改模塊、職工信息刪除模塊、職工信息查詢模塊、職工信息排序模塊。其系統(tǒng)功能結(jié)構(gòu)如圖2所示。圖2 系統(tǒng)功能結(jié)構(gòu)圖5、模塊函數(shù)構(gòu)造 根據(jù)系統(tǒng)功
14、能結(jié)構(gòu)圖的描述,可以構(gòu)造出該系統(tǒng)的抽象數(shù)據(jù)類型和相對應(yīng)的函數(shù),其方法名和功能如表1所示。表1函數(shù)功能表6、系統(tǒng)模塊的調(diào)用關(guān)系圖框架根據(jù)系統(tǒng)功能結(jié)構(gòu)圖的描述,可以構(gòu)造出該系統(tǒng)的抽象數(shù)據(jù)類型和相對應(yīng)的函數(shù),函數(shù)之間通過調(diào)用來實現(xiàn)系統(tǒng)的功能。 職工管理系統(tǒng)問題的系統(tǒng)模塊類圖如圖3所示:圖3模塊調(diào)用關(guān)系圖3.3 系統(tǒng)詳細設(shè)計3.3.1 結(jié)構(gòu)體設(shè)計本課程設(shè)計的是職工管理系統(tǒng),對于職工的基本信息通過構(gòu)造結(jié)構(gòu)體鏈表實現(xiàn):struct Employee string m_Code; /編號string m_Name; /姓名string m_Year; /出生年月string m_Sex; /性別string
15、 m_Post; / 職務(wù)string m_Department; /部門unsigned int m_Wage; /工資struct Employee* Next; ;3,3.2 主函數(shù)設(shè)計 本程序主要是使用鏈表來實現(xiàn)操作。使用鏈表這樣做的好處是,可以隨時增加內(nèi)容,也容易將職工信息從文件中刪除。為職工設(shè)計一個類,單獨設(shè)計完成這個文件讀寫的成員函數(shù)。使用結(jié)構(gòu)數(shù)組作為職工信息的存儲器,由它們和文件建立讀寫關(guān)系。需要顯示它們時,先將文件讀入內(nèi)存,然后再顯示。需要顯示輸出職工信息時,則直接從內(nèi)存鏈表中篩選。當(dāng)然,需要顯示原始信息時,也通過直接顯示鏈表信息的方法實現(xiàn)。這四種數(shù)據(jù)的顯示問題均
16、通過一個成員函數(shù)來完成。(1)根據(jù)詳細設(shè)計要求,可以得到主函數(shù)代碼及其對應(yīng)的程序流程圖:在主函數(shù)中,實現(xiàn)了友好的界面設(shè)計。系統(tǒng)需要輸入職工的基本信息:姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話等。這個系統(tǒng)還利用鍵盤輸入提供的主菜單服務(wù),在主菜單中,有七種操作的調(diào)用: 1)新建函數(shù) Link Create(Link Head);/ 創(chuàng)建一個帶頭節(jié)點的空鏈表 2)修改函數(shù) Link Modify(Link Head);/修改單個節(jié)點3)刪除函數(shù) Link Del(Link &Head);4)查詢函數(shù): bool Search(Link Head)/ 查詢同時滿足“姓名
17、”和“部門”的職工信息 Link Search_Unique_Front(Link Head)/ 查詢滿足“職工代碼“的職工信息(職工代碼必需唯一)5)保存函數(shù) void Save_ByFile(Link Head)6)排序函數(shù)(包括按工資排序和按姓名進行字典排序)Link Sort(Link Head)Link Sort_byname(Link Head)7)顯示函數(shù) void Display_List(Link Head)(2)主函數(shù)程序流程圖如圖4所示:圖4主函數(shù)程序流程圖3.3.3 查找算法設(shè)計 在查詢算法中,職工管理系統(tǒng)提供了七種查詢操作,實現(xiàn)了系統(tǒng)的人性化查詢操作。這些查
18、詢操作分別為: 對姓名進行查詢,對性別進行查詢,對出生年月進行查詢,對工作年月進行查詢,對學(xué)歷進行查詢,對職位進行查詢,對住址進行查詢,對電話進行查詢等一些列操作。查找算法中,利用鏈表的指針的移動掃描整個職工信息表,利用strcmp()函數(shù)判斷字符串是否匹配。查找算法主要代碼如下:Link Search_Unique_Front(Link Head) /查詢滿足“職工代碼“的職工信息Link ptr; string code; ptr=Head->Next; cout<<"請輸入職工代碼:" cin>>code; cout<&l
19、t;endl<<"-查詢結(jié)果-"<<endl; while(ptr) if(ptr->m_Code=code) Display_Node(ptr);/打印滿足條件的節(jié)點。return ptr;ptr=ptr->Next;/查詢下一節(jié)點。return ptr; void Display_List(Link Head) /顯示職工信息函數(shù) Link ptr; ptr=Head->Next; cout<<"=所有職工信="<<endl; while(ptr) Display_Node(ptr);
20、 ptr=ptr->Next; 3.3.4 排序算法設(shè)計 在排序算法中,職工管理系統(tǒng)提供了四種查詢操作,實現(xiàn)了系統(tǒng)的基本排序操作。這些排序操作分別為: 對姓名進行排序,對性別進行排序,對出生年月進行排序,對工作年月進行排序,等一些列操作。排序算法中,利用鏈表的指針的移動掃描整個職工信息表,利用strcmp()函數(shù)判斷字符串是否匹配。 排序的核心代碼:Link Sort(Link Head) /創(chuàng)建的是帶頭節(jié)點的鏈表(用直接插入法)if(Head->Next=NULL)|(Head->Next->Next=NULL)/條件判斷 cout<
21、;<"數(shù)據(jù)節(jié)點數(shù)少于2個,不用排序!"<<endl; return Head; Link ptr; Link ptr_F; Link ptr_N; ptr=Head->Next->Next; ptr_F=Head;Head->Next->Next=NULL;/到此,分成了兩個鏈表while(ptr) ptr_N=ptr->Next; ptr_F=Head;/ptr_F的歸位。 while(ptr_F->Next) if(ptr->m_Wage>ptr_F->Next->m_Wage) ptr-&g
22、t;Next=ptr_F->Next; ptr_F->Next=ptr; break; else ptr_F=ptr_F->Next; if(ptr_F->Next=NULL) ptr->Next=ptr_F->Next; ptr_F->Next=ptr;/表示插到有序鏈表的最后面了 ptr=ptr_N;/歸位,準備下一次排序cout<<"從高到低,排序成功!"<<endl; return Head; 排序算法流程圖如圖5所示:圖5排序算法程序流程圖3.4 運行與測試測試是使用人工或者自動手段來運行或測試某個
23、系統(tǒng)的過程,其目的在于檢驗它是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實際結(jié)果之間的差別.其主要階段包括單元測試、集成測試、確認測試和系統(tǒng)測試。測試方法主要有白盒測試法和黑盒測試法;其中,白盒測試也稱結(jié)構(gòu)測試或邏輯驅(qū)動測試,它是按照程序內(nèi)部的結(jié)構(gòu)測試程序,通過測試來檢測產(chǎn)品內(nèi)部動作,檢驗程序中的每條通路是否都能按預(yù)定要求正確工作;黑盒測試也稱功能測試,它是通過測試來檢測每個功能是否都能正常使用。黑盒測試著眼于程序外部結(jié)構(gòu),不考慮內(nèi)部邏輯結(jié)構(gòu)。 職工信息有:姓名、性別、出生年月、工作年月、學(xué)歷、職務(wù)、住址、電話。在數(shù)據(jù)輸入中注意數(shù)據(jù)類型。 (1)進入職工管理系統(tǒng),如圖6所示:圖6主菜單選擇界面(2) 新
24、增一職工信息并查詢?nèi)柯毠ば畔?,如圖7所示:圖7新增并查詢職工信息界面(3) 修改職工信息并與前面信息對照,如圖8所示:圖8修改職工信息界面(4) 按工資排序職工信息并顯示,如圖9所示:圖9按工資排序職工信息顯示圖(5)退出系統(tǒng),如圖10所示:選擇 0,退出職工管理系統(tǒng)。圖10退出職工管理系統(tǒng)總結(jié)本次設(shè)計我選擇的題目是職工信息管理系統(tǒng)。因為事先的計劃非常明確,所以我在完成這個設(shè)計的過程也是比較順利的。在系統(tǒng)分析和設(shè)計的部分仍然花了比較多的時間。模塊設(shè)計部分因為涉及功能的實現(xiàn),要從抽象的設(shè)計轉(zhuǎn)化成實際的代碼,因此對于某項功能的實現(xiàn)方法都思考得比較詳盡。加上在開發(fā)系統(tǒng)之前,我閱讀很多與本
25、系統(tǒng)有相關(guān)內(nèi)容的書籍以做參考,使得此次系統(tǒng)編寫能順利進行。由于班里每個人都需要做一份設(shè)計,所以我們經(jīng)?;ハ嘟涣?。在交流的時候經(jīng)常能夠互相提出更好的建議。 經(jīng)過對職工信息管理系統(tǒng)的分析與編程,我得到了很大的收獲。自主學(xué)習(xí)的必要性更是解決問題的基礎(chǔ)。這次設(shè)計使我重溫了以前學(xué)過的各科知識,讓我對C編程有了更深刻的認識。除了對系統(tǒng)做出正確的分析,實際的調(diào)查工作對系統(tǒng)的整體設(shè)計有著至關(guān)重要的作用。所以在分析系統(tǒng)之前,我花了一些時間在公司的實際管理工作調(diào)查上。也因為這樣,如何編寫代碼逐漸變得明朗。每一個功能模塊經(jīng)過調(diào)查后,各個功能逐漸顯露出來,然后,反復(fù)探討,驗證這項功能是否有存在的必要,是否可
26、以改進得更好。在這樣的前提下,最后順利完成了這份設(shè)計。這次C系統(tǒng)設(shè)計作業(yè),提升了我分析問題的能力和思考問題的邏輯能力,更明白實際調(diào)研的重要性。從這次設(shè)計學(xué)到的東西,相信會對我們?nèi)蘸蟮膶W(xué)習(xí)工作起到很大的指導(dǎo)作用。致謝感謝淮陰工學(xué)院、計算機工程系給我們提供了這次實驗機會,感謝實驗室人員給我們提供了實驗環(huán)境,感謝我們數(shù)據(jù)結(jié)構(gòu)任課老師張有棟老師的諄諄教誨,感謝周海巖老師的辛勤指導(dǎo)和無微不至的關(guān)懷,感謝朱葉、袁星星等同學(xué)在實驗中給我提供的幫助,感謝實用c+教程的作者馬智嫻和徐克奇二人。回顧這過去的一周,我收獲了很多,也成長了很多,感悟到上機實驗是多么的重要,自己去動手操作是多么的重要,懂得了如何去多方位
27、地查找資料,完善和創(chuàng)新一些舊的思維方式,相信這次課程設(shè)計的體驗將成為今后我更多更廣學(xué)習(xí)的奠基石。同時,也在此感謝老師能給我這次機會鍛煉自己!在這次的課程設(shè)計中要感謝我的朋友們,要不是他們的細心和熱情幫助這次的課程設(shè)計就沒那么容易完成。有些由于粗心造成的錯誤就很難查出!所以在這里對他們表示我誠摯的謝意!其次,也謝謝上機實驗時指導(dǎo)老師的細心指導(dǎo)!當(dāng)然做課程設(shè)計不是靠一個人的力量能夠完成的,需要各個方面的支持和借鑒。在做課程設(shè)計的同時也提高了各方面的能力,讓我明白了一個道理:同學(xué)之間應(yīng)該相互幫助,相互學(xué)習(xí)才能提高自己的能力!在本次課程設(shè)計中由于我們沒有經(jīng)驗所以在這一周的課程設(shè)計中經(jīng)常會遇到各方面的小
28、問題是自己一時難以解決的,再次,我要謝謝他們對我的幫助,讓我能夠比較順利的完成本次課程設(shè)計,而且還提高了各個方面的能力。感謝所有支持和幫助過我的人。參考文獻1 殷人昆.數(shù)據(jù)結(jié)構(gòu)(第二版).北京:清華大學(xué)出版社,2007;2 馬智嫻、徐克奇、榮祺.實用c+教程.北京:高等教育出版社,2004;3 潘彥.算法設(shè)計與分析基礎(chǔ)M.北京:清華大學(xué)出版社,2007.1; 4 呂鳳翥.C+語言程序設(shè)計(第2版)M.北京:電子工業(yè)出版社,2007.2; 5 李云清,楊慶紅,揭安全.數(shù)據(jù)結(jié)構(gòu)(C+語言版)M.北京:人民郵電大學(xué)出版社,2004.6;附錄 程序代碼#include <string&
29、gt; #include <iostream> #include <fstream> #include <iomanip> #include <memory.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> using namespace std; struct Employee/聲明職工的結(jié)構(gòu)作為鏈表節(jié)點 string m_Code; /數(shù)據(jù)域 string m_Name; unsigned short int m_Year; strin
30、g m_Sex; string m_Post; string m_Department; unsigned int m_Wage; struct Employee* Next; /鏈表節(jié)點的指針域 ; typedef struct Employee Node; /取別名 為現(xiàn)有數(shù)據(jù)類型定義同義詞typedef Node* Link; /取別名 Node*用Link替代/函數(shù)聲明 Link Create(Link Head); void Release(Link Head); Link Add(Link Head); bool Search(Link Head); Link Search_Uni
31、que(Link Head); void Display_List(Link Head); void Display_Node(Link pNode); Link Modify(Link Head); Link Del(Link Head); void Save_ByFile(Link Head,fstream& ofile); Link Sort(Link Head); /函數(shù)實現(xiàn)Link Create(Link Head) /創(chuàng)建一個帶頭節(jié)點的空鏈表 Head=(Link)new Node; if(!Head) cout<<"分配內(nèi)存失?。?quot;<
32、<endl; return NULL; Head->m_Code="" Head->m_Name="" Head->m_Year=0; Head->m_Sex="" Head->m_Post="" Head->m_Department="" Head->m_Wage=0; Head->Next=NULL; return Head; void Release(Link Head) /釋放鏈表 Link ptr; /聲明一個操作用的指針 whil
33、e(Head!=NULL) ptr=Head; Head=Head->Next; delete ptr; /釋放節(jié)點資源 Link Add(Link Head) /前插法添加數(shù)據(jù) Link pNew;/ 聲明一個新節(jié)點。 char again; string code,name,sex,post,department; unsigned short int year; unsigned int wage; do pNew=(Link)new Node; cout<<"請輸入職工代碼:" cin>>code; cout<<endl&l
34、t;<"請輸入職工姓名:" cin>>name; cout<<endl<<"請輸入職工出生年份:" cin>>year; while(cin.fail() cout<<"請輸入正確的年份格式。"<<endl; cin.clear(); fflush(stdin); cin>>year; cout<<endl<<"請輸入職工性別:" cin>>sex; cout<<endl<
35、<"請輸入職工職稱:" cin>>post; cout<<endl<<"請輸入職工部門:" cin>>department; cout<<endl<<"請輸入職工工資:" cin>>wage; while(cin.fail() cout<<"請輸入正確的工資數(shù)據(jù)。"<<endl; cin.clear(); fflush(stdin); cin>>wage; cout<<endl;
36、 pNew->m_Code=code; pNew->m_Name=name; pNew->m_Year=year; pNew->m_Sex=sex; pNew->m_Post=post; pNew->m_Department=department; pNew->m_Wage=wage; pNew->Next=Head->Next; Head->Next=pNew; cout<<"數(shù)據(jù)添加成功!是否繼續(xù)添加?(Y/N)"<<endl; cin>>again; while(again
37、='Y'|again='y'); return Head; bool Search(Link Head) /查詢同時滿足“姓名”和“部門”的職工信息Link ptr; string department; string name; ptr=Head->Next; cout<<"請輸入部門:" cin>>department; cout<<endl<<"請輸入姓名:" cin>>name; cout<<endl<<"-查詢結(jié)果
38、-"<<endl; while(ptr) if(ptr->m_Name=name)&&(ptr->m_Department=department) Display_Node(ptr);/打印滿足條件的節(jié)點。return true; ptr=ptr->Next;/查詢下一節(jié)點。 cout<<"未找到滿足的員工"<<endl;return false; Link Search_Unique_Front(Link Head) /查詢滿足“職工代碼“的職工信息(職工代碼必需唯一) Link ptr; s
39、tring code; ptr=Head->Next; cout<<"請輸入職工代碼:" cin>>code; cout<<endl<<"-查詢結(jié)果-"<<endl; while(ptr) if(ptr->m_Code=code) Display_Node(ptr);/打印滿足條件的節(jié)點。return ptr;ptr=ptr->Next;/查詢下一節(jié)點。 return ptr; void Display_List(Link Head) /顯示職工信息函數(shù) Link ptr; p
40、tr=Head->Next; cout<<"=所有職工信息="<<endl; while(ptr) Display_Node(ptr); ptr=ptr->Next; void Display_Node(Link pNode) /在標準輸出設(shè)備上輸出cout<<endl<<setw(10)<<left<<pNode->m_Code /setw(10)表示占10個字符位置<<setw(10)<<left<<pNode->m_Name <&l
41、t;setw(10)<<left<<pNode->m_Year <<setw(10)<<left<<pNode->m_Sex <<setw(10)<<left<<pNode->m_Post <<setw(10)<<left<<pNode->m_Department <<setw(10)<<left<<pNode->m_Wage<<endl; Link Modify(Link Head)
42、/ 修改單一個節(jié)點Link ptr; ptr=Search_Unique_Front(Head); string code,name,sex,post,department; unsigned short int year; unsigned int wage; if(ptr) cout<<"-你現(xiàn)在可以修改此職工的信息了-"<<endl; cout<<"請輸入職工代碼:" cin>>code; cout<<endl<<"請輸入職工姓名:" cin>>
43、name; cout<<endl<<"請輸入職工出生年份:" cin>>year; while(cin.fail() cout<<"請輸入正確的年份格式。"<<endl; cin.clear(); cin>>year; cout<<endl<<"請輸入職工性別:" cin>>sex; cout<<endl<<"請輸入職工職稱:" cin>>post; cout<<
44、;endl<<"請輸入職工部門:" cin>>department; cout<<endl<<"請輸入職工工資:" cin>>wage; while(cin.fail() cout<<"請輸入正確的工資數(shù)據(jù)。"<<endl; cin.clear(); fflush(stdin); cin>>wage; cout<<endl; ptr->m_Code=code;ptr->m_Name=name; ptr->m_Y
45、ear=year; ptr->m_Sex=sex; ptr->m_Post=post; ptr->m_Department=department; ptr->m_Wage=wage; elsecout<<"沒找到此職工的記錄,無法修改。"<<endl; return 0; Link Del(Link Head)/刪除信息 Link ptr; Link ptr_front; ptr_front=Search_Unique_Front(Head); ptr=ptr_front->Next; if(ptr) /*p=curre
46、nt->link;*/ /*current->link=p->link;*/ /單鏈表的刪除ptr_front->Next=ptr->Next; /* delete p;*/delete ptr; cout<<"刪除成功"<<endl; cout<<"沒找到此職工的記錄無法刪除。"<<endl; return Head; void Save_ByFile(Link Head,fstream& ofile) /保存函數(shù) Link pNode; pNode=Head->
47、;Next; ofile.clear();/清除文件結(jié)束狀態(tài)。 while(pNode) ofile<<setw(10)<<left<<pNode->m_Code /setw(10)表示占10個字符位置 <<setw(10)<<left<<pNode->m_Name <<setw(10)<<left<<pNode->m_Year <<setw(10)<<left<<pNode->m_Sex <<setw(10)<
48、;<left<<pNode->m_Post <<setw(10)<<left<<pNode->m_Department <<setw(10)<<left<<pNode->m_Wage<<endl; pNode=pNode->Next; cout<<"數(shù)據(jù)文件保存成功!"<<endl; Link Sort(Link Head) /創(chuàng)建的是帶頭節(jié)點的鏈表(用直接插入法)if(Head->Next=NULL)|(Head-&g
49、t;Next->Next=NULL)/條件判斷 cout<<"數(shù)據(jù)節(jié)點數(shù)少于2個,不用排序!"<<endl; return Head; /第二步 Link ptr; Link ptr_F; Link ptr_N; ptr=Head->Next->Next; ptr_F=Head;Head->Next->Next=NULL;/到此,分成了兩個鏈表/第三步 while(ptr) ptr_N=ptr->Next; ptr_F=Head;/ptr_F的歸位。 while(ptr_F->Next) if(ptr->m_Wage>ptr_F->Next->m_Wage) ptr-
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 城市垃圾處理塔吊施工協(xié)議
- 航空航天安全承諾書
- 網(wǎng)絡(luò)管理員聘用合同樣本
- 煤礦開采回填土施工合同
- 政務(wù)服務(wù)設(shè)施無障礙
- 學(xué)生入學(xué)協(xié)議書
- 教育培訓(xùn)機構(gòu)教師聘用合同書
- 建筑施工合同:體育館建設(shè)協(xié)議
- 2022年大學(xué)環(huán)境生態(tài)專業(yè)大學(xué)物理二期中考試試卷C卷-含答案
- 礦山通信室外施工合同
- 2023年8月26日事業(yè)單位聯(lián)考C類《職業(yè)能力傾向測驗》試題
- 2023年天津公務(wù)員已出天津公務(wù)員考試真題
- 施工現(xiàn)場臨水施工方案
- 2022年公務(wù)員多省聯(lián)考《申論》真題(四川縣鄉(xiāng)卷)及答案解析
- 艾滋病職業(yè)防護培訓(xùn)
- 書法知識基礎(chǔ)理論單選題100道及答案解析
- (新版)社會工作者考試題庫及答案
- 片石混凝土擋土墻施工方案(改)
- 統(tǒng)編版部編版六年級語文上冊《語文園地三》練習(xí)題及答案
- 定金合同范本
- S314道路新建平交道口安全評價報告
評論
0/150
提交評論