毕业设计(论文)-ASP.NET网上选课系统设计.doc_第1页
毕业设计(论文)-ASP.NET网上选课系统设计.doc_第2页
毕业设计(论文)-ASP.NET网上选课系统设计.doc_第3页
毕业设计(论文)-ASP.NET网上选课系统设计.doc_第4页
毕业设计(论文)-ASP.NET网上选课系统设计.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

东华理工大学本科毕业设计(论文) 摘要 i 摘 要 大学期间总会有很多公共选修课,以往的选课方法是随堂报名。这种方法虽然 直接,但是造成选课的盲目性,有些课堂选课时人满为患,有些课堂无人选课。原 因是传统的选课方法没有预见性,大家没有事先协调好。使用了网上选课系统以后, 可以在开课前就在网上选课,每个学生的课程在开课前就确定好,不用浪费体力去 选课,还可以使教学资源合理平均地分配。该 b/s 结构的系统在 windows xp 系统 和 vs.net 平台下开发完成,使用 c作为 asp.net 的开发语言,sql server 2000 作为数据库。系统有较高的安全性和较好的性能。其中连接数据库的字符串可以随 时在 web.config 里修改,并经过编码加密,增加了灵活性,保护了数据库的安全。 代码中通过使用进程中的 session、尽量使用存储过程和尽量减少数据库连接的打开 时间等手段来提高性能。通过分析 b/s 结构的特点并结合我校公共选修课的实际情 况,提出了基于 b/s 结构网上选课系统的基本设计思想,简要介绍了系统各功能模 块及数据库的设计,着重讨论了用 asp.net 技术和 sql server 2000 开发网上选课 系统时的数据库访问技术和动态网页制作技术,并给出了部分实现代码。通过该系统, 使学生可以方便地在校园网上进行网上选课。 关键词:网上选课; 浏览器/服务器结构; 数据库管理系统; 存储过程 东华理工大学本科毕业设计(论文) 摘要 ii abstract there are many public elective courses during university period, and always we should goto classroom to enroll. although this method directly, but result in blindness of the course enrollment. some classrooms overcrowding during course choosing period, on the contrary some classrooms desolate. the reason of this situation is that the traditional method of course choosing lack prescience, and there are no prior coordination. with the help of public elective courses online course elect system, every students courses can be determined before the beginning of the term, saving physical force and reasonably distributing teaching resources.this b/s structure system is developed under vs.net platform in windows xp operating system, using c# as asp.net development language and sql server 2000 as the database. this system is of higher security and better performance. the character string, which is used to connecting to the database, can be modified at any time in the file “ web.config”. the string is encoded and encrypted, increasing flexibility of the system and security of the database. in code, through using the session in process, making use of stored procedure and minimizing the database opening time to improve performance of the system.this paper gives the basic design idea of the b/sbased online course elect system by analyzing the characteristic of the b/s structure and combining with the actual public elective courses conditions of our schoolit introduces the function module and database design briefly,followed by a discussion on database accessing technology and the active page technology of the course elect system based on asp.net and sql server 2000by using this system,students can elect courses online efficiently keywords: online course elect; b/s structure; dbms; stored procedure 东华理工大学本科毕业设计(论文) 目录 i 目 录 绪 论.1 课题背景1 课题研究的目的和意义1 国内外概况1 browserserver结构2 asp.net 和 ado.net2 本文的工作4 第一章 需求分析.5 1.1 系统简介.5 1.2 系统运行环境.5 1.2.1 硬件平台5 1.2.2 操作系统5 1.2.3 应用软件及开发平台5 1.3 系统的功能需求.5 1.4 系统的数据需求.6 第二章 系统设计.7 2.1 系统的数据库设计.7 2.1.1 数据流图7 2.1.2 数据字典8 2.1.3 系统的主要 er 图10 2.1.4 模式图(shema diagram)11 2.1.5 表的设计12 2.1.6 数据库模式所达到的范式分析15 2.1.7 触发器的设计16 2.1.8 存储过程的设计17 2.2 系统功能设计.21 2.2.1 学生模块22 2.2.2 管理员模块22 第三章 系统实现23 3.1 网业设计.23 3.1.1 学生页面设计23 东华理工大学本科毕业设计(论文) 目录 ii 3.1.2 管理员页面设计27 3.2 功能模块设计28 3.2.1 学生模块设计.29 3.2.2 管理员模块设计.30 3.3 身份认证设计.31 3.4 连接数据库的相关设计.34 3.4.1 连接字符串相关问题34 3.4.2 绑定数据库数据的相关设计36 3.5 优化性能的相关设计.37 3.5.1 使用存储在进程中的 session.37 3.5.2 数据库连接打开的时间尽可能短38 3.5.3 使用带有参数的 sql 命令38 3.5.4 使用 sql server 存储过程38 总结与展望.39 致致 谢谢.41 参考文献.42 东华理工大学毕业设计(论文) 绪论 1 绪 论 课题背景 在信息全球化、网络化的今天,校园网已成为每所高校必备的信息基础设施, 也成为学校提高教学管理水平的重要手段。为了更好地实现管理的科学化、现代化, 进一步提高教学质量和管理水平,各种依托于校园网的管理信息系统应运而生。选 修课网上选课系统就是这些信息系统中不可或缺的一员。以往的选课方法是随堂报 名。这种方法虽然直接,但是存在很多弊病,如造成选课的盲目性,去不同的课堂 报名的学生人数天壤之别,浪费学生的时间和体力,使教学资源不能得到合理的充 分利用。这些都是因为传统的选课方法没有预见性,大家没有事先协调好。这就需 要有一个选修课网上选课系统来改变这种现状,在课程开始之前就安排好各个学生 要上的课程,合理充分地利用好教学资源。 课题研究的目的和意义 课题研究的意义: (1) 给出解决传统选课方式浪费时间和精力的问题的方法,讨论实现一个网上 选课系统的可行性,使在网上进行选课成为可能; (2) 对一个基于 b/s 结构的选修课网上选课系统进行设计并具体实现,做出一 个可以完成基本选课功能及学生信息管理、教师信息管理和课程信息管理功能的 mis 系统。 国内外概况 选修课网上选课系统已经出现很长时间了,实现该系统的方法也多种多样,主 要有 jspmysqltomcat,phpmysqlapache,aspsql serveriis 和 asp.netsql serveriis 等。这些实现方法中前三种的开发语言都是 html 设计 代码和后台编程代码不分离的,造成代码不容易读懂和不利于后期维护。asp.net 是微软推出的新一代开发工具,实现了 html 设计代码与后台编程代码的分离。该 系统中使用 asp.netsql serveriis,主要考虑到同学们选课主要使用 windows 系统,对 asp.net 支持良好,而且 asp.net 代码更易于维护。对于数据库存取操 作,多数系统直接将 sql 语句写在代码里进行数据库查询,在该系统中,绝大部分 功能都使用存储过程来完成数据库访问的工作。 东华理工大学毕业设计(论文) 绪论 2 browserserver 结构 browser/server(b/s)结构是一种以 web 技术为基础的新型的 mis 系统平台模式。 他把传统的 c/s 结构中的服务器部分分解为一个数据服务器与一个或多个应用服务 器(web 服务器),从而构成一个三层结构的客户服务器体系1如图 1.1 所示。 图 1.1 三层 b/s 结构 采用这种胖服务器端,瘦客户端的运行模式,主要的数据计算操作都在服务器 端进行,应用程序也在服务器端安装,客户端不用安装应用程序,所有操作均通过 浏览器来完成。与传统的 c/s 结构相比,它具备以下的优点: (1)简化了客户端,客户端软件仅需安装浏览器,客户端硬件配置要求较低。 (2)使用户的操作变得更简单,用户只需了解浏览器的使用,就可访问不同的应 用,获取所需的信息。 (3)特别适用于网上信息发布与获取,使得传统的 mis 的功能有所扩展。 鉴于 b/s 结构的诸多优点与本系统的实际需求,最终决定采用 b/s 结构。 asp.net 和 ado.net visual studio.net 是 microsoft 公司推出的可视化编程工具,asp.net 作为 visual studio.net 的组成部分之一,已经成为 internet 中 web 应用程序的新 一 代开发工具,并逐渐被广大程序员普遍采用2。 在微软的.net 战略中,asp.net 是非常重要的一环,它相对于以前的 asp 有 了相当大的改进。相对于其他的 web 应用开发模型来讲,asp.net 具有更大的优 势,其主要特点包括: asp.net 与其前版 asp 不同,它是在服务器上运行的编译好的公用语言运行 时代码,可以更好地提高程序运行性能。 asp.net 与语言无关,它可以采用 c、vb.net 以及 jscript 等支持.net 框 架的语言来进行开发,开发者可以根据自己的情况进行选择。在这个系统中使用的 是 c作为开发语言。c是一门崭新的语言,学过 c的很容易掌握它,而且它 东华理工大学毕业设计(论文) 绪论 3 和 java 也有很多相似之处。它具有开发效率高,应用范围广等特点,成为当前程序 开发领域的一大热门。 asp.net 支持开发 web 服务,它对 xml 技术提供了很好的支持,使得 web 应用程序的开发更具可扩展性和跨平台性。 asp.net 提供了很多功能强大的服务器端控件,使得程序的开发更趋于简单化。 同时,它还提供了 html 设计代码和后台编程代码分离的技术,并在后台代码开发 中提供强大的智能化支持,使得开发工具更具有条理性。 采用 asp.net 技术开发的系统在性能上有了很大的改善,其主要表现在以下 几方面: (1)由于 asp 页面每次打开都必须经过先编译后解释的过程,所以页面在反复 打开时速度没有任何提升,而 asp.net 页面只需要一次编译后不需要再重新编译, 直到该页面被修改或 web 应用程序重新启动。这使得在多次访问时速度有了极大 的提升。尤其在这种访问量很大,很多人同时并发访问的情况下,访问速度的提升 更加明显。 (2)由于 asp 没有提供任何输出数据为内容的元件,所以在使用 asp 撰写数据 库页面时只能借助 ado 的 recordset 对象逐笔读取记录,而 asp.net 通过 ado.net 提供的 datagrid 等数据库元件可以直接和数据库联系。在这个选课系统 中就是用 datagrid 绑定查询结果来展示课程信息,并在 datagrid 的列里绑定按钮进 行相应的删除和编辑等操作。 (3)asp.net 支持应用程序的实时更新。管理员不必关掉网络服务器或者甚至 不用停止应用程序的运行就可以更新应用文件。应用程序文件永远不会被加锁,因 此甚至在程序运行时文件就可以被覆盖。当文件更新后,系统会温和地转换到新的 版本。 (4)asp.net 采取”codebehind”方式编写代码,使得代码更易于编写,结构 更清晰,降低了系统的开发与维护的复杂度和费用3。 ado.net 用来访问数据库。与数据库相连,adonet 提供了如下 3 种方式: 通过 odbc 相连;通过 oledb 相连;直接与 sql server 相连。3 种方式由于应用 层次的差异,使得效率由低到高,独立性由高到低。在这个系统中,使用 sql server 作为数据库,保证了系统的高效 4。 传统的应用程序是通过先建立到数据库的连接,在程序的整个运行过程中维护 连接的方式来设计的。aspnet 采取了断开连接方式的数据结构。当浏览器向 web 服务器请求网页时,服务器处理这个请求,并将所请求的网页发送给浏览器, 然后连接就被断开,直到浏览器发出下一个请求。 adonet 的另一个创新是引人了数据集(dataset)。一个数据集是内存中提供 数据关系图的高速缓冲区。数据集对数据源一无所知,它们可以由程序或通过从数 东华理工大学毕业设计(论文) 绪论 4 据仓库中调入数据而被生成、填充。不论数据从何处获取,数据集都是通过使用同 样的程序模板而被操作的,并且它使用相同的潜在的数据缓冲区。 本文的工作 本文以 visual studio.net 为开发工具,使用 asp.net(c)为开发语言5, 以 sql server 2000 为后台数据库,在需求分析的基础上,提出了系统的设计,并最 终实现了选修课网上选课系统.。系统的主要功能有: 课程信息的管理,教师信息的 管理,学生信息的管理和学生网上选课的管理。 第 1 章介绍了当前选课系统的发展现状,开发工具和一些背景知识。 第 2 章对该系统进行了需求分析。 第 3 至 4 章介绍了系统设计与系统的具体实现。 东华理工大学毕业设计(论文) 需求分析 5 第一章 需求分析 1.1 系统简介 这是一个在 visual studio.net 集成环境中使用 c开发出来的系统,可以在 任何安装有 iis(internet information services)和 m framework 的 windows 系统下安装服务器端,数据库可以放在本地,也可以放在网络上的任意位 置。但是服务器和数据库连接的网络带宽要足够大,从而保证数据存取的快速有效。 在任何装有浏览器并可以上网的电脑上都可以访问该系统。 1.2 系统运行环境 1.2.1 硬件平台 intel 或 amd 平台,cpu 1g 以上,内存 128m 以上,硬盘 10g 以上。 1.2.2 操作系统 服务器在 windows 操作系统中,数据库在服务器可以访问的网络中,浏览器可 以在 windows 或 unix,linux 系统下。 1.2.3 应用软件及开发平台 服务器所在的电脑上应安装 windows 操作系统,要安装 iis(internet information services)和 m framework。开发系统的电脑中要安装 visual studio.net 开发环境和 iis 及 sql server2000,以便于调试。开发平台为 windows 操作系统下的 vs.net 平台,使用 c作为开发语言。数据库语言为 t-sql6,可 以编写存储过程(stored procedure)和触发器(trigger) 。 1.3 系统的功能需求 系统需要完成以下功能: (1)课程信息的管理,包括课程的录入,修改,删除等。 (2)教师信息的管理,包括教师信息的录入和修改,删除等。 (3)学生信息的管理,包括学生信息的录入,修改和删除,学生登录密码初始化 等。 (4)学生网上选课的管理,包括学生通过浏览器进行选课,取消选课,查询选 课及修改登录密码等。 东华理工大学毕业设计(论文) 需求分析 6 这个系统有两种用户,一是学生用户,二是网络管理员,都通过浏览器访问系 统。学生用户在这个系统中可以进行的操作不是很多,包括选课,取消选课,查询 选课和修改登录密码等。但是因为学生用户很多,而且很可能同时选课,因此要增 强系统的并发性,提高性能。网络管理员要进行课程信息、学生信息和教师信息的 录入及维护,可以进行的操作比较多,而且有比较大的风险性,因为对一些敏感操 作要提醒进行确认;同时由于管理员比较少,不用太多考虑并发性。 1.4 系统的数据需求 系统需要数据库支持,该系统使用的是 sql server 2000 作为数据库。学生信 息,教师信息和课程信息的录入由管理员完成。因为选课系统的数据不是十分海量, 所以选用了对系统要求不是很高而且比较易用的 sql server 2000,同时可以使用 ado.net 更方便地编写程序。在 sql server 2000 中新建一个名为 wyh 的数据库 专门存放该系统所要用到的数据,并新添加一个名为 wyh 的用户只能访问这个数 据库,从而减少数据库的风险。 东华理工大学本科毕业设计(论文) 系统设计 7 第二章 系统设计 2.1 系统的数据库设计 数据库的设计是一个 mis 系统中至关重要的部分,良好的数据库设计是一个系 统成功设计并实现的先决条件。如果数据库设计得不好,系统可能会不稳定,而数 据库的修改可能会造成整个系统都要推倒重新编写。可见数据库的设计是至关重要 的。一般要求数据库中的关系模式都达到第三范式(3nf) 。而存储过程、触发器也 是一个基于 sql server 2000 的数据库中不可缺少的部分。 2.1.1 数据流图 数据流图是一种图形化技术,它描绘信息流和数据从输入移动到输出过程中所 经受的变换。在数据流图中没有任何具体的物理元素,它只是描绘信息在软件中流 动和被处理的情况。因为数据流图是系统逻辑功能的图形表示,即使不是专业的计 算机技术人员也容易理解它,所以是分析员与用户之间极好的通信工具。 本系统的主要数据流图如图 2.1 和图 2.2。 1 图 2.1 学生相关的数据流图 东华理工大学本科毕业设计(论文) 系统设计 8 2 图 2.2 管理员相关的数据流图 2.1.2 数据字典 为了使各数据流,数据处理过程,存储过程能反映其中的数据层,数据项目, 数据特性,所以用数据字典来对数据流图中的各成份进行具体的定义,为系统的分 析,设计及以后的实现提供有关元素一致性定义和详细的描述。数据字典是为了描 述在结构化分析过程中定义的对象内容而使用的一种半形式化的工具,是描述数据 的信息的集合,是对系统中使用的所有数据元素的定义的集合。 该系统的主要数据字典如表 2.1、表 2.2 及表 2.3 所示: 东华理工大学本科毕业设计(论文) 系统设计 9 表 2.1 系统的数据流说明 数据流名称数据流来源数据流去向平均/最高流量 学生登录学生学生登录验证选课时很高,平时很少 修改密码(学生)学生登录验证密码修改 1选课时一般,平时很少 选课学生登录验证选课处理选课时很高,平时没有 删除选课学生登录验证删除选课选课时很高,平时没有 查询选课学生登录验证查询选课选课时很高,平时较少 管理员登录管理员管理员登录验证学期开始较多,平时较 少 修改密码(管理员)管理员登录密码修改 2较少 编辑学生信息管理员登录学生信息处理一般 数据流名称数据流来源数据流去向平均/最高流量 编辑课程信息管理员登录课程信息处理学期开始较多,平时较 少 编辑教师信息管理员登录教师信息处理一般 初始化学生密码管理员登录学生密码初始化较少 表 2.2 系统的数据流构成 数据流数据组成 学生登录学号,学生密码 修改密码(学生)学号,学生旧密码,学生新密码 选课学号,课程编号 删除选课学号,课程编号 查询选课学号 管理员登录管理员编号,管理员密码 修改密码(管理员)管理员编号,管理员旧密码,管理员新密码 编辑学生信息学号,要更改的学生相关信息 编辑课程信息课程编号,要更改的课程相关信息 编辑教师信息教师编号,要更改的教师相关信息 初始化学生密码学生学号,学生姓名 东华理工大学本科毕业设计(论文) 系统设计 10 表 2.3 数据流的主要数据项详解 数据项名含义别名数据类型长度取值范围取值含义与其他数据项的关系 学号学生编号无字符串8 字符数字唯一 学生密码学生登录密码无字符串420数字、字 母 学生旧密码学生的原密码密码字符串420数字、字 母 学生新密码学生的新密码密码字符串420数字、字 母 课程编号课程的编号无字符串7 字符数字唯一 管理员编号管理员的编号无字符串3 字符数字唯一 管理员密码管理员的密码无字符串420数字、字 母 学生姓名学生的姓名无字符串最多 12字母、汉 字 2.1.3 系统的主要 er 图 实体关系(e-r)数据模型基于对现实世界的这样一种认识:现实世界由一 组称为实体的基本对象以及这些对象间的联系构成。实体是现实世界中可区别于其 他对象的一个“事件”或一个“物体”7。 该数据库的主要 e-r 图如图 2.3 所示。 东华理工大学本科毕业设计(论文) 系统设计 11 n1 1 n mn 1 n 图 2.3 数据库设计的主要 er 图 为了节省篇幅,实体与属性的关系没有用图形表示,每个实体定义的属性如下, 其标识码用下横线画出:8 院系: 院系简写,院系名称,院系负责人,院系办公电话 学生: 学号,学生姓名,性别,年龄,登录密码 教师: 教师编号,教师姓名,教师职称,教师性别,教师年龄 课程: 课程编号,课程名称,任课老师编号,学时,课程容量,已选人数, 开课周次,上课时间,上课教室,备注信息 因为每个课程只有一个确定的任课老师,所以把任课老师作为课程的一个属性 来存储,也不会出现冗余的现象,而且比较简单,查询信息的时候也避免了大量的 自然连接操作,可以提高系统的性能。可是这样的话老师和课程的关系就隐含在属 性中,不是那么明显。从数据库模式设计上来说,更好的方法是把课程和任课教师 的联系作为一个新的关系模式,而不是把教师作为课程的属性,这样即使一个课程 有多个老师也可以表示,但是由于要多一个表,会多使用一定的存储空间。在这里 使用了比较简单的方法。 2.1.4 模式图(shema diagram) 一个含有主码和外码依赖的数据库模式可以用模式图来表示,可以直观地展示 出数据库各个表之间的外码依赖。该数据库的关系图如图 2.4。7 东华理工大学本科毕业设计(论文) 系统设计 12 sno sname sdept student cno cname ctno course sno cno . sc tno tname tdept teacher dno dname dmaster department 图 2.4 数据库设计关系图 2.1.5 表的设计 表的设计又是数据库设计中最重要的部分,因为它决定了数据库的关系模式能 达到哪个范式,是否会出现数据冗余的现象,是否存在数据不一致的风险,是否能 达到实体完整性、数据完整性和用户定义完整性的要求。 在这个系统中,最重要的是表有 4 个,包括学生信息表,教师信息表,课程信 息表和选课信息表。其中选课信息表是最经常存取的表,因为学生要选课、取消选 课或查询自己的选课信息。学生信息表要包含学生的个人信息,还要包含登录选课 系统的密码。教师信息表含有教师的信息。课程信息表包含了所有课程信息,而每 个课程要有一个老师来上课(在本校的公选课里,每个公选课都有一个课程编号, 对应一个任课老师,不同时间的相同课程的课程编号也不一样。所以可以认为每个 课程编号只对应一个教师。而且通常情况下,课程编号不同的名称相同的课程也是 由同一个老师来上的) ,所以这个表里有一个属性是教师编号,而教师编号是教师表 的主码。选课表保存学生的选课信息。还有一个管理员表和院系信息表,其中管理 员表用来记录管理员的基本信息及登录密码,院系信息表用来存储院系信息,而学 生和教师都只属于某个特定院系,所以学生表和教师表都有一个“院系编号”的属 性,而“院系编号”是院系信息表的主码。 各个表的具体设计如下: (1) 院系信息表(department):这个表用来保存全校各个院系的信息,包括 院系简写(dno) ,院系名称(dname) ,院系负责人(dmaster)和院系办公室电话 东华理工大学本科毕业设计(论文) 系统设计 13 (dtel) 。一般情况下,每个院系有一个负责人,有一个办公电话。所以简单地这样 设计这个表,当然实际情况中还应该有更多的属性。这个系统中只是为了说明学生 和教师所在院系才引入这个表的。这个表的各属性详细信息如表 2.4。 表 2.4 表 department 的详细说明 是否主码属性名属性说明数据类型数据长度可否为空默认值 是dno院系简写varchar15不可无 dname院系名称varchar40不可无 dmaster院系负责人varchar12可以无 dtel院系办公电话char8可以无 (2)学生信息表(student):这个表用来保存所有学生的信息,包括学生学号 (sno) ,学生姓名(sname) ,学生所在院系(sdept) ,学生性别(ssex) ,学生年龄 (sage)和学生登录密码(spwd) 。学生学号是主码,唯一标识一个学生。学生性别 只能为 m(male)或 f(female) ,学生年龄要在 10 岁和 40 岁之间。为了实际需要, 所有项均不可以为空;学生登录密码初始为“8888” ,可由学生以后自行更改。学生 所在院系(sdept)为外码,引用表 department 的 dno 属性。这个表的各属性详细信 息如表 2.5。 表 2.5 表 student 的详细说明 是否主码属性名属性说明数据类型数据长度可否为空默认值 是 sno 学生学号 char8 不可无 sname 学生姓名 varchar12 不可无 sdept 学生所在院系 varchar15 不可无 ssex 学生性别 char1 不可无 sage 学生年龄 int4 不可无 spwd 学生登录密码 varchar20 不可 8888 (3)教师信息表(teacher) ;这个表用来保存全校教师的信息,包括教师编号 (tno) ,教师姓名(tname) ,教师所在院系(tdept) ,教师职称(ttitle) ,教师性别 (tsex)和教师年龄(tage) 。教师编号是主码,唯一标识一个教师。教师职称为 “教授” 、 “副教授” 、 “讲师”等有实际意义的字符串,教师性别只能为 m(male) 或 f(female) ,教师年龄要在 20 岁和 80 岁之间。为了实际需要,所有项均不可以 为空。教师所在院系(sdept)为外码,引用表 department 的 dno 属性。这个表的各 属性详细信息如表 2.6。 东华理工大学本科毕业设计(论文) 系统设计 14 表 2.6 表 teacher 的详细说明 是否主码属性名属性说明数据类型数据长度可否为空默认值 是 tno 教师编号 char6 不可无 tname 教师姓名 varchar12 不可无 tdept 教师所在院系 varchar15 不可无 ttitle 教师职称 varchar16 不可无 tsex 教师性别 char1 不可无 tage 教师年龄 int4 不可无 (4)课程信息表(course):这个表保存着所有公共选修课的信息,包括课程编 号(cno) ,课程名称(cname) ,任课老师编号(ctno) ,课程学时(cperiod) ,课堂 容量(ccapacity) ,课程的已报名人数(cnumber) ,课程的开课周次(cweeks) ,课 程的开课时间(ctime) ,课程所在教室(croom) ,课程信息备注(cremark) 。课程编 号是主码,唯一标识一个课程,同一个名称的课可以有不同的课程编号,认为是不 同的课。课程学时为课程所对应的课堂节数,而 16 个学时对应一个课程学分。因为 一般来说选修课只有 1 学分,1.5 学分,2 学分这三种,所以学时只能在 16 和 32 之 间,学分只能在 1 和 2 之间。而控制课程学时只能出现 16,24,32 这三种则需要在 程序中进行限制(使用 dropdownlist 控件而不是使用文本框 textbox,限制可以输 入的内容) 。输入课程信息时只用给出课程学时即可,学分在查询时自行算出。如果 把学分当成这个表的一个属性,则学时决定学分,存在传递依赖,不符合第三范式。 关于范式的具体论述见 2.1.6 节。 表 2.7 表 course 的详细说明 是否主码属性名属性说明数据类型数据长度可否为空默认值 是 cno 课程编号 char7 不可无 cname 课程名称 char30 不可无 ctno 任课教师编号 char6 不可无 cperiod 课程学时 int4 不可无 ccapacity 课程容量 int4 不可无 cnumber 已选人数 int4 不可 0 cweek 开课周次 varchar20 不可无 ctime 开课时间 varchar8 不可无 croom 上课教室 varchar15 不可无 东华理工大学本科毕业设计(论文) 系统设计 15 cremark 课程信息备注 varchar40 可以 “” (5)选课信息表(sc):这个表存放所有的学生的选课信息,是这个系统中最 常访问的表。该表包括学生学号(sno) ,课程编号(cno)和分数(mark) 。其中学 生学号和课程编号构成主码,也都是外码,分别引用了 student 表的 sno 和 course 表的 cno。分数(mark)则标识该选课的得分,默认为-1。在学期结束的时候,会有 相应的分数,最低为 0,最高为 100。通过分数可以判定课程是该学期选的还是以前 就选了并且通过的。一般情况下,如果公选课没有通过,则将该选课删除,而不是 记不及格。所有分数为-1 的课程为该学期所选,并通过相应手段控制一个学期最多 选 2 门。这个表的各属性详细信息如表 2.8。 表 2.8 表 sc 的详细说明 是否主码属性名属性说明数据类型数据长度可否为空默认值 是 sno 学生学号 char12 不可无 是 cno 课程编号 char7 不可无 mark 课程得分 int4 可以 -1 (6)管理员信息表(admin):存放管理员信息,包括管理员编号(ano) , 管理员名称(aname) ,管理员电话(dtel) ,管理员密码(apwd) 。其中管理员编号 为主码,唯一标识一个管理员,管理员密码用来管理员登录时的身份验证。这个表 的各属性详细信息如表 2.9。 表 2.9 表 admin 的详细说明 是否主码属性名属性说明数据类型数据长度可否为空默认值 是 ano 管理员编号 char3 不可无 aname 管理员姓名 varchar12 不可无 atel 管理员电话 varchar11 可以无 apwd 管理员密码 varchar20 不可无 东华理工大学本科毕业设计(论文) 系统设计 16 2.1.6 数据库模式所达到的范式分析 一般而言,关系数据库设计的目标是生成一组关系模式,使之既不必存储不必 要的重复信息,又可以方便地获取信息。所以要设计满足适当范式的模式。如果达 到了第三范式(3nf) ,就可以比较好地实现无冗余并不会出现更新或删除错误,不 容易出现数据不一致的情况。下面讨论一下本系统所设计的数据库达到了哪个范式。 先分析比较简单的 admin 表和 department 表,显然 admin 表里管理员编号 (ano)是主码,直接决定了其他三个属性管理员姓名(aname) 、管理员电话 (atel)和管理员密码(apwd) ,没有部分函数依赖和传递函数依赖,符合第三范式; department 表和 admin 表差不多,院系简写(dno)直接决定了其他三个属性院系 名称(dname) 、院系负责人(dmaster)和院系电话(dtel) ,符合第三范式。 表 student、表 teacher 和表 course 相对于先前分析的两个表来说,都多了一个 外码。student 和 teacher 的所在院系都为 department 的主码,course 的任课老师为 teacher 的主码。但是这三个表同样都是主码直接决定其他属性,不存在部分函数依 赖和传递函数依赖,同样符合第三范式。表 sc 为选课信息表,它由学生学号 sno 和课程编号 cno 共同组成主码,而这两个又都是外码,主码能直接确定其他两个属 性,不存在部分函数依赖和传递函数依赖,符合第三范式。 如果把学分设计成 course 表的一个属性,则学时决定学分,存在传递函数依赖, 不符合第三范式。故不把学分设计成 course 表的属性,而是在查询数据库时通过学 时把学分计算出来展示给用户。这样 course 表中就不存传递函数依赖,符合第三范 式。 综上,该数据库模式符合第三范式(3nf) 。 2.1.7 触发器的设计 触发器是一系列 sql 语句的集合,当对数据库作修改时,它自动被执行。数 据库就像存储普通数据一样存储触发器,所以它们被永久保存,也可以被所有的数 据库操作访问。一旦把一个触发器输入数据库,只要指定的事情发生,相应的条件 被满足,数据库系统就有责任去执行它。 触发器可以帮助用户做许多很有用的事情,使用户要进行的操作更加简化,同 时还可以避免某些数据不一致的情况。 在这个系统所用的数据库中,就是为了简化操作、避免数据不一致而使用了触 发器。 在 sc 表中如果要插入一行的话,就表示某个学生选取了一门选课。那么这个 时候对应的课程的已选人数(cnumber)会加一,留给其他学生的位置变少。这时考 虑可以使用触发器实现这个功能:在 sc 表中建立一个触发器,每当插入一行的时 东华理工大学本科毕业设计(论文) 系统设计 17 候就触发,这个触发器的作用就是把 sc 表中增加的这行里对应的课程编号的已选 人数(cnumber)在 course 表中加一,这样简化了操作,只要在 sc 中插入一行即可, 不用同时考虑 course 表的相关动作。 下面是这个触发器的代码: create trigger addsctrigger on sc after insert as set nocount on declare cno char(7) select cno=cno from inserted update course set cnumber=cnumber+1 where cno=cno 这个触发器在从 sc 表中插入一行时被激发。它首先定义变量cno,它的数据 类型和长度必须与 course 表的 cno(课程编号)一致。然后它通过“select cno=cno from inserted”读入插入行的课程编号(cno)并存入已经定义好的变量 cno 中备用。最后,它通过这个课程编号(cno)找到 course 表中的相应行,对 它的已选人数(cnumber)进行加一操作。 这个触发器逻辑清楚,功能简单但是实用,在 sc 表中插入新行的时候,不用 再考虑 course 表的相应操作,使用简单,同时避免了潜在的数据不一致的情况,增 加了系统的可靠性。 在从 sc 表中删除某一行的时候也会遇到类似问题,因此定义一个类似的触发 器 delsctrigger 来完成在 course 表中对应课程的已选人数(cnumber)减一的做操, 因为与上面的触发器类似,在此不再赘述。 在数据库中,触发器有着很大的作用。这个系统中的数据库设计比较简单,只 在这两个个地方使用了触发器。在复杂的数据库模式中,触发器的作用更加强大。 可惜一些数据库管理系统不支持触发器,使得这个工具不能随时随地发挥作用。ms sql server 2000 对触发器及存储过程的支持非常好,这也是选用它作为数据库的一 个重要原因。 2.1.8 存储过程的设计 在大型数据库系统中,存储过程和触发器具有很重要的作用。无论是存储过程 还是触发器,都是 sql 语句和流程控制语句的集合。就本质而言,触发器也是一 东华理工大学本科毕业设计(论文) 系统设计 18 种存储过程。存储过程在运算时生成执行方式,所以,以后对其再运行时其执行速 度很快。sql server 2000 不仅提供了用户自定义存储过程的功能,而且也提供了许 多可作为工具使用的系统存储过程。 存储过程(stored procedure)是一组为了完成特定功能的 sql 语句集,完成 某一个特定的功能,经编译后存储在数据库中。它就像是编程语言中的函数,事先 定义好函数以后,在需要使用的时候只要调用一下就能完成需要的工作。用户通过 指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 存储过程有许多优点: (1) 存储过程允许标准组件式编程存储过程在被创建以后可以在程序中被多 次调用,而不必重新编写该存储过程的 sql 语句。而且数据库专业人员可随时对存 储过程进行修改,但对应用程序源代码毫无影响(因为应用程序源代码只包含存储 过程的调用语句) ,从而极大地提高了程序的可移植性。 (2)存储过程能够实现较快的执行速度。如果某一操作包含大量的 transaction-sql 代码或分别被多次执行,那么存储过程要比批处理的执行速度快很 多。因为存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行 分析、优化,并给出最终被存在系统表中的执行计划。而批处理的 transaction-sql 语句在每次运行时都要进行编译和优化,因此速度相对要

温馨提示

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

评论

0/150

提交评论