《面向对象程序设计》人员信息管理系统.docx
《《面向对象程序设计》人员信息管理系统.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》人员信息管理系统.docx(22页珍藏版)》请在冰豆网上搜索。
《面向对象程序设计》人员信息管理系统
南京工程学院
课程设计说明书(论文)
题目人员管理信息系统
课程名称面向对象程序设计B
院(系、部、中心)通信工程学院
专业多媒体通信
班级媒体通信111
学生姓名崔
学号208110502
设计地点信息楼C322
指导教师郭丽红
设计起止时间:
2013年5月27日至2013年5月31日
(正文,宋体,小四,1.5倍行距,每个段落开头空两格)
(字数要求:
5000字左右,页数10页左右。
)
课程设计题目
1.系统设计的目的和意义
随着现代高科技的迅速发展,计算机技术也有了突飞猛进的快速发展,因此为各个行业的普及应用奠定了基础。
由于学校教师学生的数目众多,传统的手工作业已经不再适合学校统计人员信息的需要。
传统的手工作业要处理巨额的数据,由于人员不停地改动,例如教工的调职、离职、新教师的加入,学生的入学、毕业等,人事部门要不停的更新数据,进行抄写。
由于数据庞大,难免会出现错误,这对于员工管理非常不利。
而利用计算机技术可以方便的、准确的、动态的对企业内部员工进行管理,减轻了人事部门的任务,节约人力资源,降低了企业的成本。
基于计算机技术的优越性,几乎所有的企业都使用计算机技术来实现对员工基本信息的管理。
本系统将利用计算机技术模拟实现对企业员工的基本信息管理,主要实现对人员基本信息的管理,包括教师的姓名、年龄、籍贯、职称、学历、工作日期,学生的姓名、学号、年龄、籍贯、入学日期。
如果有新人员加入该学校,可在添加新人员模块进行添加新人员操作。
如果有人员辞职或退休,学生毕业或退学,也可以进行删除操作,同时可以通过列表查看所有人员的资料,也可以单独查询某个人员的信息,若是发现某个人员的信息有误,也可以对进行修改操作。
2.系统总框架图
3.软件功能描述
(或设计目标或需求分析)对问题的描述应避开具体的算法和涉及的数据结构,描述系统实现功能及达到的目标。
首先增加一个对话窗口,插入自己设计好的图片,做一个人员信息管理系统的界面,然后级联一个窗口,做登录界面。
实现用户名/密码的登录。
登录界面:
通过输入正确的用户名和密码,进入到人员管理系统的选择界面窗口。
通过选择四个Button按钮,分别级联到教师信息窗口,学生信息窗口,全体教师信息窗口,全体学生信息窗口。
查询:
通过Button按钮,编写查询代码。
可以通过输入关键字对人员信息进行查询。
添加:
通过Button按钮,编写添加代码。
可以输入相应的人员信息加入到数据库中。
删除:
通过Button按钮,编写删除代码。
可以删除掉需要删除的人员信息。
修改:
通过Button按钮,编写修改代码。
可以对查询到的人员信息进行信息修改。
退出:
控件自带的Button按钮,可以退出界面。
全体教师信息,和全体学生信息:
窗口是通过Listctrl(列表控件)实现的,在新建的类中添加一个oninitdialog()函数,然后在函数中写初始化代码,以及数据库中信息映射到列表中的代码,实现全体人员信息的查询,便于管理员管理。
4.软件代码的设计
说明算法(程序)中用到的所有各种数据结构的描述与定义,核心模块设计,每个模块的算法描述及流程图(用WORD,或画图板,或Visio画图软件)建议用Visio。
流程图要规范(有开始,结束,一个入口,一个出口)。
4.1数据结构描述与定义
所用的到的主要数据结构的描述,标准C++语言定义数据结构
voidCCQWDlg:
:
OnOK()//在类CCQWDlg中定义用户登录函数
voidstudentinfo:
:
OnSadd()//在类studentinfo中定义增加函数
voidstudentinfo:
:
OnSearch()//在类studentinfo中定义查询函数
voidstudentinfo:
:
OnSchange()//在类studentinfo中定义修改函数
voidstudentinfo:
:
OnSdelete()//在类studentinfo中定义删除函数
voidteacherinfo:
:
OnSearch2()//在类teacherinfo中定义查询函数
voidteacherinfo:
:
OnAdd2()//在类teacherinfo中定义增加函数
voidteacherinfo:
:
OnDelete2()//在类teacherinfo中定义删除函数
voidteacherinfo:
:
OnChange2()//在类teacherinfo中定义修改函数
BOOLallstu:
:
OnInitDialog()//在类allstu中定义InitDialog函数
BOOLalltea:
:
OnInitDialog()//在类alltea中定义InitDialog函数
4.2模块设计
系统共分几个模块,每个模块的算法描述及流程图(核心模块)。
1、登录界面流程图
2、查询模块流程图
3、增加模块流程图
4、修改模块流程图
5、删除模块流程图
6、列表控件(listctrl控件)流程图
5.软件使用说明
使用本软件之前必须先到数据源里映射下数据库,使它们连接起来。
登录时先进入登录界面的程序查询一下登陆的用户名和密码。
6.测试结果与分析
按系统功能描述(设计目标)测试软件运行是否正确,测试数据的选择要代表性,列出所有测试用的输入数据和相应的输出数据以及测试结果。
原始数据库:
程序运行结果:
登录界面:
按登录键进入选择界面:
以教师信息查询为例,输入关键字赵一,点击查询:
点击确定键,结果如下图:
在选择界面点击全体教师信息或全体学生信息如下:
7.比较有特色的函数
voidCCQWDlg:
:
OnOK()
{//TODO:
Addextravalidationhere
this->UpdateData(true);
if(this->m_name=="cuiqianwen"&&this->m_passward=="4321")
{selectdlg;
dlg.DoModal();}
else
{MessageBox("登录有误");
CCQWDlgdlg;
dlg.DoModal();}
}
BOOLallstu:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
//TODO:
Addextrainitializationhere
m_list.InsertColumn(0,"姓名",LVCFMT_LEFT,100);
m_list.InsertColumn(1,"年龄",LVCFMT_LEFT,100);
m_list.InsertColumn(2,"学号",LVCFMT_LEFT,100);
m_list.InsertColumn(3,"籍贯",LVCFMT_LEFT,100);
m_list.InsertColumn(4,"入学日期",LVCFMT_LEFT,100);
//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
students(&d1);
CStringstr="select*fromstudent";
s.Open(student:
:
dynaset,_T(str));
while(!
s.IsEOF())
{intnIndex=m_list.GetItemCount();
nIndex=m_list.InsertItem(nIndex,(char*)(LPCTSTR)str);
m_list.SetItemText(nIndex,0,s.m_name);
m_list.SetItemText(nIndex,1,s.m_age);
m_list.SetItemText(nIndex,2,s.m_number);
m_list.SetItemText(nIndex,3,s.m_birth_place);
m_list.SetItemText(nIndex,4,s.m_entrance_time);
s.MoveNext();
}
s.Close();
returnTRUE;
}
8.存在的不足与对策
系统相对来讲还是较简洁的,若是要进行修改操作的话,需先进行查找,然后在每一个记录上修改,这样实行起来比较麻烦,可以设置一个弹出窗口,在弹出的窗口上修改记录。
另外,查找时仅仅可以使用主键进行查找,例如学生仅仅可以通过学号进行查找某个学生信息,教师仅仅可以通过姓名查找某个教师信息,我们可以通过多写几个语句,可以通过其他的方式查找。
9.课程设计总结
总结可以包括:
课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对C++这门课程的思考、在课程设计过程中对C++课程的认识等内容
本次课程设计,使我加深了对C++面向对象程序设计的理解。
通过本次课程设计,我学到了很多知识,C++面向对象是通过类来实现的。
由于我们对vcMFC编程不熟悉,只通过上课看老师演示一遍是不够的,所以刚开始感觉无从下手,一片茫然,所以就先看了一些教程,再看了一些关于MFC的操作,然后自己尝试做一些重要的模块,比如窗口的级联,然后熟悉了MFC。
在做课程设计的时候,我遇到LE一些问题。
有些问题,和同学一讨论就可以解决,比如星期一的时候,我们就尝试做窗口的级联,怎么在主窗口之前插入一个对话框,做了好多遍都不成功,运行时都是直接跳出主窗口,然后上网查了一下资料,在MAINFARM.CPP中插入对话框类的对象,解决了问题。
我们在网上也搜寻解决问题的方法,许多问题都可以解决,比如列表框,即Listctrl控件的使用,也得到了解决。
在这次课程设计中,我学到了很多知识,不仅仅是关于VC++的知识,还学到了遇到困难不能光着急,要积极寻求解决问题的方法。
要懂得和同学交流,然后去共同解决问题。
也可以去网上搜寻解决该方案。
毕竟一个人的能力有限,不可能一个人解决所有的问题。
课程设计其实很能锻炼学生解决问题的能力,可以提高我们对C++的整体认识。
在这次课程设计中我锻炼了我的实际编程能力,以前我只是学习简单的语法知识,学习对面向对象的理解,其实只有在试验中,才能体会到它的模块性,它的封装性。
这次课程设计的经历为以后的学习和工作积累了很多经验,受益匪浅。
这次课程设计是我独立完成的,刚开始总是出现错误,找不到解决的方法,然后就重新做,这让我明白,编程需谨慎,程序中不允许出现任何小的错误,此外在帮助别人解决问题时,也拓展了我自己解决程序中错误的能力,怎么从提示错误的语句中发现错误的根源,并改正过来是很重要的。
这次课程设计能够做成功还是有成就感的,非常感谢老师给我们这次课程设计的机会。
附录:
源程序清单
编码规范,符合软件工程的要求(变量名,函数名见名知义,注释规范占总程序行数的2/5)。
CQW.CPP
#include"stdafx.h"//CQW为工程文件名
#include"CQW.h"
#include"CQWDlg.h"
#include"select.h"//select为选择对话框的类名
#include"enter.h"//enter为欢迎窗口的类名
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
BOOLCCQWApp:
:
InitInstance()
{
AfxEnableControlContainer();
enterd;//为了使在登录窗口之前跳出欢迎界面
d.DoModal();
#ifdef_AFXDLL
Enable3dControls();//CallthiswhenusingMFCinasharedDLL
#else
Enable3dControlsStatic();//CallthiswhenlinkingtoMFCstatically
#endif
CCQWDlgdlg;
m_pMainWnd=&dlg;
intnResponse=dlg.DoModal();
if(nResponse==IDOK)
{}
elseif(nResponse==IDCANCEL)
{}
returnFALSE;
}
CQWDlg.CPP
#include"stdafx.h"
#include"CQW.h"
#include"CQWDlg.h"
#include"select.h"
#include"student.h"
#include"afxdb.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
CDatabasecc;
#endif
voidCCQWDlg:
:
OnOK()//用户名、密码登录
{
//TODO:
Addextravalidationhere
this->UpdateData(true);
if(this->m_name=="cuiqianwen"&&this->m_passward=="4321")
{
selectdlg;
dlg.DoModal();
}
else
{MessageBox("登录有误");
CCQWDlgdlg;
dlg.DoModal();}
}
以学生为例;
#include"stdafx.h"
#include"CQW.h"
#include"studentinfo.h"
#include"student.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
intflag;
CDatabasedb;
voidstudentinfo:
:
OnSadd()//增加学生
{
//TODO:
Addyourcontrolnotificationhandlercodehere
students(&db);
CStringstr="select*fromstudent";
s.Open(student:
:
dynaset,_T(str));
UpdateData(true);
s.AddNew();
s.m_number=m_sno;
s.m_age=m_sage;
s.m_name=m_sname;
s.m_birth_place=m_sbp;
s.m_entrance_time=m_sin;
s.Update();
s.Close();
AfxMessageBox("success");
}
voidstudentinfo:
:
OnSearch()//查找学生信息
{
//TODO:
Addyourcontrolnotificationhandlercodehere
students(&db);
UpdateData(true);
CStringstr="select*fromstudent";
s.Open(student:
:
dynaset,_T(str));
while(!
s.IsEOF())
{
if(m_sno==s.m_number)
{m_sname=s.m_name;
m_sage=s.m_age;
m_sbp=s.m_birth_place;
m_sin=s.m_entrance_time;
flag=1;
break;
}else{s.MoveNext();}
}
if(flag==1)AfxMessageBox("success");
elseAfxMessageBox("nodata");
UpdateData(false);
s.Close();
}
voidstudentinfo:
:
OnSchange()//修改学生信息
{
//TODO:
Addyourcontrolnotificationhandlercodehere
students(&db);
CStringstr="select*fromstudent";
s.Open(student:
:
dynaset,_T(str));
UpdateData(true);
while(!
s.IsEOF())
{if(m_sno==s.m_number){flag=1;break;}
else{s.MoveNext();}
}
if(flag==1)
{s.Edit();
s.m_number=m_sno;
s.m_age=m_sage;
s.m_name=m_sname;
s.m_birth_place=m_sbp;
s.m_entrance_time=m_sin;
s.Update();
AfxMessageBox("success");
}
elseAfxMessageBox("nodata");
s.Close();
}
voidstudentinfo:
:
OnSdelete()//删除学生信息
{
//TODO:
Addyourcontrolnotificationhandlercodehere
students(&db);
CStringstr="select*fromstudent";
s.Open(student:
:
dynaset,_T(str));
UpdateData(true);
while(!
s.IsEOF())
{
if(m_sno==s.m_number)
{flag=1;break;}
elses.MoveNext();
}
if(flag==1)
{s.Delete();
AfxMessageBox("success");
}
elseAfxMessageBox("nodata");
s.Close();
}
BOOLallstu:
:
OnInitDialog()//用列表控件显示全体学生信息
{
CDialog:
:
OnInitDialog();
//TODO:
Addextrainitializationhere
m_list.InsertColumn(0,"姓名",LVCFMT_LEFT,100);
m_list.InsertColumn(1,"年龄",LVCFMT_LEFT,100);
m_list.InsertColumn(2,"学号",LVCFMT_LEFT,100);
m_list.InsertColumn(3,"籍贯",LVCFMT_LEFT,100);
m_list.InsertColumn(4,"入学日期",LVCFMT_LEFT,100);
//returnTRUEunlessyousetthefocustoacontrol
//EXCEPTION:
OCXPropertyPagesshouldreturnFALSE
students(&d1);
CStringstr="select*fromstudent";
s.Open(student:
:
dynaset,_T(str));
while(!
s.IsEOF())
{intnIndex=m_list.GetItemCount();
nIndex=m_list.InsertItem(nIndex,(char*)(LPCTSTR)str);
m_list.SetItemText(nIndex,0,s.m_name);
m_list.SetItemText(nIndex,1,s.m_age);
m_list.SetItemText(nIndex,2,s.m_number);
m_list.SetItemText(nIndex,3,s.m_birth_place);
m_list.SetItemText(nIndex,4,s.m_entrance_time);
s.MoveNext();
}
s.Close();
returnTRUE;
}
voidallstu:
:
OnOK()
{
//TODO:
Addextravalidationhere
CDialog:
:
OnOK();
}