人员管理系统.docx

上传人:b****3 文档编号:24808650 上传时间:2023-06-01 格式:DOCX 页数:56 大小:725.72KB
下载 相关 举报
人员管理系统.docx_第1页
第1页 / 共56页
人员管理系统.docx_第2页
第2页 / 共56页
人员管理系统.docx_第3页
第3页 / 共56页
人员管理系统.docx_第4页
第4页 / 共56页
人员管理系统.docx_第5页
第5页 / 共56页
点击查看更多>>
下载资源
资源描述

人员管理系统.docx

《人员管理系统.docx》由会员分享,可在线阅读,更多相关《人员管理系统.docx(56页珍藏版)》请在冰豆网上搜索。

人员管理系统.docx

人员管理系统

人员管理系统

 

1.系统设计的目的和意义

采纳面向对象设计思想,治理2类人员。

教师信息(姓名,编号,年龄,职称,学历,籍贯,工作日期),学生信息(姓名,年龄,学号,籍贯,入学日期)。

完整输入/输出设计,写入ACCESS文件,分别建立两个表信息,一个储备教师信息,一个储备学生信息。

采纳工程文件方式组织程序。

能进行增、删、查、改等操作。

初始完成密码认证框的编写。

外观设计风格各异

2.系统总框架图

3.软件功能描述

治理2类人员:

教师信息(姓名,编号,年龄,职称,学历,籍贯,工作日期),学生信息(姓名,年龄,学号,籍贯,入学日期)。

完整输入/输出设计,写入ACCESS文件。

能进行增、删、查、改等操作。

采纳友好的用户界面。

治理用户:

添加、删除、修改密码等操作。

4.软件代码的设计

4.1数据结构描述与定义

①ACCESS表

表password:

Puser

文本

Ppassword

文本

Pisadmin

是/否

表student:

Sname

文本

Sno

文本

Sage

文本

Snative

文本

Setime

文本

表teacher:

Tname

文本

Tno

文本

Tage

文本

Ttitle

文本

Tdegree

文本

Tnative

文本

Twtime

文本

②MFC类

classCUserSet:

publicCRecordset//用户数据定义

{

CStringm_Puser;

CStringm_Ppassword;

BOOLm_Pisadmin;

}

classCStudentSet:

publicCRecordset//学生数据定义

{

CStringm_Sname;

CStringm_Sno;

CStringm_Sage;

CStringm_Snative;

CStringm_Setime;

}

classCTeacherSet:

publicCRecordset//教师数据定义

{

CStringm_Tname;

CStringm_Tno;

CStringm_Tage;

CStringm_Ttitle;

CStringm_Tdegree;

CStringm_Tnative;

CStringm_Twtime;

}

4.2模块设计

系统共分成七个模块,分别是:

用户登录模块,用户治理模块,学生信息查询模块,学生信息编辑模块,教师信息查询模块,教师信息编辑模块,关心模块。

①用户登录模块

②用户治理模块

③查询模块(学生信息查询,教师信息查询)

④编辑模块(学生信息编辑,教师信息编辑)

 

5.软件使用说明

登录系统时可依照ACCESS表password查看用户名和密码。

无需建立ODBC。

登录成功后显示主菜单,有系统治理,学生信息治理,教师信息治理和关心。

在系统治理中,你能够进行用户治理,注销/重新登录和退出系统。

在学生信息治理中,你能够进行学生信息查询和添加/修改信息。

教师信息治理中,你能够进行教师信息查询和添加/修改信息。

在关心中,你能够查看软件的相关内容。

专门提醒:

假如你的登录是非治理员,那么你将没有用户治理,添加/修改信息等操作。

在用户治理中,你能够修改密码,新增用户,删除用户。

在信息查询中,你能够通过编号查询或姓名查询。

能够同时输入或不输,若不输则显示全部信息。

在添加/修改信息中,你能够对信息进行添加,修改,删除等操作。

 

6.测试结果与分析

运行程序,显示登录界面。

