学生宿舍管理系统论文

本科毕业论文(设计)

题 目基于ASP.NET 的学生寝室管理系统

学生姓名

专业名称

指导教师

基于ASP.NET 的学生寝室管理系统

摘要:

管理信息系统在现代社会已深入到各行各业,由于计算机技术的迅速发展和普及,信息管理系统MIS 事实上已成为计算机管理信息系统,大学生寝室管理系统就是一个典型的管理信息系统,它可以让寝室管理工作变的更轻松。本毕业设计的任务就是设计一个大学生寝室管理系统,其开发过程主要包括前端应用程序的开发和后台数据库的建立和维护两个方面。主要任务就是建立基本数据,后台程序主要负责的都是管理上的功能。

本系统运用Microsoft SQL Server2005为后台数据库,以Visual studio 2005为前端开发工具,系统实现了系统维护、寝室管理、学生管理、寝室分配、信息查询等必需的功能,其操作简单,界面友好,运行比较稳定,适用于大学院校大学生寝室管理。

关键词:学生寝室管理系统;数据库管理系统;SQL Server2005;ASP.NET ;B/S;VS2005

Students ’ Dormitory Management System Based On

ASP.NET

Abstract :

Nowadays, Management Information System is used by many calling. As a result, computer technology is developed and generalized rapidly, the Information Management System turns into Computer Management Information System in fact. The manage system of college students’ dormitory is emblematical Manager Information System, it can make the job of the management cushy. The task of this graduation design is to design a management system for college student’s dormitory. Exploitation comprizes two sides of construction and maintenance of backstage data base and proscenium application program. The main task is to set up basic data, the background function is in charge of management function.

This system used Microsoft SQL Server 2005 as the backstage database and Visual studio 2005 as the front developing instrument. The system implements necessary functions such as system maintainance, dormitory management, students management, dormitory distribution, information inquiry, etc. The operation is simply, the interface is friendly, the running state is more steady, this management system is suitable for college students’ dormitory management.

Key Words :dormitory management system ;database management system ;SQL Server2005;ASP.NET ;B/S;VS2005

目 录

1 绪论............................................................................................................................ 2

1.1 开发背景与现状.............................................................................................. 2

1.2 开发设计的意义.............................................................................................. 2

1.3 开发环境.......................................................................................................... 3

1.4 本章小结.......................................................................................................... 3

2 相关技术.................................................................................................................... 3

2.1 ASP.NET . ......................................................................................................... 3

2.2 B/S结构........................................................................................................... 5

2.3 数据库访问技术.............................................................................................. 7

2.4 ASP.NET 2.0 AJAX技术 ................................................................................. 8

2.5 本章小结.......................................................................................................... 9

3 系统需求分析和总体设计...................................................................................... 10

3.1 系统需求分析................................................................................................ 10

3.2 系统层次结构图............................................................................................ 13

3.3 系统功能模块................................................................................................ 14

3.4 本章小结........................................................................................................ 17

4 详细设计及系统实现.............................................................................................. 18

4.1 数据库设计.................................................................................................... 18

4.2 数据访问及用户界面的设计实现................................................................ 21

4.3 本章小结........................................................................................................ 33

5 总结.......................................................................................................................... 34

参考文献...................................................................................................................... 35

谢 辞...................................................................................................................... 36

1 绪论

1.1 开发背景与现状

随着时代的发展,计算机技术越来越深入各行各业,为广大的用户提供了更为周到和便捷的服务。目前各行各业广泛使用专用系统,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,设计开发好一个专用系统对一个机构(或部门) 的发展十分重要。近年来,随着用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术的广泛应用,向用户提供的服务将越来越丰富,越来越人性化。

对于学校而言,学生寝室管理是必不可少的组成部分。目前仍然存在有学校停留在寝室管理部门人员手工记录数据的阶段,手工记录对于规模小的学校来说勉强可以接受;但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的, 而且当查找某条记录时,由于数据量庞大,只能依靠人工去一条一条地查找,这样不但麻烦而且浪费许多时间,工作效率比较低。采用计算机来管理寝室和学生的信息,大大提高了查询的速度,节约了人力和物力资源,达到了预期的要求。今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:

首先,计算机可以代替人工进行许多繁杂的劳动;

其次,计算机可以节省许多资源;

再次,计算机可以大大的提高人们的工作效率;

最后,计算机可以使敏感文档更加安全,等等„„

1.2 开发设计的意义

为了实现提高高校寝室管理部门的工作效率;充分利用资源;减少不必要的人力,物力和财力的支出;方便寝室管理部门的工作人员全面地掌握学生住宿情况等目的;为寝室管理部门,开发设计专用系统—高校学生寝室信息管理系统来进行管理学生寝室信息,使学生寝室信息实现标准化的管理和规范化的制度是十

分必要的。专用系统是一个信息管理系统MIS (Management Information System)(以下就称信息管理系统) ,它将实现检索迅速和查找方便;信息的录入,修改和删除功能;以及对新入校学生进行寝室安排等功能,学生可以在系统前台以学生的身份进行查看和发布寝室的信息。

1.3 开发环境

本系统利用ASP.NET 2.0技术,采用C#语言编程,使用Visual Studio 2005软件实现界面和编码,数据库采用SQL Server2005。同时,为了有利于系统的扩充,采用B/S模式来实现。

1.4 本章小结

本章主要介绍了学生寝室管理系统的开发背景、现状及其开发意义,另外还说明了本系统的开发环境。

2 相关技术

2.1 ASP.NET

ASP.NET 是微软公司最新推出的用于构建动态、交互式Web 内容的开发技

术集。ASP.NET 的语法在很大程度上与ASP 兼容,同时它还提供一种新的编程模型和结构,用于生成更安全、可伸缩和稳定的应用程序[1]。

ASP.NET 是基于通用语言的编译运行的程序,它的强大性和适应性,可以使它运行在Web 应用软件开发者的几乎全部的平台上。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASP.NET 的Web 应用中[2]。ASP.NET 同时也是language-independent 语言独立化的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的有C#(C++和Java 的结合体),VB ,Jscript 。将来,这样的多种程序语言协同工作的能力保护您现在的基于COM+开发的程序,能够完整的移植向ASP.NET [3]。 采取了ASP.NET 技术的系统在性能上有了很大的改善,主要表现在以下几方面: ● 由于ASP 页面每次打开都必须经过先编译后解释的过程,所以页面在反复打

开时速度没有任何提升,而ASP.NET 页面只需要一次编译后不需要重新编译,直到该页面被修改或Web 应用程序重新启动。这使得在多次访问时速度有了极大的提升;

● 由于ASP 没有提供任何输出数据为内容的元件,所以在使用ASP 撰写数据

库页面时只能借助ADO 的DataSet 对象逐笔读取记录,而ASP.NET 通过ADO.NET 提供的GridView 等数据库元件可以直接和数据库联系[4];

● ASP.NET 支持应用程序的实时更新,管理员不必关掉网络服务器或者甚至不

用停止应用程序的运行就可以更新应用文件。应用程序文件永远不会被加锁,因此甚至在程序运行时文件就可以被覆盖,当文件更新后,系统会温和地转换到新的版本;

● ASP.NET 采取“CodeBehind(后置代码) 技术”将 Web 页面的代码与 HTML

设计物理分离,是对其他一些将代码和 HTML 混在一起的服务器技术的重大改进。在 ASP.NET 中,服务器端代码可以采用不同的.NET 语言来编写,这些语言是纯面向对象的;服务端代码是完全已编译和可执行的,并且采用逐行解释的方式,性能更佳;同时后置代码可以将页面的可视化部分和服务器端的业务逻辑分离开[5]。

2.2 B/S结构

B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet 技术的兴起,对C/S结构的一种变化或者改进的结构。

在这种结构下,用户工作界面是通过WWW 浏览器来实现,极少部分事务逻辑在前端(Browser )实现,但是主要事务逻辑在服务器端(Server )实现,形成所谓三层3-tier 结构[6]。相对于C/S结构属于“胖”客户端,需要在使用者电脑上安装相应的操作软件来说,B/S结构是属于一种“瘦”客户端,大多数或主要的业务逻辑都存在在服务器端,因此,B/S结构的系统不需要安装客户端软件,它运行在客户端的浏览器之上,系统升级或维护时只需更新服务器端软件即可,这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO )。B/S结构系统的产生为系统面对无限未知用户提供了可能。当然,与C/S结构相比,B/S结构也存在着系统运行速度较慢,访问系统的用户不可控的弱点。

以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在JAVA 这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效[7]。

B/S结构的优点:

1、具有分布性特点,可以随时随地进行查询、浏览等业务处理。

2、业务扩展简单方便,通过增加网页即可增加服务器功能。

3、维护简单方便,只需要改变网页,即可实现所有用户的同步更新。

4、开发简单,共享性强

B/S 模式的缺点:

1、个性化特点明显降低,无法实现具有个性化的功能要求。

2、操作是以鼠标为最基本的操作方式,无法满足快速操作的要求。

3、页面动态刷新,响应速度明显降低。

4、功能弱化,难以实现传统模式下的特殊功能要求。

二、C/S 模式的优点和缺点

C/S 模式的优点:

1、由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。

2、操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。

3、C/S结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。

C/S 模式的缺点:

1、需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。

2、兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序。

3、开发成本较高,需要具有一定专业水准的技术人员才能完成。

三、B/S架构软件的优势与劣势

(1)维护和升级方式简单

目前,软件系统的改进和升级越来越频繁,C/S系统的各部分模块中有一部分改变,就要关联到其它模块的变动,使系统升级成本比较大。B/S与C/S处理模式相比,则大大简化了客户端,只要客户端机器能上网就可以。对于B/S而言,开发、维护等几乎所有工作也都集中在服务器端,当企业对网络应用进行升级时,只需更新服务器端的软件就可以,这减轻了异地用户系统维护与升级的成本。如果客户端的软件系统升级比较频繁,那么B/S架构的产品优势明显——所有的 升级操作只需要针对服务器进行,这对那些点多面广的应用是很有价值的,例如一些招聘网站就需要采用B/S模式,客户端分散,且应用简单,只需要进行简单的浏览和少量信息的录入。

(2)系统的性能 在系统的性能方面,B/S占有优势的是其异地浏览和信息采集的灵活性。任何时间、任何地点、任何系统,只要可以使用浏览器上网,就可以使用B/S系统的终端。不过,采用B/S结构,客户端只能完成浏览、查询、数据输入等简单功能,绝大部分工作由服务器承担,这使得服务器的负担很重。采用C/S结构时,客户端和服务器端都能够处理任务,这虽然对客户机的要求较高,但因此可以减轻服务器的压力。而且,由于客户端使用浏览器,使得网上发

布的信息必须是以HTML 格式为主,其它格式文件多半是以附件的形式存放。而HTML 格式文件(也就是Web 页面)不便于编辑修改,给文件管理带来了许多不便[4]。比如说很多人每天上“新浪”网,只要安装了浏览器就可以了,并不需要了解“新浪”的服务器用的是什么操作系统,而事实上大部分网站确实没有使用windows 操作系统,但用户的电脑本身安装的大部分是windows 操作系统。

(3)系统的开发

