资源描述
基于C#语言的机房管理系统
的设计与实现
摘 要:
作为计算机专业教育的基地、教学实践的场所——计算机机房,在建设和管理上面临着挑战。机房规模的扩大、软硬件的不断更新、机房角色的多元化以及学生层次的良莠不齐,给管理带来了难度,机房管理人员承担着越来越繁重的工作。利用计算机进行自动化管理势在必行。
本系统采用“客户端一服务器一数据库”的三层体系结构使得机房控制端布局更灵活。系统使用C#作为开发工具,以.NET作为开发平台,而不是使用VB和Delphi等传统开发工具制作,在功能、兼容性等方面都有很大程度的提高。
关键词:
计算机机房 管理系统 无人操作 三层体系结构 C#.NET
Computer Room Management System
Basing On C# Language
Abstract:
The computer room, as the foundation for computer education and teaching practice, is now facing great challenges from both its construction and management. With the expanding of the area of the computer room、the update of both the software and the hardware、the diversified roles of itself as well as the different levels of the students, it becomes more difficult to make control of the computer room. For this reason, the administrator of the computer room is taking on tasks heavier and heavier day by day. As a result, it becomes necessary to use the computer for the automatic management of the computer room.
This system uses the three-level construction system of “User-Server-Data Bank”, which makes it more flexible for the control of the computer room. Instead of using the traditional developing tools such as VB and Delphi, this system uses C# as its developing tools and NET as its platform, making great progress both in the aspects of function and compatibility.
Key words:
the computer room managenment system automatic operating
three-level construction system C# . NET
II
目 录
中文摘要
英文摘要
目 录 III
前 言 - 1 -
一 机房管理系统开发背景 - 2 -
1.1 发展现状 - 2 -
1.2 其他同类系统分析 - 2 -
1.3 本系统优缺点 - 2 -
二 机房管理系统技术分析 - 3 -
2.1 C#技术 - 3 -
2.1.1 C#简介 - 3 -
2.1.2 C#的诞生 - 3 -
2.1.3 C#技术特点 - 3 -
2.2 SQL SERVER数据库 - 4 -
2.2.1 SQL简介 - 4 -
2.2.2 几种数据库使用比较 - 4 -
2.2.3 SQL Server 特点 - 5 -
2.3 ADO.NET - 5 -
三 机房管理系统总体设计 - 7 -
3.1 系统体系结构 - 7 -
3.2服务器端结构图 - 8 -
3.3客户端设计 - 11 -
3.4数据库设计 - 12 -
四 服务器端各模块功能的实现 - 14 -
4.1 管理员管理 - 15 -
4.2 用户管理 - 17 -
4.3 加款系统 - 17 -
4.4 排课管理 - 18 -
4.5 设备管理 - 19 -
4.6 统计系统 - 20 -
4.7 日志管理 - 20 -
五 问题及解决方案 - 21 -
5.1 在C# 中窗体间传递数据 - 21 -
5.2 C#中UDP数据包的传输 - 22 -
六 总结与展望 - 25 -
参考文献 - 26 -
致 谢 - 27 -
IV
前 言
作为计算机教育的基地、教学实践的场所——计算机机房,在建设和管理上面临着挑战。机房规模的扩大、软硬件的不断更新、机房角色的多元化以及学生层次的良莠不齐,给管理带来了难度,机房管理人员承担着越来越繁重的工作。利用计算机进行自动化管理势在必行。目前,机房管理系统大都集中在自动化收费管理和实时监控方面,功能比较单一,而对于计算机机房来说,设备的管理和维护是确保教学任务顺利完成的关键。另外,计算机机房的用途是多元化的,如自由上机、上课、上网等,这就要求在管理上有所不同。考虑到校园机房以教学为本的特点,我们设计了这套以教学管理为中心的机房管理系统。
该系统采用C/S架构,在设计中采用C#语言开发,实现机房上课、上机及排课等管理,满足正规机房教学任务,实现机房正规上课上机课时量化及细化管理。主要优点表现如下:1.规划教学任务,规定上机实习课时,动态安排上机课程、上机地点、上机时间以及上机实习内容;2.自动管理识别业余上机和正常上课;3.使用纯软件登录设计,操作更灵活;4.实现机房无人管理,把人从繁琐的机房管理中解放出来。
本次毕业设计,从开始选题,到最后设计的完成,经历里一段很长的过程,在这近一个学期的设计中,我以及我们开发小组的所有成员在各方面都有了很大的提高。该项目属于集体项目,因此,相互间的协作也显得格外重要。由于设计采用全新的C#编写,遇到的困难可想而知,但是,我们中没有人退却,没有人放弃,都迎着困难而上,最终顺利完成。这次设计实现了预期目的,一个较为完整的基于C#语言的机房管理系统也顺利的完工,我们会把这次毕业设计作为我们学习的一个新起点,争取更大的进步。
- 27 -
毕业生毕业论文 基于C#语言的机房管理系统的设计与实现
一 机房管理系统开发背景
1.1 发展现状
当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。计算机的最大好处在于利用它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好计算机机房而设计的。
1.2 其他同类系统分析
目前社会上流行的关于机房的管理系统大多都是采用VB和Delphi等传统开发工具制作,而使用C#来完成这一系统的软件还不曾被发现。与使用VB和Delphi开发的系统相比,使用C#语言开发系统有诸多的优势:首先,C#作为全新的开发语言,从C和C++演变而来,在功能上较VB和Delphi更为强大;其次,C#允许使用最先进的NGWS的通用语言规定(Common Language Specification,简写为CLS)访问不同的API。CLS规定了一个标准,用于符合这种标准的语言的内部之间的操作,为了加强CLS的编译,C#编译器检测所有的公共出口编译,并在通不过时列出错误,系统兼容性更强;第三,C#还提供了很多方便的功能,如垃圾收集、类型安全、版本控制等等,使开发更为简洁、灵活。
1.3 本系统优缺点
本系统实现机房上课、上机及排课等管理,满足正规机房教学任务,实现机房正规上课上机课时量化及细化管理。主要优点表现如下:1.规划教学任务,规定上机实习课时,动态安排上机课程、上机地点、上机时间以及上机实习内容;2.自动管理识别业余上机和正常上课;3.使用纯软件登录设计,操作更灵活;4.实现机房无人管理,把人从繁琐的机房管理中解放出来。
二 机房管理系统技术分析
2.1 C#技术
2.1.1 C#简介
微软的最新编程语言C#,是一种面向对象的编程语言,它将作为Visual Studio中的一部分推出。C#(发音为“C-Sharp”)既保持了C++中熟悉的语法,并且还包含了大量的高效代码和面向对象特性。据微软产品经理透露,C#语言将在保持C/C++灵活性的基础上为程序员带来更高效的RAD开发方式。它不仅能用于WEB服务程序的开发,并且还能开发强大的系统级程序。
2.1.2 C#的诞生
在过去的二十年内,C和C++已经成为广泛的应用在商用软件的开发中的开发语言。但是C和C++都提供了一些容易使开发者产生错误的特性,也可以说C和C++的灵活性是牺牲了开发效率。如果和其他的开发语言相比(比如说VB),相同功能的C/C++软件通常会需要更长的开发周期。正是由于C/C++开发的复杂性和需要较长的开发周期,所以许多C/C++开发人员都在寻找一种可以在功能和开发效率间提高更多平衡的开发语言。
目前有一些开发语言通过牺牲C/C++语言的灵活性(一些必要的灵活性)来换取开发效率。有些语言对开发人员产生了过多的限制(比如说限制使用底层控制代码)并且提供更少的通用命名能力。这些语言不能够轻易的与现存的系统相结合。
一种合理的C/C++替代语言应该是能够提供对现存和潜在的平台上的高效开发提供有效和有力的支持。并可以使WEB开发可以非常方便的与现存的应用开发相结合。而且C/C++开发人员都倾向于在必要的时候使用底层代码。
在这个问题上微软公司的解决方案是推出一种命名为C#(发音为 C Sharp)的开发语言。C#是一种先进,面向对象的语言,通过C#可以让开发人员快速的建立大范围的基于MS网络平台的应用,并且提供大量的开发工具和服务帮助开发人员开发基于计算和通信的各种应用。
2.1.3 C#技术特点
由于C#是一种面向对象的开发语言,所以C#可以大范围的适用于高层商业应用和底层系统的开发。即使是通过简单的C#构造也可以各种组件方便的转变为基于WEB的应用,并且能够通过Internet被各种系统或是其他开发语言所开发的应用调用。
即使抛开上面所提到的优点,C#也可以为C/C++开发人员提供快速的开发手段而不需要牺牲任何C/C++语言的特点/优点。从继承角度来看,C#在更高层次上重新实现了C/C++,熟悉C/C++开发的人员可以很快的转变为C#开发人员。
2.2 SQL Server数据库
2.2.1 SQL简介
SQL是Structured Quevy Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。
SQL语言有着非常突出的优点,主要是:第一、非过程化语言。SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集,所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。SQL不要求用户指定对数据的存放方法, 这种特性使用户更易集中精力于要得到的结果;所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段,查询优化器知道存在什么索引,在哪儿使用索引合适,而用户则从不需要知道表是否有索引、有什么类型的索引。第二、统一的语言。SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。
2.2.2 几种数据库使用比较
目前开发系统常用的数据库有:Access数据库、Oracle数据库、SQL Server数据库。
Access数据库比其他数据库小,对于大多数人来说易于使用,利用Access中的各种向导和对话框,创建和设置数据库的难度比其他数据库也小得多。但是,Access 并不是一个数据库服务器,数据的安全问题不能保障。
Oracle数据库使用于比较大的单位,开销比较大,系统耗资也比较明显。
本系统采用的数据库管理系统是MicrosoftSQL Server 2000,它具有良好的用户界面和强大的功能。数据备份、数据还原和数据库的日常维护工作可以直接使用MS SQL Server自带的功能实现,省去了大量编码工作。服务器与数据库的连接使用ADO技术实现,服务器对数据库中数据的访问通过数据库中的存储过程实现。这些存储过程在数据库中建立,它们访问的对象是数据库中的表。所以,数据库模块的设计归结为对表及存储过程的设计。
2.2.3 SQL Server 特点
SQL Server具有以下 特点:
1.真正的客户机/服务器体系结构。
2.图形化用户界面,使系统管理和数据库管理更加直观、简单。
3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
4.SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffice产品集成。
2.3 ADO.NET
ADO.NET是对Microsoft ActiveX Data Objects (ADO)一个跨时代的改进,它提供了平台互用性和可伸缩的数据访问。由于传送的数据都是XML格式的,因此任何能够读取XML格式的应用程序都可以进行数据处理。事实上,接受数据的组件不一定要是ADO .NET组件,它可以是基于一个Microsoft Visual Studio的解决方案,也可以是任何运行在其它平台上的任何应用程序。
ADO.NET具有如下特点:
1.可编程性。利用Visual Studio.NET,你可以对你的对象进行编程,而不是某一个数据表或某一个数据列。ADO.NET采用强类型编程,可以更好的表述业务对象。
2.运用Data Set (数据集) 。任何采用ADO.NET的应用方案中最重要的就是数据集了。数据集是指数据库数据在内存中的拷贝。一个数据集可以包含任意多个数据表,每一个一般都对应于数据库中的表或视图。数据集组成了一个非连接的数据库数据视图。也就是说,它在内存中,并不和包含对应表或视图的数据库维持一个活动连接。这种非连接的结构体系使得只有在读写数据库时才需要使用数据库服务器资源,因而提供了更好的可伸缩性。在运行时,数据会从数据库中取出并先传给一个中间层业务对象,然后传至用户界面。为了适应这种数据交换,ADO.NET采用了基于XML的持续的传递格式。也就是说,当数据从一个层传向另一个层时,ADO.NET的方案是将内存中的数据(即数据集)表述为XML,然后以XML格式传递给其他组件。
在Visual Studio.NET中数据绑定技术已经大大改进,可以充分发挥ADO.NET的优势。构建与数据交互的用户界面也就变得更加简单了。
三 机房管理系统总体设计
3.1 系统体系结构
系统体系结构的设计直接决定了系统的性能、可扩展性以及稳定性。系统体系结构的建立必须综合考虑系统运行环境、所采用的工具和技术、信息的共享与安全性以及运行维护的方便性。基于上述考虑,本系统采用“客户端一服务器一数据库”的三层体系结构,如图3.1所示。
图3.1 系统体系结构图
服务器负责接受客户端的请求并进行相关的处理,然后向客户端返回处理的结果。数据库负责维护自身的运行;同时,响应服务器的数据请求,返回操作结果供服务器分析使用。客户端提供客户操作平台,向服务器发出请求;同时,必须对服务器返回的结果和控制命令做出响应。数据库不与客户端直接进行交互,而是通过服务器,间接地完成客户端的数据访问请求。原因在于:
首先,这一做法可以有效地节省客户端对网络资源的占用,因为与数据库的连接往往会占用很大的网络带宽,而且数据库结构越复杂,数据越多,所占用的资源就越多,这将影响到局域网的性能。
其次,通过服务器访问数据库,便于服务器程序对客户的使用进行统一管理。服务器接受客户的请求,根据其自身的标准判断客户请求的有效性和合法性,以便将无效的、非法的客户请求屏蔽,并对合理的请求进行一定的优化,再交给数据库进行处理,从而提高系统的整体运行效率和稳定性。
另外,客户端与数据库分开的结构,使各个部分的功能更加紧凑,提高了模块的独立性,降低了模块间的耦合性。如果数据库有所改动,只需修改服务器端的相关模块,而无需对客户端的模块进行任何的修改;同样,客户端的修改也不会影响到服务器。
使用三层体系结构设计的优点还在于:1.数据库布局灵活。数据库没有必要与服务器程序存放在同一服务器上,使得机房控制端布局更灵活。2.客户端采用登录窗口方式,使得用户选用机器自由,尽最大可能的提高学生上课效率。
服务器向客户机传送消息以数据包的形式,数据包采用广播的形式发送,它通过UDP协议实现。UDP (User Datagram Protocol,用户数据包协议)是一种在网络上提供的无连接的传输协议。用UDP通信有以下特点: 1、 数据传输不用建立连接,所以不可靠; 2、 数据的发送是面向整个网络的,任何一台在局域网内的计算机都可以接收到相同的数据,但只有与消息有关的计算机才对消息作出处理。
3.2服务器端模块图
从系统的体系结构可以看出,系统主要由三部分构成:服务器端、客户端和数据库服务器,由此构成了系统的三大模块。
服务器端又分为多个模块,根据各模块所完成功能,将它们的结构图设计如下:
图3.2 系统总体结构图
本机房管理系统根据功能共分为7个模块:管理员管理、用户管理、加款系统、排课管理、设备管理、统计和日志管理。各模块间相互联系,相辅相成。
图3.3管理员管理模块结构图:
管理员管理模块主要负责对系统管理员进行管理,可以完成对管理员的添加、删除操作,以及修改管理员密码机权限。其中,修改权限是静态的。设计时,将管理员分为若干个级别,每当添加或修改管理员信息时,可以选择对该管理员设定相应的权限,让管理员拥有不同的管理权力。
图3.4 用户管理模块结构图
用户管理模块用于对各使用机房的用户信息的管理,包括添加删除用户,修改用户信息等。
图3.5排课管理模块结构图
排课管理模块主要实现规划教学任务,规定上机实习课时,动态安排上机课程、上机地点、上机时间以及上机实习内容。
图3.6 设备管理模块结构图
设备管理用以实现对机房的远程控制,对所有机器实现集中管理。
图3.7统计模块结构图
统计模块可以统计管理员操作、学生上课信息以及课程安排信息,使得信息集中化,有力于机房的规范管理。
图3.8日志管理模块结构图
日志管理用以记录机房所有操作信息,使所有操作都有据可查,明确各管理员责任划分。日志中不但记录了现有管理员及用户的信息,还把所有与机房有关的信息作明确的记录,特别指出的是对已销户用户的信息的记录,有利于学生毕业后对上课及加款等信息的查询,更具人性化管理。
3.3客户端设计
客户端安装在各机房共学生使用的计算机上,当学生用户打开计算机后,机器会显示一个登陆页面,这时将屏蔽其他计算机的其他操作。如果学生用户输入的用户名和密码无效,系统将不予登陆,提示重新输入信息。只有当输入正确信息后,才能够登陆成功,系统打开windows界面,即可以正常的操作使用。在进入windows后,系统任务栏会出现一个系统控制的图标,学生用户可以通过这里打开客户端控制面板,进行在线状态查询、帐户余额查询和修改登陆密码等操作。在用户使用机器完毕后,可以向服务器发送关机请求,如果不成功,将继续显示在线状态,如果请求通过,则完成操作,系统会自动关闭。客户端基本设计流程图如图3.9所示。
图3.9 客户端基本流程图
3.4数据库设计
本系统采用的数据库管理系统是Microsoft SQL Server 2000,它具有良好的用户界面和强大的功能。数据备份、数据还原和数据库的日常维护工作可以直接使用MS SQL Server自带的功能实现,省去了大量编码工作。
表结构的设计是数据库模块设计的重点之一,设计出结构合理、准确表达信息的表结构对提高系统效率及后期系统维护更新至关重要。根据需求,本系统数据库所相关的E-R图如图3.10所示。
图3.10 数据库E-R图
由以上E-R图,我们不难得到图3.11所示的数据库模型图:
图3.11 数据库模型图
在模型图中显示了五个主要的数据库表:管理员表Admins,关键字AdmName;学生用户表Users,关键字UserName;加款信息表MonAdd,关键字AddID;课程信息表Courses,关键字CourseNum;设备表Computers,关键字ComputerName。
各数据表之间的主要连接关系是:
1、 管理员表Admins —加款信息表MonAdd ,通过表Admins中的AdmName字段与表MonAdd中的AdmName字段相连。
2、 管理员表Admins —设备表Computers ,通过表Admins中的ComputerName字段与表Computers中的ComputerName字段相连。
3、 管理员表Admins —课程信息表Courses,通过表Admins中的CourseNum字段与表Courses中的CourseNum字段相连。
4、 学生用户表Users —加款信息表MonAdd ,通过表Users中的UserName字段与表MonAdd中的UserName字段相连。
5、 学生用户表Users —课程信息表Courses,通过表Users中的UserClass字段与表Courses中的ClassNum字段相连。
四 服务器端各模块功能的实现
该系统主要实现如下功能:
管理员管理:管理员是机房正常运行的主要参与者,对管理员管理的好坏,直接影响着机房的运行,影响着正常的教学活动。因此,我们把管理员管理作为设计的重中之重。
用户管理:管理学生建档,开户,存款充值,学期末或毕业离校退款。处理各种帐务统计查询。各功能均模块化,操作简单实用。
排课管理:对学生的课程实验安排及机房的用机进行管理。
设备管理:管理机房设备使用、调配情况,对机房的设备使用状态进行优化管理。
统计:是指对机房设备的使用情况,上课的基本情况,学生的加款,机房的收支和其他一些信息进行统计。
日志管理:查看管理员以及用户的操作信息。
金额的添加:是指对学生帐户进行统一管理。
其主界面如图4.1所示。
图4.1 系统主界面
主界面只放置了一个工具栏按钮ToolBar,设计时,选择ToolBar的Buttons属性,打开ToolBarButton集合编辑器,可以将ToolBar分割成多个按钮,按纽间分割线其实也是一个按钮,是一个特殊的按钮,只要将它的Style属性设置为“Separator”即可得到。本例中将ToolBar分为9个小按钮(不含分割线),分别是:添加金额、退出系统、管理员管理、用户管理、排课管理、设备管理、统计、日志管理和帮助。主要完成管理员管理、用户管理等7个方面的功能
4.1 管理员管理
在本系统中,将管理员分为两类:一类是超级管理员,他对系统管理拥有最高的权限,不仅可以修改用户信息,添加、删除用户,还可以对其他非超级管理员进行上述操作;另一类就是一般管理员,他不能对系统管理员进行操作,除此之外,拥有与超级管理员同样的操作权限,他是超级管理员的得力助手,是专为减轻超级管理员工作量而设计的。超级管理员进入系统后,可以打开如图4.2所示的管理员管理界面。
图4.2 管理员管理界面
该模块首先应实现的是数据库的连接,以确定在登陆该窗体时数据表格dgAdmin中能显示所有管理员的信息。在这里,我们采用了通过存储过程连接数据库,在窗体frmAdmin的Load事件中写入如下代码:
dgAdmin.DataSource=(Admin.LoadAdmin()).Tables[0];
dgAdmin.Update();
在这里,我们应用了Admin类中的一个LoadAdmin函数,该函数如下设计:
public static DataSet LoadAdmin()
{return SqlHelper.ExecuteDataset(SqlHelper.CONN_STRING,CommandType.StoredProcedure,"GetAdminSource");
}
LoadAdmin函数调用了SqlHelper类中的重载函数ExecuteDataset:
public static DataSet ExecuteDataset(string connectionString, CommandType commandType, string commandText)
该重载函数的三个参数分别为:连接字符串、命令类型和一个命令字符串,返回结果是一个数据表。
重载函数ExecuteDataset的最后一个参数记录了一个存储过程的名称,于是,在数据库JF221中应有一个名字为GetAdminSource的存储过程,具体代码如下:
CREATE PROCEDURE [GetAdminSource]
AS SELECT ADMID as ' 编号',
AdmName as '用户名',
AdmPwd as ' 密码',
' 权限'= (case RoleId when 0 then '超级管理员' when 1 then '一般管理员' end)
from Admins
GO
而整个数据库通过连接数据库的字段:
public static readonly string CONN_STRING ="server=JONSION;database=JF221;uid=sa;pwd=";
与服务器上的数据库JF221连接起来。
为了操作方便,我们把对管理员的添加、修改及删除设计在一个界面上,当选中数据表中的一个数据时,其对应信息将显示在数据表下方对应的文本框中。在我们没有执行添加和修改操作时,这些文本框处于不可编辑状态,只可供查询使用。如果这时我们执行删除操作,系统为了确保用户操作无误,将进行一次讯问(如图4.3),只有用户
图4.3 删除对话框
再次确认后,系统才真正执行删除命令。而进行添加和修改时,文本框可编辑,而为确保安全,对添加和修改也都进行了二次确认的设置。
4.2 用户管理
用户管理模块主要完成对学生用户的建档,开户,存款充值等的管理,它与管理员管理模块十分相似,在此不再赘述。
4.3 加款系统
涉及到与钱有关的东西,人们大多都是比较敏感的,学生当然也不例外。因此,系统对涉及与此有关时,设计的特别谨慎。对有关方面的操作也都详细记录,以备日后查录使用。
在本系统中,执行管理员向用户加款可采用两种方式查询到用户卡当前信息:一种是“按卡号查询”,一种是“按姓名查询”。操作界面如图4.4所示。当选中单选框“按卡号查询”后,输入卡号对应的文本框可用;选中“按姓名查询”后,输入姓名对应的文本框可用。无论采用哪种,点击确定后,系统都将查询后台数据库。与上一个不同的是,这里使用的是SQL语句连接数据库的方法。使用的SQL语句如下:
string string1="select * from Users where UserName='"+txtName.Text.Trim() + "'";
DataTable dt=SqlHelper.ExecuteDataTable(string1);
采用sql语句连接数据库的方法,连接函数ExecuteDataTable()的输入参数是一个由sql语句组成的字符串,返回值同样是数据表的形式。
图4.4 加款系统界面 图4.5 提示信息
如果查询数据失败,系统将如图4.5所示显示提示信息;如果查询数据成功,文本框中将显示对应信息。点击加款,将显示加款对话框,如图4.6所示。在这里使用了不同窗体间传递数据的技术,将在后边篇幅中举简单例子说明,在此不作赘述。
图4.6 加款对话框
4.4 排课管理
排课管理用于管理机房课程,界面如图4.7所示。该图由上下两部分组成:上半部分安放了一个数据库表,用于显示课表信息; 下半部分由一些操作按钮组成,可以查询课表(通过课程代码定位课程上课信息)、添加课表内容、修改课表信息以及删除选定的课表信息。
图4.7 排课管理
4.5设备管理
设备管理用于对机房上机状况的管理与控制。如图4.8所示。数据库表中显示机器使用状态,我们可以通过表下方的“打开”、“关闭”按钮控制单个机器的状态,也可以使用“全部打开”、“全部关闭”按钮实现一组相连续的计算机 的状态的改变。
图4.8 设备管理
4.6 统计系统
统计系统由三部分组成:管理员操作统计、学生上课统计、课程统计,如图4.9所示。管理员操作统计可以按照管理员的用户名查询某一时间段的排课、加款等操作记录;学生上课统计可以分别按照学生卡号和学生姓名来查询一个时间段的上课出勤、上机练习等信息;课程统计可以统计课程开设及老师授课等情况。
图4.9 统计系统
4.7 日志管理
日志管理系统可以分别按照管理管理员、学生用户及加款记录来查询日志。如图4.10所示。日志管理只提供查询和删除功能,而不提供修改及添加的权限,这样做主要是为了防止某些管理员恶意的操作。
图4.10 日志管理
五 问题及解决方案
5.1 在C# 中窗体间传递数据
不同窗体之间传递数据,在VB中实现起来比较简单,而同样的方法套用到C# 中是不可用的。在设计加款系统时,为了传递不同窗体之间的数据,我想尽各种办法,实现起来都不够理想。最后终于在网上得到高人指点,利用简单的构造函数来实现了它。现举一简单例子来说明使用构造函数传递窗体间数据:
我们要做的准备工作就是新建两个窗体,如图5.1是两个窗体的布局,很简单:
图5.1 窗体数据传递例图
说明:Form1为主窗体,包含控件:文本框textBoxFrm1,多选框checkBoxFrm1和按钮buttonEdit;
Form2为子窗体,包含控件:文本框textBoxFrm2,多选框checkBoxFrm2和按钮buttonOK,buttonCancel。
假设我们要实现使Form2中的文本框显示Form1里textBoxFrm1的值,修改子窗体的构造函数:
public Form2(string text)
{ InitializeComponent();
this.textBoxFrm2.Text = text;
}
增加Form1中的修改按钮点击事件,处理函数如下:
private void buttonEdit_Click(object sender, System.EventArgs e)
{ Form2 formChild = new Form2(this.textBoxFrm1.Text);
formChild.Show();
}
我们把this.textBoxFrm1.Text作为参数传到子窗体构造函数,以非模式方式打开,这样打开的formChild的文本框就显示了”主窗体”文本。
方法很简单,但是很有效。
5.2 C#中UDP数据包的传输
C#中UDP数据包的传输是一个 很抽象的东西,下面我们来简介一下Visual C#发送、接收UDP数据包使用的主要类及其用法: 用Visual C#实现UDP协议,最为常用,也是最为关键的类就是UdpClient,UdpClient位于命名空间System.Net.Sockets中,Visual C#发送、接收UDP数据包都是通过UdpClient类的。表5.1和表5.2是UdpClient类中常用方法和属性及其简要说明。
表5.1:UdpClient类中常用方法及其说明
方法
说明
Close
关闭 UDP 连接
Connect
建立与远程主机的连接
DropMulticastGroup
退出多路广播组
JoinMulticastGroup
将 UdpClient 添加到多路广播组
Receive
返回已由远程主机发送的 UDP 数据文报
Send
将 UDP 数据文报发送到远程主机
表5.2:UdpClient类中常用方法及其说明
属性
说明
Active
获取或设置一个值,该值指示是否已建立了与远程主机的连接
Client
获取或设置基础网络套接字
1.Visual C#使用UdpClient类发送UDP数据包:
在具体使用中,一般分成二种情况:
(1). 知道远程计算机IP地址:
"Send"方法的调用语法如下:
public int Send ( byte[] dgram , int bytes , IPEndPoint endPoint ) ;
参数说明:
dgram 要发送的 UDP 数据文报(以字节数组表示)。
bytes 数据文报中的字节数。
endPoint 一个 IPEndPoint,它表示要将数据文报发送到的主机和端口。
返回值 已发送的字节数。
下面使用UdpClient发送UDP数据包的具体的调用例子:
IPAddress HostIP = new IPAddress.Parse ( "远程计算机IP地址" ) ; IPEndPoint host = new IPEndPoint ( HostIP , 8080 ) ; UdpClient.Send ( "发送的字节" , "发送的字节长度" , host ) ;
(2). 知道远程计算机名称::
知道远程计算机名称后,利用"Send"方法直接把UDP数据包发送到远程主机的指定端口号上了,这种调用方式也是最容易的,语法如下:
public int Send ( byte[ ] dgram , int byt
展开阅读全文