C語言課程設(shè)計工資管理系統(tǒng).doc
《C語言課程設(shè)計工資管理系統(tǒng).doc》由會員分享,可在線閱讀,更多相關(guān)《C語言課程設(shè)計工資管理系統(tǒng).doc(58頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 東北大學(xué)信息科學(xué)與工程學(xué)院 程序?qū)嵺`報告 題目 工資管理系統(tǒng) 課題組長 劉誠陽 課題組成員 張鵬舉 于文鑫 專業(yè)名稱 計算機科學(xué)與技術(shù) 班 級 計算機1405 指導(dǎo)教師 張曉紅 2015 年 4月 目錄 1.課題概述 - 3 - 1.1課題任務(wù):工資管理系統(tǒng) - 3 - 1.2課題原理 - 3 - 1.3 課題實踐目的 - 3 - 1.4 相關(guān)知識 - 4 - 2.需求分析 - 4 - 2.1課題調(diào)研 - 4 - 2.2用戶需求分析 - 5 - 3.方案設(shè)計 - 5 - 3.1總體功能設(shè)計 - 5 -
2、3.2數(shù)據(jù)結(jié)構(gòu)設(shè)計 - 6 - 3.3函數(shù)原型設(shè)計 - 7 - 3.4主算法設(shè)計 - 12 - 3.5用戶界面設(shè)計 - 13 - 3.6程序特色設(shè)計 - 13 - 4.方案實踐 - 14 - 4.1開發(fā)環(huán)境與工具 - 14 - 4.2程序設(shè)計關(guān)鍵技術(shù) - 14 - 4.3個人設(shè)計實現(xiàn) - 14 - 4.3.1劉誠陽設(shè)計實現(xiàn) - 14 - 4.3.2張鵬舉設(shè)計實現(xiàn) - 22 - 4.3.3于文鑫設(shè)計實現(xiàn) 25 5.測試與調(diào)試 27 5.1個人測試 27 5.1.1劉誠陽測試 27 5.1.2張鵬舉測試 37 5.1.3于文鑫測試 42 5.2組裝與系統(tǒng)測試 46
3、 5.3系統(tǒng)運行 49 6. 課題總結(jié) 50 6.1課題評價 50 6.2團隊協(xié)作 50 6.3個人設(shè)計小結(jié) 51 6.3.1劉誠陽設(shè)計小結(jié) 51 6.3.2張鵬舉設(shè)計小結(jié) 52 6.3.3于文鑫設(shè)計小結(jié) 52 6.4參考資料 53 7.附錄A和附錄B 54 附錄A 課題任務(wù)分工 54 A-1 課題程序設(shè)計分工 54 A-2 課題報告分工 55 附錄B 課題設(shè)計文檔 56 1.課題概述 1.1課題任務(wù):工資管理系統(tǒng) 1) 以結(jié)構(gòu)體/共用體設(shè)計數(shù)據(jù)的結(jié)構(gòu),采用動態(tài)鏈表、文件存儲方式,結(jié)構(gòu)化、模塊化程序設(shè)計方法,設(shè)計一個功能完善的系統(tǒng)
4、 ,要有功能菜單。 2) 本系統(tǒng)應(yīng)具有數(shù)據(jù)維護(包括數(shù)據(jù)錄入、添加、修改、刪除),數(shù)據(jù)查詢(可按 編號、姓名、基本工資、崗位工資、績效工資 、房改補助、獎勵、應(yīng)發(fā)工資、公積金、扣稅、實發(fā)工資等進(jìn)行查詢,也可進(jìn)行組合查詢),排序,統(tǒng)計,輸出,系統(tǒng)維護(包括數(shù)據(jù)備份、數(shù)據(jù)恢復(fù)、口令維護),幫助,退出等功能。 3) 本系統(tǒng)要有通用性、界面美觀、操作方便。要考慮系統(tǒng)安全。 4) 可增加其他有用的功能。 1.2課題原理 1) 利用結(jié)構(gòu)體的數(shù)據(jù)結(jié)構(gòu),采用動態(tài)鏈表,實現(xiàn)對數(shù)據(jù)的即時增刪。 2) 使用文件存儲方式,對數(shù)據(jù)進(jìn)行有效的存取。 3) 采用結(jié)構(gòu)化、模塊化的設(shè)計方式,每個.C文件僅包含一個
5、或一類函數(shù),實現(xiàn)模塊化的設(shè)計開發(fā)模式。 4) 使用C語言的順序、選擇、循環(huán)三種基本語句,實現(xiàn)函數(shù)所需功能。 5) 運用函數(shù)定義、聲明和調(diào)用等基本知識,實現(xiàn)數(shù)值、地址的傳遞,進(jìn)行數(shù)據(jù)計算。 6) 運用C語言獨特的指針功能,對數(shù)據(jù)地址進(jìn)行處理,實現(xiàn)相應(yīng)操作。 1.3 課題實踐目的 1) 通過程序?qū)嵺`,強化計算機應(yīng)用技能,驗證、鞏固和充實所學(xué)的理論知識,加深對相關(guān)內(nèi)容的理解,拓寬知識面,培養(yǎng)創(chuàng)新精神和實踐能力。 2) 進(jìn)一步掌握C的數(shù)據(jù)類型、基本結(jié)構(gòu)、結(jié)構(gòu)體、文件、鏈表、結(jié)構(gòu)化、模塊化設(shè)計等知識點。 3) 進(jìn)一步熟悉基本流程控制結(jié)構(gòu)——實現(xiàn)分支的if…else語句、switch語句和
6、實現(xiàn)循環(huán)的for、while…、do…while語句、break、continue等。 4) 掌握C語言程序設(shè)計的基本思想,了解簡單的系統(tǒng)分析和了解數(shù)據(jù)庫系統(tǒng)的理論。 5) 掌握數(shù)據(jù)庫設(shè)計的基本方法,熟悉數(shù)據(jù)庫設(shè)計的步驟。 6) 進(jìn)一步鞏固、加深所學(xué)專業(yè)課程《C語言程序設(shè)計》的基本理論知識,理論聯(lián)系實際,進(jìn)一步培養(yǎng)綜合分析問題,解決問題的能力。 7) 利用所學(xué)知識,開發(fā)小型應(yīng)用系統(tǒng),掌握運用C語言編寫調(diào)試應(yīng)用系統(tǒng)程序,訓(xùn)練獨立開發(fā)應(yīng)用系統(tǒng),進(jìn)行數(shù)據(jù)處理的綜合能力。 1.4 相關(guān)知識 1) C語言的數(shù)據(jù)類型、基本結(jié)構(gòu)知識。 2) 基本流程控制結(jié)構(gòu)——實現(xiàn)分支的if…else語句、s
7、witch語句和實現(xiàn)循環(huán)的for、while…、do…while語句、break、continue等。 3) 數(shù)據(jù)結(jié)構(gòu)的設(shè)計。 4) 系統(tǒng)分析和數(shù)據(jù)庫系統(tǒng)的理論及設(shè)計知識。 5) 結(jié)構(gòu)體的建立和基本操作。 6) 動態(tài)鏈表的建立與基本操作。 7) 文件操作——對數(shù)據(jù)進(jìn)行輸入和輸出 8) 多文件的項目管理應(yīng)用。 9) 開發(fā)程序所用的結(jié)構(gòu)化、模塊化設(shè)計等知識點。 2.需求分析 2.1課題調(diào)研 隨著企業(yè)的快速發(fā)展,企業(yè)規(guī)模越來越大,員工的數(shù)量也越來越多,企業(yè)工資管理更加的復(fù)雜。 工資管理是一項瑣碎、復(fù)雜而又十分細(xì)致的工作,工資計算、發(fā)放、核算的工作量很大,一般不允許出錯,
8、如果實行手工操作,每月發(fā)放工資須手工填制大量的表格,這就會耗費工作人員大量的時間和精力。 通過計算機進(jìn)行工資發(fā)放工作,不僅能夠保證工資核算準(zhǔn)確無誤、快速輸出,而且還可以利用計算機對有關(guān)工資的各種信息進(jìn)行統(tǒng)計,服務(wù)于財務(wù)部門其他方面的核算和財務(wù)處理。 同時計算機具有著手工管理所無法比擬的優(yōu)點。例如:檢索迅速、查找方便、可靠性高、存儲量大、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高人事工資管理的效率,也是企業(yè)科學(xué)化、正規(guī)化管理,與世界接軌的重要條件。 這就對企業(yè)工資管理提出了新的要求,用計算機管理系統(tǒng)來管理工資已經(jīng)成為目前的趨勢,使用計算機可以高速,快捷地完成以上工作。 工資管理系
9、統(tǒng)便是以計算機為工具,通過對工資管理所需的信息管理,不僅把管理人員從繁瑣的數(shù)據(jù)計算處理中解脫出來,而且優(yōu)化了管理體系,使其高效化,簡易化,智能化,也提高了透明度和互動性。 專門的管理人員可以輕松地通過工資管理系統(tǒng)對員工的工資進(jìn)行錄入,查看與修改;而且公司高層也可以通過管理員身份了解公司的薪資情況,從而作出一些列財務(wù)方面的重要決策;普通員工也可以通過自己的用戶名和密碼登陸工資管理系統(tǒng),對自己每個月的工資情況進(jìn)行查詢,一目了然,方便快捷。 因此,工資管理系統(tǒng)是各個企業(yè)部門必不可少的工具,具有很好市場前景與用戶需求。 2.2用戶需求分析 1) 功能需求: 登陸功能,顯示主菜單功能,職工信息
10、輸入、輸出、修改、刪除功能,職工工資查詢、排序、統(tǒng)計功能,系統(tǒng)備份、還原功能,數(shù)據(jù)初始化功能,幫助,退出等。 2) 性能需求: 此工資管理系統(tǒng)對工資數(shù)據(jù)精度的錄入、計算、統(tǒng)計和儲存能精確到小數(shù)點后一位小數(shù)。當(dāng)用戶向服務(wù)器發(fā)出命令請求(對數(shù)據(jù)更新處理、工資數(shù)據(jù)的查詢檢索)時,要求系統(tǒng)響應(yīng)時間不會超過1秒。 3) 安全需求: 為保障系統(tǒng)數(shù)據(jù)的安全性,系統(tǒng)采用用戶密碼登陸機制,未授權(quán)者不能進(jìn)入系統(tǒng)。而且登錄人員分為管理員和員工,安全性能通過安全口令得以保證。由于軟件運行數(shù)據(jù)放在數(shù)據(jù)庫中,所以參數(shù)不容易被錯改、破壞,萬一參數(shù)受到破壞也不會影響源程序。 4) 其他需求: 系統(tǒng)提供了完善的數(shù)據(jù)
11、備份與恢復(fù)功能,不會出現(xiàn)系統(tǒng)崩潰,因此具有較強健壯性。該系統(tǒng)是在Windows7操作系統(tǒng)下運行,運行可行性是很高的。 5) 約束條件: 硬件環(huán)境:處理器(CPU)Pentium Ⅲ以上;內(nèi)存容量(RAM)256M或更高。軟件環(huán)境:Windows7/8/XP/Vista/2000/98操作系統(tǒng)。 3.方案設(shè)計 3.1總體功能設(shè)計 該職工工資管理系統(tǒng)總共分為四大功能和輔助功。 四大功能: 1.工資查詢功能:工資排序、查找、統(tǒng)計 2數(shù)據(jù)處理功能:工資添加、修改、刪除、輸出到文本文件 3.系統(tǒng)維護功能:數(shù)據(jù)備份、恢復(fù)、清空,修改參數(shù),修改口令 4.員工編號登記功能.
12、輔助功能: 1.幫助 2.重選年月 3.切換用戶 4.安全退出 職工工資管理系統(tǒng) 雙入口登陸功能 年月選擇功能 職工工資信息輸入 職工工資信息輸出 職工工資信息添加 計算 職工工資信息修改 職工工資信息刪除 生成職工工資文本 工資信息排序 工資信息查詢 工資計算 工資信息統(tǒng)計 數(shù)據(jù)恢復(fù) 數(shù)據(jù)備份 修改參數(shù) 數(shù)據(jù)清空 修改口令 幫助 重選年月 退出 3.2數(shù)據(jù)結(jié)構(gòu)設(shè)計 分別定義了兩個結(jié)構(gòu)體,一個對員工工資信息進(jìn)行儲存,另外一個對員工編號進(jìn)行登記(只有經(jīng)過管理員登記過的員工才能登陸該系
13、統(tǒng))。并使用動態(tài)鏈表的方式對數(shù)據(jù)進(jìn)行儲存和查找,員工的各類信息會被以二進(jìn)制的形式寫入文件內(nèi)進(jìn)行保存,系統(tǒng)從文件中以二進(jìn)制形式讀入數(shù)據(jù)。結(jié)構(gòu)體如下: struct person { char num[20]; //編號 char name[20]; //姓名 char sex[10];//性別 int age;//年齡 float postsalary;//崗位工資 float basepay; //基本工資 float meritpay;//績效工資 float subsidy;//住房補貼 float bonus;//獎金 float gotpaid;//應(yīng)發(fā)工資
14、float insurance;//社會保險公積金 float tax;//稅金 float realpaid; //實發(fā)工資 struct person *next; }; struct staff { char num[20];//員工登記編號 struct staff *latter; }; 3.3函數(shù)原型設(shè)計 A A.1 鏈表的建立,數(shù)據(jù)輸入、輸出、顯示、添加、修改、刪除函數(shù) 1) struct person *Creat(int n) 建立員工工資信息的鏈表,先通過傳遞的形式參數(shù)n來判斷需要建立多少組數(shù)據(jù),再通過鍵盤輸入生成相應(yīng)數(shù)量的動態(tài)鏈表數(shù)據(jù) 2
15、) struct staff *Creat_num(int n) 建立員工登記編號的鏈表 3) int Creat_number(void) 向*Creat函數(shù)傳遞數(shù)值的函數(shù),即需要錄入幾組數(shù)據(jù) 4) struct person *Input(void) 讀取員工工資信息的函數(shù),從文件中讀取信息并以動態(tài)鏈表方式保存到結(jié)構(gòu)體中 5) struct staff *Input_num(void) 讀取員工登記編號的函數(shù) 6) void Output(struct person *head) 輸出員工工資數(shù)據(jù)到文件 7) void Output_num(struct staff *
16、head) 輸出員工編號到文件 8) void Output_txt() 生成員工信息的文本文件 9) void Print(void) 將鏈表中員工的工資信息輸出到屏幕上 10) void Print_num(void) 將鏈表中員工的登記編號輸出到屏幕上 11) int Insert(struct person *head) 員工數(shù)據(jù)添加函數(shù),使用方式:Insert(Creat(Creat_number())),先確定添加數(shù)據(jù)的組數(shù),然后通過動態(tài)鏈表添加數(shù)據(jù)到結(jié)構(gòu)體,最后通過該函數(shù)將數(shù)據(jù)加到文件尾部,實現(xiàn)數(shù)據(jù)添加。 12) int Insert_num(struct s
17、taff *head) 員工編號添加函數(shù),使用方式同上,用于管理員向系統(tǒng)中登記員工編號,只有登記過的員工才可以登陸該系統(tǒng) 13) int Modify() 修改員工信息函數(shù) 14) int Delete() 刪除員工工資信息的函數(shù) 15) int Delete_num() 刪除員工登記編號的函數(shù) A.2 數(shù)據(jù)備份、清空、恢復(fù) 1) struct person *Empty(void) 清空該年月份所有員工工資信息數(shù)據(jù)的函數(shù) 2) void Output_b(struct person *head) 員工工資信息備份,輸出信息到自定名稱的文件 3) struct per
18、son *Input_b(void) 系統(tǒng)還原函數(shù),將備份文件中的信息拷貝到以當(dāng)前年月命名的文件中,從而還原上一次備份的數(shù)據(jù) A.3 統(tǒng)計函數(shù) 1) void Statistics() 員工工資統(tǒng)計函數(shù),統(tǒng)計數(shù)據(jù)中所有員工工資的最小值和最大值,并計算平均數(shù),輸出到屏幕 A.4 輔助函數(shù) 1) int main() 主函數(shù) 2) int Exit() 退出函數(shù),顯示感謝使用該系統(tǒng),并正確結(jié)束運行 3) void Choose_month() 管理員登陸時用來選擇年月份的函數(shù),系統(tǒng)中員工各個年月份的工資分別保存在以該年月命名的不同文件下,以該函數(shù)判斷系統(tǒng)需要打開哪個文件。
19、4) void Choose_month_num() 員工登陸時用來選擇年月份的函數(shù),功能同上,是兩個不同的登陸口 5) float post(int a) 崗位工資獲取函數(shù),崗位級別作為參數(shù)傳遞到該函數(shù),該函數(shù)返回對應(yīng)的崗位工資金額 6) void Return() 返回主菜單的函數(shù) A.5 各類菜單函數(shù) 1) void Defined() 修改參數(shù)菜單 2) void Help() 幫助菜單,提供幫助信息、設(shè)計人員信息和版本信息 3) void Menu() 管理員的主菜單,內(nèi)含工資查詢,數(shù)據(jù)處理,系統(tǒng)維護,編號登記,幫助,重選年月,切換用戶,退出等功能選項 4)
20、 void Menu_num() 員工的主菜單 5) void Menu2() 工資查詢菜單,內(nèi)含員工工資查找,工資排序,工資統(tǒng)計等功能選項 6) void Menu3() 員工工資數(shù)據(jù)處理菜單,內(nèi)含數(shù)據(jù)添加,修改,刪除,輸出等功能選項 7) void Menu4() 系統(tǒng)維護菜單,內(nèi)含數(shù)據(jù)備份,清空,恢復(fù),修改參數(shù)、口令等功能選項 8) void menu_print_out(void) 輸出數(shù)據(jù)時顯示在最上面的表頭 9) void Menu_Register() 修改在冊員工編號的分菜單 10) void Inquire() 員工工資查找分菜單 11) void
21、 Sort() 排序菜單,內(nèi)含從小到大、從大到小排序的功能選項 12) int Sort_menu_down_up() 排序分菜單——從小到大,內(nèi)含各類排序種類 13) int Sort_menu_up_down() 排序分菜單——從大到小,內(nèi)含各類排序種類 B B.1 登陸判斷函數(shù) 1) void password() 用戶登錄函數(shù),通過輸入的用戶名檢測該用戶是管理員或者員工還是未登記用戶,從而進(jìn)行不同的登錄方式 B.2 修改參數(shù)、密碼類函數(shù) 1) int ChangePassword() 密碼修改函數(shù),用于修改管理員密碼 2) int ChangePassword
22、_num() 密碼修改函數(shù),用于修改員工密碼 3) float ChangePostsalary() 用于修改初始參數(shù)中的崗位工資參數(shù),將1-5個崗位級別分別對應(yīng)不同的崗位工資 4) float Subsidy_in() 從文件中讀取住房補貼參數(shù) 5) float ChangeSubsidy() 用于修改初始參數(shù)中的住房補貼參數(shù),得到一個固定的住房補貼金額,數(shù)據(jù)保存到文件 B.3 計算稅金的函數(shù) 1) float Tax(float a) 計算稅金的函數(shù),將工資做參數(shù)傳遞進(jìn)去,返回應(yīng)繳稅金金額 C C.1查詢類函數(shù) 1) int Inquire_age() 查詢員工
23、信息函數(shù),以年齡查詢 2) int Inquire_basepay() 查詢員工信息函數(shù),以基本工資查詢 3) int Inquire_bonus() 查詢員工信息函數(shù),以獎金查詢 4) int Inquire_gotpaid() 查詢員工信息函數(shù),以應(yīng)得工資查詢 5) int Inquire_meritpay() 查詢員工信息函數(shù),以績效工資查詢 6) int Inquire_name() 查詢員工信息函數(shù),以姓名查詢 7) int Inquire_num() 查詢員工信息函數(shù),以編號查詢 8) int Inquire_postsalary() 查詢員工信息函數(shù),
24、以崗位工資查詢 9) int Inquire_realpaid() 查詢員工信息函數(shù),以實發(fā)工資查詢 10) int Inquire_tax() 查詢員工信息函數(shù),以稅金查詢 11) void Inquire_undefined(void) 查詢員工信息函數(shù),編號、姓名、性別組合查詢 C.2 排序類函數(shù) 1) int Neaten() 數(shù)據(jù)整理,將員工信息按編號從小到大排列 2) int Neaten_num() 數(shù)據(jù)整理,將登記的員工編號從小到大排列 3) int Sort_down_up_num() 編號排序,升序 4) int Sort_down_up_age
25、() 年齡排序,升序 5) int Sort_down_up_basepay() 基本工資排序,升序 6) int Sort_down_up_bonus() 獎金排序,升序 7) int Sort_down_up_gotpaid() 應(yīng)得工資排序,升序 8) int Sort_down_up_meritpay() 績效工資排序,升序 9) int Sort_down_up_postsalary() 崗位工資排序,升序 10) int Sort_down_up_realpaid() 實發(fā)工資排序,升序 11) int Sort_down_up_tax() 稅金排序,
26、升序 12) int Sort_up_down_age() 年齡排序,降序 13) int Sort_up_down_basepay() 基本工資排序,降序 14) int Sort_up_down_bonus() 獎金排序,降序 15) int Sort_up_down_gotpaid() 應(yīng)得工資排序,降序 16) int Sort_up_down_meritpay() 績效工資排序,降序 17) int Sort_up_down_num() 編號排序,降序 18) int Sort_up_down_postsalary() 崗位工資排序,降序 19) int
27、 Sort_up_down_realpaid() 實發(fā)工資排序,降序 20) int Sort_up_down_tax() 稅金排序,降序 3.4主算法設(shè)計 用戶登錄 1 開始 年月選擇 5 4 3 2 修改密碼 員工界面 結(jié)束 幫助 管理員界面 1 2 3 4 5 6 7 輸出工資信息 1 2 3 4 工資排序 工資查找 工資統(tǒng)計 1 2 3 4 8 工資添加 工資整理 工資修改 5 6 工資刪除 生成文本 1 2 3 4 數(shù)據(jù)備份 數(shù)據(jù)恢復(fù) 數(shù)據(jù)清空 5 6 修改參數(shù) 修改口令
28、1 2 3 4 編號添加 編號整理 編號刪除 3.5用戶界面設(shè)計 1) 兩個操作界面。根據(jù)登陸人員不同,分為管理員的操作界面和員工的查詢界面,使界面顯示項更加專門化和清晰化。 2) 采用選擇式的功能菜單。屏幕上顯示功能菜單的功能項,根據(jù)菜單上提供的數(shù)字按相應(yīng)的鍵去執(zhí)行相應(yīng)的子程序,執(zhí)行后返回功能菜單。 3) 用戶界面采取相同的樣式進(jìn)行設(shè)計,主界面上會顯示當(dāng)前操作的是哪個年月的員工工資,菜單的選擇功能利用switch函數(shù)實現(xiàn)。 4) 通過printf函數(shù)輸出各種裝飾符號,Windows自帶函數(shù)調(diào)節(jié)背景色和字體顏色,以達(dá)到優(yōu)化操作界面的目的。 3.6程序
29、特色設(shè)計 1) 多入口登陸。分成管理員登陸和員工登陸兩個入口:管理員登陸之后可以查看全體員工的工資信息,并對其進(jìn)行增添刪改、排序、備份清空、輸出打印等處理;員工登陸之后只能看到自己的個人信息和工資情況。極大地保證了管理層和員工層不同的需求,以及個人信息的安全性。 2) 以文件形式輸入和輸出。程序中所有的數(shù)據(jù)在每次變動后都會通過輸出函數(shù)以二進(jìn)制形式輸出到文件內(nèi),而且每次調(diào)用數(shù)據(jù)時都是從文件中輸入,從而保證了系統(tǒng)數(shù)據(jù)的可靠性,不易丟失性。 3) 自動計算功能。輸入員工工資信息時不用輸入全部信息,例如,輸入員工的崗位級別,即可獲得員工在該崗位應(yīng)得的工資數(shù),員工的應(yīng)得工資、實發(fā)工資以及應(yīng)該繳納的
30、社會保險、公積金和稅金都是通過函數(shù)直接計算,無需手動輸入。 4) 基本參數(shù)的設(shè)置。管理員可以修改崗位級別所對應(yīng)的崗位工資金額,從而實現(xiàn)了程序的靈活性,滿足公司崗位薪資調(diào)整的需求。 5) 員工注冊功能。只有管理員可以對員工進(jìn)行注冊登記,只有經(jīng)過登記的員工才可以使用自己的員工編號登陸該系統(tǒng),從而防止了外部人員對公司財務(wù)情況的獲取。各員工的初始登陸密碼與編號相同,登陸后可以自行修改密碼,從而保證了個人信息的安全性。 6) 嚴(yán)密的非法輸入檢測和糾錯功能。程序中任何一個地方都考慮了非法輸入,以保證程序不會崩潰或跳出。例如,登陸時如果輸入錯誤用戶名會得到不存在用戶名的提示,并要求重新輸入;在菜單選擇
31、時,如果輸入的不是數(shù)字編號,而是字母或字母與數(shù)字的組合,系統(tǒng)仍會提示輸入錯誤,請重新輸入,不會出現(xiàn)崩潰或跳出;當(dāng)在屏幕中輸出數(shù)據(jù)時,如果保存數(shù)據(jù)的文件丟失、不存在,系統(tǒng)會提示錯誤,文件不存在;在程序中沒有任何數(shù)據(jù)的情況下選擇排序、修改、刪除數(shù)據(jù)的功能,會提示“沒有數(shù)據(jù),無法進(jìn)行操作!”,不會出現(xiàn)程序崩潰。 7) 工資按月份存取功能??紤]到該系統(tǒng)應(yīng)該可以儲存員工每個月的工資信息,因此建立多個以年月份命名的文件,用來儲存不同月份的員工工資,用戶只需要在登陸后輸入相應(yīng)的年月就可以獲取到該年月下的工資信息。 4.方案實踐 4.1開發(fā)環(huán)境與工具 Windows 7 CodeBlocks
32、 Visual C++ 6.0 4.2程序設(shè)計關(guān)鍵技術(shù) 1) 建立動態(tài)鏈表,通過結(jié)構(gòu)體對員工信息進(jìn)行管理,包括員工信息的輸入、輸出、添加、修改、刪除和統(tǒng)計等功能 2) 以文件形式輸入和輸出員工信息 3) 建立管理員和員工兩個登陸通道,實現(xiàn)員工工資查詢和管理員對員工工資管理的分級機制 4) 將數(shù)據(jù)儲存在不同月份文件下,實現(xiàn)工資按月錄入與查詢 5) 員工基本信息和工資錄入后,可以調(diào)用函數(shù)自動計算崗位工資,應(yīng)得工資,應(yīng)繳納稅金,應(yīng)交保險和公積金,和實發(fā)工資 6) 查找和排序算法,用來對數(shù)據(jù)進(jìn)行查找和排序 7) 稅金計算算法,通過工資計算出應(yīng)繳納的稅金金額 8) 統(tǒng)計算法,計算各組
33、數(shù)據(jù)的最大值、最小值和平均數(shù)據(jù) 9) 登錄系統(tǒng),區(qū)別不同賬號,并且對用戶密碼進(jìn)行驗證 4.3個人設(shè)計實現(xiàn) 4.3.1劉誠陽設(shè)計實現(xiàn) a) Insert(Creat(Creat_number( ) ) ) 開始 N Y < i? 計算崗位工資Post(a),稅金Tax(m),應(yīng)發(fā)、實發(fā)工資 指針指到表頭 指向下一個節(jié)點 輸入添加數(shù)據(jù)個數(shù)i 輸入職工信息 調(diào)用Print( ) 顯示信息 Output( )函數(shù)輸出 結(jié)束 b) Print() 開始 N Y (Pt=Input())==NULL? 指
34、向下一個節(jié)點 提示無數(shù)據(jù)! 結(jié)束 輸出信息到屏幕 c) Output( ) 開始 N Y 無數(shù)據(jù)? 向文件寫入數(shù)據(jù) 指向下一個節(jié)點 提示存儲失?。? 打開文件讀取當(dāng)前年月,關(guān)閉 結(jié)束 打開以年月命名的文件,寫入 鏈表不為空? N Y d) Input( ) 開始 N Y 存在? 指針指到表頭 結(jié)束 打開文件讀取當(dāng)前年月,關(guān)閉 打開以年月命名的文件 指針未到末尾? Y 內(nèi)容不為空? Y 讀取數(shù)據(jù) 返回表頭指針,關(guān)閉文件 N N e) Delete() 開始 N Y NU
35、LL? Pt2=Pt1->next head=pt1 Output(Pt2),i=1 提示無數(shù)據(jù)! Pt1=Input( ) 結(jié)束 i=1,Print( ) Pt2!=NULL? N Y 輸入刪除編號 Strcmp(Pt1->num,strnum)==0? Y 指針后移 i!=1? Strcmp(Pt2->num,strnum)==0? N Y Pt1->next=Pt2->next Output(head),i=1 N N Y 提示查詢不到! f) Modify() 開始 N Y P==NULL? 計算崗位工資Post(a)
36、,稅金Tax(m),應(yīng)發(fā)、實發(fā)工資 提示無數(shù)據(jù)! P=Input( ),i=0 結(jié)束 Print( ) i!=1? N Y 輸入修改編號 Strcmp(P->num,strnum)==0? P!=NULL? Y 無相同編號修改數(shù)據(jù)! N Y 輸入員工信息 Output( ),i=1 N P=P->next g) Statistics()開始 N Y P==NULL? i=1 i++,sum=sum+money 提示無數(shù)據(jù)! P=Input( ) i=0,sum=0 結(jié)束 P->next==NULL? N Y
37、
P!=NULL?
Y
N
輸出max,min,sum/i
P->money>money
P->money
38、 4.3.2張鵬舉設(shè)計實現(xiàn) a) Password() 開始 輸入用戶名并判斷是否為管理員 是 進(jìn)入管理員操作系統(tǒng) 否 讀出文件password并且將它存入數(shù)組key中,并關(guān)閉文件 輸入密碼并存入數(shù)組Password中 判斷密碼是否與數(shù)組password中是否一致 是 否 是 進(jìn)入函數(shù)Welcome和Choose_month 進(jìn)入員工操作系統(tǒng) 定義鏈表指針并指向
39、數(shù)組NUM的第一個數(shù)據(jù) 判斷數(shù)據(jù)是否與name數(shù)組中數(shù)據(jù)相等 否 不存在該員工編號 輸入密碼并與Password是否相等 是 是 否 對不起密碼錯誤 57 b) Changepassword( ) 開始 讀取文件password.text 輸入原始密碼password 將文件中的密碼讀取出來并且存入數(shù)組x中 進(jìn)入while循環(huán) 調(diào)用strcmp函數(shù),并且
40、將數(shù)組x與psaaword比較是否相等 是 否 請重新輸入密碼password 輸入新密碼并且存入數(shù)組a中 再次輸入新密碼并且存入數(shù)組b中 調(diào)用strcmp函數(shù)比較數(shù)組a與b是否相等 否 是 重新讀取文件password,并且將數(shù)組a中的密碼存入password中 輸出密碼修改成功 結(jié)束 c) Tax( ) 開始 N Y Salary<=0? Salary=a-3500 結(jié)束 Tax=0
41、
0 42、ary*0.35-5505
4.3.3于文鑫設(shè)計實現(xiàn)
a) Inquire_num( )
開始
數(shù)組內(nèi)容有?
輸入編號
有相同編號?
N
Y
Y
沒有查詢到數(shù)據(jù)
N
輸出工資信息
沒有數(shù)據(jù),無法進(jìn)行查詢,請先出入員工工資信息
返回Inquire()
結(jié)束
b) Sort_down_up_num()
開始
N
Y
!=NULL?
p-min=p,min=p->next
p-min-> 43、next=min->next
head=Print()
結(jié)束
For循環(huán),p=head,min=head,指針下指,!=NULL?
N
Y
Strcmp<0?
Y
N
first=NULL?
Y
first=min,tail=min
min==head?
Y
head=head->next
N
first!=NULL?
head=first
Output(head)
Print( )
N
tail->next=min
tail=min
N
Y
tail->next=NULL
5.測試與調(diào)試
5.1個人測試
5.1. 44、1劉誠陽測試
1) 主界面
管理人員界面:
員工界面:
2) 非法輸入檢測
3) 顯示函數(shù),輸出員工工資信息到屏幕
4) 員工工資信息統(tǒng)計
5) 員工工資信息添加
添加前:
函數(shù)通過崗位級別自動給出相應(yīng)崗位工資,并計算應(yīng)發(fā)工資,社保&公積金,稅金和實發(fā)工資,自動輸出保存到文件。添加后:
6) 員工工資信息修改
修改前:
修改后:
7) 員工工資信息刪除
刪除前:
刪除后:
8) 輸出員工工資信息到文本文件
輸出前:
輸出后:
9) 數(shù)據(jù)備份、清空與恢復(fù)
對數(shù)據(jù)進(jìn)行備份:
以二進(jìn)制形式備份成功:
45、
系統(tǒng)中數(shù)據(jù)清空前:
清空數(shù)據(jù):
清空后:
通過之前備份的文件對系統(tǒng)中數(shù)據(jù)進(jìn)行恢復(fù):
恢復(fù)成功:
5.1.2張鵬舉測試
1) 登陸測試
輸入不存在編號,會提示,并返回登陸界面:
輸入錯誤密碼,提示密碼輸入錯誤和剩余嘗試次數(shù):
連續(xù)輸錯密碼三次,程序結(jié)束運行:
輸入正確密碼,成功登陸,進(jìn)入年月選擇界面:
2) 崗位級別與對應(yīng)崗位工資修改
3) 住房補貼參數(shù)修改
4) 用戶密碼修改
首先驗證原始密碼,密碼錯誤系統(tǒng)會一直提示“原始密碼輸入錯誤,請重新輸入”。原始密碼正確后,請輸入新密碼,如兩次新密碼輸入不一致,則會 46、提示重新輸入第二次密碼,一致后,密碼修改成功。
修改密碼之后再登陸:
使用新密碼登陸成功!
5.1.3于文鑫測試
1) 員工工資信息排序——從高到低——按編號
排序之前:
選擇工資信息排序,并選擇從高到低排序:
選擇按編號排序:
排序之后:
2) 員工工資信息排序——從高到低——按獎金
3) 員工工資信息查詢
按員工編號查詢:
按獎金查詢:
組合模糊查詢——關(guān)鍵字查詢:
5.2組裝與系統(tǒng)測試
由于之前并沒有進(jìn)行過模塊化的程序設(shè)計,所以剛開始將各個.C文件鏈接時出現(xiàn)了很多問題。最嚴(yán)重的問題就是在一個.C文件中沒有對所調(diào)用的 47、另一個.C文件中的函數(shù)進(jìn)行聲明,出現(xiàn)了找不到該函數(shù)的定義,程序各個模塊無法連接的問題。經(jīng)過查閱課本和資料,建立了一些.H頭文件,并在預(yù)處理中包含這些頭文件,解決了這一問題。
另外一些小的問題也是層出不斷,例如函數(shù)名稱由于疏忽,增加或丟掉了個別字母,導(dǎo)致前后函數(shù)名不一致,調(diào)用時候出現(xiàn)錯誤,或者出現(xiàn)重復(fù)定義的問題。經(jīng)過細(xì)心仔細(xì)地檢查,解決了這些小的毛病,最終還算順利地實現(xiàn)了各個模塊的拼接,程序最終在Windows7平臺上成功運行。
系統(tǒng)測試記錄
操作名稱
操作流程
操作結(jié)果和輸出
登錄系統(tǒng)
打開登錄頁面:
1.輸入正確用戶名和正確密碼,登陸;
2.輸入正確用戶名和 48、錯誤密碼,登陸;
3.輸入錯誤用戶名。
1.成功登陸,從登錄系統(tǒng)到系統(tǒng)信息顯示完成,花費2秒時間,基本滿足了系統(tǒng)顯示要求;
2.提示密碼輸入錯誤,請重新輸入,三次輸入錯誤后退出系統(tǒng);
3.提示不存在用戶名,請重新輸入。
月份選擇
進(jìn)入選擇界面,輸入年份,回車,月份,回車
進(jìn)入操作主界面,并在上方顯示當(dāng)前年月
全部用戶信息輸出
無需操作,在相應(yīng)選擇下自動輸出到屏幕
用列表的方式顯示出了所有的用戶記錄,用時小于1秒,符合要求。
查詢工資信息
1.選擇查詢方式,例如選擇按編號查詢,則輸入編號,回車即可;
2.輸入不存在編號;
3.系統(tǒng)中無數(shù)據(jù)時選擇該功能。
1.用列表的 49、方式顯示出了所有符合的用戶記錄,用時小于1秒,符合要求;
2.提示查詢不到信息;
3.提示系統(tǒng)中無數(shù)據(jù),無法使用該功能。
工資信息排序
1.選擇排序方式,例如選擇按降序、編號排序,則選擇降序、按編號即可;
2.系統(tǒng)中無數(shù)據(jù)時選擇該功能。
1.用列表的方式顯示出了排序后的所有用戶記錄,用時小于1秒,符合要求;
2.提示系統(tǒng)中無數(shù)據(jù),無法使用該功能。
工資信息統(tǒng)計
1.選擇該功能;
2.無數(shù)據(jù)時選擇該功能。
1.從崗位工資、基本工資、績效工資、獎金、應(yīng)發(fā)工資、稅金、實發(fā)工資等幾個方面顯示現(xiàn)有數(shù)據(jù)的最小值、最大值和平均值。
2.提示系統(tǒng)中無數(shù)據(jù),無法使用該功能。
數(shù)據(jù)添加
50、
輸入需要添加信息的員工個數(shù),然后按步驟輸入員工編號、姓名、性別、年齡、崗位級別、基本工資和績效工資
提示數(shù)據(jù)添加成功,并將數(shù)據(jù)寫入文件。
數(shù)據(jù)整理
1.選擇該功能;
2.無數(shù)據(jù)時選擇該功能。
1.對數(shù)據(jù)按編號從小到大排列并輸出到屏幕;
2.提示系統(tǒng)中無數(shù)據(jù),無法使用該功能。
數(shù)據(jù)修改
1.選擇需要修改的員工編號,按步驟輸入員工編號、姓名、性別、年齡、崗位級別、基本工資和績效工資;
2.無數(shù)據(jù)時選擇該功能。
1.將該員工編號的員工信息修改后輸出到屏幕,并保存到文件,時間小于1秒,基本滿足要求;
2.提示系統(tǒng)中無數(shù)據(jù),無法使用該功能。
數(shù)據(jù)刪除
1.輸入需要刪除的員工編 51、號;2.輸入不存在員工編號;3.系統(tǒng)中無數(shù)據(jù)時選擇該操作。
1.刪除該員工編號的員工信息,并存儲,在屏幕上顯示操作后的全部員工信息;
2.提示系統(tǒng)中沒有需要刪除的數(shù)據(jù);
3.提示系統(tǒng)中無數(shù)據(jù),無法使用該功能。
輸出數(shù)據(jù)到文本文件
1.選擇該功能;
2.無數(shù)據(jù)時選擇該功能。
1.生成一個txt文本文件,里面有所有員工的工資信息;
2. 提示系統(tǒng)中無數(shù)據(jù),無法使用該功能。
數(shù)據(jù)備份
選擇該功能
將當(dāng)前數(shù)據(jù)存儲到一個二進(jìn)制文件中
數(shù)據(jù)清空
選擇該功能
系統(tǒng)中所有數(shù)據(jù)被清空。
數(shù)據(jù)還原
選擇該功能
將備份的信息輸出到屏幕,并存儲到當(dāng)前文件。
修改崗位工資參數(shù)
按步 52、驟輸入崗位工資
將崗位級別對應(yīng)的崗位工資存儲到文件
修改住房補貼參數(shù)
輸入新的住房補貼金額
將住房補貼金額存儲到文件
修改管理員或個人密碼
1.輸入舊密碼,輸入新密碼,再次輸入新密碼;
2.輸入錯誤的舊密碼;
3.輸入舊密碼,輸入新密碼,再次輸入不同新密碼。
1.提示密碼修改成功,并存儲到文件;
2.提示密碼錯誤,請重新輸入;
3.提示兩次輸入密碼不同,請重新輸入。
員工編號添加
輸入編號進(jìn)行添加
編號添加成功,以列表形式顯示,并存儲在文件中。
員工編號整理
1.選擇該功能;
2.系統(tǒng)中沒有數(shù)據(jù)時,選擇該功能。
1.將員工編號從小到大排列,并儲存;
2.提 53、示系統(tǒng)中無數(shù)據(jù),無法使用該功能。
員工編號刪除
1.選擇該功能,輸入員工編號,回車;
2.輸入不存在員工編號;
3.系統(tǒng)中沒有數(shù)據(jù)時,選擇該功能。
1.刪除該員工編號的記錄,并存儲,在屏幕上顯示操作后的全部員工編號;
2.提示系統(tǒng)中沒有需要刪除的數(shù)據(jù);
3.提示系統(tǒng)中無數(shù)據(jù),無法使用該功能。
重選年月
選擇該功能
返回選擇年月份的界面,用時小于1秒。
切換用戶
選擇該功能
返回用戶登錄界面,用時小于1秒。
幫助
選擇該功能
輸出系統(tǒng)功能介紹、制作人名單和產(chǎn)品信息。
個人信息輸出
無需操作,在相應(yīng)選擇下自動輸出到屏幕
輸出個人的全部信息到屏幕。
5.3系統(tǒng) 54、運行
系統(tǒng)可以在Windows平臺上平穩(wěn)運行,各項功能都達(dá)到了預(yù)期效果,界面簡潔,操作便捷。運行過程中不會出現(xiàn)出錯崩潰的情況。
對于一些需要完善的功能,我們在運行程序,并進(jìn)行檢測后,又再一次對相應(yīng)功能進(jìn)行了完善與增強,并對系統(tǒng)的界面進(jìn)行了精心的布局,調(diào)整了各個提示語句的輸出位置,使之達(dá)到最好的用戶體驗效果。
6. 課題總結(jié)
6.1課題評價
工資管理系統(tǒng)對于公司的管理者和員工來說,都至關(guān)重要,所以工資管理系統(tǒng)應(yīng)該能夠給使用者提供充足的信息和簡單快速的查詢方法。
使用計算機對工資信息進(jìn)行管理,具有手工管理所無法比擬的優(yōu)點。例如:檢索迅速、查找方便、可靠性高、存 55、儲量大、保密性好、壽命長、成本低等。這些優(yōu)點能夠極大地提高工資管理的效率,也是科學(xué)化、正規(guī)化管理的重要條件。
本課題就是為了滿足這種需求,實現(xiàn)公司員工工資的計算機化管理。
該工資管理系統(tǒng)經(jīng)過我們整個設(shè)計開發(fā)團隊的不懈努力,強有力地實現(xiàn)了課題的基本要求和所有目標(biāo),并增設(shè)了很多切實有用的創(chuàng)意和功能,全方面體現(xiàn)了我們團隊的設(shè)計思想,完全達(dá)到了預(yù)期的效果。
首先,該工資管理系統(tǒng)具有全面細(xì)致的功能選項,可以滿足用戶各方面信息的管理與查詢,而且分為兩個入口,可以滿足公司不同層級的人員需求,面向群體廣泛。
其次,該工資管理系統(tǒng)具有良好的健壯性和安全性,運行穩(wěn)定,數(shù)據(jù)不易丟失,密碼登陸,安全可靠 56、。而且系統(tǒng)代碼的每個函數(shù)中都嵌入了非法輸入和非法操作檢測機制,確保系統(tǒng)不會在運行中跳出或者崩潰。
最后,該工資管理系統(tǒng)具有良好的界面,簡單清新,使用方便,操作快捷。
總體來說,經(jīng)過三周的設(shè)計與實踐,最終我們團隊圓滿地完成了本次工資管理系統(tǒng)的設(shè)計任務(wù),達(dá)到了在實踐中鞏固并真正運用自己所學(xué)知識的目的。本次課題設(shè)計順利實現(xiàn)。
6.2團隊協(xié)作
我們團隊在組團完成后,即刻就課題題目的選擇問題進(jìn)行了深刻的討論,經(jīng)由組長建議和組員的一致同意,我們最終選定了“職工工資管理系統(tǒng)”這個設(shè)計課題。
選定課題之后,第二天,我們組便進(jìn)行了整體框架和具體功能的討論與研究。組長提出了該系統(tǒng)應(yīng)該具有的功能并做記錄, 57、與組員們進(jìn)行討論,綜合建議和信息,制定了總體的設(shè)計框架和系統(tǒng)具備的功能。
回去后,組長查閱了與員工工資相關(guān)的資料,并繪制了所設(shè)計系統(tǒng)的功能圖,以及在網(wǎng)上參考了別人設(shè)計的同類型的工資管理系統(tǒng),并且將這些資料一并發(fā)給了組員,大家課余時間自行研究,最后再匯總交流經(jīng)驗與想法。
隔日,大家一起進(jìn)行了詳細(xì)的分工明確,確定了我們的設(shè)計最終要實現(xiàn)什么樣的功能,并進(jìn)一步細(xì)致化,分類成一個個的函數(shù),將函數(shù)的設(shè)計分配給每一個人。劉誠陽作為組長,負(fù)責(zé)整個程序的走向,函數(shù)設(shè)計包括界面的設(shè)計,與動態(tài)鏈表相關(guān)的一切數(shù)據(jù)設(shè)計,文件輸入輸出的設(shè)計,以及對鏈表中數(shù)據(jù)求最小值、最大值和平局?jǐn)?shù)的函數(shù)設(shè)計等等;張鵬舉作為重要組員, 58、負(fù)責(zé)的函數(shù)設(shè)計包括用戶的登錄系統(tǒng),修改密碼和基本參數(shù),計算稅金并返回數(shù)值;于文鑫作為重要組員,主要負(fù)責(zé)對數(shù)據(jù)進(jìn)行查找和排序的設(shè)計。任務(wù)分工完成后,大家都回去查找相關(guān)資料,潛心研究,獨立完成各自的設(shè)計任務(wù)。
每人都進(jìn)行了自己所承擔(dān)任務(wù)的研究,設(shè)計了相關(guān)的算法,繪制了實現(xiàn)目標(biāo)函數(shù)的流程圖,經(jīng)過組內(nèi)商討與研究,修改糾正,最終確立了較為完善的總體程序設(shè)計樣板。
每次上機課的時候,我們都會在一起討論研究,進(jìn)一步明確設(shè)計所要實現(xiàn)的具體目標(biāo),解決代碼編寫過程中的編寫錯誤或者是當(dāng)時設(shè)計時出現(xiàn)的紕漏。
經(jīng)過組內(nèi)人員的共同努力,最后我們順利地完成了此次程序設(shè)計任務(wù),設(shè)計開發(fā)出了令人滿意的職工工資管理系統(tǒng)。更 59、為珍貴的是,通過團隊合作,我們學(xué)會了團隊開發(fā)模式,注重交流,分享經(jīng)驗,從彼此身上學(xué)到了很多,也為自己能在團隊中貢獻(xiàn)一份力量感到由衷的開心。
6.3個人設(shè)計小結(jié)
6.3.1劉誠陽設(shè)計小結(jié)
在開發(fā)工資管理系統(tǒng)的三周時光中,我深刻地體會到了自學(xué)能力的重要性。著手程序的總體設(shè)計時,我發(fā)現(xiàn)課堂上學(xué)習(xí)的知識還遠(yuǎn)遠(yuǎn)不夠,很多東西都需要自己臨時查閱并學(xué)以致用。而且第一次進(jìn)行實驗設(shè)計,整個設(shè)計過程并不清楚,因此很多不懂的地方都是靠自己的不斷嘗試與摸索,憑借老師和同學(xué)的幫助,才最終完成了這個實驗設(shè)計。
在該工資管理系統(tǒng)中,我作為組長,首要任務(wù)是組織好組員,確立工資管理系統(tǒng)的大體框架和主要功能,建立需要的主 60、要函數(shù),并進(jìn)行明確的分工。我所主要負(fù)責(zé)的是工資管理系統(tǒng)的界面設(shè)計和用動態(tài)鏈表對數(shù)據(jù)進(jìn)行處理的所有函數(shù)的設(shè)計以及數(shù)據(jù)輸入、輸出的設(shè)計。
由于我們還沒有學(xué)數(shù)據(jù)結(jié)構(gòu),所以使用動態(tài)鏈表對于我來說是一項很大的挑戰(zhàn),在使用動態(tài)鏈表進(jìn)行數(shù)據(jù)添加的過程中,出現(xiàn)了很多錯誤,程序各種崩潰。經(jīng)過了好幾天的嘗試,才最終實現(xiàn)了利用動態(tài)鏈表添加數(shù)據(jù)的功能,過程十分的曲折,好在功夫不負(fù)有心人。
對于如何將動態(tài)鏈表中的數(shù)據(jù)輸出的屏幕上,我也是做了一番研究才最終設(shè)計出了數(shù)據(jù)輸出函數(shù),現(xiàn)在想來只是將指針從頭節(jié)點遍歷到尾節(jié)點,絲毫不難理解,但是當(dāng)初設(shè)計的時候也是在網(wǎng)上查閱了很多資料,看了很多別人的設(shè)計,才最終完成。
對于數(shù)據(jù) 61、的輸入和輸出設(shè)計就相對來說簡單了許多,查閱課本,確定好存儲方式和類型,按格式打開文件,操作后將文件關(guān)閉,這部分的設(shè)計相對來說比較容易。另外利用將數(shù)據(jù)從文件中輸入和輸出,我還設(shè)計了對員工編號的注冊,還有按月份查詢工資的功能,系統(tǒng)可以將用戶在登陸時從鍵盤輸入的年月保存到文件中,登陸進(jìn)去后,相關(guān)函數(shù)會從文件中讀取這個年月,并打開相應(yīng)年月名稱的文件,獲取該年月的員工信息。這個按年月存取是第三周程序快要驗收的時候我才加上的,因為考慮到實際情況,該管理系統(tǒng)不可能只進(jìn)行員工一個月工資的儲存,應(yīng)該可以儲存一個人多個月份的工資。這也算是對該系統(tǒng)的進(jìn)一步完善了。
對于多入口登陸這個功能,也是我后來思考后進(jìn)行的添 62、加修改。登錄系統(tǒng)雖然不是我設(shè)計的,但是后來我考慮到該系統(tǒng)如果只能供管理員使用而員工不能使用的話,會有很大的局限性,真正更合適的系統(tǒng)應(yīng)該是二者可以兼?zhèn)洹S谑俏以诘顷懴到y(tǒng)的函數(shù)中加了一部分判斷,即可以區(qū)分登錄用戶是管理員還是員工,或者是不存在的用戶;與此同時,額外設(shè)計了一個員工登記功能,用來輔助多入口登陸的實現(xiàn)。這樣,整個工資管理系統(tǒng)就顯得更加完善了,也更加貼合實際情況,滿足用戶需求。
此外,對于員工工資是如何計算的這個問題,我是經(jīng)過了百度各方面資料,才進(jìn)行了數(shù)據(jù)運算方面的設(shè)計,像五險一金和稅金這些東西都應(yīng)該是在輸入基本工資等基礎(chǔ)信息后,系統(tǒng)自行運算得出結(jié)果,并進(jìn)行儲存,而不是人工操作。對崗位工 63、資的獲取也是通過輸入崗位級別后系統(tǒng)自動對照。這一系列的設(shè)計雖然并不復(fù)雜,但是也確實繁瑣,從查閱相關(guān)資料,到最后設(shè)計出完整的數(shù)據(jù)運算,并以正確形式輸入、輸出,著實花了不少時間和功夫,也進(jìn)一步提升了自己對數(shù)據(jù)處理的能力和加強了自己對相關(guān)知識的掌握與運用。
最后感謝在程序設(shè)計中給予我?guī)椭耐瑢W(xué)們和老師們,有了你們的建議和指導(dǎo),我們這個團隊才能不斷完善設(shè)計,找到程序的Bug,并最終設(shè)計出一個相對完備的工資管理系統(tǒng)。
6.3.2張鵬舉設(shè)計小結(jié)
通過這個程序系統(tǒng)設(shè)計,我明白了C語言究竟是怎么樣運用的,以及一系列函數(shù)和數(shù)據(jù)處理。就我自己做的登錄界面和修改密碼來說我運用到了鏈表和文件處理,這是我以前上機 64、課從沒有過的實踐,自己也明白了許多方法的使用。
從一個個函數(shù)到整體系統(tǒng)的運用,讓我明白了它的原理,讓我對程序設(shè)計有了新的認(rèn)識。就我做的那些個函數(shù)來看,首先數(shù)據(jù)必然很重要,什么類型,該怎么用它,怎樣用很少的代碼,運行處更多的程序,是一個很有意思的問題,也是個很有挑戰(zhàn)的問題。
從這次實踐我學(xué)到了,怎么更好的用選擇結(jié)構(gòu)來進(jìn)行對輸入的判斷,怎樣修改文件中的數(shù)據(jù),怎樣把輸入的東西經(jīng)過修改再存入文件中。
總之這是個很好的經(jīng)歷,也是個很不錯的實踐,對我來說很有價值。
6.3.3于文鑫設(shè)計小結(jié)
通過這幾個多星期的課程設(shè)計,我學(xué)到了很多很多。不僅是在知識上,也表現(xiàn)在了各個方面。
首先,在設(shè)計的過程 65、中,我發(fā)現(xiàn)我已經(jīng)遺忘了很多上星期學(xué)習(xí)過的C語言知識,也發(fā)現(xiàn)了原來學(xué)習(xí)中的不少漏洞。有不少地方的樹葉還是新的,那方面的知識自然還沒有吃透。比如結(jié)構(gòu)體的定義已經(jīng)不是很熟,字符串?dāng)?shù)組也不太能熟練運用了,還有就是指向數(shù)組和字符串的指針也不是很熟了。在編寫項目程序的過程中,我不斷的發(fā)現(xiàn)自己的不足并努力提高,在原來的基礎(chǔ)上對C語言有了更進(jìn)一步的理解。
在開發(fā)這個工資管理系統(tǒng)過程中我深刻地體會到了自學(xué)能力的重要性。畢竟在學(xué)校學(xué)習(xí)到的知識是有限的而在開發(fā)系統(tǒng)的過程中僅憑原有的一點點知識是遠(yuǎn)遠(yuǎn)夠的,只有翻閱大量的資料才能學(xué)到更多的知識,才能實現(xiàn)其預(yù)期的功能。在開發(fā)過程中,遇到困難是在所難免的,開發(fā)一 66、個系統(tǒng),恒心和 毅力也是不可缺少的,如果一遇到難題就心慌,想要放棄,那這樣就不可能完成系統(tǒng)。同樣,在開發(fā)過程當(dāng)中,細(xì)心也是非常重要的,由于很多事項都要很注意才行,如果沒有做到這一點,就會出錯。在開發(fā)過程當(dāng)中,我學(xué)到很多,明白了做任何事情都要有始有終,要敢于同困難作斗爭,要養(yǎng)成獨立思考的習(xí)慣。在以后的工作和生活當(dāng)中,我將繼續(xù)發(fā)揚這些好的作風(fēng)。
在程序編寫中,出現(xiàn)了不少的問題,比如指針地址錯誤,文件無法保存;還有,經(jīng)常我會忘在語句結(jié)尾處帶分號,經(jīng)常VC會在這方面報錯;
當(dāng)然,圖書館也是查找資源的好地方,我也感謝那些在冬日里坐在那里的圖書館管理人員,是他們及時的借到相著圖書,讓我們的信息查找更為方便快捷。最后,我再一次感謝我的老師們,謝謝你們的諄諄教誨,沒有你們的言傳身教,就沒有我課程設(shè)計的順利完成,謝謝您們。
6.4參考資料
譚浩強.《C程序設(shè)計》.清華大學(xué)出版社.第四版
譚浩強.《C程序設(shè)計學(xué)習(xí)輔導(dǎo)》.清華大學(xué)出版社.第四版
Brian W.Kernighan & Dennis M.Ritchie.《C程序設(shè)計語言》.
機械工業(yè)出版社.第2版
- 溫馨提示:
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)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑施工重大危險源安全管理制度
- 安全培訓(xùn)資料:典型建筑火災(zāi)的防治基本原則與救援技術(shù)
- 企業(yè)雙重預(yù)防體系應(yīng)知應(yīng)會知識問答
- 8 各種煤礦安全考試試題
- 9 危險化學(xué)品經(jīng)營單位安全生產(chǎn)管理人員模擬考試題庫試卷附答案
- 加壓過濾機司機技術(shù)操作規(guī)程
- 樹脂砂混砂工藝知識總結(jié)
- XXXXX現(xiàn)場安全應(yīng)急處置預(yù)案
- 某公司消防安全檢查制度總結(jié)
- 1 煤礦安全檢查工(中級)職業(yè)技能理論知識考核試題含答案
- 4.燃?xì)獍踩a(chǎn)企業(yè)主要負(fù)責(zé)人模擬考試題庫試卷含答案
- 工段(班組)級安全檢查表
- D 氯化工藝作業(yè)模擬考試題庫試卷含答案-4
- 建筑起重司索信號工安全操作要點
- 實驗室計量常見的30個問問答題含解析