《《面向对象程序设计》人员信息管理系统.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》人员信息管理系统.docx(29页珍藏版)》请在课桌文档上搜索。
1、成绩南京工程学院课程设计说明书(论文).题目人员管理信息系统课程名称面向对象程序设计B院(系、部、中心)通信工程学院专业班级学生姓名学号设计地点指导教师多媒体通信媒体通信Ill崔208110502信息楼C322郭丽红设计起止时间:2013年5月27H至2013年5月31日目录1 .系统设计的目的和意义32 .系统总框架图43 .软件功能描述54 .软件代码的设计64. 1数据结构描述及定义65. 2模块设计75 .软件使用说明126 .测试结果及分析127 .比较有特色的函数158 .存在的不足及对策179 .课程设计总结18附录:源程序清单18(正文,宋体,小四,1.5倍行距,每个段落开头空
2、两格)(字数要求:5000字左右,页数10页左右。)课程设计题目1 .系统设计的目的和意义随着现代高科技的迅速发展,计算机技术也有了突飞猛进的快速发展,因此为各个行业的普及应用奠定了基础。由于学校教师学生的数目众多,传统的手工作业已经不再适合学校统计人员信息的需要。传统的手工作业要处理巨额的数据,由于人员不停地改动,例如教工的调职、离职、新教师的加入,学生的入学、毕业等,人事部门要不停的更新数据,进行抄写。由于数据庞大,难免会出现错误,这对于员工管理非常不利。而利用计算机技术可以方便的、准确的、动态的对企业内部员工进行管理,减轻了人事部门的任务,节约人力资源,降低了企业的成本。基于计算机技术的
3、优越性,几乎所有的企业都使用计算机技术来实现对员工基本信息的管理。本系统将利用计算机技术模拟实现对企业员工的基本信息管理,主要实现对人员基本信息的管理,包括教师的姓名、年龄、籍贯、职称、学历、工作日期,学生的姓名、学号、年龄、籍贯、入学日期。如果有新人员加入该学校,可在添加新人员模块进行添加新人员操作。如果有人员辞职或退休,学生毕业或退学,也可以进行删除操作,同时可以通过列表查看所有人员的资料,也可以单独查询某个人员的信息,若是发现某个人员的信息有误,也可以对进行修改操作。2 .系统总框架图3 .软件功能描述(或设计目标或需求分析)对问题的描述应避开具体的算法和涉及的数据结构,描述系统实现功能
4、及达到的目标。首先增加一个对话窗口,插入自己设计好的图片,做一个人员信息管理系统的界面,然后级联一个窗口,做登录界面。实现用户名/密码的登录。登录界面:通过输入正确的用户名和密码,进入到人员管理系统的选择界面窗口。通过选择四个BUtton按钮,分别级联到教师信息窗口,学生信息窗口,全体教师信息窗口,全体学生信息窗口。查询:通过BUtton按钮,编写查询代码。可以通过输入关键字对人员信息进行查询。添加:通过BUttOn按钮,编写添加代码。可以输入相应的人员信息加入到数据库中。删除:通过BUttOn按钮,编写删除代码。可以删除掉需要删除的人员信息。修改:通过BUttOn按钮,编写修改代码。可以对查
5、询到的人员信息进行信息修改。退出:控件自带的BUtton按钮,可以退出界面。全体教师信息,和全体学生信息:窗口是通过LiStCtrI(列表控件)实现的,在新建的类中添加一个OninitdiaIOg()函数,然后在函数中写初始化代码,以及数据库中信息映射到列表中的代码,实现全体人员信息的查询,便于管理员管理。4软件代码的设计说明算法(程序)中用到的所有各种数据结构的描述及定义,核心模块设计,每个模块的算法描述及流程图(用WORD,或画图板,或ViSio画图软件)建议用ViSi0。流程图要规范(有开始,结束,一个入口,一个出口)。4 .1数据结构描述及定义所用的到的主要数据结构的描述,标准C+语言
6、定义数据结构voidCCQWDIg:OnOK()在类CCQWDlg中定义用户登录函数voidstudentinfo:OnSadd()在类StUdentinfO中定义增加函数voidStUdentinfo:OnSearchO在类Studentinfo中定义查询函数voidStUdentinfO:OnSchange()在类Studentinfo中定义修改函数voidStUdentinfO:OnSdelete()在类studentinfo中定义删除函数voidteacherinfo:OnSearCh2()在类teacherinfo中定义查询函数voidteacherinfo:0nAdd2()在类te
7、acherinfo中定义增加函数voidteacherinfo:OnDelete2()在类teacherinfo中定义删除函数voidteacherinfo:OnChange2()在类teacherinfo中定义修改函数BOOLallstu:IOnInitDialog()在类allstu中定义InitDialog函数BOOLalltea:IOnInitDialogO在类alItea中定义InitDialog函数4 .2模块设计系统共分儿个模块,每个模块的算法描述及流程图(核心模块)。1、登录界面流程图2、查询模块流程图3、增加模块流程图4、修改模块流程图打开数据源5、删除模块流程图6、列表控件
8、(IiStCtrl控件)流程图5 .软件使用说明使用本软件之前必须先到数据源里映射下数据库,使它们连接起来。登录时先进入登录界面的程序查询一下登陆的用户名和密码。6 .测试结果及分析按系统功能描述(设计目标)测试软件运行是否正确,测试数据的选择要代表性,列出所有测试用的输入数据和相应的输出数据以及测试结果。原始数据库:nstudent;表3小李1小王4小周403520高高高本科生 研究生本科江苏盐城 江苏南京 映西1996-9-12004-9-103赵一30博士生2010-6-21nameagenumberbirthplaceentrancetime201江苏南京2011-9-1小崔202江苏
9、东台2011-9l小孙203江苏扬州2011-9-1Xif2Q4基金244米XhiChneducationbirthplcworktimteache:表(自动编号)程序运行结果;登录界面:ZCQ区按登录键进入选择界面:以教师信息查询为例,输入关键字赵一,点击查询:点击确定键,结果如下图:在选择界面点击全体教师信息或全体学生信息如下:全体教师信息凶理田历科究科士学本研本博一遮田全体教师信息I称级级级职寓高高高龄一二 0 5 0 04 3 2 3咨李王周一姓小小小UpdateData(true);if(this-m_name=“CUiqianWenthis-mPaSSWard=4321)selec
10、tdig;dig.DoModal();elseMessageBox(登录有误);CCQWDlgdig;dig.DoModal();BOOLallstu:IOnInitDialog()CDialog:OnInitDialogO;/TODO:Addextrainitializationheremist.InsertColumn(0,姓名,LVCFMT_LEFT,100);mist.InsertColumnd,年龄,LVCFMT_LEFT,100);m_list.InsertColumn(2,学号,LVCFMTLEFT,100);mist.InsertColumn(3,籍贯,LVCFMT_LEFT,
11、100);m_list.InsertColumn(4,入学日期,LVCFMTLEFT,100);/returnTRUEunlessyousetthefocustoacontrol/EXCEPTION:OCXPropertyPagesshouldreturnFALSEstudents(&dl);CStringStr=select*fromstudent;5. Open(student:dynaset,T(str);while(!s.IsEOF0)intnlndex=mlist.GetItemCountO;nlndex=mlist.InsertItem(nlndex,(char*)(LPCTSTR
12、)str);mlist.SetItemText(nlndex,0,s.mname);mlist.SetItemText(nlndex,1,s.mage);mlist.SetItemText(nlndex,2,s.mnumber);mlist.SetItemText(nlndex,3,s.mbirthplace);mlist.SetItemText(nlndex,4,s.mentrance_time);5. MoveNext();6. CloseO:returnTRUE;8 .存在的不足及对策系统相对来讲还是较简洁的,若是要进行修改操作的话,需先进行查找,然后在每一个记录上修改,这样实行起来比较
13、麻烦,可以设置一个弹出窗口,在弹出的窗口上修改记录。另外,查找时仅仅可以使用主键进行查找,例如学生仅仅可以通过学号进行查找某个学生信息,教师仅仅可以通过姓名查找某个教师信息,我们可以通过多写几个语句,可以通过其他的方式查找。9 .课程设计总结总结可以包括:课程设计过程的收获、遇到问题、遇到问题解决问题过程的思考、程序调试能力的思考、对C+这门课程的思考、在课程设计过程中对C+课程的认识等内容本次课程设计,使我加深了对C+面向对象程序设计的理解。通过本次课程设计,我学到了很多知识,C+面向对象是通过类来实现的。由于我们对VCMFC编程不熟悉,只通过上课看老师演示一遍是不够的,所以刚开始感觉无从下
14、手,一片茫然,所以就先看了一些教程,再看了一些关于MFC的操作,然后自己尝试做一些重要的模块,比如窗口的级联,然后熟悉了MFC。在做课程设计的时候,我遇到LE些问题。有些问题,和同学一讨论就可以解决,比如星期一的时候,我们就尝试做窗口的级联,怎么在主窗口之前插入一个对话框,做了好多遍都不成功,运行时都是直接跳出主窗口,然后上网查了一下资料,在MAINFARM.CPP中插入对话框类的对象,解决了问题。我们在网上也搜寻解决问题的方法,许多问题都可以解决,比如列表框,即LiStCtrl控件的使用,也得到了解决。在这次课程设计中,我学到了很多知识,不仅仅是关于VC+的知识,还学到了遇到困难不能光着急,
15、要积极寻求解决问题的方法。要懂得和同学交流,然后去共同解决问题。也可以去网上搜寻解决该方案。毕竟一个人的能力有限,不可能一个人解决所有的问题。课程设计其实很能锻炼学生解决问题的能力,可以提高我们对C+的整体认识。在这次课程设计中我锻炼了我的实际编程能力,以前我只是学习简单的语法知识,学习对面向对象的理解,其实只有在试验中,才能体会到它的模块性,它的封装性。这次课程设计的经历为以后的学习和工作积累了很多经验,受益匪浅。这次课程设计是我独立完成的,刚开始总是出现错误,找不到解决的方法,然后就重新做,这让我明白,编程需谨慎,程序中不允许出现任何小的错误,此外在帮助别人解决问题时,也拓展了我自己解决程
16、序中错误的能力,怎么从提示错误的语句中发现错误的根源,并改正过来是很重要的。这次课程设计能够做成功还是有成就感的,非常感谢老师给我们这次课程设计的机会。附录:源程序清单编码规范,符合软件工程的要求(变量名,函数名见名知义,注释规范占总程序行数的2/5)。CQW.CPP/CQW为工程文件名/select为选择对话框的类/enter为欢迎窗口的类名includestdafx.httincludeCQW.hincludeCQWDlg.httincludeselect,h名ttincludeenter,h#ifdef_DEBUG#definenewDEBUG_NEWttundefTHIS_FILEst
17、aticcharTHIS_FILE=_FILE甘CndifBOOLCCQWApp:InitInstance)AfxEnableControlContainer();enterd:为了使在登录窗口之前跳出欢迎界面d.DoModal();ttifdef-AFXDLLEnableBdControlsO;/CallthiswhenusingMFCinasharedDLL#elseEnable3dControlsStatic();/CallthiswhenlinkingtoMFCstatically#endifCCQWDlgdig;HipMainWnd-&dlg;intnResponse-dig.DoM
18、odal();if(nResponse=IDOK)elseif(nResponse=IDCANCEL)returnFALSE;CQTOlg.CPP#includestdafx.httincludeCQ犯h#includeCQWDlg.h#includeselect,httincludestudent,h#includeafxdb.h#ifdefDEBUGdefinenewDEBUG_NEWttundefTHIS_FILEstaticcharTHIS_FILE=FILECDatabasecc;#endifvoidCCQWDlg-OnOKO用户名、密码登录/TODO:Addextravalidat
19、ionherethis-UpdateData(true);if(this-m_name=“CUiqianWen&this-m_passward=4321)selectdig;dig.DoModal();elseMessageBox(登录有误);CCQWDlgdig;dig.DoModal();以学生为例;#includestdafx.httincludeCQ犯httincludestudentinfo,httincludestudent,httifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE=FILE#endifi
20、ntflag;CDatabasedb;voidstudentinfo:OnSaddO增加学生/TODO:Addyourcontrolnotificationhandlercodeherestudents(&db);CStringstr=select*fromstudent;5. Open(student:dynaset,T(str);UpdateData(true);6. AddNewO;7. mnumber=msno;8. m_age=m_sage;9. mname-msname;s.m_birth_place=m_sbp;s.mentrancetime=msin;10. Update();
21、11. Close();AfXMeSSageBOx(success);voidstudentinfo:OnSearchO查找学生信息/TODO:Addyourcontrolnotificationhandlercodeherestudents(&db);UpdateData(true);CStringstr=select*fromstudent;12. Open(student:dynaset,T(str);while(!s.IsEOF()if (inSno=s. m number)tmsname-s.mname;m_sage=s.mage;msbp-s.mbirthplace;msin-s.
22、Hientrancetime;fIag=I;break;elses.MoveNext();if(flag=l)AfXMeSSageBOx(SUCCeSS);elseAfxMessageBox(,nodata);UpdateDataCfalse);5. Close();voidstudentinfo:OnSchangeO修改学生信息/TODO:Addyourcontrolnotificationhandlercodeherestudents(&db);CStringstr=select*fromstudent;6. Open(student:dynaset,T(str);UpdateData(t
23、rue);whiIe(!s.IsEOFO)if(msnos.mnumber)flag-1;break;elses.MoveNext();if(flag=l)s,Edit();5. mnumber-msno;5. m_age=m_sage;6. m_name=m_sname;5 .mbirthplace-msbp;6 .enLrance_time=m_sin;5, Update);AfXMeSSageBox(success);elseAfxMessageBox(,nodata);5. Close();voidstudentinfo:OnSdelete()/7删除学生信息/TODO:Addyour
24、controlnotificationhandlercodeherestudents(&db);CStringstr=select*fromstudent;6. Open(student:dynaset,T(str);UpdateData(true);while(!s.IsEOF()if(msnos.mnumber)fIag=I;break;elses.MoveNext();if(flag=-l)s.DeIeteO;AfXMeSSageBOx(success);elseAfxMessageBox(,nodata);7. Close();用列表BOOLallstu:IOnInitDialogO控
25、件显示全体学生信息CDialog:OnInilDialog();/TODO:Addextrainitializationheremist.InsertColumn(0,姓名,LVCFMT_LEFT,100);m_list.InsertColumn(1,年龄,LVCFMT_LEFT,100);m_list.InsertColumn(2,学号,LVCFMTLEFT,100);mist.InsertColumn(3,籍贯,LVCFMT_LEFT,100);m_list.InsertColumn(4,入学日期,LVCFMTLEFT,100);/returnTRUEunlessyousetthefocu
26、stoacontrol/EXCEPTION:OCXPropertyPagesshouldreturnFALSEstudents(&dl);CStringStr=select*fromstudent;s.Open(student:dynaset,T(str);while(!s.IsEOF()intnlndex=mlist.GetItemCount();nlndex=m_list.InsertItem(nlndex,(char*)(LPCTSTR)str);m_list.SetItemText(nlndex,0,s.mname);mlist.SetItemText(nlndex,1,s.mage);m_list.SetItemText(nlndex,2,s.mnumber);m_list.SetItemText(nlndex,3,s.mbirthplace);mlist.SetItemText(nlndex,4,s.m_entrance_time);s.MoveNext();s.Close();returnTRUE;voidallstu:0n0K()/TODO:AddextravalidationhereCDialog:OnOK();