摘要 I 作者通过对计算机语言的认识及系统分析,制作出一个功能强大,界面友善,实用性强的基于Web 的学生成绩管理系统的网站-查询全班同学成绩、查询个人全部成绩等模块的实现。 该系统主要是用B/S 三层模型结构,利用ASP 开发语言与SQL Server 2000 数据库相结合来完成开发。其中多处难点及特殊问题作者均巧妙解决。例如:由于ASP 的SUBMIT 是发送功能,因此当数据发送到本网页时,每按下一次便重读一次网面。为保证部分变量不被重读,作者采用媒介网页的方法,即制作专业初始化变量的网页。 :ASP、Dreamweaver MX、字段、数据库、查询东华理工学院毕业论文(设计) 2 Abstract This system is used to search the student's grade or the whole students' grade.This system is based on web,it has powerful fuction and humanised interface design,so that makes this system easier to use and very practicability. This operation system is based on three-layer B/S model , and combines ASP computer language with SQL Server 2000 database . In the process of programming, producer uses many skillful ways to solve much problem and special functions. For instance, because the function of SUBMIT is transport data to Web in asp, it will view Web once time after press the "SUBMIT". Writer use the Web of transporing data fuction to solve the part of Web review. Keywords: ASP、Dreamweaver MX、Word segment、database、 search 目 录 I 第1 章 绪论 ............................................................ 3 1.1 背景 ............................................................ 3 1.2 目的 ............................................................ 3 1.3 前人工作 ........................................................ 3 第2 章 相关技术介绍 ............................................. 4 2.1 ASP 语言 ........................................................ 4 2.1.1 ASP 语言 .................................................. 4 (1)脚本和ASP .................................................... 4 2.1.2 ASP 编程脚本语(VBScript) .................................. 5 2.1.3 ASP 的工作原理 ............................................. 5 2.1.4 ASP 内置对象及其使用 ....................................... 6 2.1.5 ADO 数据访问组件 ........................................... 7 2.2 SQL Server2000 数据库 ........................................... 7 完全的Web 支持 .................................................. 8 高度的可伸缩性和可靠性 .......................................... 8 对数据库的操作 .................................................. 8 2.3 网页设计工具Dreamweaver MX 的使用 .............................. 8 . Dreamweaver MX 功能简介 ...................................... 8 2.4 构建WEB 应用程序的开发环境 ...................................... 9 第3 章 系统整体设计与分析 ............................................. 10 3.1 系统总的功能模块: ............................................. 10 3.2 对各功能模块进行说明: ......................................... 11 3.2.1 登录界面: ................................................ 11 3.2.2 普通用户界面: ............................................ 11 3.2.3 查询全班同学成绩界面: .................................... 11 3.2.4 查询个人全部成绩界面: .................................... 11 东华理工学院毕业论文(设计) II 第4 章 数据库总体设计 ................................................ 12 第5 章 系统各功能模块的详细设计与实现 ................................ 16 5.1 普通用户界面 ................................................... 16 5.1.1 基本功能: ............................................... 17 5.1.2 特殊问题解决方法 ......................................... 17 5.2 查询全班成绩界面 ............................................... 18 5.2.1 基本功能: ............................................... 18 5.2.2 实现的具体方法: ......................................... 18 5.2.3 特殊问题解决方法 ......................................... 21 5.3 查询个人全部成绩界面 ........................................... 26 5.3.1 基本功能: ............................................... 27 第6 章 结束语 ......................................................... 30 致 谢 ................................................................ 31 参考文献 .............................................................. 32 第1 章 绪论 3 第1 章 绪论 1.1 背景 基于 Web 的学分制系统网站主要是用 B/S 三层模型结构,利用 ASP 开发语言与 SQL Server 2000 数据库相结合来完成开发。 网页的制作经历了从静态的文件到动态的展现过程。在近年来电子商务风起云涌,热潮不断的情况下,网络应用系统的开发除了要求动态、稳定与执行效能之外,与数据库的结合更是不可缺少的。ASP 便是在这个环境下孕育而生并茁壮成长的。ASP 是 Microsoft 的一套服务器端的命令(Script)开发环境。它利用了特殊的符号()来区分HTML 与必须经过服务器翻译才送往客户端的命令,如此组合成一个动态并能存取服务器端数据库的网页。除此之外,还可用ASP 结合HTML 页面、指令命令和COM 组件,来建立交互式Web 网页或功能强大的Web 应用程序,并且所有这些都可以轻易地开发和修改。对于ASP 语法与设计的学习,如果已经有一定程序设计的基础,并熟悉Script 语法,例如:Microsoft VBScript 或Microsoft JScript,则其过程几乎没有什么困难。 1.2 目的 现在,全国各所大学已经向学分制教学转化。适应学分制教学的学分制系统已成为广大高等院校迫切需求的数据库管理系统。基于Web 的学分制系统网站不但可以方便管理员管理学生学分信息及各门课程成绩,还可以方便学生查询自己所得学分、学科成绩及是否已达到毕业和得到学位要求。因此,该系统实用性强,需求面广。 1.3 前人工作 我们东华理工学院网站已经有了一个学生成绩查询系统,但此系统过于粗糙,界面不漂亮、不能提供足够的信息、程序时常出错。所以,需要制作一个界面漂亮友好的,能够给学生提供关于课程与学分的所有信息的,程序不能出错的,同时可以给管理员一个友好的管理操作界面的学生成绩管理系统。 东华理工学院毕业论文(设计) 4 2 2.1 ASP 语言 2.1.1 ASP 语言 (1)脚本和ASP 脚本语言是介于 HTML 和 Java、C++ 和 Visual Basic 之类的编程语言之间的语言。 (2)ASP 概念 Microsoft Active Server Pages 即我们所称的ASP。是微软开发的一套服务器端脚本环境,它包含三个方面含义: (a)Active:ASP使用了微软的ActiveX 技术。ActiveX(COM)技术是现在Microsoft 软件的重要基础。 (b)Server:ASP 运行在服务器端。这样就不必担心浏览器是否支持 ASP 所使用的编程语言。 (c)Pages:ASP 返回标准的HTML 页面,可以正常地在常用的浏览器中显示。 (3)Active Server Pages 所独具的一些特点: (a)使用VBScript 、JScript 等简单易懂的脚本语言,结合HTML 代码,即可快速完成网站的应用程序。 (b)无须compile 编译,容易编写,可在服务器端直接执行。 (c)使用普通的文本编辑器,如Windows 的记事本,即可进行编辑设计。 (d)与浏览器无关(Browser Independence),用户端只要使用可执行HTML 码的浏览器,即可浏览Active Server Pages 所设计的网页内容。Active Server Pages 所使用的脚本语言(VBScript 、Jscript)均在WEB 服务器端执行,用户端的浏览器不需要能够执行这些脚本语言。 (e)Active Server Pages 能与任何ActiveX scripting 语言相容。除了可使用 VBScript 或JScript 语言来设计外,还通过plug-in 的方式。 第2 章 相关技术介绍 5 (f)Active Server Pages 的源程序,不会被传到客户浏览器,因而可以避免所写的源程序被他人剽窃,也提高了程序的安全性。 (g)可使用服务器端的脚本来产生客户端的脚本。 (h)物件导向(Object-oriented)。 (i)ActiveX Server Components(ActiveX 服务器元件)具有无限可扩充性。 2.1.2 ASP 编程脚本语(VBScript) Microsoft Visual Basic Scripting Edition 是程序开发语言Visual Basic 家族的最新成员,它将灵活的Script 应用于更广泛的领域,包括Microsoft Internet Explorer 中的 Web 客户机 Script 和 Microsoft Internet Information Server 中的 Web 服务器 Script。 VBScript 只有一种 Variant 的数据类型。Variant 是一种特殊的数据类型,它可以随着使用方法的不同而包含不同的信息。因为Variant 是VBScript 中唯一的数据类型,所以它也是VBScript 中所有函数返回数据的唯一类型。即便是在这么简单的结构中,Variant 同样可以包含数字或字符串的信息。当使用一个看起来像数字的数据时,Variant 就会假设它是数字,同时采取适当的处理。同样,如果使用的数据只能是字符串数据时,Variant 就会把它当成字符串。除了数值或字符串的分别外, Variant 还可以进一步区分数值数据的性质。比如,可以让一个数值代表日期或时间,当它和其他日期或时间一起做运算时结果都是以日期或时间表示。同时还可以使用各种大小不同的数据类型,如布尔值,浮点数,这些可以包含在Variant 中的不同种类的数值称为子类型。一般情况下,用户都可以直接把想用的类型放到 Variant 中, Variant 会以最适当的方式来处理其中所包含的数据。 2.1.3 ASP 的工作原理 在 IIS 支持静态 HTML 主页的前提下,Active Server Pages 可以使 IIS 为动态内容服务,它可以根据用户的要求在 WEB 服务器上建立新的主页。与访问普通 HTML 页面的工作过程相比,ASP 的工作过程分成下面几步: (1)用户在浏览器的地址栏里输入地址和Active Server Pages 文件名,并 东华理工学院毕业论文(设计) 6 按Enter 触发这个申请。 (2)浏览器向含有IIS 的Web 服务器发送Active Server Pages 请求。 (3)Web 服务器接收到申请,并由扩展名.asp 判断出这是Active Server Pages 请求。 (4)Web 服务器从硬盘或内存读取适当的Active Server Pages 文件。 (5)Web 服务器向特定的名为ASP.DLL 程序发送文件。 (6)Web 服务器将Active Server Pages 文件从头到尾执行并根据命令要求 生成标准的HTML 文件。 (8)HTML 被传送回用户浏览器。 (9)用户的浏览器解释HTML 文件,并将结果显示在浏览器窗口上。 由此可以看出,ASP 是在IIS 下开发WEB 应用的一种简单、方便的编程工具。在了解了VBSCRIPT 的基本语法后,只需要清楚各个组件的用途、属性、方法,就可以轻松编写出自己的ASP 系统。 2.1.4 ASP 内置对象及其使用 ASP 提供了六种内置对象,之所以成为内置对象,是因为这些对象在使用过程中并不需要用户经过任何声明或建立过程,这六种内置对象分别是 Request 对象, Response 对象,Server 对象,ObjectContext 对象,Session 对象,Application 对象。下面就对这六种对象分别进行介绍: (1)Request 对象 连接着Web 服务器和Web 客户机程序,用来读取浏览器的信息并处理用户做出的请求,就是处理用户要求浏览器查看特定的网页或Web 应用时做出的请求。 (2)Response 对象 与 Request 对象相反,负责将信息传递给客户端浏览器,用来处理从Web 服务器向用户发送信息并对此信息进行控制。 (3)Serve 对象(即服务器对象)是一个控制处理HTTP 服务行为和网络服务器的管理特性的ASP 对象,它允许用户取得Web 服务器提供的各项功能,用来代表服务器自身。 (4)ObjectContext 对象是一个以组件为主的事务处理系统,它允许提交或放弃第2 章 相关技术介绍 7 一项由Microsoft Transaction Server(MTS)管理的事务。 (5)Session 对象用来代表用户会话,并存储该会话的信息,它相当于一个全局变量,负责记录单个用户的相关信息,以便重复使用。 (6)Application 对象用来代表应用,它与 Session 对象有相似之处,但是他们也有明显的区别如作用范围不同,Session 对象只能在具有 cookie 功能的浏览器上使用,而Application 适用于各种浏览器。 2.1.5 ADO 数据访问组件 组件是在服务器上安装注册的ActiveX 控件。ASP 能使用的组件包括其内置组件;用 VB,VC,JAVA 等语言开发的 ActiveX 控件;从开发商购买或从网上免费下载的 ActiveX 组件。ASP 支持广泛的ActiveX 组件,具有很强的可扩展性,可实现广泛的功能。ASP 的内置组件指安装ASP 时自动注册到ASP Web 服务器上的组件。主要包括随机广告播放器、内容轮播组件、内容链接组件等等,由于这些组件在在线测试模块的设计中基本没有用到,所以在这里只介绍ADO 数据库访问组件。 (1)ActiveX Data Objects (ADO): 是一项容易使用并且可扩展的将数据库访问添加到 Web 页的技术。 (2)ADO 包含的对象: Connection,Recordset,Command,Field,Parameter,Property,Error。在在线测试模块的设计中最常用的两种分别是: (a)Connection 连接对象:主要实现与数据源的连接。 (b)RecordSet 游标对象:“游标”代表从数据提供者返回的一组记录,在内存中可以看成是一个二维表格,类似一个关系数据库。用户可以像访问关系数据库一样访问游标数据记录。 2.2 SQL Server2000 数据库 Microsoft SQL Server 2000 是一套完整的数据库和分析产品,可迅速提供下一代可扩展电子商务,各种业务和数据仓库解决方案,并且具有对Windows 操作系统良好的兼容性。它具有以下优点: 东华理工学院毕业论文(设计) 8 完全的Web 支持 SQL Server2000 提供了以Web 标准为基础的扩展数据库编程功能。丰富的 XML 和 Internet 标准支持允许用户使用内置的存储过程以 XML 格式轻松存储和检索数据。用户可以使用XML 更新程序容易的插入、更新和删除数据。 高度的可伸缩性和可靠性 使用SQL Server2000 可以获得非凡的可伸缩性和可靠性。通过向上伸缩和向外扩展的能力,SQL Server2000 满足了苛刻的电子商务和企业应用程序的要求。 对数据库的操作 SQL Server 管理两种类型的数据库:系统数据库和用户数据库。系统数据库存储 SQL Server 专用的用于管理自身和用户数据库的数据, 用户数据库用于存储用户数据。 SQL Server 创建的系统数据库包括 Master、model、tempdb、msdb,还会创建一个叫PUBS 的用户数据库样本。SQL Server 中,数据库把所有的数据与数据库对象都放在一系列操作文件中,并用文件和文件组管理这些操作系统文件。文件分为 3 种:主文件、从属文件、日志文件,每个文件只能从属于一个数据库。 主文件是一个数据库的起始点,一个数据库文件只能有一个主文件而且必须有一个主文件。主文件的扩展名是MDF。从属文件的数目是任意的,一般一个小型的数据库可能没有从属文件,而一个大型数据库可能存在多个从属文件。从属文件和主文件一同存储数据以及数据库对象。从属文件的扩展名是NDF。日志文件用来存放数据库的事务日志信息,这些信息对恢复数据库是十分关键的,一般一个数据库必须至少有一个日志文件。日志文件的扩展名是LDF。 在本系统中,仅用到了数据库的创建、查询、存储关系表的操作。 2.3 网页设计工具Dreamweaver MX 的使用 . Dreamweaver MX 功能简介 Dreamweaver MX 页面简介 第2 章 相关技术介绍 9 图2-1 Dreamweaver MX 页面 Macromedia 公司制作的功能强大的网页制作工具很适合专业的制作人员使用。在Dreamweaver 中,由于其所见即所得的模式,只要利用鼠标拖曳即可轻易地完成复杂的网页,而无需接触任何源代码。DreamweaverMX 中文版在程序代码、设计和团队应用上,主要表现在以下一些主要功能。 (a)支持 UTF-8 (b)内建文本编辑器 (c)分割程序代码和设计视图 (d)JavaScript 纠错器 (e)结构视图 (f)往返的图像编辑 (g)SourceSafe 和WebDAV 合成 2.4 构建WEB 应用程序的开发环境 要用Dreamweaver MX 开发WEB 应用程序,首先需要构建WEB 应用程序的开发环境,其核心操作在于本机安装WEB 服务器程序。 东华理工学院毕业论文(设计) 10 图2-2 Dreamweaver MX 构建WEB 应用程序的开发环境 第3 章 系统整体设计与分析 3.1 系统总的功能模块: 普通用户登录 查 询 全班 同 学成 绩 界面 查 询 个人 全 部成 绩 界面 修改密码 登录界面 第3 章 系统整体设计与分析 11 图3-1 系统总的功能模块 3.2 对各功能模块进行说明: 3.2.1 登录界面: (1)如果是普通用户登录,则进入普通用户界面; (2)如果登录失败,则显示错误信息,并请求返回重新登录; 3.2.2 普通用户界面: (1)显示该用户信息:某系、某专业、某班、姓名、学号; (2)提供进入“查询全班同学成绩界面”、“查询个人全部成绩界面”链接及必要选项; (3)修改密码功能; 3.2.3 查询全班同学成绩界面: (1)显示某学年某学期各门课程信息(如:必修、院控、学分); (2)显示某学年某学期全班同学各门课程正常修课成绩; 3.2.4 查询个人全部成绩界面: (1)显示该生所学所有课程信息(如:必修、院控、学分、实践课程); (2)显示该生所学所有课程的学习模式及成绩; (3)统计各类型课程(如:必修、院控等)课程总得学分; (4)显示该生所选院公选课信息及成绩; (5)统计该生所选院公选课总得学分; (6)对照教学计划,查看该生是否合格毕业; (7)显示该生计算机、英语等级考试信息;(如:级别、得分、考试时间) 东华理工学院毕业论文(设计) 12 第4 章 数据库总体设计 根据本系统的功能要求和可扩展性,系统中的表有:用户信息(tabstudentid)、学生信息(tabstudentinfor)、各届各专业对学生大学四年所得学分最低要求 (tabspecializationpointrequire) 、 系 信 息 (dicdepartment) 、 专 业 信 息 (dicspecialization)、班级信息(dicclass)、教学计划课程(tabteachplan)、教学计划公选课(tabteachplanyx) 、课控情况(diccoursecontrol) 、课程要求 (diccourserequire)、英语计算机级别(dicenglishtest)、英语计算机过级情况 (tabenglishtest) 、学习模式情 况 (dicclearnmode) 、 学 生 与 课 程 总 信 息 (tabcoursegrade)、学生调班信息(tabstumigrant)等。以下对主要表介绍: 1 .信息(tabstudentid) 表4-1 用户信息表 字段名 类型 说明 userno varchar(8) 用户帐号 usertype char(1) 用户类型 password varchar(10) 用户密码 该表用来检验用户类型与用户帐号是否吻合,若吻合再通过用户类型判断用户是超级用户还有普通用户。 2.学生信息(tabstudentinfor) 表4-2 学生信息 字段名 类型 说明 第4 章 数据库总体设计 13 stuno varchar(8) 学生学号 stuname varchar(10) 学生姓名 departmentcode char(2) 系代号 specializationcode char(2) 专业代号 classno varchar(6) 班级号 可得到学生学号,学生姓名等表中所有信息,同时这些信息方便与其他表链接得到其他表中相应信息。 3.各届各专业对学生大学四年所得学分最低要求 (tabspecializationpointrequire) 表4-3 各届各专业对学生大学四年所得学分最低要求 字段名 类型 说明 Specializatinpointcode char(8) 入学年份系代号专业代号 Mustcollege numeric 5(4,1) 院控必修最低学分 Mustdepartment numeric 5(4,1) 系控必修最低学分 MustSpecialization numeric 5(4,1) 专控必修最低学分 Limitcollege numeric 5(4,1) 院控限选最低学分 Limitdepartment numeric 5(4,1) 限控限选最低学分 LimitSpecialization numeric 5(4,1) 专控限选最低学分 Randomcollege numeric 5(4,1) 院控任选最低学分 RandomDepartment numeric 5(4,1) 限控任选最低学分 RandomSpecialization numeric 5(4,1) 专控任选最低学分 Practicepoint numeric 5(4,1) 实践课程最低学分 Moalitypoint numeric 5(4,1) 思想课程最低学分 Lowestsumpoint numeric 5(4,1) 总共最低学分 可得到各专业对各类型课程及总共最低学分的最低要求。对此表对比,若学生没东华理工学院毕业论文(设计) 14 达到表中要求学分,则不能毕业。 4. 教学计划课程(tabteachplan) 表4-4 教学计划课程 字段名 类型 说明 teachplancode varchar(8) 教学计划代号 coursecode varchar(10) 课程代号 coursename varchar(30) 课程名 coursetypecode char(2) 课程类型代号 learnpoint numeric 5(3,1) 学分 learnyearcode char(1) 学年代号 termcode char(1) 学期代号 coursecontrolcode char(1) 课控代号 courserequirecode char(1) 课程要求代号 该表记录各届各系各专业所学课程,及各门课程学习时间安排,同时显示课程信息。 5. 学生与课程总信息(tabcoursegrade) 表4-5 学生与课程总信息 字段名 类型 说明 stuno varchar(8) 学号 learnyearcode char(1) 学年代号 termcode char(1) 学期代号 teachplancode varchar(8) 教学计划代号 coursecode varchar(10) 课程代号 第4 章 数据库总体设计 15 learnmodecode char(1) 学习模式 endgrade numeric 5(4,1) 成绩 learnpoint numeric 5(3,1) 学分 passflag char(1) 通过标记 该表显示各学生不同学年学期所学课程的成绩、学习模式、课程学分及是否通过等信息。 6.学生调班信息(tabstumigrant) 表4-6 学生调班信息 字段名 类型 说明 stuno varchar(8) 学号 sourcedepartment char(2) 原系代号 sourcespecialization char(2) 原专业代号 sourceclass varchar(6) 原班级号 destdepartment char(2) 目标系代号 destspecialization char(2) 目标专业代号 destclass varchar(6) 目标班级号 migranttime varchar(8) 调班时间 此表显示各调班学生的源系、源专业、源班及目标系、目标专业、目标班以及调班时间等信息。 表间主要关系图: 东华理工学院毕业论文(设计) 16 第5 章 系统各功能模块的详细设计与实现 5.1 普通用户界面 图5-1 普通用户界面 第5 章 系统各功能模块的详细设计与实现 17 5.1.1 基本功能: (1)让普通用户可通过此界面查询某学年某学期的全班成绩; (2)可以查询用户本人的全部成绩; (3)允许用户修改密码; 5.1.2 特殊问题解决方法 (1)问题分析: 此界面要求显示学生所在系、专业、班、姓名、学号信息。学号即登录帐号,在登录时已经得到。学生姓名也可通过学号在“学生信息(tabstudentinfor)”表中轻易得到。但该表中的“系代号(departmentcode)、专业代号(specializationcode)、班级(classno)”记录的是学生入校时的信息。如果该学生在校已留级或插班,则 tabstudentinfor 表中这些信息不正确。所以必须先在“学生调班信息 (tabstumigrant)”表中查询该生现在是否调班,若有则确定哪系哪专业哪班(最后一次调班),同时设变量 session("transclass")="1"以方便“查询全班成绩”的实现(在4.4 有详细介绍),若无则可从tabstudentinfor 表中直接得到。 (2)问题解决 (a)解决问题主要代码: select tabstudentinfor.name,tabstumigrant.destclass,dicdepartment.departmentname ,dicspecialization.specializationname,dicdepartment.departmentcode,dicspe cialization.specializationcode from tabstudentinfor,tabstumigrant,dicclass,dicdepartment,dicspecialization where tabstumigrant.stuno=@stuno and tabstudentinfor.stuno=tabstumigrant.stuno and dicclass.classno=tabstumigrant.destclass and dicdepartment.departmentcode=dicclass.departmentcode and dicspecialization.specializationcode=dicclass.specializationcode 东华理工学院毕业论文(设计) 18 order by tabstumigrant.migranttime desc 以上程序以调班时间从大到小排列,即得到的第一条记录就是最后一次调班信息。 5.2 查询全班成绩界面 图5-2 查询全班成绩界面 5.2.1 基本功能: (1)显示某学年某学期所有课程的课控信息,课程要求信息及学分; (2)显示该班某学年某学期每位同学各门课程正常修课成绩。 5.2.2 实现的具体方法: (1)通过班级(classno)查询该班所有学生学号,再通过学号(stuno)、学年代号第5 章 系统各功能模块的详细设计与实现 19 (learnyearcode)、学期代号(termcode)、教学计划代号(teachplancode) 、学习模式代号(learnmodecode)从“学生与课程总信息(tabcoursegrade)”表中得到记录然后将每位同学每门课程成绩打印在相应位置。 由于任选课程的存在,有的课程有的同学不选,所以打印成绩时,必须确定打印的位置。 如何来解决这个问题呢? 将(5.3.2)中得到的每条“学生与课程总信息记录”先按学号排序,再按课程名排序。也将该班该学年该学期的每门“课程信息”按课程名排序。打印时可以得到共有N 门课程,再不断地做N 次循环,直到所得的“学生与课程总信息记录”结束。每次循环判断课程名是否相同。若相同则某生选学了这门课,那么打印成绩,同时“学生与课程总信息记录”指向下一条,“课程记录”也指向下一条。若不同则某生没选这门课,那么打印空格,同时“学生与课程总信息记录”不动,课程记录指向下一条。每N 次之后,重新得到课程信息以对下一位同学进行N 次循环(因为所得记录集只能指向下条,不能指向上条)。由于所得的“学生与课程总信息记录”与“课程记录” 的排序方案(刚刚已介绍)再结合以上循环方案,因此每位同学的每门成绩都会打印在相应的正确位置上。 (2)流程图如下: 东华理工学院毕业论文(设计) 20 图5-3 查询全班成绩流程图 第5 章 系统各功能模块的详细设计与实现 21 5.2.3 特殊问题解决方法 (1)该用户在大学中曾多次调班 (a)问题分析: 由于调班多次,导致不同学年不同学期该生在不同班级,因此查询某学年某学期全班成绩时,应先通过“学生调班信息(tabstumigrant)”表判断该生当时是哪个班。 (b)解决方案: 从“学生调班信息(tabstumigrant)”表中得到的记录按调班时间从大到小排列,同时根据“目标班级(destclass)、调班时间(migranttime)”判断进入该班时,该班是第N 学年第M 学期。从第一条记录往下查,查到第一条第N 学年第M 学期是小于等于所选学年学期的记录的destclass 即是此时该学生所在班级。 (c)实现代码: select destclass,migranttime from tabstumigrant where stuno=@stuno order by migranttime desc 得到该生调班信息并按调班时间从大到小排列 do select case left(rstimeinclass(0),2) /*算出该班哪年入校*/ case "98","99" gtsy="1999" case "20" gtsy="2000" case else gtsy="20"&left(rstimeinclass(0),2) end select timeclass=cint(left(rstimeinclass(1),4))-cint(gtsy) if cint(mid(rstimeinclass(1),6,2))>7 then 东华理工学院毕业论文(设计) 22 timeclass=timeclass*2+1 /*算出调到某班时该班是第几学期*/ end if if timeclass<=countterm then /*若调到该班时学期小于所查学期则说明所查学期时,则确定此生在该班级*/ classno=rstimeinclass(0) sp_nameclassinfor="classinfor" set spcmdclassinfor=server.createobject("adodb.command") spcmdclassinfor.commandtype=4 set spcmdclassinfor.activeconnection=session("dbconnection") spcmdclassinfor.commandtext=sp_nameclassinfor spcmdclassinfor("@classno")=classno set rsclassinfor=server.createobject("adodb.recordset") rsclassinfor.open spcmdclassinfor /*得到该班级信息(某系某专业)*/ session("teachplancode")=left(classno,2)&rsclassinfor(0)&rsclassinf