郭信江 蔡 喆
摘要:本文主要叙述研究生信息采集和反馈系统的设计与实现,着重介绍了系统结构,开发技术与相关控件,设计流程,服务器端程序的实现以及客户端程序的实现。使用的编程语言主要是java,使用的开发平台是JBuilder10,使用的数据库则是SQL server2000。本系统主要面向两类人员使用:在校的研究生及管理研究生工作的教学秘书、辅导员,他们对系统的使用拥有不同的权限,其主要目的是便于研究生教学秘书、辅导员更好地管理研究生工作,更好地与研究生沟通、交流,从而提高高校研究生日常管理的效率。
关键词:数据库管理系统 系统结构 服务器 客户端
中图分类号:TP311.52 文献标识码:B 文章编号:1673-8454(2009)11-0022-04
本文主要是利用Java的通信技术来实现多用户的研究生信息采集与反馈系统。系统中包含很多功能和模块,例如:研究生的注册和修改信息功能,教学管理员、辅导员的注册和修改信息,广播和向研究生选择性发送消息等功能。研究生信息的采集与反馈系统的主要理念是尽量减少无谓的人工干预,避免不必要的手头操作,提高高校研究生管理的办公自动化程度,同时减少误差,增加信息可靠性,最大限度地提高研究生教学管理、思想政治教育的效率。
一、系统简介
系统运行后,首先会有一个提示信息,要求用户选择以研究生身份登录,还是教学秘书身份登录。进入登录系统后,主要有两个应用程序,分别为服务器程序和客户端程序。服务器应用程序主要用于消息转发,客户登录信息的管理以及用户发送系统消息等;客户端应用程序主要用于客户信息的显示和信息的输入。
用户首先启动服务器程序,服务器即处于监听状态,当用户以某种身份登录系统时,系统会根据数据库存储的用户信息验证用户所输入的内容,若输入有误则提示,否则进入研究生个人系统或者教学秘书个人系统。以研究生身份成功登录系统后,会提示登录成功等相关信息。若有来自教学秘书或者同学发来的消息时,则在个人信息界面提示,并可以直接进行回复。以教学秘书身份登录系统后,也在当前界面下提示登录成功等信息,若有来自研究生用户发来的消息时,则在个人信息栏中显示,并可直接进行回复。软件设计的主要思路是构建一个信息化平台,供研究生与教学秘书二者之间进行沟通,减少了无谓的手头操作,从而提高了办事效率。
二、开发技术与相关控件
要实现本系统,首先要了解一些必备的网络基本知识,在此基础上,才能易于理解本系统的基本原理。
1.Internet知识及相关术语介绍
Internet提供的服务很多,主要有WWW服务、文件传输服务、电子邮件服务和远程登录服务等。其中,WWW是一个基于超文本的信息查询方式,主要通过超文本方式将Internet上不同地址的信息有机地组织起来,并提供一个友好的界面,大大方便了人们的信息交流。
TCP/IP实际上是一组协议的集合,它的协议栈示意图如图1所示。
TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、会话层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:
(1)应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
(2)传输层:此层提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。
(3)互联网层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。
(4)网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)传送数据。
网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层——TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统进行平常被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。
TCP协议主要是向应用层提供可靠的面向连接服务。如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向“上”传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。
UDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询——应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手),也就是说,与UDP相关的服务面临着更大的危险。
FTP(File Transfer Protocol),是文件传输协议的简称,是应用层的一个具体例子,用于Internet上的控制文件的双向传输。同时,它也是一个应用程序。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。TCP/IP协议中,FTP标准命令TCP端口号为21,Port方式数据端口为20。FTP协议的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、连接的方式、甚至是是否使用相同的操作系统无关。假设两台计算机通过FTP协议对话,并且能访问Internet,你可以用FTP命令来传输文件。每种操作系统使用上有某一些细微差别,但是每种协议基本的命令结构是相同的。
2. JBuilder10中的基本网络控件
在Builder中有两个最基本的网络TCP套接字控件,一个是服务器端的,另一个是客户端的,将server socket类设计成在等待客户建立连接之前不做任何事的监听器,而socket类是为建立连向服务器套接字以及启动协议交换而设计的。
三、设计流程
本系统将采用Client/Server(C/S)体系结构,即客户机/服务器体系结构,C/S结构主要应用于构造数据库系统,它包括连接在一个网络中的多台计算机。处理应用程序并请求另一台计算机服务的计算机称为客户机,接受请求的计算机成为服务器。其特点是客户端只装载应用软件,而把数据库放在服务器上,这样就可以使客户端不需要存储数据,从而简化客户端软件,C/S体系结构如图2所示。
研究生信息采集与反馈系统采用C/S结构,服务器专门用于监控用户状态和转发消息,当客户端进行多播或广播时,客户端只需把接收消息的用户序列和消息文本送到服务器,然后由服务器转发到各个用户,而不需要向每个用户建立连接后再发送消息,这样就大大减轻了客户端的任务。
1.信息流设计
图3所示是研究生信息采集与反馈系统的信息流处理过程。
2.建立数据库的E-R模型
根据系统的设计需求,主要考虑研究生的个人信息、教学秘书的信息,以及两者之间的信息传输,这里设计了研究生信息采集与反馈系统的E-R图,如图4所示。
根据上面设计的E-R图,其中有两个实体、一个联系,所以研究生信息采集与反馈系统的数据库应该设计出两个表,分别是教学秘书、辅导员的个人信息表,另一个是研究生用户的个人信息表,而且字段都可以从E-R图的属性里提取。两个表分别是Teacher表和Students表。
Teacher表的结构如表1所示。
Teacher表主要用于存储教学秘书的相关信息,设置学号为主键,用于唯一标识用户,记录的信息包括教学秘书的姓名、编号、联系方式、职称、地址、消息栏等相关信息。
Students表的结构如表2所示。
Students表主要用于存储研究生的个人信息,设置学号为主键,存储的信息包括研究生的姓名、学号、联系方式、地址、政治身份、成绩、消息栏等信息。在研究生和教学秘书的消息栏目中主要是用于两者相关信息的传递的。
这里,系统设置数据库的连接用户名为sa,密码为空,由于数据量不是很多(主要是针对本院研究生的,数量在几百左右),所以没有必要对数据库进行优化。
3.实现模型
服务器分配一个端口号,如果客户请求一个连接,服务器使用accept( )方法打开socket连接,客户在HOST的PORT端口建立连接服务器和客户inputstream,outputstream进行通信,由客户端向服务器端传递的主要消息,登录时将用户名称传给服务器。在广播模式下发送消息时,用户在当前界面上写入信息,然后将消息传送给服务器。在单播模式下发送消息时,在消息前面加入相关信息,以及目的用户学号(学号是唯一标识用户的),然后将消息传送给服务器。在用户退出系统时,退出用户名称,然后将消息传送给服务器。
四、服务器端实现
在完成了相关设计后,可以进行程序设计了,首先,进行服务器端的程序设计。在服务器端,首先要启动一个服务器程序,该程序的主要作用就是对客户端的程序进行监听,然后将监听的消息分类进行处理。其次,还需要在监听程序中实现连接的断开以及相应的错误处理。
建立连接以及监听客户端程序:用户可以通过ServerSocket类建立一个服务器端,其实现的原理已经在前面进行了简单的叙述,在定义了以上的全局变量和添加好需要的包以后,开始设计服务器的连接和程序。
对读取的客户端信息的处理和实现,监听客户端信息的主要就是消息在研究生和教学秘书用户间的传输。在用户收到信息流时,需要判断客户端需要发送的目标用户。
客户端程序实现的过程是:在完成了服务器端的设计以后,现在开始实现客户端的程序,在客户端的程序中,首先要建立一个连接,然后建立线程,对服务器接收的所有消息进行处理,并将消息提交给服务器。在完成了客户端的连接和对服务器的信息监听后,就需要对监听信息进行处理,并且对服务器发送到客户端的信息进行处理。
五、结束语
本文主要实现了一个多功能的研究生信息采集与反馈系统,并介绍了网络的基本知识,如:TCP/IP。客户端/服务器的模式,程序的设计方法,在JBuilder10中有哪些对网络支持的控件类,以及其中的基本属性和方法,如何在网络编程中实现对信息的读取、发送,也就是如何利用流来实现信息的交换。除了以上的一些知识以外,本文还介绍了如何实现系统对信息流的分析,其中包含了一些基本的软件工程方法。?筅
参考文献:
[1]陆正中,马进德.jBuilder10软件开发项目实践[M].北京:清华大学出版社,2004.3
[2]Carlo Ghezzi Mehdi Jazayeri Dino Mandrioli软件工程基础第二版[M].北京:中国电力出版社,2006.
[3]小高知宏著,牛连强,刘本伟译. TCP/IP JAVA篇[M].北京:科学出版社,2003.
[4]王珊.数据库概论[M].北京:高等教育出版社,2004.