公司人员信息管理系统课程设计论文.doc

上传人:laozhun 文档编号:3789964 上传时间:2023-03-22 格式:DOC 页数:35 大小:1.79MB
返回 下载 相关 举报
公司人员信息管理系统课程设计论文.doc_第1页
第1页 / 共35页
公司人员信息管理系统课程设计论文.doc_第2页
第2页 / 共35页
公司人员信息管理系统课程设计论文.doc_第3页
第3页 / 共35页
公司人员信息管理系统课程设计论文.doc_第4页
第4页 / 共35页
公司人员信息管理系统课程设计论文.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《公司人员信息管理系统课程设计论文.doc》由会员分享,可在线阅读,更多相关《公司人员信息管理系统课程设计论文.doc(35页珍藏版)》请在三一办公上搜索。

1、VC+ 课程设计报告公司人事管理系统学生姓名: 学 号: 年级专业:2007级信息与计算科学班 级: 指导老师: 学 院:数学与计算科学学院 目 录1 前言32 需求分析43 概要设计43.1系统功能模块设计43.2 流程图53.3程序运行平台64详细设计64.1公司人员信息类的设计64.2 数据的存储94.3模块详细分析94.4 整体界面的实现104.5 系统登录的实现124.6 添加.查询.删除和修改记录的实现184.7(特色)用户注册的实现275 测试分析326 心得体会32参考文献33致 谢33公司人员信息管理系统摘 要本次课程设计任务是通过编写一个公司人员信息管理系统,学习用Visu

2、al C+ 6.0开发简单的管理系统。采用Visual C+ 6.0软件为主要开发工具。本系统主要完成对公司员工情况和公司信息的管理,包括人员信息的添加、修改、删除等。系统还可以完成对各类信息的浏览、查询、添加、删除、修改、等功能。由于我们还没有学习数据库,所以在有关大量人员信息存储时,次系统显得心有余而力不足。 系统的核心是引用I/O流和文本处理来存储和修改公司人员的信息联系,每一个动作都可能影响到其它的功能,还有数据的改变,当完成对数据的操作时系统会自动地完成数据库的修改。关键字:VC+6.0;公司人员信息管理系统;模块化设计;i/O流;1 前言使用计算机管理人员信息,不但可以大量节省时间

3、、人力、财力、物力,而且能更全面有效地掌握公司的基本情况,及时获取最新而又准确的资料和信息。此课程设计就是这样一个管理公司人员信息的系统,其功能与实现方面有比较好的的针对性和实用性。软件是在Visual c+平台上开发的,采用i/o流文本存储数据和信息,作为虚拟的数据库。利用i/o流文本操作语言,能比较方便地实现对人员信息的操作与管理。系统登陆功能是系统的核心之一,在系统中有用户注册,用户注销,用户退出,其目的都是为了方便用户使用。系统有完整的用户对比功能,检查是否用户名已被注册。2 需求分析Visual C+6.0的MFC提供了大量的类库函数强大支持。开发一个人员信息管理系统,可以实现人员信

4、息的管理。并提供新信息输入,现有公司人员信息查询功能,对记录的删除修改等工作。公司人员管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据信息的建立和保存以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。3 概要设计公司人员管理系统的概要设计分成两部分,首先是简要介绍系统功能模块设计,其次是简要介绍流程图。3.1系统功能模块设计系统功能划分为九个模块,其流程图如图3-1。各模块功能简要介绍如下: 图3-1 系统功能模块流程图1、用户注册:添加一个系统账户,当输入的用户名未被注册且密码两次输入相同则

5、注册成功。2、系统注销:可以注销当前用户,登陆另一个账户。3、系统退出:退出公司人员管理信息系统。4、信息输入:输入公司职员的基本信息。5、信息输出:输出公司所有职员的信息。6、信息查询:查询制定人员的信息。7、信息修改:修改指定人员的信息。8、信息删除:删除指定人员的信息。9、信息清空:清空所有人员的信息。3.2 流程图系统操作流程图如图3-2。图3-2 功能流程图3.3 程序运行平台开发工具: Visual C+运行环境:Windows 9x、Windows NT/2000、Windows XP4 详细设计公司人员管理系统的详细设计分成七部分,分别是公司人员信息类的设计、数据的存储、模块详

