小型公司工資管理系統設計課設報告.doc_第1頁
小型公司工資管理系統設計課設報告.doc_第2頁
小型公司工資管理系統設計課設報告.doc_第3頁
小型公司工資管理系統設計課設報告.doc_第4頁
小型公司工資管理系統設計課設報告.doc_第5頁
已閱讀5頁,還剩41頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

基于 C 的面向對象程序設計實例 課程設計報告 報告題目 小型公司工資管理系統設計 作者所在系部 計算機科學與工程系 作者所在專業 計算機應用技術 作者所在班級 作 者 姓 名 指導教師姓名 完 成 時 間 2012 6 21 北華航天工業學院教務處制 摘 要 在當前的市場經濟體制下 一個公司要好的發展 不但要有好的管理制度 優秀的 管理人員 同時也要有一個健全的并且適合自身特點的公司人員管理和員工工資管理系 統 以實現公司人員管理 工資管理的目 本文在 Microsoft Visual C 6 0 環境下 利用 c 語言編寫程序 實現了公司對 雇員工資信息的管理操作 本系統一簡單易懂為原則 便于操作 本系統一簡單易懂為原則 便于操作 本系統主要有九個功能模塊 1 修改職工信息 2 查詢職工信息 3 刪除職工 信息 4 添加職工信息 5 顯示所有職工信息 6 計算員工工資 7 讀入員工信息 8 保存員工信息 9 統計員工信息 已經通過全面的系統測試 能夠很好的運行 達 到了預期的效果 關鍵詞 c 功能模塊 工資 信息 目錄目錄 摘摘 要要 I 目錄目錄 II 課程設計任務書課程設計任務書 IV 第一章第一章 緒論緒論 1 1 1 1 1 課程設計的目的課程設計的目的 1 1 1 2 2 課程設計的背景和意義課程設計的背景和意義 1 1 2 1 課程設計的背景 1 1 2 2 課程設計的意義 2 1 1 3 3 課程設計環境課程設計環境 2 第二章第二章 需求分析需求分析 3 2 1 問題描述問題描述 3 2 2 功能要求功能要求 3 2 2 問題的解決方案問題的解決方案 3 第三章第三章 系統設計系統設計 4 3 3 1 1 數據設計數據設計 4 3 1 1 類設計 4 3 1 2 類之間的關系 6 3 1 3 函數設計 6 3 2 結構設計 6 3 2 1 系統流程圖 6 3 2 2 界面設計 7 第四章第四章 系統實現系統實現 8 4 4 1 1 類實現類實現 8 4 4 3 3 主函數實現主函數實現 35 第五章第五章 系統測試系統測試 36 5 5 1 1 模塊測試模塊測試 36 5 5 2 2 課程設計過程中遇到的問題課程設計過程中遇到的問題 37 總總 結結 39 致致 謝謝 40 參考文獻參考文獻 40 附附 錄錄 40 課題名稱課題名稱小型公司工資管理系統設計完成時間完成時間2012 6 212012 6 21 指導教師指導教師賈振華賈振華職稱職稱講師講師學生姓名學生姓名孟偉閃孟偉閃班班 級級1151311513 總體設計要求和技術要點總體設計要求和技術要點 1 問題描述 某公司需要存儲雇員的編號 姓名 性別 所在部門 級別 并進行工資的計算 其中 雇員分 為經理 技術人員 銷售人員和銷售經理 四類人員的月薪計算方法如下 經理拿固定月薪 技術人 員按小時領取月薪 銷售人員按其當月銷售額的提成領取工資 銷售經理既拿固定月薪也領取銷售提 成 設計一程序能夠對公司人員進行管理 應用到繼承 抽象類 虛函數 虛基類 多態和文件的輸 入 輸出等內容 2 功能要求 1 添加功能 程序能夠任意添加上述四類人員的記錄 可提供選擇界面供用戶選擇所要添加 的人員類別 要求員工的編號要唯一 如果添加了重復編號的記錄時 則提示數據添加重復并取消添 加 2 查詢功能 可根據編號 姓名等信息對已添加的記錄進行查詢 如果未找到 給出相應的 提示信息 如果找到 則顯示相應的記錄信息 3 顯示功能 可顯示當前系統中所有記錄 每條記錄占據一行 4 編輯功能 可根據查詢結果對相應的記錄進行修改 修改時注意編號的唯一性 5 刪除功能 主要實現對已添加的人員記錄進行刪除 如果當前系統中沒有相應的人員記錄 則提示 記錄為空 并返回操作 否則 輸入要刪除的人員的編號或姓名 根據所輸入的信息刪除 該人員記錄 如果沒有找到該人員信息 則提示相應的記錄不存 6 統計功能 能根據多種參數進行人員的統計 例如 統計四類人員數量以及總數 或者統計男 女員工的數量 或者統計平均工資 最高工資 最低工資等信息 7 保存功能 可將當前系統中各類人員記錄存入文件中 存入方式任意 8 讀取功能 可將保存在文件中的人員信息讀入到當前系統中 供用戶進行使用 工作內容及時間進度安排工作內容及時間進度安排 1 6 月 4 日 10 日 布置任務 軟件設計 2 6 月 11 日 18 日 編寫代碼 上機調試 3 6 月 19 20 21 日 軟件驗收 撰寫課程設計報告 4 各班在 6 月 22 日下午五點前將課程設計報告收齊并上交 課程設計任務書 第一章 緒論 1 1 課程設計的目的 1 此次課程設計的目的是以 c 程序設計基礎 為基礎 針對具有一定難度的綜合 性題目 進行分析 編程 調試和運行 進一步掌握面向對象和面向過程程序設計的基本 方法和編程技巧 鞏固所學理論知識 使理論與實踐相結合 提高分析問題 解決問 題的能力 要求學生達到熟練掌握 C 語言的基本知識和技能 2 基本掌握面向對象程序設計的基本思路和方法 3 能夠利用所學的基本知識和技能 解決簡單的面向對象程序設計問題 4 通過設計一個簡單的 小型公司工資管理系統小型公司工資管理系統 進一步熟悉 C 中類的概念 類的封裝 繼承和多態的實現方式 掌握文件的錄入 查找 對象指針的使用 了解系 統開發的需要分析 類層次設計 模塊分析 編碼測試 模塊組裝與整體調試的全過程 逐步熟悉程序設計的方法 并養成良好的編程習慣 1 2 課程設計的背景和意義 1 2 1 課程設計的背景 1 理論研究基礎 C 面向對象程序設計 是計算機專業的基礎課程 本課程按照軟件程序設計所需 能力進行教學設計 提出以項目模塊方式帶動相關知識點 實踐項目和理論并行的思路 將案例貫穿于課程始終 對原有的教學體系 教學內容進行重新編排 按照從易到難的原 則 將其巧妙地融入到項目開發過程中 降低學習難度 提高學生學習的信心 有效培養 學生的應用能力和學習能力 2 技術層面的支持 本系統運用到 類與對象在 C 中的實現 靜態數據成員 運算符重載 友元函數繼 承與派生的基本知識 單繼承和多繼承 虛基類的作用與使用 虛函數的定義和使用 純 虛函數和抽象類的定義和使用 輸入輸出流的概念 輸入 輸出流操作 文件的創建 打 開 讀寫 關閉等操作 1 2 2 課程設計的意義 本課程按照軟件程序設計所需能力進行教學設計 提出以項目模塊方式帶動相關知識 點 實踐項目和理論并行的思路 將案例貫穿于課程始終 對原有的教學體系 教學內容 進行重新編排 按照從易到難的原則 將其巧妙地融入到項目開發過程中 降低學習難度 提高學生學習的信心 有效培養學生的應用能力和學習能力 小型公司工資管理對公司管理有著很重要的作用 在當今社會應用廣泛 1 3 課程設計環境 硬件平臺 CPU i5 2 67GHz RAM 512MB 以上 軟件平臺 操作系統 Windows xp Windows 7 編輯環境 Visual c 6 0 分辨率 最佳效果 1024 768 像 第二章 需求分析 2 1 問題描述 某公司需要存儲雇員的編號 姓名 性別 所在部門 級別 并進行工資的計算 其中 雇員分 為經理 技術人員 銷售人員和銷售經理 四類人員的月薪計算方法如下 經理拿固定月薪 技術人 員按小時領取月薪 銷售人員按其當月銷售額的提成領取工資 銷售經理既拿固定月薪也領取銷售提 成 設計一程序能夠對公司人員進行管理 應用到繼承 抽象類 虛函數 虛基類 多態和文件的輸 入 輸出等內容 2 2 功能要求 1 添加功能 程序能夠任意添加上述四類人員的記錄 可提供選擇界面供用戶選擇所要添加的 人員類別 要求員工的編號要唯一 如果添加了重復編號的記錄時 則提示數據添加重復并取消添加 2 查詢功能 可根據編號 姓名等信息對已添加的記錄進行查詢 如果未找到 給出相應的提 示信息 如果找到 則顯示相應的記錄信息 3 顯示功能 可顯示當前系統中所有記錄 每條記錄占據一行 4 編輯功能 可根據查詢結果對相應的記錄進行修改 修改時注意編號的唯一性 5 刪除功能 主要實現對已添加的人員記錄進行刪除 如果當前系統中沒有相應的人員記錄 則提示 記錄為空 并返回操作 否則 輸入要刪除的人員的編號或姓名 根據所輸入的信息刪除 該人員記錄 如果沒有找到該人員信息 則提示相應的記錄不存 6 統計功能 能根據多種參數進行人員的統計 例如 統計四類人員數量以及總數 或者統計男 女員工的數量 或者統計平均工資 最高工資 最低工資等信息 7 保存功能 可將當前系統中各類人員記錄存入文件中 存入方式任意 8 讀取功能 可將保存在文件中的人員信息讀入到當前系統中 供用戶進行使用 2 2 問題的解決方案 根據系統功能要求 可以將問題解決分為以下步驟 1 應用系統分析 建立該系統的功能模塊框圖以及界面的組織和設計 2 分析系統中的各個實體及它們之間的關系 3 根據問題描述 設計系統的類層次 4 完成類層次中各個類的描述 5 完成類中各個成員函數的定義 6 完成系統的應用模塊 7 功能調試 8 完成系統總結報告 第三章 系統設計 3 1 數據設計 3 1 1 類設計 根據課程設計要求 需要定義六個類 雇員類 基類 worker 如表 3 1 1 經理 類 manager 如表 3 1 2 技術人員類 technologyman 表 3 1 3 銷售人員類 saleman 如表 3 1 4 銷售經理類 salemanager 如表 3 1 5 和管理類 control 如表 3 1 6 表 3 1 1 雇員類 數據成員 編號 int num 姓名 char name 20 性別 char sex 5 部門 char branch 20 int mark static int count static int count1 static int count2 static int count3 static int count4 static int count5 static int count6 int basic double worktime double xiaoshoue int job 雇員類 成員函數 worker worker int mark virtual worker static int display1 friend istream friend ostream friend ostream friend ostream friend ostream friend ostream count virtual worker cout 員工類被析構 istream friend ostream static int display1 return count void input virtual void inputmoney virtual void display virtual void display2 0 virtual void money 0 char getjibie return jibie double getworktime return worktime double getxiaoshoue return xiaoshoue worker next int num char name 20 char sex 5 char branch 20 部門 char jibie 20 int mark static int count count1 count2 count3 count4 count5 count6 int basic double worktime double xiaoshoue int job 職務 2 經理類 class manager virtual public worker 經理 public manager manager int mark worker mark manager cout 經理類被析構 istream friend ostream void inputmoney job 1 cout 請輸入職員基本工資 basic count3 void display2 cout 職務 經理 職員基本工資 endl cout basic void money cout 該員工的實際工資是 basic endl 3 技術人員類 class technologyman virtual public worker 技術人員 public technologyman technologyman int mark worker mark technologyman cout 技術人員類被析構 endl void inputmoney job 3 cout 請輸入職員工作時間 worktime count5 void display2 cout 職務 技術人員 職員工作時間 endl cout worktime void money jine 35 cout 該員工的實際工資是 jine worktime istream friend ostream int jine 4 銷售人員類 class saleman virtual public worker 銷售人員 public saleman saleman int mark worker mark saleman cout 銷售人員類被析構 endl void inputmoney job 2 cout 請輸入職員銷售額 xiaoshoue ount4 oid display2 cout 職務 銷售人員 職員銷售額 endl cout xiaoshoue void money tichengbili 0 05 cout 該員工的實際工資是 xiaoshoue tichengbili istream friend ostream double tichengbili 5 銷售經理 class salemanager public manager public saleman 銷售經理 public salemanager salemanager int mark worker mark salemanager cout 銷售經理類被析構 endl void inputmoney job 4 cout 請輸入職員基本工資 銷售額 basic xiaoshoue count6 void display2 cout 職務 銷售經理 職員基本工資 銷售額 endl cout basic xiaoshoue void money tichengbili 0 03 cout 該員工的實際工資是 basic xiaoshoue tichengbili istream friend ostream 指向下一個節點 delete head 釋放空間 head p head NULL void showface void changeinformation 修改 void cancelinformation 刪除 void addinformation 添加 void showinformation 顯示 void searchinformation 查詢 void countinformation 計算 void readinformation 讀入 void keepinformation 保存 void tongjiformation 統計 4 2 函數實現 雇員類 int worker count 0 int worker count1 0 int worker count2 0 int worker count3 0 int worker count4 0 int worker count5 0 int worker count6 0 void worker input cout 請輸入職員信息 endl cout num cout name int i cout sex if strcmp sex nan 0 strcmp sex nv 0 if strcmp sex nan 0 count1 else count2 break else cout 輸入錯誤請重新輸入 endl cout branch void worker inputmoney cout 基本工資 basic void worker display cout 編號 num 姓名 name 性別 sex 部門 istream w inputmoney return in ostream w inputmoney return in ostream w inputmoney return in ostream w inputmoney return in ostream s inputmoney return in ostream s display2 return out 管理類 void control showface control control1 int i do cout endl cout endl cout 歡迎使用本職工信息管理系統 endl cout 1 添加職工信息 2 查詢職工信息 endl cout 3 刪除職工信息 4 修改職工信息 endl cout 5 顯示所有職工信息 6 計算員工工資 endl cout 7 讀入員工信息 8 保存員工信息 endl cout 9 統計員工信息 0 退出系統 endl cout 請選擇相應編號 endl cout i if i 9 i 0 cout 輸入錯誤請重新輸入 endl else break 選擇相應標號所對應的功能 switch i case 1 control1 addinformation break case 2 control1 searchinformation break case 3 control1 cancelinformation break case 4 control1 changeinformation break case 5 control1 showinformation break case 6 control1 countinformation break case 7 control1 readinformation break case 8 control1 keepinformation break case 9 control1 tongjiformation break case 0 break default cout 選擇錯誤 請重新選擇 endl while i 0 void control addinformation 添加職工信息 control control1 worker p NULL 新增結點指針 int i 選擇變量 do 添加職工信息菜單 cout endl cout endl cout 請選擇增加的員工種類 endl cout 1 增加經理 2 增加銷售人員 endl cout 3 增加技術人員 4 增加銷售經理 endl cout 5 返回上級菜單 endl cout endl cout 請選擇相應編號 endl cout i if i 5 i 0 cout 輸入錯誤請重新輸入 p break case 2 p new saleman 2 cin p break case 3 p new technologyman 3 cin p break case 4 p new salemanager 4 cin p break case 5 break p next NULL 員工結點加入鏈表 if i 5 if head NULL 鏈表已經存在 worker p1 NULL p2 NULL 指針初始化 p1 head if p1 num p num cout 添加重復 next p2 next p 連接結點 cout 信息添加成功 endl else 鏈表不存在 head p 連接結點 cout 信息添加成功 endl while i 5 void control cancelinformation 刪除職工信息 worker p1 NULL p2 NULL p1 head if p1 NULL cout 系統暫無信息 無法刪除 請錄入信息 endl return int i 選擇變量 do 刪除職工信息菜單 cout endl cout endl cout 請選擇刪除方式 endl cout 1 按照編號 2 按照姓名 endl cout 3 按照部門 4 返回上級菜單 endl cout endl cout 請選擇相應編號 endl cout i if i 4 i 0 cout 輸入錯誤請重新輸入 endl else break switch i case 1 int num cout num p1 head while p1 NULL if p1 num num break else p2 p1 p1 p1 next break case 2 char name 20 cout name p1 head while p1 NULL if strcmp p1 name name 0 break else p2 p1 p1 p1 next break case 3 char branch 20 cout branch p1 head while p1 NULL if strcmp p1 branch branch 0 break else p2 p1 p1 p1 next break case 4 return 刪除結點 if i 4 if p1 NULL 找到結點 刪除 f p1 head 要刪除的結點是第一個結點 head p1 next delete p1 else 要刪除的結點不是第一個結點 p2 next p1 next delete p1 cout 信息刪除成功 endl worker count else 未找到結點 cout 信息刪除失敗 endl while i 4 void control searchinformation 查詢職工信息 worker p1 NULL p2 NULL p1 head if p1 NULL cout 系統暫無信息 無法查詢 請錄入信息 endl return int i 選擇變量 do cout endl cout endl cout 請選擇查詢方式 endl cout 1 按照編號 2 按照姓名 endl cout 3 按照部門 4 按照職務 endl cout 5 返回上級菜單 endl cout endl cout 請選擇相應編號 endl cout i if i 5 i 0 cout 輸入錯誤請重新輸入 endl else break switch i case 1 int num cout num p1 head while p1 NULL if p1 num num break else p2 p1 p1 p1 next if p1 NULL 若找到結點 cout 職工信息為 endl endl p1 endl else cout 該職工信息不存在 endl break case 2 char name 20 cout name p1 head while p1 NULL if strcmp p1 name name 0 break else p2 p1 p1 p1 next if p1 NULL 若找到結點 cout p1 endl else cout 信息查詢失敗 endl break case 3 char branch 20 int m 0 cout branch p1 head while p1 NULL if strcmp p1 branch branch 0 cout p1 next m else p2 p1 p1 p1 next if m 0 cout 信息查詢失敗 endl break case 4 int job int n 0 cout job p1 head while p1 NULL if p1 job job cout p1 next n else p2 p1 p1 p1 next if n 0 cout 查詢失敗 endl break case 5 return while i 5 void control changeinformation 修改職工信息 worker p1 NULL p2 NULL if head NULL cout 系統暫無信息 無法修改 請錄入信息 endl return int i 選擇變量 do cout endl cout endl cout 1 修改姓名 2 修改部門 endl cout 3 修改職務 4 返回上級菜單 endl cout endl cout 請選擇相應編號 endl cout i if i 4 i 0 cout 輸入錯誤請重新輸入 endl else break if i 4 int num cout num p1 head while p1 NULL if p1 num num break else p2 p1 p1 p1 next if p1 NULL 若找到結點 cout 編號為 num 的職工原信息為 endl endl p1 endl else cout 該職工信息不存在 endl return 執行修改結點 switch i case 1 cout newname strcpy p1 name newname break case 2 cout newbranch strcpy p1 branch newbranch break case 3 cout newjob p1 job newjob break case 4 return if p1 NULL 若找到結點 cout 修改成功 endl cout 該職工現在的信息為 endl endl p1 endl while i 4 void control showinformation 顯示所有職工信息 cout 顯示所有職工信息 endl worker p1 head 初始化 a if p1 NULL cout 系統暫無信息 請錄入 endl while p1 NULL cout p1 next void control countinformation worker p1 NULL p2 NULL if head NULL cout 系統暫無信息 無法計算 請錄入信息 endl return int i 選擇變量 do cout endl cout endl cout 1 按照編號 2 按照姓名 endl cout 0 返回上級菜單 endl cout 請選擇相應編號 endl cout i if i 2 i 0 cout 輸入錯誤請重新輸入 endl else break switch i case 1 int num cout num p1 head while p1 NULL if p1 num num break else p2 p1 p1 p1 next if p1 NULL 若找到結點 cout 職工的實際工資為 money else cout 該職工信息不存在 endl break case 2 char name 20 cout name p1 head while p1 NULL if strcmp p1 name name 0 break else p2 p1 p1 p1 next if p1 NULL 若找到結點 cout 職工的實際工資為 money else cout 信息查詢失敗 endl break case 0 return while i 0 void control readinformation 讀入員工信息 int mark 類標記 worker p NULL ifstream infile worker1 txt ios in 讀取一條記錄 if infile cerr Open error mark switch mark case 1 p new manager 1 p mark 1 infile p num p name p sex p branch p job p basic infile p jibie break case 2 p new saleman 2 p mark 2 infile p num p name p sex p branch p job p xiaoshoue break case 3 p new technologyman 3 p mark 3 infile p num p name p sex p branch p job p worktime break case 4 p new salemanager 4 p mark 4 infile p num p name p sex p branch p job p basic p jibie p xiaoshoue break p next NULL if mark 0 if head NULL 鏈表已經存在 worker p1 NULL 指針初始化 p1 head while p1 next NULL 查找尾結點 p1 p1 next p1 next p 連接結點 cout 信息讀入成功 endl break else 鏈表不存在 head p 連接結點 cout 信息成功 endl infile close cout 信息讀入成功 endl void control keepinformation 保存員工信息 worker p head if p NULL cout 系統暫無信息 無法保存 請錄入信息 endl return ofstream outfile worker1 txt ios out if outfile cerr Open error endl abort while p NULL outfile mark num name sex branch job mark 1 outfile getjibie else if p mark 2 outfile getxiaoshoue else if p mark 3 outfile getworktime else if p mark 4 outfile getjibie getxiaoshoue outfile next outfile 0 endl outfile close cout 保存信息成功 endl void control tongjiformation worker p1 NULL p2 NULL p1 head if p1 NULL cout 系統暫無信息 請錄入信息 endl return int i 選擇變量 do cout endl cout endl cout 請選擇統計參數 endl cout 1 按照性別 2 按照職務 endl cout 3 總人數 4 返回上級菜單 endl cout endl cout 請選擇相應編號 endl cout i if i 4 i 0 cout 輸入錯誤請重新輸入 endl else break switch i case 1 int k do cout endl cout endl cout 請選擇 endl cout 1 男員工 2 女員工 endl cout 0 返回上級菜單 endl cout endl cout 請選擇相應編號 endl cout k if k 2 k 0 cout 輸入錯誤請重新輸入 endl else break switch k case 1 cout 男職工數為 worker count1 endl break case 2 cout 女職工數為 worker count2 endl break case 0 break default cout 輸入錯誤 endl while k 0 break case 2 int k do cout endl cout endl cout 請選擇 endl cout 1 經理 2 技術人員 endl cout 3 銷售人員 4 銷售經理 endl cout 0 返回上級菜單 endl cout endl cout 請選擇相應編號 endl cout k if k 4 k 0 cout 輸入錯誤請重新輸入 endl else break switch k case 1 cout 經理人數為 worker count3 endl break case 2 cout 技術人員人數為 worker count5 endl break case 3 cout 銷售人員人數為 worker count4 endl break case 4 cout 銷售經理人數為 worker count6 endl break case 0 break default cout 輸入錯誤 endl while k 0 break case 3 cout 總員工數為 worker count endl break case 4 break default cout 輸入錯誤 endl while i 4 4 3 主函數實現 int

溫馨提示

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

評論

0/150

提交評論