VF课程设计】基于VISUAL FOXPRO的学生公寓管理信息系统的开发(提供完整源代码).doc
课程设计说明书课程名称:VISUAL FOXPRO程序设计设计题目:学生公寓管理信息系统的开发学院:信息科学与工程学院姓名: 学号:1.课程设计的目的开发这个系统的目的就是帮助学校的公寓管理部门提高工作效率,实现公寓管理的系统化、规范化和自动化。随着计算机信息技术的发展和进步,我们的社会已逐步向数字化、信息化、网络化迈进。学校作为发展的先驱,已经普遍使用计算机系统来进行各个部门的管理工作。学生公寓管理信息系统的主要功能特色有:1)各基础信息管理:包括了校区、公寓、专业、学生等相关基础信息的管理,方便系统管理。2)来访人员日常行为管理:包括来访人员资料调查、统计及信息共享与传递。3)强大的查询功能:可以单独查询任意学生、任意时点的来访人员资料,也可单独查询任意房间、任意宿舍楼等。2设计方案论证 2.1总体设计2.1.1配置方案系统配置要根据用户的实际情况来定,主要依据就是系统工程的吞吐量和系统对稳定性的要求,此外,用户的维护水平也是需要考虑的重要因素。软件配置主要包括数据库的选择和操作系统的选择。学生公寓管理系统的软件配置要根据用户对系统工程的稳定性要求,系统的容量以及用户的维护水平来确定。2.2代码设计2.2.1欢迎界面代码分析与实现该部分代码为系统工程提供一个欢迎界面,其功能是通过 设置全局变量,使Label1Label2的字体大小和颜色循环变化,循环到所设定的次数后进入系统主界面,同时单击该界面也可立即进入系统主界面,下面是代码的具体实现。为表单添加代码。在其Init事件中添加中添加如下代码:public ipublic ji=0j=0在其KeyPress事件中添加如下代码:thisform.releasedo form main在表单的Click事件中添加如下代码:do form main为Timer控件添加代码,在其Timer事件中添加如下代码:if i=0 thisform.label1.fontsize=25 thisform.label2.fontsize=25 thisform.label1.forecolor=16711935 thisform.label2.forecolor=65535 i=1 j=j+1else thisform.label1.fontsize=25 thisform.label2.fontsize=25 thisform.label2.forecolor=rgb(0,255,0) thisform.label1.forecolor=rgb(0,0,255) i=0 j=j+1endifif j>5 thisform.release do form mainendif2.2.2系统主界面代码分析与实现在该界面的代码中通过设置全局变量来实现 对各种操作的切换,如对查询、数据维护、成员删除和打印等操作的切换。下面是代码的具体实现。为“查询”按钮添加代码。在其Click事件中添加如下代码:public mmdo form checker2mm=1该功能是用户通过身份验证后,执行mm=1的过程,也就是查询操作。在“查询”按钮的MouseMove事件中添加如下代码:this.forecolor=rgb(130,0,0)mand2.forecolor=rgb(0,30,0)mand3.forecolor=rgb(230,30,0)mand4.forecolor=rgb(0,30,230)mand5.forecolor=rgb(100,230,30)为“数据维护”按钮添加代码,在其Click事件中添加如下代码:public mmdo form checker1mm=4该功能是用户通过身份验证后,执行mm=4的过程,也就是成员删除操作。为“打印”按钮添加代码,在其Click事件中添加如下代码:public mmdo form checker2mm=2上面代码的功能是用户通过身份验证后,执行mm=2的过程,也就是打印操作。2.2.3查询部分界面代码分析与实现该部分代码实现当管理员通过身份验证后,就可以进入查询主界面,然后在主界面可以选择各各查询操作。如查询寝室情况、查询用水电量、查询公寓情况、查询寝室评分等。1)用户验证界面代码分析与实现该部分代码实现对管理员身份的验证。为表单添加代码,在其init事件中添加如下代码:public inpswd1inpswd1=0为“确定”按钮添加代码,在其Click事件中添加如下代码:if empty(thisform.text1.value) or empty(thisform.text2.value) messagebox("输入的信息不完整,请重新输入!",48,"警告") inpswd1=inpswd1+1 if inpswd1>=3messagebox("请不要乱来!",64,"警告")thisform.release else thisform.text1.value="" thisform.text2.value="" thisform.text1.setfocus endifelse sele kouling locate for 用户名=alltrim(thisform.text1.value) if 密码=alltrim(thisform.text2.value) thisform.release do case case mm=3 do form input case mm=4 do form deleteendcase else messagebox("输入的信息有误,请重新输入!",64,"警告") inpswd1=inpswd1+1 if inpswd1>=3 messagebox("请不要乱来!",64,"警告") thisform.release else thisform.text1.value="" thisform.text2.value="" thisform.text1.setfocus endifendifendif上面的代码实现 了对管理员身份的验证,如果管理员输入的是错误住处那么将弹出错误住处提示框,如果输入的错误住处超过3次,将退出系统。如果输入的住处是正确的,管理员就能进入查询主界面。2)查询主界面代码界面分析与实现在本界面中用户单击各按钮就可以进行相应的查询操作,如查询寝室情况、用水电量查询、公寓情况查询、寝室评分查询、按学号查询和按姓名查询。下面分别为“查询寝室情况”,“用水电量查询”,“公寓情况查询”,“寝室评分查询”,“按学号查询”,“按姓名查询”按钮的Click事件添加如下代码:do form qsqk_seekdo form ysdl_seek_jieguodo form gy_seek_jieguodo form qspf_seekdo form xuehao_seek_jieguodo form name_seek_jieguo3)查询寝室情况代码分析与实现本界面的代码可以实现对各寝室成员的各种情况进行查询,下面是代码的具体实现。为表单添加代码,在其init事件中添加如下代码:thisform.text1.value=”为“查询”按钮添加代码,在其Click事件中添加如下代码:set filter to 寝室号=VAL(thisform.text1.value)count to zsif zs=0messagebox("没有符合条件的记录!",48,"信息窗口")thisform.text1.setfocuselsego topthisform.grid1.setfocusendif上面的代码中将寝室号设置为查询条件,并将结果显示出来,如果没有符合条件的将给出住处提示框。4)寝室评分查询代码分析与实现该部分代码实现对寝室评分的查询,其代码与其他查询界面的代码类似。5)按姓名查询代码分析与实现该部分代码实现按姓名查询的功能,并能进行浏览,下面是该界面的主要代码。为“上一个”按钮添加代码,在其Click事件中添加如下代码:skip -1if bof() messagebox("已是第一个记录",48,"信息窗口") this.enabled=.f. mand2.enabled=.t.else this.enabled=.t. mand2.enabled=.t.endifthisform.refresh上面的代码中如果记录不是第一个,即可对前面的记录进行浏览,如果已是第一个记录,将给出提示信息框。为“下一个”按钮添加代码,在其Click事件中添加如下代码: skipif eof() messagebox("已是最后一个记录",48,"信息窗口") skip -1 this.enabled=.f. mand1.enabled=.t.else this.enabled=.t. mand1.enabled=.t.endifthisform.refresh上面的代码中如果记录不是最后一个,即可对后面的记录进行浏览如果是最后一个记录,将给出提示信息框。2.2.4成员删除部分界面代码分析与实现该部分界面代码实现各种删除操作,如按班级删除,按寝室号删除等。1)成员删除主界面代码分析与实现该界面代码用于切换各种删除操作,单击各按钮即可进行相应的删除操作,如按班级删除、按寝室号删除等分别为“按班级删除”和“按寝室号删除”按钮的Click事件添加如下代码:do form bjsc_deletedo form qssc_delete2)按班级删除界面代码分析与实现该界面代码实现按班级删除操作,下面是具体的代码实现。为“删除”按钮添加代码,在其Click事件中添加如下代码:delete all 为“退出”按钮添加代码,在其Click事件中添加如下代码:?chr(7)if messagebox("是否确定离开?",4+32,"提示消息")=6thisform.release()close dataset excl onuse xs packuse当单击“退出”按钮时,系统将提示是否确认要离开该操作界面,确认后即可离开该操作界面。3)按寝室号删除界面代码分析与实现该部分代码与按班级删除界面的相类似。2.2.5数据维护部分界面代码分析与实现该部分代码将对系统的数据进行维护,其中包括学生数据维护,公寓数据维护和寝室数据维护等。1)数据维护主界面代码分析与实现该界面的代码实现切换各种数据维护功能,如学生数据维护,公寓数据维护和寝室数据维护等。分别为“学生数据维护“,”公寓数据维护“和寝室数据维护”按钮的Click事件添加如下代码:do form xs_inputdo form gy_inputdo form qs_input 2)学生数据维护界面代码分析与实现该界面代码实现对学生数据进行维护,下面是代码的具体实现,为表单添加代码,在其Init事件中添加如下代码:Thisform.desp() Thisform.setall(enabled,testbox)在其Disp事件中添加如下代码:thisform.setall('enabled',.f.,'textbox')mand9.enabled=.t. mand1.enabled=.t. mand2.enabled=.t. mand3.enabled=.t. mand4.enabled=.t. mand5.enabled=.t. mand6.enabled=.t. mand7.enabled=.t. mand8.enabled=.t. thisform.pageframe1.page1.label1.visible=.f.if deleted()=.t. thisform.pageframe1.page1.label1.visible=.t. mand5.enabled=.f. mand7.enabled=.f. mand8.enabled=.t. else thisform.pageframe1.page1.label1.visible=.f. mand5.enabled=.t. mand7.enabled=.t. mand8.enabled=.f.上面的代码设置page1选项卡各按钮的显示状态和可用状态,为“第一个”按钮添加代码,在其Click事件中添加如下代码:go top thisform.refreshthisform.disp()在其MouseMove事件中添加如下代码:this.mousepointer=99thes.mouseicon=”point.cur”为“最后一个”按扭添加代码,其Click事件中添加如下代码:go bottomthisform.refreshthisform.disp()为“修改”按钮添加代码,在其Click事件中添加如下代码: thisform.setall(enabled,t,textbox)thisform.pageframe1.page2.grdxs.setfocus为“新增”按钮添加代码,在其Click事件中添加如下代码:append blankthisform.disp()thisform.setall(enabled,t,textbox)thisform.pageframe1.page2.grdxs.setfocus上面的代码中当单击“新增”按钮时,增加一行空记录,然后可输入数据,并进行刷新,“上一个”按钮代码和“下一个”按钮代码与按姓名查询界面的相应按钮的代码类似,。为“删除”按钮添加代码,在其Click事件中添加如下码:delete thisform.disp()2.2.6打印界面代码分析与实现该部分代码主要实现的是选择相应的打印操作,如打印寝室评分,打印学生情况等,分别为“打印寝室评分”和“打印学生情况”按钮的Click事件 添加如下代码:report form qspf previewreport form xs preview2.2.7系统主程序分析与实现系统主程序的作用是初始化系统环境后,执行welcome表单,在开发系统中,主程序是必不可少的。本系统的主程序可以简单设置如下:set dele on set talk off set safety off set date ansi set cent onopen database xsdo form welcomeread events2.3 数据库设计 2.3.1 数据库需求分析针对公寓管理系统的需求,通过对本系统的数据流图4-1的分析,为本系统设计如下数据项和数据结构:寝室基本信息:包括寝室号、寝室电话、用电量、用水量、剩余电量。学生基本信息:包括姓名、学号、性别、班级、系别、籍贯、公寓号等。寝室评分信息:包括寝室号、日期、分数。系统管理员信息:包括用户名、密码。公寓管理员信息:包括用户名、密码。2.3.2 实现数据库启动Visual FoxPro6.0创建一个新的数据库,命名为XS.mdb,保存在“学生公寓管理系统”工程项目里。然后在这个数据库里创建数据库表。表1 公寓数据库表(gy)列名数据类型长度公寓号数值型1管理员字符型6管理员电话数值型4寝室总数数值型3床位总数数值型4剩余床位数数值型4表2 寝室数据表(qs)列名数据类型长度寝室号数值型3寝室电话数值型4用电量数值型3用水量数值型3剩余电量数值型3表3 学生数据表(xs)列名数据类型长度姓名字符型6学号数值型8性别字符型2寝室号数值型3班级数值型6系别字符型6籍贯字符型4公寓号数值型1床号数值型2寝室电话数值型4剩余押金数值型3表4 寝室评分数据表(qspf).列名数据类型长度寝室号数值型3日期日期型8分数数值型3表5 系统管理员数据表(konling).列名数据类型长度用户名字符型10密码字符型10表6 公寓管理员数据表(adminer)。列名数据类型长度用户名字符型10密码字符型10在数据库中创建视图在学生公寓管理系统中,为便于浏览及修改各种信息,需要创建一些视图。在本系统中,将创建View1视图用于浏览及个性学生各种信息,View2视图用于浏览及个性寝室各种信息,view_gy视图用于浏览及修改公寓各种信息,view视图用于浏览及修改学生各种信息,bjsc视图用于浏览及修改学生各种信息。2.4 界面设计经过以上的数据库分析,建模的过程,已经完成了数据库的后台工作。达到了项目开发的初期目标。下面的工作将进行界面的设计。2.4.2 系统主界面设计 系统主界面是用户进入系统后接触的主要界面,由它可能进入 各个功能模块,进行相应的操作。下面设计本系统的主界面,新建1个表单,保存为main,设置其Caption属性为“学生公寓管理系统”。然后在表单中添加5个Command控件,调整控件的大小和位置,并设置好各控件的属性,界面效果如图所示:图1 系统主界面2.4.3 查询部分界面设计该部分界面提供各种查询操作功能,公寓管理员通过身份的验证后,就可以进入查询主界面,进行相应的查询操作。如查询寝室情况、查询用水电量、查询公寓情况、查询寝室评分等。1) 用户验证界面设计为了本系统的安全,公寓管理员只有在该界面中输入正确的验证信息后,才能进入查询主界面进行相应的查询操作。该界面的设计过程如下:新建1个表单,保存为checker2,设置其Caption属性为用户验证界面,然后在表单上添加2个Label控件,2个TextBox控件和2个Command控件,根据设计需要设置各控件的属性,用户验证界面设计的最后效果图如下:图2 用户验证界面2) 查询主界面设计在本界面中提供了各种查询操作,如查询寝室情况、查询用水电量,查询公寓情况,查询寝室评分等。该界面的主要设计过程如下:新建1个表单,保存为seek,设置其Caption属性为“查询界面”,然后在表单上添加7个Command控件,并设置各控件的Caption属性,查询主界面设计的最后效果如下图:图3查询主界面3) 查询寝室情况界面设计在本界面可以进行各寝室成员的各种情况的查询,该界面如下图所示:图4 查询寝室情况界面其主要设计过程如下:新建1个表单,保存为qsqk_seek。然后在表单上添加2个Label控件,2个Command控件和1个TextBox控件,并进行相应的属性设置。为表单添加数据环境,在表单上右击,然后在弹出的菜单中选择Data Environment 命令,将弹出Add Table or View 对话框,在对话框的Tables in database 项中选择表xs,单击Add 按钮,就可以添加Data Environment (数据环境O),单击Close按钮关闭对话框。4) 用水电量查询界面设计在本界面可以进行各寝室用水电量情况的查询,如下图所示:图5 用水电量查询界面下面采用Form Wizards (表单向导)来完成该界面的设计。(1)在项目管理器中单击Documents选项卡,在出现的选项卡中单击New按钮,然后在弹出NewForm 对话框中单击New Form按钮,将出现Wizard selection对话框,在该对话框中选择Form wizard选项,接着单击 OK按钮,进行进行表单设计。在前一过程单击OK按钮后,将弹出Form Wizard 对话框,在Databases and tables下拉列表框中选择xs,在列表框中选择View2视图,然后单击Next按钮,设置选定字段。 (2)所示的对话框中单击Next按钮,进入Style列表框并在Style列表框中选择Standard 选项,在Button type单选按钮组中选择No buttons选项,然后单击Next 按钮,进入保存表单。输入要保存的文件名,单击Finish 按钮,至此,表单创建就完成了。(3)重新打开上面创建的表单,然后在表面单上添加1个Label控件和1个Command按钮,并设置各控件相应的属性,调整表音的大小的各控件位置,最后界面效果 如下图所示:图6最后界面效果(4)公寓情况查询界面设计在该界面可以进行公寓情况的查询,其设计过程与用水电量查询界面的设计类似,根据表单向导进行设计,表单保存为gy_seek_jieguo。 最后界面效果如下图:图7 公寓情况查询界面(5)寝室评分查询界面设计在该界面可以对寝室评分情况进行查询,其过程设计与查询寝室情况界面设计过程类似,将表单保存为qspf_seek,表单添加的数据环境是qspf数据表。图8 寝室评分查询界面(6)按学号查询界面设计在该界面可以按学号对学生情况进行查询,其设计过程与用水电量查询界面的设计过程类似,仍然用表单向导进行设计,将表单保存为xuehao_seek_jieguo。图9 按学号查询界面(7)按姓名查询界面设计在该界面可以按姓名对学生情况进行查询,其设计与按学号查询界面设计的过程类似,仍然采用表单向导,将表单保存为mame_seek_jieguo。图10 按姓名查询界面2.4.4 成员删除部分界面的设计在该部分界面中首先进入的是用户验证界面,检查系统工程管理人员输入的信息是否合法,只有合法的系统管理人员才能进入成员删除主界面,进行相应的删除操作,如按班级删除、按寝室号删除等。1)用户验证界面设计该界面用来检验系统管理人员是否合法,只有合法的系统管理人员才能进入成员删除主界进行相应的删除操作。该界面的设计过程与checker2界面的设计过程类似,只是在表单的数据环境中添加的是kouling数据表,将表单保存为checker1。图11 用户验证界面2)成员删除主界面设计在该界面可以选择各种删除操作,如按班级删除、按寝室号删除等。界面设计的效果如下图所示(保存为delete):图12 成员删除主界面3)按班级删除界面设计该界面提供按班删除操作功能。新建1个表单,保存为“bjsc.delete”,在表单上添加1个Label控件和2个Command控件。在表单的数据环境中分别添加bjsc和xs数据表,然后打开数据环境,通过鼠标将表bjsc其直接拖到表单中即可,其Captionn属性会自动改为grdbjsc.调整表单的大小 和各控件的位置。最后界面的效果如下图示:图13 按班级删除界面4)按寝室号删除界面设计该界面提供按寝室号删除操作功能,其设计过程与:按班级删除:界面的设计基本相同,表单数据环境添加的是qssc视图,将表单保存为qssc_delete。图14 按寝室号删除界面2.4.5 数据维护部分界面设计该部分界面是为用户提供对有关数据进行维护的功能,主要包括学生数据维护、公寓数据维护和寝室数据维护等。据维护主界面设计其设计过程与其他主界面的设计过程一样,比较简单,最后效果如下图所示:图15 据维护主界面学生数据维护界面设计该界面是对学生数据进行维护,其主要设计步骤如下:1)新建1个表单,保存为xs_input,设置其Caption属性为“学生数据输入”,在表单的数据环境中添加xs数据表。然后在表单上添加1个Page Frame控件,设置其PageCount属性为“2”,并调整其大小 。Page1的Caption属性设置为“学生数据维护”,page2的Caption 属性设置为“学生数据一览表”,并设置其他相应属性。2)找开表单的数据环境,将数据表xs的字段直接拖到“学生数据维护”选项卡中,调整好位置。3)在“学生数据维护”选项卡中加一个Label控件,其Caption属性设置为“该数据已删”,然后添加1个commandGroup控件,其ButtonCount属性设置为9,设置其他属性。在“学生数据一览表中”选项中,添加1个Grid控件,其方法是:打开表单的数据环境,将用于保存学生信息的xs表,直接拖天表单即可。其Caption属性会自动改为grdxs。调整表单的大小 和各控件的位置。最后界面的效果如下图所示图16学生数据维护界面 4)公寓数据维护界面设计该界面对公寓数据进行维护,其设计过程与“学生数据维护”界面设计过程类似,该界面保存为gy_input.图17 公寓数据维护界面5)寝室数据维护界面设计该界面对寝室数据进行维护,其设计过程与“学生数据维护”界面设计过程类似,该界面保存为qs_input。图18 寝室数据维护界面2.4.6 打印部分界面设计该部分界面为用户提供一些打印选项,如打印寝室评分、打印学生情况等,其设计与其他主界面的设计过程类似。该界面的最后效果如下图:图19 打印部分界面3设计结果与分析在系统测试过程中,我输入了部分记录,并进行了包括查询、维护、删除、打印在内的各项性能的测试和较长时间的反复运行,总体讲,系统运行较为平稳,所占空间小,各种功能实现灵活,数据处理准确无误,基本符合设计要求,具有较好的保密性能,基本满足设计要求。系统最终实现的主要功能如下:1)数据维护部分:包括对公寓 、寝室和学生的数据维护,对公寓、寝室及学生的有关数据及时进行添加、修改等。2)查询部分:包括查询寝室情况、查询用水用电量、查询公寓情况、查询寝室评分、按学号查询以及按姓名查询等项,全面合理地反映学生、公寓及寝室的情况。3)成员删除部分:包括按寝室号和按班级删除等项,能将有关成员的信息进行删除。4)打印部分:包括提供寝室评分和学生情况打印等功能,对需要打印的相关信息可及时进行打印。4设计体会经过反复测试, “学生公寓管理系统”基本达到设计要求。但是也存在一些问题主要是:1)由于系统只是经过短时间、小规模试用行,投入正常使用后,在长时间、大量数据下运行,其稳定性如何,还有待进一步调整。2)在功能设计上,我们感到由于时间仓促和水平有限,于现代公寓管理的要求还有很大的距离,还需要进一步充实和规范。3)作为一个产品,其完美的外型设计会起到画龙点睛的作用,就本系统而言,我做的不够好。5参考文献1范立南,张宇VISUAL FOXPRO程序设计与应用教程M. 北京:科学出版社,2008.12:2-5 2肖金秀,陈少涌全国计算机等级考试辅导教程(二级VISUAL FOXPRO程序设计)M.北京:冶金工业出版社,2008.53谭浩强VISUAL FOXPRO 数据库项目案例导航M.北京:清华大学出版社2006.11