还剩14页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
第8章数据库应用系统设计实例习题解答一.简答题
1、试述瀑布模型和原型模型的优缺点?瀑布模型(WaterfallModel)1970年WinSTonRoyce提出了著名的瀑布模型,直到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、软件生命周期中,用户参与主要在AA软件定义期B软件开发期C软件维护期D整个软件生命周期过程中
7、在软件工程方法中,常使用的两种软件开发模型是瀑布模型和原型模型,这两者的差别和联系有A
(1)前提和假设不同
(2)方法相互补充3方法相互排斥4前提和假设相同试给出最正确的组合结论选择A
(1)、
(2)B
(4)、
(3)C
(4)、
(2)D
(1)、
(3)3.应用题
1、参考本章宾馆信息管理系统的分析和设计过程,分析并设计一个高校人事管理系统,具备人员入校(毕业分配、调入等)、出校(调出、退体等)、基本情况查询和报表打印等功能职工号char
(10)notnullprimarykey姓名varchar
(20)notnull 性别char2 民族varchar
(20) 出生日期datetime 身份证号char18notnull 籍贯varchar
(20) 政治面貌varchar
(20) 毕业院校varchar
(50) 所学专业varchar50 毕业时间datetime 最高学历varchar
(20) 最高学位varchar
(20) 调入时间datetime 调离时间datetime 退休时间datetime
2、参考本章图书网上销售系统的分析和设计过程,分析并设计一个全校选修课报名管理系统1nMnNm1)管理员admin在admin表中存放管理员信息2)课程信息表(class):在class表中存放与课程内容相关的信息3)选课记录表(grade)在grade表中存储每一名学生选课记录4)学生信息表(student)在student表中存放学生个人信息5)教师表(teacher)在teacher表中存放教师个人信息公共函数创建数据库连接Connection本系统先建立一个连接数据库的函数文件,然后再调用此文件,以方便在各个页面中的实现对数据库的访问链接用以保持一些关于正在访问的数据的一些状态信息,以及链接者信息ASP文件中如果要访问数据,必须首先创建与数据库的链接的函数,其语法如下FunctionGetSQLServerConnectionComputerUserIDPasswordDbDimParamsconnSetGetSQLServerConnection=NothingParams=Provider=SQLOLEDB.1Params=Params;DataSource=ComputerParams=Params;UserID=UserIDParams=Params;Password=PasswordParams=Params;InitialCatalog=DbSetconn=Server.CreateObjectADODB.Connectionconn.OpenParamsSetGetSQLServerConnection=connEndFunction此函数创建了链接对象Conn打开链接,为“Params”创建数据对象RecordSetADO中的数据对象通常保存的是查询结果RecordSet是ADO中最复杂的对象,有许多属性和方法RecordSet保存的是一行行的记录,并标有一个当前记录以下是创建函数FunctionGetSQLServerRecordsetconnsourceDimrsSetrs=Server.CreateObjectADODB.Recordsetrs.Opensourceconn22SetGetSQLServerRecordset=rsEndFunctionFunctionGetSQLServerStaticRecordsetconnsourceDimrsSetrs=Server.CreateObjectADODB.Recordsetrs.Opensourceconn32SetGetSQLServerStaticRecordset=rsEndFunction其中setrs=server.CreateObjectadodb.recordset这条语句创建了对象RecordSet,rs是一个字串,代表一条标准的SQL语句例如setrs=conn.Executeselect*fromgrade其中Conn是先前创建的链接对象,这条语句执行后,对象RecordSet中就保存了表grade中的所有记录操作数据库通过调用链接对象的Execute方法来将查询结果返回给一个数据对象或进行添加、删除等操作例如sql=insertintostudent“学号”valuesrequest.form学号conn.executesql********/执行添加操作sql=deletefromstudentwhere“学号”=request.querystring学号conn.executesql********/执行删除操作关闭数据对象和链接对象在使用了ADO对象之后要关闭它,因为它使用了一定的服务器资源通过调用函数文件实现关闭,然后再释放它FunctionGetSQLServerRsComputerUserIDPasswordDbsourceCursorDimconnrsOnErrorResumeNextSetGetSQLServerRs=NothingSetconn=GetSQLServerConnectionComputerUserIDPasswordDbIfconnIsNothingThenExitFunctionSetrs=Server.CreateObjectADODB.RecordsetIfErr.Number0ThenExitFunctionrs.OpensourceconnCursor2IfErr.Number0ThenExitFunctionSetGetSQLServerRs=rsEndFunction**********/关闭创建的数据对象及链接对象/*********模块详解登录分析%ifRequestsubmitEmptyandrequestid=orrequestpassword=thenresponse.writedivalign=center请输入密码或用户名/divelseIfRequestsubmitEmptyThenSetconn=GetSQLServerConnectionlocalsasanetclassSetrs=GetSQLServerStaticRecordsetconnstudent%***/如果当学生用户输入相关登录身份时,连接数据库,并打开student表/***%i=0whilenotrs.eofori=1***/如果该身份在记录中存在,将获得的“id”传递给打开的记录集rs2,ifrs2=requestidthen并且与该记录集中的“password”字段对应的内容做比较/*** ifrequestpassword=rs1theni=1 endifrs.movenextwendifi=1thenrs.moveprevious***/如果用户名与密码相匹配,那么显示“id欢迎你的到来”/***response.Writerequestidresponse.write欢迎你的到来/b/center/psessionid=rs2***/并且把rs2中对应的内容传递给对象(session“id”),在下面页面跳转中该变量不会改变/***Elseresponse.writecenterb用户名错误或密码错误/b/center***/否则登录失败/***endif%开课情况与选课内容分析%ifrs
2.eoftruethensql=select*fromgradewhere学号=sessionidsetrs5=server.CreateObjectadodb.recordsetrs
5.opensqlconn11***/根据学生登录身份打开该学生的选课记录表/***i=rs
5.recordcountifi=5then%***/判断记录集是否超过5条/***scriptlanguage=vbscript***/若大于5,不能再选修课程了/***MsgBox你已修满课程不能再修了!history.back/script%elseifrs
3.eof=truethen***/否则,有权行选课操作但需要有以下几个约束条件当前所选的课程号不能与记录集中的相同/***ifdate=rs2then***/当前选课时间要符合开课时间和结束选课时间的要求/***ifrs0rs1then ***/选择的课程中不能选报已被报满的课程/***ifdaters3then rs
3.addnew ***/若满足以上几个约束条件,那么从rs选课表中获取相关课程rs32=rs20内容添加到rs3记录集中(学生选课记录表)/***rs31=request课程号…………….…………….rs34=rs24rs
3.updaters0=rs0+1***/在学生选课成功后,对于选课表中的“实招人数”一栏要做相 rs.update 应的修改/*** response.write选课成功br ***/然后,显示“选课成功”,并提示你已有几条选 response.write你已选了 课记录/*** response.Writei+1 response.write门课br response.writeahref=choseclass.asp返回/aelse%scriptlanguage=vbscriptMsgBox你来迟哦已错过选课时间!history.back/script%endif else% ***/否则一一提示没能成功选课的理由,让用户容易明白失败的原因,这在 scriptlanguage=vbscript 代码中能直接反应,这里不做解释/***MsgBox对不起该课程已报满!history.back/script%endifElse%scriptlanguage=vbscriptMsgBox你早到啦还没开始选课呢!history.back/script%endifElseresponse.writecenter你已经选了这门课ahref=choseclass.asp返/a/centerendifendifendif%选课记录%Response.WriteTDbgcolor=#B5EDFFrs3i.Name/TDNextwhilenotrs
3.eof ***/根据sessionid的传递,在学生选课记录表中找出对应的response.Writetrtd 记录集,并通过循环的方式在页面中显示数据库的内容response.Writers30学生名,课程名,课程号,班级,系别等/***………………….………………….………………….response.Writetrtd response.Writers34response.Write/td%rs
3.movenextwend%学生报名管理%dimstustu=SELECTstudent.学生名class.课程名student.班级student.系别FROMstudentINNERJOINgradeONstudent.学号=grade.学号INNERJOINclassONgrade.课程号=class.课程号WHEREclass.任课老师=sessionteacherSetconn=GetSQLServerConnectionlocalsasanetclassSetrs=GetSQLServerStaticRecordsetconnstuifrs.eofthenresponse.writecenterfontcolor=#0000FFsize=+2face=华文行楷response.Write对不起暂时还没有学生选你的课程如有意见请跟管理员联系response.write/font/centerelsesessionclass=rs1%***/通过student表中的学号与grade表中的学号连接使得student表与grade表相连,同时grade表中的课程号与class表中的课程号连接使得grade表与class表相连然后,又通过session的变量“teacher”传递登录教师名打开符合上述几个条件的记录集,如果找不到与上述几条相符的记录集,那么显示“对不起暂时还没有学生选你的课程如有意见请跟管理员联系”/***%Response.WriteTDbgcolor=#B5EDFFrsi.Name/TDNextResponse.Writetdbgcolor=#B5EDFF【删除此学生】/tdtdbgcolor=#B5EDFF【打印】/tdwhilenotrs.eofresponse.Writetrtd***/用循环的方式将对应的记集在页面中显示出来,并且在response.Writers0 每一条记录后增加【删除此学生】与【打印】的链接/***………………………………response.Writers3response.Write/td%rs.movenextwend%【打印】此功能本系统中巧妙的运用了ASP中调用word打印语句实现打印功能这一设计简单又有效%dimstustu=SELECTstudent.学生名class.课程名student.班级student.系别FROMstudentINNERJOINgradeONstudent.学号=grade.学号INNERJOINclassONgrade.课程号=class.课程号WHEREclass.任课老师=sessionteacherSetconn=GetSQLServerConnectionlocalsasanetclassSetrs=GetSQLServerStaticRecordsetconnstu%%Response.ContentType=application/mswordresponse.AddHeadercontent-dispositioninline:filename=report.doc%***/通过用SQL内联语句找出符合打印的的记录集,然后调用ASP中通过连接word打印的语句准备打印/***%Response.WriteTDbgcolor=#B5EDFFrsi.Name/TDNextwhilenotrs.eofresponse.Writetrtdresponse.Writers0…………………..***/在WORD页面中,通过用循环打印的方式,将符合条件的记录…………………..集打印出来/***…………………..response.Write/td%%rs.movenextwend%【删除】主要用到request对象的session数据集合来获取searchuser与class的值这里涉及到三张表studentclassgrade通过rs.delete,rs.update达到实现效果主要代码与解释%dimstustu=SELECTgrade.*FROMgradeINNERJOINstudentONstudent.学号=grade.学号INNERJOINclassONgrade.课程号=class.课程号WHEREstudent.学生名=requestsearchuserANDclass.课程名=sessionclassSetconn=GetSQLServerConnectionlocalsasanetclassSetrs=GetSQLServerStaticRecordsetconnstuifnotrs.eofthenrs.deleters.update%***/通过对象session中的变量searchuser与class传递,找到合乎该条件的记录,如果存在,那么就用rs.delete删除,接着用rs.update刷新数据库中的记录集完成该项删除工作/***课程管理本系统合理安排选修课课程是学生能选好选课的前期这一操作由管理员来担任管理员能动态开设选修课,根据学生选课意向可以增设受学生青睐的课程,对一些学生感兴趣的课程,由于报名人数众多,可以适当的调整上课地点,以满足广大学生的需要而对于那些在学生中没多大“市场”的课程,为节省教学设备资源,可以换用小教室开设,如此一来既放弃小数有热情学习该课程的学生,又能将大场地给予对其它课程有热情的更多的学生课程管理首页中部分主要代码%dimstustu=SELECTclass.*FROMclassSetconn=GetSQLServerConnectionlocalsasanetclassSetrs=GetSQLServerStaticRecordsetconnstu%***/打开class表,下面所有操作需要在这表中进行/***pfontcolor=#0000FFsize=+2face=华文行楷课程的管理/font/ppahref=addgrade.asp【增加课程】/a/p/center***/该页面上提供了直接【增加课程】功能,只要在上面点击,就连接到【增加课程】的操作页面上,操作十分直观/***% Response.WriteTDbgcolor=#B5EDFFrsi.Name/TDNextResponse.Writetdbgcolor=#B5EDFF【删除】/tdtdbgcolor=#B5EDFF【删除】/tdwhilenotrs.eofresponse.Writetrresponse.Writetdresponse.Writersiresponse.Write/tdnext%***/如果打开的class表中有记录,那么先循环打印该表中所有的字段作为表头,按行从左到右打印表中的字段打印完必后,再在添加上【删除】与【修改】完善表头/***tdahref=deletegrade.aspclassnum=%=rs0%【删除】/atdahref=setgrade.aspclassnum=%=rs0%【修改】/a/td/tr%rs.movenextwend%***/然后,在按数据库表中的对应内容同样通过循环的方式打印,并且在每一行中添加【删除】【修改】,对此【删除】【修改】使用链接,使用户操作极其容易/***【增加】本页面在设计时对于添加的像“任课老师”、“教师号”均是动态的可以通过下拉菜单来选择可选的任课老师和对应的教师号,这样既提高操作速度,又不会造成数据错误%dimstustu2Setconn=GetSQLServerConnectionlocalsasanetclassstu=SELECT任课老师FROMteacherSetrs=GetSQLServerStaticRecordsetconnstustu2=SELECT教师号FROMteacherSetrs2=GetSQLServerStaticRecordsetconnstu2%***/打开含有存储任课老师和教师号的表teacher以便在下拉菜单中做选择/***formaction=del_addgrade.aspmethod=postname=formtdbgcolor=#FFFFFFselectname=教师号id=教师号%whilenotrs
2.eofresponse.writeoptionresponse.writers20response.write/optionrs
2.movenextwend%/select/td***/将teacher表中的字段为“教师号”所对应的值传递给option,以方便操作员选择/***selectname=任课老师%whilenotrs.eofresponse.writeoptionresponse.writers0response.write/optionrs.movenextwend%***/同理,将teacher表中的字段为“任课老师”所对应的值传递给option,以方便操作员选择/***/select/td***/将要增加的内容输入完毕后,发送表单到del_addgrade.asp实现对增加的效果/***处理增加页面主要代码%Setconn=GetSQLServerConnectionlocalsasanetclassSetrs=GetSQLServerStaticRecordsetconnclassifrequestsubmitthenrs.addnewrs0=request课程号……………………….……………………….……………………….rs11=request课程介绍rs.updateendif%***/此程式通过用request对象中的form数据集合来从用户端获取用户输入的内容如课程号,课程名,任课老师……等等在表class中有的字段,然后用rs.addnew将上个页面所增设内容添加到表class中/***【修改】课程修改功能主要用到request对象的querystring数据集合来获取“课程号”,来进行值传递“课程号”是唯一的,因此用它来索引记录集,在del_setgrade.asp页面上实现对表class中值的修改主要代码及部分解释%dimstrstr=SELECT*FROMclassWHERE课程号=request课程号Setconn=GetSQLServerConnectionlocalsasanetclassSetrs=GetSQLServerStaticRecordsetconnstr***/通过request(“课程号”)传递值,打开对应的记录集/***ifrs.eofthen response.writecenterfontsize=+2face=华文行楷修改失败/font/center***/如果该记录集为空,显示“修改失败”/***elsers0=request课程号………………………..………………………..………………………..rs11=request课程介绍rs.updateresponse.writecenterfontsize=+2face=华文行楷修改成功/font/centerresponse.redirectmanagegrade.aspendif%***/如果有记录集,那么通过request将“课程号”、“课程名”、教师号、任课老师、所属系、开课时间、开课时间、结束时间、课时、学分、限招人数、已招人数、课程介绍等都传递给class表中相对应的值并且用rs.update做一下刷新,数据库中的数据被更新/***【删除】主要用到request对象传递classnum的值通过rs.delete,rs.update使表class实现删除效果主要代码与解释%dimstrstr=SELECT*FROMclassWHERE课程号=requestclassnumSetconn=GetSQLServerConnectionlocalsasanetclassSetrs=GetSQLServerStaticRecordsetconnstrifrs.eofthenresponse.Write删除不成功elsers.deleters.update%centerfontsize=+2face=华文行楷删除成功/fontbrahref=managegrade.asp返回/a/center%endif%***/通过对象request中的变量classnum指课程号传递值,找到合乎该条件的记录,如果存在,那么就用rs.delete对该记录做删除,接着用rs.update刷新数据库中的记录集,并在页面上显示删除成功,完成该项删除工作如果不存在,那么显示删除不成功/***毕业生调入人员信息录入人事档案人事处审核退休处理调离退休人员调离人员查询打印讲授指导学号学生名password班级系别学生所属系联系方式教师教师号任课老师password选修选修课所属系限招人数任课老师学分教师号课时课程号已招人数开课时间结束时间课程介绍课程名。