




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 面向課程設計C+程序報告 課程設計題目:公司人員信息管理系統 學生姓名: 劉純祥 學生學號: 1207020113 學生院系: 數學與計算科學學院 學生班級: 12級信息01班 指導教師: 李建湘 設計時間: 2013年12月08日 第 1 頁 共 30 頁 目 錄一、程序設計的目的3二、系統類框圖3三、模塊分析及演示結果5四、詳細設計及程序代碼101、雇員類的聲明與定義102、模塊功能的實現18五、存在的問題與不足27六、課程設計中的感想27七、課程設計后的收獲28八、結束語29一、程序設計的目的及需求分析Visual C+6.0的MFC提供了大量的類庫函數強大支持。開發一個人員信息管理系
2、統,可以實現人員信息的管理。并提供新信息輸入,現有公司人員信息查詢功能,對記錄的刪除修改等工作。公司人員管理系統是典型的信息管理系統(MIS),其開發主要包括后臺數據信息的建立和保存以及前端應用程序的開發兩個方面。對于前者要求建立起數據一致性和完整性強、數據安全性好的庫。而對于后者則要求應用程序功能完備,易使用等特點。隨著公司的規模不斷擴大,新型公司數量不斷增多,各公司人員數量也急劇增加,有關人員的各種信息也成倍增長。面對龐大的信息量,有必要開發人員管理系統來提高職工管理工作的效率。通過這樣的系統,可以做到信息的規范管理、科學統計和快速查詢,從而減少管理方面的工作量。此人員信息管理系統包括員工
3、信息輸入、員工信息輸出、員工信息查詢,員工信息更改以及員工信息刪除四個模塊。打開該人員信息管理系統后可以對職工的各項信息進行管理。可以說,現在傳統的職工的各項管理所具備的功能幾乎都可以在互聯網上進行互聯網高效運作,雖然傳統職工管理的手段不同,但是隨著互聯網的發展,它將有力的改變現存職工管理模式,給單位以高效低成本的發展空間。本程序能夠使公司管理層有效的管理職員信息,提高公司的運轉效率。二、系統類框圖 本系統有兩個總類,即雇員類和對話框類。其中,雇員類包括經理類、銷售員類、技術員類,再由經理類和銷售員類派生出銷售經理類。對話框類包括信息輸入類、信息查詢類、信息更改類、信息刪除類。其中信息信息查詢
4、修改輸入類、信息查詢修改輸出類。其關系如下圖:雇員類技術員銷售員經理類銷售經理類信息管理進入系統界面用戶名或密碼輸入錯誤登陸、輸入用戶名和密碼 信息查詢、刪除類信息輸出類信息輸入類查詢輸出類查詢輸入類三、模塊分析及演示結果1、打開程序“12信計01班劉純祥”進入登陸頁面如下圖:輸入正確的用戶名和密碼,進入主界面。2、 進入主菜單如下圖:點擊“信息管理”,在下拉菜單會出現“信息輸入、信息輸出、信息查詢和信息刪除”選項。在下拉菜單點擊“信息輸入”選項,在出現的對話框里輸入你要的信息,如圖:點擊“確定”之后,系統會對輸入的信息調用employee.h中的函數。從而將員工的姓名、編號、級別以及工資等信
5、息存儲起來,并會彈出如下對話框:單擊“確定”,即可完成員工信息的輸入。如果在信息輸入對話框中點擊“取消”,則彈出以下對話框:3、 人員信息輸出模塊點擊“信息管理/信息輸出”,系統會自動的將公司中的員工信息輸出,顯示為:4、信息查詢模塊在本系統中你可以通過姓名查找你需要的人員信息,點擊“信息管理/信息查詢”,出現對話框,如圖:在查詢者姓名后面的編輯框中輸入要查詢的員工的編號,按“確定”鍵后,提示您是否顯示該職員信息,如圖:點擊“確定”,則顯示職員信息,如圖:此處,系統調用void CMy12信計01班劉純祥 View:OnQuery()函數5、信息刪除模塊此系統還包含“信息刪除”功能,您可以點擊
6、“信息管理/信息刪除”,然后再按提示輸入要刪除人員編號,如圖:按“確定”后,則顯示對話框如下:點擊“確定”,方可顯示刪除結果,如下:此模塊調用的是void CMy1107020427_View:OnXxsc() 函數。4、 詳細設計及程序代碼 構建類Employee,Manager, Salesman, SalesManager, Technician,由Employee構造函數pay,promote,SetName,GetindividualEmpNo,Getgrade,GetaccumPay具體代碼如下:1.1/Employee.h#if !defined(AFX_EMPLOYEE_H_0
7、9F56B9D_166A_4D2E_9BF7_0A2C4CBA9C10_INCLUDED_)#define AFX_EMPLOYEE_H_09F56B9D_166A_4D2E_9BF7_0A2C4CBA9C10_INCLUDED_#if _MSC_VER > 1000#pragma once#endif / _MSC_VER > 1000/ Employee.h : header file/ CEmployee dialogclass CEmployee : public CDialog/ Constructionpublic:CEmployee(CWnd* pParent = N
8、ULL); / standard constructor CEmployee() ;virtual void pay() ;/計算月薪函數(純虛函數)virtual void promote(int increment=0);/升級函數(虛函數)void SetName(char *); /設置姓名函數char * GetName(); /提取姓名函數int GetindividualEmpNo(); /提取編號函數int Getgrade(); /提取級別函數float GetaccumPay(); /提取月薪函數/ Dialog Data/AFX_DATA(CEmployee)enum I
9、DD = IDD_Input ;intm_Allsales;CStringm_Manager;intm_Sales;CStringm_Salesman;CStringm_Salesmanager;CStringm_Technician;intm_Workhours;/AFX_DATA/ Overrides/ ClassWizard generated virtual function overrides/AFX_VIRTUAL(CEmployee)protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV suppo
10、rt/AFX_VIRTUAL/ Implementationprotected: char name20;/姓名int individualEmpNo;/個人編號int grade;/級別float accumPay;/月薪總額static int EmployeeNo;/本公司職員編號目前最大值/ Generated message map functions/AFX_MSG(CEmployee)/ NOTE: the ClassWizard will add member functions here/AFX_MSGDECLARE_MESSAGE_MAP();class Technicia
11、n:virtual public CEmployee/兼職技術人員類private:float hourlyRate;/每小時酬金int Workhours;/當月工作時數public:Technician();/構造函數void SetWorkhours(int wh); /設置工作時數函數void pay();/計算月薪函數void promote(int);/升級函數;class Salesman:virtual public CEmployee/兼職推銷員類protected:float CommRate;/按銷售額提取酬金的百分比int Sales;/當月銷售額public:Sale
12、sman();/構造函數void SetSales(int sl); /設置銷售額函數void pay();/計算月薪函數void promote(int);/升級函數;class Manager:virtual public CEmployee/經理類protected:float monthlyPay;/固定月薪數public:Manager();/構造函數void pay();/計算月薪函數void promote(int);/升級函數;class Salesmanager:public Manager,public Salesman /銷售經理類public:Salesmanager(
13、);/構造函數void pay();/計算月薪函數void promote(int);/升級函數;/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.#endif #endif / !defined(AFX_EMPLOYEE_H_09F56B9D_166A_4D2E_9BF7_0A2C4CBA9C10_INCLUDED_) 實現Employee,顯示公司人員月薪水多少,具體代碼如下:1.2經理類由manager構造函數
14、pay,promote具體代碼如下:/ Manager.h#if !defined(AFX_EMPLOYEE_H_09F56B9D_166A_4D2E_9BF7_0A2C4CBA9C10_INCLUDED_)#define AFX_EMPLOYEE_H_09F56B9D_166A_4D2E_9BF7_0A2C4CBA9C10_INCLUDED_#if _MSC_VER > 1000#pragma once#endif / _MSC_VER > 1000#include "Employee.h"class Manager:virtual public CEmplo
15、yee/經理類protected:float monthlyPay;/固定月薪數public:Manager();/構造函數void pay();/計算月薪函數void promote(int);/升級函數;#endif / !defined(AFX_MANAGER_H_43C187E9_226A_49A9_AE84_B60F47ABDA44_INCLUDED_)1.3銷售員類由Salesman,構造函數CommRate,Sales,SetSales, pay,promote具體代碼如下:/ Salesman.h#if !defined(AFX_SALESMAN_H_F9CEA833_1587
16、_4CDD_BE4F_E70466FBA116_INCLUDED_)#define AFX_SALESMAN_H_F9CEA833_1587_4CDD_BE4F_E70466FBA116_INCLUDED_#if _MSC_VER > 1000#pragma once#endif / _MSC_VER > 1000#include "Employee.h"class Salesman:virtual public CEmployee/兼職推銷員類protected:float CommRate;/按銷售額提取酬金的百分比int Sales;/當月銷售額publi
17、c:Salesman();/構造函數void SetSales(int sl); /設置銷售額函數void pay();/計算月薪函數void promote(int);/升級函數;#endif / !defined(AFX_SALESMAN_H_F9CEA833_1587_4CDD_BE4F_E70466FBA116_INCLUDED_)1.4銷售經理類由 SalesManager,pay,promote具體代碼如下:/ SalesManager.h#if !defined(AFX_SALESMANAGER_H_DBCF532E_2CD0_4CCA_9C12_4861631B04EB_INC
18、LUDED_)#define AFX_SALESMANAGER_H_DBCF532E_2CD0_4CCA_9C12_4861631B04EB_INCLUDED_#if _MSC_VER > 1000#pragma once#endif / _MSC_VER > 1000#include "Manager.h"#include "Salesman.h"class Salesmanager:public Manager,public Salesman /銷售經理類public:Salesmanager();/構造函數void pay();/計算月
19、薪函數void promote(int);/升級函數;#endif / !defined(AFX_SALESMANAGER_H_DBCF532E_2CD0_4CCA_9C12_4861631B04EB_INCLUDED_)1.5技術員類由Technician,hourlyRate,Workhours,SetWorkhours,pay,promote具體代碼如下:/ Technician.h#if !defined(AFX_TECHNICIAN_H_9BF81E1E_3383_453E_AB0D_BAF4B6E9DAEC_INCLUDED_)#define AFX_TECHNICIAN_H_9B
20、F81E1E_3383_453E_AB0D_BAF4B6E9DAEC_INCLUDED_#if _MSC_VER > 1000#pragma once#endif / _MSC_VER > 1000#include "Employee.h"class Technician:virtual public CEmployee/兼職技術人員類private:float hourlyRate;/每小時酬金int Workhours;/當月工作時數public:Technician();/構造函數void SetWorkhours(int wh); /設置工作時數函數vo
21、id pay();/計算月薪函數void promote(int);/升級函數;#endif / !defined(AFX_TECHNICIAN_H_9BF81E1E_3383_453E_AB0D_BAF4B6E9DAEC_INCLUDED_)2、 模塊功能的實現2.0登陸:創建passdlg,實現登錄窗口的用戶名和密碼,具體代碼如下:BOOL CMy1207020401App:InitInstance()AfxEnableControlContainer();int nCount=0;while(nCount<3)Password passdlg;if(passdlg.DoModal(
22、)=IDOK)if(strcmp(passdlg.m_username,"凌偉恒")!=0)|(strcmp(passdlg.m_password,"1207020401")!=0)MessageBox(NULL,"用戶名或口令錯誤,請重試","錯誤信息",MB_OK|MB_ICONERROR);nCount+;elsebreak;Elsereturn FALSE;if(nCount>=3)MessageBox(NULL,"口令輸入已超過三次,請退出!","錯誤信息",
23、MB_OK|MB_ICONERROR);return FALSE;2.1信息輸入:利用Input,實現信息的輸入,具體代碼如下:void CMy1207020401_View:OnMENUITEMInput() / TODO: Add your command handler code here Manager m1;Technician t1;Salesmanager sm1;Salesman s1;/char name20;vector <CEmployee *> vchar;vchar.push_back(&m1);vchar.push_back(&t1);v
24、char.push_back(&sm1);vchar.push_back(&s1);CEmployee ed;if(ed.DoModal()=IDOK)vector<CString> vread; vread.push_back(ed.m_Manager); vread.push_back(ed.m_Technician); vread.push_back(ed.m_Salesmanager); vread.push_back(ed.m_Salesman); int i; for(i=0;i<4;i+)vchari->SetName(char*) (LP
25、CTSTR)vreadi);/設置姓名 vchari->promote(i);/升級 t1.SetWorkhours(ed.m_Workhours); /設置工作時間 sm1.SetSales(ed.m_Allsales);/設置本月的銷售總額 s1.SetSales(ed.m_Sales);/設置本月銷售額 fstream file;/創建一個輸出文件流對象file.open("Employee.txt",ios:out);/m1.pay(); t1.pay(); sm1.pay(); s1.pay(); for(i=0;i<4;i+) vchari->
26、pay(); /計算月薪file<<vchari->GetName()<<", 編號:"<<vchari->GetindividualEmpNo()<<", 級別:"<<vchari->Getgrade()<<"級, 本月工資"<<vchari->GetaccumPay()<<endl;/m1.pay(); /file<<(char*) (LPCTSTR)vread0<<",編號:&
27、quot;<<m1.GetindividualEmpNo()<<m1.GetaccumPay();/vchari->GetName();/.write(reinterpret_cast<char *>(t1.GetaccumPay(),10);file.close();MessageBox("信息存儲完畢!");else MessageBox("信息沒存儲并已退出!");/ifstream ofile("employee.txt",ios:out);class FileException pu
28、blic: FileException() : message( "File is not created!" ) const char *what() const return message; private: const char *message;2.2信息輸出:利用Output,實現信息的輸出,具體代碼如下:void CMy1207020401_View:OnMENUITEMOutput() / TODO: Add your command handler code hereifstream infile("Employee.txt",ios:
29、in);/創建一個輸入文件流對象try if (!infile) throw FileException(); catch ( FileException fe ) / exception handler MessageBox(fe.what(); /" << fe.what() << 'n' exit(0); CClientDC dc(this);char line101;for(int i=0;i<4;i+)infile.getline(line,100);/從文件讀入人員信息CString c_str;c_str.Format(&q
30、uot;%s",line); /轉換為字符串dc.TextOut(120,80,"人員信息管理系統:");dc.TextOut(120,100+30*i,c_str);infile.close();2.3信息查詢:利用Query,實現信息的查詢,具體代碼如下:void CMy1207020401_View:OnMENUITEMQuery() / TODO: Add your command handler code herethis->OnInitialUpdate();ifstream infile("Employee.txt",ios
31、:in);/創建一個輸入文件流對象if(!infile) MessageBox(" 無人員信息!");elseCQuery ed; /聲明查詢對話框對象if(ed.DoModal()=IDOK)/調用查詢對話框 char line10101;BOOL flag=FALSE; CString c_str,name_str,name1; CQuery pDlg; for(int i=0;i<4;i+)infile.getline(linei,100); /從文件讀入人員信息 c_str.Format("%s",linei); /轉換為字符串 name_
32、str=c_str.Left(c_str.Find(',');/提取姓名if(!name_str.Compare(ed.m_Queryname)/與查詢名比較flag=TRUE;pDlg.m_Queryresult+=c_str+"rn" if(flag=TRUE) if(MessageBox(name1=ed.m_Queryname+"被查詢到,要顯示該人員信息嗎?")!=IDYES)pDlg.m_Queryname = ed.m_Queryname;pDlg.DoModal();/調用顯示對話框 if(flag=FALSE) Mess
33、ageBox("查無此人!");infile.close();2.4信息刪除:利用Xxsc,實現信息的刪除,具體代碼如下:void CMy1207020401_View:OnXxsc() / TODO: Add your command handler code herethis->OnInitialUpdate();ifstream infile("Employee.txt",ios:in);/創建一個輸入文件流對象try if (!infile) throw FileException(); catch ( FileException fe )
34、 / exception handler MessageBox(fe.what(); /" << fe.what() << 'n' exit(0); CXXSC ed; /聲明刪除對話框對象if(ed.DoModal()=IDOK)/調用刪除對話框 char line4101;int a4;bool flag=FALSE; for(int i=0;i<4;i+)infile.getline(linei,100); /從文件讀入人員信息 CString c_str,name_str; c_str.Format("%s",
35、linei); /轉換為字符串 name_str=c_str.Left(c_str.Find(',');/提取姓名if(!name_str.Compare(ed.m_sczxm)/與查詢名比較ai=i;flag=TRUE;infile.close();if(flag=FALSE) MessageBox("并無此人!");return; ofstream ofile("Employee.txt",ios:out);for(int j=0;j<4;j+)if(j!=a1&&j!=a2&&j!=a3&
36、;&j!=a0) ofile<<linej<<endl; ofile.close(); MessageBox("此人信息已刪除!");五、存在的問題與不足此程序運用的是比較簡單的知識,由于所學知識較有限,只能片面加入4個簡單的對話框,而對其具體的代碼意思并不是很清楚,又不能去運用數據庫的知識,且對鏈表的知識掌握不足,從而也沒能加進去一些更有創新的思想。查詢模塊有很大的局限性,比如說輸入兩個人名相同的信息,在查詢時可能找不到自己想要的人員的信息。作為一個管理系統,應該設置一個登陸界面,當用戶輸入用戶名和密碼后才能進去。但是由于本人能力有限,暫時還不能實現這一功能。本系統不能對多個員工的信息進行處理。如果公司雇來新的員工,本系統無法實現添加員工信息,這是一個很大的缺陷。六、課程設計中的感想 回顧起此次課程設計,至今我仍感慨頗多,的確,從理論到實踐,在整整兩星期的日子里,可以說得是苦多于甜,但是可以學到很多很多的的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 居住房屋裝修合同協議書
- 玻璃安裝合同協議
- 防雷合同協議作用
- 訓練合同協議
- 車輛解除合同協議書范本
- 購房合同補償協議
- 工藝品供貨協議合同范本
- 個人家政保姆合同協議書
- 銷售返利合同協議
- 因孕期續簽勞動合同協議
- 2024年新疆財經大學招聘事業編制人員真題
- 2025年4月版安全法律法規標準文件清單
- 2025年合肥高新國有房屋租賃經營有限公司社會招聘14人筆試參考題庫附帶答案詳解
- 品管圈PDCA改善案例-降低住院患者跌倒發生率
- 山東省自然科學基金申報書-面上項目
- 工程造價咨詢服務投標方案(技術方案)
- 量與計量單位的整理與復習
- 人教版小學道德與法治《開天辟地的大事變》教學設計
- 員工工資條模板
- 國開電大-工程數學(本)-工程數學第4次作業-形考答案
- 2018年貴州省黔南州中考英語試題及答案
評論
0/150
提交評論