员工管理系统课程设计

上传人:lis****210 文档编号:204306230 上传时间:2023-04-26 格式:DOCX 页数:18 大小:293.79KB
收藏 版权申诉 举报 下载
员工管理系统课程设计_第1页
第1页 / 共18页
员工管理系统课程设计_第2页
第2页 / 共18页
员工管理系统课程设计_第3页
第3页 / 共18页
资源描述:

《员工管理系统课程设计》由会员分享,可在线阅读,更多相关《员工管理系统课程设计(18页珍藏版)》请在装配图网上搜索。

1、一、 需求与功能分析 _ 1二、系统总体框架XX三、 逻辑设计 XX四、 类的设计与分析 XX五、数据库表结构设计一 一 .XX六、特色算法分析 . 一 . .一 . .一 XX七、 功能测试 XX八、存在的不足与对策一 XX九、 程序源代码XX一需求与功能分析一员工管理系统的简要分析:本系统为员工管理系统,员工管理系统是针对财务管理部门的大量业务处理 工作而开发的管理软件。根据用户的要求,实现人员的基本信息,人员的离职, 和人员的员工调整的基本情况的管理,员工管理等方面功能。用户通过相关的操 作,输入一些员工的姓名,员工号,工资,电话,部门和生日等信息,由系统相 应的生成和调整相关文件记录。

2、用户可以在日后的读取这些信息。也可以修改和 删除信息。员工管理系统力求最简单的使客户方便快捷的管理这些繁琐的数据。二开发目标:本系统的开发目标是对企业中员工管理的各种信息包括(员工基本信息或员 工随人员调整而变动)进行更加规范和科学的管理和应用。三员工管理系统设计:1一个登陆界面。/帐号为 xingyue 密码为 xingyue 2员工的资料的输入。3员工修改功能。4新员工基本信息添加管理。二系统总体框架:三逻辑设计1显示信息为了对数据能够作全局的查看,在本功能使用 list 控件将所有文件信息 显示出来,因为实验需要,本系统用了文件的存储方式。2 添加信息 添加信息使用的是末尾添加的方法将信

3、息在文件的末尾添加所需的文件 信息。3修改资料修改资料是先在 list 控件中选择你要修改的员工,相应的信息则会自动 的显示在编辑框中,然后在编辑框里修改所需的资料。在框中读取字符然后把改 字符替换回文件里。4删除人员 删除的做法通过间接文件,通过一句一句的搜索把不需要修改的信息写入间 接文件里,在把间接文件里的信息写回原文件里。达到删除的功能。四类的设计与分析 为了方便读取文件里的数据,本程序使用一个类作为读取信息的变量整体, 所以我建立了一个类。此类保存文件里员工的基本信息,使用时只要查找该类中 的某个属性就可以知道员工的属性了。本系统是基于 MFC 开发的,除了保存信 息的类之外,还建立

4、了 3 个对话框类。第一个是完成个登陆功能,里面只有帐号 和密码2 个属性,用户使用软件前先要登陆成功才可以使用。另外一个就是本系 统的重点,也是核心。系统所有功能都在该类中完成,此对话框有查看,修改, 添加,删除功能。1SQL 类#includeafxdb.hclass SQLpublic:CDatabase m_database;CRecordset rs;此类用于连接数据库使用五数据库表结构设计message 类说明表名称属性说明mnum数据成员记录员工工号mname数据成员记录员工名字mpay数据成员记录员工收入mtel数据成员记录员工电话通信mbirthday数据成员记录员工生日md

5、ep t数据成员记录员工部门2USER PSW 类名称属性说明TMS USER数据成员保存密码TMS PSWD数据成员保存帐号OnOK()成员方法登陆OnCANCEL()成员方法退出六特色算法分析个人认为使用的一个比较好的方法是:编辑框能够通过点击list表的内容 获取相应的内容,以方便修改和删除。七功能测试以下为测试时的图片: (一)登陆图 1 登陆框二).进入主页面。图 2 进入主页面 三)点击查看,查看所有信息图 3 点击查看获取全部信息(四).点击list插件获取单条信息到编辑框中。图 4,点击 list 获取单条信息 五)修改图 5 将编辑框中的信息修改之后点击修改将信息修改六)点击

6、添加,添加新员工信息图 6 将信息输入编辑框中 添加新员工七)删除图 7 删除单条信息八存在的不足与对策 由于本人编程水平有限及面临多门课程的考试而时间不足等方面的原因, 在此程序中,其功能比较单一,美工方面没有像一些同学那样使用图画来增加程 序的美观,这些不足请老师多多谅解。但是我将在以后的学习中不断改进,继续 学习数据库相关知识,不断的提高程序设计水平。九程序源代码软件登陆框代码:#include stdafx.h#include xixi.h#include xixiDlg.h#includeSQL.h #includeMainframe.hSQL sql;BOOL CXixiDlg:O

7、nInitDialog()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

