第8章数据库应用系统设计实例习题解答.doc_第1页
第8章数据库应用系统设计实例习题解答.doc_第2页
第8章数据库应用系统设计实例习题解答.doc_第3页
第8章数据库应用系统设计实例习题解答.doc_第4页
第8章数据库应用系统设计实例习题解答.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

第8章 数据库应用系统设计实例习题解答 一. 简答题1、 试述瀑布模型和原型模型的优缺点? 瀑布模型(Waterfall Model)1970年WinSTon Royce提出了著名的瀑布模型,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:(1) 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;(2) 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;(3) 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。瀑布模型采用文档驱动,系统可能不满足客户的需求。快速原型模型关注满足客户需求,可能导致系统设计差、效率低,难于维护。2、 简述客户/服务器应用系统的开发过程?1) 对应用系统进行分析,完成客户和服务器的功能划分2) 架设服务器3) 选择客户端开发工具和客户服务器连接中间件4) 开发应用系统3、 简述浏览器/服务器应用系统的开发过程?1) 规划Web站点2) 安装Web服务器3) 构建或虚拟网络环境4) 开发Web站点5) 发布Web站点二选择题1、软件工程的出现主要是由于 C 。(A)程序方法学的影响 (B)其他工程科学影响(C)软件危机的出现 (D)计算机的发展2、需求分析系统分析员和用户共同确定软件的功能和限制,提出 A 、 B 、 C 。(A)可行性研究报告 (B)数据字典(C)系统功能说明书 (D)实施方案3、瀑布模型是一种 B 。(A)软件维护模型 (B)软件生命期模型(C)软件生命周期 (D)程序设计方法学4、软件测试的目的是 B 。(A)改正错误 (B)发现错误(C)推断错误原因 (D)修改程序5、数据流图是用于 C 阶段的工具?(A)可行性分析 (B)详细设计(C)需求分析 (D)程序编码6、软件生命周期中,用户参与主要在 A 。(A)软件定义期 (B)软件开发期(C)软件维护期 (D)整个软件生命周期过程中7、在软件工程方法中,常使用的两种软件开发模型是瀑布模型和原型模型,这两者的差别和联系有: A 。 (1)前提和假设不同 (2)方法相互补充 (3)方法相互排斥 (4)前提和假设相同 试给出最正确的组合结论选择(A) (1)、(2) (B) (4)、(3)(C) (4)、(2) (D) (1)、(3)三 应用题1、 参考本章宾馆信息管理系统的分析和设计过程,分析并设计一个高校人事管理系统,具备人员入校 (毕业分配、调入等)、出校(调出、退体等)、基本情况查询和报表打印等功能。毕业生调入人员信息录入人事档案人事处审核退休处理调离退休人员调离人员查询打印职工号char(10)not null primary key姓名varchar(20)not null 性别char(2)民族varchar(20)出生日期datetime身份证号char(18)not null 籍贯varchar(20)政治面貌varchar(20)毕业院校varchar(50)所学专业varchar(50)毕业时间datetime最高学历varchar(20)最高学位varchar(20)调入时间datetime调离时间datetime退休时间datetime2、 参考本章图书网上销售系统的分析和设计过程,分析并设计一个全校选修课报名管理系统。讲 授指 导学号学生名password班级系别学生所属系联系方式教 师教师号任课老师password选 修选修课所属系限招人数任课老师学分教师号课时课程号已招人数开课时间结束时间课程介绍课程名 1 n M n N m1) 管理员(admin):在admin表中存放管理员信息。2)课程信息表(class):在class表中存放与课程内容相关的信息。3)选课记录表(grade):在grade表中存储每一名学生选课记录。4)学生信息表(student):在student表中存放学生个人信息。5)教师表(teacher):在teacher表中存放教师个人信息。公共函数创建数据库连接(Connection):本系统先建立一个连接数据库的函数文件,然后再调用此文件,以方便在各个页面中的实现对数据库的访问。链接用以保持一些关于正在访问的数据的一些状态信息,以及链接者信息。ASP文件中如果要访问数据,必须首先创建与数据库的链接的函数,其语法如下:Function GetSQLServerConnection( Computer, UserID, Password, Db ) Dim Params, conn Set GetSQLServerConnection = Nothing Params = Provider=SQLOLEDB.1 Params = Params & ;Data Source= & Computer Params = Params & ;User ID= & UserID Params = Params & ;Password= & Password Params = Params & ;Initial Catalog= & Db Set conn = Server.CreateObject(ADODB.Connection) conn.Open Params Set GetSQLServerConnection = connEnd Function此函数创建了链接对象Conn,打开链接,为“Params”。创建数据对象(RecordSet)ADO中的数据对象通常保存的是查询结果。RecordSet是ADO中最复杂的对象,有许多属性和方法。RecordSet保存的是一行行的记录,并标有一个当前记录。以下是创建函数:Function GetSQLServerRecordset( conn, source ) Dim rsSet rs = Server.CreateObject(ADODB.Recordset) rs.Open source, conn, 2, 2 Set GetSQLServerRecordset = rsEnd FunctionFunction GetSQLServerStaticRecordset( conn, source ) Dim rs Set rs = Server.CreateObject(ADODB.Recordset) rs.Open source, conn, 3, 2 Set GetSQLServerStaticRecordset = rsEnd Function其中 set rs=server.CreateObject(adodb.recordset)这条语句创建了对象RecordSet, rs是一个字串,代表一条标准的SQL语句。例如:set rs=conn.Execute(select * from grade)其中Conn是先前创建的链接对象,这条语句执行后,对象RecordSet中就保存了表 grade中的所有记录。操作数据库通过调用链接对象的Execute方法来将查询结果返回给一个数据对象或进行添加、删除等操作。例如:sql=insert into student(“学号”) values(&request.form(学号)&)conn.execute(sql) */执行添加操作sql=delete from student where “学号”=&request.querystring(学号)conn.execute(sql) */执行删除操作关闭数据对象和链接对象在使用了ADO对象之后要关闭它,因为它使用了一定的服务器资源。通过调用函数文件实现关闭,然后再释放它。Function GetSQLServerRs( Computer, UserID, Password, Db, source, Cursor ) Dim conn, rs On Error Resume Next Set GetSQLServerRs = Nothing Set conn = GetSQLServerConnection( Computer, UserID, Password, Db ) If conn Is Nothing Then Exit Function Set rs = Server.CreateObject(ADODB.Recordset) If Err.Number 0 Then Exit Function rs.Open source, conn, Cursor, 2 If Err.Number 0 Then Exit Function Set GetSQLServerRs = rsEnd Function */关闭创建的数据对象及链接对象/*模块详解登录分析:% if (Request(submit) Empty and (request(id)= or request(password)=) thenresponse.write请输入密码或用户名else If Request(submit) Empty Then Set conn = GetSQLServerConnection( (local),sa, sa, netclass ) Set rs = GetSQLServerStaticRecordset(conn, student)% */如果当学生用户输入相关登录身份时,连接数据库,并打开student表 /*% i=0 while not (rs.eof or i=1) */如果该身份在记录中存在,将获得的“id”传递给打开的记录集rs(2), if rs(2)=request(id) then 并且与该记录集中的“password”字段对应的内容做比较/* if request(password)=rs(1) then i=1 end ifrs.movenext wend if i=1 then rs.moveprevious */如果用户名与密码相匹配,那么显示“id欢迎你的到来”/*response.Write request(id) response.write 欢迎你的到来 session(id)=rs(2) */并且把rs(2)中对应的内容传递给对象(session(“id”)), 在下面页面跳转中该变量不会改变。/*Else response.write用户名错误或密码错误 */否则登录失败/* end if%开课情况与选课内容分析:% if rs2.eoftrue then sql=select * from grade where 学号=&session(id)& set rs5 =server.CreateObject(adodb.recordset) rs5.open sql,conn,1,1 */根据学生登录身份,打开该学生的选课记录表/* i=rs5.recordcountif i=5 then % */判断记录集是否超过5条/* */若大于5,不能再选修课程了/*MsgBox 你已修满课程,不能再修了! history.back() =rs(2) then */当前选课时间要符合开课时间和结束选课时间的要求。/* if rs(0)rs(1) then*/ 选择的课程中不能选报已被报满的课程。/*if daters(3) thenrs3.addnew*/若满足以上几个约束条件,那么从rs(选课表)中获取相关课程 rs3(2)=rs2(0)内容添加到rs3记录集中(学生选课记录表)。/* rs3(1)=request(课程号) . . rs3(4)=rs2(4) rs3.update rs(0)=rs(0)+1 */在学生选课成功后,对于选课表中的“实招人数”一栏要做相 rs.update应的修改。/*response.write 选课成功 */然后,显示“选课成功”,并提示你已有几条选response.write 你已选了课记录。/*response.Write&i+1&response.write 门课response.write 返回else % MsgBox 你来迟哦,已错过选课时间! history.back() */否则一一提示没能成功选课的理由,让用户容易明白失败的原因,这在script language=vbscript代码中能直接反应,这里不做解释/* MsgBox 对不起,该课程已报满! history.back() MsgBox 你早到啦,还没开始选课呢! history.back() % end ifElseresponse.write 你已经选了这门课返end if end ifend if %选课记录:% For i=0 to rs3.Fields.Count-1 Response.Write & rs3(i).Name & Next while not rs3.eof */根据session(id)的传递,在学生选课记录表中找出对应的response.Write 记录集,并通过循环的方式在页面中显示数据库的内容: response.Write rs3(0)学生名,课程名,课程号,班级,系别等/*.response.Write response.Write rs3(4)response.Write %rs3.movenextwend %学生报名管理:%dim stustu=SELECT student.学生名, class.课程名, student.班级,student.系别 FROM student INNER JOIN grade ON student.学号 = grade.学号 INNER JOIN class ON grade.课程号 = class.课程号 WHERE class.任课老师=&session(teacher)&Set conn = GetSQLServerConnection( (local),sa, sa, netclass)Set rs = GetSQLServerStaticRecordset(conn, stu)if rs.eof thenresponse.write response.Write 对不起暂时还没有学生选你的课程如有意见请跟管理员联系response.write elsesession(class)=rs(1)% */通过student表中的学号与grade表中的学号连接使得student表与grade表相连,同时grade表中的课程号与class表中的课程号连接使得grade表与class表相连。然后,又通过session的变量“teacher”传递登录教师名。打开符合上述几个条件的记录集,如果找不到与上述几条相符的记录集,那么显示“对不起暂时还没有学生选你的课程如有意见请跟管理员联系”/*% For i=0 to rs.Fields.Count-1 Response.Write & rs(i).Name & Next Response.Write 【删除此学生】【打印】while not rs.eof response.Write */ 用循环的方式将对应的记集在页面中显示出来,并且在response.Write rs(0) 每一条记录后增加【删除此学生】与【打印】的链接/* response.Write rs(3)response.Write %rs.movenextwend%【打印】此功能本系统中巧妙的运用了ASP中调用word打印语句实现打印功能。这一设计简单又有效。*/通过用SQL内联语句找出符合打印的的记录集,然后调用ASP中通过连接word打印的语句准备打印。/*% For i=0 to rs.Fields.Count-1 Response.Write & rs(i).Name & Next while not rs.eof response.Write response.Write rs(0).*/在WORD页面中,通过用循环打印的方式,将符合条件的记录 .集打印出来/* .response.Write %【删除】主要用到request对象的session数据集合来获取searchuser与class的值。这里涉及到三张表:student,class,grade。通过rs.delete,rs.update达到实现效果。主要代码与解释:*/通过对象session中的变量searchuser与class传递,找到合乎该条件的记录,如果存在,那么就用rs.delete删除,接着用rs.update刷新数据库中的记录集。完成该项删除工作。/*课程管理:本系统合理安排选修课课程是学生能选好选课的前期。这一操作由管理员来担任。管理员能动态开设选修课,根据学生选课意向可以增设受学生青睐的课程,对一些学生感兴趣的课程,由于报名人数众多,可以适当的调整上课地点,以满足广大学生的需要。而对于那些在学生中没多大“市场”的课程,为节省教学设备资源,可以换用小教室开设,如此一来既放弃小数有热情学习该课程的学生,又能将大场地给予对其它课程有热情的更多的学生。课程管理首页中部分主要代码:*/打开class表,下面所有操作需要在这表中进行/*课程的管理 【增加课程】*/该页面上提供了直接【增加课程】功能,只要在上面点击,就连接到【增加课程】的操作页面上,操作十分直观。/*%For i=0 to rs.Fields.Count-1 Response.Write & rs(i).Name & NextResponse.Write 【删除】【删除】while not rs.eofresponse.Write For i=0 to rs.Fields.Count-1response.Write response.Write rs(i)response.Write next%*/如果打开的class表中有记录,那么先循环打印该表中所有的字段作为表头,按行从左到右打印。表中的字段打印完必后,再在添加上【删除】与【修改】完善表头。/*a href=deletegrade.asp?classnum=【删除】a href=setgrade.asp?classnum=【修改】*/然后,在按数据库表中的对应内容同样通过循环的方式打印,并且在每一行中添加【删除】【修改】,对此【删除】【修改】使用链接,使用户操作极其容易。/*【增加】本页面在设计时对于添加的像“任课老师”、“教师号”均是动态的。可以通过下拉菜单来选择可选的任课老师和对应的教师号,这样既提高操作速度,又不会造成数据错误。*/打开含有存储任课老师和教师号的表:teacher, 以便在下拉菜单中做选择。/*% while not rs2.eofresponse.write response.write rs2(0)response.write rs2.movenextwend%*/将teacher表中的字段为“教师号”所对应的值传递给,以方便操作员选择。/*% while not rs.eofresponse.write response.write rs(0)response.write rs.movenextwend%*/同理,将teacher表中的字段为“任课老师”所对应的值传递给,以方便操作员选择。/*/将要增加的内容输入完毕后,发送表单到del_addgrade.asp实现对增加的效果。/*处理增加页面主要代码:%Set conn = GetSQLServerConnection( (local),sa, sa, netclass )Set rs = GetSQLServerStaticRecordset(conn, class)if request(submit) thenrs.addnewrs(0)=request(课程号) . .rs(11)=request(课程介绍)rs.updateend if%*/此程式通过用request对

温馨提示

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

评论

0/150

提交评论