学生档案管理系统(附带asp代码)
绪 论 项目背景 信息管理系统(MIS)的概念是1961年美国人J.D.GALLAGHER首先提出来的,是一门新兴的,集管理科学,信息科学,系统科学及计算机科学为一体的综合性学科,研究的是企业中信息管理活动的全过程,以便有效的管理信息,提供各类管理决策信息,辅助企业进行现代化管理. 信息管理系统,备数据处理,计划,控制,预测和辅助决策功能,用统一标准处理和提供信息,排除使用前后矛盾的不完整的数据.完整,及时提供在管理及决策中需要的数据.向各级管理机构提供不同详细程度的报告,缩短分析和解释时间.用最低的费用最短的时间提供尽可能精确,可靠的信息. 国外状况:据统计,目前,美 在财务会计上占有90%的工作由计算机完成;人事管理中80-100%的信息处理由计算机完成;计划管理是80―90%;在计算机应用发展较快的国家中, 计算机应用于经济管理的占80%;用于科技计算的占8%,用于生产过程控制的占12%;由此可以看出,信息管理是计算机应用的主要领域. 国内状况:由于种种原因,我国的信息资源建设水平远远落后于信息基础设施的建设的水平.长期以来,我国信息资源的开发管理未能与信息资源的增长同步进行.我国有丰富的原始信息资源,但在此基础上再生的二次信息系统和数据库产业的规模和市场占有率,使用率相当低,大量的有价值的信息未能进一步加工成商品使其增值. 我国的计算机应用要比西方国家落后十几年,人事管理等信息系统的开发应用是从1973年开始的,83年以后才开始了大量的实际的开发和研究工作.因此,信息资源的开发和利用已被确立为国民经济信息的核心内容,信息数字化,传输的网络化是缩小发展中国家与发达国家差距的捷径,世界信息化浪潮正以不可阻挡之势席卷全球时,我国要迎头赶上,就必须利用现有的信息基础设施,重点开发和推广应用于各类科技经济等数据库和网络资源服务系统,以便取得巨大的社会效益和经济效益.由于物业管理在社会大生产中占用重要地位,其计算机化在发达国家已达到95%以上,而我国在全国范围内推广计算机在管理中的应用,是在80年代初开始的.起步虽晚,但发展快.特别是微型计算机的出现和普及,为信息处理提供了物美价廉的手段,对于推动我国管理信息处理现代化起到了重要作用. 学生信息管理系统是一个学校不可缺少的部分,它的内容对于学校的管理者来说至关重要,所以学生信息管理系统应该能够为老师提供充足的信息和快捷的查询手段. 但一直以来人们使用传统人工的方式管理学生档案,这种管理方式存在着许多缺点,如:效率低,保密性差,另外时间一长,将产生大量的文件和数据,这对于查找,更新和维护都带来了不少的困难. 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用. 作为计算机应用的一部分,使用计算机对学生信息进行管理,有着手工管理所无法比拟的优点.例如:检索迅速,查找方便,可靠性高,存储量大,保密性好,寿命长,成本低等.这些优点能够极大地提高学生信息管理的效率,也是学校的科学化,正规化管理,与世界接轨的重要条件. 从微观上讲,建立一套学生信息管理系统能够提高办事效率,从而加强了管理的信息化手段.从宏观上讲,顺应了社会的信息化,社会化潮流,缩短了整个社会化大生产的周期.因此,开发这样一套管理软件成为很有必要的事情. 该项目开发的软件为学校学生信息管理系统软件,是鉴于目前学校学生人数剧增,学生信息呈爆炸性增长的前提下,学校对学生信息管理的自动化与准确化的要求日益强烈的背景下构思出来的,该软件设计完成后可用于所有教育单位(包括学校,学院等等)的学生信息的管理..但本系统完全独立开发,力求使系统功能简洁明了,但功能齐全且易于操作. 随着IT技术在学校中的普及,学校必须建立现代化信息管理系统,利用先进的计算机技术,网络技术,建立现代化的网络信息处理系统,实现信息资源共享,提高信息处理能力和速度,及时准确地提供企业所需的各种信息.本系统正是利用这一思想将销售合同管理纳入计算机管理,并设计为多用户,放在计算机网络上运行,模拟学校的管理模式,实现多用户管理,教导主任管理所有信息,班主任管理本班信息. ASP是Microsoft的动态服务器网页(Active Server Pages,ASP),它可以轻松地实现对页面内容的动态控制,为不同的浏览者定制不同的页面内容,易于在网络上实现不同用户的管理 ASP 对关系数据库提供全面的支持,ASP通过ADO方式与数据库进行数据交换,,它支持开放式数据库连接(ODBC) 标准的关系型数据库.其主要优点是易于使用,高速度,低内存支出和占用磁盘空间较少.ADO 支持用于建立基于客户端/服务器和Web 的应用程序的主要功能.结合HTML语言提交数据,使用非常灵活和方便. 开发学生档案管理系统的必要性 开发学生档案管理系统有以下必要性: 摆脱传统的,低效率的手工档案管理,实现高效的,现代的计算机管理档案.满足在目前学校学生人数剧增,学生信息呈爆炸性增长的前提下,学校对学生信息管理的自动化与准确化的要求日益强烈的需求.提供快速,安全,便捷的操作环境.提供完备的统计能力和计算能力.为探索学校的管理现代化,奠定技术基础. 学生档案管理系统的工作分析 首先根据档案管理要求的功能确定系统的层次结构,其原则是高内聚,低耦合,即各种功能尽可能独立,完整,相互之间尽量减少交叉,同时兼顾代码的可复用性. 可以存储历届的学生档案,安全,高效,可以迅速查到所需信息. 能录入,修改,查询,输出学生的档案信息,这些信息包括学生的基本情况,简历情况,学生的家庭信息,联系方式等. 能录入,修改,查询,输出学生的,各学期各门课的成绩信息,并支持按年级,班级等条件的统计,查询,报表输出. 能录入,修改,查询各考试信息,代课教师的信息. 对学生的信息进行分类管理,实现中小学的学生信息管理,根据用户的不同权限分级管理,建立学校教务管理的的数据模型. 它不仅能实现基本的学生管理,还可通过网络实现程序共享,使系统利用率得到最大的发挥,为学校工作提供了更多的方便.利用服务器技术实现班主任负责管理负责班级的数据,教导主任负责管理的学校的学生信息,学生的家长可以远程的查看在校学生的学习情况. 可行性研究 可行性研究探讨解决问题的可能方案,还要对可利用的资源(如计算机硬件,软件,人员等),开发进度做出估计,然后制定出完整的开发任务可行性分析. 可行性与风险分析是密切相关的.如果项目的风险很大,就会降低生产高质量软件的可行性.针对本系统,可行性分析可分为以下几个方面: 管理可行性 在软件开发中的管理策略对软件本身质量影响极大,由于软件是逻辑产品而不是物质产品,其开发进度的"能见度"比较低,软件生产的进度和指标不易标识和度量, 问题不易及时发现和纠正,需求条件的不定因素多且易发生变化,从而使得软件生产的管理不同于一般的工程管理,有它自身的特殊性和复杂性. 管理规范是一套指导性文件,也是一套技术规范,是管理技术人员进行业务活动的行为准则. 管理规范的作用和效果: 提高了软件开发过程的"能见度",将逻辑产品物资化; 促进标准制定与贯彻的统一; 促进了标准化管理与软件系统建设的统一; 促进了标准编制与技术开发的统一; 根据规范可以统一软件开发及运行管理的有关想法,使有关人员的相互理解和协作变得更为容易; 减少了作业和文档的重复,从而提高了开发效率; 可以排除软件研制中的人为因素的影响,保证了软件质量的均匀化,因而易于积累开发经验,促进技术水平的提高; 由于规范对软件的文档内容,格式都做了明确的规定,使软件开发的委托者和软件开发的承当者之间相互理解. 在团队合作上必须有较好的管理,管理的好坏是该项目成败的关键. 本系统是独立开发的管理系统,也应当本着管理规范为出发点,提高软件的能见度,提高软件的可复用性. 在本系统分工中,采用以下方法进行管理: 将软件开发周期分为可行性研究及计划,需求分析,概要设计,详细设计,编码和单元测试(实现),组装测试,运行和维护七个方面; 规定对软件项目的术语,项目描述,任务,技术,方法,工具等方面进行详细说明和标识. 有统一的规范,对于他人参与软件的开发是有利的,这虽是一个毕业设计,但一个开放,规范的代码为他人学习,今后提高软件的开发有利的,统一的管理规范对于开发后期软件的修改,排错是有利的,在开发前提出管理规范是可行的. 2.2 技术可行性 由于本系统需采用ASP编写,必须对开发工具进行考察,以判断该开发工具是否是用于该项目的开发. Microsoft 的动态服务器网页(Active Server Pages,ASP)技术目前已发展到了3.0版.ASP是一套服务器端的脚本运行环境,当用户从浏览器向Web服务器请求.asp 文件时,ASP 脚本开始运行,然后Web 服务器调用ASP,ASP全面读取请求的文件,执行所有的脚本命令,并将标准的Web 页传送给浏览器,而并不包含你所写的脚本命令.利用ASP 易于实现用户远程察看学生的信息,这对于本地远在他乡打工的父母可以通过Internet 在他乡看到学生在校的学习,表现情况. ASP用Database Access组件与数据库进行连接,Database Access 组件通过ActiveX Data Objects (ADO)访问存储在数据库或其他表格化数据结构中的信息.现在, Microsoft对应用程序访问各种各样的数据源所使用的方法是OLEDB,OLEDB 介于ODBC层和应用程序之间.在你的ASP页面中, ADO介于OLEDB之上的"应用程序".你的ADO调用首先被送到OLEDB,接着被送到ODBC层.OLEDB是一套组件对象模型(COM)接口,但它是相当复杂的.这样,你需要一个连接应用程序与OLE DB的桥梁,这就是ADO.而且,它支持开放式数据库连接(ODBC) 标准的关系型数据库.其主要优点是易于使用,高速度,低内存支出和占用磁盘空间较少.ADO 支持用于建立基于客户端/服务器和Web 的应用程序的主要功能. Activex数据对象共有七种独立的对象.下面列出了这七种对象的名字,并简要介绍了它们的功能: 连接对象.代表与一个数据源的唯一对话.例如,你可以用连接对象来打开一个对Microsoft SQL Sever的连接. 记录集对象.代表来自一个数据提供者的一组记录.例如,你可以用一个记录集对象来修改一个SQL Sever表中的记录. 域对象.代表一个记录集中的一个域. 命令对象.代表一个命令.例如,你可以用命令对象执行一个SQL存储过程或有参数的查询. 参数对象.代表SQL存储过程或有参数查询中的一个参数. 属性对象.代表数据提供者的具体属性. 错误对象.代表ADO错误. 综上所述:利用ASP建立动态页面,利用ADO 访问数据库是易于使用,高速度,低内存支出和占用磁盘空间较少的一种方法,对于建立一个学生信息管理系统来说是易于实现的,在技术上是可行的. ASP编程环境简介及数据库编程 ASP 的代码编写和运行 ASP 的代码可以在HTML文件中直接嵌入VBScript脚本.这使你能够扩展HTML,使它不仅仅是一种页面格式语言.带有VBScript脚本的网页在每次下载到浏览器时都可以是不同的,而且可以对用户的操作作出反应.VBScript是Active Sever Pages的缺省语言.你也可以在ASP网页中使用其它脚本语言,如Jscript,Perl,或者REXX(由IBM UK实验室的Michael Cowlishaw所创的一种语言).可以用任何文本编辑软件(纪事本)编写代码,我选用Macromedia Dreamweaver 编写,它的强大的网页编写工具,方便的建设网站,预览网页.编写好的代码以 .ASP 为扩展名,上传于IIS 服务器方可执行. Internet Information Server(IIS)是WINDOWS NT 提供的INTERNET服务的核心. NT的光盘上已经有IIS了, 但是最好从微软的站点www.microsoft.com/iis下载最新的版本.这个站点上,有最新的补丁软件来对你的IIS进行修补.安装过程是一个微软通常所用的向导方式. 你唯一要作的决定就是你要把软件安装在那里,和你要安装那些组件. ASP对于数据库编程 首先需要声明是,这里介绍的数据库知识都是指的关系数据库.所谓关系数据库就是将数据表示为表的集合,通过建立简单表之间的关系来定义结构的一种数据库. 不管表在数据库文件中的物理存储方式如何,它都可以看作一组行和列,与电子表格的行和列类似.在关系数据库中,行被称为记录,而列则被称为字段. 表中每一行是一个记录,它包含了特定对象的所有信息,而每个记录则包含了相同类型和数量的字段. 表 是一种按行与列排列的相关信息的逻辑组,类似于工作单表. 字段 数据库表中的每一列称作一个字段.表是由其包含的各种字段定义的,每个字段描述了它所含有的数据.创建一个数据库时,须为每个字段分配一个数据类型,最大长度和其它属性.字段可包含各种字符,数字甚至图形. 记录 各个客户有关的信息存放在表的行,被称为记录.一般来说,数据库表创建时任意两个记录都不能相同. 键 键就是表中的某个字段(或多个字段),它(们)为快速检索而被索引.键可以是唯一的,也可以是非唯一的,取决于它(们)是否允许重复.唯一键可以指定为主键,用来唯一标识表的每行. 关系 数据库可以由多个表组成,表与表之间可以以不同的方式相互关联. 规范化 数据库设计者的任务就是组织数据,而组织数据的方法,应能消除不必要的重复,并为所有必要信息提供快速查找路径.为了达到这种目标而把信息分离到各种独立的表中去的过程,叫作规范化. 规范化是用许多指定的规则和不同级别的范式来进行规范的复杂过程.该过程的研讨已超出了本文的范围.但是,大多数简单数据库的规范化可以用下面简单的经验规则来完成:包含重复信息的表必须分成独立的几个表来消除重复. 3.2.1 ADO对象的结构 OLE DB是为COM (Component Object Model)而设计的.因此,对于用户而言,采用OLE DB将会比ODBC的存取效率更高,这就是ASP要构建于OLE DB之上的原因. 面向对象的程序设计概念让程序的编写以模块化方式进行.如此会使程序更有效率,也会因为模块化设计的因素而使得维护工作变得比较容易. 数据库的存取将趋于一致性. ADO可以省去不少时间而去学习各种不同的SQL系统. ADO可以将看起来复杂的数据库系统的连接,维护工作变成一件相当容易的事. 图11-1 ADO对象的结构图 3.2.2 ADO的结构 要创建一个Recordset,必须提供详细的用户识别码,连接密码及想要查询的条件,这样才可以顺利连接到相应的数据库去进行数据的存取操作.例如,用户要从数据库服务器上取得数据,首先必须经过用户帐号及密码的确认,确认无误后才可进一步取得和数据库的连接,这种状态会一直持续到应用程序结束为止.假如用户在任何时候想使用Recordset对象连接到数据库,必须遵照前面连接到数据库的操作. 在ADO结构之下,提供了几种对象供程序设计人员应用.它们分别是: Connection对象 Recordset对象 Command对象 Error对象 Connection对象 3.2.2-1 Connection对象 在这个实例执行之后,实际上并未连接到任何数据库系统,只是完成数据库连接前的声明操作,下面主要介绍如何连接到数据库. 3.2.2-2 连接,打开数据库的方法 OBJConn.open ConnectionString, UserID, Password 其中ConnnectionString代表一个数据源(Data Source Name,DSN),UserID代表数据库系统授权连接的用户名,Password代表该用户的连接密码,至于数据源请参考ODBC说明. 假设系统已经安装了MS SQL Server 2000,则可以用以下的范例来连接数据库: 在此范例中, "Trade"为已经创建的数据源. 直接使用ADO与SQL连接 直接与Access MDB连接 程序内容 或是 上述范例的第二种方法使用"server .mappath("pws.mdb")"打开数据库,此方法可将Access数据库直接放在网站的ASP执行目录中存取.因其不使用ODBC就可打开数据库,因此适用于免费网站.此种方法也有助于隐藏ODBC的连接,不易被窃取ODBC的路径信息. 3.2.2-3 Recordset对象的基础 Recordset对象的属性如表11-1所示. 表11-1 Recordest对象的属性说明 属 性 说 明 AbsolutePage 设置当前记录所在位置是第几页 AbsolutePosition 设置记录集对象所在位置是第几条记录 ActiveConnection 设置记录集属于哪一个Connection对象 BOF 检验当前记录集对象所指位置是否在第一条记录之前,若成立,则返回True,否则返回False 属 性 说 明 EOF 检验当前记录集对象所指位置是否在最后一条记录之后.若成立,则返回True,否则返回False CacheSize 设置记录集对象在内存中缓存的记录数 Cousor 设置记录集对象的光标类型,共分为四种,分别为Dynamic,Static,Forward-only,Keyset EditMode 指定当前是否处于编辑模式 LockType 在记录集的当前位置锁定记录 PageSize 设置记录集对象一页所容纳的记录数 PageCount 显示记录集当前的页面总数 Recordset对象的方法如表11-2所示. 表11-2 Recordset对象的方法 方 法 说 明 AddNew 添加一条空白记录 CancelBatch 取消一个批处理更新操作 CancelUpdate 取消已存在的和新的记录所做的任何改变 Close 关闭打开的记录集 GetRows 取得记录集的多条记录 Movefirst 将RS记录集对象的指针移至记录集对象中最顶端的记录 Moveprevious 将RS记录集对象的指针向上移动一条 Movenext 将RS记录集对象的指针向下移动一条 Movelast 将RS记录集对象的指针移至记录集对象中最底端的记录 Open 打开一个记录集 Requery 重新执行查询 Update 向数据库提交对一条记录的改变或添加 Fields.count 显示该记录集对象内所含有的字段数 Recordset对象可以创建一个记录集合,并且将所需的记录从表中取出,同时,使用虚拟表格的方式,每一行为一条记录,每一列则代表一个字段,提供给ASP程序处理,如下所示. 分类编号 产品代号 产品名称 产品简述 55 0001000001 LA-Gear Mouse PAD MODEL No. TMP 0 0312 55 0001000002 LA-Gear Mouse PAD 1 MODEL No. TMP 0 04 Recordset中的记录指针具有游标类型(CursorType).不同的游标类型,可对记录集进行不同的操作,默认值为0,代表记录指针只能向前移动记录集,也可定义成其他值,允许记录指针在记录集中上下移动. 数据源本身具有锁定的能力(LockType).具有这项功能最主要的目的在于避免两个SQL Query操作同时写同一条记录. 当前记录指针的位置:Recordset的MoveFirst方法可以将记录指针移到第一条记录的位置,MoveLast方法可将记录指针移到记录集合的最后一条,MoveNext方法可使指针移到下一条,MovePrevious方法则是移到上一条. Recordset对象在使用前同样需要使用Connection对象建立数据库的连接,其步骤如下所示: (1)创建Connection对象,打开数据源. 首先需要创建一个Connection对象,并保存在OBJConn变量中,然后打开数据源,程序代码如下所示: Set OBJConn = Server.CreateObject("ADODB.Connection") OBJConn.Open strDSN ' 打开数据源 (2)创建Recordset对象. 在取得与数据库的连接之后,接着即可创建Recordset对象,其程序代码如下所示: Set Rs = OBJConn.Execute( SQLstr ) (3)打开Recordset取得数据. 在Recordset对象创建完成之后,即可打开Recordset对象的内容.此Recordset对象的内容可以是表,SQL查询语句,如果是表,其命令如下所示: Rs.Open "产品基本信息", OBJConn, adOpenStatic, adLockReadOnly, adCmdTable 或是 Set Rs = OBJConn.Exceute(CommandText, RecordsAffected, Options) 上述程序代码使用Recordset对象Rs的Open方法打开"产品基本信息"表,第二个参数为Connection对象OBJConn,后面三个参数为定义在文件adovbs.inc中的常数,定义Recordset对象的存取方式. (4)处理Recordset对象的记录. 在打开Recordset对象的记录集合之后,即可开始使用Recordset对象的属性及方法,进行表的操作或取得当前的状态.例如:取得Recordset对象的状态属性State,如下所示: If Rs.State = 1 Then Response.Write("Rs 对象目前处于打开的状态") Else Response.Write("Rs 对象目前处于关闭的状态") End If 上述程序代码是利用"If...Then...Else"语句的方式,检查状态属性State,查看当前Recordset对象的打开状态.如果返回值为"1",则代表状态已打开,返回值为"0"则代表状态已关闭. (5)关闭Recordset对象. Rs.Close Set Rs = Nothing 在执行上述程序代码之后,将会关闭Recordset对象,并且由"Set Rs = Nothing"释放Recordset对象. (6)关闭与数据库的连接. 最后关闭数据库连接,OBJConn.Close(Connection对象的Close方法),如下所示: OBJCConn.Close set OBJConn = Nothing 取得字段名称与内容 Fields对象属于Recordset对象的Fields数据集合,其可以在ASP程序中取得字段的信息.常用属性如表11-4所示: 表11-4 Fields的常用属性 属 性 功 能 简 述 Count 取得当前Recordset对象记录集合中的字段数量 Name 取得当前Recordset对象记录集合中的字段名称 Value 取得当前Recordset对象记录集合中的字段内容 Type 取得当前Recordset对象记录集合中,字段的数据类型 如果需要取得当前Recordset对象记录集合中的字段数量,可以采用如下的程序代码取得: FieldCount = Rs.Fields.Count 取得,移动记录指针 在Recordset对象取得指定的记录之后,通常需要将记录指针移到相应记录上,也就是说,将表的记录指针移到指定的记录上.Recordset对象的相关方法如下所示. 表11-6 方法 方 法 功 能 简 述 MoveFirst 将记录指针移到第一条记录 MoveLast 将记录指针移到最后一条记录 MoveNext 将记录指针移到下一条记录 MovePrevious 将记录指针移到上一条记录 在上述属于Recordset对象的记录浏览方法上,可以根据不同的CursorType值从而支持不同的方法,这些方法如下所示. 表11-7 不同的值支持不同的方法 CursorType参数 可供使用的方法 adForwardOnly 只适用于MoveFirst以及MoveNext方法 adOpenStatic 支持Recordset对象所有的方法 当然,除了记录的浏览方法之外,Recordset对象还提供如表11-8所示的属性. 表11-8 Recordset对象的属性 属 性 功 能 描 述 RecordCount 这是一个只读的属性,用以返回符合查询条件的记录总数 AbsolutePosition 在数值1到RecordCount之间,指定记录指针的位置,如果这个数值为负,则以"adPosUnkonwn"表示,代表没有符合的记录可供读取 上表所示的AbsolutePosition属性可以使用在CursorType的adOpenStatic参数上.对于adForwardOnly参数,它并不支持AbsolutePosition属性. 在Recordset对象的数据集合产生之后,用户就可使用Recordset对象所提供的四种方法,在与查询条件相符的记录中,自由地移动记录指针. ADO对象与数据库的应用 3.3.1 添加记录 如果用户希望在数据库特定表中添加一条记录,则必须使用INSERT语句,以下是INSERT语句的语法: INSERT INTO 表名 [(字段名称1 [, 字段名称2[, ...]])] VALUES (数据1 [, 数据2 [, ...]]) 在使用INSERT添加数据时必须注意以下几点: 表名后面括号内字段名称的排列顺序与VALUES后面括号内数据的排列顺序必须一致.否则进行数据添加时会发生添加失败. 未设置的字段,添加数据时其默认值为Null. 添加的一条数据记录,在建立时就给予其默认值,而值是Null. 3.3.2 记录的更新 在数据库的操作上,可分为"添加","修改","删除"及"读取"等.在了解了"添加"及"读取"操作后,接下来要为用户解说如何更新表中的记录. 上面已经介绍过如何连接数据库并读取数据库中的记录,但是要更新数据库中的记录应如何处理呢 游标类型应设置成Dynamic,更新数据使用UPDATE语句,基本语法如下: UPDATE 表名 SET 字段1=数据1, 字段2=数据2,… WHERE 语句 对于更新操作而言,可分为几个部分. 所有记录全部更新:可以对表所有的记录同时进行内容的更新. 不更新索引键值而只更新其他字段的内容:仅仅更新每一条记录内的非索引字段内容. 更新索引键值:必须连带地更新其他表中相关联的记录内容. 3.3.3 记录的删除 要在表中删除一条记录,必须使用DELETE语句,使用该语句必须特别注意,一旦数据被删除,将无法恢复.如果没有指定Where语句,将删除表中的所有记录.以下是DELETE语句的语法: DELETE FROM 表名 WHERE 语句 需求分析 需求分析是软件开发过程的初始阶段,是一个系统的推理过程,涉及到领域问题及其组成部分,目的在于理解需要什么和必须做什么,并将用户的需求用书面形成表达出来.软件产品的质量,在很大程度上取决于是否进行过系统的需求分析,并是否取得正确,一致和比较完全的需求文档.通过需求分析揭示信息的流程和结构,为软件设计提供基础,通过标识接口细节能提供一个深入的功能说明来描述软件,并确定约束条件和定义软件的有效性. 需求分析是一个渐进的过程,通过开发人员和用户的不断交流,逐步加深对系统功能和性能的认识,并且加以细化,分解软件需求. 编写目的 本需求分析说明书的目的是奠定销售合同管理系统软件开发的基础.需求分析在可行性研究的基础上规定了系统设计统一的,最基本的要求,需求分析的结果是概要设计,详细设计,实现,测试和维护的依据. 针对学生档案管理,如用户登陆,用户管理,用户权限,学生信息管,学生成绩管理几个方面进行分析. 本需求分析说明书的章节划分为编写目的,任务概述,数据描述,功能需求,性能需求,运行需求六大部分. 任务概述 系统开发目标 本系统的开发目标是实现学校管理系统中的学生档案管理,包括学生的信息管理,学生的成绩管理,包括用户的的权限管理,模拟学校档案管理模式,分层,分级管理.实现学生的在校信息在网上查看,从而大大的提高档案管理的效率. 软件需求分析阶段有以下几个目标: ●给出软件系统的数据流程图与数据结构,构造一个完全的系统逻辑模型. ●提出详细的功能说明,确定设计限定条件,规定性能要求. ●密切与用户的联系,使用户明确自己的任务,以便实现上述两项目标. 运行环境 服务器硬件:具有PIV以上的CPU;256M以上内存;40G以上硬盘;显示器与显卡应支持800*600及其以上分辨率. 工作站硬件:具备浏览网页能力的计算机能胜任. 软件:采用Windows NT/2000/XP/2003 作为IIS服务器操作系统/或在互联网上购买虚拟空间,选用虚拟主机;采用VBScript作为开发语言;采用Access表结构;采用Jet作为数据引擎;采用单层结构的数据库应用程序,通过Jet操作服务器上的Access文件; 条件与限制 使用人员应具有Windows系列操作系统的一般操作知识; 班主任和管理员必须有帐号和密码方能进入; 一般操作员具有对学生信息查看的权限; 班主任可以添加,维护,删除所带班级的学生信息和成绩. 管理员除开一般操作员权限和班主任权限外还具有用户帐号维护,班级管理,课程管理等权限. 数据流图(DFD) 数据流程图是描述系统逻辑模型的主要工具,我们采取结构化分析的方法绘制数据流程图,基本思想:自顶向下,由外向里,逐步分解 .数据流程图不但能够反映现行系统中数据处理的逻辑功能,而且能用它来反映将要建立的新系统的逻辑模型,因此数据流程图是系统分析有力的工具,熟练地掌握数据流程图的画法,对系统分析员来说是至关重要的.在数据流程图的绘制过程中应该遵循以下几个原则. 首先确定系统的外部项,系统外部项的确定也就是规定了系统与外部环境的分界线. 在高层数据流程图中一般只画出系统正常运行时的主要输入和输出,对于错误或例外条件所产生的数据流不在高层数据流程图中反映,这些数据流可以在最低层的数据流程图中反映出来. 数据流程图可以与规划中的企业模型相对应,系统各职能域及其相互关系用一级数据流程图表示;对每个职能域的扩展形成的业务过程及相互关系用二级数据流程图表示;对所有业务过程的扩展所形成的业务活动及其相互关系用三级数据流程图表示. 绘制数据流程图一般遵循从左到右,从上到下的原则进行. 数据流程图需要经过反复的修改才能最终形成,因此可以首先画出草图,一旦这些草图最后定稿,就要正式绘制出系统的数据流程图.在绘制数据流程图的过程中要尽量避免线条的交叉,必要时可以重复绘制某些外部项或资料存储. 所有的数据流程图一定要经过仔细地检查以保证其正确性. 顶层图 0层图 1层图 图1 图2
图3 2层图 图1
图2 数据字典 数据词典(data dictionary,简称DD)是有关资料的信息的收集,维护和发布的机制.在结构化分析中,数据词典是对数据流图上的每一个成分给以定义与说明.系统资料词典是对数据流程图中出现的数据流和处理(加工)的进一步补充说明,其内容主要包括三种类型的条目:数据元素条目,数据存储条目和数据流条目.在系统分析中,数据词典起着重要的作用. 数据流条目 数据流名称:学生档案 别名:档案 来源:学生 存储处:学生档案库 组成:编号+学号+姓名+性别+出生年月+出生地+籍贯+家庭住址+监护人1+监护人2+电话+入学时间+入学成绩+奖励情况+备注 数据流名称: 学生成绩 别名: 成绩 来源: 班主任 存储处: 学生成绩库 组成:考试编号+学生学号+课程名称+分数 数据流名称: 用户信息 别名: 无 来源: 用户 存储处: 用户信息库 组成:用户编号+用户名称+用户名称+登录密码+申请时间+用户职务(权限)+负责班级 数据流名称:课程信息 别名: 无 来源: 管理员(教导处) 存储处: 课程信息库 组成:课程编号+课程名称+课程类型+课程描述 数据流名称: 登录信息 别名:无 来源:管理员 去向:用户身份验证 组成: 用户名+密码+权限++用户描述 数据存储条目 数据存储名称:学生档案库 描述:学生的基本信息 主键:学生学号 组成:编号+学号+姓名+性别+出生年月+出生地+籍贯+家庭住址+监护人1+监护人2+电话+入学时间+入学成绩+奖励情况+备注 查询:要求立即查询 数据存储名称:学生成绩库 描述:学生的考试成绩信息 主键:学生学号+课程 组成:考试编号+学生学号+课程名称+分数 查询:要求立即查询 数据存储名称:班级信息库 描述:分班信息 主键:编号 组成:班号+年级+班主任 查询:要求立即查询 数据存储名称:注册用户库 描述:管理系统的用户基本信息 主键:编号 组成:用户信息 查询:要求立即查询 数据项条目 学号=入学年+班级编号+序号 姓名=2{字母}18 ;长度为2到18个字母 年龄=1{数字}3 性别=[男|女] 出生地=10{字符}40 住址=10{字符}40 籍贯=10{字符} 家长姓名=2{字母}18 编号=1{数字}5 班主任=2{字母}18 成绩=1{数字}3(别名:分数) 科目=[语文|英语|数学|…] 年级="1年级",……,"9年级" 班号=1{数字}2 用户名=2{字符}18 密码=6{字符}18 功能需求 系统的功能与性能 通过对学生档案管理系统功能的分析,得出系统的主要功能:用户登陆,学生档案管理,学生成绩管理,用户管理; 用户登陆功能用于验证用户身份,决定用户是否能进入系统,以及今日系统后有什么权限; 用户管理功能提供给管理员以管理用户帐号的能力,管理员在这里可以验证申请成为管理员的用户,以及修改用户的权限;用户需管理员验证后方可访问管理系统. 密码更改功能用于用户更改自己的密码;系统所有用户的密码经过 MD5 算法加密.防止他人窃取. 用户权限分为 教导主任,班主任.教导主任有管理一切的权利,班主任只有管理本班信息的权利.没有注册的用户有察看指定学生的信息. 用户注册模块提供一般访问者注册成为管理员,学校的班主任要管理系统,先要注册,保存于申请用户的临时表中,等待管理员(教导主任)的验证. 班级的管理模块,可以添加当年的班级,设定班级的班主任,班机学生的学号开始与结束.是按班级管理学生的核心. 课程管理是成绩管理的前提,添加成绩级需要根据课程来分类. 学生信息管理模块是系统的核心,它可以添加学生,编辑学生,删除学生的信息,提供多方位的查询的统计. 学生成绩管理模块也是系统的核心,它可以添加学生,编辑学生,删除学生的考试成绩信息,提供多方位的查询的统计. 数据库操作功能需求 (1)可以存储历届的学生档案,安全,高效,可以迅速查到所需信息.能录入,修改,查询,输出学生的档案信息,这些信息包括学生的基本情况,简历情况,学生的家庭信息,联系方式等.支持按班级,住址排序分类察看. (2)能录入,修改,查询,输出学生的,各学期各门课的成绩信息,并支持按年级,班级等条件的统计,查询,报表输出.能录入,修改,查询各考试信息,代课教师的信息.支持按照班级察看.支持按照单科成绩排序. (3)能存储用户的信息,管理员可以编辑用户的类型,修改用户管理权限,删除用户.能存储提出申请的用户信息,能任命正式用户,能删除提出申请的用户. (4)可以存储班级的信息,能修改班级的包括那些学生学号,可以删除班级,添加班级. 4.6 性能需求 4.6.1 数据精确度 成绩数据以"分"为单位,格式为XXX.XX,如99.00. 4.6.2 时间特性 年,月,日的表示形式为:YYYY-MM-DD,取北京时间; 查询响应时间应不超过1.5秒; 更新数据处理时间应不超过2秒. 4.6.3 适应性 数据输入应具有防误操作功能,尽量选择鼠标进行选择操作. 为满足本系统中所涉及数据的多样性 (如含有上下标的#号 ,字母和数字组合的#段 ,有间隔符的日期)及对数据的完整性和有效性的要求,通过对几种类型数据库的比较,特采用MS Access,它支持多种字段类型,并规定了数据的安全性检查及数据的有效性,可满足系统对这些特殊字段的要求. 4.7运行需求 4.7.1 用户界面 本系统要求有一个易于让人接受的界面,在系统界面中,用户可以轻松理解各个功能的使用,并且可以简便地查询,修改,删除,输入命令,并能用清晰易懂的列表形成得到的需要的数据.而且本系统还要求有使用手册,即使第一次使用,也可以轻松掌握. 用户界面风格的设计以一般操作员易懂,方面操作为准,原则上应以微软公司的Windows界面风格一致,同时也照顾到传统的表格形式. 其界面设计如下(图4-8): 图4-8 主界面图 教导主任界面(图4-9) 图4-9 教导主任界面 班主任界面(图4-10) (图4-10) 4.7.2 硬件接口 由于本系统为运行于ASP服务器,对服务器要求相对较高.可以搭建在一个局域网系统上,也可以搭建在Internet上 4.7.3 软件接口 学生档案管理系统搭建在ASP服务器上,服务器采用Windows2003的IIS技术,与服务器相连接的客户机可以访问,任何操作系统都可以浏览,采用Jet作为数据引擎. 4.8 其它需求 4.8.1 安全保密性 安全保密性阐述了与系统安全性,完整性或与私人问题相关的需求,这些问题将会影响到产品的使用和产品所创建或使用的数据的保护.定义用户身份确认或授权需求.明确产品必须满足的安全性或保密性策略. 为了防止非法人员进入系统,首先要确认用户身份.确认用户身份有许多方式,如口令系统,智能卡,验证密码和生物统计学等.但对于访问系统而言,由于口令系统比其他方式成本低,易实现,使用简便,因此口令系统是最经常使用的结构. 为正确和安全使用该结构,口令系统应满足下列要求: 系统不应提供一个结构,使单独存储的口令入口通过它被多种用户标识分享.系统决不能促成多个用户共用一个口令; 系统应允许用户选择与其他用户识别符相同的口令 ,系统不应提供一个口令已被其它用户使用的提示 系统应以单向密码方式存储口令.已加密的口令,不能被非特权用户访问,未加密的口令,不能被除本人以外的其他用户(包括系统管理员)访问; 系统应自动地掩盖数据输入设备中口令的明文形式; 系统在常规操作时不应允许口令的默认值为"空"口令; 系统应提供允许口令被用户更改的结构 系统应提供一种方法;保证用户输入的口令的复杂性;例如口令应符合系统指定的最低长度要求. 本系统要求为每一位用户都设立密码.没有密码只能凭输入正确的学生姓名和学号查看学生的信息,身份得到验证后方可进行相应的操作. 密码要求有两种:班主任和教导主任;并且对这两种身份设置相应权限. 仅从使用系统的角度考虑系统的安全保密性还不够,例如熟悉计算机的人员运用数据库管理系统的命令打开库文件就可以直接读到库中数据包括口令字.为了使数据库中数据安全保密;系统对一些重要的数据采取加密技术,使得这些数据不能被取到. 对数据库加密,下列要求: 加密系统应该是不可破的; 数据加密后 ,存储空间不能有明显的增加 为了维护系统的原有性能,加密和解密的速度应该足够快,不能让用户使用时有明显的感觉,对数据库来说,解密速度尤为重要,因为这种操作很频繁; 4.8.2 可维护性 源程序结构要明了,注释要详细,清楚,一般软件开发人员要能都看懂,易于维护. 4.8.3 将来可能提出的要求 设计合理的结构,为将来学校的信息化管理奠定基础,以后继续编写义务教育档案管理奠定基础. 所有的代码都是开放的源代码,任何学校可以根据自己的需要继续编写,改写.这对此系统的发展是有利的. 概要设计 在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,使每一部分完成简单的功能且各个部分之间又保持一定的联系.在设计阶段,基于这个功能的层次结构把各个部分进一步细化组合起来成为系统. 概要设计阐述了对程序系统的设计考虑,包括程序系统的基本处理流程,程序系统的组织结构,模块划分,功能分配,接口设计,运行设计,数据结构设计和安全性设计等,为程序的详细设计奠定基础. 5.1 引言 概要设计阶段是用比较抽象概括的方式确定系统如何完成预定任务,确定系统的物理配置方案,进而确定组成系统的每个程序的结构.首先,进行系统设计,从数据流图出发设想完成系统功能的若干种合理的物理方案.经过仔细分析,筛选并和用和共同选定一个最佳方案,然后,则进行软件结构设计,确定软件由哪些模块组成以及这些模块之间的动态调用关系. 5.1.1 编写目的 用图文格式较具体地说明系统如何完成预定的任务,即确定系统的物理配置方案并且进而确定组成系统的每个程序的结构,为详细设计奠定基础; 为评价软件质量提供重要的依据; 其读者对象为:软件开发人员,测试人员,将来的维护人员; 5.2 设计方案选择 5.2.1 三层结构模型(图5-1) 这种模型的系统,处理分布在三层或多层中,每层各有不同的功能,分别描述如下: 表达服务(客户机层) 客户机层处理与应用程序交互的所有用户,可以是基于浏览器的ASP应用程序页面中. 业务服务(中间层) 应用程序的业务层实现业务规则,处理数据和管理事务.逻辑从客户机代码移到中间层组件.COM+/MTS就是中间层应用程序服务器,用于管理COM组件. 数据服务(数据源层) 数据源层表示一个或几个数据库.通常,这个层是关系数据库层,也可以大型机,INTERNET或电子报表中存放的数据. 分析: 优点:应用程序更可扩展,可以在需要时增加中间服务器功能或增加服务器.基于组件开发,可以复用软件.组件集中在应用服务器上,业务规则或数据访问代码改变时只要在一个地方进行,并对客户机是透明的.可以进行企业开发,开发人员可以集中考虑特定功能区. 缺点:开发多层需要更多的时间,复用对象的设计和编码需要更多时间,分布式应用程序的长期好处与启动时间和费用需要平衡.客户机对组件进行进程外调用,因此有一些性能开销.在C/S中,只在客户机与数据源之间进行通信,而在三层模型中,还要一层,需要另一组调用.因而,三层模型的系统是属于更高级别的分布式系统.比客户机/服务器需要更大的开销,更高的技术,实现起来有一定的难度.它属于最高成本的方案,属于高层次人员开发的选择. 5.2.2 客户机/服务器模型(图5-2) 网络的进步和PC与服务器使用率的提高,使分布式计算机模型――客户机/服务器模型应用的越来越广泛.在客户机/服务器模型中,应用程序的处理发生在客户机和服务器中,通常是两层应用程序,通常多个用户和服务器连成网络,客户机上存放应用程序,远程服务器上运行数据库引擎,客户应用程序想数据库发出请求,而数据库又把数据返回客户机.C/S模型,把处理工作从中央计算机卸载到客户计算机上.因而当C/S中增加用户数时,文件服务器性能不会迅速下降. 分析: 用这种办法实现的系统,显然能够更加全面,完善的实现成绩的动态,随机查询,有效的保证了数据安全性,完整性.而且不同地点的用户均可以访问统一数据,而单机上的负荷又得到减少.由此得到的外贸业务管理系统显然最能符合当今网络一体化的需求,但这种模型仍有缺点.缺乏伸缩性,即应用程序适应需求增加的能力; 同时每个客户机保持与数据库连接,占用服务器资源;没有代码复用性;没有中间层处理事务和安全性. 5.2.3 结论 从系统的开发时间上考虑,客户机与服务器模型易于实现. 从系统的同时访问的人数来考量,学生档案管理系统同时访问量不会太高.服务器有能力胜任档案的管理. 选择这个模式,服务器可以对局域网开放,也可以对互联网开放,实现远在他乡的学生家长也可以远程查看自己学生的信息. 从成本上考量,学校可以在已经组建的学校局域网中加一个服务器,来实现数据的管理.也可以在互联网上购买空间,成本低. 安装相当简单,只需要在服务器上一次安装好,而对于客户机不做任何改动.对于以后的升级,只在服务器上改动就可. 数据相对安全,安装好防毒软件和防火墙,有一人专门维护,数据相当安全. 5.3 功能要求 用户登陆功能要求 验证用户身份,决定用户是否能进入系统,用户具备什么权限. 用户管理功能要求 修改用户的权限,验证注册用户,删除用户, 密码更改功能要求 更改自己的密码,系统所有用户的密码经过 MD5 算法加密.防止他人窃取. 用户注册模块要求 一般访问者注册成为管理员,等待管理员(教导主任)的验证. 班级的管理模块要求 添加当年的班级,设定班级的班主任,班机学生的学号开始与结束., 课程管理模块要求 设定课程名称. 学生信息管理模块要求 添加,编辑,删除学生的信息.按学号排序,学生住址查看,按学生班级查看,查看单个学生成绩. 学生成绩管理模块要求 它可以添加,编辑,删除学生的考试成绩信息.按班级查看学生成绩,按班级内的单科排序查看成绩. 5.4 系统总体设计 5.4.1 模块设计 1,总的模块设计 运行特点: 注:进入系统主模块,可以使用系统提供的部分功能,要管理档案,需要先登陆,在登陆模块,系统将根据用户名和密码判断相应的身份,确定是教导主任或教师. 2,系统主模块工作流程 (index.asp)及接口设计 3,管理模块设计(admin/admin.asp) 从程序的结构中可以看出,学生的档案输入输出功能是由学生管理系统进行的.学生的成绩输入输出功能是由学生成绩系统进行的.课程的信息输入输出是由课程管理系统进行的,而班级的信息流动则是班级管理系统进行的. 在我的设计中,它们都被编写在"Admin.asp" 中. 5.5 接口设计 5.5.1 用户界面 软件界面由菜单和主窗口组成,现分别设计如下: 页面设计原则 页面宽度设计为780像素,使用统一的页面头文件,"head.asp"和"foot.asp". 系统的各种内外部接口是通过借助数据库开发软件来实现的,是完全在数据库内部操作的. 5.6 数据库设计 数据库设计的基本任务是根据一个单位的信息需求,处理需求和数据库的支撑环境(包括DBMS,操作系统和硬件),设计出数据模式(包括外模式,概念模式,逻辑模式和内模式)以及典型的应用程序. 5.6.1 数据库概念设计 学生档案信息E-R图. 班级信息E-R 图 管理员信息E-R 图 数据库表设计. 学生信息表 form stu_ifo. 字段 Stu_id Stu_number Stu_name Stu_sex 属性 (自动编号) Integer String(20) String(2) 备注 系统的自动编号 学生学号 学生的姓名 性别 字段 Stu_birthday homeplace native_place Stu_address 属性 Date Char(20) Char(20) Char(50) 备注 出生年月 出生地 籍贯 家庭住址 字段 Stu_guardian1 Stu_guardian2 Phone Create_time 属性 Char(20) Char(20) Char(15) date 备注 学生监护人1 学生监护人2 联系电话 入学时间 字段 Create_course hortation Stu_ifo 属性 Char(100) Char(200) Char(200) 备注 入学成绩 奖惩情况 备注 学生成绩表 form str_scoring. 字段 Stu_id Stu_number Stu_name Test_time 属性 (自动编号) Integer Char(20) date 备注 系统的自动编号 学生唯一的学号 学生的姓名 考试时间 字段 Subject1 Subject2 Subject3 Subject4 属性 Integer Integer Integer Integer 备注 考试科目 考试科目 考试科目 考试科目 字段 Subject5 Subject6 Subject7 Subject8 属性 Integer Integer Integer Integer 备注 考试科目 考试科目 考试科目 考试科目 考试信息设定表 form test_ifo. 字段 Stu_id Test_Subbject Test_name Test_time 属性 (自动编号) Char(10) Char(10) date 备注 系统的自动编号 成绩代号 考试的科目 考试时间 字段 Tacher 属性 Char(10) 备注 代课教师 *成绩代号:学生成绩表中的Subject1, Subject2, Subject3 ,Subject4 ……. *考试的科目:指的语文,数学,英语 ……. 管理系统的用户的数据表 form user_ifo. 字段 User_id User_apellation User_pass User_type 属性 (自动编号) Char(20) Char(20) Char(10) 备注 系统的自动编号 登陆名称 登录密码 用户类型 字段 User_name User_job User_class User_CTime 属性 Char(20) Char(20) Char(20) Data 备注 用户姓名 用户的职务 负责班级 创建时间 *用户类型:指admin(管理员),director(教导主任),teacher(教师). 待验证的用户临时表 form User_temp. 字段 User_id User_apellation User_pass User_CTime 属性 (自动编号) Char(20) Char(20) Data 备注 系统的自动编号 登陆名称 登录密码 申请时间 字段 User_name User_job User_class 属性 Char(20) Char(20) Char(20) 备注 用户姓名 用户的职务 负责班级 其它注册用户 form User_other. 字段 User_id User_apellation User_pass User_CTime 属性 (自动编号) Char(20) Char(20) Data 备注 系统的自动编号 登陆名称 登录密码 申请时间 字段 User_name 属性 Char(20) 备注 用户姓名 5.6.2 数据库逻辑设计 数据库逻辑设计的任务是根据数据库概念设计的结果,设计数据库的概念模式和外模式,这是数据库结构设计的重要阶段.外模式和概念模式是用户所看到的数据库,是应用程序访问数据库的接口. 设计逻辑结构分为以下步骤: 将概念结构转化为一般的关系模型; 将转换来的关系模型向特定DBMS支持下的数据模型转换; 对数据模型进行优化; 5.6.3 数据库物理设计 数据库物理设计的任务是选择合适的存储结构和存取路径,也就是数据库设计的内模式.内模式和逻辑模式不一样,它不直接面向用户,一般的用户也不一定,也不需要了解内模式的设计细节. 其主要涉及目标如下: 提高数据库的性能,特别是满足主要应用的性能要求; 有效的利用存储空间; 数据库的性能是用户经常关切的问题之一.在前面的模式在设计下,侧重在模式的合理性,而较少注意数据库的性能问题.针对本系统的特性,就改善数据库性能的调整进行分析: 减少连接运算; 连接是开销很大的运算.连接的关系越多,参与连接的关系越大,开销也就越大.对于一些常用的,性能要求比较高的数据库查询,最好是一元操作. 减少关系的大小与数量; 关系的大小对查询的速度影响很大.有时为了提高查询速度,把一个大关系分成多个小关系是有利的. 节省存储空间的调整 节省数据库的存储空间也是数据库设计的目标之一.这就需要节省每个属性所占的空间,采用假属性减少重复数据所占的空间. 5.7. 运行设计 1. 运行模块的组合 具体软件的运行在IIS服务器上,有多页面,各个页面在软件运行过程中能较好的利用ASP 的对象Response和 Request 等对象交换信息,处理数据. 2. 运行控制 软件运行时有较友好的界面,基本能够实现用户的数据处理要求. 3. 运行时间 系统的运行时间基本可以达到用户所提出的要求. 5.8 出错处理设计 1. 出错输出信息 在用户使用错误的数据或访问没有权限的数据后,系统给出提示:"对不起,你非法使用数据,没有权限!"而且用户的密码管理可以允许用户修改自己的密码,不允许用户的匿名登录管理页面. 2. 出错处理对策 由于数据在数据库中已经有备份,故在系统出错后可以依靠数据库的恢复功能,并且依靠日志文件使系统再启动,就算系统崩溃用户数据也不会丢失或遭到破坏.但有可能占用更多的数据存储空间,权衡措施由用户来决定. 5.9 安全保密设计 系统的系统用户管理保证了只有授权的用户才能进入系统进行数据操作,而且对一些重要数据,系统设置为只有更高权限的人员方可读取或是操作.系统安全保密性较高.密码经过编码,即使打开了数据库密码也不会泄露. 5.10 维护设计 由于系统较小没有外加维护模块,因为维护工作比较简单,仅靠数据库的一些基本维护措施即可. 系统实现 详细设计阶段主要是对分系统(或模块)进行详细设计.是将系统总体设计中划分的各分系统,再自顶向下的划分个子系统及模块.详细设计各子系统及模块的内部和外部接口关系,直到每个小模块为一个能够独立编程的单元为止. 引言 6.1.1 编写目的: 用于文档的形式具体地说明系统如何完成预定的任务,对于概要设计进行详细说明,着重描述每个模块是如何实现的.并给出测试模块的主要测试要求. 其读者对象为:软件开发人员,测试人员,维护人员. 关键模块设计 6.2.1数据库的连接 "conn.asp" 建立数据库连接, /school/data/school.mdb 为数据库文件,为了安全,可以将school.mdb命名为以".asp"为扩展名的文件. 6.2.2 网页头的定义 '载入数据库设置 '载入密码加密设置 6.2.3普通用户查询模块 6.2.3.1实现原理: 通过包含"conn.asp"与数据库建立连接,利用ADO方式连接数据库实现快书查询,支持输入学号方式快速查询. 6.2.3.2界面设计: 查询界面 没有记录界面 找到记录界面 6.2.3.3主要源程序: if Request.Form("FindSTu")"" then '查询学号接受表单的数据 Stu_number=Request.Form("Stu_number") if Stu_number="" then response.write(" 错误:你没有填写学号,学号必须填写! ") else set rs=server.createobject("adodb.recordset") sql="select * from stu_ifo where Stu_number='"&Stu_number&"'" rs.open sql,conn,1,3 If rs.EOF AND rs.BOF Then Response.Write(" 错误:没有找到此学号!"&Stu_number&"") else Stu_id=rs("Stu_id") Stu_number=rs("Stu_number") Stu_name=rs("Stu_name") Stu_sex=rs("Stu_sex") Stu_birthday=rs("Stu_birthday") homeplace=rs("homeplace") native_place=rs("native_place") Stu_address=rs("Stu_address") Stu_guardian1=rs("Stu_guardian1") Stu_guardian2=rs("Stu_guardian2") Phone=rs("Phone") Create_time=rs("Create_time") Create_course=rs("Create_course") hortation=rs("hortation") Stu_ifo=rs("Stu_ifo") %>
查看学生信息
学号:
姓名:
性别:
出生年月:
籍贯:
出生地:
地址:
监护人1:
监护人2:
联系电话:
入学时间:
入学成绩:
奖惩情况:
备注信息:
学生成绩
类别 学号
<% temptype="" rs.close set rs=server.createobject("adodb.recordset") if session("ON_oder")"" then sql="select * from testform where stu_number ='"&stu_number&"'" elseif session("ON_oder")="" then sql="select * from testform where stu_number ='"&stu_number&"' order by stu_number asc" end if rs.open sql,conn,1,3 if not rs.eof then do while not rs.eof %>
该类还没有数据
<% end if 6.2.4 用户登录模块 6.2.4.1实现原理: 利用MD5方式加密密码. 密码加密函数定义 md5.asp (源自互联网) 函数的使用方法:变量=MD5(sMessage,stype) 其中:sMessage 要加密的信息,stype 为加密模式. 采用验证码程序,防止程序注入.用户登录的信息保存在session变量中. 6.2.4.2界面设计: 6.2.4.3登录信息处理 包含于 admin/index.asp admin/index.asp 的主要功能是用户输入登陆信息,提交后系统验证,成功后利用SESSION 对象保存用户的信息. dim username,userpass,usercode username=replace(trim(request("user_name")),"'","") '接受表单提交的变量 userpass =replace(trim(request("user_pass")),"'","") userpass=md5(userpass,32) usercode=replace(trim(request("user_code")),"'","") if username="" or userpass="" or usercode= "" then response.write(" 错误:用户名,密码,和验证码都必须填写! ") elseif usercodeCStr(session("GetCode")) then response.write(" 错误:填写验证码填写和系统产生的验证码不一致! ") else set rs=server.createobject("adodb.recordset") sql="select * from user_ifo where user_pass='"&userpass&"' and User_apellation='"&username&"'" rs.open sql,conn,1,3 If rs.EOF AND rs.BOF Then Response.Write(" 没有用户"&username&"或者密码错误!") else session("username")=rs("User_apellation") '保存用户登陆信息 session("userpass")=rs("User_pass") 6.2.5 管理员模块 admin/admin.asp 6.2.5.1 实现原理 通过包含"conn.asp",利用ADO方式与数据库连接,采用if elseif endif 方式识别管理员传递的request.QueryString变量和request.form 变量实现不同的命令控制,通过Session("usertype")识别用户的身份. 下面是ADO 关键技术: 添加学生信息的代码 Conn.ExeCute("INSERT INTOstu_ifo(Stu_number,Stu_name,Stu_sex,Stu_birthday,homeplace,native_place,Stu_address, Stu_guardian1,Stu_guardian2,Phone,Create_time,Create_course,hortation,Stu_ifo)VALUES('"&Stu_number&"','"&Stu_name&"','"&Stu_sex&"','"&Stu_birthday&"','"&homeplace&"', '"&native_place&"','"&Stu_address&"','"&Stu_guardian1&"','"&Stu_guardian2&"', '"&Phone&"','"&Create_time&"','"&Create_course&"','"&hortation&"','"&Stu_ifo&"')") 修改学生信息的代码 Conn.ExeCute("UPDATE stu_ifo SET Stu_number='"&Stu_number&"',Stu_name='"&Stu_name&"',Stu_sex='"&Stu_sex&"', Stu_birthday='"&Stu_birthday&"',homeplace='"&homeplace&"',native_place='" &native_place&"',Stu_address='"&Stu_address&"',Stu_guardian1='"&Stu_ guardian1&"',Stu_guardian2='"&Stu_guardian2&"',Phone='"&Phone&"',Create_time=' "&Create_time&"',Create_course='"&Create_course&"',hortation='"&hortation&"' ,Stu_ifo='"&Stu_ifo&"' WHERE stu_id="&stu_id&"") 删除ID=stu_ID的代码 conn.ExeCute("DELETE * FROM stu_ifo WHERE stu_ID =("& stu_id &")") 查找学号=变量Stu_number的代码 set rs=server.createobject("adodb.recordset") sql="select * from stu_ifo where Stu_number='"&Stu_number&"'" 排序 sql="select * from testform where testtime='"&request.QueryString("testtype")&"'and stu_number >='"&Request.QueryString("numberstar")&"' and stu_number <='"&Request.QueryString("numberend")&"' order by left(stu_number,2) asc,"&session("ON_oder")&" DESC" 其中left(stu_number,2)为学号的前两位session("ON_oder")为排序科目字段名 6.2.5.2界面设计 1,管理员主界面 2,添加学生信息界面 3,编辑学生信息 4,查看学生成绩 5,添加考试成绩 6,删除学生信息 7,查看学生成绩 8,考试科目设定 9,班级的设定界面 10,查看申请用户的界面 11,用户权限设定界面 12,修改密码界面 13,修改班级信息届面 6.2.5.3 部分主要源程序 此程序有2200行集成了学生基本信息管理,学生成绩管理,课程,班级管理和用户管理.在下面主要介绍了学生基本信息管理的主要模块.(详细的文件是 admin\admin.asp ) 添加学生档案代码 Stu_number=Request.Form("Stu_number") Stu_name=Request.Form("Stu_name") Stu_sex=Request.Form("Stu_sex") Stu_birthday=Request.Form("Stu_birthday") homeplace=Request.Form("homeplace") native_place=Request.Form("native_place") Stu_address=Request.Form("Stu_address") Stu_guardian1=Request.Form("Stu_guardian1") Stu_guardian2=Request.Form("Stu_guardian2") Phone=Request.Form("Phone") Create_time=Request.Form("Create_time") Create_course=Request.Form("Create_course") hortation=Request.Form("hortation") Stu_ifo=Request.Form("Stu_ifo") if Stu_number="" then response.write(" 错误:你没有填写学号,学号必须填写! ") response.write("单击返回 ") elseif Stu_name="" then response.write(" 错误:你没有填写姓名,姓名必须填写! ") response.write("单击返回 ") elseif Stu_birthday="" then response.write(" 错误:你没有填写出生年月! ") response.write("单击返回 ") elseif homeplace="" then response.write(" 错误:你没有填写出生地! ") response.write("单击返回 ") elseif native_place="" then response.write(" 错误:你没有填写籍贯! ") response.write("单击返回 ") elseif Stu_address="" then response.write(" 错误:你没有填写住址! ") response.write("单击返回 ") elseif Stu_guardian1="" and Stu_guardian2="" then response.write(" 错误:你没有填写监护人! ") response.write("单击返回 ") else set rs=server.createobject("adodb.recordset") sql="select * from stu_ifo where Stu_number='"&Stu_number&"'" rs.open sql,conn,1,3 If rs.EOF AND rs.BOF Then Conn.ExeCute("INSERT INTO stu_ifo(Stu_number,Stu_name,Stu_sex,Stu_birthday,homeplace,native_place, Stu_address,Stu_guardian1,Stu_guardian2,Phone,Create_time, Create_course,hortation,Stu_ifo) VALUES ('"&Stu_number&"','"&Stu_name&"','"&Stu_sex&"','"&Stu_birthday&"', '"&homeplace&"','"&native_place&"','"&Stu_address&"','"&Stu _guardian1&"','"&Stu_guardian2&"','"&Phone&"','"&Create_time&"' ,'"&Create_course&"','"&hortation&"','"&Stu_ifo&"')") response.write("成功的加入一条记录! ") response.write("单击返回 ") else Response.Write(" 错误:有重复的学号!") response.write("单击返回 ") end if rs.close end if 查找学号代码 Stu_number=Request.Form("Stu_number") if Stu_number="" then response.write(" 错误:你没有填写学号,学号必须填写! ") response.write("单击返回 ") else set rs=server.createobject("adodb.recordset") sql="select * from stu_ifo where Stu_number='"&Stu_number&"'" rs.open sql,conn,1,3 If rs.EOF AND rs.BOF Then Response.Write(" 错误:没有找到此学号!"&Stu_number&"") response.write("单击返回 ") else Response.Redirect("admin.asp const_type=edituser&number="&Stu_number) end if rs.close end if 修改学生信息代码
|