6、细分析、整体界面的实现、系统登录的实现、添加.查询.删除和修改记录的实现以及(特色)用户注册的实现。下面分别加以介绍,其中某些部分会将具体代码列出。4.1.公司人员信息类的设计公司人员管理系统主要的人员信息主要分为技术员、销售员、经理以及销售经理等四类人员,为此设计了五个人员信息类分别是employee(作为基类)、technician、salesman、manager以及salesmanager,后四个类都公有地继承了employee。下面是上述类的设计,即各类的声明,放在了employee.h文件中,而其中所有成员函数的设计见附件。/employee.hclass employeeprot

7、ected:char name20;/姓名int individualEmpNo;/个人编号int grade;/级别float accumPay;/月薪总额static int employeeNo;/本公司职员编号目前最大值public:employee();/构造函数employee();/析构函数virtual void pay()=0;/计算月薪函数(纯虚函数)virtual void promote(int increment=0);/升级函数(虚函数)void SetName(char *); /设置姓名函数char * GetName(); /提取姓名函数int Getindi

8、vidualEmpNo(); /提取编号函数int Getgrade(); /提取级别函数float GetaccumPay(); /提取月薪函数;class technician:public employee/兼职技术人员类private:float hourlyRate;/每小时酬金int workHours;/当月工作时数public:technician();/构造函数void SetworkHours(int wh); /设置工作时数函数void pay();/计算月薪函数void promote(int);/升级函数;class salesman:virtual public e

9、mployee/兼职推销员类protected:float CommRate;/按销售额提取酬金的百分比float sales;/当月销售额public:salesman();/构造函数void Setsales(float sl); /设置销售额函数void pay();/计算月薪函数void promote(int);/升级函数;class manager:virtual public employee/经理类protected:float monthlyPay;/固定月薪数public:manager();/构造函数void pay();/计算月薪函数void promote(int);

10、/升级函数;class salesmanager:public manager,public salesman /销售经理类public:salesmanager();/构造函数void pay();/计算月薪函数void promote(int);/升级函数;4.2.数据的存储 根据上面所介绍的本系统的各个模块及其需要实现的功能,由于还没有学习数据库,所以我们只能应用i/o流文本操作来存储信息:1密码表 用于保存用户账户的基本信息,系统通过该表对账户的用户名和密码的基本信息进行查询,并比较用户名和密码是否正确。2公司人员信息表 用于保存公司职员的基本信息。4.3模块详细分析1. 系统登录注册

11、和注销系统开始运行就出现系统登录对话框,密码正确后才能进入主界面(默认用户名:金钊,密码为123),用户还可以注销,注册和退出功能。自己认为有特色的是注册功能,由于没有数据库做后台,只好多次重复i/o流操作,调用文本框。用来完成用户名的查找、对比,和用户的添加。2. 显示模块显示模块将输出所有职员的主要资料 。3. 修改模块首先由用户输入要修改的职员的姓名,然后系统用修改函数查找,显示该名职员的资料,然后系统提示用户输入需要修改的项目和新的资料。4. 查找模块首先由用户输入要查找的职员姓名,然后系统用查找函数查找,然后系统就调用输出函数,输出所查找的职员资料。5. 删除模块首先由用户输入要删除

12、的单个职员姓名,然后调用删除函数,删除该名职员的资料。6. 清空模块系统将会把所有职员的资料全部删除,将链表清空。4.4整体界面的实现系统使用VC+6.0的MFC提供的主对话框作为整体界面,添加了一个下拉菜单,菜单中列出了六个功能按钮,见图4-1所示。 图 4-1 系统主界面程序的具体实现部分放整个工程(MFC)的CMy0701_33App类中的成员函数InitInstance()中。具体代码清单如下所示: BOOL CMy0701_33App:InitInstance()CLoginDlg login;if(login.DoModal()=IDOK) /如果登录成功MB_INFO(欢迎进入公

13、司人员信息管理系统!);/CMy0701_33App ed;/ed.OnAppAbout;AfxEnableControlContainer();/ Standard initialization/ If you are not using these features and wish to reduce the size/ of your final executable, you should remove from the following/ the specific initialization routines you do not need.#ifdef _AFXDLLEnab

14、le3dControls();/ Call this when using MFC in a shared DLL#elseEnable3dControlsStatic();/ Call this when linking to MFC statically#endif/ Change the registry key under which our settings are stored./ TODO: You should modify this string to be something appropriate/ such as the name of your company or

