网络考试系统(参考)-无忧无虑毕设网_第1页
网络考试系统(参考)-无忧无虑毕设网_第2页
网络考试系统(参考)-无忧无虑毕设网_第3页
网络考试系统(参考)-无忧无虑毕设网_第4页
网络考试系统(参考)-无忧无虑毕设网_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 本文配套程序下载地址 : 无忧无虑毕设网 ()-大学生毕业设计站 ,免费毕业设计论文 ,无忧无虑毕设网 大学生毕业设计 ,出售各类毕业设计源码 ,论文 ,程序源码 ,网站源码 ,免费视频教程 ,我们将竭诚为您服务! 分分 布布 式式 网网 络络 考考 试试 系系 统统 原原 型型 分分 析析 及及 实实 现现 计算机中心:火焰晨晨 指导老师: * 摘 要 软件工程在现代软件开发中的作用越来越大,并且发展出了很多行之有效的软件工程方法和建模语言。 UML( Unified Modeling Language,统一建模语言)是一种非常流行的,支持面对对象建模方法 的建模语言。到今天 UML 差不多已经成为建模语言的事实标准。本文就采用面对对象的方法以 UML 为建模语言,使用 PowerDesigner这个 case工具分析设计一个分布式的 B/S结构的基于 COM+和 XML 的网络考试系统。并使用 Delphi、 VBScript、 ADO、 XML、 HTML 等编程工具、语言和技术实现了这个系统。 关键词: UML COM+ Delphi ASP ADO XML Abstract Software Engineering is increasingly important in then modern software development. Today there are many functions and many software engineering methods. The UML (Unified Modeling Language) is one of they. In addition, its a popular and Object-Oriented based model language. The UML has almost been the international standard of model language. Using Object-Oriented Model and UML by case tools of PowerDesigner, the paper designs a distributed B/S constructed online test system, which is based on COM+ and XML. In order to realize the system a lots of tools and program languages are used, such as Delphi, VBScript, ADO, XML, and HTML etc. Key Words: UML COM+ Delphi ASP ADO XML 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 目 录 分布式网络考试系统原型分析及实现 1 1. 问题定义 4 2. 需求分析 4 2.1. 系统目标 4 2.2. 可行性分析 4 2.2.1. 现有的数据库应用程序的分层结构 4 . 传统二层结构 4 . 三层数据库应用结构 5 . 多层分布式数据库系统 5 2.2.2. 网络分布式多层应用系统 6 2.2.3. XML 语言 7 2.3. 本系统的方案选择 8 2.4. 建模工具的选择 8 3. 基于 UML 的系统分析 8 3.1. 用例图 8 3.1.1. 用户关系图 8 3.1.2. 系统用例图 9 3.1.3. 用例图利用情况清单 9 3.2. 顺序图 10 3.2.1. 老师活动顺序图 10 3.2.2. 学生活动顺序图 11 3.2.3. 动作清单 11 3.2.4. 通讯清单 12 3.3. 类图 13 3.3.1. 类图一 13 3.3.2. 类图二 14 3.3.3. 类清单 14 3.3.4. 类方法清单 14 3.4. 网站页面 布置图 16 4. 数据库的分析设计 17 4.1. 数据库概念模型( Conceptual Data Model) 17 4.1.1. 图 17 4.1.2. 资料清单 17 4.1.3. 实体清单 18 4.1.4. 实体的识别字清单 18 4.1.5. 关系清单 19 4.2. 数据库物理模型( Physical Data Model) 19 4.2.1. 图 19 4.2.2. 物理模型栏位清单 19 4.2.3. 表格索引清单 20 4.2.4. 表格引键清单 21 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 4.2.5. 参考清单 21 4.2.6. 表格清单 21 4.3. SQL 语句 21 5. 系统实现 26 5.1. 开发平台的选择 26 5.2. 编程工具的选择 27 5.3. XML 和网页编辑工具的选择 27 5.4. 系统编码 27 5.4.1. 源程序文件清单 27 . 网站文件清单: 27 . COM+组件源程序文件清单 28 5.4.2. 程序核心代码 28 . 学生进行考试页面的 XLST 文件: Testing.xsl 28 . 定制 ASP 对象主代码 32 . 学生对象 COM+组件主代码 39 . 老师对象 COM+组件主代码 47 . 管理员 COM+组件主代码 47 5.4.3. 程序运行截图 47 . 登录页面(系统主界面) 47 . 学生维护页主界面 47 . 学生修改个人资料页面 47 . 学生查询成绩页面 47 . 学生参加考试页面 47 . 进行考试页面 47 . 老师维护页主界面 47 . 老师生成试卷页面 47 . 老师修改个人资料页面 47 0. 管理员维护页主界面 47 1. 管理员增加老师页面 47 2. 管理员增加学生页面 47 3. 管理员修改密码页面 47 6. 系统安装分发 48 6.1. 数据库的设置 48 6.2. 配置 COM+环境 49 6.3. IIS 的配置 50 6.4. 注意事项 50 7. 系统不足与展望 50 8. 致谢 51 9. 参考文献 51 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 1. 问题定义 现在网络正在 改变着传统的教育方式,网络教育也越来越多,就算是传统的教育方式下,把考试搬到网络上也是一种趋势。考试的无纸化网络化不仅能有效减少老师的工作量,很好的利用计算机的优势,提高工作效率,也能使考试更加公平、公正。所以就一定要构建一个性能良好安全可靠的可以满足大量学生同时使用的网络考试系统。 本原型系统主要功能如下: 1. 学生可以在网上进行考试,考试结束后由计算机批改试题给出分数,并记录成绩。 2. 学生在还可以在网上查询自己的考试成绩,修改密码等个人资料。 3. 老师可以在网上出题,修改密码等个人资料。 4. 管理员可以在网上建立学生 、老师等用户。 2. 需求分析 2.1. 系统目标 本网络考试系统应该能满足学校几千学生在任何地方、任何时间都能参加 考试。本系统要让学生、老师和管理员在网络上可以维护自己的个人资料。学生也可以在网络上通过本系统查询自己考试的成绩;老师能通过网络生成试卷;管理员在网络上通过本系统增加学生和老师;另外为了让考试比较公平,试卷的试题由计算机随机从题库抽取。 2.2. 可行性分析 2.2.1. 现有的数据库应用程序的分层结构 . 传统二层结构 传统的二层式程序,也就是客户 /服务器( Client/Server)结构,这种程序相对简单、清楚、开发容易,其结构如 图 1。客户机都通过网络连接到同一个数据库上,不过这样结构问题很多,最主要的就是性能较差维护困难已经不适应在因特网( Internet)上使用。数据同一性和完整性难以控制。同时由于每一个客户机都必须安装特定的软件,且这种客户端软件体积还比较大,用户使用起来非常不方便,所以目前已经面临淘汰。不过这样的系统开发比较简单,对开发人员的技术要求也不高,在内部局域网上使用还有一定的市场。 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: (图 1) . 三层数据库应用结构 三层结构是目前用得最多的,这种结构比传 统的 C/S 结构增加了一个应用程序服务器,应用程序服务器包括了统一的界面、业务规则和数据处理逻辑等等,这样客户端程序就可以做得比较小,也就是常说的瘦客户,更由于业务规则和数据处理逻辑的集中在服务器上统一管理,客户端无须进行复杂的计算,也不会因为错误的操作而影响到其他的用户,所以他的可靠性、稳定性和效率都比较好。当然开发这样的系统在技术上和成本上要求就要多一些。(其结构如图 2) 图 2 . 多层分布式数据库系统 近年来随着因特网的快速发展,许多企业都 开始上网,因此基于网络的营销系统、 MIS 系统、 ERP 系统都快速发展起来了,这个时候仅仅三层的应用程序已经不能满足实际需求了。因此又发展出来了多层分布式的数据库系统。在多层分布式系统中,人们把中间的应用服务器再拆分为很多比较小的系统,均匀分散到多台计算机中处理,这样就能得到更好的性能并且降低了程序复杂度。在多层分布式数据库系统中必须要有一个所谓的中间件来支持和管理分散的业务处理程序。 在 Windows 平台下微软公司推出了的 Windows DNA( Distributed interNet Application Architecture,分布式网络应用结构)策略。把 COM+作为 Windows DNA 策略中的中间件。在 Windows2000 以上操作系统中, COM+成为了系统的无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 一部分。 COM+为中间层提供了负载平衡、对象池( Object Pooling)、事务特性等一系列的强力支持,并且在 COM+中工作的程序受到操作系统的保护,从而最大的保证了系统的安全、稳定和高效。当然开发这样的系统要求开发人员必须掌握 COM( Component Object Model,组件对象模型)和 COM+技术,开发难度和成本更大了。 图 3 2.2.2. 网络分布式多层应用系统 近几年来因特网飞速发展,人们的生活因为网络而在慢慢的改变。现在的个人电脑( PC)上都安装了浏览器( Browser)因此人们就利用浏览器来作为客户端程序,万维网服务器( Web Server)作为中间层和客户端沟通服务器,这就是现在流行的 B/S( Browser/Server)结构方式。在这种结构下,本地的计算机无须安装任何客户端程序,只要有浏览器,可以使用因特网就可以使用系统了。他不仅仅减少了开发客户端带来的成本,最关键的 是,大大减少了系统维护的成本和时间,当修改系统的时候不需要对客户做任何的改动。并且客户也可以在任何计算机上使用你的系统而不要做特别的设置。 在 B/S 系统中以微软公司的 IE 浏览器、和 IIS/ASP( Internet Information Server/Active Server Pages)服务器应用最为广泛,使用最方便,对中文的支持也是最好的。 但是, ASP 有一个天生的缺点,就是 ASP 代码 是采用的 VBScript、 JScript或者 PHP 等脚本语言编写,运行速度相当的慢,而且和 HTML 代码是混在一起的, 使 ASP 程序员既需要考虑与数据库打交道, 又 需要关心如何与 HTML 配合,有时还需要用 ASP 直接生成 HTML 代码。 这样构建起来的系统当然是不能满足中、大型网络应用的需要。 不过好在 ASP 可以通过脚本语言调用基于 COM 的程序,而得到功能和性能上的提升。在微软公司最新的 IIS5.0 系统上更可以让我们使用 VC+、 VB、Delphi 等开发工具建立定制的运行于 COM+环境中的 ASP 对象,这种对象,还可以和其他的 COM+组件协同工作。这样一来我们就可以用 B/S 方式构建多层分布式的应用系统来满足大型网络应用。 这也就是微软公 司所推出的 Web 分布式多层应用程序结构(其结构如图 4)无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 也就是我们常听到的 Windows DNA 策略( Windows Distributed internet Application Architecture,视窗系统分布式网络应用结构)。不过开发这样的系统需要开发人员掌握更多的技术,如: ASP、 VBScript、 JavaScript、 HTML/DHTML、ADO、 COM/DCOM、 MTS/COM+等等,同时学习这么多的技术这对程序员来说是一个不小的挑战! 图 4 2.2.3. XML 语言 XML( eXtended Markup Language)是一种标记语言,就象我们熟悉的 HTML一样,但是 XML 的标签是由人们根据自己的需要来定制的,也就是说,任何词和字都可以做为标签来用,只要能准确的表达数据的属性。例如当我们要表达一个人的姓名的时候用 HTML 也许我们会这样做:“ 张三 ”,但如果用 XML 我们就可以这样做:“ 张三 ”。数据表达的准确性 XML绝对比 HTML 好多了!准确表达数据的含义这就是 XML 带来的最大好处。 有了 XML,我们就能 定制各行各业的 XML 标签,这样对于要传输的数据就能用文本方式传送,并且只要对方有一份标签的定义文件就可以理解我们所表达的意思,从而在任何程序之间,不管他是用什么语言编写的;任何系统之间,不管他是运行在什么 CPU 上的,是 Windows、 Linux 还是 MAC OS;任何人之间,无论他是什么国籍,说什么语言,是否懂得你的语言,自由交换信息了。而这些正适应了目前因特网的发展,适应了人们沟通交流的需要。 XML 出现短短几年就得到了广泛的应用,目前新推出的软件几乎都会支持XML。例如微软的 Dot Net 系列软件、 Office 系列软件等等。不出几年, XML就会代替 HTML 成为因特网上标准的标记语言。 本系统引入 XML 语言表达数据的好处是使得系统中网页的显示和系统处理的数据分离,可以使系统不必去处理那些用于网页界面的代码,减小开发系统的复杂度,减少系统处理时间,减少网络传送量,从而提高效率。另外我们知道目前一般程序员开发网站的时候都要同时完成网页的制作,但一般来说程序员都不可能设计出比专业的美工还好的网页来。不过请来专业美工后怎么和程序员进行合作呢?懂程序开发的美工可不会太多。而 XML 就比较好的解决了这个问题,他使程序员不必 去做网页,网页设计者不用去管程序。只要定义好XML 标签,程序员就可以用他来表示数据,而设计网页的也可以用他来制作网无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 页。 2.3. 本系统的方案选择 本系统应用于因特网,并且要满足一个学校几千学生考试的需要,因此本系统决定采用微软公司所推出的 Web 分布式多层应用程序结构,并且数据使用XML 表示。 2.4. 建模工具的选择 以 UML 语言建模应该是以 Rational 公司的 Rose 工具为最好。不过 Rose 太贵了,并且 Rose 比较庞大,使用不是太方便。 Sybase 公司出品的 PowerDesigner建模工具也支持 UML,还提供一个 45 天的试用版,在数据库建模上也有他独到的地方。因此建模工具就选用 PowerDesigner。 3. 基于 UML 的系统分析 3.1. 用例 tc 图表用户图 l 4图 3.1.1. 用户关系图 学生老师管理员用户 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 3.1.2. 系统用例图 学生 选择考试登录维护题库生成考试查询成绩老师管理员管理老师账号管理学生账户更新老师的资料更新学生的资料修改管理员的密码 3.1.3. 用例图利用情况清单 名称 代码 父 选择考试 ChoseTest Object-Oriented Model 网络考试系统 (OOM) 登录 Login Object-Oriented Model 网络考试系统 (OOM) 维护题库 WHTK Object-Oriented Model 网 络考试系统 (OOM) 生成考试 shchksh Object-Oriented Model 网络考试系统 (OOM) 查询成绩 QueryScore Object-Oriented Model 网络考试系统 (OOM) 管理老师账号 CreateTeacher Object-Oriented Model 网络考试系统 (OOM) 管理学生账户 CreateStudent Object-Oriented Model 网络考试系统 (OOM) 更新老师的资料 UpDateTeacher Object-Oriented Model 网络考试系统 (OOM) 更新学生的资料 UpDateStudent Object-Oriented Model 网络考试系统 (OOM) 修改管理员的密码 UpDateAdmin Object-Oriented Model 网络考试系统 (OOM) 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 3.2. 顺序图 3.2.1. 老师活动顺序图 登录生成试卷维护确认密码 试卷老师学生 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 3.2.2. 学生活动顺序图 确认登录查询成绩参加考试提交回答返回成绩返回成绩请求试题返回试题确认考生考试成绩记录成绩学生密码 试卷 试题确认学生可以参加考试 3.2.3. tc 动作清单 l 4动作清单 名称 代码 父 学生 Student Object-Oriented Model 网络考试系统 (OOM) 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 老师 Teacher Object-Oriented Model 网络考试系统 (OOM) 管理员 Admin Object-Oriented Model 网络考试系统 (OOM) 用户 User Object-Oriented Model 网络考试系统 (OOM) 3.2.4. tc 通讯清单 l 4通讯清单 名称 代码 父 接收者 输送者 确认 True Object-Oriented Model 网络考试系统 学生 密码 登录 Login Object-Oriented Model网络考试系统 密码 学生 查询成绩 QueryScore Object-Oriented Model 网络考试系统 (OOM) 试卷 学生 参加考试 Testing Object-Oriented Model 网络考试系统 (OOM) 试卷 学生 提交回答 Submit Object-Oriented Model 网络考试系统 (OOM) 试题 试卷 返回成绩 ReScore Object-Oriented Model 网络考试系统 (OOM) 试卷 试题 返回 成绩 ReScore Object-Oriented Model 网络考试系统 (OOM) 学生 试卷 登录 Login Object-Oriented Model 网络考试系统 (OOM) 密码 老师 生成试卷 CreatePaper Object-Oriented Model 网络考试系统 (OOM) 试卷 老师 维护 weihu Object-Oriented Model 网络考试系统 (OOM) 学生 老师 请求试题 GetQuestion Object-Oriented Model 网络考试系统 (OOM) 试题 试卷 返回试题 ReQuestions Object-Oriented Model 网络考试系统 (OOM) 试卷 试题 确认 Sure Object-Oriented Model 网络考试系统 (OOM) 老师 密码 确认考生 Sure Object-Oriented Model 网络考试系统 (OOM) 试卷 试卷 考试成绩 Score Object-Oriented Model 网络考试系统 (OOM) 学生 试卷 记录成绩 WriteScore Object-Oriented Model 网络考试系统 (OOM) 试卷 试卷 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 3.3. 类图 3.3.1. 类图一 学生+修改 ()增加 ()删除 ()登录 ()进行考试 ()批改试卷 (): void: void: void: void: void: void老师+修改 ()增加 ()删除 ()登录 (): void: void: void: void试题用户+修改 ()增加 ()删除 ()登录 (): void: void: void: void传递不同的标志,以选择不同的数据表格进行相同的操作管理员+修改自己密码 ()增加用户 ()删除用户 ()登录 (): void: void: void: void管理员对不同用户的管理,依赖于不同用户自身的方法。并且管理员只能创建或者删除用户,不能修改用户的个人资料。密码+登录 ()修改 (): void: void用户登录最后由密码类实现 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 3.3.2. 类图二 试题+修改 ( )增加 ( )删除 ( ): void: void: void试卷+-查询成绩 ( )生成试卷 ( )评分 ( )取得试题 ( ): void: void: void: void老师+修改 ( )增加 ( )删除 ( )登录 ( ): void: void: void: void试题老师类包含试题类的方法试卷类可以调用试题类的取得试题方法 3.3.3. 类清单 3.3.4. 类 方法 清单 tc 类清单 l 4 名称 代码 结果类型 可见性 抽象 最终点 静态 量詞 登录 Login void public FALSE FALSE FALSE 密码 名称 代码 父 产生 可见性 抽象 类别类型 密码 PWD Package 数据存取组件 TRUE public FALSE Class 试题 Questions Package 数据存取组件 TRUE public FALSE Class 试卷 Paper Package 数据存取组件 TRUE public FALSE Class 学生 Students Package 数据存取组件 TRUE public FALSE Class 老师 Teacher Package 数据存取组件 TRUE public FALSE Class 用户 Users Package 数据存取组件 TRUE public FALSE Class 管理员 Admin Package 数据存取组件 TRUE public FALSE Class 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 修改 UpDate void public FALSE FALSE FALSE 密码 修改 UpData void public FALSE FALSE FALSE 试题 增加 Add void public FALSE FALSE FALSE 试题 删除 Del void public FALSE FALSE FALSE 试题 查询成绩 QueryScore void public FALSE FALSE FALSE 试卷 生成试卷 CreatePaper void public FALSE FALSE FALSE 试卷 评分 PutScore void public FALSE FALSE FALSE 试卷 取得试题 GetPaper void private FALSE FALSE FALSE 试卷 修改 UpDate void public FALSE FALSE FALSE 学生 增加 Add void public FALSE FALSE FALSE 学生 删除 Del void public FALSE FALSE FALSE 学生 登录 Login void public FALSE FALSE FALSE 学生 进行考试 Testing void public FALSE FALSE FALSE 学生 批改试卷 CheckPaper void public FALSE FALSE FALSE 学生 修改 Edit void public FALSE FALSE FALSE 老师 增加 Add void public FALSE FALSE FALSE 老师 删除 Del void public FALSE FALSE FALSE 老师 登录 Login void public FALSE FALSE FALSE 老师 修改 UpDate void public FALSE FALSE FALSE 用户 增加 Add void public FALSE FALSE FALSE 用户 删除 Del void public FALSE FALSE FALSE 用户 登录 Login void public FALSE FALSE FALSE 用户 修改自己密码 UpDate void public FALSE FALSE FALSE 管理员 增加用户 Add void public FALSE FALSE FALSE 管理员 删除用户 Del void public FALSE FALSE FALSE 管理员 登录 Login void public FALSE FALSE FALSE 管理员 注:因为所使用的 PowerDesigner 并不支持 Delphi 所使用的 Object Pascal 编程语言,所以类的分析中省略了参数返回值等内容。 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 3.4. 网站页面布置图 密码验证学生老师Students.htm 学生登录首页Index.htmTeachers.htm 老师登录首页Admin.htm 管理员登录首页UpDateT.htm 维护自身属性UpDateS.htm 维护自身属性UpDateA.asp 维护自身属性Test.htm 进行考试QueryScore.htm 查询成绩CreatePaper.htm 生成考试CreateUser.asp 维护用户信息管理员 注: 密码验证构件分别为老师、学生、管理员三个构件的登录( Login)方法调用 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 4. 数据库的分析设计 4.1. 数据库概念模型( Conceptual Data Model) 4.1.1. 图 参加考试生成老师老师编号姓名密码科目电子邮件 A10A12A16VA50VA35老师编号 学生学号姓名年龄性别入学时间密码电子邮件 A10A12SIA2DTA16VA35学号 试卷流水号试卷号科目成绩 NOIVA50SI流水号 试题问题号科目问题选项1选项2选项3选项4答案 NOVA50VA200VA100VA100VA100VA100A1问题号 管理员姓名密码 A12A16姓名 管理员有且仅有一个,名为Ad mi n老师账户由管理员分配试卷由老师生成学生账号由老师分配试题由老师管理 4.1.2. 资料清单 名称 代码 定义域 数据类型 长度 精确度 答案 Answer A1 1 选项 4 Select4 VA100 100 电子邮件 Email VA35 35 电子邮件 Email VA35 35 选项 3 Select3 VA100 100 选项 2 Select2 VA100 100 选项 1 Select1 VA100 100 问题 Question VA200 200 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 问题号 QuestionID NO 成绩 Score SI 流水号 ID NO 入学时间 EnterTime DT 性别 Sex A2 2 年龄 Age SI 学号 StudentID A10 10 科目 Subject VA50 50 密码 PWD A16 16 姓名 Name A12 12 老师编号 TeacherID A10 10 试卷号 PaperID I 4.1.3. tc 实体清单 l 3实体清单 名称 代码 父 产生 管理员 Admin Conceptual Data Model NetTest (CDM) TRUE 老师 Teachers Conceptual Data Model NetTest (CDM) TRUE 学生 Students Conceptual Data Model NetTest (CDM) TRUE 试卷 Papers Conceptual Data Model NetTest (CDM) TRUE 试题 Questions Conceptual Data Model NetTest (CDM) TRUE 4.1.4. tc 实体的识别字清单 l 3实体的识别字清单 名称 代码 父 姓名 Key_Name Entity 管理员 老师编号 PK_TeacherID Entity 老师 学号 PK_StudentID Entity 学生 流水号 PK_ID Entity 试卷 问题号 PK_QuestionID Entity 试题 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 4.1.5. tc 关系清单 l 3关系清单 名称 代码 父 实体 2 实体 1 参 加 考试 Testing Conceptual Data Model NetTest (CDM) 试卷 学生 生成 Create Conceptual Data Model NetTest (CDM) 试卷 老师 4.2. 数据库物理模型( Physical Data Model) 4.2.1. 图 FK_PAPERS_CREATE_TEACHERSFK_PAPERS_TESTING_STUDENTS老师老师编号姓名密码科目电子邮件char(10)char(12)char(16)varchar(50)varchar(35)学生学号姓名年龄性别入学时间密码电子邮件char(10)char(12)smallintchar(2)datetimechar(16)varchar(35)试卷流水号老师编号学号试卷号科目成绩bigintchar(10)char(10)intvarchar(50)smallint试题问题号科目问题选项1选项2选项3选项4答案bigintvarchar(50)varchar(200)varchar(100)varchar(100)varchar(100)varchar(100)char(1)管理员姓名密码char(12)char(16)老师账户由管理员分配试卷由老师生成管理员有且仅有一个,名为Admin试题由老师管理学生账号由老师分配 4.2.2. 物理模型栏位清单 名称 代码 老师编号 TeacherID 姓名 Name 密码 PWD 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 科目 Subject 电子邮件 Email 学号 StudentID 姓名 Name 年龄 Age 性别 Sex 入学时间 EnterTime 密码 PWD 电子邮件 Email 流水号 ID 老师编号 TeacherID 学号 StudentID 试卷号 PaperID 科目 Subject 成绩 Score 问题号 QuestionID 科目 Subject 问题 Question 选项 1 Select1 选项 2 Select2 选项 3 Select3 选项 4 Select4 答案 Answer 姓名 Name 密码 PWD 4.2.3. tc 表格索引清单 l 4表格索引清单 名称 代码 唯一的 群 主要的 外来键 代替键 表格 姓名 Index_Name FALSE FALSE FALSE FALSE FALSE 老师 姓名 Index_Name TRUE TRUE TRUE FALSE FALSE 学生 学号 Index_StudentID FALSE FALSE FALSE TRUE FALSE 试卷 科目 Index_SubjectID FALSE FALSE FALSE FALSE FALSE 试题 姓名 Index_Name FALSE FALSE FALSE FALSE FALSE 管理员 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: 4.2.4. tc 表格引键清单 l 4表格引键清单 名称 代码 表格 老师编号 PK_TeacherID 老师 学号 PK_StudentID 学生 流水号 PK_ID 试卷 问题号 PK_QuestionID 试题 姓名 Key_Name 管理员 4.2.5. tc 参考清单 l 4参考清单 名称 代码 父表格 子表格 参加考试 Testing 学生 试卷 生成 Create 老师 试卷 4.2.6. tc 表格清单 l 4表格清单 名称 代码 老师 Teachers 学生 Students 试卷 Papers 试题 Questions 管理员 Admin 4.3. SQL语句 /*=*/ /* Database name: NetTest (PDM) */ /* DBMS name: Microsoft SQL Server 2000 */ /* Created on: 2002-6-11 11:28:20 */ /*=*/ alter table NetTest.Papers drop constraint FK_PAPERS_CREATE_TEACHERS go 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: alter table NetTest.Papers drop constraint FK_PAPERS_TESTING_STUDENTS go if exists (select 1 from sysindexes where id = object_id(NetTest.Admin) and name = Index_Name and indid 0 and indid 0 and indid 0 and indid 0 and indid = 0 ), constraint PK_PAPERS primary key (ID) ) go /*=*/ /* Index: Index_StudentID */ /*=*/ create index Index_StudentID on NetTest.Papers ( StudentID ) go 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: /*=*/ /* Table: Questions */ /*=*/ create table NetTest.Questions ( QuestionID bigint identity, Subject varchar(50) not null, Question varchar(200) not null, Select1 varchar(100) not null, Select2 varchar(100) not null, Select3 varchar(100) not null, Select4 varchar(100) not null, Answer char(1) not null, constraint PK_QUESTIONS primary key (QuestionID) ) go /*=*/ /* Index: Index_SubjectID */ /*=*/ create index Index_SubjectID on NetTest.Questions ( Subject ) go /*=*/ /* Table: Students */ /*=*/ create table NetTest.Students ( StudentID char(10) not null, Name char(12) not null, Age smallint not null constraint CKC_AGE_STUDENTS check (Age between 0 and 100), Sex char(2) not null, EnterTime datetime not null, PWD char(16) not null, Email varchar(35) null, constraint PK_STUDENTS primary key (StudentID) ) go /*=*/ 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: /* Table: Teachers */ /*=*/ create table NetTest.Teachers ( TeacherID char(10) not null, Name char(12) not null, PWD char(16) not null, Subject varchar(50) not null, Email varchar(35) null, constraint PK_TEACHERS primary key (TeacherID) ) go /*=*/ /* Index: Index_Name */ /*=*/ create index Index_Name on NetTest.Teachers ( Name ) go alter table NetTest.Papers add constraint FK_PAPERS_CREATE_TEACHERS foreign key (TeacherID) references NetTest.Teachers (TeacherID) go alter table NetTest.Papers add constraint FK_PAPERS_TESTING_STUDENTS foreign key (StudentID) references NetTest.Students (StudentID) go 5. 系统实现 5.1. 开发平台的选择 本系统由于是采用的微软公司所推出的分布式 Web 应用构架,所以开发平台使用了 Windows2000,数据库选用 SQL Server2000, Web 服务器程序使用无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: IIS5.0。由于使用了 XML,所以客户端必须是 IE5.0 以上版本的浏览器才能正常使用本系统。 5.2. 编程工具的选择 目前比较流行的开发工具 VC+、 VB 和 Delphi 等都可以实现本程序的中间件 COM+程序的开发。使用 VC+可以得到最好的速度,最大的灵活性,最强大的功能,但使用 VC+开发系统所要花费的时间和开发成本足以抵消掉他所带来的好 处;使用 VB 来开发花费的时间是少了,可是 VB 是解释性的语言,这样的系统运行速度会比 VC+开发的相同的系统差不少; Delphi 是 Borland 公司出品的 Windows 下的快速开发工具,具有 VB 的开发效率和 VC+程序的运行速度,所以用来开发本系统是最合适的选择。 5.3. XML和网页编辑工具的选择 XML 的开发工具我试过好几个,可都不理想,不是使用不方便就是对中文的支持不好。最后只能用 Windows 下的记事本( notepad.exe)手工书写。这样一来效率很底,也许正因为这个原因 XML 才没有 HTML 应用多。希望不久 以后也能出现比较好用的 XML 可视化编辑工具。 网页的编辑工具比较好选, Dreamweaver 功能最强大使用方便,并且他还提供 30 天试用版,是不二之选。 5.4. 系统编码 5.4.1. 源程序文件清单 . 网站文件清单: .nettest 的目录 . . admin admin.asp images index.htm login.asp NetTest.asp student student.asp style.css SubmitPaper.asp teacher teacher.asp test.asp update.asp .nettestadmin 的目录 . . admin.htm createstudent.htm createteacher.htm update.htm 4 个文件 14,685 字节 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: .nettestimages 的目录 . . bg1.gif main.gif studies_02.gif .netteststudent 的目录 . . QueryScore.xsl SelectTest.xsl Student.xsl style.css Testing.xsl UpDate.htm .nettestteacher 的目录 . . createpaper.htm createquestions.htm teacher.xsl UpDate.htm . COM+组件源程序文件清 单 5.4.2. 程序核心代码 因为本系统源代码比较多,在这里就仅仅列出比较重要的核心代码 . 学生进行考试页面的 XLST文件: Testing.xsl 进行考试! 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: .: 解放军后勤工程学院网络考试系统 :. 进行考试 考试: 、 A 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: A B B C C D 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: D 设计制作 (C) 火焰晨晨 2001-2002 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: . 定制 ASP对象主代码 unit uMain; $WARN SYMBOL_PLATFORM OFF interface uses ComObj, ActiveX, AspTlb, NetTest_TLB, StdVcl, MTSStu_TLB, MTSTeacher_TLB, MTSAdmin_TLB; type TNetTestASP = class(TASPMTSObject, INetTestASP) private protected procedure CopyRight; safecall; procedure Login; safecall; procedure Admin; safecall; procedure Student; safecall; procedure Teacher; safecall; procedure Testing; safecall; procedure UpDate; safecall; procedure SubmitPaper; safecall; end; implementation uses ComServ; const xmlTitle: WideString = ; xsltS: WideString = ; xsltSQS: WideString = ; 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: xsltSST: WideString = ; xsltST: WideString = ; xsltT: WideString = ; procedure TNetTestASP.CopyRight; begin Response.Write(本程序由火焰晨晨独立制作,并作为毕业设计 + 保留所有版权, All Rights Resaved + 有任何问题请 Email 到: ); end; procedure TNetTestASP.Login; var tmpStr, UserID, tmpResult: WideString; PWD: WideString; Student: IMTSDMStu; Teacher: IMTSDMTeacher; Admin: IMTSDMAdmin; begin UserID := Request.Form.ItemUserName; PWD := Request.Form.ItemPWD; tmpStr := Request.Form.ItemSubmit; if tmpStr = 学生登录 then begin Student := CoMTSDMStu.CreateRemote(Sun1980426); tmpResult := Student.Login(UserID, PWD); if (tmpResult = 密码或用户名错误!请重试。 ) or (tmpResult = 数据库读取错误!请和管理员联系! ) then Response.Write(tmpResult) else begin Session.Set_Value(UserType, 1); Session.Set_Value(UserID, UserID); Response.Write(xmlTitle + xsltS + tmpResult); end; end else if tmpStr = 老师登录 then begin 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: Teacher := CoMTSDMTeacher.CreateRemote(Sun1980426); tmpResult := Teacher.Login(UserID, PWD); if (tmpResult = 密码或用户名错误!请重试。 ) or (tmpResult = 数据库读取错误!请和管理员联系! ) then Response.Write(tmpResult) else begin Session.Set_Value(UserType, 2); Session.Set_Value(UserID, UserID); Response.Write(xmlTitle + xsltT + tmpResult); end; end else if tmpStr = 管理员登录 then begin Admin := CoMTSDMAdmin.CreateRemote(Sun1980426); tmpResult := Admin.Login(PWD); if tmpResult OK then Response.Write(tmpResult) else begin Session.Set_Value(UserType, 3); Session.Set_Value(UserID, Admin); Response.Redirect(./admin/admin.htm); end; end; end; procedure TNetTestASP.Admin; var Subject, PWD, Email, Age, Sex, Name, tmpStr, EnterTime, TeacherID, StudentID: WideString; UserType: Integer; Admin: IMTSDMAdmin; begin UserType := Session.ValueUserType; if 3 = UserType then/管理员 begin tmpStr := Request.QueryString.Itemaction; Admin := CoMTSDMAdmin.CreateRemote(Sun1980426); if tmpStr = CreateStudent then 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: begin StudentID := Request.Form.ItemStudentID; PWD := Request.Form.ItemPWD; Name := Request.Form.ItemName; Age := Request.Form.ItemAge; Sex := Request.Form.ItemSex; EnterTime := Request.Form.ItemEnterTime; Email := Request.Form.ItemEmail; Response.Write(Admin.CreateStudent(StudentID, Name, Sex, Age, EnterTime, Email, PWD) ); end else if tmpStr = CreateTeacher then begin TeacherID := Request.Form.ItemTeacherID; PWD := Request.Form.ItemPWD; Name := Request.Form.ItemName; Subject := Request.Form.ItemSubject; Email := Request.Form.ItemEmail; Response.Write(Admin.CreateTeacher(TeacherID, Name, Subject, PWD, Email); end; end; end; procedure TNetTestASP.Student; var Student: IMTSDMStu; tmpStr: WideString; UserType: Integer; begin UserType := Session.ValueUserType; if UserType = 1 then begin tmpStr := Request.QueryString.Itemaction; if QueryScore = tmpStr then begin Student := CoMTSDMStu.CreateRemote(Sun1980426); Response.Write(xmlTitle + xsltSQS 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: + Student.QueryScore(Session.ValueUserID); end else if GetTest = tmpStr then begin Student := CoMTSDMStu.CreateRemote(Sun1980426); Response.Write(xmlTitle + xsltSST + Student.GetTest(Session.ValueUserID); end else if GetStudentData = tmpStr then begin Student := CoMTSDMStu.CreateRemote(Sun1980426); Response.Write(xmlTitle + xsltSUD + Student.UpDate(Session.ValueUserID), False, , , ); end else Response.Write(错误的请求! ); end else Response.Write(非法用户! ); end; procedure TNetTestASP.Teacher; var tmpStr, UserID, StudentID, PaperID: WideString; UserType: Integer; Teacher: IMTSDMTeacher; begin tmpStr := Request.QueryString.Itemaction; UserType := Session.ValueUserType; UserID := Session.ValueUserID; if 2 = UserType then/老师 begin if tmpStr = CreatePaper then begin Teacher := CoMTSDMTeacher.CreateRemote(Sun1980426); StudentID := Request.Form.ItemStudentID; PaperID := Request.Form.ItemPaperID; Response.Write(Teacher.CreatePaper(UserID, StudentID, PaperID); end else Response.Write(错误的请求! ); end 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: else Response.Write(非法用户! ); end; procedure TNetTestASP.Testing; var Student: IMTSDMStu; StudentID, PaperID, Answers: WideString; UserType: Integer; begin UserType := Session.ValueUserType; StudentID := Session.ValueUserID; if UserType = 1 then begin Student := CoMTSDMStu.CreateRemote(Sun1980426); PaperID := Request.Form.ItemPaperID; Session.Set_Value(PaperID, PaperID); Response.Write(xmlTitle + xsltST + Student.GetPaper(StudentID, PaperID, Answers); Session.Set_Value(Answers,Answers); end else Response.Write(非法用户! ); end; procedure TNetTestASP.UpDate; var Subject, PWD, Email, Age, UserID: OleVariant; UserType: Integer; Student: IMTSDMStu; Teacher: IMTSDMTeacher; Admin: IMTSDMAdmin; begin UserType := Session.ValueUserType; UserID := Session.ValueUserID; if 1 = UserType then/学生 begin Student := CoMTSDMStu.CreateRemote(Sun1980426); PWD := Request.Form.ItemPWD; Age := Request.Form.ItemAge; Email := Request.Form.ItemEmail; Response.Write(Student.UpDate(UserID, Age, PWD, Email); end else if 2 = UserType then/老师 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: begin Teacher := CoMTSDMTeacher.CreateRemote(Sun1980426); PWD := Request.Form.ItemPWD; Subject := Request.Form.ItemSubject; Email := Request.Form.ItemEmail; Response.Write(Teacher.UpDate(UserID, PWD, Subject, Email); end else if 3 = UserType then/管理员 begin Admin := CoMTSDMAdmin.CreateRemote(Sun1980426); PWD := Request.Form.ItemPWD; Response.Write(Admin.UpDate(PWD); end else Response.Write(非法用户! ); end; procedure TNetTestASP.SubmitPaper; var Answers, Answer, UserID, PaperID: WideString; UserType, No: Integer; Score, vNo: OleVariant; Student: IMTSDMStu; begin UserType := Session.ValueUserType; Answers := Session.ValueAnswers; UserID := Session.ValueUserID; PaperID := Session.ValuePaperID; Score := 0; Answer := ; if 1 = UserType then/学生 begin for No := 1 to (Request.Form.Count - 1) do/减去提交按钮所占数字 begin vNo := No; Answer := Request.Form.ItemvNo; if AnswersNo = Answer3 then begin Score := Score + 10; end; end;/end for Student := CoMTSDMStu.CreateRemote(Sun1980426); 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: Response.Write(Student.SubmitPaper(UserID, PaperID, Score); end else Response.Write(非法用户! ); end; initialization TAutoObjectFactory.Create(ComServer, TNetTestASP, Class_NetTestASP, ciMultiInstance, tmApartment); end. . 学生对象 COM+组件主代码 unit uMain; $WARN SYMBOL_PLATFORM OFF interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComServ, ComObj, VCLCom, StdVcl, bdemts, DataBkr, DBClient, MtsRdm, Mtx, MTSStu_TLB, DB, ADODB; type TMTSDMStu = class(TMtsDataModule, IMTSDMStu) ADOQuery1: TADOQuery; private / function CreatePaper(Subject: WideString Private declarations protected class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override; function GetPaper(const StudentID, PaperID: WideString; out Answers: WideString): OleVariant; safecall; function Login(const StudentID, PWD: WideString): OleVariant; safecall; function QueryScore(const StudentID: WideString): OleVariant; safecall; function UpDate(const StudentID, Age, PWD, Email: WideString): OleVariant; safecall; function GetTest(const StudentID: WideString): OleVariant; safecall; function SubmitPaper(const StudentID, PaperID, Score: WideString): OleVariant; safecall; 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: public Public declarations end; var MTSDMStu: TMTSDMStu; implementation $R *.DFM class procedure TMTSDMStu.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); begin if Register then begin inherited UpdateRegistry(Register, ClassID, ProgID); EnableSocketTransport(ClassID); EnableWebTransport(ClassID); end else begin DisableSocketTransport(ClassID); DisableWebTransport(ClassID); inherited UpdateRegistry(Register, ClassID, ProgID); end; end; function TMTSDMStu.GetPaper(const StudentID, PaperID: WideString; out Answers: WideString): OleVariant; var I, J, C: Integer; sQuestionID, Subject: WideString; aQuestionID: array0.9 of Integer; begin /取考试科目 / ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(SELECT Subject FROM NetTest.Papers WHERE + ( +StudentID = + + StudentID + +)AND(PaperID= + + PaperID + + )AND( + Score IS NULL+ ); ADOQuery1.Active := True; if not ADOQuery1.Fields0.IsNull then Subject := ADOQuery1.Fields0.AsString 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: else begin ADOQuery1.Active := False; Result := 不能重复参加考试! ; Exit; end; ADOQuery1.Active := False; /取试题条数 / ADOQuery1.SQL.Clear; ADOQuery1.SQL.Text := SELECT count(*) FROM NetTest.Questions WHERE Subject= +Subject+; ADOQuery1.Active := True; C := ADOQuery1.Fields0.AsInteger; ADOQuery1.Active := False; /随机抽题 / ADOQuery1.SQL.Clear; I := 1; if C I do begin aQuestionIDI := Random(C); for J := 0 to I do if aQuestionIDJ = aQuestionIDI then Break; / if I = J then Inc(I); end;/end while sQuestionID := ( QuestionID= + + IntToStr(aQuestionID0) + + ); for I := 1 to 9 do 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: sQuestionID := sQuestionID + OR ( QuestionID= + IntToStr(aQuestionIDI) + ); ADOQuery1.SQL.Add(SELECT * FROM NetTest.Questions WHERE (Subject= + + Subject + + )AND( + sQuestionID +); end;/end ifsles / / ADOQuery1.Active := True; / Result := ADOQuery1.SQL.Text; / ADOQuery1.Active := False; / Answers := ; try ADOQuery1.Active := True; /建立 XML/ Result := +Subject+radio; Answers := ; I := 1; While not ADOQuery1.Eof do begin Result := Result + + IntToStr(I) + + + ADOQuery1.Fields2.AsString + + ADOQuery1.Fields3.AsString + + ADOQuery1.Fields4.AsString + + ADOQuery1.Fields5.AsString + + ADOQuery1.Fields6.AsString + ; Answers := Answers + ADOQuery1.Fields7.AsString; ADOQuery1.Next; Inc(I); end; Result := Result + ; except ADOQuery1.Active := False; Result := ; end; end; function TMTSDMStu.Login(const StudentID, PWD: WideString): OleVariant; 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: begin ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(SELECT Name FROM NetTest.Students WHERE +(StudentID = + + StudentID + + ) +AND + (PWD = + + PWD + + ); try ADOQuery1.Active := True; if ADOQuery1.Fields0.IsNull then Result := 密码或用户名错误!请重试。 else Result := + ADOQuery1.Fields0.AsString + ; ADOQuery1.Active := False; except ADOQuery1.Active := False; Result := 数据库读取错误!请和管理员联系! ; end; end; function TMTSDMStu.QueryScore(const StudentID: WideString): OleVariant; begin Result := ; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(SELECT PaperID, Subject, Score FROM NetTest.Papers +WHERE (StudentID = +StudentID+ +)AND(Score+); try ADOQuery1.Active := True; if not ADOQuery1.Fields0.IsNull then begin while not ADOQuery1.Eof do begin if ADOQuery1.Fields2.AsInteger 60 then Result := Result + + ADOQuery1.Fields0.AsString + + ADOQuery1.Fields1.AsString + + ADOQuery1.Fields2.AsString + else Result := Result + + ADOQuery1.Fields0.AsString 无忧无虑毕设网 ():毕业设计源码下载 毕业设计源码下载: + + ADOQuery1.Fields1.AsString + + ADOQuery1.Fields2.AsString + ; ADOQuery1.Next; end;/end while ADOQUery1.Active := False; end;/end if Result := Result + ; except ADOQUery1.Active := False; Result := ; end; end; function TMTSDMStu.UpDate(const StudentID, Age, PWD, Email: WideString): OleVariant; begin Result := 更新资料成功,请返回进行其他操作。 ; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(UPDATE NetTest.Students SET Age=+Age+, PWD= +PWD+, Email=+Email+ + WHERE StudentID=+StudentID+); try ADOQuery1.ExecSQL; except ADOQUery1.Active := False; Result := 更新个人资料失败!请重试! ;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论