小型職工工資管理系統 _第1頁
小型職工工資管理系統 _第2頁
小型職工工資管理系統 _第3頁
小型職工工資管理系統 _第4頁
小型職工工資管理系統 _第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C語言課程設計報告題目小型職工工資管理系統專業班級2016級通信工程本科1班組別通信第二組學生姓名院(系)信息工程系指導教師(職稱)完成時間2017年5月31日課程設計任務書題目職工工資管理系統班級2016級通信工程本科1班學號201605070106姓名學號201605070111姓名學號201605070118姓名學號201605070119姓名學號201605070136姓名主要內容:本課程設計結合本學期所學C語言知識,準備設計開發一個簡單職工工資管理系統。工資管理系統是企業不可或缺的一部分,它利用計算機對員工工資進行統一管理,實現工資管理系統的系統化、規范化和自動化,為企業提高工作效率。設計開發這個系統需要用到單鏈表、文件讀取操作、結構體、函數、指針等C語言知識。本課程設計準備通過Windows控制臺應用程序實現職工工資管理系統的簡單運行。利用所學知識,本著簡單、易用的設計原則,本課程設計盡量實現良好、美觀的“人機界面”,便于軟件的操作使用。本次設計主要學習內容包括:(一)進一步學習并熟練掌握C語言語法和編程思想。(二)學習C語言提供的庫函數,熟悉VisualC++6.0的開發工具。(三)學習C語言函數、鏈表、結構體、文件讀取、指針等知識。(四)學習如何查閱他人的文檔進行軟件的設計與開發。二、基本要求:(一)質量要求1.職工工資管理系統基本功能模塊的設計應包括:顯示主菜單功能、職工信息的錄入、添加、刪除、修改、查詢、排序功能,退出系統。測試文件的讀取與存儲是否正常、測試評估界面是否合理,友好。2.對職工工資管理系統設計并進行調試、修復、完善、測試。3.定期主動向指導教師匯報任務進度,認真填寫相關報告文檔。4.按時完成各階段工作,不突擊,不抄襲。(二)進度要求1.明確課程設計任務,搜集資料:2017年2月28日—3月14日。2.完成程序的設計與實現,撰寫課程設計論文初稿:2017年3月15日—5月15日。3.與指導教師溝通,完成課程設計論文定稿:2016年5月16日—2017年5月28日。4.進入課程設計論文審閱階段,準備答辯:2017年5月29日—6月9日。三、主要參考資料:1.工資管理系統課程設計程序/JZQT_T/article/category/23172352.C語言程序設計規范及基礎/view/58b561255901020207409c7b.html3.《明解C語言第3版》,(日)柴田望洋著,人民郵電出版社4.《CPrimerPlus第6版中文版》,姜佑

