本题要求设计一个学生试卷成绩输入、查询和成绩单输出系统(简称SRS)的数据结构和算法要点。问题描述如下:
要输入到SRS系统中的每一份试卷成绩反映一个学生选修一门课程的考试结果,它包括以下数据项:学号、姓名、课程名、成绩。由于实行了灵活的选课制度,所以每个学生选修多少门课程,选修哪些课程都可以不同。要输入的多份试卷成绩并未按任何数据项排列顺序,它们以任意的顺序被输入到系统中来。
SRS系统要具有以下功能:①试卷成绩插入,将试卷成绩逐个插入到SRS系统的数据结构中。②学生成绩查询,给出学号查找该学生所选修的各门课程的考试成绩。③成绩单输出,按学号递增的顺序依次输出所有学生的学号、姓名,及其所选修的各门课程的课程名和成绩。(为简单起见,假设上述所有工作都在计算机内存中进行。)
请设计SRS系统的数据结构和算法要点,使上述三项操作都有较高的执行效率。从以下方面阐述你的设计: (1)SRS系统的数据结构(15分) ①数据结构的Pascal语句描述 ②数据结构的示意图 ③数据结构的简单文字说明 (2)SRS系统的算法要点(10分) (只要简单的文字说明,不必写出Pascal程序) ①试卷成绩插入 ②学生成绩查询 ③成绩单输出 (3)简单陈述你的上述设计的理由(5分)
答案: 本题可有多种不同的设计方案,下面给出其中一个较好的方案。 (1)数据结构(15分,其中对三种操作的有效支持各4分,叙述的条理性3分。) ①数据结构的Pascal语句描述 TYPEpptr=↑pnode; pnode=RECORD cname:string; score:0..100; next:pptr END; sptr=↑pnode; snode=RECORD sno:integer; sname:string; llink,rlink:sptr; plink:pptr END; VARt:sptr;
设计一个用于管理会议室的数据库。经调查分析,得到的数据项列出如下: 房间号r#CHAR(4),部门号d#CHAR(3),部门名称dnameCHAR(20), 房间容量contentINT,部门主管dmanagerCHAR(8),开会日期mdateDATE, 会议名称cnameCHAR(20),会议主题(subject)CHAR(80),会议类型(type), 部门人数dnumINT,当前房间状态stateCHAR(1), 并确定以会议室(room)信息,部门(department)信息,会议(conference)信息为实体,它们通过“开会(meeting)”联系起来。为了简化问题做如下假定: l 会议以部门召开,但一个部门在同一会议室不能重复召开同一个会议。 l 会议室按部门借用,且不预借。 l 当前房间状态取值为‘1’表示该会议室当前正在开会,取值为‘0’表示该会议室当前未被借用。 数据库概念设计的只包含主键属性的简化E-R图如下: cname r# 会议conference 房间room 部门department d# 开会meeting m n p 要求: ⑴数据库的逻辑结构设计:给出相应的表名、表的属性名(数据类型可省)、主键。(14分) ⑵给出下列查询的SQL语句:(16分,每小题4分) a)当前未借用的会议室(房间号)和容量: b)2000年4月8日有哪些部门(部门名称)在开会?他们的主管是谁? c)2000年4月8日‘信息中心’在哪个会议室(房间号)开会?会议名称和主题是什么? d)当前能够适合‘信息中心’开会的有哪些会议室(房间号)?
答案: (1)数据库的逻辑结构设计(给出相应的表名,表结构,主键;(14分) room(r#,content,state)主键:r#(3分) department(d#,dname,dmanager,dnum)主键:d#(3分) conference(cname,subject,type)主键:cname(3分) meeting(r#,d#,cname,mdate)主键(r#,d#,cname)(5分) (2)给出下列查询的SQL语句:(16分,每小题4分) a)当前未借用的会议室(房间号)和容量: selectr#,contentfromroomwherestate=’0’ b)2000年4月8日有哪些部门(部门名称)在开会?他们的主管是谁? Selectdname,dmanagerfromdepartmentd,meetingm whered.d#=m.d#andmdate=’2000年4月8日’ 或 Selectdname,dmanagerfromdepartmentd whered.d#=in(selectm.d#=frommeetingmWheremdate=’2000年4月8日’) c)2000年4月8日’信息中心’在哪个会议室(房间号)开会?会议名称和主题是什么? Selectr#,m.cname,subjectfromdepartmentd,meetingm,conferencec whered.d#=m.d#andm.cname=c.cnameand Mdate=’2000年4月8日’anddname=’信息中心’ 或(注:本题中Selectr#,c.cname,......也可以是Selectr#,m.cname,...... Selectr#,c.cname,subjectfrommeetingm,conferencec WhereMdate=’2000年4月8日’andm.cname=c.cnameand m.d#=(selectd.d#fromdepartmentdwheredname=’信息中心’) d)当前能够适合’信息中心’开会的有哪些会议室(房间号)? Selectr#fromroomwherestate=’O’and content>=(selectdnumfromdepartmentwheredname=’信息中心’)
[1] [2] 下一页 |