C/S结构是建立在中间件产品基础之上的,要求应用开发者自己去处理事务管理、消息队列、数据的复制和同步、通信安全等系统级的问题。这对应用开发者提出了较高的要求,而且迫使应用开发者投入很多精力来解决应用程序以外的问题。这使得应用程序的维护、移植和互操作变得复杂[8]。如果客户端是在不同的操作系统上,C/S结构的软件需要开发不同版本的客户端软件。但是,与B/S结构相比,C/S技术发展历史更为“悠久”。从技术成熟度及软件设计、开发人员的掌握水平来看,C/S技术应是更成熟、更可靠的。

2.3 数据库访问技术

本系统采用ADO.NET 数据库访问技术来对数据库进行查询修改等操作。ADO.NET 是一组用于和数据源进行交互的面向对象类库。通常情况下, 数据源是数据库,但它同样也能够是文本文件、Excel 表格或者XML 文件。 ADO.NET 允许和不同类型的数据源以及数据库进行交互。然而并没有与此相关的一系列类来完成这样的工作。因为不同的数据源采用不同的协议,所以对于不同的数据源必须采用相应的协议[9]。一些老式的数据源使用ODBC 协议,许多新的数据源使用OleDb 协议,并且现在还不断出现更多的数据源,这些数据源都可以通过.NET 的ADO.NET 类库来进行连接。

DataSet 对象是 ADO.NET 的断开式结构的核心组件,实现独立于任何数据源的数据访问。Connection 对象提供与数据源的连接, 是操作数据库的基础,表示应用程序和数据源之间的惟一会话[10]。Command 对象能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令,实现对数据源的操作,如查询、插入、修改和删除等。DataReader 对象从数据源中读取只进且只读的数据流。DataAdapter 对象是DataSet 对象和数据源之间关联的桥

梁,用数据源填充DataSet 并解析更新。ADO.NET 是与数据源交互的.NET 技术

[11]。有许多的Data Providers ,它将允许与不同的数据源交流――取决于它们所使用的协议或者数据库。然而无论使用什么样的Data Provider,你将使用相似的对象与数据源进行交互。由于本系统是连接到微软公司的SQL Server 数据库,因此在编程过程中使用了SqlConnection 对象管理与数据源的连接。SqlCommand 对象允许你与数据源交流并发送命令给它。为了对进行快速的只“向前”地读取数据,使用SqlDataReader 。如果想使用断开数据,使用DataSet 并实现能进行读取或者写入数据源的SqlDataAdapter [12]。

ADO.NET 数据库访问技术:ADO.NET 包含了所有与访问数据库相关的.NET 类。在业务层中,用到了大量的 ADO.NET 功能,包括数据库访问、执行存储过程和获得返回数据等。

2.4 ASP.NET 2.0 AJAX技术

在2005年6月28日,Microsoft 宣布了ASP.NET 2.0AJAX ,它是一个运行在.NET2.0基础上的面向AJAX 的.NET 库。虽然ASP.NET 2.0AJAX 是一个AJAX 库,并且可以用于执行AJAX 操作,但它实际的功能远不止此。ASP.NET 2.0AJAX提供了很多和服务器端的ASP.NET 集成的,因此它提供了丰富的与ASP.NET 锁提供的服务集成的能力[13]。下面列出的是ASP.NET 2.0AJAX所提供的功能(还有很多):

● 在客户端和服务器端之间的AJAX 风格的通信,这种通信时建立在Web

服务基础上的。

● 异步通信。所有在ASP.NET 2.0 AJAX框架中的客户端到服务器的通信都

是异步的。

● 提供了一套可以丰富客户端功能的服务器控件。

● 提供了一套进一步增强了客户端功能的客户端控件和类。

● 通过命名空间和类的创建提供了对客户端逻辑的封装框架。

● 跨浏览器支持。虽然没有一个正式的ASP.NET 2.0AJAX 所支持的Web

浏览器列表,但是肯定可以支持最新版本的Internet Explorer、Firefox 和

Safari [14]。

2.5 本章小结

本章详细介绍了ASP.NET 以及相关技术,详细介绍了B/S结构和C/S之间的区别及联系,介绍了数据库技术,说明了用SQL Server2005中的ADO.NET 技术访问数据库的工作原理,最后简单介绍了ASP.NET 2.0AJAX技术。

3 系统需求分析和总体设计

3.1 系统需求分析

第一部分:调查用户需求

本系统的最终用户为系统管理员、寝室管理员和本寝室楼的学生。根据我们日常生活中的经验,结合对自己学校系统管理员、寝室楼管理老师的咨询和对同寝室楼同学的调查,得出用户的下列实际要求:

一、寝室楼的基本情况

学生住在寝室楼中,每栋寝室楼都会有若干名寝室管理员负责本寝室楼的日常管理。

1、学生的基本信息:

入校时,每位同学都有唯一的学号,并被分配到指定的寝室楼和指定的寝室,也会有一个寝室号,其入校时间就是他的入住时间。另外,为了管理上的方便,同一院系的学生的寝室一般在一起,相应地会有其所在的院系名称。

2、寝室的基本信息:

(1)寝室财产的基本信息:

每个寝室的财产属于学校,比如电灯,床铺,柜子,桌椅等,为了对不同的财产进行区分,可以为每种财产分配不同的财产号。这样有利于财产的报修和管理。

(2)水电费的基本信息:

每个寝室每个月都会有不同程度的超水超电情况,每个月月底,寝室管理员会在系统中输入每个寝室的水电费,这样,同学们可以在系统中查询自己寝室的水电费。

(3)报修的基本信息:

寝室楼中经常出现财产的损坏,比如灯泡坏了,厕所的马桶出故障了等,这时,同学们需要将财产损坏情况报告给寝室楼管理员,以便学校派人进行维修。这时,需要记录报修的寝室号和损坏的财产编号,同时记录报修的时间和损坏的原因。当损坏的财产维修完毕后,应记录解决时间,表示该报修成功解决。

(4)离校的基本信息:

每当放寒假或暑假时,同学们大部分都会回家;每当“五·一”或“十·一”放假时,同学们也有很多不会留在寝室。这时,为加强学校对同学假期安全的管理,离校的同学应登记离校时间,待返校后记录返校时间,以便学校查证和管理。

(5)寝室楼的变动信息:

每当学校建新的寝室楼的时候,需要把新寝室楼的相关信息添加到数据库中。或者是区域、楼栋换名字的时候,也要相应的更新信息。

二、用户对系统的要求

1、系统管理员

(1)信息要求

系统管理员能添加寝室管理员,查询所有寝室管理员的相关信息,并且可以查询所有院系学生所住寝室的相关信息。

(2)处理要求

当新做了寝室楼的时候,可以添加相应的信息到数据库;当院系的名称发生改变时,也可以相应的做出调整。

2、寝室管理员

(1)信息要求

寝室管理员能查询上面提到的寝室楼的所有相关信息,包括某一学号的学生在寝室楼中住宿的详细信息,快件收发的所有信息,报修的所有信息,夜归的详细信息和学生离返校的信息。以利于对整个寝室楼的全面管理。

(2)处理要求

当学生基本信息发生变化时,寝室管理员能对其进行修改。比如,某些同学搬到其他的寝室中去,他们在本寝室楼中相应的记录就应该删去;或者学生转换专业,他们记录中院系的信息也要作相应的修改等等。当寝室楼的电话号码发生变更时,寝室管理员能根据有关证明做出修改。当寝室财产报修及时解决后,管理员应登记解决时间,表明该报修问题已成功解决。

3、本寝室楼的学生

(1)信息要求

本寝室楼的学生能查询其所在的寝室的所有信息,能查询本楼的指定寝室的

学生基本信息,能查询自己所在班级所有学生的寝室信息,能查询自己的快件信息。能查询自己的夜归记录和离返校记录。

(2)处理要求

本寝室楼的学生能在报修信息表中插入报修信息,表示本寝室的财产发生了损毁需要学校派人维修。学生离校时,能在离返校记录表中插入离校时间;学生返校后,能在离返校记录表中插入返校时间,表示已经回校。

第二部分:系统功能的设计和划分

根据如上得到的用户需求,我们将本系统按照所完成的功能分成以下几模块:

第一模块:学生管理部分

1、处理学生登录

2、学生可以查询寝室水电费信息

3、学生可以查询每个寝室、每个班级学生的基本信息

4、学生可以查询文明寝室信息及寝室评分

5、学生(寝室长) 可以提交报修信息

6、学生可以查看留言板并在留言板上提出自己的意见

7、学生可以查看寝室规章制度

8、学生可以修改自己的密码

第二模块:寝室管理员管理部分

1、处理寝室管理员登录

2、寝室管理员可以查询、添加、删除和修改学生信息

3、寝室管理员可以添加寝室的水电费

4、寝室管理员可以插入、删除查询报修信息

5、寝室管理员可以查询寝室、班级学生的基本信息

6、寝室管理员可以在留言板上回复学生的意见

7、寝室管理员可以修改自己的密码

第三模块:系统管理员管理部分

1、处理系统管理员登录

2、系统管理员可以查询、添加、修改、删除寝室区域

3、系统管理员可以查询、添加、修改、删除寝室楼栋

4、系统管理员可以查询、添加、修改、删除寝室院系

5、系统管理员可以查询、添加、修改、删除寝室班级

6、系统管理员可以查询、添加、修改、删除寝室寝室管理员

7、系统管理员可以修改自己的密码

3.2 系统层次结构图

基于B/S架构的学生寝室管理系统作为面向Internet 上的Web 应用,学生模块实现各类信息的查询功能。寝室管理员及系统管理员模块则实现各类信息的添加、修改、删除等功能。本系统采用B2C 型ASP.NET 技术三层架构,系统层次结构图如图1所示:

图1 系统层次结构图

(1)表示层:负责与用户交互,接受用户的输入并将服务器端传来的数据呈现给客户。

(2)业务层:负责接受浏览器传来的请求并将请求传给数据层,同时将请求处理结果发给浏览器。它由Web 表单、XML Web 服务和组件服务组成。其中Web 表单时ASP.NET 应用程序的核心所在,它是向客户呈现数据和信息的基础,也是响应和处理客户与显示的Web 表单交互生成的信息和数据的基础。

(3)数据层:通过ADO.NET 操纵数据为事务逻辑层提供数据服务,如存储数据操作结果、返回数据检索结果等。

3.3 系统功能模块

在学生模块中,主要包括寝室查询、班级查询、水电费查询、文明寝室、个人资料、损坏登记、留言板、修改密码、管理制度等等。学生功能模块图如图2所示:

图2 学生功能模块图

每个模块的功能如下:

(1)寝室查询:学生可以查询每个寝室的寝室成员的基本信息。

(2)班级查询:学生可以查询每个班级学生的基本信息以及所住寝室的基本信息。

(3)水电费查询:每个月末,管理员会将每个寝室所欠的水电费输入数据库中,学生就可以相应的查询自己寝室的水电费。

(4)文明寝室:学生可以查询到学校所有文明寝室的具体寝室信息及寝室分数。

(5)个人资料:学生可以查看自己的基本资料,包括院系、班级、入学时间等。

(6)损坏登记:只有寝室长才可以进去次页面,寝室长把寝室的损坏情况提交后,寝室管理员会相应的做出处理。

(7)留言板:学生可以在留言板上提出自己对寝室和寝室管理员的意见,也可以结交新朋友。

(8)修改密码:学生看可以在此页面修改自己的登录密码。

(9)管理制度:次页面显示了该寝室学生应该遵循的寝室规章制度。

(10)系统注销:学生重新进去登录页面。