15、organization.SetRegistryKey(_T(Local AppWizard-Generated Applications);LoadStdProfileSettings(); / Load standard INI file options (including MRU)/ Register the applications document templates. Document templates/ serve as the connection between documents, frame windows and views.CSingleDocTemplate*

16、pDocTemplate;pDocTemplate = new CSingleDocTemplate(IDR_MAINFRAME,RUNTIME_CLASS(CMy0701_33Doc),RUNTIME_CLASS(CMainFrame), / main SDI frame windowRUNTIME_CLASS(CMy0701_33View);AddDocTemplate(pDocTemplate);/ Parse command line for standard shell commands, DDE, file openCCommandLineInfo cmdInfo;ParseCom

17、mandLine(cmdInfo);/ Dispatch commands specified on the command lineif (!ProcessShellCommand(cmdInfo)return FALSE;/ The one and only window has been initialized, so show and update it.m_pMainWnd-ShowWindow(SW_SHOW);m_pMainWnd-UpdateWindow();return TRUE;else return false;4.5 系统登录的实现系统登录是设计了一个对话框,对应的对话

18、框类名为CloginDlg。具体设计见图4-2以及相应的代码,代码清单放在了CloginDlg的成员函数OnOK()内。 图 4-2 系统登录的实现void CLoginDlg:OnOK() / TODO: Add extra validation hereCString username,password; /定义两个字符串变量m_strUserName.GetWindowText(username); /讲文本框中的值赋给username;m_strPassword.GetWindowText(password); /讲文本框中的值赋给password;/获得账号信息,从xinxi.txt

19、中获取,确定账号个数ifstream fin;fin.open(xinxi.txt);if(fin.fail()MB_INFO(打开数据文件错误!文件已被损坏!);exit(1);string xinxigeshu,geshu;char lline100;fin.getline(lline,100);xinxigeshu=lline;int xx=xinxigeshu.find(共有,0);int yy=xinxigeshu.find(个账号,0);geshu=xinxigeshu.substr(xx+4,yy-1);int znum=atoi(geshu.c_str();fin.close(

20、);/比较账号和密码,来确定是否登录成功 fin.open(code.txt); if(fin.fail()MB_ERROR(没有注册的用户!);exit(1);char line10101;string strname,strpassword;strname=username.GetBuffer(0);strpassword=password.GetBuffer(0);string str1,str2,stry;BOOL flag=false,flagname=false,flagpassword=false;for(int i=0;iznum;i+)fin.getline(linei,10

21、0); /从文件读入人员信息stry=linei;int loc1,loc2;loc1=stry.find(用户名:,0);loc2=stry.find(密码:,0);str1=stry.substr(loc1+7,loc2-8);str2=stry.substr(loc2+5);if(!pare(strname) flagname=true;if(!pare(strpassword)flagpassword=true;if(flagname=true&flagpassword=true)flag=true;if(flag=true)MB_INFO(登陆成功!);fileinfo info;i

22、nfo.setfileinfo(1);CDialog:OnOK();elseif(flagname=false)MB_WARNING(用户名不存在,请重新输入!);m_strPassword.SetWindowText();m_strUserName.SetWindowText();elseMB_WARNING(密码错误,请重新输入!);m_strPassword.SetWindowText();/m_strUserName.SetWindowText();fin.close();void CLoginDlg:OnCancel() / TODO: Add extra cleanup hereM

23、B_QUERY(真的要退出系统吗?);CDialog:OnCancel();exit(1);BOOL CLoginDlg:OnEraseBkgnd(CDC* pDC) /设置对话框背景/ TODO: Add your message handler code here and/or call defaultCRect rect;CPaintDC dc(this);GetClientRect(&rect);CDC dcMem;dcMem.CreateCompatibleDC(&dc);CBitmap bmpBKG;bmpBKG.LoadBitmap(IDB_BITMAP_DENGLU);/载入位

24、图,IDB_DLGBITMAP是在ResourceView里边导入的位图IDBITMAP bmp;bmpBKG.GetBitmap(&bmp);CBitmap* pOldBMP = dcMem.SelectObject(&bmpBKG);dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);return TRUE;4.6 添加.查询.删除和修改记录的实现这部分设计了四个对话框,见图4-3,对应的对话框类名分别为CEmployeeInfoDlg 、CqueryDlg、Cs

25、hanchuDlg以及CxiugaiDlg1。具体设计见图4-2以及相应的代码,对应代码清单分别放在了CMy0701_33View的成员函数:OnInputData()、OnChaxunData()、OnShanchuData()以及OnXiugaiData()内。图 4-3 添加.删除和修改的实现void CMy0701_33View:OnInputData()/公司人员信息输入 access=finfo.getfileinfo();if(access=false)MB_INFO(请您先登录);CLoginDlg ed;if(ed.DoModal()=IDOK)goto loop1;else

26、/ TODO: Add your command handler code hereloop1:manager m1;technician t1;salesmanager sm1;salesman s1;vector vchar;vchar.push_back(&m1);vchar.push_back(&t1);vchar.push_back(&sm1);vchar.push_back(&s1);CEmployeeInfoDlg ed;if(ed.DoModal()=IDOK)vector vread; vread.push_back(ed.m_manager); vread.push_bac

27、k(ed.m_technician); vread.push_back(ed.m_salesmanager); vread.push_back(ed.m_tuixy); int i; for(i=0;iSetName(char*) (LPCTSTR)vreadi);/设置姓名 vchari-promote(i);/升级 t1.SetworkHours(ed.m_hour); /设置工作时间 sm1.Setsales(ed.m_zsales);/设置本月的销售总额 s1.Setsales(ed.m_sales);/设置本月销售额 ofstream ofile(employee.txt,ios:o

28、ut);/创建一个输出文件流对象 for(i=0;ipay(); /计算月薪 ofileGetName(), 编号:GetindividualEmpNo() , 级别:Getgrade()级, 本月工资GetaccumPay() OnInitialUpdate();system(cls);ifstream infile(employee.txt,ios:in);/创建一个输入文件流对象try if (!infile) throw FileException(); catch ( FileException fe ) / exception handler MB_ERROR(fe.what();

29、 / fe.what() n; exit(0); CQueryDlg ed; /声明查询对话框对象if(ed.DoModal()=IDOK)/调用查询对话框 char line10101;BOOL flag=FALSE; for(int i=0;iOnInitialUpdate();ifstream infile(employee.txt,ios:in);tryif (!infile) throw FileException();catch ( FileException fe )MB_ERROR(fe.what();exit(0);char line4101;int j4;BOOL flag

30、=FALSE;for(int i=0;i4;i+)infile.getline(linei,100);CString c_str1,name_str;c_str1.Format(%s,linei);name_str=c_str1.Left(c_str1.Find(,);if(!name_str.Compare(ed.m_strxiuname1)flag=TRUE;ji=i;if(flag=FALSE) MB_ERROR(并无此人!);elseCxiugaiDlg ed;if(ed.DoModal()=IDOK)infile.close();ofstream ofile(employee.txt

31、,ios:out);for(i=0;i4;i+)if(i!=j0&i!=j1&i!=j2&i!=j3)ofilelineiendl;elseofileed.m_strxiuname.GetBuffer(12), 编号:ed.m_strxiuno , 级别:ed.m_strxiuji级, 本月工资ed.m_strxiugong OnInitialUpdate();ifstream infile(employee.txt,ios:in);/创建一个输入文件流对象try if (!infile) throw FileException(); catch ( FileException fe ) /

32、exception handler MB_INFO(fe.what(); / fe.what() n; exit(0); CshanchuDlg ed; /声明删除对话框对象if(ed.DoModal()=IDOK)/调用删除对话框 char line4101;int a4;bool flag=FALSE; for(int i=0;i4;i+)infile.getline(linei,100); /从文件读入人员信息 CString c_str,name_str; c_str.Format(%s,linei); /转换为字符串 name_str=c_str.Left(c_str.Find(,)

33、;/提取姓名if(!name_str.Compare(ed.m_strshancname)/与查询名比较ai=i;flag=TRUE;infile.close();if(flag=FALSE) MB_ERROR(并无此人!);return; ofstream ofile(employee.txt,ios:out);for(int j=0;j4;j+)if(j!=a1&j!=a2&j!=a3&j!=a0) ofilelinejendl; ofile.close(); MB_INFO(此人信息已删除!);4.7(特色)用户注册的实现此部分对用户注册设计了一个对话框,见图4-4,对应的对话框类名为Czhuce,具体代码清单CMy0701_33View的成员函数OnZhuceinfo()中。图 4-4 年级成绩的实现待添加的隐藏文字内容2/特色函数,注册用户void CMy0701_33View:OnZhuceinfo() / TODO: Add your command handler code heresystem(cls);loop9:CZhuce ed;bool boolzhuce=fals

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号