譯,人民郵電出版社5.《C程序設計第四版》,譚浩強著,清華大學出版社6.《C和C++實物精選》,徐波著,北京郵電出版社學生簽名:指導教師簽名:年月日目錄258081概述 1294151.1設計思想 1154911.2設計原則 1177841.3性能需求 1299281.4課程設計報告內容及分工情況 2216611.4.1課程設計報告內容 2175681.4.2課程設計分工情況 2316492總體設計 3256502.1系統功能設計圖 3229602.2主函數main() 391722.3程序流程圖 4238043詳細設計 5257243.1函數 520523.2函數流程圖 10139554運行結果與調試 16189914.1運行結果 16128994.2程序調試 2119986結束語 225517附錄 251概述1.1設計思想1.系統分成幾個相對獨立的模塊,但這些模塊都進行集中式管理。2.分層的模塊化程序設計思想,整個系統采用模塊化結構設計作為應用程序,有較強的可操作性和擴展性。3.合理的數據設計,在應用系統設計中,相對獨立的模塊間以數據相互連接,使各模塊間的耦合性較低,方便系統運行,提高系統安全性。1.2設計原則為了使本系統功能齊全完備,操作簡便,最大限度的提高軟件的質量,從而滿足用戶的實際需要,在設計開發過程中遵循了如下原則:1.合法性原則:依據產品核算系統的工作規定以及要求,參照核算實際的工作情況,進行諸如產品進貨、銷售等工作。2.實用性原則:適合產品信息管理工作的實際需求,并能夠處理一些特殊情況的要求,此外,盡可能預留空間,以便擴充功能。3.準確性原則:對輸入的相關資料建立檢錯機制,及時報錯,使用戶能夠及時準確的輸入合法資料(如:類型匹配,長度不超限等)。4.易操作原則:要求設計的系統功能齊全,界面友好,操作方便,必要的地方進行提示。5.源程序可讀性原則:為了便于其他設計,維護人員讀懂代碼或以后的代碼修改,軟件升級維護,即可能做好代碼注釋工作。1.3性能需求支持工資信息一次性多組導入非法操作能夠提示錯誤并且知道安全行為方式信息查詢時界面顯示數量1.4課程設計報告內容及分工情況1.4.1課程設計報告內容1.系統功能模塊結構圖和程序流程圖2.數據結構設計及用法說明3.程序結構(畫功能模塊圖或流程圖)4.各模塊的功能5.實驗結果(包括輸入數據和輸出結果)6.設計體會7.參考文獻1.4.2課程設計分工情況本組共有5人,具體分工情況如下:(1)學號:201605070106,姓名:司笑笑,具體負責功能模塊結構圖和程序流程圖的設計;負責“排序”代碼的編寫及整體代碼的整合;負責程序設計報告中函數詳細設計。(2)學號:201605070111,姓名:代慧,負責“添加”、“錄入”代碼的編寫;負責顯示界面的優化、美化。(3)學號:201605070118,姓名:王春亞,負責“查詢”代碼的編寫;程序的測試與調試;。(4)學號:201605070119,姓名:董子陽,負責“修改”代碼的編寫;具體負責實驗結果的采集;程序設計報告書的校對;負責流程圖的繪制。(5)學號:201605070136,姓名:馬良智,負責“刪除”代碼的編寫;具體負責程序設計報告書的排版與完善;相關文獻的查找和參考。