寝室管理员模块主要包括寝室管理、学生管理、查询功能、留言板管理、修改密码以及系统注销等。寝室管理员功能模块图如图3所示:

图3 寝室管理员功能模块图

(1)水电费管理:每个月末,管理员会将每个寝室所欠的水电费输入数据库中,这样学生就可以查询自己寝室的水电费了。

(2)添加寝室评分:管理员把每个寝室每个学期的总评分输入数据库,为评选文明寝室做准备。

(3)文明寝室管理:寝室管理员可以查看评选的文明寝室的基本信息。

(4)寝室损坏管理:寝室管理员可以把已经维修的损坏登记删除。

(5)添加学生信息:寝室管理员需要把新注册入学学生的基本信息输入数据库中,并安排寝室。

(6)学生信息管理:当学生换寝室或换院系换专业的时候,寝室管理员需要及时将学生的信息进行修改;当该学生毕业时,需要将此学生的信息删除。

(7)学生查询:管理员可以查询任一学生的基本信息。

(8)留言板管理:寝室管理员可以查看学生在留言板上留下的信息,同时也可以回复和删除这些信息。

(9)修改密码:寝室管理员可以在此页面修改自己的登录密码。

(10)系统注销:寝室管理员重新进入登录页面。

系统管理员模块主要包括信息添加、信息管理、修改密码、系统注销等。系统管理员功能模块图如图4所示:

图4 系统管理员功能模块图

(1)添加区域:当学校增加了寝室区域的时候,系统管理员需要把新的寝室区域添加到数据库中。

(2)添加楼栋:当学校增加了寝室楼栋的时候,系统管理员需要把新的寝室楼栋添加到数据库中。

(3)添加院系:当学校增加了寝室区域的时候,系统管理员需要把新的寝室区域添加到数据库中。

(4)添加班级:当学校增加了寝室区域的时候,系统管理员需要把新的寝室区域添加到数据库中。

(5)添加寝室管理员:当增加了新的寝室管理员的时候,系统管理员需要把新的寝室管理员添加到数据库中。

(6)删除/修改区域:当寝室区域中的楼栋被修改名称或取消时,系统管理员系统管理员需要在数据库中作出相应的变动。

(7)删除/修改楼栋:当学校的寝室楼栋被修改名称或取消时,系统管理员需要在数据库中作出相应的变动。

(8)删除/修改院系:当学校的院系被修改名称或取消时,系统管理员需要在数据库中作出相应的变动。

(9)删除/修改班级:当院系中的班级被修改名称或取消时,系统管理员需要在数据库中作出相应的变动。

(10)删除/修改寝室管理员:当寝室管理员离开或需要换名称或密码时,系统管理员需要在数据库中作出相应的变动。

(11)修改密码:系统管理员可以在此页面修改自己的密码。

(12)系统注销:系统管理员重新进入登录页面。

3.4 本章小结

本章介绍了系统的需求分析以及系统总体设计实现的内容。详细分析了系统的功能模块,以及系统层次架构图。

4 详细设计及系统实现

4.1 数据库设计 4.1.1 数据库需求分析

在学生寝室管理系统中,数据库应当解决如下需求:

● 保存学生的基本信息,如学号、姓名、性别、班级号及寝室代号等。 ● 保存寝室管理员基本信息。 ● 保存系统管理员基本信息。 ● 保存区域、楼栋、寝室基本信息。 ● 保存院系、班级信息。

● 保存留言板信息,包括留言人姓名、留言内容、留言时间以及回复信息等。 ● 保存寝室损坏登记信息,包括登记寝室、损坏内容及登记时间。 4.1.2 数据库逻辑结构设计

数据库的需求分析设计完毕后,可以将上面的数据库需求转化为某种数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。本系统涉及到11张表,分别为学生信息表(student )、寝室管理员信息表(homeAdmin )、系统管理员基本信息表(sysAdmin )、寝室区域表(eare )、寝室楼栋表(flood )、寝室表(home )、院系表(dept )、班级表(class )、水电费表(Fee )、留言信息表(message )以及损坏登记表(badHome )。

部分表设计如下:

表4-1:学生基本信息表(student )

列名 studNo studName Sex studPwd

数据类型 varchar(10) varchar(15) varchar(2) varchar(15)

是否允许为空

否 是 是 是

备注 主键,学生学号 学生密码 学生性别 学生登录密码

birthday classID homeID enterDate shenfen

varchar(15) varchar(10) bigint varchar(15) varchar(10)

是 是 是 是 是

学生出生年月 学生班级号 学生寝室号 学生入学日期 学生寝室身份

表4-2:寝室管理员表(homeAdmin )

列名 ID

数据类型 int

是否允许为空

备注 主键,寝室管理员ID ,自动增长 寝室管理员用户

寝室管理员密码

homeAdminName homeAdminPwd

varchar(10) varchar(15)

是 是

表4-3:损坏登记表(badHome )

列名 badID homeID content dateTime

数据类型 bigint bigint varchar(200) datetime

是否允许为空

否 是 是 是

备注 主键,损坏登记号,自动增长 损坏登记寝室号 损坏内容 登记时间

表4-4:水电费表(Fee )

列名 feeID

数据类型 bigint

是否允许为空

备注 主键,水电费号,

自动增长 水电费相应寝室

号 水电费的月份

水费 电费

homeID nonth waterFee elecFee

bigint varchar(10) varchar(10) varchar(10)

是 是 是 是

表4-5:留言信息表(message )

列名 messageID studName studFace content1 postTime adminName content2 replyTime

数据类型 bigint varchar(10) varchar(8) varchar(200) datetime varchar(10) varchar(200) datetime

是否允许为空

否 是 是 是 是 是 是 是

备注 主键,留言编号,

自动增长 留言学生姓名 留言学生图像 留言内容 留言时间 回复管理员姓名 回复内容 回复时间

4.1.3 数据库结构分析设计

得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的数据表,以及它们之间的关系。分析此系统的需求,可以得到数据库关系图,如图5所示:

图5 数据库关系图

4.2 数据访问及用户界面的设计实现 4.2.1数据访问

本系统将数据库访问层封装在类库APP_Code中实现。建立sqldata.Cs 文件,声明一个类sqldata ,创建数据库连接方法createcon 。代码如下: public class sqldata {

public sqldata() { }

public static SqlConnection createCon() {

SqlConnection conn = new

SqlConnection(ConfigurationManager.AppSettings["myConfig"]); return conn; } }

建立web.config 文件,如下配置:

Source=.\SQLSERVER2005;uid=sa;password='123456';Initial Catalog=studHome"/>

建立global.asax 文件,添加如下代码:

