




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
吉首大学本科生毕业论文JISHOUUNIVERSITY本科生毕业设计题目:基于C++的学生宿舍管理系统的设计与实现作者:学号:所属学院:信息科学与工程学院专业年级:指导教师:李建锋职称:副教授完成时间:2014年5月23日吉首大学教务处制目录TOC\o"1-2"\h\u76摘要 第1章绪论1.1课题设计背景及现状随着计算机产业的飞速发展,电子计算机已经被广泛的应用于文字处理、信息管理、辅助教学、辅助设计以及人们的日常生活当中。尤其是在计算机的操作系统具有了图形化的界面后,使用计算机早已经不再是某些专业人员的特权,各行各业的人们不需要经过专业化的训练就能自如的在计算机上进行各种复杂的操作。学生宿舍管理系统对于一所学校来说将是必不可少的组成部分。当今社会是个飞速进步的世界,原始的记录方式早已经被社会所淘汰,计算机化管理正是适应时代的产物。21世纪的今天,信息社会占据着主流地位,计算机在各行中的运用已经得到了普及,自动化、信息化的管理也越来越广泛地应用于各个领域。目前很多学校还停留在宿舍管理人员依靠手工记录数据的最初阶段,手工记录相对于规模较小的学校来说还可以勉强接受,但相对于学生信息量比较庞大,需要记录存档的数据较多的高校来说,人工记录是相当的麻烦的。而且当查找某条记录的时候,由于数据量非常庞大,还只能靠人工一条一条的去查找,这样不但麻烦而且浪费了许多时间,效率也就比较低。针对以上这些情况,设计一个学生宿舍管理系统,使系统能够解决当前存在的这些问题。此系统采用的是计算机化管理,系统做到尽量人性化,让使用者能够感觉到操作非常的方便,管理人员只需要做的就是将数据录入到系统的数据库中去。由于数据库存储容量很大,而且非常稳定,适合长时间保存,也不易丢失。这毫无疑问可以解决学校在手工宿舍管理所存在的各种问题,能够更方便的查询以及统计各项信息。本系统具有安全性高、稳定性好、运行速度快的优点,并且能够非常快速的查询学校所需的各项信息[1]。第2章相关知识点介绍2.1C++知识介绍MicrosoftVisualC++,(简称VisualC++、MSVC、VC++或VC)微软公司的C++开发工具,具有集成开发环境,可编辑C语言,C++以及C++/CLI等编程语言。VC++整合了非常便利的除错工具,而且整合了微软视窗程式设计(WindowsAPI)、三维动画DirectXAPI,Microsoft.NET框架。目前最新的版本是MicrosoftVisualC++2013。它利用MFC类库的强大优势,使其成为Windows平台最为优秀的开发工具之一,也是目前功能最为强大的程序开发平台之一。MFC是采用VisualC++开发环境编写Windows应用程序的最佳选择,它是一组C++类,采用它可以为用户定制特定的Windows应用程序[2]。C++这个名字是RickMascitti于1983年中所建议的,并于1983年12月首次使用。更早以前,尚在研究阶段的发展中语言曾被称为“newC”,之后是“CwithClasses”。在计算机科学中,C++仍被称为C语言的上层结构。它最后得名于C语言中的“++”操作符(其对变量的值进行递增)。而且在共同的命名约定中,使用“+”以表示增强的程序。Stroustrup说:“这个名字象征著源自于C语言变化的自然演进”。C++以拥有“语法高亮”,IntelliSense(自动完成功能)以及高级除错功能而著称。使用它,用户可以进行远程调试,单步执行等。用户还能在调试期间重新编译被修改的代码,而不用重新启动正在调试的程序。其编译和建置系统以最小重建功能、预编译头文件及累加连结著称[3]。C++课程是计算机专业的专业基础课程,具有较强的理论性和非常高的实践操作性。该课程的主要作用和目的是:培养学生面向对象编程思想,训练学生的编程思维,加强学生的技能训练,培养学生面向对象的程序设计能力和团队合作的意识,以便更好地适应将来工作岗位[4]。2.2ADO知识介绍ADO(activeXdataobjects)是基于组件的数据库编程接口,它是一个和编程语言无关的COM组件系统ADO的精髓在于利用简单的COM指令来快速方便地访问ODBC数据源,微软的表格、列表框等ActiveX控件,使得用户可以简便地利用ADO工作.ADO应用程序通过OLEDB提供程序访问数据.虽然ADO应用程序仍能对SQLServerODBC驱动程序使用ODBC的OLEDB提供程序,但使用SQLServer的OLEDB提供程序效率更高[5]。在MicrosoftVisualC++编辑器中,可以使用ADO对象以及ADO的附加组件(称为MicrosoftADOExtensionsforDLLandSecurity(ADOX))来创建或修改表和查询、检验数据库、或者访问外部数据源。还可在代码中使用ADO来操作数据库中的数据。2.3SQLSever2000知识介绍SQLServer2000是Microsoft公司推出的SQLServer数据库管理系统的一个版本。该版本继承了SQLServer7.0版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台使用。具备以下几个特性:1、数据结构化2、数据共享性高、冗余度小、易扩充3、数据独立性高4、统一的数据管理和控制[6]具备以下几个优点:1、系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。2、强壮的事务处理功能,采用各种方法保证数据的完整性。3、支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。SQLServer以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。2.4本章小结本章重点介绍了开发“学生宿舍管理系统”所用到的开发工具与其应用的数据库系统。对C++的说明与相关控件技术进行了系统的介绍。SQLServer2000作为应用最为广泛的数据库系统,它最大限度的支持了系统的需求,实现了本系统的各项功能。通过两种工具的有机结合开发出的系统充分地满足了用户的需求。本章通过介绍面向对象的编程以及两种工具的发展与其相应的技术,使大多数人明白了本系统的开发原理与相关技术的应用。第3章系统需求分析3.1功能需求3.1.1基本功能需求本课题将要实现的是高校学生宿舍管理系统,因此在设计该系统时,要尽可能的贴近学生实际,便于用户操作。系统在实现中应该具有如下功能:1.系统要求用户必须要输入正确的用户名和密码才能进入该系统。2.系统应该提供学生住宿情况的基本信息登记。3.系统应该提供查询功能,以方便用户可对学生的基本信息查询(要实现可按多种条件的查询)以及楼房信息的查询。4.系统应该提供增加、删除、修改用户帐户的功能以及对帐户的权限进行设定。5.系统还应具有增加、删除、修改学生基本信息的功能。6.系统应该具有统计学生人数(如总人数,男女生人数等)的功能。7.系统应具有每学期学生入学和离校的注册登记。8.系统应具有来访人员的详细登记。9.系统应具有学生个人物品进出宿舍情况的详细登记。10.系统应具有对学生宿舍的卫生和出勤进行登记[7]。3.1.2用户界面需求学生宿舍管理系统应当提供简单、明了、层次清晰的用户操作界面,使用户操作的时候能够一目了然。以让用户在使用该系统录入、查询、修改信息的时候能够更加的方便、快捷。3.2性能需求3.2.1系统安全性学生宿舍管理系统中的用户管理以及学生宿舍管理中的信息是很重要的,一般不允许随意篡改的,所以在系统的管理权限上应当进行严格控制,具体思想如下:要想对该学生宿舍管理系统进行操作就应当具有某些操作权限。没有权限的用户将不能通过任何渠道来登录该系统,查看该系统的任何信息和数据,以确保系统的严密性和安全性。在上述要求基础上,可以为此系统设定两种登录方式,即超级用户登录和普通用户登录,没有超级用户或者普通用户的用户名和密码,任何人都不可以登录该系统,而且超级用户可以操作很多普通用户不能操作的模块。3.3数据库选择数据库指的是以一定方式储存在一起、能为多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。近年来,数据库管理系统已经从专用的应用程序包迅速地发展为通用系统软件,目前有很多种数据库,最典型的如ORACLE、MySQL、ACCESS。其中ORACLE是适用于数据量大,并发操作多的系统,相对于学生宿舍管理系统这种不是特别大的管理系统而言,不必要选用ORACLE,而ACCESS是小型的数据库,可存储的数据量相对来说最少,且同时访问客户端不能多于4个。因此也不选用ACCESS数据库。考虑到以上实际情况,对于学生基本信息必须的变动,还有各种数据信息的数据量的变化,故选用MySQL作为数据库开发软件。SQLServer2000是MySQL中一种常用的关系数据库,能存放和读取大量的数据,管理众多并发的用户,故选用SQLServer2000数据库。3.4开发环境本系统是用WindowsXp系统为开发平台,用MicrosoftVisualC++编程语言中的MFC和SQLServer2000数据库来对高校学生宿舍管理系统所需要的功能进行实现。3.5本章小结 本章非常具体地介绍了系统的需求分析,通过系统的需求分析而得出了系统的总体设计方向,确定了系统的开发框架。本章对系统的实现的功能作了简单的概述,得出了系统的主体流程。通过对系统的各项分析,得出了实现系统功能的要用到的基本方法,并确定了使用的开发工具。
第4章宿舍管理系统详细设计学生宿舍管理系统4.1系统功能模块图学生宿舍管理系统系统管理系统管理出入登记学生管理查询管理宿舍管理出入登记学生管理查询管理宿舍管理统计分析帮统计分析帮助退出系统用户管理退出系统用户管理空宿舍查询新生入住宿舍来访人员登记物品进出登记宿舍信息查询人数统计空宿舍查询新生入住宿舍来访人员登记物品进出登记宿舍信息查询人数统计关于物品进出查询学生出勤查询来访人员查询学生注册查询宿舍管理学生信息录入物品进出查询学生出勤查询来访人员查询学生注册查询宿舍管理学生信息录入学生财务登记学生注册管理学生离校登记学生出勤管理图1系统功能模块图在整体设计中,我们将宿舍管理系统分为七个大的模块:系统管理模块、宿舍管理模块、学生管理模块、出入登记模块、查询管理模块、统计分析模块、帮助模块。每个模块将实现不同的功能,下面将具体进行介绍。4.1.1系统管理模块系统管理模块包括:用户管理、退出系统两个部分。1、用户管理:实现所有用户信息的增删查改功能以及显示用户。2、退出系统:实现正常退出宿舍管理系统。4.1.2宿舍管理模块宿舍管理模块包括:宿舍管理、新生入住宿舍两个大的部分。1、宿舍管理:实现对宿舍的登记。2、新生入住宿舍:实现对学生入住宿舍信息登记的增删查改。4.1.3学生管理模块学生管理模块包括:学生信息录入、学生财物登记、学生注册管理、学生离校登记、学生出勤管理、来访人员登记、物品进出登记五个部分。1、学生信息录入:实现对学生基本信息的登记。2、学生财务登记:实现对学生所拥有财务的登记。3、学生注册管理:实现对学生新学期返校的注册。4、学生离校管理:实现对学生放假离校的登记。5、学生出勤管理:实现对学生查寝情况的登记。4.1.4出入登记模块出入登记模块包括:来访人员登记和物品进出登记两个部分。1、来访人员登记:实现对来访人员基本信息的登记。2、物品进出登记:实现对学生进出宿舍所携带贵重物品的登记。4.1.5查询管理模块信息查询模块基本上包括:宿舍信息查询、来访人员查询、学生出勤查询、物品进出查询、学生注册查询、空宿舍查询六个部分。1、宿舍信息查询:实现对宿舍信息的基本查询。2、来访人员查询:实现对来访人员信息的查询。3、学生出勤查询:实现对学生查寝情况的查询。4、物品进出查询:实现对学生进出携带物品的查询。5、学生注册查询:实现对学生新学期返校信息的查询。6、空宿舍查询:实现对学校未入住宿舍情况的查询。4.1.6统计分析模块统计分析模块包括:人数统计。1、人数统计:实现统计学生总人数、男生人数、女生人数、学院人数等。4.1.7帮助模块帮助模块包括:关于模块。1、关于模块:是对学生宿舍管理系统开发者相关信息的一个简单介绍。4.2系统E-R图在我所设计的模块中,主要涉及到楼房、宿舍和学生这三个实体,所以在E-R图中我将这两个实体的属性进行了详细说明。包含包含楼房楼层数房间数楼房号应住人数联系方式宿舍实住人数住宿费用居住性别宿舍编号应住人数入住姓名性别学号学生院系交费注册探望来访人员进出宿舍财物1 N 11 N 1N N 1 1 N 1 1 N图2系统E-R图如上述ER图所示,系统通过对楼房的管理来管理详细的宿舍信息,其中每一栋楼都包含很多个宿舍。然后是学生入住宿舍,每一间宿舍对应入住多个学生,并且同时录入学生的信息,学生是通过注册交费之后入住宿舍的,没一个学期都要注册一次,所以是一对多的关系。另外还有一些其它的功能如亲友探访,学生携带财物的进出也是在学生实体上面实现的,亲友探访和携带财物进出也是一对多的关系。4.3系统所需表综合以上分析,要实现上面的所有功能模块,共需要设计二个表,分别是:用户信息表、学生住宿信息表、宿舍楼房表、学生财物表、来访人员表、学生注册表、物品出入宿舍表、学生出勤表。对表的说明:1、用户信息表:登记用户名、密码及登录权限。2、学生住宿信息表:详细登记学生基本信息及宿舍编号情况。3、宿舍楼房表:登记学校所有的宿舍楼房情况。4、学生财物表:登记学生开学入住时宿舍财物的情况。5、来访人员表:登记来探访学生的外来人员的信息。6、学生注册表:登记学生新学期开学的注册信息。7、物品出入宿舍表:登记学生物品出入宿舍楼的信息。8、学生出勤表:登记学生在校期间的宿舍出勤信息。表1用户信息表(Slog)字段名描述数据类型数据长度NULLPrimarykeySname用户名Varchar50NYSpassword用户密码Varchar50NNSquanxian用户权限Varchar50NN表2学生住宿信息表(S_XINSRZ)字段名描述数据类型数据长度NULLPrimarykeysushebianhao宿舍编号Varchar50NYxingming姓名Varchar50NNxingbie性别Varchar50NNyuanxi院系Varchar50NNxuehao学号Varchar50NNlianxifangshi联系方式Varchar50NN表3宿舍楼房表(SHOUSE)字段名描述数据类型数据长度NULLPrimarykeyLouId楼房号Varchar50NYLouNum楼层数Varchar50NNLouRom房间数Varchar50NNLouYing应住人数int4NNLouShi实住人数int4YN表4学生财物表(SCAIWU)字段名描述数据类型数据长度NULLPrimarykeySXuehao学号Varchar50NYSName姓名Varchar50NNLouId楼房号Varchar50NFsushebianhao寝室Varchar50NFBed床位号Varchar50YNStool凳子号Varchar50YNDesk桌子号Varchar50YN表5来访人员表(SVISIT)字段名描述数据类型数据长度NULLPrimarykeyVisId自动编号Varchar10NYVisName来访人姓名Varchar50NNVisHost被访人姓名Varchar50NNLouId楼房号Varchar50NFsushebianhao宿舍编号Varchar50NFRelation所属关系Varchar50NNVisData来访时间datetime8NN表6学生注册表(SZHUCE)字段名描述数据类型数据长度NULLPrimarykeyxuehao学号Varchar50NYxingming姓名Varchar50NFLouId楼房号Varchar50NFsushebianhao宿舍编号Varchar50NFZCDate注册日期datetime8NYZCPrice所交费用Varchar10NN表7物品出入宿舍表(SWUPINCR)字段名描述数据类型数据长度NULLPrimarykeyWPCRId自动编号Bigint8NYxuehao学号Varchar50NNxingming姓名Varchar50NNLouId楼房号Varchar50NFsushebianhao宿舍编号Varchar50NFIn进楼物品Varchar50YNOut出楼物品Varchar50YNDate日期datetime8NN表8学生出勤表(SCHUQIN)字段名描述数据类型数据长度NULLPrimarykeyLouId楼房号Varchar50NYsushebianhao宿舍编号Varchar50NFnum缺勤人数int4YNwhy缺勤原因Varchar50YNdata日期datetime8NN4.4具体模块设计在系统功能模块介绍时,我把整个系统分为系统管理模块、宿舍管理模块、学生管理模块、出入登记模块、查询管理模块、统计分析模块、帮助模块七个基本模块。如下图3是我设计的学生宿舍管理系统的主界面:图3学生宿舍管理系统主界面4.4.1登录模块功能详细设计图4登录界面设计思想:当要进入学生宿舍管理系统时会弹出一个登录的对话框,用户必须在登录对话框中按要求输入正确的用户名和密码才能够进入主窗口。具体实现:1、在实现该功能模块时,需添加一个Windows对话框,系统自动生成对话框的ID为IDD_ASPIRE_DIALOG,修改标题属性为“登录”,系统会自动生成2个类,分别为CASPIREApp和CASPIREDlg,在VC++操作界面的ClassView中可以看到。调整对话框大小,在样式属性里面添加最小化功能,无须添加最大化功能。添加相应的静态文本控件、编辑框控件、组合框控件和按钮控件,其中密码控件须在样式属性里面添加密码功能,登录按钮控件须在样式属性里面添加缺省按钮功能以设置默认按钮,组合框控件的样式属性里面的所有者绘制属性改为否以达到只读的效果,并且修改所有控件的相关属性使其如图4所示界面。2、在实现登录、注册和退出功能时,需要用到用户表Slog,通过获取数据库的安装路径,调用ADO技术来实现VC++和数据库的连接,给两个编辑框和一个组合框修改对应的ID为IDC_NAME、IDC_PASSWORD、IDC_QUANXIAN,并分别定义变量为m_name、m_password、m_quanxian,在对话框的命令按钮的Click事件中写入相应的程序来实现登录、注册以及退出的功能,详细代码请查看附录。4.4.2系统管理功能详细设计1、用户管理图5用户管理界面设计思想:为了方便多人同时使用此系统,每个人都可以用自己单独的用户登录该系统,特地添加用户管理界面。而且能够方便快捷的查询、定位用户。通过操作控件可为用户提供新增、修改、删除用户功能等[8]。具体实现:1、在实现该功能模块时,需要添加一个Windows对话框,改ID为IDD_USERMANAGE,修改标题属性为“用户管理”,在此对话框界面按CTRL+W创建一个新的类CUSERMANAGE。调整对话框大小,在样式属性里面添加最小化功能,无须添加最大化功能。添加相应的静态文本控件、编辑框控件、组合框控件和按钮控件以及列表控件,此处密码控件无须在样式属性里面添加密码功能,添加按钮控件可在样式属性里面添加缺省按钮功能以设置默认按钮,组合框控件的样式属性里面的所有者绘制属性改为否以达到只读的效果,列表控件的样式属性里面的查看属性改为报告。并修改相关的属性使其如图5界面所示。2、在实现添加、修改、删除和退出功能时,需要用到用户表Slog,通过获取数据库的安装路径,调用ADO技术来实现VC++和数据库的连接,给三个编辑框、一个组合框和一个列表框修改对应的ID为IDC_SNAME、IDC_SPASS、IDC_SPASSWORD、IDC_SQUANXIAN,并分别定义变量为m_sname、m_spass、m_spassword、m_squanxian、m_usershow,在对话框的命令按钮的Click事件中写入相应的程序来实现添加、修改、删除以及退出的功能,其中查询时候,系统需要获取输入的值来和数据库里面的值做比较,那么就需要用到强制类型转换。强制类型转换又称为显示类型转换,其作用是将某种类型仅在当前运算中转换成指定的数据类型,运算结束后,原类型保持不变。强制类型转换格式为在一个数值或表达式前加上带括号的类型名[9]。详细代码请查看附录。4.4.3宿舍管理模块详细设计1、宿舍人员查询图6宿舍管理界面设计思想:宿舍管理系统自然是必须要有对宿舍住宿人员信息进行查询的功能的,因此这里设计这个模块也是理所当然的。并且能够按照不同的查询方式来进行必要的查询,如:按宿舍编号,按姓名,按学号等。具体实现:1、在实现该功能模块时,需要添加一个Windows对话框,改ID为IDD_DIALOG1_CHAXUN,修改标题属性为“查询”,在此对话框界面按CTRL+W创建一个新的类CCHAXUN。调整对话框大小,在样式属性里面添加最小化功能,无须添加最大化功能。添加相应的静态文本控件、编辑框控件、组合框控件和按钮控件以及列表控件,查询按钮控件可在样式属性里面添加缺省按钮功能以设置默认按钮,组合框控件的样式属性里面的所有者绘制属性改为否以达到只读的效果,列表控件的样式属性里面的查看属性改为报告。并修改相关的属性使其如图6界面所示。2、在实现查询和退出功能时,需要用到表S_XINSRZ,通过获取数据库的安装路径,调用ADO技术来实现VC++和数据库的连接,给两个编辑框、一个组合框和一个列表框修改对应的ID为IDC_EDIT_SSNUM、IDC_EDIT2_SNAME、IDC_COMBO1_CHAXUNFS、IDC_LIST1_CHAXUNXIANSHI,并分别定义变量为m_ssnum、m_sname、m_chaxunfs、m_chaxunxianshi,在对话框的命令按钮的Click事件中写入相应的程序来实现查询以及退出的功能,详细代码请查看附录。2、新生入住宿舍图7宿舍管理界面设计思想:新生入住宿舍是将每个学生直接安排到指定的宿舍床位,如无学生入住的宿舍也要添加进去,不过不予添加其它的信息。具体实现:1、在实现该功能模块时,需要添加一个Windows对话框,改ID为IDD_XINSHENGRUZHU,修改标题属性为“新生入住”,在此对话框界面按CTRL+W创建一个新的类CXINSRZ。调整对话框大小,在样式属性里面添加最小化功能,无须添加最大化功能。添加相应的静态文本控件、编辑框控件和按钮控件以及列表控件,查询按钮控件可在样式属性里面添加缺省按钮功能以设置默认按钮,列表控件的样式属性里面的查看属性改为报告。并修改相关的属性使其如图7界面所示。2、在实现查询、删除、修改和退出功能时,需要用到表S_XINSRZ,通过获取数据库的安装路径,调用ADO技术来实现VC++和数据库的连接,给六个编辑框、一个列表框修改对应的ID为IDC_EDIT_SUSHEBIANHAO、IDC_EDIT_XINM、IDC_EDIT3_XIEB、IDC_EDIT4_YUANXI、IDC_EDIT5_XUEHAO、IDC_EDIT6_LIANXIFS,并分别定义变量为m_ssnum、m_xinm、m_xinb、m_yuanxi、m_xuehao、m_lianxifs、m_xinsrz,,在对话框的命令按钮的Click事件中写入相应的程序来实现所有功能,详细代码请查看附录。4.4.4查询管理模块详细设计1、空宿舍查询图8空宿舍查询界面设计思想:当学校宿舍比较多的时候,要安排新生入住宿舍,需要清楚地知道哪些宿舍是空的,因此我做出了一个空宿舍查询的功能。在做这个查询的时候,我检索数据库表S_XINSRZ中的“xingming”是否为空,为空的话则说明对应的宿舍编号是空宿舍。具体实现:在实现该功能模块时,需要添加一个Windows对话框,改ID为IDD_DIALOG1KONGSS,修改标题属性为“空宿舍查询”,在此对话框界面按CTRL+W创建一个新的类CKONGSS。调整对话框大小,在样式属性里面添加最小化功能,无须添加最大化功能。添加相应的静态文本控件、编辑框控件和按钮控件以及列表控件,查询按钮控件可在样式属性里面添加缺省按钮功能以设置默认按钮,列表控件的样式属性里面的查看属性改为报告。并修改相关的属性使其如图8界面所示。在实现显示空宿舍功能时,需要用到表S_XINSRZ,通过获取数据库的安装路径,调用ADO技术来实现VC++和数据库的连接,给编辑框和列表框修改对应的ID为IDC_EDIT1_SUSHEBH、IDC_LIST1KONGSSXS,并分别定义变量为m_sushebh、m_kongss,在对话框的命令按钮的Click事件中写入相应的程序来实现显示空宿舍的功能,详细代码请查看附录。4.4.5统计分析模块详细设计1、人数统计图9人数统计界面设计思想:当学校在住人数比较多的时候,不进行统计就很无法清楚总共到底有多少人,男生有多少人,女生有多少人,女生有多少人等。因此我做出了一个人数统计的功能。在做这个统计的时候,我按要求检索数据库表S_XINSRZ中对应的列,如须查总人数则检索“xingming”是否为空,查男生人数则检索“xingbie”为男的人数,女生人数自然就等于总人数和男生人数的差值了,查学院人数的话则检索“yuanxi”对应的不同学院,最后全部检索完成之后统计出来显示出来。具体实现:1、在实现该功能模块时,需要添加一个Windows对话框,改ID为IDD_DIALOG1,修改标题属性为“人数统计”,在此对话框界面按CTRL+W创建一个新的类CTONGJI。调整对话框大小,在样式属性里面添加最小化功能,无须添加最大化功能。添加相应的静态文本控件、编辑框控件和按钮控件,查询按钮控件可在样式属性里面添加缺省按钮功能以设置默认按钮。并修改相关的属性使其如图9界面所示。2、在实现显示统计报表功能时,需要用到表S_XINSRZ,通过获取数据库的安装路径,调用ADO技术来实现VC++和数据库的连接,给五个编辑框分别修改对应的ID为IDC_EDIT2ZONG、IDC_EDIT3NANSHENG、IDC_EDIT4NVSHENG、IDC_EDIT5XINGONG、IDC_EDIT6HUAGONG,并分别定义变量为m_zong、m_nansheng、m_nvsheng、m_xingong、m_huagong,在对话框的命令按钮的Click事件中写入相应的程序来实现显示统计报表的功能,详细代码请查看附录。4.4.6帮助功能详细设计1、关于图10关于设计思想:通过此模块来介绍软件的版本和设计者的一些基本信息。具体实现:1、在实现该功能模块时,需要添加一个Windows对话框,改ID为IDD_DIALOG2,修改标题属性为“关于”,在此对话框界面按CTRL+W创建一个新的类CGUANYU。调整对话框大小,在样式属性里面添加最小化功能,无须添加最大化功能,添加相应的静态文本控件和按钮控件,确定按钮控件可在样式属性里面添加缺省按钮功能以设置默认按钮。并修改相关的属性使其如图10界面所示。2、在确定按钮的Click事件中写入代码“this->EndDialog(1);”即可。4.4.7其他模块功能设计由于时间的关系,其他模块功能未能够在指定的时间内完成,在此感到非常的抱歉,我会在接下来的时间努力来完成未能完成的模块,以达到系统预期的完善的功能。4.5后期美化处理所有界面完成后,对用到的所有对话框进行细致的调整,并附加皮肤以及显示权限和系统时间的功能。详细代码请查看附录。4.6本章小结本章通过对第一章的需求分析得出的系统开发框架的研究,得出了本系统功能的具体实现办法。通过对主要功能模块的具体设计方法介绍,使系统的功能更加清晰,让人更好的了解C++和其控件的使用方法。本章通过介绍系统的各个功能模块的生成方法,基本上涵盖了整个系统的功能,大部分功能模块的设计类似,只是具体办法稍有区别。可以说本章已经介绍了系统的详细设计过程,给人清晰明了的功能介绍。
第5章系统测试5.1软件测试方法的描述测试是为了发现程序中的错误而执行程序的过程;系统测试的目的,是以最少的测试资源去发现尽可能多的错误。测试任何系统都有两种方法:如果已经知道了系统应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道系统的内部工作过程,可以通过测试来检验系统内部动作是否按规格说明书的规定正常进行。前一种方法称为黑盒测试,后一种方法称为白盒测试[10]。对于软件测试而言,黑盒测试方法把程序看作一个黑盒子,完全不考虑程序内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能够很好地接收输入的数据并且产生预期的正确输出信息,程序在运行过程中是否能保持外部信息(如数据库和文件等)的完整性。黑盒测试又可以称做功能测试。白盒测试的方法与黑盒测试的方法相反,它的前提是能把程序看成是放在一个透明的盒子里,测试者可以完全了解程序的结构以及处理算法。这种方法是按程序内部的逻辑来进行程序测试,以此来检测程序中所有的主要可执行通路能否按照预定的要求正确地工作。白盒测试也叫做结构测试。本系统的测试过程由三个步骤组成:单元测试、集成测试和系统测试。5.2单元测试单元测试通过检测所设计软件中的最小单元结构——模块。一般,单元测试是和编码同时进行的。将本软件的功能模块直接和主窗体相连,再编译运行工程文件,通过编译程序来检查可能产生的语法错误,然后在编译最终通过后,使用白盒测试的方法去检查模块接口、模块内部的数据结构、逻辑路径、出错处理、边界条件等。这样能够使程序员及时发现错误并改正错误,减少最后集中查找错误的工作量。5.3集成测试集成测试是测试和组装软件的系统化技术,由模块组装成程序时有两种不同的方法。一种方法是先分别测试单个模块,再把所有模块按照设计要求结合在一起得到最终的程序,我们把这种方法叫做非渐增式法;另一种方法则是把下一个将要测试的模块和已经测试通过的那些模块结合在一起进行测试,测试完以后又把下一个要测试的模块结合在一起测试。这种方法就叫做渐增式法。集成测试以黑盒测试为主,采用渐增式法,对上层模块采用自顶向下测试,对某些具有输入输出功能或复杂算法的关键分支,采用自底向上测试,直到整个软件装配完毕。测试的通过标准为“主要功能已实现,已发现的重大错误已排除”。5.4测试报告测试报告是对测试结果进行收集和评价,软件的可靠性所达到的定性指标可以从测试报告中明朗体现出来。5.4.1系统测试主要报告系统测试主要对用户登录、新生入住、宿舍查询、空宿舍查询进行了仔细的测试和详细的测试记录。表3用户登录测试报告项目名称:ASPIRE测试项模块名称:用户登录测试人:卓政元测试时间:2014/5/19错误个数:0序号路径输入理想输出实际结果1.如果输入正确的用户名、密码和权限,应该显示登录成功。用户名:a密码:a进入项目主界面进入项目主界面2.如果输入错误的用户名或密码、或者选错权限,应该显示登录失败。用户名:a密码:b用户名或密码错误或权限不够用户名或密码错误或权限不够3.如果不输入任何数据,应该提示用户名不能为空。用户名:空密码:空用户名不能为空用户名不能为空表4新生入住测试报告项目名称:ASPIRE测试项模块名称:新生入住测试人:卓政元测试时间:2014/5/19错误个数:1序号路径输入理想输出实际结果1.输入正确的信息宿舍编号:7#107-3-2姓名:路人甲等等正确信息添加成功添加成功2.输入错误的信息宿舍编号:111姓名:123等等错误信息宿舍编号错误、姓名错误添加成功3.如果不输入任何数据宿舍编号:空姓名:空等全为空宿舍编号不能为空宿舍编号不能为空表5宿舍查询测试报告项目名称:ASPIRE测试项模块名称:宿舍查询测试人:卓政元测试时间:2014/5/19错误个数:0序号路径输入理想输出实际结果1.输入正确的信息按宿舍编号:7#107-3-2按姓名:路人甲成功查询成功查询2.输入错误的信息按宿舍编号:111按姓名:123查询失败查询失败3.如果不输入任何数据按宿舍编号:空按姓名:空请输入宿舍编号进行查询请输入宿舍编号进行查询4.输入正确,查询方式选择错误按姓名:路人甲查询方式选择按宿舍编号请输入宿舍编号进行查询请输入宿舍编号进行查询5.输入正确,查询方式错误按宿舍编号:7#107-3-2查询方式选择按姓名请输入姓名进行查询请输入姓名进行查询表6空宿舍查询测试报告项目名称:ASPIRE测试项模块名称:空宿舍查询测试人:卓政元测试时间:2014/5/19错误个数:0序号路径输入理想输出实际结果1.显示空宿舍不需要输入成功显示所有空宿舍成功显示所有空宿舍通过对以上测试报告的分析,可以看出新生入住模块系统不能够自动检测输入信息是否为有效信息,因此此处还有待改进。5.5本章小结本章通过对系统测试方法的介绍,确定了本系统采用集成测试的方案。通过选取不同的人进行不同权限的测试,给出了系统的基本功能测试实施办法。通过测试,调试生成可执行的应用程序。本章基本上说明了具体的测试办法,让人们更明白系统测试对于系统在完成后期的重要性,充分体现了系统软件开发的规范化。
第6章总结历时一个半月的毕业设计现在已经接近尾声了,回想起这一个半月的日子,感觉收获颇多。我这次毕业设计是开发一个学生宿舍管理系统,它用到的开发工具是C++语言,SQLServer数据库。在设计的开始阶段为了尽快熟悉C++语言,我详细翻阅有关该方面的资料,对书中的基本理论知识逐章逐节地分析,同时还用上机操作来加深理解。特别是对书中的一些典型实例,认真学习它的编程思想,吸取它的编程技巧,弄懂程序中每句话的含义。在对所要应用的技术有了一个基本认识之后,就开始构思自己的系统设计。认真听老师对设计要求的讲解,根据用户需求分析将整个系统分为几个模块,每个模块具体又要实现哪些功能,然后就逐个模块去一一详细设计,设计的过程中不时地翻阅资料,用一些巧妙的技术来优化程序。程序代码完成之后,要进行运行调试,刚开始由于没有调试经验和方法效率很低,最后在老师和同学的帮助下,终于顺利完成了,自己也从中学到了不少东西。总之,通过一个半月的毕业设计,让我感受了软件开发的整个过程。毕业设计不仅是对我在大学所学知识的一个综合运用,也是一次增长知识和经验的好机会,同时也使我学会了许多处理、解决问题的方法,大大提高了自己的动手能力,为即将走上工作岗位打下了良好的基础。
参考文献[1]谢海平等.基于网络的独立学院园区管理方案研究[J].青年与社会,2012,60(2),67-69[2]邹丽.VisualC++开发技术及面向对象软件工程案例分析[M].辽宁:辽宁科学技术出版社,2012-02[3]张兴飞.网络化区域氡浓度集群监控系统的研究与设计[D].西南科技大学,2011[4]李玉梅.《面向对象C++程序设计》课程教学改革的研究与实践[J].中国科技信息,2009,63(15),35-37[5]张鸿,熊文龙.基于C/S模式的SQL数据库应用技术[J].武汉理工大学学报(交通科学与工程版),2003,24(6),6-8[6]徐天晟,赵丹亚.SQL数据库使用速查手册[M].北京:人民邮电出版社,2009-02[7]王榕.基于WEB的宿舍管理系统开发与实现[J].华章,2011,61(10),56-61[8]关雪仑.高校图书管理系统的分析与设计[D].北京邮电大学,2010-10[9]宁涛.C++程序设计[M].辽宁:辽宁科学技术出版社,2012-02[10]罗洪刚.贵州师范大学学生公寓管理系统设计与实现[D].厦门大学,2011附录高校学生宿舍管理系统主要源程序连接数据库源代码://ASPIRE.cpp:Definestheclassbehaviorsfortheapplication.#include"stdafx.h"#include"ASPIRE.h"#include"ASPIREDlg.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif//CASPIREAppconstructionCASPIREApp::CASPIREApp(){}//TheoneandonlyCASPIREAppobjectCASPIREApptheApp;//CASPIREAppinitializationBOOLCASPIREApp::InitInstance(){ AfxEnableControlContainer(); skinppLoadSkin(_T("Face\\spring.ssk")); //创建ADO数据库连接 if(FAILED(::CoInitialize(NULL))) { AfxMessageBox("ADO初始化失败?");//AfxMessageBoxAfx为主框架函数适用全局 returnFALSE; } try { m_pCon.CreateInstance("ADODB.Connection"); _bstr_tstrConnect="Provider=SQLOLEDB.1;Server=localhost;Database=ASPIRE;uid=sa;pwd=aspire"; m_pCon->Open(strConnect,"","",adModeUnknown); } catch(_com_errore) { AfxMessageBox(e.Description()); }#ifdef_AFXDLL Enable3dControls(); //CallthiswhenusingMFCinasharedDLL#else Enable3dControlsStatic(); //CallthiswhenlinkingtoMFCstatically#endif m_pRs.CreateInstance(_uuidof(Recordset));//初始化ADO记录集 CASPIREDlgdlg; m_pMainWnd=&dlg; intnResponse=dlg.DoModal(); if(nResponse==IDOK) { } elseif(nResponse==IDCANCEL) { } returnFALSE;}boolCASPIREApp::ADOExecute(_RecordsetPtr&ADOSet,_variant_t&strSQL){ if(ADOSet->State==adStateOpen) ADOSet->Close(); try { ADOSet->Open(strSQL,m_pCon.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdUnknown); returntrue; } catch(_com_error&e) { CStringerr; err.Format("ADOError:%s",(char*)e.Description()); AfxMessageBox(err); returnfalse; }}主工程源代码://ASPIREDlg.cpp:implementationfile#include"stdafx.h"#include"ASPIRE.h"#include"ASPIREDlg.h"#include"MAINFACE.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif//CASPIREDlgmessagehandlersBOOLCASPIREDlg::OnInitDialog(){ CDialog::OnInitDialog(); m_quanxian.InsertString(0,"超级用户"); m_quanxian.InsertString(1,"普通用户"); m_quanxian.SetCurSel(0);//设置默认值 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); } } SetIcon(m_hIcon,TRUE); //Setbigicon SetIcon(m_hIcon,FALSE); //Setsmallicon returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}voidCASPIREDlg::OnPaint(){ if(IsIconic()) { CPaintDCdc(this);//devicecontextforpainting SendMessage(WM_ICONERASEBKGND,(WPARAM)dc.GetSafeHdc(),0); intcxIcon=GetSystemMetrics(SM_CXICON); intcyIcon=GetSystemMetrics(SM_CYICON); CRectrect; GetClientRect(&rect); intx=(rect.Width()-cxIcon+1)/2; inty=(rect.Height()-cyIcon+1)/2; dc.DrawIcon(x,y,m_hIcon); } else { CDialog::OnPaint(); }}voidCASPIREDlg::OnLog(){ CStringstrSql,str; _variant_tstrQuery; UpdateData(TRUE); ((CComboBox*)GetDlgItem(IDC_QUANXIAN))->GetWindowText(str); CMAINFACEdlg; if(m_name.IsEmpty())//判断用户名文本框是否为空 { MessageBox("用户名不能为空","错误",MB_ICONHAND); GetDlgItem(IDC_NAME)->SetFocus();//设置焦点特别注意颜色不同的必须//对应好设置的ID return; } if(m_password.IsEmpty())//判断密码文本框是否为空 { MessageBox("密码不能为空","错误",MB_ICONHAND); GetDlgItem(IDC_PASSWORD)->SetFocus(); return; } strQuery="select*fromSlogwhereSname='"+m_name+"'andSpassword='"+m_password+"'andSquanxian='"+str+"'"; //查看数据库中的用户名和用户密码这个必须一一//对应因此特别细心 //下面是从数据库中取出密码和用户名不匹配清空。匹配则成功登陆。 theApp.ADOExecute(theApp.m_pRs,strQuery); intiCount=theApp.m_pRs->GetRecordCount(); if(iCount==0) { if(IDOK==(MessageBox("用户或密码错误或权限不够,请重新输入","错误",MB_ICONQUESTION|MB_OKCANCEL))) { m_name=""; m_password=""; GetDlgItem(IDC_NAME)->SetFocus(); UpdateData(false); } else { this->EndDialog(1); } } else { if(str=="普通用户") { MessageBox("恭喜你,登录成功!","正确",MB_ICONASTERISK); this->EndDialog(1); } else { MessageBox("恭喜你,登录成功!","正确",MB_ICONASTERISK); this->EndDialog(1); CMAINFACEdlg; dlg.cleckstr=str; dlg.DoModal(); } UpdateData(false); } }voidCASPIREDlg::OnExit(){ MessageBox("是否退出系统?","退出",MB_ICONQUESTION|MB_OKCANCEL); exit(1);}voidCASPIREDlg::PreSubclassWindow(){ CDialog::PreSubclassWindow();}BOOLCASPIREDlg::PreTranslateMessage(MSG*pMsg){ if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN){ UpdateData(TRUE);if(GetFocus()->GetDlgCtrlID()==IDC_LOG)//按下回车,如果当前焦点是在自己期望的控件上{CASPIREDlg::OnLog();//添加自己的处理代码} returnTRUE;}if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE)returnTRUE; returnCDialog::PreTranslateMessage(pMsg);}查询源代码://CHAXUN.cpp:implementationfile#include"stdafx.h"#include"ASPIRE.h"#include"CHAXUN.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif//CCHAXUNmessagehandlersvoidCCHAXUN::OnButton1Chaxun(){ UpdateData(TRUE); m_chaxunxianshi.DeleteAllItems(); _variant_tHolder,strQuery; CStringtemp; inta=m_chaxunfs.GetCurSel();//获取下拉列表选项索引值 switch(a) { case0://按姓名 strQuery="select*fromS_XINSRZwherexingminglike'%%"+m_sname+"%%'";//数据库表中的对应字段 if(m_sname=="") { MessageBox("请输入姓名进行查询","错误",MB_ICONERROR); GetDlgItem(IDC_EDIT2_SNAME)->SetFocus(); m_ssnum=""; return; } m_ssnum=""; break; case1://按宿舍编号 strQuery="select*fromS_XINSRZwheresushebianhaolike'%%"+m_ssnum+"%%'"; if(m_ssnum=="") { MessageBox("请输入宿舍编号进行查询","错误",MB_ICONERROR); GetDlgItem(IDC_EDIT_SSNUM)->SetFocus(); m_sname=""; return; } m_sname=""; break; } theApp.ADOExecute(theApp.m_pRs,strQuery); intiCount=theApp.m_pRs->GetRecordCount(); if(0==iCount) return; theApp.m_pRs->MoveFirst(); inti=0; while(!theApp.m_pRs->adoEOF) { //MessageBox("213"); Holder=theApp.m_pRs->GetCollect("sushebianhao"); if(Holder.vt!=VT_NULL) m_chaxunxianshi.InsertItem(i,(char*)(_bstr_t)Holder); Holder=theApp.m_pRs->GetCollect("xingming"); if(Holder.vt!=VT_NULL) m_chaxunxianshi.SetItemText(i,1,(char*)(_bstr_t)Holder); Holder=theApp.m_pRs->GetCollect("xingbie"); if(Holder.vt!=VT_NULL) m_chaxunxianshi.SetItemText(i,2,(char*)(_bstr_t)Holder); Holder=theApp.m_pRs->GetCollect("yuanxi"); if(Holder.vt!=VT_NULL) m_chaxunxianshi.SetItemText(i,3,(char*)(_bstr_t)Holder); Holder=theApp.m_pRs->GetCollect("xuehao"); if(Holder.vt!=VT_NULL) m_chaxunxianshi.SetItemText(i,4,(char*)(_bstr_t)Holder); Holder=theApp.m_pRs->GetCollect("lianxifangshi"); if(Holder.vt!=VT_NULL) m_chaxunxianshi.SetItemText(i,5,(char*)(_bstr_t)Holder); theApp.m_pRs->MoveNext(); i++; } m_chaxunxianshi.SetRedraw(TRUE); m_sname=""; m_ssnum=""; UpdateData(FALSE);}BOOLCCHAXUN::OnInitDialog(){ CDialog::OnInitDialog(); m_chaxunfs.InsertString(0,"按姓名"); m_chaxunfs.InsertString(1,"按宿舍编号"); m_chaxunfs.SetCurSel(1);//设置默认值 m_chaxunxianshi.InsertColumn(0,"宿舍编号"); m_chaxunxianshi.InsertColumn(1,"姓名"); m_chaxunxianshi.InsertColumn(2,"性别"); m_chaxunxianshi.InsertColumn(3,"学院"); m_chaxunxianshi.InsertColumn(4,"学号"); m_chaxunxianshi.InsertColumn(5,"联系方式"); RECTrect;//设置一个矩形框 m_chaxunxianshi.GetWindowRect(&rect); intwid=rect.right-rect.left; m_chaxunxianshi.SetColumnWidth(0,wid/6); m_chaxunxianshi.SetColumnWidth(1,wid/6); m_chaxunxianshi.SetColumnWidth(2,wid/6); m_chaxunxianshi.SetColumnWidth(3,wid/6); m_chaxunxianshi.SetColumnWidth(4,wid/6); m_chaxunxianshi.SetColumnWidth(5,wid/6); m_chaxunxianshi.SetExtendedStyle(LVS_EX_FULLROWSELECT); returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}voidCCHAXUN::OnButton2Tuichu(){ this->EndDialog(1);}BOOLCCHAXUN::PreTranslateMessage(MSG*pMsg){ if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN){if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN) returnTRUE;}if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE)returnTRUE; returnCDialog::PreTranslateMessage(pMsg);}空宿舍查询源代码:#if!defined(AFX_KONGSS_H__C402B04D_ED0D_44FB_A52D_6A4BC274F5AD__INCLUDED_)#defineAFX_KONGSS_H__C402B04D_ED0D_44FB_A52D_6A4BC274F5AD__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000//CKONGSSdialogclassCKONGSS:publicCDialog{public: CKONGSS(CWnd*pParent=NULL);//standardconstructor enum{IDD=IDD_DIALOG1KONGSS}; CListCtrl m_kongss; CString m_sushebh; public: virtualBOOLPreTranslateMessage(MSG*pMsg); protected: virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDVsupportprotected: virtualBOOLOnInitDialog(); afx_msgvoidOnButton1(); DECLARE_MESSAGE_MAP()};主界面源代码://MAINFACE.cpp:implementationfile#include"stdafx.h"#include"ASPIRE.h"#include"MAINFACE.h"#include"USERMANAGE.h"#include"XINSRZ.h"#include"CHAXUN.h"#include"KONGSS.h"#include"TONGJI.h"#include"GUANYU.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif//CMAINFACEmessagehandlersvoidCMAINFACE::OnMenuitem32771Usermanage(){ CUSERMANAGEdlg; dlg.DoModal();}voidCMAINFACE::OnMenuitem32773Xinsrz(){ CXINSRZdlg; dlg.DoModal();}voidCMAINFACE::OnMENUITEM32774schaxun(){ CCHAXUNdlg; dlg.DoModal();}voidCMAINFACE::OnMENUITEM32775chaxun(){ CCHAXUNdlg; dlg.DoModal();}voidCMAINFACE::OnMENUITEM32776schaxun(){ CCHAXUNdlg; dlg.DoModal();}voidCMAINFACE::OnMENUITEM32777kongss(){ CKONGSSdlg; dlg.DoModal();}voidCMAINFACE::OnMENUITEM32778tongjixx(){ CTONGJIdlg; dlg.DoModal();}voidCMAINFACE::OnMENUITEM32779guanyu(){ CGUANYUdlg; dlg.DoModal();}voidCMAINFACE::OnMENUITEM32772ss(){ CCHAXUNdlg; dlg.DoModal();}BOOLCMAINFACE::PreTranslateMessage(MSG*pMsg){ if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN){if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_RETURN) returnTRUE;}if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE)returnTRUE; returnCDialog::PreTranslateMessage(pMsg);}BOOLCMAINFACE::OnInitDialog(){ CDialog::OnInitDialog(); m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,1); m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1USERMANAGE));//1 m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2CHAXUN));//2 m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2KONGSS));//3 m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2TONGJI));//4 UINTarr[4]; for(intk=0;k<4;k++) { arr[k]=k+1001; } m_ToolBar.Create(this); m_ToolBar.SetButtons(arr,4); m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList); m_ToolBar.SetSizes(CSize(50,60),CSize(32,32)); m_ToolBar.SetButtonText(0,"用户管理"); m_ToolBar.SetButtonText(1,"查询"); m_ToolBar.SetButtonText(2,"空宿舍"); m_ToolBar.SetButtonText(3,"统计"); RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); UINTarraryx[4]; for(inti=0;i<4;i++) { arraryx[i]=1080+i; } m_Statusbr.Create(this); m_Statusbr.SetIndicators(arraryx,sizeof(arraryx)/sizeof(UINT)); for(intj=0;j<4;j++) { m_Statusbr.SetPaneInfo(j,arraryx[j],0,210); } m_Statusbr.SetPaneText(0,"当前用户身份"); m_Statusbr.SetPaneText(1,cleckstr); m_Statusbr.SetPaneText(2,"系统当前时间"); SetTimer(1,1000,NULL); RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0); returnTRUE;}voidCMAINFACE::OnTimer(UINTnIDEvent){ CTimetime; time=CTime::GetCurrentTime(); m_Statusbr.SetPaneText(3,time.Format("%Y-%m-%d%H:%M:%S")); CDialog::OnTimer(nIDEvent);}voidCMAINFACE::OnUserSet(){ CUSERMANAGEdlg; dlg.DoModal();}voidCMAINFACE::OnUserSet1(){ CCHAXUNdlg; dlg.DoModal();}voidCMAINFACE::OnUserSet2(){ CKONGSSdlg; dlg.DoModal();}voidCMAINFACE::OnUserSet3(){ CTONGJIdlg; dlg.DoModal();}统计源代码://TONGJI.cpp:implementationfile#include"stdafx.h"#include"ASPIRE.h"#include"TONGJI.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif//CTONGJImessagehandlersBOOLCTONGJI::OnInitDialog(){ CDialog::OnInitDialog(); returnTRUE;}voidCTONGJI::OnButton1(){ UpdateData(TRUE);//查询总人数 _variant_tHolder,strQuery; inta=0; strQuery="select*fromS_XINSRZwherexingmingisnotnullandxingming<>''";theApp.ADOExecute(theApp.m_pRs,strQuery); intiCount=theApp.m_pRs->GetRecordCount(); if(0==iCount) return; theApp.m_pRs->MoveFirst(); inti=0; while(!theApp.m_pRs->adoEOF) { Holder=theApp.m_pRs->GetCollect("xingming"); if(Holder.vt!=VT_NULL) a++
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 油漆翻新劳务合同范本
- 大蒜代购代销合同范本
- 建筑增项合同范本
- 承租房屋合同范本
- 小院地皮出售合同范本
- 转让房屋出售合同范本
- 可视楼宇对讲合同范本
- 企业续签合同范例
- 代耕代种合同范例
- 保健器械采购合同范例
- 基本医疗保险异地就医备案个人承诺书【模板】
- 2024年湖北省公务员考试《行测》真题及答案解析
- 汽车检测技术课件 任务三 检测汽车经济性能
- 水果收货标准
- 宝鸡-英文介绍文档
- 2024儿童青少年抑郁治疗与康复痛点调研报告
- 小学数学骨干教师专题讲座《如何有效培养小学生的数学阅读能力》
- 幼儿园小班科学小蝌蚪找妈妈课件
- 公园保洁服务投标方案
- 随州市公共租赁住房租赁资格申请表
- 10J113-1内隔墙-轻质条板(一)
评论
0/150
提交评论