免费预览已结束,剩余15页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录一、需求与功能分析 1二、系统总体框架 XX三、逻辑设计 XX四、类的设计与分析 XX五、数据库表结构设计 XX六、特色算法分析 XX七、功能测试 XX八、存在的不足与对策 XX九、程序源代码 XX一需求与功能分析一员工管理系统的简要分析:本系统为员工管理系统,员工管理系统是针对财务管理部门的大量业务处理工作而开发的管理软件。根据用户的要求,实现人员的基本信息,人员的离职,和人员的员工调整的基本情况的管理,员工管理等方面功能。用户通过相关的操作,输入一些员工的姓名,员工号,工资,电话,部门和生日等信息,由系统相应的生成和调整相关文件记录。用户可以在日后的读取这些信息。也可以修改和删除信息。员工管理系统力求最简单的使客户方便快捷的管理这些繁琐的数据。二开发目标:本系统的开发目标是对企业中员工管理的各种信息包括(员工基本信息或员工随人员调整而变动)进行更加规范和科学的管理和应用。三员工管理系统设计:1一个登陆界面。/帐号为xingyue 密码为xingyue2员工的资料的输入。3员工修改功能。4新员工基本信息添加管理。二系统总体框架:工资管理系统显示信息添加信息修改信息删除信息登陆框三逻辑设计1显示信息 为了对数据能够作全局的查看,在本功能使用list控件将所有文件信息显示出来,因为实验需要,本系统用了文件的存储方式。 2添加信息添加信息使用的是末尾添加的方法将信息在文件的末尾添加所需的文件信息。3修改资料修改资料是先在list控件中选择你要修改的员工,相应的信息则会自动的显示在编辑框中,然后在编辑框里修改所需的资料。在框中读取字符然后把改字符替换回文件里。4删除人员删除的做法通过间接文件,通过一句一句的搜索把不需要修改的信息写入间接文件里,在把间接文件里的信息写回原文件里。达到删除的功能。四类的设计与分析为了方便读取文件里的数据,本程序使用一个类作为读取信息的变量整体,所以我建立了一个类。此类保存文件里员工的基本信息,使用时只要查找该类中的某个属性就可以知道员工的属性了。本系统是基于MFC 开发的,除了保存信息的类之外,还建立了3个对话框类。第一个是完成个登陆功能,里面只有帐号和密码2个属性,用户使用软件前先要登陆成功才可以使用。另外一个就是本系统的重点,也是核心。系统所有功能都在该类中完成,此对话框有查看,修改,添加,删除功能。1 SQL类#includeafxdb.hclass SQLpublic:CDatabase m_database;CRecordset rs;此类用于连接数据库使用五数据库表结构设计message类说明表名称属性说明mnum数据成员记录员工工号mname数据成员记录员工名字mpay数据成员记录员工收入mtel数据成员记录员工电话通信mbirthday数据成员记录员工生日mdept数据成员记录员工部门2 USER_PSW类名称属性说明TMS_USER数据成员保存密码TMS_PSWD数据成员保存帐号OnOK()成员方法登陆OnCANCEL()成员方法退出六特色算法分析 个人认为使用的一个比较好的方法是:编辑框能够通过点击list表的内容获取相应的内容,以方便修改和删除。七功能测试以下为测试时的图片:(一)登陆图1 登陆框(二).进入主页面。图2 进入主页面(三)点击查看,查看所有信息 图3 点击查看获取全部信息(四)点击list插件获取单条信息到编辑框中。 图4,点击list获取单条信息(五)修改图5 将编辑框中的信息修改之后点击修改将信息修改(六)点击添加,添加新员工信息图6 将信息输入编辑框中 添加新员工(七)删除图7 删除单条信息八存在的不足与对策由于本人编程水平有限及面临多门课程的考试而时间不足等方面的原因,在此程序中,其功能比较单一,美工方面没有像一些同学那样使用图画来增加程序的美观,这些不足请老师多多谅解。但是我将在以后的学习中不断改进,继续学习数据库相关知识,不断的提高程序设计水平。 九程序源代码软件登陆框代码:#include stdafx.h#include xixi.h#include xixiDlg.h#includeSQL.h#includeMainframe.hSQL sql;BOOL CXixiDlg:OnInitDialog()CDialog:OnInitDialog();/ Add About. menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automatically/ when the applications main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a controlvoid CXixiDlg:OnButton1() / TODO: Add your control notification handler code hereint flag=0;UpdateData(true);/*while(m_username.GetLength()20) m_username=m_username+ ;while(m_password.GetLength()20) m_password=m_password+ ;*/打开数据库if (sql.m_database.IsOpen()sql.m_database.Close();CString str;str=Driver=SQL Server;Server=(local);Database=train;uid=sa;pwd=;sql.m_database.OpenEx(str,0);/赋记录集地址值给rs以便使用,打开记录集sql.rs.m_pDatabase=&sql.m_database; CString str1=select * from USER_PSWD;sql.rs.Open(CRecordset:snapshot,str1,CRecordset:readOnly);while(!sql.rs.IsEOF()sql.rs.GetFieldValue(TMS_USER,str);if(str.Compare(m_username)=0)sql.rs.GetFieldValue(TMS_PSWD,str);if(str.Compare(m_password)=0)flag=1; CMainframe obj; obj.DoModal(); CDialog:OnCancel();sql.rs.MoveNext();if(flag=0)MessageBox(登陆失败!);void CXixiDlg:OnCancelButton() / TODO: Add your control notification handler code hereCDialog:OnCancel();员工管理系统主要页面主要内容:#include stdafx.h#include xixi.h#include Mainframe.h#include sql.h#include addmessage.hextern SQL sql;void CMainframe:OnSelectButton() / TODO: Add your control notification handler code here int i=0;m_listshow.DeleteAllItems(); /按就删除上一次显示的信息if (sql.m_database.IsOpen()sql.m_database.Close();CString str1;str1=DRIVER=SQL Server;SERVER=(local);Database=train;UID=sa;PWD=;sql.m_database.OpenEx(str1,0);sql.rs.m_pDatabase=&sql.m_database;str1=select * from message;sql.rs.Open(CRecordset:snapshot,str1,CRecordset:readOnly);while (!sql.rs.IsEOF()sql.rs.GetFieldValue(mname,str1); /将帐号数据库中的值赋值给str;m_listshow.InsertItem(i,str1); /在此i为第i列的行号;str数值 sql.rs.GetFieldValue(mnum,str1);m_listshow.SetItemText(i,1,str1); /注,第一列使用insertitem()插入数值,但是第二列要是用setitemtext()函数插入数值sql.rs.GetFieldValue(mpay,str1);/m_listshow.InsertItem(i,2,str1);m_listshow.SetItemText(i,2,str1);sql.rs.GetFieldValue(mtel,str1); m_listshow.SetItemText(i,3,str1);sql.rs.GetFieldValue(mdept,str1); m_listshow.SetItemText(i,4,str1);sql.rs.GetFieldValue(mbirthday,str1);m_listshow.SetItemText(i,5,str1);i+;sql.rs.MoveNext();void CMainframe:OnAddButton() / TODO: Add your control notification handler code hereCaddmessage a;a.DoModal();void CMainframe:OnDeleteButton() / TODO: Add your control notification handler code hereUpdateData(true);CString str;CString name;if (sql.m_database.IsOpen()sql.m_database.Close();str=Driver=SQL SERVER;SERVER=(Local);Database=train;UID=sa;PWD=;sql.m_database.OpenEx(str);sql.rs.m_pDatabase=&sql.m_database;str=select * from message;sql.rs.Open(CRecordset:snapshot,str,CRecordset:readOnly); m_name.GetWindowText(name); /将m_name的值赋值给name变量 str=delete from message where mname=+name+;sql.m_database.ExecuteSQL(str);if (sql.m_database.CanUpdate()MessageBox(删除成功!);elseMessageBox(删除失败!); CMainframe:OnSelectButton();void CMainframe:OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code hereint di;di=m_listshow.GetNextItem(-1,LVNI_ALL|LVNI_SELECTED); /*来获取当前选中的行(Item)如果该函数还回的值是-1, 说明没有行(item)被选中,如果有行被选中,还回的是一个大于等于0的整数值,*/CString str;if (sql.m_database.IsOpen()sql.m_database.Close();str=DRIVER=SQL SERVER;SERVER=(Local);Database=train;UID=sa;PWD=;/str=DRIVER=SQL Server;SERVER=(local);Database=student;UID=sa;PWD=;sql.m_database.OpenEx(str);sql.rs.m_pDatabase=&sql.m_database;str=select * from message;sql.rs.Open(CRecordset:snapshot,str,CRecordset:readOnly);int i=0;while (idi)sql.rs.MoveNext();i+;sql.rs.GetFieldValue(mname,str); /从数据库的MESSAGE表中的mname这列中取值到strm_name.SetWindowText(str);sql.rs.GetFieldValue(mnum,str); /将str的值赋值给m_namem_num.SetWindowText(str);sql.rs.GetFieldValue(mpay,str);m_pay.SetWindowText(str);sql.rs.GetFieldValue(mtel,str);m_tel.SetWindowText(str);sql.rs.GetFieldValue(mdept,str);m_dept.SetWindowText(str);sql.rs.GetFieldValue(mbirthday,str);m_birthday.SetWindowText(str);*pResult = 0;BOOL CMainframe:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization here/注:只有在BOOL CMainframe:OnInitDialog()中初始化列属性,否则每次刷新一次就会多一次表的列m_listshow.InsertColumn(0,姓名);m_listshow.InsertColumn(1,员工号);m_listshow.InsertColumn(2,工资);m_listshow.InsertColumn(3,联系电话);m_listshow.InsertColumn(4,工作部门);m_listshow.InsertColumn(5,出生日期);RECT rectmessage; /声明一个RECT类型的变量m_listshow.GetWindowRect(&rectmessage);/取得list Control对象m_listshow的宽赋值给rectmessage并进行匹配int widmessage;widmessage=rectmessage.right-rectmessage.left;m_listshow.SetColumnWidth(0,widmessage/6);m_listshow.SetColumnWidth(1,widmessage/6);m_listshow.SetColumnWidth(2,widmessage/6);m_listshow.SetColumnWidth(3,widmessage/6);m_listshow.SetColumnWidth(4,widmessage/6);m_listshow.SetColumnWidth(5,widmessage/6);return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CMainframe:OnChanceButton() / TODO: Add your control notification handler code hereUpdateData(true); CString str;CString name,num,pay,tel,dept,birthday;if(sql.m_database.IsOpen()sql.m_database.Close();str=Driver=SQL SERVER;SERVER=(Local);Database=train;UID=sa;PWD=; sql.m_database.OpenEx(str,0);sql.rs.m_pDatabase=&sql.m_database;str=select * from message; sql.rs.Open(CRecordset:snapshot,str,CRecordset:readOnly); m_name.GetWindowText(name);/将m_name的值赋值给新定义的变量namem_num.GetWindowText(num);m_pay.GetWindowText(pay);m_tel.GetWindowText(tel);m_dept.GetWindowText(dept);m_birthday.GetWindowText(birthday); str=update message set mnum=+num+,mpay=+pay+,mtel=+tel+,mdept=+dept+,mbirthday=+birthday+where mname=+name+; sql.m_database.ExecuteSQL(str); if(sql.m_database.CanUpdate()MessageBox(更新成功!);elseMessageBox(更新失败!);CMainframe:OnSelectButton(); /运行IDC_SELECT_BUTTON()这个按钮void CMainframe:OnCancelButton() / TODO: Add your control notification handler code hereCDialog:OnCancel();添加模块#include stdafx.h#include xixi.h#include Mainframe.h#include sql.h#include addmessage.hextern SQL sql;void CMainframe:OnSelectButton() / TODO: Add your control notification handler code here int i=0;m_listshow.DeleteAllItems(); /按就删除上一次显示的信息if (sql.m_database.IsOpen()sql.m_database.Close();CString str1;str1=DRIVER=SQL Server;SERVER=(local);Database=train;UID=sa;PWD=;sql.m_database.OpenEx(str1,0);sql.rs.m_pDatabase=&sql.m_database;str1=select * from message;sql.rs.Open(CRecordset:snapshot,str1,CRecordset:readOnly);while (!sql.rs.IsEOF()sql.rs.GetFieldValue(mname,str1); /将帐号数据库中的值赋值给str;m_listshow.InsertItem(i,str1); /在此i为第i列的行号;str数值 sql.rs.GetFieldValue(mnum,str1);m_listshow.SetItemText(i,1,str1); /注,第一列使用insertitem()插入数值,但是第二列要是用setitemtext()函数插入数值sql.rs.GetFieldValue(mpay,str1);/m_listshow.InsertItem(i,2,str1);m_listshow.SetItemText(i,2,str1);sql.rs.GetFieldValue(mtel,str1); m_listshow.SetItemText(i,3,str1);sql.rs.GetFieldValue(mdept,str1); m_listshow.SetItemText(i,4,str1);sql.rs.GetFieldValue(mbirthday,str1);m_listshow.SetItemText(i,5,str1);i+;sql.rs.MoveNext();void CMainframe:OnAddButton() / TODO: Add your control notification handler code hereCaddmessage a;a.DoModal();void CMainframe:OnDeleteButton() / TODO: Add your control notification handler code hereUpdateData(true);CString str;CString name;if (sql.m_database.IsOpen()sql.m_database.Close();str=Driver=SQL SERVER;SERVER=(Local);Database=train;UID=sa;PWD=;sql.m_database.OpenEx(str);sql.rs.m_pDatabase=&sql.m_database;str=select * from message;sql.rs.Open(CRecordset:snapshot,str,CRecordset:readOnly); m_name.GetWindowText(name); /将m_name的值赋值给name变量 str=delete from message where mname=+name+;sql.m_database.ExecuteSQL(str);if (sql.m_database.CanUpdate()MessageBox(删除成功!);elseMessageBox(删除失败!); CMainframe:OnSelectButton();void CMainframe:OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code hereint di;di=m_listshow.GetNextItem(-1,LVNI_ALL|LVNI_SELECTED); /*来获取当前选中的行(Item)如果该函数还回的值是-1, 说明没有行(item)被选中,如果有行被选中,还回的是一个大于等于0的整数值,*/CString str;if (sql.m_database.IsOpen()sql.m_database.Close();str=DRIVER=SQL SERVER;SERVER=(Local);Database=train;UID=sa;PWD=;/str=DRIVER=SQL Server;SERVER=(local);Database=student;UID=sa;PWD=;sql.m_database.OpenEx(str);sql.rs.m_pDatabase=&sql.m_database;str=select * from message;sql.rs.Open(CRecordset:snapshot,str,CRecordset:readOnly);int i=0;while (idi)sql.rs.MoveNext();i+;sql.rs.GetFieldValue(mname,str); /从数据库的MESSAGE表中的mname这列中取值到strm_name.SetWindowText(str);sql.rs.GetFieldValue(mnum,str); /将str的值赋值给m_namem_num.SetWindowText(str);sql.rs.GetFieldValue(mpay,str);m_pay.SetWindowText(str);sql.rs.GetFieldValue(mtel,str);m_tel.SetWindowText(str);sql.rs.GetFieldValue(mdept,str);m_dept.SetWindowText(str);sql.rs.GetFieldValue(mbirthday,str);m_birthday.SetWindowText(str);*pResult = 0;BOOL CMainframe:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization here/注:只有在BOOL CMainframe:OnInitDialog()中初始化列属性,否则每次刷新一次就会多一次表的列m_listshow.InsertColumn(0,姓名);m_listshow.InsertColumn(1,员工号);m_listshow.InsertColumn(2,工资);m_listshow.InsertColumn(3,联系电话);m_listshow.InsertColumn(4,工作部门);m_listshow.InsertColumn(5,出生日期);RECT rectmessage; /声明一个RECT类型的变量m_listshow.GetWindowRect(&rectmessage);/取得list Control对象m_listshow的宽赋值给rectmessage并进行匹配int widmessage;widmessage=rectmessage.right-rectmessage.left;m_listshow.SetColumnWidth(0,widmessage/6);m_listshow.SetColumnWidth(1,widmessage/6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年病虫害绿色防控技术推广模式考核试卷
- 注册结构工程师(一级)混凝土结构裂缝控制验算考核试卷
- 2025年福建省厦门市校园招聘中小学幼儿园中职学校教师考试笔试模拟试题及答案解析
- 2026年上海市黄浦区教育系统公开招聘360名教师(第一批)考试笔试参考题库附答案解析
- 2026年中国铁路兰州局集团有限公司招聘普通高校毕业生468人笔试考试备考试题及答案解析
- 2026河北省气象局招聘应届毕业生10人(第2602号)笔试考试参考试题及答案解析
- 2025安徽滁州定远县总医院紧密型医共体招聘工作人员43人笔试考试参考题库及答案解析
- 2025四川乐山市市中区人民医院招聘编外工作人员9人笔试考试备考题库及答案解析
- 2025北京林业大学附属实验小学招聘2人笔试考试参考题库及答案解析
- 2025广东东莞市公安局塘厦分局警务辅助人员招聘20人(第二批)笔试考试备考题库及答案解析
- 水处理生产工(高级)职业技能鉴定考试题库(含答案)
- 2024年高考英语新课标II卷讲评课件
- 2025重庆双福农产品批发市场有限公司招聘综合办公室文员冻库管理员招商员等岗位22人笔试历年参考题库附带答案详解
- 企业社会责任与可持续发展管理
- 建筑工程冬期施工规程JGJ/T 104-2011
- 气体充装站建设项目可行性研究报告
- GB/T 5210-2006色漆和清漆拉开法附着力试验
- 传热学-第9章辐射计算
- 安全教育登记表(三 级)
- 干挂大理石施工合同
- 混凝土结构设计原理课程设计报告报告
评论
0/150
提交评论