void Application_Start(object sender, EventArgs e) {

// 在应用程序启动时运行的代码 Application["online"] = 0; }

void Session_Start(object sender, EventArgs e) {

// 在新会话启动时运行的代码 Session.Timeout = 15; Application.Lock();

Application["online"] = (int)Application["online"] + 1; Application.UnLock(); }

void Session_End(object sender, EventArgs e) {

// 在会话结束时运行的代码。 Application.Lock();

Application["online"] = (int)Application["online"] - 1; Application.UnLock(); }

4.2.2 用户界面的设计实现

界面层有ASP.NET Web窗体实现,包括登录页面login.aspx 以及各个模块的页面:

(1) 用户登录页面,效果如图6所示:

图6 用户登录页面效果图

后台代码如下:

public partial class login : System.Web.UI.Page {

SqlConnection conn; SqlCommand cmd; SqlDataReader dr;

protected void Page_Load(object sender, EventArgs e) { }

protected void btn_OK_Click(object sender, EventArgs e) { try {

string Pwd = this.userPwd.Text; conn = sqldata.createCon(); conn.Open();

if (this.DropDownList1.SelectedValue == "学生") {

string studNo = Convert.ToString(this.userName.Text);

string commandText = "select * from student where studNo=@studNo and studPwd=@studPwd";

cmd = new SqlCommand(commandText, conn); SqlParameter SqlDbType.VarChar, 10); SqlParameter SqlDbType.VarChar, 20);

id1.Value = studNo; id2.Value = Pwd; cmd.Parameters.Add(id1); cmd.Parameters.Add(id2);

id1 = new SqlParameter("@studNo",

id2 = new SqlParameter("@studPwd",

dr = cmd.ExecuteReader(); if (dr.Read()) {

Session["studNo"] = dr["studNo"].ToString(); Session["Sex"] = dr["Sex"].ToString(); Session["studPwd"] = dr["studPwd"].ToString(); Session["studName"] = dr["studName"].ToString(); Session["shenfen"] = dr["shenfen"].ToString(); Session["homeID"] = dr["homeID"].ToString(); Session["birthday"] = dr["birthday"].ToString(); Session["enterDate"] = dr["enterDate"].ToString(); Session["classID"] = dr["classID"].ToString();

Response.Write(""); } else

{

Response.Write(""); } }

if (this.DropDownList1.SelectedValue == "寝室管理员") {

string adminName = this.userName.Text;

string commandText = "select * from homeAdmin where homeAdminName=@adminName and homeAdminPwd= @Pwd "; cmd = new SqlCommand(commandText, conn); SqlParameter SqlDbType.VarChar, 10); SqlParameter

id1 = new SqlParameter("@adminName",

id2

= new SqlParameter("@Pwd",

SqlDbType.VarChar, 20);

id1.Value = adminName; id2.Value = Pwd; cmd.Parameters.Add(id1); cmd.Parameters.Add(id2); dr = cmd.ExecuteReader(); if (dr.Read()) {

Session["homeAdminName"] dr["homeAdminName"].ToString();

Session["homeAdminPwd"]

dr["homeAdminPwd"].ToString(); Response.Write(""); } else

{

Response.Write(""); } }

if (this.DropDownList1.SelectedValue == "系统管理员") {

string adminName = this.userName.Text;

string commandText = "select * from sysAdmin where sysAdminName=@adminName and sysAdminPwd= @Pwd "; cmd = new SqlCommand(commandText, conn); SqlParameter SqlDbType.VarChar, 10); SqlParameter SqlDbType.VarChar, 20);

=

=

id1 = new SqlParameter("@adminName",

id2 = new SqlParameter("@Pwd",

id1.Value = adminName; id2.Value = Pwd; cmd.Parameters.Add(id1); cmd.Parameters.Add(id2); dr = cmd.ExecuteReader(); if (dr.Read()) {

Session["sysAdminName"] dr["sysAdminName"].ToString();

=

Session["sysAdminPwd"] = dr["sysAdminPwd"].ToString(); Response.Write(""); } else

{

Response.Write(""); } }

conn.Close(); }

catch (SqlException) {

Response.Write(""); } } }

(2)系统管理员页面中的删除/修改班级页面,效果如图7所示:

图7 删除/修改班级页面效果图

代码省略。

(4)寝室管理员模块中的添加水电费页面,效果如图8所示:

图8 添加水电费页面效果图

后台代码如下:

public partial class homeadminFeemng : System.Web.UI.Page {

SqlConnection conn; SqlCommand cmd1,cmd2; SqlDataReader dr1;

protected void Page_Load(object sender, EventArgs e) {

if (!IsPostBack)

{

for (int i = 1; i

{

this.ddlMonth.Items.Add(i.ToString() + "月份");

}

}

}

protected void enter_Click(object sender, EventArgs e)

{

try

{

conn = sqldata.createCon();

conn.Open();

int eareID = Convert.ToInt32(this.ddlEare.SelectedValue);

int floodID = Convert.ToInt32(this.ddlFlood.SelectedValue);

string month = Convert.ToString(this.ddlMonth.SelectedValue); string homeNo = Convert.ToString(this.homeHao.Text);

string sql1 = "select homeID from (eare inner join flood on eare.eareID=flood.eareID)inner join home on flood.floodID=home.floodID and eare.eareID=@eareID and flood.floodID=@floodID and homeNo=@homeNo"; cmd1 = new SqlCommand(sql1, conn);

SqlParameter id1 = new SqlParameter("@eareID", SqlDbType.Int, 4); SqlParameter id2 = new SqlParameter("@floodID", SqlDbType.Int, 4); SqlParameter

SqlDbType.VarChar, 4);

id1.Value = eareID;

id2.Value = floodID;

id3.Value = homeNo;

cmd1.Parameters.Add(id1);

id3 = new SqlParameter("@homeNo",

cmd1.Parameters.Add(id2);

cmd1.Parameters.Add(id3);

int homeID = 0;

dr1 = cmd1.ExecuteReader();

if (dr1.Read())

{

homeID = Convert.ToInt32(dr1["homeID"].ToString());

conn.Close();

if (homeID == 0)

{

Response.Write("");

}

else{

string sql2 = "insert into Fee(homeID,month,waterFee,elecFee,numFee)values(@homeID,@month,@waterFee,@elecFee,@numFee)";

conn.Open();

cmd2 = new SqlCommand(sql2, conn);

SqlParameter id4 = new SqlParameter("@homeID", SqlDbType.Int, 4);

SqlParameter

SqlDbType.VarChar, 10);

SqlParameter id6 = new SqlParameter("@waterFee", SqlDbType.VarChar, 10);

SqlParameter id7 = new SqlParameter("@elecFee", SqlDbType.VarChar, 10);

SqlParameter id8 = new SqlParameter("@numFee", SqlDbType.VarChar, 10);

id4.Value = homeID;

id5 = new SqlParameter("@month",

id5.Value = month;

id6.Value = Convert.ToString(this.waterFee.Text);

id7.Value = Convert.ToString(this.elecFee.Text);

id8.Value

Convert.ToString(Convert.ToSingle(this.waterFee.Text)

Convert.ToSingle(this.elecFee.Text));

cmd2.Parameters.Add(id4);

cmd2.Parameters.Add(id5);

cmd2.Parameters.Add(id6);

cmd2.Parameters.Add(id7);

cmd2.Parameters.Add(id8);

if (Convert.ToInt32(cmd2.ExecuteNonQuery()) > 0)

{

ScriptManager.RegisterStartupScript(this.Page,

this.GetType(), "info", "alert('添加成功!');", true);

this.homeHao.Text = "";

this.waterFee.Text = "";

this.elecFee.Text = "";

}

else{

ScriptManager.RegisterStartupScript(this.Page,

this.GetType(), "info", "alert('添加失败!');", true);

this.homeHao.Text = "";

this.waterFee.Text = "";

this.elecFee.Text = "";

}

}

}

else{

ScriptManager.RegisterStartupScript(this.Page,

= + this.GetType(),

"info", "alert('没有该寝室,请先添加该寝室后再来处理水电费!');", true); this.homeHao.Text = "";

this.waterFee.Text = "";

this.elecFee.Text = "";

}

}

catch(SqlException) {

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "info", "alert('数据库操作失败!');", true);

}

}

protected void cancel_Click(object sender, EventArgs e)

{

this.homeHao.Text = "";

this.waterFee.Text = "";

this.elecFee.Text = "";

}

}

(5)寝室管理员模块中的学生信息管理页面,效果如图9、10所示:

图9 学生信息管理页面效果(1)

图10 学生信息管理页面效果(2)

代码省略。

(6)学生页面中的查询水电费,效果如图11所示:

图11 查询水电费页面效果图

代码省略。

(9)学生模块中的留言板页面,效果如图12所示:

图12 留言板页面效果图

代码省略。

4.3 本章小结

本章介绍了系统的数据库设计以及系统的功能实现,并展示了系统的主要页面,如登录页、水电费管理页面以及学生信息管理页面等等。

5 总结

在Web 应用程序开发领域,选择B/S作为首选的开发框架不是一件新鲜事,然而建立一个较为理想的B/S模型确实是一个富有挑战性的工作,它要求分层界限必须清晰(即数据层仅负责数据保存和管理,业务层仅负责从数据层取出数据并迭现,而表示层仅负责数据的显示工作)且易于调试和维护。笔者使用基于ASP.NET 2.0框架相关技术实现了这一模型。.NET2.0框架是一个宏大的技术集,使用起来也极富挑战性。

使用B/S架构来构建学生寝室管理系统,能实现更高水平的灵活性和可扩展性。通过将应用系统的主要部分分解到独立的、较小的组件中可以更好地重用代码;当某个层中的内容发生变化时,其他层不会受到影响。ASP.NET 技术可以充分发挥三层架构的优势,将 UI 的界面和逻辑彻底分开,快速建立起三层架构的网站。本系统将两者充分结合,达到了很好的效果。

简要讨论了利用.NET 框架中的ASP.NET 来架构信息管理系统的过程,并以学生寝室管理系统为例探讨了在开发过程中使用的关键技术。在开发过程中深刻体会到ASP.NET 在各方面均比前身ASP 有一定的优势,尤其是在连接数据库以及数据库存取安全的设计上更有了长足的进步。基于ASP.NET 技术使得信息管理系统的开发更为方便、快捷。同时在信息管理系统的开发建设过程中也感觉到还有很多其他方面的细节问题,如在保证安全的前提下提高用户的操作便利性等、需要在今后的编程时间中加以认真研究解决。

为做出该学生寝室管理系统程序,访问了大量Web 网络开发方面的网站,搜集了大量关于Web 网络开发的中英文资料,也查阅了大量书籍的源代码作为参考和运用,从中学会了许多ASP.NET 和ADO.NET 技术关于Web 开发方面的知识。

该系统的功能还有一些没完成和完成得不理想,如界面不精美,搜索功能,管理员权限的划分和自动给学生分配寝室,还有系统数据层和业务逻辑层分界不明显。一方面时间紧迫;另一方面是ASP.NET 这门技术的学习和熟练使用需要一个长期的过程。我会在以后的学习过程中,更加努力,做的更好。

参考文献

[1] 张跃廷. ASP.NET从入门到精通[M].北京: 清华大学出版社,2008-9:113-120

[2] Phil Hanna. ASP.NET技术大全. 北京: 机械工业出版社,2002.3:56-63

[3] 万峰科技. ASP.NET 网站开发四“酷”全书[M].北京:电子工业出版社,2006-2:189-192

[4]明日科技 张跃廷、丁红兵.asp.net 网络编程标准教程. 人民邮电出版社,2009:12-15

[5]周峰、王征.asp.net2.0网络程序设计案例集锦. 重庆. 中国水利水电出版社,2009:315-317

[6]天极网新技术研究室.ASP.NET 完全入门. 重庆. 重庆出版社,2001:145-146

[7] 邵晟. 浅谈B/S结构. 北京:电子工业出版社,2006-5:84-85

[8]Scott Worley 著.ASP.NET 技术内幕. 王文龙 刘湘宁译. 北京. 人民邮电出版社,2002:34-36

[9] 刘亮亮 潘中强. 精通ASP.NET 2.0 数据库绑定技术. 北京:人民邮电出版社,2008-6:62-71

[10] 陈永强. 谢维成. 李茜. SQL Server 数据库企业应用系统开发[M].北京: 清华出版社,2004: 90-92

[11]Thomas Connolly、Carolyn Begg.数据库系统设计,实现与管理[M].电子工业出版社,2004:7 124-135

[12] 陈永强. 谢维成. 李茜. SQL Server 数据库企业应用系统开发[M].北京: 清华出版社,2004:27-29

[13]Phong B T.Illumination for computer-generated Pictures.Comm.ACM,1975, 18(6):311-317.

[14]Wallace B.McClure .ASP.NET 2.0AJAX入门经典. 北京:清华大学出版社,2008-05:7-8

谢 辞

做这次的毕业设计好几个月了,这几月的来,我感触很多。本以为做一个小型的管理系统是件很容易的事,可是通过这次经历,让我充分意识到,做系统不是简单的做几个页面,它们是一个整体的,是相互衔接的。以前听别人说只有做项目才能真正的学到东西,看来这是他们的经验之谈,我这也算是学到一些东西了吧。

本设计能够顺利的完成,与我的指导老师的谆谆教导是分不开的,他对我的毕业设计提出了很多的宝贵的建议,还给我提供了大量的有用的资料。他严谨的治学态度、诲人不倦的教学作风给我留下了非常深刻的印象。此外还要感谢各位任课老师,正是他们平时的认真负责,才能使我能够很好的掌握和运用专业知识,并在此次设计中得以体现。正是有了他们的悉心帮助和支持,才使我的毕业设计工作顺利完成,在此向全体老师表示由衷的感谢,感谢他们四年来的辛勤栽培。

本科毕业论文(设计)

题 目基于ASP.NET 的学生寝室管理系统

学生姓名

专业名称

指导教师

基于ASP.NET 的学生寝室管理系统

摘要:

管理信息系统在现代社会已深入到各行各业,由于计算机技术的迅速发展和普及,信息管理系统MIS 事实上已成为计算机管理信息系统,大学生寝室管理系统就是一个典型的管理信息系统,它可以让寝室管理工作变的更轻松。本毕业设计的任务就是设计一个大学生寝室管理系统,其开发过程主要包括前端应用程序的开发和后台数据库的建立和维护两个方面。主要任务就是建立基本数据,后台程序主要负责的都是管理上的功能。

本系统运用Microsoft SQL Server2005为后台数据库,以Visual studio 2005为前端开发工具,系统实现了系统维护、寝室管理、学生管理、寝室分配、信息查询等必需的功能,其操作简单,界面友好,运行比较稳定,适用于大学院校大学生寝室管理。

关键词:学生寝室管理系统;数据库管理系统;SQL Server2005;ASP.NET ;B/S;VS2005

Students ’ Dormitory Management System Based On

ASP.NET

Abstract :

Nowadays, Management Information System is used by many calling. As a result, computer technology is developed and generalized rapidly, the Information Management System turns into Computer Management Information System in fact. The manage system of college students’ dormitory is emblematical Manager Information System, it can make the job of the management cushy. The task of this graduation design is to design a management system for college student’s dormitory. Exploitation comprizes two sides of construction and maintenance of backstage data base and proscenium application program. The main task is to set up basic data, the background function is in charge of management function.

This system used Microsoft SQL Server 2005 as the backstage database and Visual studio 2005 as the front developing instrument. The system implements necessary functions such as system maintainance, dormitory management, students management, dormitory distribution, information inquiry, etc. The operation is simply, the interface is friendly, the running state is more steady, this management system is suitable for college students’ dormitory management.

Key Words :dormitory management system ;database management system ;SQL Server2005;ASP.NET ;B/S;VS2005

目 录

1 绪论............................................................................................................................ 2

1.1 开发背景与现状.............................................................................................. 2

1.2 开发设计的意义.............................................................................................. 2

1.3 开发环境.......................................................................................................... 3

1.4 本章小结.......................................................................................................... 3

2 相关技术.................................................................................................................... 3

2.1 ASP.NET . ......................................................................................................... 3

2.2 B/S结构........................................................................................................... 5

2.3 数据库访问技术.............................................................................................. 7

2.4 ASP.NET 2.0 AJAX技术 ................................................................................. 8

2.5 本章小结.......................................................................................................... 9

3 系统需求分析和总体设计...................................................................................... 10

3.1 系统需求分析................................................................................................ 10

3.2 系统层次结构图............................................................................................ 13

3.3 系统功能模块................................................................................................ 14

3.4 本章小结........................................................................................................ 17

4 详细设计及系统实现.............................................................................................. 18

4.1 数据库设计.................................................................................................... 18

4.2 数据访问及用户界面的设计实现................................................................ 21

4.3 本章小结........................................................................................................ 33

5 总结.......................................................................................................................... 34

参考文献...................................................................................................................... 35

谢 辞...................................................................................................................... 36

1 绪论

1.1 开发背景与现状

随着时代的发展,计算机技术越来越深入各行各业,为广大的用户提供了更为周到和便捷的服务。目前各行各业广泛使用专用系统,其内容范围跨越了教育科研、文化事业、金融、商业、新闻出版、娱乐、体育等各个领域,其用户群十分庞大,因此,设计开发好一个专用系统对一个机构(或部门) 的发展十分重要。近年来,随着用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术的广泛应用,向用户提供的服务将越来越丰富,越来越人性化。

对于学校而言,学生寝室管理是必不可少的组成部分。目前仍然存在有学校停留在寝室管理部门人员手工记录数据的阶段,手工记录对于规模小的学校来说勉强可以接受;但对于学生信息量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的, 而且当查找某条记录时,由于数据量庞大,只能依靠人工去一条一条地查找,这样不但麻烦而且浪费许多时间,工作效率比较低。采用计算机来管理寝室和学生的信息,大大提高了查询的速度,节约了人力和物力资源,达到了预期的要求。今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:

首先,计算机可以代替人工进行许多繁杂的劳动;

其次,计算机可以节省许多资源;

再次,计算机可以大大的提高人们的工作效率;

最后,计算机可以使敏感文档更加安全,等等„„

1.2 开发设计的意义

为了实现提高高校寝室管理部门的工作效率;充分利用资源;减少不必要的人力,物力和财力的支出;方便寝室管理部门的工作人员全面地掌握学生住宿情况等目的;为寝室管理部门,开发设计专用系统—高校学生寝室信息管理系统来进行管理学生寝室信息,使学生寝室信息实现标准化的管理和规范化的制度是十

分必要的。专用系统是一个信息管理系统MIS (Management Information System)(以下就称信息管理系统) ,它将实现检索迅速和查找方便;信息的录入,修改和删除功能;以及对新入校学生进行寝室安排等功能,学生可以在系统前台以学生的身份进行查看和发布寝室的信息。

1.3 开发环境

本系统利用ASP.NET 2.0技术,采用C#语言编程,使用Visual Studio 2005软件实现界面和编码,数据库采用SQL Server2005。同时,为了有利于系统的扩充,采用B/S模式来实现。

1.4 本章小结

本章主要介绍了学生寝室管理系统的开发背景、现状及其开发意义,另外还说明了本系统的开发环境。

2 相关技术

2.1 ASP.NET

ASP.NET 是微软公司最新推出的用于构建动态、交互式Web 内容的开发技

术集。ASP.NET 的语法在很大程度上与ASP 兼容,同时它还提供一种新的编程模型和结构,用于生成更安全、可伸缩和稳定的应用程序[1]。

ASP.NET 是基于通用语言的编译运行的程序,它的强大性和适应性,可以使它运行在Web 应用软件开发者的几乎全部的平台上。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASP.NET 的Web 应用中[2]。ASP.NET 同时也是language-independent 语言独立化的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的有C#(C++和Java 的结合体),VB ,Jscript 。将来,这样的多种程序语言协同工作的能力保护您现在的基于COM+开发的程序,能够完整的移植向ASP.NET [3]。 采取了ASP.NET 技术的系统在性能上有了很大的改善,主要表现在以下几方面: ● 由于ASP 页面每次打开都必须经过先编译后解释的过程,所以页面在反复打

开时速度没有任何提升,而ASP.NET 页面只需要一次编译后不需要重新编译,直到该页面被修改或Web 应用程序重新启动。这使得在多次访问时速度有了极大的提升;

● 由于ASP 没有提供任何输出数据为内容的元件,所以在使用ASP 撰写数据

库页面时只能借助ADO 的DataSet 对象逐笔读取记录,而ASP.NET 通过ADO.NET 提供的GridView 等数据库元件可以直接和数据库联系[4];

● ASP.NET 支持应用程序的实时更新,管理员不必关掉网络服务器或者甚至不

用停止应用程序的运行就可以更新应用文件。应用程序文件永远不会被加锁,因此甚至在程序运行时文件就可以被覆盖,当文件更新后,系统会温和地转换到新的版本;

● ASP.NET 采取“CodeBehind(后置代码) 技术”将 Web 页面的代码与 HTML

设计物理分离,是对其他一些将代码和 HTML 混在一起的服务器技术的重大改进。在 ASP.NET 中,服务器端代码可以采用不同的.NET 语言来编写,这些语言是纯面向对象的;服务端代码是完全已编译和可执行的,并且采用逐行解释的方式,性能更佳;同时后置代码可以将页面的可视化部分和服务器端的业务逻辑分离开[5]。

2.2 B/S结构

B/S(Browser/Server)结构即浏览器和服务器结构。它是随着Internet 技术的兴起,对C/S结构的一种变化或者改进的结构。

在这种结构下,用户工作界面是通过WWW 浏览器来实现,极少部分事务逻辑在前端(Browser )实现,但是主要事务逻辑在服务器端(Server )实现,形成所谓三层3-tier 结构[6]。相对于C/S结构属于“胖”客户端,需要在使用者电脑上安装相应的操作软件来说,B/S结构是属于一种“瘦”客户端,大多数或主要的业务逻辑都存在在服务器端,因此,B/S结构的系统不需要安装客户端软件,它运行在客户端的浏览器之上,系统升级或维护时只需更新服务器端软件即可,这样就大大简化了客户端电脑载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本(TCO )。B/S结构系统的产生为系统面对无限未知用户提供了可能。当然,与C/S结构相比,B/S结构也存在着系统运行速度较慢,访问系统的用户不可控的弱点。

以目前的技术看,局域网建立B/S结构的网络应用,并通过Internet/Intranet模式下数据库应用,相对易于把握、成本也是较低的。它是一次性到位的开发,能实现不同的人员,从不同的地点,以不同的接入方式(比如LAN,WAN,Internet/Intranet等)访问和操作共同的数据库;它能有效地保护数据平台和管理访问权限,服务器数据库也很安全。特别是在JAVA 这样的跨平台语言出现之后,B/S架构管理软件更是方便、快捷、高效[7]。

B/S结构的优点:

1、具有分布性特点,可以随时随地进行查询、浏览等业务处理。

2、业务扩展简单方便,通过增加网页即可增加服务器功能。

3、维护简单方便,只需要改变网页,即可实现所有用户的同步更新。

4、开发简单,共享性强

B/S 模式的缺点:

1、个性化特点明显降低,无法实现具有个性化的功能要求。

2、操作是以鼠标为最基本的操作方式,无法满足快速操作的要求。

3、页面动态刷新,响应速度明显降低。

4、功能弱化,难以实现传统模式下的特殊功能要求。

二、C/S 模式的优点和缺点

C/S 模式的优点:

1、由于客户端实现与服务器的直接相连,没有中间环节,因此响应速度快。

2、操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。

3、C/S结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程。

C/S 模式的缺点:

1、需要专门的客户端安装程序,分布功能弱,针对点多面广且不具备网络条件的用户群体,不能够实现快速部署安装和配置。

2、兼容性差,对于不同的开发工具,具有较大的局限性。若采用不同工具,需要重新改写程序。

3、开发成本较高,需要具有一定专业水准的技术人员才能完成。

三、B/S架构软件的优势与劣势

(1)维护和升级方式简单

目前,软件系统的改进和升级越来越频繁,C/S系统的各部分模块中有一部分改变,就要关联到其它模块的变动,使系统升级成本比较大。B/S与C/S处理模式相比,则大大简化了客户端,只要客户端机器能上网就可以。对于B/S而言,开发、维护等几乎所有工作也都集中在服务器端,当企业对网络应用进行升级时,只需更新服务器端的软件就可以,这减轻了异地用户系统维护与升级的成本。如果客户端的软件系统升级比较频繁,那么B/S架构的产品优势明显——所有的 升级操作只需要针对服务器进行,这对那些点多面广的应用是很有价值的,例如一些招聘网站就需要采用B/S模式,客户端分散,且应用简单,只需要进行简单的浏览和少量信息的录入。

(2)系统的性能 在系统的性能方面,B/S占有优势的是其异地浏览和信息采集的灵活性。任何时间、任何地点、任何系统,只要可以使用浏览器上网,就可以使用B/S系统的终端。不过,采用B/S结构,客户端只能完成浏览、查询、数据输入等简单功能,绝大部分工作由服务器承担,这使得服务器的负担很重。采用C/S结构时,客户端和服务器端都能够处理任务,这虽然对客户机的要求较高,但因此可以减轻服务器的压力。而且,由于客户端使用浏览器,使得网上发

布的信息必须是以HTML 格式为主,其它格式文件多半是以附件的形式存放。而HTML 格式文件(也就是Web 页面)不便于编辑修改,给文件管理带来了许多不便[4]。比如说很多人每天上“新浪”网,只要安装了浏览器就可以了,并不需要了解“新浪”的服务器用的是什么操作系统,而事实上大部分网站确实没有使用windows 操作系统,但用户的电脑本身安装的大部分是windows 操作系统。

(3)系统的开发

C/S结构是建立在中间件产品基础之上的,要求应用开发者自己去处理事务管理、消息队列、数据的复制和同步、通信安全等系统级的问题。这对应用开发者提出了较高的要求,而且迫使应用开发者投入很多精力来解决应用程序以外的问题。这使得应用程序的维护、移植和互操作变得复杂[8]。如果客户端是在不同的操作系统上,C/S结构的软件需要开发不同版本的客户端软件。但是,与B/S结构相比,C/S技术发展历史更为“悠久”。从技术成熟度及软件设计、开发人员的掌握水平来看,C/S技术应是更成熟、更可靠的。

2.3 数据库访问技术

本系统采用ADO.NET 数据库访问技术来对数据库进行查询修改等操作。ADO.NET 是一组用于和数据源进行交互的面向对象类库。通常情况下, 数据源是数据库,但它同样也能够是文本文件、Excel 表格或者XML 文件。 ADO.NET 允许和不同类型的数据源以及数据库进行交互。然而并没有与此相关的一系列类来完成这样的工作。因为不同的数据源采用不同的协议,所以对于不同的数据源必须采用相应的协议[9]。一些老式的数据源使用ODBC 协议,许多新的数据源使用OleDb 协议,并且现在还不断出现更多的数据源,这些数据源都可以通过.NET 的ADO.NET 类库来进行连接。

DataSet 对象是 ADO.NET 的断开式结构的核心组件,实现独立于任何数据源的数据访问。Connection 对象提供与数据源的连接, 是操作数据库的基础,表示应用程序和数据源之间的惟一会话[10]。Command 对象能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令,实现对数据源的操作,如查询、插入、修改和删除等。DataReader 对象从数据源中读取只进且只读的数据流。DataAdapter 对象是DataSet 对象和数据源之间关联的桥

梁,用数据源填充DataSet 并解析更新。ADO.NET 是与数据源交互的.NET 技术

[11]。有许多的Data Providers ,它将允许与不同的数据源交流――取决于它们所使用的协议或者数据库。然而无论使用什么样的Data Provider,你将使用相似的对象与数据源进行交互。由于本系统是连接到微软公司的SQL Server 数据库,因此在编程过程中使用了SqlConnection 对象管理与数据源的连接。SqlCommand 对象允许你与数据源交流并发送命令给它。为了对进行快速的只“向前”地读取数据,使用SqlDataReader 。如果想使用断开数据,使用DataSet 并实现能进行读取或者写入数据源的SqlDataAdapter [12]。

ADO.NET 数据库访问技术:ADO.NET 包含了所有与访问数据库相关的.NET 类。在业务层中,用到了大量的 ADO.NET 功能,包括数据库访问、执行存储过程和获得返回数据等。

2.4 ASP.NET 2.0 AJAX技术

在2005年6月28日,Microsoft 宣布了ASP.NET 2.0AJAX ,它是一个运行在.NET2.0基础上的面向AJAX 的.NET 库。虽然ASP.NET 2.0AJAX 是一个AJAX 库,并且可以用于执行AJAX 操作,但它实际的功能远不止此。ASP.NET 2.0AJAX提供了很多和服务器端的ASP.NET 集成的,因此它提供了丰富的与ASP.NET 锁提供的服务集成的能力[13]。下面列出的是ASP.NET 2.0AJAX所提供的功能(还有很多):

● 在客户端和服务器端之间的AJAX 风格的通信,这种通信时建立在Web

服务基础上的。

● 异步通信。所有在ASP.NET 2.0 AJAX框架中的客户端到服务器的通信都

是异步的。

● 提供了一套可以丰富客户端功能的服务器控件。

● 提供了一套进一步增强了客户端功能的客户端控件和类。

● 通过命名空间和类的创建提供了对客户端逻辑的封装框架。

● 跨浏览器支持。虽然没有一个正式的ASP.NET 2.0AJAX 所支持的Web

浏览器列表,但是肯定可以支持最新版本的Internet Explorer、Firefox 和

Safari [14]。

2.5 本章小结

本章详细介绍了ASP.NET 以及相关技术,详细介绍了B/S结构和C/S之间的区别及联系,介绍了数据库技术,说明了用SQL Server2005中的ADO.NET 技术访问数据库的工作原理,最后简单介绍了ASP.NET 2.0AJAX技术。

3 系统需求分析和总体设计

3.1 系统需求分析

第一部分:调查用户需求

本系统的最终用户为系统管理员、寝室管理员和本寝室楼的学生。根据我们日常生活中的经验,结合对自己学校系统管理员、寝室楼管理老师的咨询和对同寝室楼同学的调查,得出用户的下列实际要求:

一、寝室楼的基本情况

学生住在寝室楼中,每栋寝室楼都会有若干名寝室管理员负责本寝室楼的日常管理。

1、学生的基本信息:

入校时,每位同学都有唯一的学号,并被分配到指定的寝室楼和指定的寝室,也会有一个寝室号,其入校时间就是他的入住时间。另外,为了管理上的方便,同一院系的学生的寝室一般在一起,相应地会有其所在的院系名称。

2、寝室的基本信息:

(1)寝室财产的基本信息:

每个寝室的财产属于学校,比如电灯,床铺,柜子,桌椅等,为了对不同的财产进行区分,可以为每种财产分配不同的财产号。这样有利于财产的报修和管理。

(2)水电费的基本信息:

每个寝室每个月都会有不同程度的超水超电情况,每个月月底,寝室管理员会在系统中输入每个寝室的水电费,这样,同学们可以在系统中查询自己寝室的水电费。

(3)报修的基本信息:

寝室楼中经常出现财产的损坏,比如灯泡坏了,厕所的马桶出故障了等,这时,同学们需要将财产损坏情况报告给寝室楼管理员,以便学校派人进行维修。这时,需要记录报修的寝室号和损坏的财产编号,同时记录报修的时间和损坏的原因。当损坏的财产维修完毕后,应记录解决时间,表示该报修成功解决。

(4)离校的基本信息:

每当放寒假或暑假时,同学们大部分都会回家;每当“五·一”或“十·一”放假时,同学们也有很多不会留在寝室。这时,为加强学校对同学假期安全的管理,离校的同学应登记离校时间,待返校后记录返校时间,以便学校查证和管理。

(5)寝室楼的变动信息:

每当学校建新的寝室楼的时候,需要把新寝室楼的相关信息添加到数据库中。或者是区域、楼栋换名字的时候,也要相应的更新信息。

二、用户对系统的要求

1、系统管理员

(1)信息要求

系统管理员能添加寝室管理员,查询所有寝室管理员的相关信息,并且可以查询所有院系学生所住寝室的相关信息。

(2)处理要求

当新做了寝室楼的时候,可以添加相应的信息到数据库;当院系的名称发生改变时,也可以相应的做出调整。

2、寝室管理员

(1)信息要求

寝室管理员能查询上面提到的寝室楼的所有相关信息,包括某一学号的学生在寝室楼中住宿的详细信息,快件收发的所有信息,报修的所有信息,夜归的详细信息和学生离返校的信息。以利于对整个寝室楼的全面管理。

(2)处理要求

当学生基本信息发生变化时,寝室管理员能对其进行修改。比如,某些同学搬到其他的寝室中去,他们在本寝室楼中相应的记录就应该删去;或者学生转换专业,他们记录中院系的信息也要作相应的修改等等。当寝室楼的电话号码发生变更时,寝室管理员能根据有关证明做出修改。当寝室财产报修及时解决后,管理员应登记解决时间,表明该报修问题已成功解决。

3、本寝室楼的学生

(1)信息要求

本寝室楼的学生能查询其所在的寝室的所有信息,能查询本楼的指定寝室的

学生基本信息,能查询自己所在班级所有学生的寝室信息,能查询自己的快件信息。能查询自己的夜归记录和离返校记录。

(2)处理要求

本寝室楼的学生能在报修信息表中插入报修信息,表示本寝室的财产发生了损毁需要学校派人维修。学生离校时,能在离返校记录表中插入离校时间;学生返校后,能在离返校记录表中插入返校时间,表示已经回校。

第二部分:系统功能的设计和划分

根据如上得到的用户需求,我们将本系统按照所完成的功能分成以下几模块:

第一模块:学生管理部分

1、处理学生登录

2、学生可以查询寝室水电费信息

3、学生可以查询每个寝室、每个班级学生的基本信息

4、学生可以查询文明寝室信息及寝室评分

5、学生(寝室长) 可以提交报修信息

6、学生可以查看留言板并在留言板上提出自己的意见

7、学生可以查看寝室规章制度

8、学生可以修改自己的密码

第二模块:寝室管理员管理部分

1、处理寝室管理员登录

2、寝室管理员可以查询、添加、删除和修改学生信息

3、寝室管理员可以添加寝室的水电费

4、寝室管理员可以插入、删除查询报修信息

5、寝室管理员可以查询寝室、班级学生的基本信息

6、寝室管理员可以在留言板上回复学生的意见

7、寝室管理员可以修改自己的密码

第三模块:系统管理员管理部分

1、处理系统管理员登录

2、系统管理员可以查询、添加、修改、删除寝室区域

3、系统管理员可以查询、添加、修改、删除寝室楼栋

4、系统管理员可以查询、添加、修改、删除寝室院系

5、系统管理员可以查询、添加、修改、删除寝室班级

6、系统管理员可以查询、添加、修改、删除寝室寝室管理员

7、系统管理员可以修改自己的密码

3.2 系统层次结构图

基于B/S架构的学生寝室管理系统作为面向Internet 上的Web 应用,学生模块实现各类信息的查询功能。寝室管理员及系统管理员模块则实现各类信息的添加、修改、删除等功能。本系统采用B2C 型ASP.NET 技术三层架构,系统层次结构图如图1所示:

图1 系统层次结构图

(1)表示层:负责与用户交互,接受用户的输入并将服务器端传来的数据呈现给客户。

(2)业务层:负责接受浏览器传来的请求并将请求传给数据层,同时将请求处理结果发给浏览器。它由Web 表单、XML Web 服务和组件服务组成。其中Web 表单时ASP.NET 应用程序的核心所在,它是向客户呈现数据和信息的基础,也是响应和处理客户与显示的Web 表单交互生成的信息和数据的基础。

(3)数据层:通过ADO.NET 操纵数据为事务逻辑层提供数据服务,如存储数据操作结果、返回数据检索结果等。

3.3 系统功能模块

在学生模块中,主要包括寝室查询、班级查询、水电费查询、文明寝室、个人资料、损坏登记、留言板、修改密码、管理制度等等。学生功能模块图如图2所示:

图2 学生功能模块图

每个模块的功能如下:

(1)寝室查询:学生可以查询每个寝室的寝室成员的基本信息。

(2)班级查询:学生可以查询每个班级学生的基本信息以及所住寝室的基本信息。

(3)水电费查询:每个月末,管理员会将每个寝室所欠的水电费输入数据库中,学生就可以相应的查询自己寝室的水电费。

(4)文明寝室:学生可以查询到学校所有文明寝室的具体寝室信息及寝室分数。

(5)个人资料:学生可以查看自己的基本资料,包括院系、班级、入学时间等。

(6)损坏登记:只有寝室长才可以进去次页面,寝室长把寝室的损坏情况提交后,寝室管理员会相应的做出处理。

(7)留言板:学生可以在留言板上提出自己对寝室和寝室管理员的意见,也可以结交新朋友。

(8)修改密码:学生看可以在此页面修改自己的登录密码。

(9)管理制度:次页面显示了该寝室学生应该遵循的寝室规章制度。

(10)系统注销:学生重新进去登录页面。

寝室管理员模块主要包括寝室管理、学生管理、查询功能、留言板管理、修改密码以及系统注销等。寝室管理员功能模块图如图3所示:

图3 寝室管理员功能模块图

(1)水电费管理:每个月末,管理员会将每个寝室所欠的水电费输入数据库中,这样学生就可以查询自己寝室的水电费了。

(2)添加寝室评分:管理员把每个寝室每个学期的总评分输入数据库,为评选文明寝室做准备。

(3)文明寝室管理:寝室管理员可以查看评选的文明寝室的基本信息。

(4)寝室损坏管理:寝室管理员可以把已经维修的损坏登记删除。

(5)添加学生信息:寝室管理员需要把新注册入学学生的基本信息输入数据库中,并安排寝室。

(6)学生信息管理:当学生换寝室或换院系换专业的时候,寝室管理员需要及时将学生的信息进行修改;当该学生毕业时,需要将此学生的信息删除。

(7)学生查询:管理员可以查询任一学生的基本信息。

(8)留言板管理:寝室管理员可以查看学生在留言板上留下的信息,同时也可以回复和删除这些信息。

(9)修改密码:寝室管理员可以在此页面修改自己的登录密码。

(10)系统注销:寝室管理员重新进入登录页面。

系统管理员模块主要包括信息添加、信息管理、修改密码、系统注销等。系统管理员功能模块图如图4所示:

图4 系统管理员功能模块图

(1)添加区域:当学校增加了寝室区域的时候,系统管理员需要把新的寝室区域添加到数据库中。

(2)添加楼栋:当学校增加了寝室楼栋的时候,系统管理员需要把新的寝室楼栋添加到数据库中。

(3)添加院系:当学校增加了寝室区域的时候,系统管理员需要把新的寝室区域添加到数据库中。

(4)添加班级:当学校增加了寝室区域的时候,系统管理员需要把新的寝室区域添加到数据库中。

(5)添加寝室管理员:当增加了新的寝室管理员的时候,系统管理员需要把新的寝室管理员添加到数据库中。

(6)删除/修改区域:当寝室区域中的楼栋被修改名称或取消时,系统管理员系统管理员需要在数据库中作出相应的变动。

(7)删除/修改楼栋:当学校的寝室楼栋被修改名称或取消时,系统管理员需要在数据库中作出相应的变动。

(8)删除/修改院系:当学校的院系被修改名称或取消时,系统管理员需要在数据库中作出相应的变动。

(9)删除/修改班级:当院系中的班级被修改名称或取消时,系统管理员需要在数据库中作出相应的变动。

(10)删除/修改寝室管理员:当寝室管理员离开或需要换名称或密码时,系统管理员需要在数据库中作出相应的变动。

(11)修改密码:系统管理员可以在此页面修改自己的密码。

(12)系统注销:系统管理员重新进入登录页面。

3.4 本章小结

本章介绍了系统的需求分析以及系统总体设计实现的内容。详细分析了系统的功能模块,以及系统层次架构图。

4 详细设计及系统实现

4.1 数据库设计 4.1.1 数据库需求分析

在学生寝室管理系统中,数据库应当解决如下需求:

● 保存学生的基本信息,如学号、姓名、性别、班级号及寝室代号等。 ● 保存寝室管理员基本信息。 ● 保存系统管理员基本信息。 ● 保存区域、楼栋、寝室基本信息。 ● 保存院系、班级信息。

● 保存留言板信息,包括留言人姓名、留言内容、留言时间以及回复信息等。 ● 保存寝室损坏登记信息,包括登记寝室、损坏内容及登记时间。 4.1.2 数据库逻辑结构设计

数据库的需求分析设计完毕后,可以将上面的数据库需求转化为某种数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。本系统涉及到11张表,分别为学生信息表(student )、寝室管理员信息表(homeAdmin )、系统管理员基本信息表(sysAdmin )、寝室区域表(eare )、寝室楼栋表(flood )、寝室表(home )、院系表(dept )、班级表(class )、水电费表(Fee )、留言信息表(message )以及损坏登记表(badHome )。

部分表设计如下:

表4-1:学生基本信息表(student )

列名 studNo studName Sex studPwd

数据类型 varchar(10) varchar(15) varchar(2) varchar(15)

是否允许为空

否 是 是 是

备注 主键,学生学号 学生密码 学生性别 学生登录密码

birthday classID homeID enterDate shenfen

varchar(15) varchar(10) bigint varchar(15) varchar(10)

是 是 是 是 是

学生出生年月 学生班级号 学生寝室号 学生入学日期 学生寝室身份

表4-2:寝室管理员表(homeAdmin )

列名 ID

数据类型 int

是否允许为空

备注 主键,寝室管理员ID ,自动增长 寝室管理员用户

寝室管理员密码

homeAdminName homeAdminPwd

varchar(10) varchar(15)

是 是

表4-3:损坏登记表(badHome )

列名 badID homeID content dateTime

数据类型 bigint bigint varchar(200) datetime

是否允许为空

否 是 是 是

备注 主键,损坏登记号,自动增长 损坏登记寝室号 损坏内容 登记时间

表4-4:水电费表(Fee )

列名 feeID

数据类型 bigint

是否允许为空

备注 主键,水电费号,

自动增长 水电费相应寝室

号 水电费的月份

水费 电费

homeID nonth waterFee elecFee

bigint varchar(10) varchar(10) varchar(10)

是 是 是 是

表4-5:留言信息表(message )

列名 messageID studName studFace content1 postTime adminName content2 replyTime

数据类型 bigint varchar(10) varchar(8) varchar(200) datetime varchar(10) varchar(200) datetime

是否允许为空

否 是 是 是 是 是 是 是

备注 主键,留言编号,

自动增长 留言学生姓名 留言学生图像 留言内容 留言时间 回复管理员姓名 回复内容 回复时间

4.1.3 数据库结构分析设计

得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的数据表,以及它们之间的关系。分析此系统的需求,可以得到数据库关系图,如图5所示:

图5 数据库关系图

4.2 数据访问及用户界面的设计实现 4.2.1数据访问

本系统将数据库访问层封装在类库APP_Code中实现。建立sqldata.Cs 文件,声明一个类sqldata ,创建数据库连接方法createcon 。代码如下: public class sqldata {

public sqldata() { }

public static SqlConnection createCon() {

SqlConnection conn = new

SqlConnection(ConfigurationManager.AppSettings["myConfig"]); return conn; } }

建立web.config 文件,如下配置:

Source=.\SQLSERVER2005;uid=sa;password='123456';Initial Catalog=studHome"/>

建立global.asax 文件,添加如下代码:

void Application_Start(object sender, EventArgs e) {

// 在应用程序启动时运行的代码 Application["online"] = 0; }

void Session_Start(object sender, EventArgs e) {

// 在新会话启动时运行的代码 Session.Timeout = 15; Application.Lock();

Application["online"] = (int)Application["online"] + 1; Application.UnLock(); }

void Session_End(object sender, EventArgs e) {

// 在会话结束时运行的代码。 Application.Lock();

Application["online"] = (int)Application["online"] - 1; Application.UnLock(); }

4.2.2 用户界面的设计实现

界面层有ASP.NET Web窗体实现,包括登录页面login.aspx 以及各个模块的页面:

(1) 用户登录页面,效果如图6所示:

图6 用户登录页面效果图

后台代码如下:

public partial class login : System.Web.UI.Page {

SqlConnection conn; SqlCommand cmd; SqlDataReader dr;

protected void Page_Load(object sender, EventArgs e) { }

protected void btn_OK_Click(object sender, EventArgs e) { try {

string Pwd = this.userPwd.Text; conn = sqldata.createCon(); conn.Open();

if (this.DropDownList1.SelectedValue == "学生") {

string studNo = Convert.ToString(this.userName.Text);

string commandText = "select * from student where studNo=@studNo and studPwd=@studPwd";

cmd = new SqlCommand(commandText, conn); SqlParameter SqlDbType.VarChar, 10); SqlParameter SqlDbType.VarChar, 20);

id1.Value = studNo; id2.Value = Pwd; cmd.Parameters.Add(id1); cmd.Parameters.Add(id2);

id1 = new SqlParameter("@studNo",

id2 = new SqlParameter("@studPwd",

dr = cmd.ExecuteReader(); if (dr.Read()) {

Session["studNo"] = dr["studNo"].ToString(); Session["Sex"] = dr["Sex"].ToString(); Session["studPwd"] = dr["studPwd"].ToString(); Session["studName"] = dr["studName"].ToString(); Session["shenfen"] = dr["shenfen"].ToString(); Session["homeID"] = dr["homeID"].ToString(); Session["birthday"] = dr["birthday"].ToString(); Session["enterDate"] = dr["enterDate"].ToString(); Session["classID"] = dr["classID"].ToString();

Response.Write(""); } else

{

Response.Write(""); } }

if (this.DropDownList1.SelectedValue == "寝室管理员") {

string adminName = this.userName.Text;

string commandText = "select * from homeAdmin where homeAdminName=@adminName and homeAdminPwd= @Pwd "; cmd = new SqlCommand(commandText, conn); SqlParameter SqlDbType.VarChar, 10); SqlParameter

id1 = new SqlParameter("@adminName",

id2

= new SqlParameter("@Pwd",

SqlDbType.VarChar, 20);

id1.Value = adminName; id2.Value = Pwd; cmd.Parameters.Add(id1); cmd.Parameters.Add(id2); dr = cmd.ExecuteReader(); if (dr.Read()) {

Session["homeAdminName"] dr["homeAdminName"].ToString();

Session["homeAdminPwd"]

dr["homeAdminPwd"].ToString(); Response.Write(""); } else

{

Response.Write(""); } }

if (this.DropDownList1.SelectedValue == "系统管理员") {

string adminName = this.userName.Text;

string commandText = "select * from sysAdmin where sysAdminName=@adminName and sysAdminPwd= @Pwd "; cmd = new SqlCommand(commandText, conn); SqlParameter SqlDbType.VarChar, 10); SqlParameter SqlDbType.VarChar, 20);

=

=

id1 = new SqlParameter("@adminName",

id2 = new SqlParameter("@Pwd",

id1.Value = adminName; id2.Value = Pwd; cmd.Parameters.Add(id1); cmd.Parameters.Add(id2); dr = cmd.ExecuteReader(); if (dr.Read()) {

Session["sysAdminName"] dr["sysAdminName"].ToString();

=

Session["sysAdminPwd"] = dr["sysAdminPwd"].ToString(); Response.Write(""); } else

{

Response.Write(""); } }

conn.Close(); }

catch (SqlException) {

Response.Write(""); } } }

(2)系统管理员页面中的删除/修改班级页面,效果如图7所示:

图7 删除/修改班级页面效果图

代码省略。

(4)寝室管理员模块中的添加水电费页面,效果如图8所示:

图8 添加水电费页面效果图

后台代码如下:

public partial class homeadminFeemng : System.Web.UI.Page {

SqlConnection conn; SqlCommand cmd1,cmd2; SqlDataReader dr1;

protected void Page_Load(object sender, EventArgs e) {

if (!IsPostBack)

{

for (int i = 1; i

{

this.ddlMonth.Items.Add(i.ToString() + "月份");

}

}

}

protected void enter_Click(object sender, EventArgs e)

{

try

{

conn = sqldata.createCon();

conn.Open();

int eareID = Convert.ToInt32(this.ddlEare.SelectedValue);

int floodID = Convert.ToInt32(this.ddlFlood.SelectedValue);

string month = Convert.ToString(this.ddlMonth.SelectedValue); string homeNo = Convert.ToString(this.homeHao.Text);

string sql1 = "select homeID from (eare inner join flood on eare.eareID=flood.eareID)inner join home on flood.floodID=home.floodID and eare.eareID=@eareID and flood.floodID=@floodID and homeNo=@homeNo"; cmd1 = new SqlCommand(sql1, conn);

SqlParameter id1 = new SqlParameter("@eareID", SqlDbType.Int, 4); SqlParameter id2 = new SqlParameter("@floodID", SqlDbType.Int, 4); SqlParameter

SqlDbType.VarChar, 4);

id1.Value = eareID;

id2.Value = floodID;

id3.Value = homeNo;

cmd1.Parameters.Add(id1);

id3 = new SqlParameter("@homeNo",

cmd1.Parameters.Add(id2);

cmd1.Parameters.Add(id3);

int homeID = 0;

dr1 = cmd1.ExecuteReader();

if (dr1.Read())

{

homeID = Convert.ToInt32(dr1["homeID"].ToString());

conn.Close();

if (homeID == 0)

{

Response.Write("");

}

else{

string sql2 = "insert into Fee(homeID,month,waterFee,elecFee,numFee)values(@homeID,@month,@waterFee,@elecFee,@numFee)";

conn.Open();

cmd2 = new SqlCommand(sql2, conn);

SqlParameter id4 = new SqlParameter("@homeID", SqlDbType.Int, 4);

SqlParameter

SqlDbType.VarChar, 10);

SqlParameter id6 = new SqlParameter("@waterFee", SqlDbType.VarChar, 10);

SqlParameter id7 = new SqlParameter("@elecFee", SqlDbType.VarChar, 10);

SqlParameter id8 = new SqlParameter("@numFee", SqlDbType.VarChar, 10);

id4.Value = homeID;

id5 = new SqlParameter("@month",

id5.Value = month;

id6.Value = Convert.ToString(this.waterFee.Text);

id7.Value = Convert.ToString(this.elecFee.Text);

id8.Value

Convert.ToString(Convert.ToSingle(this.waterFee.Text)

Convert.ToSingle(this.elecFee.Text));

cmd2.Parameters.Add(id4);

cmd2.Parameters.Add(id5);

cmd2.Parameters.Add(id6);

cmd2.Parameters.Add(id7);

cmd2.Parameters.Add(id8);

if (Convert.ToInt32(cmd2.ExecuteNonQuery()) > 0)

{

ScriptManager.RegisterStartupScript(this.Page,

this.GetType(), "info", "alert('添加成功!');", true);

this.homeHao.Text = "";

this.waterFee.Text = "";

this.elecFee.Text = "";

}

else{

ScriptManager.RegisterStartupScript(this.Page,

this.GetType(), "info", "alert('添加失败!');", true);

this.homeHao.Text = "";

this.waterFee.Text = "";

this.elecFee.Text = "";

}

}

}

else{

ScriptManager.RegisterStartupScript(this.Page,

= + this.GetType(),

"info", "alert('没有该寝室,请先添加该寝室后再来处理水电费!');", true); this.homeHao.Text = "";

this.waterFee.Text = "";

this.elecFee.Text = "";

}

}

catch(SqlException) {

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "info", "alert('数据库操作失败!');", true);

}

}

protected void cancel_Click(object sender, EventArgs e)

{

this.homeHao.Text = "";

this.waterFee.Text = "";

this.elecFee.Text = "";

}

}

(5)寝室管理员模块中的学生信息管理页面,效果如图9、10所示:

图9 学生信息管理页面效果(1)

图10 学生信息管理页面效果(2)

代码省略。

(6)学生页面中的查询水电费,效果如图11所示:

图11 查询水电费页面效果图

代码省略。

(9)学生模块中的留言板页面,效果如图12所示:

图12 留言板页面效果图

代码省略。

4.3 本章小结

本章介绍了系统的数据库设计以及系统的功能实现,并展示了系统的主要页面,如登录页、水电费管理页面以及学生信息管理页面等等。

5 总结

在Web 应用程序开发领域,选择B/S作为首选的开发框架不是一件新鲜事,然而建立一个较为理想的B/S模型确实是一个富有挑战性的工作,它要求分层界限必须清晰(即数据层仅负责数据保存和管理,业务层仅负责从数据层取出数据并迭现,而表示层仅负责数据的显示工作)且易于调试和维护。笔者使用基于ASP.NET 2.0框架相关技术实现了这一模型。.NET2.0框架是一个宏大的技术集,使用起来也极富挑战性。

使用B/S架构来构建学生寝室管理系统,能实现更高水平的灵活性和可扩展性。通过将应用系统的主要部分分解到独立的、较小的组件中可以更好地重用代码;当某个层中的内容发生变化时,其他层不会受到影响。ASP.NET 技术可以充分发挥三层架构的优势,将 UI 的界面和逻辑彻底分开,快速建立起三层架构的网站。本系统将两者充分结合,达到了很好的效果。

简要讨论了利用.NET 框架中的ASP.NET 来架构信息管理系统的过程,并以学生寝室管理系统为例探讨了在开发过程中使用的关键技术。在开发过程中深刻体会到ASP.NET 在各方面均比前身ASP 有一定的优势,尤其是在连接数据库以及数据库存取安全的设计上更有了长足的进步。基于ASP.NET 技术使得信息管理系统的开发更为方便、快捷。同时在信息管理系统的开发建设过程中也感觉到还有很多其他方面的细节问题,如在保证安全的前提下提高用户的操作便利性等、需要在今后的编程时间中加以认真研究解决。

为做出该学生寝室管理系统程序,访问了大量Web 网络开发方面的网站,搜集了大量关于Web 网络开发的中英文资料,也查阅了大量书籍的源代码作为参考和运用,从中学会了许多ASP.NET 和ADO.NET 技术关于Web 开发方面的知识。

该系统的功能还有一些没完成和完成得不理想,如界面不精美,搜索功能,管理员权限的划分和自动给学生分配寝室,还有系统数据层和业务逻辑层分界不明显。一方面时间紧迫;另一方面是ASP.NET 这门技术的学习和熟练使用需要一个长期的过程。我会在以后的学习过程中,更加努力,做的更好。

参考文献

[1] 张跃廷. ASP.NET从入门到精通[M].北京: 清华大学出版社,2008-9:113-120

[2] Phil Hanna. ASP.NET技术大全. 北京: 机械工业出版社,2002.3:56-63

[3] 万峰科技. ASP.NET 网站开发四“酷”全书[M].北京:电子工业出版社,2006-2:189-192

[4]明日科技 张跃廷、丁红兵.asp.net 网络编程标准教程. 人民邮电出版社,2009:12-15

[5]周峰、王征.asp.net2.0网络程序设计案例集锦. 重庆. 中国水利水电出版社,2009:315-317

[6]天极网新技术研究室.ASP.NET 完全入门. 重庆. 重庆出版社,2001:145-146

[7] 邵晟. 浅谈B/S结构. 北京:电子工业出版社,2006-5:84-85

[8]Scott Worley 著.ASP.NET 技术内幕. 王文龙 刘湘宁译. 北京. 人民邮电出版社,2002:34-36

[9] 刘亮亮 潘中强. 精通ASP.NET 2.0 数据库绑定技术. 北京:人民邮电出版社,2008-6:62-71

[10] 陈永强. 谢维成. 李茜. SQL Server 数据库企业应用系统开发[M].北京: 清华出版社,2004: 90-92

[11]Thomas Connolly、Carolyn Begg.数据库系统设计,实现与管理[M].电子工业出版社,2004:7 124-135

[12] 陈永强. 谢维成. 李茜. SQL Server 数据库企业应用系统开发[M].北京: 清华出版社,2004:27-29

[13]Phong B T.Illumination for computer-generated Pictures.Comm.ACM,1975, 18(6):311-317.

[14]Wallace B.McClure .ASP.NET 2.0AJAX入门经典. 北京:清华大学出版社,2008-05:7-8

谢 辞

做这次的毕业设计好几个月了,这几月的来,我感触很多。本以为做一个小型的管理系统是件很容易的事,可是通过这次经历,让我充分意识到,做系统不是简单的做几个页面,它们是一个整体的,是相互衔接的。以前听别人说只有做项目才能真正的学到东西,看来这是他们的经验之谈,我这也算是学到一些东西了吧。

本设计能够顺利的完成,与我的指导老师的谆谆教导是分不开的,他对我的毕业设计提出了很多的宝贵的建议,还给我提供了大量的有用的资料。他严谨的治学态度、诲人不倦的教学作风给我留下了非常深刻的印象。此外还要感谢各位任课老师,正是他们平时的认真负责,才能使我能够很好的掌握和运用专业知识,并在此次设计中得以体现。正是有了他们的悉心帮助和支持,才使我的毕业设计工作顺利完成,在此向全体老师表示由衷的感谢,感谢他们四年来的辛勤栽培。


相关文章

  • 宿舍文化建设论文
  • 宿舍文化建设论文 2009-10-22 23:03:43 作者:龙口热线 来源: 浏览次数:716 网友评论 0 条 宿舍文化建设论文宿舍,作为在校学生学习和生活的处所,如何让学生置身于如同家的温馨环境,身心能够得到养息,以愉悦.宁静的心情 ...查看


  • 大学生安全教育论文
  • 论大学生宿舍安全 当今的大学生很多情况下发生人身安全往往是在最不留意的地方--宿舍.的确,在这期间,我就听闻几次发生在宿舍的安全事故.有: 一.在我校八号男生公寓曾发生过一起盗窃电脑事件,当初盗窃电脑台数高达20多台,窃贼在大庭广众之下进入 ...查看


  • 学生公寓管理系统的设计与实现
  • 学生公寓管理系统的设计与实现 学生公寓是每一位在校学生生活.学习.相互交流的主要场所,如何提供一个良好的学生公寓的管理体系,对学校和同学而言至关重要.以往的学生公寓管理基本上还处于人工操作的阶段,随着计算机技术和网络技术的日益广泛应用,采用 ...查看


  • 宿舍管理论文
  • 天津轻工职业技术学院 期末 设计(论文) 课题 : 学生宿舍管理系统 专 业 10计算机信息管理 班级 10信息管理 学生姓名 杨柠 学生学号 43 指导教师 王唯 提交日期 2011年12月份 成绩 答辩日期 答辩成绩 答辩教师 总评成绩 ...查看


  • 中职学校班级自主管理论文
  • 中职学校班级自主管理论文 摘 要:通过一个学期的管理实践,我班的班级自主管理实现了学生管理的人本化,尊重他们作为独立自主的人来发展和教育,实现了班级发展的人格化和工作措施的人性化.成绩有目共睹,但不足仍然存在.第二学期的班级自主管理实践我将 ...查看


  • 建筑环境测试技术结课论文
  • 通过一个学期建筑环境测试技术的学习,发现了很多生活中很多不注意的因素对空气环境所造成的危害,也了解了一些利用各种不同的仪器对环境中不同参数进行检测以及监测的方法,同时也提高了自己的动手能力. 1. 宿舍环境目前所存在的问题: 宿舍是学生学习 ...查看


  • 3.父母冲突与大学生宿舍冲突方式的关系_自我分化的中介作用_邓林园
  • 心理与行为研究2015,13(2):145-152 Studies of Psychology and Behavior 父母冲突与大学生宿舍冲突方式的关系: 自我分化的中介作用* 邓林园1刘丹1伍明明2方晓义3 (1北京师范大学教育学部教 ...查看


  • 毕业研究生办理离校.报到证等
  • 毕业研究生办理离校等手续说明 一.协议书.推荐表领取: 每年11月中旬,就业办将<毕业生双向选择就业推荐表>专用纸.<毕业生 就业协议书>.<毕业研究生登记表>发到各院(系)学办.毕业生登录江苏省高校毕业 ...查看


  • 小学教育毕业论文范文
  • 农村小学寄宿制对学生学习的影响 The Impact of Boarding in Rural Primary School on Students' Learning 摘要 农村小学寄宿制是农村小学教育改革的重要内容,寄宿制的实施有利于整 ...查看


  • 课题研究报告
  • <在农村寄宿制学校以宿舍为小组开展合作学习的探索与研究> 研究报告 红花岗区深溪镇大窝学校课题组 [内容摘要] 随着农村中小学布局的不断调整,农村寄宿制学校会越来越多,如何改变现有的农村寄宿制学校的学习模式,不失为一种改变农村教 ...查看


热门内容