C/S软件体系结构是基于资源不对等且为实现共享而提出来的,是20世纪90年代成熟起来的技术。
C/S结构将应用一分为二,服务器<后台)负责数据管理,客户机<前台)完成与用户的交互任务。
C/S模式的基本工作原理是:
客户程序向数据服务器发送SQL请求,服务器返回数据和结果。
客户端负责实现用户接口功能,同时封装部分或全部的应用逻辑。
服务器端的数据库服务器主要提供数据存储功能,也可通过触发器和存储过程提供部分应用逻辑,并且通常把那些不同的<不管是已知还是未知的)前台应用所不能违反的规则在服务器程序中集中实现,例如访问者的权限、编号不准重复等规则。
所有这些,对于运行客户应用程序的最终用户,是“透明”的,他们无须过问<通常也无法干涉)这背后的过程,就可以完成自己的一切工作。
在客户服务器架构的应用中,数据库真正变成了公共、专业化的床库,受到独立的专门管理。
3.2用户需求分析
经过详细的调研,并多次与学生档案管理的老师进行讨论后,首先加深了对学生信息管理业务的深刻了解,其次在充分熟悉学生档案管理业务的同时,将整个学生档案管理的业务流程描述如下:
⑴新生入校,首先报到并进行注册登记,然后到财务部门交费。
根据学生被录取的专业,持交费单到所在的系部注册;
⑵到系部注册后,根据选报的专业分配到班级;
⑶进入正常大学生活,参加各种教案活动,学期期末要求每位同学参加各种学科的期末测试;
计划和资源利用计划。
3.5功能分析
⑴系统需要经过有效身份验证才可以登录。
⑵系统对注册用户可对系统进行不同的管理。
⑶用户身份不同,使用系统的权限也不同。
3.6系统建模
为了更好的理解复杂的事物,人们常常采用建立事物模型的方法。
所谓模型,就是为了理解事物而对事物做出的一种抽象的表达方式,是对事物的一种无歧义的书面描述。
通常模型是由一组图形符号和组织这些符号的规则组成。
3.6.1建立系统的逻辑模型
系统的逻辑模型的工具是数据流图和数据字典。
数据流图中没有任何具体的物理元素,只有用来描绘信息在系统中的流动和处理情况。
数据流图共有四种基本符号:
矩形表示数据的源点或终点<或称为外部项),圆或椭圆表示变换数据的处理,向右开口的矩形表示数据存储,箭头表示数据流,既特定数据的流动方向。
根据现行学生管理的业务流程,首先确定数据流图中的源点和终点都选定为学生,如此就得到据冗余,节约储存空间,又能够避免数据之间的不相容性与不一致性。
数据系统提供了两方面的映像功能,从而使数据既具有物理独立性,又有逻辑独立性。
数据与程序之间的独立性,使得可以把数据的定义和描述从应用程序中分离出去。
另外,因为数据的存取由DBMS管理,用户不必考虑存取路径等细节,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。
在数据库系统中,数据是由DBMS统一管理和控制的。
因为对数据实行了统一管理,而且所管理的是有结构的数据,因此在使用数据时可以当应用需求改变或增加时,只要重新选取不同的子集或者加上一小部分数据,便可以有更多的途径,满足新的要求,因此使数据库系统弹性大,易于扩充。
除了管理功能以外,为了适应数据共享的环境,DBMS还必须提供数据的安全性、数据的完整性,并发控制以及数据库的恢复等控制功能。
⑴数据模型设计。
首先来做出学生成绩管理系统的E-R图<联系方法图),分析这个问题的实体,从系统分析可以知道,学生的成绩是由任课教师按照课程给出的,学生、课程、教师组成了这个系统的三个实体。
⑵再分析三个实体之间的联系。
首先,这三个实体不是一个统一体,学生成绩与教师没有内在联系,教师必须通过课程实体才能与学生建立联系,因而先不考虑。
课程与学生这两个实体是多对多联系;一位学生要学习多门课程,一门课程有多位学生共同学习。
而学习成绩是这两个实体“学生”和“成绩”共有的属性,应填在二者的联系“学习”边。
因为成绩既不是学生独有的,也不是课程独有的;“学生甲70分”或“英语70分”是不完全的,说“学生甲英语70分”才是正确的,因为70分是学生甲和英语
经过需求分析阶段的工作,系统必须“做什么”已经清楚了,现在是决定“怎么样做“的时候了。
总体设计的基本目的就是回答”概括的说,系统应该如何实现?
“这个问题,因此,总体设计成为概要设计或者初步设计。
通过这个阶段的工作将划分出组成系统的物理元素。
总体设计阶段的另一项任务是设计软件结构,也就是要确定系统中的每个程序是哪些模块组成的,以及模块相互关系。
4.1.1设计过程
总体设计过程通常由两个主要阶段组成:
系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。
本程序设计包括下述4个步骤:
⑴设想提供选择的方案
如何实现要求的系统呢?
在总体设计阶段开始时只有系统逻辑模型,这主要是我在进行调查时根据老师跟同学们的意见跟建议设计的一些数据然后根据数据分析进行总体的设计。
⑵功能分析
为了最终实现目标系统,必须设计出组成这个系统的所有程序和文件<或数据库)。
我在对程序设计的时候分为两个阶段完成:
首先是进行结构设计,这主要考虑到学生信息由那些模块的划分,这些模块之间的关系:
过程设计确定每个模块的处理过程。
第二进行过程设计,这个阶段是详细设计阶段的任务见第5节系统实现篇。
⑶设计软件结构
通常程序中的一个模块完成一个适当的子功能。
把模块组织成良好的功能层次系统,顶层模块调用他的下层模块以实现程序的完整功能,每个下层模块再调用更下层的模块,从而完成程序的一个子功能,最下层的模块完成具体的功能。
⑷设计数据库
对于需要使用数据库的那些应用系统,我在需求分析阶段需求分析阶段所确定的系统数据需求的基础上。
4.2模块设计原理
4.2.1软件模块结构分析
软件模块结构分析主要有两个任务:
分析用户的数据要求和分析用户的处理要求。
通过以上分析,我们已经基本了解了用户对处理的要求。
⑴系统方案确定
通过对系统的调研与分析,系统主要应完成的功能有:
班级管理、学生成绩管理、学生交费管理、课程管理、成绩管理、系统管理等功能。
⑵软件结构设计
本系统在执行时,先根据不同的操作人员的需要来进行相应的模块,然后可以输入数据或者进行其它的查询或浏览等操作
4.5详细设计
系统设计又称系统物理设计。
系统设计要根据系统分析报告中的系统逻辑模型综合考虑各种约束,利用一切可用的技术手段和方法进行各种具体设计,确定新系统的实施方案,解决“系统怎么做”的问题。
结构化系统设计是指利用一组标准的图表工具和准则,确定系统有哪些模块,用什么方法连接,如何构成良好的系统结构,并进行系统输入、输出、数据处理、数据存储等环节的详细设计。
这一阶段的重点是设计好系统的总体结构,选择最经济合理的技术手段。
系统设计阶段的文件是系统设计报告<又称系统物理设计说明书)。
因为本系统采用支持面向对象的VisualBasic6.0作为开发工具,而VisualBasic6.0采用事件驱动的编程机制,所以在此给出系统软件的结构图和主程序流程图。
系统结构图,如图基本上决定了最终的程序代码质量。
4.5.2人机界面设计
在系统详细设计的时候遇见的第一个问题就是人机界面的设计。
人机界面的实际质量,直接影响用户对软件产品的评价,从而影响软件产品的竞争力和寿命,因此,必须对人机界面设计给予足够的重视。
用户界面设计主要依靠设计者的经验。
在我设计人机界面的时候重要突出有助与友好高效的界面。
下面我介绍下本系主要用到的人机界面设计指南。
⑴一般交互指南
一般交互指南涉及信息的显示、数据输入和系统整体控制。
这类指南是全局性的。
在交互指南中应该考虑下面问题:
①保持一致性。
人机界面中的菜单选择、数据显示以及其他功能使用一致的格式;
②在执行较大破坏性的动作之前要求用户确定;
③允许取消绝大部分的操作;
④按功能对动作分类,并据此设计屏幕布局。
⑵数据输入指南
在本系统中用户的大部分时间用在选择命令、键入数据和向系统提供输入。
在许多应用系统中,键盘、鼠标仍然是主要的输入介质。
下面是有关于数据输入的设计指南:
①尽量减少用户的输入动作。
最重要的是减少击键次数,这可以用下列方法实现:
用鼠标从预定意的一组输入中选一个;
②保持信息显示和数据输入之间的一致性。
4.5.3过程设计的工具
描叙程序处理过程的工具称为过程设计的工具,它们可以分为图形、表格和语言3类。
不论是那种工具对他们的基本要求都是能提供对设计的无歧义的描叙,也就是应该指明控制流程、处理功能、数据组织以及他们方面的实现细节问题,从而在编码阶段能把对设计的描述直接翻译成程序代码。
⑴程序流程图
程序流程图的优点是对控制流程的描绘很直观。
程序流程图有很多优点但同时存在许多的缺点:
①程序流程图本质上不是逐步求精的好工具;
②程序流程图中用箭头代表控制流,因此程序员不受任何约束,可以完全不顾结构程序设计的精神,睡衣转移控制;
③程序流图不易表示数据结构。
⑵判定树
判定树能清晰的表示复杂的条件组合与应做的动作意见的对应关系。
判定树的优点在于,他的形式简单到不用任何说明
DimmrcAsADODB.Recordset
txtsql="selectusernamefromusewhereusername='"&Trim(Text1.Text>&"'"
Setmrc=ExecuteSQL(txtsql>
Ifmrc.EOF=TrueThen
MsgBox"用户名错误!
",vbExclamation+vbOKOnly,"警告"
Text1.SetFocus
Text1.SelStart=0
Text1.SelLength=Len(Text1.Text>
ExitSub
EndIf
username=mrc.Fields(0>
txtsql2="selectusernamefromusewherepassword='"&Trim(Text2.Text>&"'"
Setmrc=ExecuteSQL(txtsql2>
Ifmrc.EOF=TrueThen
MsgBox"密码错误!
",vbExclamation+vbOKOnly,"警告"
5.2系统主界面
本模块是本系统的应用界面,在本界面上集成了本系统的所有功能,从而实现了本系统从班级管理、档案管理、缴费管理、课程管理、成绩管理等系统的具体功能。
首先,在窗口上放置一个Picture控件、一个DataGrid控件、一个工具栏控件和一个状态栏控件,其次打开菜单编辑器,按照总体设计的功能结构图设计菜单选项,如图5-2所示。
图5-2系统主界面图
部分代码如下:
PrivateSublblUsers_Click(>
IfFormat(CurUser.UserName,"<">="admin"Then
FrmUserMan.Show1
Else
WithFrmUserEdit
OriUser=CurUser.UserName
txtUserName=CurUser.UserName
txtPass=CurUser.Pwd
txtPass2=CurUser.Pwd
Modify=True
Show1
EndWith
EndIf
EndSub
txtName.SelStart=0
txtName.SelLength=Len(txtName>
ExitSub
EndIf
WithMyLesson
LessonName=MakeStr(txtName>
LessonType=Trim(ComboType.Text>
Teacher=MakeStr(txtTeacher>
.Term=MakeStr(txtTerm>
.Hours=Val(txtHours>
IfModify=FalseThen
.Insert
Else
Call.Update(OriId>
EndIf
EndWith
UnloadMe
EndSub
课程管理页面如下,如图5-9所示。
图5-9课程页面图
5.5学生缴费管理模块
因为本系统中有些功能模块具有相似之处,因此在本文只用此模块进行一个简单的说明。
其它的相似模块的代码可能参阅本模块的设计思路,如图5-10所示。
图5-10缴费页面
PublicprintstrAsString
PrivateSubCommand1_Click(>
DimdbSourceAsDatabase
SetdbSource=OpenDatabase("xs.mdb">
dbSource.Execute("SELECT*INto班级一览表IN'学生管理一览表.xls''EXCEL5.0。
'FROMclass">
z=MsgBox("成功!
",vbOKOnly,"查询">
EndSub
5.6服务器端程序的建立
服务器端程序实际上是个COM项目,它本身连接数据源,再通过接口与客户端联系,这个COM项目必须注册在服务器上。
5.7客户端程序的建立
在Two-Tier模式中,客户端(Client>程序是直接和服务器的数据源相连的。
⑴建立一个普通的项目。
⑵放置一个TDCOMConnrction控件在网络上调试,需要给出服务器名:
ComputerName:
服务器名<自动给出网上邻居)注意:
ServerGUID的GUID值是自动给出的。
⑶放置一个Tclient控件。
这样一个客户端程序就建立好了,其余犹如普通的数据库设计。
5.8动态连接应用程序服务器的实现
客户端程序在运行时,需要连接应用服务器程序以取得服务。
但是,在系统实际应用的时候,运行应用服务器程序的计算机是经常改变的,因此在客户端程序启动时,应该先找到运行应用服务器程序的计算机的设置。
掌握了动态连接应用服务器的流程,就可以具体实现它。
下面就将分步骤介绍动态连接应用服务器的实现过程。
⑴在VB中新建一个窗体,将单元文件保存为con