(治理员建议使用:

用户名“weiheng”,密码“1234”。

非治理员建议使用:

用户名“ww”,密码“1234”。

成功登录后显示主界面。

然后依照菜单内容依次运行。

返回登录界面。

这是用户信息界面。

以治理员身份进入该界面。

图为创建一个用户“bbb”的操作。

这是学生信息查询界面。

若不输入查询项查询,则显示所有数据。

图为依照学生学号查询。

显示,添加,修改,删除一体化。

依照所需要的操作进行操作。

图为教师信息查询。

操作方法如同学生信息查询

图为教师信息编辑。

操作方法如同学生信息编辑

图为关心界面。

7.比较有特色的函数

①显示全部信息函数,以下是显示全部教师信息函数。

voidCTeachereDlg:

:

OnTeonall()

{

m_ctlList.DeleteAllItems();

m_ctlList.SetRedraw(FALSE);

UpdateData(TRUE);

CStringstrSQL;

strSQL.Format("select*fromteacher");

if(!

m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

{

MessageBox("打开数据库失败!

","数据库错误",MB_ICONSTOP);

return;

}

inti=0;

while(!

m_recordset.IsEOF())

{

m_ctlList.InsertItem(i,m_recordset.m_Tno);

m_ctlList.SetItemText(i,1,m_recordset.m_Tname);

m_ctlList.SetItemText(i,2,m_recordset.m_Tage);

m_ctlList.SetItemText(i,3,m_recordset.m_Ttitle);

m_ctlList.SetItemText(i,4,m_recordset.m_Tdegree);

m_ctlList.SetItemText(i,5,m_recordset.m_Tnative);

m_ctlList.SetItemText(i,6,m_recordset.m_Twtime);

i++;

m_recordset.MoveNext();

}

m_recordset.Close();

m_ctlList.SetRedraw(TRUE);

}

②查询函数,以下是学生信息查询函数

voidCStudentDlg:

:

OnSsearch()

{

UpdateData(TRUE);

m_ctlList.DeleteAllItems();

m_ctlList.SetRedraw(FALSE);

CStringstr="select*fromstudent";

UpdateData(true);

if(!

m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,_T(str)))

{

MessageBox("打开数据库失败!

","数据库错误",MB_ICONSTOP);

return;

}

inti=0;

while(!

m_recordset.IsEOF())

{if((m_recordset.m_Sno==m_valSno||m_valSno=="")&&

(m_recordset.m_Sname==m_valSname||m_valSname==""))

{

m_ctlList.InsertItem(i,m_recordset.m_Sno);

m_ctlList.SetItemText(i,1,m_recordset.m_Sname);

m_ctlList.SetItemText(i,2,m_recordset.m_Sage);

m_ctlList.SetItemText(i,3,m_recordset.m_Snative);

m_ctlList.SetItemText(i,4,m_recordset.m_Setime);

i++;

}

m_recordset.MoveNext();

}

m_recordset.Close();

m_ctlList.SetRedraw(TRUE);

}

8.存在的不足与计策

一开始做的程序,界面简单,显示信息单调,分不清一般用户和治理员的区别。

改进后,加入了图片和皮肤系统提供了友好的界面,采纳列表控件进行对多组数据的显示,同时添加依照是否是治理员进行操作判定。

 

9.课程设计总结

在这次课程设计中,我学到了专门多。

拿到课题是觉得依旧专门简单的,即便加入身份验证功能。

无非确实是三张ACCESS表,一张储存用户名和密码,一张储存学生信息,还有一张储存教师信息。

创建对话框也就三个,分别对应。

内容简单,功能也满足要求,然而缺乏创新。

因此在此基础上又加入了注册和修改密码。

反复改,反复改,不知不觉的一个工程做了好几遍。

当我把所有我能想到的东西都加到里面去后,依旧觉得少了点什么。

这一直觉来自于看了一个人做的图书治理系统,在界面上比我优化,在功能上比我先进,尽管他做的不是和我一个系统。

看到比自己好的,不自觉地开始改进。

第一是创建ODBC,从需要自己创建ODBC开始到程序生成ODBC,感受专门复杂,事实上也就几行代码的问题。

其次是皮肤,没有皮肤觉得界面太难看。

尽管是下载的文件,然而添到里面去也是一个难事,还要添加一个SkinPlusPlus.h。

再有确实是采纳列表控件,只要会了方法,输出信息专门方便。

原先我程序思想是在学生信息中分为查询、添加、修改、删除等模块,现在进行统一,查询依旧查询系统,添加、修改和删除融合成一个编辑系统。

教师也是一样。

在关于用户,也不局限于一旦创建只能修改密码,现在还能够注销账号。

最后是各个功能的衔接,用菜单来调用。

同时依照是否是治理员进行判定某些操作是否可用。

这次课程设计同时也使我对MFC有了更深刻的认识。

再也不是局限于那几个控件和某些类的派生。

对不同文件之间的联系,.h和.cpp之间的联系有了更深层次的明白得。

往常因为知识的匮乏,总是纳闷各个文件之间是如何样作用的,现在尽管不是十分的了解,但差不多能感受到其中的奥妙所在,让我感受到C++的无穷魅力。

 

附录:

源程序清单(核心部分)

文件:

wh.cpp

#include"stdafx.h"

#include"wh.h"

#include"MainFrm.h"

#include"whDoc.h"

#include"whView.h"

#include"LoginDlg.h"

#include"SkinPlusPlus.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

BEGIN_MESSAGE_MAP(CWhApp,CWinApp)

ON_COMMAND(ID_APP_ABOUT,OnAppAbout)

ON_COMMAND(ID_FILE_NEW,CWinApp:

:

OnFileNew)

ON_COMMAND(ID_FILE_OPEN,CWinApp:

:

OnFileOpen)

END_MESSAGE_MAP()

CWhApp:

:

CWhApp()

{}

CWhApptheApp;

BOOLCWhApp:

:

InitInstance()

{AfxEnableControlContainer();

SQLConfigDataSource(NULL,ODBC_ADD_DSN,//通过程序创建ODBC

"MicrosoftAccessDriver(*.mdb)",

"DSN=WhODBC\0"

"Description=Hotel\0"

"FileType=Access\0"

"DBQ=.\\Wh.mdb\0);

#ifdef_AFXDLL

Enable3dControls();

#else

Enable3dControlsStatic();

#endif

SetRegistryKey(_T("LocalAppWizard-GeneratedApplications"));

LoadStdProfileSettings(0);

InitializeSkin(_T("XPCorona.ssk"));//加载皮肤

CLoginDlgloginDlg;//先显示登录界面

if(loginDlg.DoModal()!

=IDOK)

returnFALSE;

CSingleDocTemplate*pDocTemplate;

pDocTemplate=newCSingleDocTemplate(

IDR_MAINFRAME,

RUNTIME_CLASS(CWhDoc),

RUNTIME_CLASS(CMainFrame),

RUNTIME_CLASS(CWhView));

AddDocTemplate(pDocTemplate);

CCommandLineInfocmdInfo;

ParseCommandLine(cmdInfo);

if(!

ProcessShellCommand(cmdInfo))

returnFALSE;

m_pMainWnd->ShowWindow(SW_SHOW);

m_pMainWnd->UpdateWindow();

m_pMainWnd->SetWindowText("人员治理系统");//显示主菜单标题

returnTRUE;}

classCAboutDlg:

publicCDialog

{public:

CAboutDlg();

enum{IDD=IDD_ABOUTBOX};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

protected:

DECLARE_MESSAGE_MAP()};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

:

IDD)

{}

voidCAboutDlg:

:

DoDataExchange(CDataExchange*pDX)

{CDialog:

:

DoDataExchange(pDX);}

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

END_MESSAGE_MAP()

voidCWhApp:

:

OnAppAbout()

{CAboutDlgaboutDlg;

aboutDlg.DoModal();}

文件:

UserSet.cpp

#include"stdafx.h"

#include"wh.h"

#include"UserSet.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

IMPLEMENT_DYNAMIC(CUserSet,CRecordset)

CUserSet:

:

CUserSet(CDatabase*pdb):

CRecordset(pdb)

{m_Puser=_T("");

m_Ppassword=_T("");

m_Pisadmin=FALSE;

m_nFields=3;

m_nDefaultType=snapshot;}

CStringCUserSet:

:

GetDefaultConnect()

{return_T("ODBC;DSN=WhODBC");}

CStringCUserSet:

:

GetDefaultSQL()

{return_T("[password]");}

voidCUserSet:

:

DoFieldExchange(CFieldExchange*pFX)

{pFX->SetFieldType(CFieldExchange:

:

outputColumn);

RFX_Text(pFX,_T("[Puser]"),m_Puser);

RFX_Text(pFX,_T("[Ppassword]"),m_Ppassword);

RFX_Bool(pFX,_T("[Pisadmin]"),m_Pisadmin);}

#ifdef_DEBUG

voidCUserSet:

:

AssertValid()const

{CRecordset:

:

AssertValid();}

voidCUserSet:

:

Dump(CDumpContext&dc)const

{CRecordset:

:

Dump(dc);}

#endif

文件:

StudentSet.cpp

#include"stdafx.h"

#include"wh.h"

#include"StudentSet.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

IMPLEMENT_DYNAMIC(CStudentSet,CRecordset)

CStudentSet:

:

CStudentSet(CDatabase*pdb):

CRecordset(pdb)

{m_Sname=_T("");

m_Sno=_T("");

m_Sage=_T("");

m_Snative=_T("");

m_Setime=_T("");

m_nFields=5;

m_nDefaultType=snapshot;}

CStringCStudentSet:

:

GetDefaultConnect()

{return_T("ODBC;DSN=WhODBC");}

CStringCStudentSet:

:

GetDefaultSQL()

{return_T("[student]");}

voidCStudentSet:

:

DoFieldExchange(CFieldExchange*pFX)

{pFX->SetFieldType(CFieldExchange:

:

outputColumn);

RFX_Text(pFX,_T("[Sname]"),m_Sname);

RFX_Text(pFX,_T("[Sno]"),m_Sno);

RFX_Text(pFX,_T("[Sage]"),m_Sage);

RFX_Text(pFX,_T("[Snative]"),m_Snative);

RFX_Text(pFX,_T("[Setime]"),m_Setime);}

#ifdef_DEBUG

voidCStudentSet:

:

AssertValid()const

{CRecordset:

:

AssertValid();}

voidCStudentSet:

:

Dump(CDumpContext&dc)const

{CRecordset:

:

Dump(dc);}

#endif

文件:

TeacherSet.cpp

#include"stdafx.h"

#include"wh.h"

#include"TeacherSet.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

IMPLEMENT_DYNAMIC(CTeacherSet,CRecordset)

CTeacherSet:

:

CTeacherSet(CDatabase*pdb):

CRecordset(pdb)

{m_Tname=_T("");

m_Tno=_T("");

m_Tage=_T("");

m_Ttitle=_T("");

m_Tdegree=_T("");

m_Tnative=_T("");

m_Twtime=_T("");

m_nFields=7;

m_nDefaultType=snapshot;}

CStringCTeacherSet:

:

GetDefaultConnect()

{return_T("ODBC;DSN=WhODBC");}

CStringCTeacherSet:

:

GetDefaultSQL()

{return_T("[teacher]");}

voidCTeacherSet:

:

DoFieldExchange(CFieldExchange*pFX)

{pFX->SetFieldType(CFieldExchange:

:

outputColumn);

RFX_Text(pFX,_T("[Tname]"),m_Tname);

RFX_Text(pFX,_T("[Tno]"),m_Tno);

RFX_Text(pFX,_T("[Tage]"),m_Tage);

RFX_Text(pFX,_T("[Ttitle]"),m_Ttitle);

RFX_Text(pFX,_T("[Tdegree]"),m_Tdegree);

RFX_Text(pFX,_T("[Tnative]"),m_Tnative);

RFX_Text(pFX,_T("[Tworktime]"),m_Twtime);}

#ifdef_DEBUG

voidCTeacherSet:

:

AssertValid()const

{CRecordset:

:

AssertValid();}

voidCTeacherSet:

:

Dump(CDumpContext&dc)const

{CRecordset:

:

Dump(dc);}

#endif

文件:

LoginDlg.cpp

#include"stdafx.h"

#include"wh.h"

#include"LoginDlg.h"

#include"UserSet.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

CLoginDlg:

:

CLoginDlg(CWnd*pParent):

CDialog(CLoginDlg:

:

IDD,pParent)

{m_valPass=_T("");

m_valUser=_T("");}

voidCLoginDlg:

:

DoDa

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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