数据库人事管理系统课程设计.docx

上传人:b****8 文档编号:30575921 上传时间:2023-08-16 格式:DOCX 页数:21 大小:434.25KB
下载 相关 举报
数据库人事管理系统课程设计.docx_第1页
第1页 / 共21页
数据库人事管理系统课程设计.docx_第2页
第2页 / 共21页
数据库人事管理系统课程设计.docx_第3页
第3页 / 共21页
数据库人事管理系统课程设计.docx_第4页
第4页 / 共21页
数据库人事管理系统课程设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

数据库人事管理系统课程设计.docx

《数据库人事管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《数据库人事管理系统课程设计.docx(21页珍藏版)》请在冰豆网上搜索。

数据库人事管理系统课程设计.docx

数据库人事管理系统课程设计

课程设计

课程名称数据库原理及应用

题目名称人事管理系统

学生学院应用数学学院

专业班级

学号

学生姓名

指导教师

 

2014年6月5日

目录

一、题目要求2

二、程序界面与操作演示2

1、登陆界面2

2、功能界面3

3、添加员工信息3

4、修改员工信息3

5、删除员工信息4

6、根据条件查询员工信息5

三、设计思路与制作过程6

1、系统构架图6

2、设计环境6

3、数据库的设计7

4、设置ODBC与SQLServe的连接7

5、建立应用程序11

6、主要功能模块的实现代码14

七、总结与体会17

一、题目要求

题目:

人事管理系统

内容要求:

(1)员工各种信息的输入,包括员工的基本信息、学历信息、婚姻状况信息和职称等;

(2)员工各种信息的修改;

(3)对于转出、辞职、辞退、退休员工信息的删除;

(4)按照一定的条件,查询,统计符合条件的员工信息;

(5)至少应该包括每个员工详细信息的查询,按婚姻状况查询、学历查询、工作岗位查询等;

(6)至少应该包括按学历、婚姻状况、岗位、参加工作时间等统计各自的员工信息。

 

二、程序界面与操作演示

1、登陆界面

打开系统后,会弹出登陆界面(我设置的账号是wu,密码是8):

当输入了不正确的账号密码后,则无法登陆:

2、功能界面

用管理员账号密码登陆后,会出现以下界面:

点击最后一个按钮“退出登陆”,则会返回到登陆界面,要求重新输入账号密码。

 

3、添加员工信息

在操作界面上,点击第一个按钮“添加员工”,输入员工信息后,按确定即可完成员工信息的添加:

 

4、修改员工信息

在操作界面上,点击第二个按钮“修改或删除员工信息”。

输入想要修改的员工的工号,点击按钮“查询”,即可在下面的员工信息栏显示该员工的信息,然后在对应的编辑框中更改员工的信息,更改完毕后点击“修改”按钮即可完成员工信息的修改。

 

5、删除员工信息

删除员工信息的功能使用步骤基本同上,先在操作界面点击第二个按钮“修改或删除员工信息”;然后填入想要删除的员工的工号,点击“查询”按钮;查询出来后,点击“删除”按钮即可完成员工信息的删除。

6、根据条件查询员工信息

在操作界面点击“高级查询员工信息”按钮,会进入高级查询的界面。

高级查询分为婚姻、学历、职位三个条件的筛选查询,可以只填写一个条件,或者同时填写多个条件。

点击“查询”按钮后,查询结果会显示在下方的表格中。

三、设计思路与制作过程

1、系统构架图

2、设计环境

由于我的个人电脑是使用Win8.1的操作系统,在某些情况下对VisualC++6.0和SQLServer2005的兼容性和支持性不好,所以我是在虚拟机VMwareWorkstation9.0下的XP系统中完成系统的设计的。

开发环境:

WindowsXP

使用软件:

MicrosoftVisualC++6.0

MicrosoftSQLServer2005

3、数据库的设计

建立“人事管理数据库”,并建立一张“员工”表。

适当给表添加员工信息,以作调试人事管理系统时使用。

4、设置ODBC与SQLServe的连接

建立好数据库后,保存数据库。

然后打开系统的“控制面板——管理工具——数据源(ODBC)”,按照下图描述进行设置。

5、建立应用程序

先建立MFC应用程序,根据功能需求,设计多个窗体。

设置好数据源(ODBC)后,可以将MFC工程连接数据库:

6、主要功能模块的实现代码

//添加员工信息的代码如下:

voidADD:

:

OnAdd()//添加信息