2總體設計2.1系統功能設計圖系統功能設計是使整個系統能基本實現職工工資管理功能,能讓公司的管理者利用計算機對員工工資進行統一管理,實現工資管理系統的系統化、規范化和自動化,提高了工作效率。管理信息系統(MIS)主要的功能就是進行信息的收集、查詢、存儲,同時對這些信息進行維護的。本系統共包括七大模塊,分別是錄入模塊,添加模塊,修改模塊,刪除模塊,查詢模塊,排序模塊,輸出模塊。系統功能模塊設計如圖2-1所示。圖2-1小型職工工資管理系統功能模塊結構圖2.2主函數main() (1)函數的功能:用于聯系各個功能函數模塊,以及退出程序時的退出畫面提示。(2)函數的入口:整個程序是從主函數開始的。(3)函數的出口:當從main()的switch()開關結構中進入,即choise的值大于7時通過return退出main()函數,即:退出整個程序。(4)函數調用關系:該函數不被其它函數調用。2.3程序流程圖3詳細設計函數(1)功能函數mainMenu()=1\*GB3①函數的功能:顯示主菜單=2\*GB3②函數的入口:從main()進入,main()運行時進入該函數。=3\*GB3③函數調用關系:被主函數調用。=4\*GB3④函數的出口:當主菜單顯示在屏幕上,結束該函數。(2)功能函數input(LinkListhead)=1\*GB3①函數的功能:進入錄入職工信息系統。=2\*GB3②函數的入口:程序從main()的switch()開關結構中進入,即choice的值為1時,開始進入該函數,進入函數后,首先用inputMenu()顯示錄入菜單選項,然后選擇選項進行錄入職工信息。=3\*GB3③函數調用關系:被主函數調用。從switch()開關結構中進入,并在文中無返回值的空值void函數。=4\*GB3④函數的出口:錄入職工信息完成后,結束該函數而并執行主函數main()中“output(head);”,輸出職工信息在屏幕上并保存職工信息在磁盤上,然后執行“break;”跳出switch()開關函數,繼續執行while循環結構。(3)功能函數inputMenu()=1\*GB3①函數的功能:顯示錄入菜單。=2\*GB3②函數的入口:從input(LinkListhead))進入,input(LinkListhead)被調用時進入該函數。=3\*GB3③函數調用關系:被input(LinkListhead))調用,并在文中無返回值的空值void函數。=4\*GB3④函數的出口:當錄入菜單顯示在屏幕上,結束該函數。(4)功能函數hand(LinkListhead)=1\*GB3①函數的功能:進入“手動錄入職工信息”。=2\*GB3②函數的入口:程序從input(LinkListhead)的switch()開關結構中進入,即choice的值為1時,開始進入該函數,進入函數后,首先輸入錄入職工人數,然后逐個錄入職工信息。=3\*GB3③函數調用關系:被input(LinkListhead)調用。從switch()開關結構中進入,并在文中無返回值的空值void函數。=4\*GB3④函數的出口:錄入全部職工信息完成后,結束該函數并執行input(LinkListhead)中“break;”跳出switch()開關函數,繼續執行while循環結構。(5)功能函數read(LinkListhead)=1\*GB3①函數的功能:進入“文件錄入職工信息”。=2\*GB3②函數的入口:程序從input(LinkListhead)的switch()開關結構中進入,即choice的值為2時,開始進入該函數,進入函數后,輸入需要錄入的文件路徑fileName,通過fopen()函數,即“if((fq=fopen(fileName,"r"))==NULL)”打開文件,進入數據的處理。=3\*GB3③函數調用關系:被input(LinkListhead)調用。從switch()開關結構中進入,并在文中無返回值的空值void函數。=4\*GB3④函數的出口:自動錄入文件中全部職工信息后,結束該函數并執行input(LinkListhead)中“break;”跳出switch()開關函數,繼續執行while循環結構。(6)功能函數output(LinkListhead)=1\*GB3①函數的功能:輸出職工信息。=2\*GB3②函數的入口:程序在錄入、添加、修改、刪除、查詢、排序后都進入該函數,進入函數后,將職工信息用printf()標準輸出到屏幕上,然后通過fopen()函數,即“if((fp=fopen("d:\\worker.dat","w"))==NULL)”打開文件,將職工信息寫到d:\\worker.dat文件中。=3\*GB3③函數調用關系:被main()等多個調用。在文中無返回值的空值void函數。=4\*GB3④函數的出口:將職工信息用printf()標準輸出到屏幕上,將職工信息存入磁盤后,結束該函數。(7)功能函數add(LinkListhead)=1\*GB3①函數的功能:添加一個職工信息。=2\*GB3②函數的入口:從main()的switch()開關結構中進入,即choice的值為2的時侯,進入該函數,根據提示輸入職工信息。=3\*GB3③函數調用關系:被主函數調用。由switch()開關結構中進入,并在文中有返回值的整型int函數,返回值為1添加成功。=4\*GB3④函數的出口:職工信息添加成功返回1后結束該函數,并執行主函數main()中“output(head);”,輸出職工信息在屏幕上并保存職工信息在磁盤上,然后執行“break;”跳出switch()開關函數,繼續執行while循環結構。(8)功能函數deleteWorker(LinkListhead)=1\*GB3①函數的功能:刪除一個職工信息。=2\*GB3②函數的入口:從main()的switch()開關結構中進入,即choice的值為3的時侯,進入該函數,輸入要刪除的職工編號,刪除改編號職工信息。=3\*GB3③函數調用關系:被主函數調用。由switch()開關結構中進入,并在文中有返回值的整型int函數,返回值為1刪除成功。=4\*GB3④函數的出口:職工信息刪除成功返回1后結束該函數,并執行主函數main()中“output(head);”,輸出剩余的職工信息在屏幕上,然后執行“break;”跳出switch()開關函數,繼續執行while循環結構。(9)功能函數update(LinkListhead)=1\*GB3①函數的功能:修改一個職工信息。=2\*GB3②函數的入口:從main()的switch()開關結構中進入,即choice的值為4的時侯,進入該函數,輸入要修改的職工編號,根據提示輸入新的職工信息。=3\*GB3③函數調用關系:被主函數調用。由switch()開關結構中進入,并在文中有返回值的整型int函數,返回值為1修改成功。=4\*GB3④函數的出口:職工信息修改成功返回1后結束該函數,并執行主函數main()中“output(head);”,輸出職工信息在屏幕上并保存職工信息在磁盤上,然后執行“break;”跳出switch()開關函數,繼續執行while循環結構。(10)功能函數find(LinkListhead)=1\*GB3①函數的功能:進入查詢職工信息系統=2\*GB3②函數的入口:程序從main()的switch()開關結構中進入,即choice的值為5時,開始進入該函數,進入函數后,首先用findMenu()顯示查詢菜單選項,然后選擇選項進行查詢職工信息。=3\*GB3③函數調用關系:被主函數調用。從switch()開關結構中進入,并在文中無返回值的空值void函數。=4\*GB3④函數的出口:查詢職工信息完成后,結束該函數,然后執行主函數main()中的“break;”跳出switch()開關函數,繼續執行while循環結構。(11)功能函數 findMenu()=1\*GB3①函數的功能:顯示查詢菜單。=2\*GB3②函數的入口:從find(LinkListhead)進入,find(LinkListhead)被調用時進入該函數。=3\*GB3③函數調用關系:被find(LinkListhead)調用,并在文中無返回值的空值void函數。=4\*GB3④函數的出口:當查詢菜單顯示在屏幕上,結束該函數。(12)功能函數findByWay(LinkListhead,intn)=1\*GB3①函數的功能:查詢職工信息”。=2\*GB3②函數的入口:程序從find(LinkListhead)的switch()開關結構中進入,即choice的值為1,2,3,4,5,6時,開始進入該函數,進入函數后,根據不同的選項值進行相應的查詢。=3\*GB3③函數調用關系:被find(LinkListhead)調用。從switch()開關結構中進入,并在文中有返回值的的整型int函數,返回值為1查詢成功。=4\*GB3④函數的出口:查詢職工信息完成后,執行“output(head);”,輸出職工信息在屏幕上并保存職工信息在磁盤上,然后結束該函數,執行find(LinkListhead)中“break;”跳出switch()開關函數,繼續執行while循環結構。(13)功能函數sort(LinkListhead)=1\*GB3①函數的功能:進入職工信息排序系統=2\*GB3②函數的入口:程序從main()的switch()開關結構中進入,即choice的值為6時,開始進入該函數,進入函數后,首先用sortMenu()顯示排序菜單選項,然后選擇選項進行職工信息排序。=3\*GB3③函數調用關系:被主函數調用。從switch()開關結構中進入,并在文中無返回值的空值void函數。=4\*GB3④函數的出口:職工信息排序完成后,結束該函數,然后執行主函數main()中的“break;”跳出switch()開關函數,繼續執行while循環結構。(14)功能函數 sortMenu()=1\*GB3①函數的功能:顯示排序菜單。=2\*GB3②函數的入口:從sort(LinkListhead)進入,sort(LinkListhead)被調用時進入該函數。=3\*GB3③函數調用關系:被sort(LinkListhead)調用,并在文中無返回值的空值void函數。=4\*GB3④函數的出口:當排序菜單顯示在屏幕上,結束該函數。(15)功能函數sortByWay(LinkListhead,intn)=1\*GB3①函數的功能:職工信息排序。=2\*GB3②函數的入口:程序從sort(LinkListhead)的switch()開關結構中進入,即choice的值為1,2,3,4,5,6時,開始進入該函數,進入函數后,根據不同的選項值進行相應的排序。=3\*GB3③函數調用關系:被sort(LinkListhead)調用。從switch()開關結構中進入,并在文中有返回值的的整型int函數,返回值為1排序成功。=4\*GB3④函數的出口:職工信息排序完成后,執行“output(head);”,輸出職工信息在屏幕上并保存職工信息在磁盤上,然后結束該函數,執行sort(LinkListhead)中“break;”跳出switch()開關函數,繼續執行while循環結構。(16)功能函數uqnum(LinkListhead,intnum)=1\*GB3①函數的功能:判斷職工編號是否已存在。=2\*GB3②函數的入口:程序add(LinkListhead)中進入,輸入職工編號后,開始進入該函數,進入函數后,判斷輸入的職工編號是否已經存在。=3\*GB3③函數調用關系:被add(LinkListhead)調用。在文中有返回值的的整型int函數,返回值為1職工編號已存在。=4\*GB3④函數的出口:判斷職工編號是否已存在后返回add(LinkListhead),繼續輸入其它職工信息或重新輸入職工編號。功能實現效果如圖3-1所示。圖3-1主菜單界面函數流程圖錄入職工信息該功能模塊流程如圖3-2所示。圖3-2“錄入職工信息”功能模塊流程圖(2)添加職工信息該功能模塊流程如圖3-3所示。圖3-3“添加職工信息”功能模塊流程圖(3)刪除職工信息該功能模塊流程如圖3-4所示。圖3-4“刪除職工信息”功能模塊流程圖(4)修改職工信息該功能模塊流程如圖3-5所示。圖3-5“修改職工信息”功能模塊流程圖(5)查詢職工信息該功能模塊流程如圖3-6所示。圖3-6“查詢職工信息”功能模塊流程圖(6)排序職工信息該功能模塊流程如圖3-7所示。圖3-7“排序職工信息”功能模塊流程圖4運行結果與調試4.1運行結果本系統運行初始頁面如圖4-1所示。圖4-1初始頁面在函數開始時,初始化臨時結構體數組,讓結構體內所有信息為空.,讀取目標文件,然后運行功能函數,選擇需要的功能。實現效果如圖4-2所示。圖4-2輸入界面(1)根據自己需要的功能輸入相應數字圖4-3職工信息的錄入圖4-4職工信息的添加圖4-5職工信息的刪除4-6職工信息的修改圖4-7職工信息的查詢圖4-8職工信息的排序圖4-9退出系統(2)錄入職工的信息,通過手動錄入和文件錄入兩個方法錄入職工的信息。圖4-10職工信息錄入的方式(3)查找職工的個人信息,通過輸入編號、姓名、部門、基本工資、獎金和總工資進行查找。圖4-11職工信息的查詢方式(4)職工信息的排序可以通過編號排序、姓名排序、部門排序、基本工資排序、獎金排序和總工資排序。圖4-12職工信息的排序方式(5)每次將職工信息輸出在屏幕上時,都會通過fwrite寫到文件D:\\woker.date中。(6)根據數字提示結束程序。4.2程序調試(1)每個選擇界面之后,前一屏幕的內容依舊存在,影響界面的美觀;經過同學的幫助及上網搜索,發現利用“system(“cls”);”可以消去前一屏幕的內容;然而接下來又出現新的問題:有些函數會出現錯誤;經過多次調試和修改,才發現把“system(“cls”);”放在調用的函數之前以及適當的位置可以解決此問題。(2)修改員工信息時,輸入職工編號查詢出多條信息,修改錯誤!后來加入職工編號唯一判斷的函數,讓職工編號唯一不重復。(3)排序,開始交換指針指向,一直出現指針不存在導致亂碼問題,后來修改為交換指針的數據域。(4)文件寫入磁盤,用筆記本打開磁盤內的文件亂碼,經查詢資料了解寫入磁盤的文件是二進制數據,不能通過筆記本打開,可重新把文件讀入程序中,在程序中顯示。(5)忘導入<string.h>,導致strcmp不能用。(6)字符串輸入輸出要用%s。

