河套大学宿舍管理系统
摘 要
高校学生宿舍管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于后台数据库的建立和维护要求建立起数据一致性、完整性强、数据安全性好的库。而对于前端应用程序的开发则要求应用程序能提供强大的数据操纵功能,界面友好、使用简单方便等特点。我们使用Visual Basic6.0和SQL Server 2000数据库为开发工具, Visual Basic 6.0是简单实用的面向数据库开发工具,同时它提供的集成开发环境及面向对象各种标准化控件,利于对数据库和数据表的直接操作和处理,提高了编程效率和可靠性。另外通过ASP为普通学生开发一个简单查询界面,允许学生通过浏览器查询与学生个人密切相关的宿舍管理信息以及与宿舍中心进行信息交流。以往的手工纪录的宿舍管理方式已经不能适应高速发展的信息化时代,新的宿舍管理系统开发出来之后,学校的现有的宿舍信息管理将有很大的改观,由过去的人工方式转变为计算机方式,由效率低、数据冗余、易产生错误转变为检索迅速、查找方便、可靠性高、存储量大。这些优点能够极大地提高效率,也是学校科学化、正规化管理的重要条件。
关键词: 宿舍管理系统;数据库;Visual Basic 6.0
第一章 项目背景与需求分析
1.1 项目背景
近几年,随着国家教育政策的调整和完善,我国高等院校大面积扩招,给宿舍管理带来了不小的冲击,要使学生拥有一个好的学习环境和生活氛围,是每一所高校都必须面对的重要工作。
河套大学是一所综合性大学,学校下设人文学部、理工部、农牧科学系、外语系、数学与计算机系等。2003年起学校与邻省区进行对口交流招生整合后的河套大学目前具有各类在校生13000多人,学生公寓8栋。宿舍管理系统对于一个学校来说是必不可少的组成部分。目前学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于这样的综合性大学由于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。而且当查找某条记录时,由于数据量庞大,还只能靠人工一条条的查找,这样不但麻烦还浪费了许多时间,效率也比较低。当今社会是飞速进步的世界,原始的记录方式已经被社会所淘汰了,计算机化管理正是适应时代的产物。信息世界永远不会是一个平静的世界,当一种技术不能满足需求时,就会有新的技术诞生并取代旧技术。21世纪的今天,信息社会占着主流地位,计算机在各行各业中的运用已经得到普及,自动化、信息化的管理越来越广泛应用于各个领域。我们针对如此,设计了一套学生宿舍管理系统。学生宿舍管理系统采用的是计算机化管理,系统做的尽量人性化,使用者会感到操作非常方便,管理人员需要做的就是将数据输入到系统的数据库中去。由于数据库存储容量相当大,而且比较稳定,适合较长时间的保存,也不容易丢失。这无疑是为信息存储量比较大的学校提供了一个方便、快捷的操作方式。本系统具有运行速度快、安全性高、稳定性好的优点,能够快速的查询学校所需的住宿信息。
1.2 功能需求
1.2.1 基本功能需求
基于学校的宿舍管理采用的还是人工来进行管理的,为了适应学校发展的实际状况,我通过实地调研之后,认为实现学生宿舍管理系统在设计时应尽可能的贴近学生便于学生用户操作,系统在实现上应具有入相功能:
(1)系统实现用户身份认证并对登录用户的操作权限分级管理。
(2) 系统应提供学生入学的注册、基本信息的录入。
(3) 系统应提供宿舍基本情况的录入。
(4) 系统应提供学生住宿情况的基本登记。
(5) 系统应提供学生退宿情况的处理。
(6) 系统还应具有基本的查询功能。
(7) 系统不仅提供管理部门对宿舍管理信息的查询功能,还应提供普通学生通过Internet查询宿舍基础信息的功能。
1.2.2 用户界面需求
学生宿舍管理系统应提供简单、层次关系明了、清晰的操作界面,使用户一目了然。尽可能的为用户的录入、查询等功能操作提供方便。快捷按钮的创建也是非常需要的,以方便用户操作。
1.3 性能需求
1.3.1 系统安全性
学生宿舍管理系统中的增加用户、学生学期注册、学生毕业离校等模块都是和学生住宿费相联系在一起的,所以在系统的管理权限上应当进行严格控制,具体思想如下:
(1)要想对该学生宿舍管理系统进行操作就应当具有某些操作权限。没有权限的用户将不能通过任何渠道来登录该系统,查看该系统的任何信息和数据,以确保系统的严密性和安全性。
(2)在上述要求基础上,程序开始运行所有功能将是不可使用的,只有用户登录窗口可以使用,没有正确的用户名和密码任何人都不能登录该系统。
(3)在具体实现时还应为各用户设定不同的权限,系统管理员应当可以使用系统的所有模块,普通用户只能浏览系统中的宿舍及学生基本信息。
(4)在系统开始试运行后,需要采取一定的技术手段对内部用户的访问和外部用户访问进行区分,采取一定的措施,严格控制Internet的用户的操作权限。
第二章 宿舍管理系统的系统规划
2.1 系统规划
规划,一般是对较长时期的活动进行总体的、全面的计划。
由于管理系统的建设耗资巨大,历时较长,技术复杂且涉及面广,系统规划
是这一工作的起始间段。这项工作的好坏直接影响到整个系统建设的成败,为了提高规划工作的科学性和有效性应注意以下关键问题:
(1)战略计划是核心
(2)解决问题的有效性是关键
(3)应变能力是系统成功的关键问题之一,也是当前系统建设与应用的瓶颈问题。
(4)人、管理、技术应协调发展,三者之间相互配合、相互促进,以加速系统的建设进程。
2.2 管理信息系统理论
宿舍管理系统是典型的信息管理系统(MIS),需要MIS的基本理论的指导,鉴于此,我们回顾一下MIS的基本理论。
2.2.1 管理信息系统的概述
管理信息系统是一个由人和计算机组成的能进行管理信息的收集、传递、加工、保存、维护和使用的系统。它能实测国民经济和企业的各种运行情况;管理信息系统利用历史数据预测未来;从全局出发辅助管理决策;利用信息控制企业的行为,帮助实现其规划目标。管理信息系统是以计算为主要手段处理信息,强调信息处理的系统性、综合性,不但要求在事物处理上高效率,而且更强调对各级管理决策的有效支持,管理信息系统的建立,为各级管理决策提供了信息支持,从根本上改善了管理人员的劳动条件和工作性质,是管理手段现代化的重要标志。
2.2.2 管理信息系统的特点
管理信息系统的特点可归纳为:
数据集中统一,采用数据库
数据模型的应用
有预测和控制能力
面向决策
管理信息系统是一门新的学科,它引用其它学科如管理学与工程经济理论、统计学、运筹学以及计算机科学等多学科的概念和方法,融合成为一门新的综合性、边缘性的学科。
2.2.3 管理信息系统开发的基本方法
用系统工程的方法开发管理信息系统的具体方法有生命周期法、原型法、面向对象开发方法和CASE方法等多种。
(1)生命周期法
所谓生命周期法,就是按照管理信息生命周期的概念,严格地按照系统生命周期的各个过程和步骤去开发系统。即分为五个阶段:系统分析、系统设计、系统实施、系统运行、系统维护阶段。
对于大系统或系统开发缺乏经验的情况,采用生命周期法可以立足全局,步步为营,减少返工,有利于提高开发质量,加快工程进度。生命周期法的不足之处是系统的开发周期太长,有时系统开发尚在开发过程之中,而内外环境已有所变化,对系统的要求也发生了变化。
(2)原型法
原型法的基本思想是:开发者和用户在系统的主要需求上取得一致意见后,由开发者很快开发出一个初步的原型系统,然后通过用户使用和评价,提出改进意见,反复修改、扩展和完善,直到形成一个相对稳定的系统。
原型法能充分发挥用户的积极性,能及早发现开发中出现的问题,因而系统的适用性较高,原型法主要用于以下一些场合:
用户事先难以说明需求的较小的应用系统;
决策支持系统;
与生命周期法结合起来使用,即整体上仍使用生命周期法,而仅对其中功能
独立的模块采用原型法。
(3)面向对象法
面向对象法是一种认识问题和解决问题的思维方法,它把客观世界看成是由许多不同的对象构成。在面向对象的系统中,我们把系统中所有资源(如 系统、数据、模块)都看成是对象,每一对象都有自己的运动规律和内部状态。不同对象间的相互联系和相互作用构成一个完整的客观世界。
(4)计算机辅助系统开发法(CASE法)
计算机辅助系统开发方法是运用计算机软件工具辅助系统开发的一种方法。 由于当前宿舍管理还处于手工管理阶段,管理水平还比较低,要求宿管部门的工作人员一次性地提供完整的需求确实存在困难,经过仔细分析,我决定采用
原型法开发。即先很快建立一个系统的原型,让用户认识它、使用它、熟悉它、修改它、评价它,不断的满足用户提出的新的需求,进一步完善和提高系统地综合性能。当然本系统的开发设计过程仍严格遵守生命周期法的开发有关规范。
第三章 宿舍管理系统的系统分析
3.1 系统初步调查
系统初步调查是系统分析阶段的第一项活动,其主要目标就是从系统分析人员和管理人员的角度看新项目开发的可能性和必要性。河套大学作为一所综合性大学,目前学校下设多个院系,尤其近年来与邻省区进行对口交流招生后,生源大量增加,学生住宿管理问题引起了校领导及主管学生住宿的宿管部门的重视。现在学校宿舍管理主要依赖于手工管理方式,它存在着许多弊端,如 学生开学入住登记繁琐且容易出错;数据冗余现象严重;查询不方便等。为了完善这方面的管理,经多次与校领导及宿舍管理负责人的讨论,我决定为河套大学开发一个宿舍管理系统,以此来改善现有的管理模式,使学校各方面的管理向着系统化、科学化迈进。
3.2 开发方式选择
面对当前的学生入学状况及校内现有的硬件资源,校领导对学生宿舍管理可以做出以下三种计划安排:
(1)继续采用当前的手工管理方式,需要再聘用几个生活老师加强对学生及宿舍的管理。
(2)购买市场上已有宿舍管理系统,一般来说能够帮助人们在某些环节上完成一些简单的、重复性的工作。
(3)自己开发一个宿舍管理系统,根据学校自身情况明确目标,开发适合自己的系统。
对于第一种显然是个不可行的,那样既不可减少学校的支出也不可以改善学校宿舍管理制度,以往工作中的缺陷和问题仍没有得到根本的改变和解决。
对于第二种购买理论上是可行的,但存在着这样一些问题,首先购买现有的软件是比较昂贵的;其次购买到真正满足学校需求、适应学校环境的软件是十分困难的;最后购买来的软件是作用和可靠程度一般都不尽如人意,所以经过多次调查讨论后我决定借毕业设计的机会为学校开发一个宿舍管理系统。自己开发软件目标明确、符合需求、便于进一步扩充和升级。因此,自行开发为自己所用的,
适用于学校这一特定应用范围的,只支持宿舍管理这一局部功能的软件是学校最佳的选择。
3.3 系统开发的可行性分析与讨论
可行性研究是系统分析阶段的第二项活动,其主要目标是进一步确定系统目标、规模与功能,对系统开发背景、必要性和意义进行调查分析并根据需要和可能提出开发系统的初步方案与计划。下面,我从三个方面对河套大学宿舍管理系统的可行性进行分析。
(1)技术可行性:技术上的可行性要考虑将来采用的硬件和软件技术能否满足用户提出的要求。基于当前的计算机网络技术和数据技术已成熟,而且管理信息系统(MIS)的各种开发技术也已经相当成熟,并且在各个领域都不乏成熟的案例。所以为河套大学开发一套网络平台的多用户共享信息的宿舍管理系统在技术上是可行的。
(2)经济可行性:经济可行性主要是对项目的经济效益进行评价。目前,河套大学已建立了校园网络系统,具备了运行网络平台的MIS的硬件基础,而且本系统是我作为毕业设计自行开发,免费帮助设计并实施的。因此开发、设计这套系统的支出费用是学校可以承担的,即经济上是可行的。
(3)运营可行性:宿舍管理系统的开发不会影响学校其它职能部门的正常运行。现有的生活部负责人及生活老师素质比较高,所以宿舍管理系统的实施不会遭到阻力,加上校领导的支持和其它各部分的配合,宿舍管理系统的实施在运营上是可行的。
3.4系统详细调查
系统详细调查的目标是在可行性研究的基础上进一步对现有系统进行全面、深入的调查和分析,弄清楚现行系统的运行状况发现其薄弱环节,找出要解决的问题的实质,确保新系统比原系统更有效。
通过详细调查,学校现有在校学生13000多人,宿舍楼8座,男女生各4座。目前,宿舍管理工作完全靠生活部老师手工完成。学生注册后,入住管理都是手工方式进行。由生活部老师按照学生的专业及到校的先后次序依次安排入住。学生的基本记录,以及安排入住后的相关资料也由生活老师手工登记,这使的生活部工作量很大,而且宿舍实行统一标准的管理,也不能满足学生及家长的住宿要求,这些问题都亟待解决。因此,即使目前全部宿舍都是统一的6人间标准,由于完全采用手工管理,生活部的老师已经非常辛苦。而且随着多层次、多等级标准宿舍的出现,手工方式的管理已经完全不能适应管理工作的需要。
3.5系统逻辑模型的提出
这一阶段是系统分析的最后一项活动,目标是明确用户的信息需求,确定新系统的逻辑功能,提出新系统的逻辑方案。
经过初步调查及详细调查后发现原有的手工管理方式不能满足学校现在的管理要求,学校将采用新的管理方式,对学生宿舍实行公寓化管理,将现有的宿舍化分为三个标准:2人间、4人间和6人间,各种标准的公寓内部设施各不同,相应的住宿费也不同。学生报到后持缴费单到生活部报到安排住宿,根据学生的不同情况,首先登记学生的基本信息,然后查询相应的宿舍情况,依次安排学生入住。使学生很快适应新的环境,进入正常、健康的大学生活,为了丰富大学的生活我们开展各种评比活动并且学期结束,按评比结果进行奖励。
(1)宿舍管理系统关联图,如下图所示:
(2)宿舍管理系统顶层图,如下图所示:
F1:学生注册单 F2:宿舍标准信息 F3:学生基本信息
F4:宿舍信息
F7:退宿结果
F5:评比依据 F8:入住结果 F6:评比结果 F9:学生信息
第四章 宿舍管理系统的系统设计
4.1 数据库的设计
4.1.1 数据库需求分析
需求分析阶段应该对系统的整个应用情况作全面的、详细的调查,确定系统的目标,收集支持系统总的设计目标的基础数据和对这些数据的要求,确定用户的需求。
要设计一个性能良好的数据库系统,收集和分析用户需求,明确应用环境对系统的要求是首要的和最基本的。特别是数据库应用非常广泛,非常复杂,多个应用程序可以在同一个数据库上运行时,为了支持所有应用程序的运行,数据库设计就变的复杂。因此事先对信息进行充分和细致的分析,是数据库设计取得成功的关键所在。
事实上确定全部的用户需求是一件很困难的事情,原因如下:
(1)系统本身的需求是变化的,用户的需求必须不断调整,使之与这变化相一致。
(2)由于用户缺少计算机信息系统设计方面的专业知识,要准确表达他们的需求很困难,特别是很难说清楚某部分工作的功能与发展过程。
(3)要调动用户积极性,使他们能够积极的参与系统的分析与设计工作相当困难。
虽然面临这些困难,但它关系到数据库设计的成功与否所以一定要认真对待。因此,我们应收集尽可能详细的资料,并且了解系统将来要发生的变化,收集未来应用所涉及的数据,充分考虑到系统可能的扩充和变动,使系统设计更符合未来发展的趋向,并且易于改动,以减少系统维护的代价。
4.1.2数据库概念模式设计(E-R图)
在概念设计阶段中,设计人员从用户的角度看待数据及处理要求和约束,产生一个反映用户观点的概念模型。
为了使E-R图表示的更加清楚,我将E-R图分成实体及其属性图和实体及其联系图如下所示。
4.1.3数据库逻辑结构设计
逻辑设计主要是把概念模式转换成DBMS能处理的模式,E-R图到关系模式的转换是比较直接的,实体的联系都可以表示成关系,E-R图中的属性也可以转换成关系的属性。E-R图直接转化成的关系模式的不是唯一的,也不是一定是最优的,还得根据现实语义,运用范式规范化理论进行优化。
系统中所涉及到的实体有:学生实体、宿舍实体、宿舍标准实体、奖励等级实体及奖品实体。将其E-R图向关系模型转换结果如下:
用户表(用户ID,用户名,密码,学生信息管理,宿舍信息管理,学生住宿
管理,评比及奖励管理,综合信息查询) 用户ID为此关系的码(注:学生信息管理,宿舍信息管理,学生住宿管理,评比及奖励管理,综合信息查询为权限分类)。
学生基本信息表(学号,姓名,性别,出生日期,入学时间,专业,家庭地
址,联电话,邮编) 学号为此表的码。
宿舍标准表(标准号,标准名称,住宿费,床,桌子,柜子,椅子,电视,
网口,电话,是否有独立卫生间) 标准号是此表的码
宿舍信息表(宿舍号,标准号,位置,床位总数,已用床位,未用床位,电
话号码,) 宿舍号为此表的码。
奖品信息表(奖品号,奖品名称,数量,价值) 奖品号为此表的码。 奖励等级表(等级号,等级名称,评奖机构) 等级号为此表的码。 奖品发放表(奖品号,等级号,数量)
学生入宿表(入住编号,姓名,学号,宿舍号,入住时间,联系电话) 学
号和宿舍号为此表的码。
学生退宿表(退宿编号,宿舍号,学号,姓名,退宿日期,入住编号) 宿
舍号和学号为此表的码。
宿舍评比等级表(领用编号,宿舍号,奖励等级号,评比时间,备注) 宿
舍号和奖励等级号为此表的码。
系统自动编号表(编号名称,编号) 编号为此表的码。 4.1.4数据库的物理设计
(1) 数据库和表名称
在河套大学宿舍管理系统中数据库的名称设置为hostel 数据库中的表名称
(2) 表结构设计:
宿舍信息表(hosgrn)
学生退宿表(gobacktable)
宿舍评比等级表(gogrademess)
4.2 安全性设计
为了增强数据安全性,学校要求采用大型数据库。利用大型关系数据库自身的事务回卷,定期备份等功能,以便保证系统启用后不会出现数据丢失、死机等现象,并保证数据库的一致性、并发性和可移植性。
SQL Server 2000数据库的安全性管理功能就非常强大,相对来说也比较复杂,下面将从系统开发的实际情况出发,根据系统分析的结果,对系统安全性进行有针对性的设计。
(1)后台SQL Server数据库以Sa 为系统管理员,这一角色由河套大学的专职计算机人员担任,负责对后台数据库的维护。
(2)对所有从“宿舍管理系统”前台登录的合法用户,都以DBO角色来访问后台数据库。
(3)通过前台开发工具Visual Basic 6.0对用户登录权限进行严格的控制管理。
4.3 网络拓扑结构
图 4-2 C/S 和B/S混合结构的系统结构图
4.4 代码设计
代码设计的主要原则是简单,易懂和可扩充性,代码设计的方法有好多,本系统选用层次叠加码作为河套大学的信息编码方案。下表以资源信息代码表组成为例描述学生号的组成原理。
4.5 界面设计
界面设计应简单明了,一目了然。一方面从用户应用需求出发,宿舍管理系统面对的最终用户是对计算机并不精通的学校生活部管理员;另一方面友好、清晰的界面也易学易用,易维护。
(1)河套大学宿舍管理系统界面,如下图所示:
图 4-3 宿舍系统主界面
在屏幕最上方为主菜单区,显示本系统的主菜单,用户可以用鼠标来选择下拉菜单选项,选择权限范围内的选项。
当用户通过选择了菜单所要进行的工作后,系统进入相应的业务处理功能,这时整个业务处理活动在系统工作区进行。当业务处理完毕后,系统自动返回到进入次处理之前的原始菜单显示状态。 (2)输入界面的设计
为了方便用户的使用,宿舍管理系统的界面大量的选用Visual Basic 所提供的标准控件,并配以一些下拉式菜单适当提高用户工作效率,宿舍管理系统的输入界面主要有:学生信息管理录入、宿舍信息设置、入住信息录入、评比奖励登记等。
学生信息管理录入 如下图所示:
图4-4 学生信息录入界面
4.6 功能结构图的设计
功能结构图主要从功能的角度描述了系统的结构,但并未能表达各功能这间的数据传送关系。
河套大学宿舍管理系统从功能上可以划分出如下几个模块,如下图所示:
图 4-5 学生宿舍主功能图
为了详细的描述系统功能,我将宿舍管理系统分为七个大的模块:系统管理模块,学生信息管理模块,宿舍信息管理模块,学生住宿管理模块,评比及奖励管理模块,综合查询管理模块,帮助模块,每个模块将实现不同的功能。下面将具体进行介绍 4.6.1系统管理模块
系统管理模块包括:用户设置,操作销定,注销系统,退出系统,数据清空几个部分。如下图所示:
图 4-6 系统管理功能图
从登录框登录后,只有系统管理员才具有用户设置的权限。普通用户不可以使用,即没有添加、修改用户权限的权力。
(1) 用户设置:设置用户信息,如:用户ID
,用户名称,用户密码,以及用
户权限。(只有系统管理员system可以设置新用户权限)
(2) 操作销定:判断是否销定系统,以应付紧急情况。
(3) 注销系统:注销当前工作用户重新登录系统。
(4) 退出系统:单击退出系统。
(5) 数据清空:清空所有数据(只有系统管理员system有此权限)
4.6.2学生信息管理模块
学生信息管理模块包括:注册学生信息,学生信息浏览,学生信息查询三个部分,如下图所示:
图4-7 学生信息管理功能图
(1) 注册学生信息:登记学生基本信息。
(2) 学生信息浏览:浏览所有注册学生的信息。
(3) 学生信息查询:以学号或姓名或性别为关键字进行按条件查询。
4.6.3宿舍信息管理模块
宿舍信息管理模块包括:宿舍标准设置,宿舍信息设置。如下图所示:
图 4-8 宿舍信息管理功能图
(1)宿舍标准设置:设置各个标准信息,实现不同宿舍标准的分级管理。
(2)宿舍信息设置:设置宿舍的所属的标准及宿舍相关情况。
4.6.4 学生住宿管理模块 :
学生住宿管理模块包括:学生住宿登记,学生退宿登记,剩余宿舍查询三个
部分。如下图所示:
图 4-9 学生住宿管理功能图
(1)学生住宿登记:记录学生选择宿舍标准后的相关入宿情况。
(2)学生退宿登记:学生退宿归还宿舍资源(床位)情况的记录
(3)剩余宿舍查询:统计未入住或未住满的宿舍情况。
4.6.5 评比及奖励管理模块
评比及奖励管理模块包括:评比标准,奖品管理,评比奖励登记。如下图所示:
图4-10 评比、奖励功能图
评比标准:以文本框的形式显示评比标准。
(1) 奖品管理:A 奖品等级设置:设置不同等级奖励奖品发放情况。
B 奖品明细设置:有关奖品信息的设置。
(2) 评比等级登记:宿舍评比等级录入情况。
4.6.6综合信息查询:
学生注册入宿信息管理模块包括:宿舍标准查询,学生入住信息查询两个模块。如下图所示:
图 4-11 综合信息查询功能图
(1) 宿舍标准查询:统计所有宿舍标准,即宿舍设置情况以宿舍号或床位数为关
键字查询相应设置情况。
(2)学生入住信息查询:统计所有学生入住情况,以宿舍号或学号或姓名进行有
条件查询。
4.6.7帮助模块
此模块是对学生宿舍管理系统开发者的相关信息的一个简单的介绍。
第五章 宿舍管理系统的系统实施
经过了系统规划,系统分析和系统设计等阶段后,便开始了系统实施阶段,这个阶段要继承以前各阶段的工作成果,是系统分析和设计阶段的结晶。
5.1 开发工具的选择
5.1.1 前台开发工具的选择
比较几种开发工具以后,我选择了Visual Basic 6.0作为河套大学宿舍管理系统前台开发工具。这主要是考虑到学习比较容易,而且相关论坛比较多,可以及时的完成任务。
BASIC语言是受到国内外千百万计算机爱好者欢迎的语言,自1964年问世以来,从实验室走向校园,从校园走向社会,从社会一度走向全世界,始终不衰。BASIC是Beginners All Purpose System InterChange Code (初学者通用符号代码)的缩写。与其它高级语言相比,它的语法规则相对简单,容易理解和掌握,且具有使用价值,被认为是最理想的初学者语言。BASIC语言自诞生以来,在广泛使用中不断的发展。随着Windows环境的推广使用,很多人正在学习和使用了在Windows环境中编程使用的BASIC—Visual Basic。故我选用Visual Basic 6.0作为前台开发工具。
5.1.2 后台数据库的选择
数据库是数据管理的最新技术,是计算机科学的重要分支。十年来,数据库管理系统已从专用的应用程序包发展成为通用系统软件。由于数据库具有数据结构化、最低冗余度、较高的程序与数据独立性、易于扩充、易于编制应用程序等优点,较大的信息系统都是建立在数据库设计之上的。
由于用到的数据表格多,另外考虑到实际情况,学生基本信息的变动,还有员工信息的多少的变化,我们选用SQL Server作为数据库开发,而不用Access,主要是因为Access数据库是一个桌面数据库系统,不适合用户程序对数据库远
程连接,而SQL Server是一种常用的关系数据库,能存放和读取大量的数据,管理众多并发的用户,故选用SQL Server数据库。
5.2 程序实现(源代码)
5.2.1 系统源代码
我用Visual basic 为河套大学开发的>,有大量的程序源代码,下面仅有几种重要的程序源代码,列示如下:
系统界面源代码:
――――――――――――――
Private Sub MDIForm_Load()
MainForm.Caption = StrSystem
'---------------------------------
If Trim(LimStuMess) = 1 Then
StudenMan.Enabled = True
Else
StudenMan.Enabled = False
End If
If Trim(LimHosMess) = 1 Then
HostelMan.Enabled = True
Else
HostelMan.Enabled = False
End If
If Trim(GoHosManMess) = 1 Then
GoHosMan.Enabled = True
Else
GoHosMan.Enabled = False
End If
If Trim(LimGradeMess) = 1 Then
StuGrade.Enabled = True
Else
StuGrade.Enabled = False
End If
If Trim(LimAllMess) = 1 Then
AllData.Enabled = True
Else
AllData.Enabled = False
End If
Statu.Panels(1).Text = StrSystem & Space(10) & "Version 1.0"
Statu.Panels(2).Text = "当前操作员:" & LoginName
Statu.Panels(3).Text = "系统开发人员:王淑霞"
End Sub
Private Sub NoHosFind_Click()
NoGoHosFind.Show
End Sub
Private Sub OpLock_Click()
Call SysLockSub
End Sub
Private Sub StaHosFind_Click()
StaHosList.Show
End Sub
Private Sub StaticHos_Click()
HosStaticMess.Show
End Sub
Private Sub StuFind_Click()
StuMessFindList.Show
End Sub
Private Sub StuHosFind_Click()
StuHosList.Show
End Sub
Private Sub StuMessList_Click()
StuMessLook.Show
End Sub
Private Sub SysExit_Click()
End
End Sub
Private Sub Timer1_Timer()
Label1.Caption = Now()
End Sub
Private Sub TryLogin_Click()
Dim IsYesNo As String
Set rs = Nothing
Set cn = Nothing
IsYesNo = MsgBox("是否确认注销系统?", vbQuestion + vbYesNo, strsytem)
If IsYesNo = vbYes Then
Unload MainForm
Login.Show
End If
End Sub
Private Sub UserSys_Click()
SysUser.Show
End Sub
Public Sub SysLockSub()
Dim ISLOCK As String
ISLOCK = MsgBox("是否确认锁定系统?", vbCritical + vbYesNo, StrSystem)
If ISLOCK = vbYes Then
SysLock.Show 1
End If
End Sub
―――――――――――――――――――――――――――
宿舍标准信息设置源代码:
――――――――――
Option Explicit
Public IsAddEdit As String
Private Sub CmdAdd_Click()
StaticNumber.Enabled = True
StaticName.Enabled = True
HosMoney.Enabled = True
StaticNumber.Text = ""
StaticName.Text = ""
HosMoney.Text = ""
CmdAdd.Enabled = False
CmdSave.Enabled = True
CmdFind.Enabled = False
CmdDel.Enabled = False
StaticNumber.SetFocus
IsAddEdit = "新增"
End Sub
Private Sub CmdDel_Click()
Dim rs As New ADODB.Recordset
Dim strSQL As String
Dim IsYesNo As String
IsYesNo = MsgBox("是否确认删除记录?", vbInformation + vbYesNo, StrSystem)
If IsYesNo = vbYes Then
strSQL = "DELETE FROM StaticHosTable WHERE StaticNumber='" & StaticNumber.Text & "'"
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
Call ShowListData("")
End If
End Sub
Private Sub CmdExt_Click()
Unload Me
End Sub
Private Sub CmdFind_Click()
Dim StrWhere As String
Dim IsWhere As String
IsWhere = InputBox("请输入您要查找的宿舍标准号或标准名称", "请输入条件", "请输入您要查找的宿舍标准号或标准名称")
StrWhere = " AND (StaticNumber LIKE '%" & CheckString(IsWhere) & "%' OR StaticName LIKE '%" & CheckString(IsWhere) & "%')"
Call ShowListData(StrWhere)
End Sub
Private Sub CmdSave_Click()
Dim rs As New ADODB.Recordset
Dim strSQL As String
If IsAddEdit = "新增" Then
If Trim(StaticNumber.Text) = "" Or Trim(StaticName.Text) = "" Or Trim(HosMoney.Text) = "" Then
MsgBox "宿舍标准号、标准名称、住宿费均不能为空!", vbInformation, StrSystem Exit Sub
End If
strSQL = "SELECT * FROM StaticHosTable WHERE StaticNumber='" & CheckString(StaticNumber.Text) & "'"
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
If rs.EOF = False Then
MsgBox "宿舍号标准号不能重复!", vbInformation, StrSystem
Exit Sub
End If
strSQL = "INSERT INTO StaticHosTable(StaticNumber,StaticName,HosMoney,Hoskip,Hosdsk,Hoscab,HosCha,HosTv,HosNet,HosTelNum,HosTol) VALUES ('"
strSQL = strSQL & CheckString(StaticNumber.Text) & "','" & CheckString(StaticName.Text) & "','" & CheckString(HosMoney.Text) & "',"
strSQL = strSQL & CheckString(HosKip.Text) & "," & CheckString(HosDsk.Text) & "," & CheckString(HosCab.Text) & "," & CheckString(HosCha.Text) & "," & CheckString(HosTv.Text) & ","
strSQL = strSQL & CheckString(HosNet.Text) & "," & CheckString(HosTelNum.Text) & ",'" & CheckString(HosTol.Text) & "')"
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
End If
If IsAddEdit = "修改" Then
strSQL = "UPDATE StaticHosTable SET StaticName='" & CheckString(StaticName.Text) & "',HosMoney=" & CheckString(HosMoney.Text) & ",HosKip="
strSQL = strSQL & HosKip.Text & ",HosDsk=" & HosDsk.Text & ",HosCab=" & HosCab.Text & ",HosCha=" & HosCha.Text & ",HosTv="
strSQL = strSQL & HosTv.Text & ",HosTelNum=" & HosTelNum.Text & ",HosTol='" & HosTol.Text & "' WHERE StaticNumber='" & StaticNumber.Text & "'"
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
End If
StaticNumber.Enabled = False
StaticName.Enabled = False
HosMoney.Enabled = False
CmdAdd.Enabled = True
CmdSave.Enabled = False
CmdFind.Enabled = True
CmdDel.Enabled = True
Call ShowListData("")
End Sub
Private Sub Form_Load()
HosStaticMess.Caption = StrSystem & "--宿舍标准信息设置" CmdAdd.Enabled = True
CmdSave.Enabled = False
CmdFind.Enabled = True
CmdDel.Enabled = True
StaticNumber.Enabled = False
StaticName.Enabled = False
HosMoney.Enabled = False
Call ShowListData("")
End Sub
Private Sub HosList_Click()
IsAddEdit = "修改"
Dim rs As New ADODB.Recordset
Dim strSQL As String
If HosList.ListItems.Count = 0 Then
Exit Sub
End If
strSQL = "SELECT * FROM StaticHosTable WHERE HosList.SelectedItem.Text & "'"
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
StaticNumber='" &
If rs.EOF = False Then
StaticNumber.Text = Trim(rs![StaticNumber])
StaticName.Text = Trim(rs![StaticName])
HosMoney.Text = Trim(rs![HosMoney])
HosKip.Text = Trim(rs![HosKip])
HosDsk.Text = Trim(rs![HosDsk])
HosCab.Text = Trim(rs![HosCab])
HosTv.Text = Trim(rs![HosTv])
HosNet.Text = Trim(rs![HosNet])
HosTelNum.Text = Trim(rs![HosTelNum])
HosTol.Text = Trim(rs![HosTol])
End If
Set rs = Nothing
End Sub
Private Sub HosList_DblClick()
CmdAdd.Enabled = False
CmdSave.Enabled = True
CmdFind.Enabled = False
CmdDel.Enabled = False
StaticNumber.Enabled = False
StaticName.Enabled = True
HosMoney.Enabled = True
End Sub
Private Sub V1_Change()
HosKip.Text = V1.Value
End Sub
Private Sub V2_Change()
HosDsk.Text = V2.Value
End Sub
Private Sub V3_Change()
HosCab.Text = V3.Value
End Sub
Private Sub V4_Change()
HosCha.Text = V4.Value
End Sub
Private Sub V5_Change()
HosTv.Text = V5.Value
End Sub
Private Sub V6_Change()
HosNet.Text = V6.Value
End Sub
Private Sub V7_Change()
HosTelNum.Text = V7.Value
End Sub
Public Sub ShowListData(ByVal lpWhere As String)
'************************************************************
'自定义过程,公共部分,为了实现显示数据
'************************************************************
Dim rs As New ADODB.Recordset
Dim strSQL As String
Dim Lv As ListItem
HosList.ListItems.Clear
strSQL = "SELECT * FROM StaticHosTable WHERE 1=1"
If lpWhere "" Then
strSQL = strSQL & lpWhere
End If
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
If rs.EOF = False Then
rs.MoveFirst
While rs.EOF = False
Set Lv = HosList.ListItems.Add(, , Trim(rs![StaticNumber]))
Lv.SubItems(1) = Trim(rs![StaticName])
Lv.SubItems(2) = Trim(rs![HosMoney])
Lv.SubItems(3) = Trim(rs![HosKip])
Lv.SubItems(4) = Trim(rs![HosDsk])
Lv.SubItems(5) = Trim(rs![HosCab])
Lv.SubItems(6) = Trim(rs![HosCha])
Lv.SubItems(7) = Trim(rs![HosTv])
Lv.SubItems(8) = Trim(rs![HosNet])
Lv.SubItems(9) = Trim(rs![HosTelNum])
Lv.SubItems(10) = Trim(rs![HosTol])
rs.MoveNext
Wend
Else
HosList.ListItems.Clear
End If
End Sub
―――――――――――――――――――――
5.2.2 系统主要界面
登陆框:
图5-1 系统登录界面
系统主界面:(见图4-2)
学生入住界面:
图5-2 学生入住界面
学生退宿管理界面:
图5-3 学生退宿界面
剩余宿舍查询界面:
图5-4 剩余宿舍查询界面
5.3 系统运行环境
5.3.1系统运行的硬件环境
服务器:
CPU:P4 3.0 GHZ
内存:1024 MB
硬盘:150 GB
显示器:17” 彩显
软盘驱动器:一个 光盘驱动器:一个
目前,服务器由高档微机承担,建议在资金条件允许情况下,配置专用服务器。 客户端:
CPU:P4 1.7 GHZ
内存:256 MB
硬盘:60 GB
显示器:17” 彩显
软盘驱动器:一个 光盘驱动器:一个
网络环境:交换机一台 网线若干
5.4 系统操作步骤
5.4.1 系统的进入
(1) 打开客户机,启动Windows XP。
(2) 在桌面上单击[河套大学宿舍管理系统]图标。
(3) 屏幕上出现登录画面,输入代码,姓名,密码,完成后用鼠标单击[确定]按钮。
(4) 进入系统后,用鼠标单击菜单选择要执行的功能。
5.4.2 系统操作次序
进入系统后,只有按照正确的顺序操作,才能保证系统的正常运行,保证数据的正确性。当第一次进入系统时,要先进录入管理,然后再执行其他模块进行处理。
5.4.3 B/S模式的查询系统操作过程
(1)在服务器上安装IIS系统,启动Web服务;这样系统就变成一个Web服务器。
(2)在服务器上为数据库建立用于Web服务的ODBC数据源。
(3)以ASP技术为Web服务开发查询程序,然后将做好的ASP网页复制到Web服务器的具有可执行权限的虚拟目录下,
相关程序见附录二:
5.5 系统测试
经过几个月的努力,我的毕业设计《河套大学宿舍管理系统》也终于接近尾声,为了使系统能够稳定运行,更加完善,对系统进行了有针对性的全面测试,采取的方式是:
菜单项测试:为了保证每一项下拉菜单能够正确的实现系统设计功能,我把有关学校宿舍及学生的基本数据,按照学生基本信息录入,宿舍信息录入等全部都输入系统中,并对每个菜单反复进行了新增、删除、修改、保存等操作,从而保证了菜单级功能的正确实现。
数据跟踪:完成菜单测试后,我又对系统内的每一个数据进行了跟踪测试。例如:对学生信息管理的“添加”这一项。我首先将“计算机系2005级计算机
信息管理专业01班的刘艳同学”录入系统。然后通过“查询”来检验数据是否正确插入了系统。
综合测试:在以上测试的基础上对系统功能进行整体测试,依次来检验系统是否符合系统设计的要求。
第六章 宿舍管理系统评价及展望
6.1 系统开发总结
历时三个月的毕业设计现在已经接近尾声了,回想起这段日子,感觉收获颇多。我这次毕业设计的任务是建立一个学生宿舍管理系统,它用到的开发工具是Visual Basic 语言,SQL Server数据库。
在设计的开始阶段为了尽快熟悉VB语言,我详细翻阅有关该方面的资料,对书中的基本理论知识逐章节地分析,同时还上机操作来加深理解。特别是对书中的一些典型实例,认真学习它的编程思想,吸引它的编程技巧,弄懂程序中每句话的含义。在对所要应用的技术有了一个基本认识后,就开始构思自己的系统设计。认真听老师对设计要求的讲解,根据任务书的要求将整个系统分为几个模块,每个模块具体又要实现哪些功能,然后就逐个模块去一一详细设计,设计的过程中不时地翻阅资料,用一些巧妙的技术来优化程序。程序代码完成之后,要进行运行调试,刚开始由于没有调试经验和方法效率很低,最后在老师和同学的帮助下,终于顺利完成了,自己也从中学到了不少东西。
总之,通过几个月的毕业设计,让我感受了软件开发的整个过程。毕业设计不仅是对我在大学所学知识的一个综合运用,也是一次增长知识和经验的好机会,同时也使我学会了许多处理、解决问题的方法,大大提高了自己的动手能力,为即将走上工作岗位打下了良好的基础。
6.2 系统开发中遇到的问题及解决措施
一个系统的功能的实现,需要经过这么几步,首先把大致的骨架给设计好,然后根据系统要求写代码,接着是调试程序,最后完善总结。其中最重要的两步就是中间的两步。在此次毕业设计中,给我印象最深的就是系统的调试。在调试过程中,遇到了不少的问题,不过经过我的不断的查阅资料,老师的指导,同学的商讨,这些问题都逐渐得到了解决。
6.3 系统展望
(1)本系统将对学校工作的影响
本系统校方计划将在下一学期开始运行,该系统的投入运行将使宿管部门工作人员的工作负担大减轻,工作效率得到提高,方便校内各部门实现信息共享,同时对于推动我校管理体制的改革,也将起到积极的作用。
(2)下一步的工作
宿舍内部物资的管理相对而言也是十分重要的,也需要进行系统、规范的管理。设计初学校急于强调学生住宿管理工作,所以对于物资管理仍保持以往管理方式,我和校方都已认识到这一方面还需改进。如何将物资管理同样实施规范化管理是我们下一步需要解决的问题。
目前河套大学宿舍管理系统的B/S和C/S系统使用的后台数据库是同一台服务器上的SQL Server 数据库,这种模式给我们的系统造成巨大的风险,为了避免一个服务器接入internet后可能遭到的各种各样的黑客的袭击,经过认真研究并咨询有关计算机专家,下一步我们决定对系统进行如下改进:提供Web服务的服务器与提供宿舍管理C/S模式的主服务分离,二者以适当的防火墙隔离。由于Web用户仅仅实施查询操作,而且查询信息对数据的实时性要求不太高,因此可采用主服器对Web服务器的数据库定时刷新的手段来解决Web 服务器上的数据更新问题。同时为了保证系统自身的安全,我们将采用一台普通的微机作为备份机,每天定时备份主服器的数据库,这里推荐使用海量备份方式,可利用windows的计划任务功能协助实现。
改进后的宿舍管理系统的结构图如下所示:
图6-1采用C/S和B/S混合结构的宿管系统结构图
致 谢
转眼间,三个多月的毕业设计就要结束了,在参加设计的这段时间里,能够完成这次毕业设计,除了我自己的努力外,老师和同学们也给予了我非常大的帮助。
首先要感谢我的指导老师马秀麟老师,在初次见面时,马老师就耐心的为我分析该系统,告诉我目前宿舍管理上的种种弊端,让我在就具体设计该系统时尽可能的考虑全面,使我对整个设计有了一个初步的认识。对我进行全面、具体的指导,并给了我许多宝贵的意见。
在设计刚开始时,对许多东西都是陌生的,发VB语言之前都没有接触过,都是我的指导老师给予了我耐心的指导,使我对陌生的开发环境产生了浓厚的学习兴趣。
毕业设计能够顺利完成,我非常感谢马老师不辞辛苦的对我的帮助,同时也感谢我的同学,在该系统的完成过程也给我提供了不少的意见和帮助。
总之,在老师尽心尽力的帮助下,我的毕业设计才能如期顺利完成,并且,我的导师就我的论文的编排和书写格式也为我提出了不少的修改意见。在此,我衷心的感激他,真诚的向他说一声“谢谢”!
附录一:主要参考文献
《Visual Basic程序设计》作者 潭浩强 袁玫 清华大学出版 《管理信息系统》 主编 黄梯云 经济科学出版社
《信息资源管理》 主编 甘仞初 经济科学出版社
《信息系统开发》 主编 甘仞初 经济科学出版社
《SQL Server中文版基础培训教程》主编 刘遵仁
于忠清人民邮电出版社
附录二:主要源程序代码
用户登陆源代码:
―――――――――
Private Sub CmdExt_Click()
End
End Sub
Private Sub CmdOK_Click()
Dim rs As New ADODB.Recordset
Dim strSQL As String
strSQL = "SELECT * FROM UserTable WHERE UserName='" & Replace(UserName.Text, "'", "''") & "' AND UserPwd='" & Replace(UserPwd.Text, "'", "''") & "'"
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
If rs.EOF = False Then
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
LoginName = Trim(UserName.Text)
LimStuMess = Trim(rs![StuMess])
LimHosMess = Trim(rs![HosMess])
LimGradeMess = Trim(rs![GradeMess])
LimAllMess = Trim(rs![AllMess])
'
MainForm.Show
Unload Me
Else
MsgBox "密码不正确,请重新输入!", vbInformation, SystemName
UserPwd.SetFocus
UserPwd.SelStart = 0
UserPwd.SelLength = Len(UserPwd.Text)
End If
End Sub
Private Sub Form_Load()
SystemName.Caption = StrSystem '系统名称
Login.Caption = StrSystem & "--登陆"
If LinkStartDatabase = False Then
MsgBox "数据库连接失败,请重新配置系统UserMode中LinkStartDatabase的部分代码!", vbInformation, StrSystem
End
End If
End Sub
Private Sub UserID_Change()
'********************************************************************
'如果用户输入的ID正确,把相应的用户名显示出来
'********************************************************************
Dim rs As New ADODB.Recordset
Dim strSQL As String
If Trim(UserID.Text) "" Then
strSQL = "SELECT * FROM UserTable WHERE UserID='" & Replace(UserID.Text, "'", "''") & "'"
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
If rs.EOF = False Then
UserName.Text = Trim(rs![UserName])
UserPwd.SetFocus
CmdOK.Enabled = True
Else
UserName.Text = ""
CmdOK.Enabled = False
End If
End If
Set rs = Nothing
End Sub
――――――――――――――――――――――――――
学生基本信息录入源代码:
――――――――――
Public ISAddEdit As String
Private Sub CmdAdd_Click()
ISAddEdit = "ADD"
StuNumber.Enabled = True
StuName.Enabled = True
StuAge.Enabled = True
GoDate.Enabled = True
SchDate.Enabled = True
Class.Enabled = True
AddRess.Enabled = True
AddNumber.Enabled = True
TelNumber.Enabled = True
'********************************************
StuNumber.Text = ""
StuName.Text = ""
Class.Text = ""
AddRess.Text = ""
AddNumber.Text = ""
TelNumber.Text = ""
CmdAdd.Enabled = False
CmdSave.Enabled = True
CmdFind.Enabled = True
CmdDel.Enabled = False
StuNumber.SetFocus
End Sub
Private Sub CmdDel_Click()
Dim IsDel As String
Dim rs As New ADODB.Recordset
Dim strSQL As String
IsDel = MsgBox("是否确认删除该学生的信息?", vbInformation + vbYesNo, strsytem) ' If IsDel = vbYes Then
If StuList.ListItems.Count = 0 Then
Exit Sub
End If
strSQL = "DELETE FROM StuMess WHERE StuNumber='" & StuList.SelectedItem.Text & "'"
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
End If
Call ShowStuMessList("")
End Sub
Private Sub CmdExt_Click()
Unload Me
End Sub
Private Sub CmdFind_Click()
Dim strWhere As String
strWhere = InputBox("请输入您要查询学生学号或姓名关键字:", 请输入条件, "请输入您要查询学生学号或姓名关键字")
strWhere = " AND StuName LIKE '%" & CheckString(strWhere) & "%' OR StuNumber LIKE '%" & CheckString(strWhere) & "%'"
Call ShowStuMessList(strWhere) '调用自定义过程,传递用户输入的条件!
End Sub
Private Sub CmdSave_Click()
Dim rs As New ADODB.Recordset
Dim strSQL As String
If ISAddEdit = "ADD" Then
If Trim(StuNumber.Text) "" Then
strSQL = "SELECT *
CheckString(StuNumber.Text) & "'"
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
If rs.EOF = False Then
MsgBox "学生信息中学生不能重复!", vbInformation, StrSystem
StuNumber.Text = "" FROM StuMess WHERE StuNumber='" &
Exit Sub
End If
End If
If Trim(StuNumber.Text) = "" Or Trim(StuName.Text) = "" Then
MsgBox "学生的学号或姓名均不能为空!", vbInformation, StrSystem
Exit Sub
End If
strSQL = "INSERT INTO StuMess(StuNumber,StuName,StuSex,GoDate,SchDate,Class,AddRes,AddNumber,TelNumber) VALUES ('"
strSQL = strSQL & CheckString(StuNumber.Text) & "','" & CheckString(StuName.Text) & "','" & CheckString(StuAge.Text) & "','"
strSQL = strSQL & CheckString(GoDate.Value) & "','" & CheckString(SchDate.Value) & "','" & CheckString(Class.Text) & "','"
strSQL = strSQL & CheckString(AddRess.Text) & "','" & CheckString(AddNumber.Text) & "','" & CheckString(TelNumber.Text) & "')"
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
End If
If ISAddEdit = "EDIT" Then
If Trim(StuNumber.Text) = "" Or Trim(StuName.Text) = "" Then
MsgBox "学生的学号或姓名均不能为空!", vbInformation, StrSystem
Exit Sub
End If
strSQL = "UPDATE StuMess SET StuName='" & CheckString(StuName.Text) & "',StuSex='" & CheckString(StuAge.Text) & "',"
strSQL = strSQL & "GoDate='" & CheckString(GoDate.Value) & "',SchDate='" & CheckString(SchDate.Value) & "',Class='" & CheckString(Class.Text) & "',"
strSQL = strSQL & "AddRes='" & CheckString(AddRess.Text) & "',AddNumber='" & CheckString(AddNumber.Text) & "', TelNumber='" & CheckString(TelNumber.Text) & "'" strSQL = strSQL & "WHERE StuNumber='" & Trim(StuNumber.Text) & "'"
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
End If
Call ShowStuMessList("") '显示数据,该处为自定过程.
StuNumber.Enabled = False
StuName.Enabled = False
StuAge.Enabled = False '性别
GoDate.Enabled = False
SchDate.Enabled = False
Class.Enabled = False
AddRess.Enabled = False
AddNumber.Enabled = False
TelNumber.Enabled = False
CmdAdd.Enabled = True
CmdSave.Enabled = False
CmdFind.Enabled = True
CmdDel.Enabled = True
Set rs = Nothing
End Sub
Private Sub Form_Load()
Studen.Caption = StrSystem & "--学生基本信息"
StuNumber.Enabled = False
StuName.Enabled = False
StuAge.Enabled = False
GoDate.Enabled = False
SchDate.Enabled = False
Class.Enabled = False
AddRess.Enabled = False
AddNumber.Enabled = False
TelNumber.Enabled = False
CmdAdd.Enabled = True
CmdSave.Enabled = False
Call ShowStuMessList("")
End Sub
Public Sub ShowStuMessList(ByVal lpWhere As String)
'************************************************************
'自定义过程,公共部分,为了实现显示数据
'************************************************************
Dim rs As New ADODB.Recordset
Dim strSQL As String
Dim Lv As ListItem
StuList.ListItems.Clear
strSQL = "SELECT * FROM StuMess WHERE 1=1 "
If lpWhere "" Then
strSQL = strSQL & lpWhere & " ORDER BY StuNumber"
End If
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
If rs.EOF = False Then
rs.MoveFirst
While rs.EOF = False
Set Lv = StuList.ListItems.Add(, , Trim(rs![StuNumber]))
Lv.SubItems(1) = Trim(rs![StuName])
Lv.SubItems(2) = Trim(rs![StuSex])
Lv.SubItems(3) = Trim(rs![GoDate])
Lv.SubItems(4) = Trim(rs![SchDate])
Lv.SubItems(5) = Trim(rs![Class])
Lv.SubItems(6) = Trim(rs![Addres])
Lv.SubItems(7) = Trim(rs![AddNumber])
Lv.SubItems(8) = Trim(rs![TelNumber])
rs.MoveNext
Wend
Else
StuList.ListItems.Clear
End If
End Sub
Private Sub StuList_Click()
Call ShowData '调用自定义过程。
End Sub
Private Sub StuList_DblClick()
ISAddEdit = "EDIT"
Call ShowData '用户双击修改数据。
StuNumber.Enabled = False
StuName.Enabled = True
StuAge.Enabled = True
GoDate.Enabled = True
SchDate.Enabled = True
Class.Enabled = True
AddRess.Enabled = True
AddNumber.Enabled = True
TelNumber.Enabled = True
CmdAdd.Enabled = False
CmdSave.Enabled = True
CmdFind.Enabled = False
CmdDel.Enabled = False
End Sub
Public Sub ShowData()
'把用户选择的该条数据显示出来。
Dim rs As New ADODB.Recordset
Dim strSQL As String
If StuList.ListItems.Count = 0 Then
Exit Sub
End If
strSQL = "SELECT * FROM StuMess WHERE StuNumber='" & StuList.SelectedItem.Text & "'"
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
If rs.EOF = False Then
StuNumber.Text = Trim(rs![StuNumber])
StuName.Text = Trim(rs![StuName])
StuAge.Text = Trim(rs![StuSex])
GoDate.Value = Trim(rs![GoDate])
SchDate.Value = Trim(rs![SchDate])
Class.Text = Trim(rs![Class])
AddRess.Text = Trim(rs![Addres])
AddNumber.Text = Trim(rs![AddNumber])
TelNumber.Text = Trim(rs![TelNumber])
End If
End Sub
―――――――――――――――――――――――――――――――
学生入住管理源代码:
――――――――――
Option Explicit
Public strStaticNumber As String '宿舍号标准号
Private Sub CmdAdd_Click()
Dim rs As New ADODB.Recordset
Dim strSQL As String
'*********************************
strSQL = "SELECT HosNumber FROM HosGrn WHERE HosNoSum>=1"
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
If rs.EOF = False Then
HosNumber.Clear
rs.MoveFirst
While rs.EOF = False
HosNumber.AddItem Trim(rs![HosNumber])
rs.MoveNext
Wend
HosNumber.Text = ""
End If
'*********************************
strSQL = "SELECT stuNumber FROM StuMess"
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
If rs.EOF = False Then
StuNumber.Clear
rs.MoveFirst
While rs.EOF = False
StuNumber.AddItem Trim(rs![StuNumber])
rs.MoveNext
Wend
StuNumber.Text = ""
End If
'**************************
'**************************
GoNumber.Text = CreateNumber("Gh")
strSQL = "SELECT * FROM GoHosTable WHERE GoNumber='" & Trim(GoNumber.Text) & "'"
If rs.State = 1 Then
rs.Close
End If
rs.Open strSQL, cn, adOpenStatic, adLockOptimistic
If rs.EOF = False Then
MsgBox "入住序号重复!", vbInformation, StrSystem
GoNumber.Text = ""
CmdAdd.Enabled = True
Exit Sub
End If
'***********************
'***********************
HosNumber.Enabled = True
StuNumber.Enabled = True
StuName.Enabled = True
StuTel.Enabled = True
GoDate.Enabled = True
CmdAdd.Enabled = False
CmdSave.Enabled = True
CmdDel.Enabled = False
CmdFind.Enabled = False
'************
HosNumber.Text = ""
StuNumber.Text = ""
StuName.Text = ""
StuTel.Text = ""
'***********************