{

CRecordsetrs(&db);//数据集

CStringstr;

str.Format("insertintopeoplevalues(number='%s',name='%s',post='%s',xueli='%s',mariage='%s',time='%s'",m_number,m_name.m_sex,m_post,m_xueli,m_marriage,m_time)";

rs.Open(CRecordset:

:

forwardOnly,str);

if(!

rs.IsEOF())

{

this->messagebox("添加成功!

");

}

else

this->messagebox("添加失败!

");

}

//“修改或删除员工信息”中的查询功能

voidINFOCHANGE:

:

OnQuery()//根据工号查询显示

{

CRecordsetrs(&db);//数据集

CStringstr1,str2,str3,str3,str4,str5,str6,str7;

rs.Open(CRecordset:

:

forwardOnly,"selectNAMEfrompeoplewherenumber=m_number");

while(!

rs.IsEOF())

{

rs.GetFieldValue("number",str1);

m_number=str1;

rs.GetFieldValue("name",str2);

m_name=str2;

rs.GetFieldValue("sex",str3);

m_sex=str3;

rs.GetFieldValue("post",str4);

m_post=str4;

rs.GetFieldValue("xueli",str5);

m_xueli=str5;

rs.GetFieldValue("marriage",str6);

m_marriage=str6;

rs.GetFieldValue("time",str7);

m_time=str7;

}

rs.Close();

}

//修改员工信息功能

voidINFOCHANGE:

:

OnInfochange()//根据工号查找出来的数据进行修改

{

CRecordsetrs(&db);//数据集

CStringstr;

CStringstr;

str.Format("updatepeoplesetnumber=m_number,name='%s',post='%s',xueli='%s',mariage='%s',time='%s'",m_number,m_name.m_sex,m_post,m_xueli,m_marriage,m_time);

CRecordsetrs(&db);//数据集

CStringstr;

rs.Open(CRecordset:

:

forwardOnly,str);

rs.Open(CRecordset:

:

forwardOnly,";

if(!

rs.IsEOF())

{

this->messagebox("修改成功!

");

}

else

this->messagebox("修改成功!

");

rs.Close();

}

//条件查询员工信息功能

voidQUERY:

:

OnQuery()

{

this->UpdateData(true);

CStringstrHeader[7]={"工号","姓名","性别","岗位","学历","婚姻","入职时间"};

for(intnCol=0;nCol<7;nCol++)

m_list.InsertColumn(nCol,strHeader[nCol],LVCFMT_LEFT,100);

this->UpdateData(false);

CStringstr;

str.Format("select*frompeoplewheremarriage='%s',xueli='%s',,post='%s",m_marriage,m_xueli,m_post);

Recordset.m_pDatabase=&m_database;

CRecordsetrs(&db);//数据集

CStringstr;

rs.Open(CRecordset:

:

forwardOnly,str);

Recordset.Open(AFX_DB_USE_DEFAULT_TYPE,str);

if(!

Recordset.IsEOF())

{

CStringstr;

str=(LPCTSTR)_bstr_t(Recordset.GetRecordCount"number"));

m_list.SetItem(nItem,0,str);

str=(LPCTSTR)_bstr_t(Recordset.GetRecordCount("name"));

m_list.SetItemText(nItem,1,str);

str=(LPCTSTR)_bstr_t(Recordset.GetRecordCount("sex"));

m_list.SetItemText(nItem,2,str);

str=(LPCTSTR)_bstr_t(Recordset.GetRecordCount("post"));

m_list.SetItemText(nItem,3,str);

str=(LPCTSTR)_bstr_t(Recordset.("xueli"));

m_list.SetItemText(nItem,4,str);

str=(LPCTSTR)_bstr_t(Recordset.GetRecordCount("marriage"));

m_list.SetItemText(nItem,5,str);

str=(LPCTSTR)_bstr_t(Recordset.GetRecordCount("time"));

m_list.SetItemText(nItem,5,str);

}

else

this->MessageBox("没有找到相应数据!

");

}

七、总结与体会

在本次的课程设计中,也许很多人刚开始都无从下手,因为除了需要熟悉SQLServer的操作外,还要对编程语言有一定的功底和更多的未知的困惑。

所以我需要一开始就清晰这次课程设计的思路和条理。

其实在课程设计指导书中已经给了我很大的提示和帮助,首先要理解好题目,明白题目所需要的功能要求;然后把人事管理系统的架构设计出来;此时,心中已经对这个系统有一个比较清晰的认知了,只需要不断完善和细化,同时可以在VisualC++中把界面建立出来,剩下的就是技术层面上的问题了。

在此之前吧,最令我困惑的是怎么把数据库和设计的应用程序连接在一起,虽然指导书上有适当的提示,但我还是比较迷惑,一知半解的。

后来我在网上查了资料,了解到了以下这几种办法:

第一种是在所建立的C++项目中的stdafx.h头文件中引入ADO,具体代码如下:

#import“c:

\ProgramFiles\CommonFiles\System\ado\msado15.dll”

no_namespacerename(”EOF”,“adoEOF”)rename(”BOF”,“adoBOF”)

然后定义_ConnectionPtr变量后调用Connection对象的Open方法建立与服务器的连接。

数据类型_ConnectionPtr实际上是由类模板_com_ptr_t得到的一个具体的实例类。

_ConnectionPtr类封装了Connection对象的Idispatch接口指针及其一些必要的操作。

可以通过这个指针操纵Connection对象。

第二种就是课程设计指导书里提到的利用ODBC连接的办法。

解决了这个问题后,另一个问题又产生了。

我在做的时候是在SQLServer2005数据库中建一个表,然后在VisualC++里做窗体,最后用窗体链接数据库进行操作,但是如果需要在未建数据库表的电脑中运行,不知道怎么办。

我开始的设想是把数据库中的mdf文件、ldf文件提取出来,然后放在应用程序的文件夹中,可以随着应用程序一起移动。

后来在网上查找资料时,发现这种用语句来加载数据库的方法确实可行。

还有一种办法就是使用附加数据库,在别的电脑打开SQLServer2005直接附加数据库,要注意的是SQLServer的版本需要一致。

做课程设计最大的乐趣就是能不断发现新领域的问题,然后经过摸索,不断尝试,不断总结,从而解决问题,积累经验,让自己的能力得到很大的提升,能让我们更有成就感,激发我们学习的兴趣。

这次课程设计的题目很实用也很有代表性,老师们辛苦啦!

我会利用空闲时间试着把其他的题目都做一做,努力的探寻成功之道。

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

当前位置:首页 > 小学教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1