結束語工資管理系統對于決策者和管理者來說都至關重要,所以工資管理系統應該能夠為用戶提供充足的信息和快捷的查詢手段。但一直以來人們使用傳統人工的方式管理文件工資檔案,這種管理方式存在著許多缺點,如:效率低、保密性差,另外時間一長,將產生大量的文件和數據,這對于查找、更新和維護都帶來了不少的困難。

隨著科學技術的不斷提高,計算機科學日漸成熟,其強大的功能已為人們深刻認識,它已進入人類社會的各個領域并發揮著越來越重要的作用。

作為計算機應用的一部分,使用計算機對工資信息進行管理,具有著手工管理所無法比擬的優點.例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優點能夠極大地提高工資管理的效率,也是科學化、正規化管理的重要條件。這一個月以來,在開發這個工資管理系統過程中,我深刻地體會到了自學能力的重要性。畢竟在學校學習到的知識是有限的,而在開發系統的過程中僅憑原有的一點點知識是遠遠不夠的,只有翻閱大量的資料才能學到更多的知識,才能實現其預期的功能。在開發過程中,遇到困難是在所難免的,期間我跟我的指導老師和同學們進行交流,從中明白了很多。開發一個系統,恒心和毅力也是不可缺少的。同樣,在開發過程當中,細心也是非常重要的,由于很多事項都要很注意才行,如果沒有做到這一點,就會出錯。在這里要同學的幫助、老師的悉心指導下基本完成本次課程設計,基本達到了工資管理系統的要求。小組各成員心得體會Xxx:這個系統實現了對員工信息的存儲、修改、刪除、查詢及排序。從拿到題目到完成整個編程,從理論到實踐學到了很多東西。通過這次程序設計我深入了解了鏈表、結構體,也學會了文件的讀寫,懂得了理論和實際結合是很重要的。在設計過程中遇到了很多問題,這畢竟是第一次做,同時在設計過程中發現了自己的不足之處,對以前所學的知識理解的不夠深刻,掌握的不夠牢固,比如單鏈表。總之不收獲很多!Xxx:通過這次課程設計,我對數據結構中單鏈表的應用有了更深的理解,并且深刻的認

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論