C++课程设计 员工信息管理系统.docx
- 文档编号:10251689
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:25
- 大小:235.56KB
C++课程设计 员工信息管理系统.docx
《C++课程设计 员工信息管理系统.docx》由会员分享,可在线阅读,更多相关《C++课程设计 员工信息管理系统.docx(25页珍藏版)》请在冰点文库上搜索。
C++课程设计员工信息管理系统
青岛理工大学
C++课程设计报告
院(系):
计算机工程学院
专业:
计算机科学与技术
学生姓名:
班级:
_
_学号:
题目:
员工信息管理系统______
起迄日期:
_2009.12.21—2009.12.31__
设计地点:
青岛理工大学2#实验楼402
指导教师:
李兰
完成日期:
2009年12月30日
一、需求分析
1、选做此课题或项目的意义:
随着现代高科技的迅速发展,计算机技术也有了突飞猛进的快速发展,因此为各个行业的普及应用奠定了基础。
由于公司业务的扩展,人员的增多,传统的手工作业已经不再适合公司发展的需要。
传统的手工作业要处理巨额的数据,由于人员不停地改动,例如调职、离职、新员工加入等,人事部门要不停的更新数据,进行抄写。
由于数据庞大,难免会出现错误,这对于员工管理非常不利。
而利用计算机技术可以方便的、准确的、动态的对企业内部员工进行管理,减轻了人事部门的任务,节约人力资源,降低了企业的成本。
基于计算机技术的优越性,几乎所有的企业都使用计算机技术来实现对员工基本信息的管理。
本系统将利用计算机技术模拟实现对企业员工的基本信息管理,主要实现对员工基本信息的管理,包括职工编号、姓名、性别、出生年月、职称、婚姻状况、最后学历、工资。
如果有新员工加入该公司,可在添加新员工模块进行添加新成员操作。
如果有员工辞职或退休,也可以进行删除操作,同时可以查看所有员工的资料,以对现有的员工信息进行查询操作,可按照对员工编号进行升序排序。
2、程序所实现的功能:
本系统是使用VisualC++创建的,程序功能不是太多,但基本功能都可以实现,主要功能包括:
(1)本系统具有添加新员工、删除死亡或离职的员工的功能。
添加新员工时,本系统自动给新添加的员工赋予第几次记录。
但必须填写员工编号,否则会出现错误提示。
因为用户认为输入时可能会由于主码重复而操作失败,而用户也没有必要为了这个原因维护一张记录单。
并且,系统不能自行分配主码,不可以随便的利用删除而废除的主码。
删除操作时,系统会提示是否删除,不会因无意的按键而将记录删除掉。
(2)用户也可以查看所有员工的信息,便于公司对员工的管理
(3)在本系统的主界面可以进行简单的添加新员工、删除员工、修改员工的信息等功能,但不能进行查询工作。
本程序所使用的开发运行环境主要包括:
开发工具:
VC++6.0
运行环境:
WindowsXP
数据库:
MicrosoftAccess2003
二、设计内容
1、数据库表格:
员工基本信息表:
字段名称
数据类型
字段大小
必填字段(不为空)
说明
职工编号
数字
20
是
员工的编号
姓名
文本
20
否
员工姓名
性别
文本
10
否
员工性别
出生年月
时间/日期
20
否
员工的出生年月
婚否
文本
10
否
员工的婚姻状况
最后学历
文本
20
否
员工最终的学历
职称
文本
20
否
员工目前的职称
工资
数字
20
否
员工的目前工资
2、系统功能模块图:
(1)系统的主要模块:
(2)员工管理系统的主界面设置如下图:
图一员工管理系统的主界面
(3)员工信息记录的显示界面设计如下图:
图二员工信息记录的显示界面
(4)主要控件类型、ID和对应的成员变量如下表所示,该窗口的封装类为CMyView。
添加记录对话框主要控件列表如下:
控件类型
ID
成员变量
变量类型
说明
编辑框
IDC_EDIT0
->m_number
long
职工编号
编辑框
IDC_EDIT1
->m_name
CString
姓名
编辑框
IDC_EDIT2
->m_birthday
CString
出生年月
编辑框
IDC_EDIT3
->m_zhicheng
CString
职称
编辑框
IDC_EDIT4
->m_zuihouxueli
CString
最后学历
编辑框
IDC_EDIT5
->m_pay
long
工资
编辑框
IDC_EDIT6
->m_sex
CString
性别
编辑框
IDC_EDIT7
->m_marrynot
CString
婚否
按钮
IDC_BUTTON_add
无
无
添加
按钮
IDC_BUTTON_delete
无
无
删除
按钮
IDC_BUTTON_change
无
无
修改
按钮
IDC_BUTTON_gengxin
无
无
更新
按钮
IDC_BUTTON_Pre
无
无
上一条
按钮
IDC_BUTTON_Next
无
无
下一条
1添加按钮完成的功能:
如果公司有新员工加入,则点击增加按钮增加员工记录。
在点击增加按钮时,系统会提示添加数据成功,如下图所示:
图三消息框
当添加新成员忘记填写职工编号这一主码时系统会自动提示出错,而当未填写非主码的有关属性时则系统没有提醒,如下图所示:
图四消息框
②删除按钮完成的功能:
如果公司有员工不幸死亡或离职,则就从数据库中将其删除。
在点击删除按钮时,系统会提示删除数据成功,如下图所示:
图五消息框
3修改按钮完成的功能:
在对员工进行信息记录时有可能出现错误,单击此按钮可以对错误信息进行修改。
当修改成功时,系统会自动弹出消息框进行修改成功提示。
如下图所示:
图六消息框
④更新按钮完成的功能:
点击此按钮,用户可以看到添加新员工,删除员工和修改员工信息后的各项最新记录。
5上一条按钮完成的功能:
单击此按钮显示员工记录的上一条记录,如果这是第一条记录,将会弹出错对话框。
如下图所示:
图七消息框
6下一条按钮完成的功能:
单击此按钮显示员工记录的下一条记录,如果这是最后一条记录,将会弹出出错对话框。
如下图所示:
图八消息框
(5)帮助界面的功能说明如下图所示:
图九关于员工信息管理系统
3、系统数据流图如下:
本程序中所有用到的数据及数据定义。
本系统数据库设计采用MicrosoftAccess2003设计,员工属性如下所示:
4、关键代码:
(1)初始化列表视图由函数OnInitialUpdate()实现。
OnInitialUpdate()函数代码如下:
voidCMyView:
:
OnInitialUpdate()//初始化数据并显示在表格中
{
m_pSet=&GetDocument()->m_mySet;
CRecordView:
:
OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
//////////////////////////////////////////////////////////
m_pSet->MoveFirst();
m_grid.SetCols(m_pSet->m_nFields+1);//设置网格列数
m_grid.SetRows(100);
m_grid.SetColWidth(-1,1200);
//将所有的网格都设为相同的列宽。
-1表示所有的列,列宽单位为一个点的
//1/20(一个点是1/72英寸),也就是说,1440刚好为1英寸。
//定义网格的表头
m_grid.SetRow(0);
m_grid.SetCol
(1);//定位到(0,1)网格
m_grid.SetText("职员编号");//设置其显示内容
m_grid.SetRow(0);m_grid.SetCol
(2);
m_grid.SetText("姓名");
m_grid.SetRow(0);m_grid.SetCol(3);
m_grid.SetText("性别");
m_grid.SetRow(0);m_grid.SetCol(4);
m_grid.SetText("出生年月");
m_grid.SetRow(0);m_grid.SetCol(5);
m_grid.SetText("职称");
m_grid.SetRow(0);m_grid.SetCol(6);
m_grid.SetText("最后学历");
m_grid.SetRow(0);m_grid.SetCol(7);
m_grid.SetText("工资");
m_grid.SetRow(0);m_grid.SetCol(8);
m_grid.SetText("婚姻状况");
intiRow=1;
while(!
m_pSet->IsEOF())//将表的记录内容显示在网格中
{
CStringstr;
str.Format("记录%d",iRow);
m_grid.SetRow(iRow);m_grid.SetCol(0);
m_grid.SetText(str);
m_grid.SetRow(iRow);m_grid.SetCol
(1);
m_grid.SetText(m_pSet->m_column1);
m_grid.SetRow(iRow);m_grid.SetCol
(2);
m_grid.SetText(m_pSet->m_column2);
m_grid.SetRow(iRow);m_grid.SetCol(3);
m_grid.SetText(m_pSet->m_column3);
m_grid.SetRow(iRow);m_grid.SetCol(4);
m_grid.SetText(m_pSet->m_column4);
m_grid.SetRow(iRow);m_grid.SetCol(5);
m_grid.SetText(m_pSet->m_column5);
m_grid.SetRow(iRow);m_grid.SetCol(6);
m_grid.SetText(m_pSet->m_column6);
m_grid.SetRow(iRow);m_grid.SetCol(7);
m_grid.SetText(m_pSet->m_column7);
m_grid.SetRow(iRow);m_grid.SetCol(8);
m_grid.SetText(m_pSet->m_column8);
iRow++;
m_pSet->MoveNext();
}
m_grid.SetRow
(1);m_grid.SetCol
(1);
m_pSet->MoveFirst();
m_grid.SetFocus();
}
(2)添加按钮的功能由函数OnBUTTONadd()实现,OnBUTTONadd()函数代码如下:
voidCMyView:
:
OnBUTTONadd()
{//TODO:
Addyourcontrolnotificationhandlercodehere
try
{
//设置数据集为记录状态
m_pSet->AddNew();
UpdateData(TRUE);
//把成员变量的值赋给数据集的相应成员
//注意成员变量的值与数据集变量之间的对应关系
m_pSet->m_column1=m_bianhao;//员工编号
m_pSet->m_column2=m_xingming;//员工姓名
m_pSet->m_column3=m_xingbie;//性别
m_pSet->m_column4=m_shengri;//出生年月
m_pSet->m_column5=m_zhicheng;//职称
m_pSet->m_column6=m_zuihouxueli;//最后学历
m_pSet->m_column7=m_gongzi;//工资
m_pSet->m_column8=m_hunying;//婚姻状况
//执行写入操作
m_pSet->Update();
//更新数据集
m_pSet->Requery();
}
catch(CDBException*pe)
{
AfxMessageBox(pe->m_strError);
pe->Delete();
}
MessageBox("添加数据成功");
///////////////////////////////////////////
//OnInitialUpdate();
}
(3)删除按钮的功能由函数OnBUTTONdelete()实现,OnBUTTONdelete()函数代码如下:
voidCMyView:
:
OnBUTTONdelete()//删除数据
{
//TODO:
Addyourcontrolnotificationhandlercodehere
try
{
m_pSet->Delete();//删除记录
m_pSet->Requery();//重写记录
RefreshData();//更新记录
}
catch(CDBException*pe)
{
AfxMessageBox(pe->m_strError);
pe->Delete();
}
MessageBox("删除数据成功");
}
(3)修改按钮的功能由函数OnBUTTONchange()实现,OnBUTTONchange()函数代码如下:
voidCMyView:
:
OnBUTTONchange()//修改数据
{
//TODO:
Addyourcontrolnotificationhandlercodehere
try
{
//设置数据集为记录状态
m_pSet->Edit();
UpdateData(TRUE);
//把成员变量的值赋给数据集的相应成员
//注意成员变量的值与数据集变量之间的对应关系
m_pSet->m_column1=m_bianhao;//员工编号
m_pSet->m_column2=m_xingming;//员工姓名
m_pSet->m_column3=m_xingbie;//性别
m_pSet->m_column4=m_shengri;//出生年月
m_pSet->m_column5=m_zhicheng;//职称
m_pSet->m_column6=m_zuihouxueli;//最后学历
m_pSet->m_column7=m_gongzi;//工资
m_pSet->m_column8=m_hunying;//婚姻状况
//执行写入操作
m_pSet->Update();
//更新数据集
m_pSet->Requery();
}
catch(CDBException*pe)
{
AfxMessageBox(pe->m_strError);
pe->Delete();
}
MessageBox("修改数据成功");
}
(4)更新按钮的功能由函数OnBUTTONgengxin()实现,OnBUTTONgengxin()函数代码如下:
voidCMyView:
:
OnBUTTONgengxin()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
///////////////////////////更新////////////////////////////////////
m_pSet->MoveFirst();
m_grid.SetCols(m_pSet->m_nFields+1);//设置网格列数
m_grid.SetRows(100);
m_grid.SetColWidth(-1,1200);
intiRow=1;
while(!
m_pSet->IsEOF())//将表的记录内容显示在网格中
{
CStringstr;
str.Format("记录%d",iRow);
m_grid.SetRow(iRow);m_grid.SetCol(0);
m_grid.SetText(str);
m_grid.SetRow(iRow);m_grid.SetCol
(1);
m_grid.SetText(m_pSet->m_column1);
m_grid.SetRow(iRow);m_grid.SetCol
(2);
m_grid.SetText(m_pSet->m_column2);
m_grid.SetRow(iRow);m_grid.SetCol(3);
m_grid.SetText(m_pSet->m_column3);
m_grid.SetRow(iRow);m_grid.SetCol(4);
m_grid.SetText(m_pSet->m_column4);
m_grid.SetRow(iRow);m_grid.SetCol(5);
m_grid.SetText(m_pSet->m_column5);
m_grid.SetRow(iRow);m_grid.SetCol(6);
m_grid.SetText(m_pSet->m_column6);
m_grid.SetRow(iRow);m_grid.SetCol(7);
m_grid.SetText(m_pSet->m_column7);
m_grid.SetRow(iRow);m_grid.SetCol(8);
m_grid.SetText(m_pSet->m_column8);
iRow++;
m_pSet->MoveNext();
for(inti=0;i<9;i++)
{
m_grid.SetRow(iRow);
m_grid.SetCol(i);
m_grid.SetText("");
}
m_grid.SetRow
(1);m_grid.SetCol
(1);
m_pSet->MoveFirst();
m_grid.SetFocus();
//m_grid.UpdateData();
}
(5)上一条按钮的功能由函数OnBUTTONPre()实现,OnBUTTONPre()函数代码如下:
voidCMyView:
:
OnBUTTONPre()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_pSet->MovePrev();
RefreshData();
}
显示第一条记录:
voidCMyView:
:
OnRecordFirst()
{
//TODO:
Addyourcommandhandlercodehere
//移动数据集到第一条记录
m_pSet->MoveFirst();
//更新视图
RefreshData();
}
(6)下一条按钮的功能由函数OnBUTTONNext()实现,OnBUTTONNext()函数代码如下:
voidCMyView:
:
OnBUTTONNext()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
m_pSet->MoveNext();
RefreshData();
}
显示最后一条记录:
voidCMyView:
:
OnRecordLast()
{
//TODO:
Addyourcommandhandlercodehere
//移动数据集到最后一条记录
m_pSet->MoveLast();
//更新视图
RefreshData();
}
三、调试分析
1、系统性能分析:
本系统所实现的主要功能:
(1)添加新成员,实现对新加入公司的成员信息的录入,所有的信息当中主码即员工信息编号必须填写。
(2)删除员工信息,当公司有员工因故离职时,需要删除员工信息时,释放掉它所占据的数据库空间,就可以在列表中选中所要删除的记录,然后点击删除。
如果确认删除则在弹出的消息框中点击确定即可删除所选的记录。
(3)修改员工信息,由于某种原因可能导致在记录员工信息时出现错误,需要对员工信息进行修改。
在员工信息系统主窗口中选择所要修改的成员信息进行修改,点击修改后将会弹出消息框,如果确认修改则点击确定,则修改数据成功。
(4)更新员工信息,在删除员工信息和添加员工信息成功后,点击更新按钮则可对员工信息记录进行更新,显示员工信息的最新记录。
(5)下一条员工信息,点击此按钮则可以显示出当前正在显示员工后面的那一条员工信息,如果此为最后一名员工的信息,则系统会自动弹出消息框,提示此操作有误。
(6)上一条员工信息,点击此按钮则可以显示当前正在显示员工前面的那一条员工信息记录,如果此为第一条员工信息,则系统会自动弹出消息框,提示此操作有误。
综上本系统可以对员工信息实现科学自动的管理,其中包括显示职工基本信息,并实现信息的添加、删除、修改、及更新。
经过调试,程序性能良好,但还存在一些不稳定性。
2、上机过程中出现的问题及其解决方案:
(1)问题:
在设计员工信息管理窗口时,编译及链接都没有错误,但运行时,弹出消息框:
无效的字符值或规格在列号2(姓名)。
而且列表视图中不显示数据库中的数据。
解决方案:
将CMySet记录集中所有的记录与数据库中的列的顺序一一对一应,即可解决此问题。
(2)问题:
在设计显示员工信息窗口时,用到ADODC控件及DataGrid控件。
但使用ADODC控件时,与其匹配的DataGrid控件不能显示员工信息表中的数据。
解决方案:
重新选择数据源,重新添加ADODC控件及DataGrid控件这两个控件,并在ADODC控件的RecordSource属性选择2-adCmdTable,选择相应的表名员工信息表,则DataGrid控件就显现出数据表中的数据。
(3)问题:
上机调试过程中,在更新功能的代码中出现了一个逻辑错误,每次删除一个记录最后一个记录总是覆盖前面的记录。
解决方案:
先把最后一条记录删除后再重新写记录,此方法效率虽低但简单易懂。
3、程序中可以改进的地方说明:
该系统只是对职工信息作了简单的管理,如果需要改进的话,首先应先加入一个登陆系统,保证原系统的安全性,另外还可以添加一个查询功能,以便能快速的查询员工信息。
在添加数据时,系统接收用户输入的信息,并不分辨是否满足真实的信息。
比如性别只限定两个字符,用户输入男和女
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+课程设计 员工信息管理系统 C+ 课程设计 员工 信息管理 系统
![提示](https://static.bingdoc.com/images/bang_tan.gif)