8、 dialog. The framework does this automatically/ when the applications main window is not a dialog SetIcon(m_hIcon, TRUE); / Set big icon SetIcon(m_hIcon, FALSE); / Set small icon/ TODO: Add extra initialization herereturn TRUE; / return TRUE unless you set the focus to a control void CXixiDlg:OnButt

9、on1()/ 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=SQLServer;Server

10、=(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_usern

11、ame)=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 here CDialog:OnCancel();员工管理系统主要页面主要内容:#in

12、clude stdafx.h#include xixi.h#include Mainframe.h#include sql.h#include addmessage.h extern 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

13、;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_list

14、show.Insertitem(i,stri);/在此 i 为第 i 列的行号;str数值sql.rs.GetFieldValue(mnum,stri); m_listshow.SetitemText(i,i,stri);/注,第一列使用 insertitem()插入数值,但是第二列要是用setitemtext()函数插入数值sql.rs.GetFieldValue(mpay,stri);/m_listshow.insertitem(i,2,stri);m_listshow.SetitemText(i,2,stri);sql.rs.GetFieldValue(mtel,stri);m_list

15、show.SetitemText(i,3,stri);sql.rs.GetFieldValue(mdept,stri);m_listshow.SetitemText(i,4,stri);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

16、CMainframe:OnDeleteButton()/ TODO: Add your control notification handler code here UpdateData(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_databas

17、e;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:OnSelect

18、Button();void CMainframe:OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code here int di;di=m_listshow.GetNextItem(-1,LVNI_ALL|LVNI_SELECTED);/* 来获取当前选中的行 (Item) 如果该函数还回的值是 -1,说明没有行(item)被选中,如果有行被选中,还回的是一个大于等于0的整数 值,*/CString str;if (sql.m_database.IsOpen

19、() sql.m_database.Close();str=DRIVER=SQL SERVER;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 * from message;sql.rs.Open(CRecordset:snapshot,str,CRecordset:readOn

20、ly);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

21、); 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()中初始化列属

22、性,否则每 次刷新一次就会多一次表的列m_lis tshow.Inser tColumn( 0,姓名); m_lis tshow.Inser tColumn( 1,员工号“); m_lis tshow.Inser tColumn(2,工资“); m_lis tshow.Inser tColumn(3,联系电话“); m_lis tshow.Inser tColumn(4,工作部门); m_lis tshow.Inser tColumn(5,出生日期“);RECT rectmessage; /声明一个 RECT 类型的变量m_listshow.GetWindowRect(&rectmessage

23、);/ 取 得 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_lists

24、how.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 FALSE void CMainframe:OnChanceButton() / TODO: Add your control notification handler code here UpdateData(true)

25、;CString str;CString name,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 * from message;sql.rs.Open(CRecordset:snapshot,str,CRecordset

26、: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+,mbirthd ay=+birthday+where mn

27、ame=+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#inc

28、lude 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 Se

29、rver;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,s

30、tri);/在此 i 为第 i 列的行号;str数值sql.rs.GetFieldValue(mnum,stri); m_listshow.SetitemText(i,i,stri);/注,第一列使用 insertitem()插入数值,但是第二列要是用setitemtext()函数插入数值sql.rs.GetFieldValue(mpay,stri); /m_listshow.insertitem(i,2,stri); m_listshow.SetitemText(i,2,stri);sql.rs.GetFieldValue(mtel,str1);m_listshow.SetItemText(

31、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:OnDele

32、teButton()/ TODO: Add your control notification handler code here UpdateData(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 * fr

33、om 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(删除成功!);else MessageBox(删除失败!);CMainframe:OnSelectButton(); void C

34、Mainframe:OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)/ TODO: Add your control notification handler code here int di; di=m_listshow.GetNextItem(-1,LVNI_ALL|LVNI_SELECTED);/*来获取当前选中的行(It em)如果该函数还回的值是-1,说明没有行(item)被选中,如果有行被选中,还回的是一个大于等于0的整数 值,*/CString str;if (sql.m_database.IsOpen() sql.m_database.

35、Close();str=DRIVER=SQL SERVER;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 * from message;sql.rs.Open(CRecordset:snapshot,str,CRecordset:readOnly);int i=0; while

36、 (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.SetWind

37、owText(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()中初始化列属性,否则每 次刷新一次就会多

38、一次表的列m_lis tshow.Inser tColumn( 0,姓名); m_lis tshow.Inser tColumn( 1,员工号“); m_lis tshow.Inser tColumn(2,工资“); m_lis tshow.Inser tColumn(3,联系电话“); m_lis tshow.Inser tColumn(4,工作部门); m_lis tshow.Inser tColumn(5,出生日期“);RECT rectmessage; /声明一个 RECT 类型的变量m_listshow.GetWindowRect(&rectmessage);/ 取 得 list C

39、ontrol 对 象 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.SetColumnW

40、idth(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 FALSE void CMainframe:OnChanceButton()/ TODO: Add your control notification handler code hereUpdateData(true);CString str;CSt

41、ring 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_na

42、me.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=update message set mnum=+num+,mpay=+pay+,mtel=+tel+,mdept=+dept+,mbirthd ay=+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 here CDialog:OnCancel();

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!