员工管理系统课程设计.docx
- 文档编号:6218260
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:25
- 大小:232.72KB
员工管理系统课程设计.docx
《员工管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《员工管理系统课程设计.docx(25页珍藏版)》请在冰点文库上搜索。
员工管理系统课程设计
目录
一、需求与功能分析1
二、系统总体框架XX
三、逻辑设计XX
四、类的设计与分析XX
五、数据库表结构设计XX
六、特色算法分析XX
七、功能测试XX
八、存在的不足与对策XX
九、程序源代码XX
一.需求与功能分析
一.员工管理系统的简要分析:
本系统为员工管理系统,员工管理系统是针对财务管理部门的大量业务处理工作而开发的管理软件。
根据用户的要求,实现人员的基本信息,人员的离职,和人员的员工调整的基本情况的管理,员工管理等方面功能。
用户通过相关的操作,输入一些员工的姓名,员工号,工资,电话,部门和生日等信息,由系统相应的生成和调整相关文件记录。
用户可以在日后的读取这些信息。
也可以修改和删除信息。
员工管理系统力求最简单的使客户方便快捷的管理这些繁琐的数据。
二.开发目标:
本系统的开发目标是对企业中员工管理的各种信息包括(员工基本信息或员工随人员调整而变动)进行更加规范和科学的管理和应用。
三.员工管理系统设计:
1.一个登陆界面。
//帐号为xingyue密码为xingyue
2.员工的资料的输入。
3.员工修改功能。
4.新员工基本信息添加管理。
二.系统总体框架:
三.逻辑设计
1.显示信息
为了对数据能够作全局的查看,在本功能使用list控件将所有文件信息显示出来,因为实验需要,本系统用了文件的存储方式。
2.添加信息
添加信息使用的是末尾添加的方法将信息在文件的末尾添加所需的文件信息。
3.修改资料
修改资料是先在list控件中选择你要修改的员工,相应的信息则会自动的显示在编辑框中,然后在编辑框里修改所需的资料。
在框中读取字符然后把改字符替换回文件里。
4.删除人员
删除的做法通过间接文件,通过一句一句的搜索把不需要修改的信息写入间接文件里,在把间接文件里的信息写回原文件里。
达到删除的功能。
四.类的设计与分析
为了方便读取文件里的数据,本程序使用一个类作为读取信息的变量整体,所以我建立了一个类。
此类保存文件里员工的基本信息,使用时只要查找该类中的某个属性就可以知道员工的属性了。
本系统是基于MFC开发的,除了保存信息的类之外,还建立了3个对话框类。
第一个是完成个登陆功能,里面只有帐号和密码2个属性,用户使用软件前先要登陆成功才可以使用。
另外一个就是本系统的重点,也是核心。
系统所有功能都在该类中完成,此对话框有查看,修改,添加,删除功能。
1.SQL类
#include"afxdb.h"
classSQL
{
public:
CDatabasem_database;
CRecordsetrs;
};
此类用于连接数据库使用
五.数据库表结构设计
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"
#include"SQL.h"
#include"Mainframe.h"
SQLsql;
BOOLCXixiDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//Add"About..."menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);//Setbigicon
SetIcon(m_hIcon,FALSE);//Setsmallicon
//TODO:
Addextrainitializationhere
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
voidCXixiDlg:
:
OnButton1()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
intflag=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();
}
CStringstr;
str="Driver={SQLServer};Server=(local);Database=train;uid=sa;pwd=";
sql.m_database.OpenEx(str,0);
//赋记录集地址值给rs以便使用,打开记录集
sql.rs.m_pDatabase=&sql.m_database;
CStringstr1="select*fromUSER_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;
CMainframeobj;
obj.DoModal();
CDialog:
:
OnCancel();
}
}
sql.rs.MoveNext();
}
if(flag==0)MessageBox("登陆失败!
");
}
voidCXixiDlg:
:
OnCancelButton()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CDialog:
:
OnCancel();
}
员工管理系统主要页面主要内容:
#include"stdafx.h"
#include"xixi.h"
#include"Mainframe.h"
#include"sql.h"
#include"addmessage.h"
externSQLsql;
voidCMainframe:
:
OnSelectButton()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
inti=0;
m_listshow.DeleteAllItems();//按就删除上一次显示的信息
if(sql.m_database.IsOpen())
{
sql.m_database.Close();
}
CStringstr1;
str1="DRIVER={SQLServer};SERVER=(local);Database=train;UID=sa;PWD=";
sql.m_database.OpenEx(str1,0);
sql.rs.m_pDatabase=&sql.m_database;
str1="select*frommessage";
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();
}
}
voidCMainframe:
:
OnAddButton()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
Caddmessagea;
a.DoModal();
}
voidCMainframe:
:
OnDeleteButton()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
UpdateData(true);
CStringstr;
CStringname;
if(sql.m_database.IsOpen())
{sql.m_database.Close();
}
str="Driver={SQLSERVER};SERVER=(Local);Database=train;UID=sa;PWD=";
sql.m_database.OpenEx(str);
sql.rs.m_pDatabase=&sql.m_database;
str="select*frommessage";
sql.rs.Open(CRecordset:
:
snapshot,str,CRecordset:
:
readOnly);
m_name.GetWindowText(name);//将m_name的值赋值给name变量
str="deletefrommessagewheremname='"+name+"'";
sql.m_database.ExecuteSQL(str);
if(sql.m_database.CanUpdate())
{MessageBox("删除成功!
");
}
else
MessageBox("删除失败!
");
CMainframe:
:
OnSelectButton();
}
voidCMainframe:
:
OnClickList1(NMHDR*pNMHDR,LRESULT*pResult)
{
//TODO:
Addyourcontrolnotificationhandlercodehere
intdi;
di=m_listshow.GetNextItem(-1,LVNI_ALL|LVNI_SELECTED);
/*来获取当前选中的行(Item)如果该函数还回的值是-1,
说明没有行(item)被选中,如果有行被选中,还回的是一个大于等于0的整数值,*/
CStringstr;
if(sql.m_database.IsOpen())
{sql.m_database.Close();
}
str="DRIVER={SQLSERVER};SERVER=(Local);Database=train;UID=sa;PWD=";
//str="DRIVER={SQLServer};SERVER=(local);Database=student;UID=sa;PWD=";
sql.m_database.OpenEx(str);
sql.rs.m_pDatabase=&sql.m_database;
str="select*frommessage";
sql.rs.Open(CRecordset:
:
snapshot,str,CRecordset:
:
readOnly);
inti=0;
while(i {sql.rs.MoveNext(); i++; } sql.rs.GetFieldValue("mname",str);//从数据库的MESSAGE表中的mname这列中取值到str m_name.SetWindowText(str); sql.rs.GetFieldValue("mnum",str);//将str的值赋值给m_name m_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; } BOOLCMainframe: : OnInitDialog() { CDialog: : OnInitDialog(); //TODO: Addextrainitializationhere //注: 只有在BOOLCMainframe: : 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,"出生日期"); RECTrectmessage;//声明一个RECT类型的变量 m_listshow.GetWindowRect(&rectmessage);//取得listControl对象m_listshow的宽赋值给rectmessage并进行匹配 intwidmessage; 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); returnTRUE;//returnTRUEunlessyousetthefocustoacontrol //EXCEPTION: OCXPropertyPagesshouldreturnFALSE } voidCMainframe: : OnChanceButton() { //TODO: Addyourcontrolnotificationhandlercodehere UpdateData(true); CStringstr; CStringname,num,pay,tel,dept,birthday; if(sql.m_database.IsOpen()) {sql.m_database.Close(); } str="Driver={SQLSERVER};SERVER=(Local);Database=train;UID=sa;PWD="; sql.m_database.OpenEx(str,0); sql.rs.m_pDatabase=&sql.m_database; str="select*frommessage"; sql.rs.Open(CRecordset: : snapshot,str,CRecordset: : readOnly); m_name.GetWindowText(name);//将m_name的值赋值给新定义的变量name m_num.GetWindowText(num); m_pay.GetWindowText(pay); m_tel.GetWindowText(tel); m_dept.GetWindowText(dept); m_birthday.GetWindowText(birthday); str="updatemessagesetmnum='"+num+"',mpay='"+pay+"',mtel='"+tel+"',mdept='"+dept+"',mbirthday='"+birthday+"'wheremname='"+name+"'"; sql.m_database.ExecuteSQL(str); if(sql.m_database.CanUpdate()) MessageBox("更新成功! "); else MessageBox("更新失败! "); CMainframe: : OnSelectButton();//运行IDC_SELECT_BUTTON()这个按钮 } voidCMainframe: : OnCancelButton() { //TODO: Addyourcontrolnotificationhandlercodehere CDialog: : OnCancel(); } 添加模块 #include"stdafx.h" #include"xixi.h" #include"Mainframe.h" #include"sql.h" #include"addmessage.h" externSQLsql; voidCMainframe: : OnSelectButton() { //TODO: Addyourcontrolnotificationhandlercodehere inti=0; m_listshow.DeleteAllItems();//按就删除上一次显示的信息 if(sql.m_database.IsOpen()) { sql.m_database.Close(); } CStringstr1; str1="DRIVER={SQLServer};SERVER=(local);Database=train;UID=sa;PWD="; sql.m_database.OpenEx(str1,0); sql.rs.m_pDatabase=&sql.m_database; str1="select*frommessage"; sql.rs.Open(CRecordset: : snapshot,str1,CRecordset: : readOnly); while
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 员工 管理 系统 课程设计