BM计算机07215黄涛.doc_第1页
BM计算机07215黄涛.doc_第2页
BM计算机07215黄涛.doc_第3页
BM计算机07215黄涛.doc_第4页
BM计算机07215黄涛.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

数据库课程设计报告(2010)数据库课程设计报告课程管理系统的设计专业计算机科学与技术学生姓名 黄 涛班级BM计算机072学号0751401215指导教师吴 素 芹完成日期2010年7月3日1目 录1 课程设计目的及要求12课程设计主要内容13需求分析14 数据库设计54.1 概念设计54.2 逻辑设计84.3 物理设计95课程设计模块105.1 用户登录模块设计105.2课程信息查询模块设计105.3课程信息修改模块设计115.4课程信息录入模块设计115.5学生信息管理模块设计116 小结13附 录14附录1 源程序清单141课程管理系统的设计1 课程设计目的及要求 数据库课程设计是为数据库原理及应用课程而独立开设的实践性课程。数据库课程设计对于巩固数据库知识,加强学生的实际动手能力和提高学生综合素质十分必要。本课程分为系统分析与数据库设计、应用程序设计和系统集成调试三个阶段进行。数据库课程设计的主要目标是:a.加深对数据库系统、程序设计语言的理论知识的理解和应用水平。b.通过设计实际的数据库系统应用课题,进一步熟悉数据库管理系统的操作技术,提高动手能力,提高分析问题和解决问题的能力。设计要求:a.进行需求分析,编写数据字典。b.设计E-R图。c.设计学生信息和课程信息的录入。d.实现按学号、课程名或教师名的查询。e.实现分别按学号、课程名或教师名的统计。2 课程设计的主要内容A.系统分析与数据库设计阶段a.通过社会调查,选择一个实际应用数据库系统的课题。b.进行系统需求分析和系统设计,写出系统分析和设计报告。c.设计数据模型并进行优化,确定数据库结构、功能结构和系统安全性和完整性要求。B.应用程序设计阶段a.完成数据库定义工作,实现系统数据的数据处理和数据录入。b.实现应用程序的设计、编程、优化功能,实现数据安全性、数据完整性和并发控制技术等功能,并针对具体课题问题提出解决方法。C.系统集成调试阶段对系统的各个应用程序进行集成和调试,进一步优化系统性能,改善系统用户界面。3需求分析3.1系统分析学生课程及成绩管理系统的角色是管理员、学生和教师,管理员对学生、教师、课程和班级信息进行维护,学生选择想要上的课程,查看所选的学分以及修改个人信息,教师决定上课的学生以及给学生学分。根据以上的用户操作需求,将系统划分为如下3大功能,并对其模块的划分和功能进行描述。a.管理员功能登录:登录学生管理:列表、增加、修改、删除。教师管理:列表、增加、修改、删除。课程管理:列表、增加、修改、删除。班级管理:列表、增加、修改、删除。b.学生功能登录:登录。选课:选课。学分:查看。个人信息:修改。c.教师功能登录:登录。选择学生:课程列表、学生列表、选择。公布成绩:课程列表、学生列表、成绩。整个系统的模块结构如图所示:课程管理系统学 生教 师管 理 员选课查看学分修改信息选择学生公布成绩学生管理教师管理课程管理班级管理图3-1系统的结构图3.2系统流程分析本系统中的中心对象是学生和教师,该系统的流程主要描述的是学生选择课程后,教师根据选课的学生决定选哪些学生,最后教师给学生学分。该系统的适用对象包括学生、教师和管理员,因此包括3个基本的流程。 图3-2描述的是管理员的操作流程:首先管理员要进行学生、教师、课程和班级数据的初始化。管理员登录学生列表教师列表课程列表新增修改删除新增修改删除新增修改删除图3-2 系统流程图 图3-3描述的是学生的操作流程图:学生根据学生号和密码登录系统。初始的密码由管理员提供。学生登录系统后,可以修改个人信息、选课和查看学分。学生登录课程列表查看学分情况更改个人信息选课图3-3系统流程图(学生) 图3-4描述的是教师的操作流程:教师根据教师号和密码登录系统,初始的密码由管理员提供。教师登录系统后,选择学习本课程的学生和给学生学分。教师登录所教课程:列表:选择学生所教课程列表:选择学生对应学生列表:选择学生对应学生列表:选择学生选 择 学 生打 分 图3-4系统流程图(教师)3.3数据字典a.外部实体卡片的定义,如表3-1表3-1外部实体条目名称:学生 总编号:1001说明:学生选课、 查看学分 、修改信息 编 号:001输入数据流:无输出数据流:无名称:教师 总编号:1002说明:教师选择学生 、公布成绩 编 号:002输入数据流:登陆信息输出数据流:无名称:管理员 总编号:2003说明:学生管理、课程管理、教师管理 编 号:P3.2输入数据流:无输出数据流:无b.处理过程卡片的定义,如表3-2所示。表3-2处理过程条目名称:管理员信息查看 总编号:2001别名:提交登录请求后,查看管理员信息 编 号:P1.2数据流来源:D1数据流去向:管理员续表3-2名称:学生信息查看 总编号:2002别名:学生登录请求查看学生信息 编 号:P2.1数据流来源:D2数据流去向:客户、管理员名称:教师信息查看 总编号:2003别名:教师登录查看学生选课信息 编 号:P3.2数据流来源:P3.1 数据流去向:选课信息4 数据库设计4.1 概念设计 现在对上述需求作进一步的分析,产生概念结构设计的E-R模型。采用自顶向下的设计方法。自顶向下设计的关键首先是确定系统的核心活动。所谓核心活动就是系统中的其他活动都要围绕这个活动展开或与此密切相关。确定了核心活动之后,系统就有了可扩展的余地。对于这个教学管理系统,其核心活动是课程,学生与课程之间是通过学生选课发生联系的,教师与课程之间是通过教师授课发生联系的。学生和课程之间是通过选课发生联系的,学生和课程之间是通过选课发生联系的。至此该系统包括的实体有:管理员:用于描述一管理员的信息,由管理员号来标识。学生:用于描述一名学生的基本信息,由学号来标识。课程:用于描述一门课程的基本信息,用课程号来标识。教师:用于描述一名教师的基本信息,由教师号标识。由于一名学生可以选修多门课程,并且一门课程可以被多个学生选修。因此,学生和课程之间是多对多的联系。又由于一门课程可由多名教师讲授,而且一名教师可以讲授多门课程,因此,教师和课程之间也是多对多联系。如果实体的属性比较多,在制作E-R模型时不一定要把所有的属性都制作在E-R模型上,可以另外用文字说明,这样也使得E-R模型简明清晰,便于分析。经过初步分析,可以得到此系统中各实体所包含的基本属性如下:管理员:管理员号、管理员登录名称、登录密码学生:学号、姓名、性别、年龄课程:课程号、课程名、学分教师:教师号、姓名、性别、年龄、职称E-R模型的组成元素有:实体、属性、联系。E-R模型用E-R图表示。实体是用户工作环境中所涉及的事务,属性是对实体特征的描述。a.模型中的实体相当于实体集、一个表,而不是单个实体或表中的一行。实体用矩形框表示,实体名称标注在矩形框内。用菱形表示实体间的联系,菱形框内写上联系名,用无向边把菱形分别与有关实体相连接,在无向边旁标上联系的类型。b.属性是实体的性质。用椭圆框表示,与实体之间用一条线相连,关键属性项加下划线。c.各子系统模块中主键相同的字段之间存在着相互关联的关系。在程序中实现对他们的完整性和一致性控制。本系统的实体有:学生实体,课程实体,教师实体这4个实体的属性用E-R图表示:学生学号姓名年龄性别课程课程号学期学分任课老师图4-1学生实体E-R图 图4-2课程实体E-R图教师职称姓名性别工号图4-3教师实体E-R图管理员名称登录名称管理员号管 理 员图4-4管理员实体E-R图课程名学期学分任课老师课程学生姓名学号性别年级成绩教学教师职称姓名性别工号图4-5教师,学生,课程实体E-R图学生学号姓名选修性别年龄开课教师号姓名性别职称教师上课地点课程课程名课程号管理员Id密码姓名添加修改mnmn图4-5整体E-R图4.2 逻辑设计了解基本的E-R模型就可以进行逻辑结构设计,也就是设计基本的关系模型。设计基本关系模式主要从E-R模型出发,将其直接转换为关系模式。根据转换规则,这个E-R模型转换关系模式为:管理员(管理员号、管理员登录名称、登录密码),主码为管理员号。学生 (学号,姓名,性别,年龄 ) , 主码为学号 。课程 (课程号,课程名,学分 ) , 主码为课程号 。教师 (教师号,姓名,性别,年龄,职称 ) ,主码为教师号 。现在分析一下这些关系模式。由于在设计关系模式时是以现实存在的实体为依据,而且遵循一个基本表只描述现实世界的一个主题的原则,每个关系模式中的每个非主码属性都完全由主码唯一确定,因此上诉所有这些关系模式都是第三范关系的关系模型。在设计好关系并确定好每个关系模式的主码后,应该看一下这些关系模式之间的关联关系,即确定关系模式的外码。实际上只需看E-R模型中的联系即可。组成关系中“学号”与“学生”中的主码学号是同语义且取值域相同, “选课”关系中的“学号”与“学生”关系中的主码“学号”是同词义且取值域相同,“选课”关系中的“课程号”与“课程”中的主码“课程号”是同义词且取值域相同。因此,应在“选课”关系中添加“学号”和“课程号”两个外码,它们分别引用“学生”关系中的“学号”和“课程”中的“课程号”。讲授关系中的“课程号”与课程关系中的主码“课程号”是同语义且取值域相同。讲授关系中的“教师号”与教师中的“教师号”是同语义,且取值域相同,因此应在讲授关系中添加“课程号”和“教师号”两个外码,它们分别引用课程关系中的“课程号”,和教师关系中的“教师号”。讲授关系中的“课程号”与课程关系中的主码“课程号”是同语义且取值域相同。4.3 物理设计建立名为CourseDB的数据库,经过初步的分析,该系统包括以下4个数据表:course、student、teacher、admin。表中的设计如下:最后确定表中各属性的详细信息,包括数据类型和长度等。a.学生表:表4-1学生表列 名数 据 类 型大 小备 注Student_idVarchar10字节学生学号,设为主键Student_nameVarchar20字节学生姓名Student_sex Char10字节学生性别Student_age Int4字节学生年龄b.课程表:表4-2课程表列 名数 据 类 型大 小备 注Course_idVarchar10字节课程号,设为主键Course_name Varchar10字节课程名字Course_credit Int4字节课程的学分c.教师表:表4-3教师表列 名数 据 类 型大 小备 注Teacher_idVarchar10字节教师号,设为主键Teacer_nameVarchar20字节教师名Teacher_sexVarchar10字节教师性别Teacher_age Int4字节教师年龄Teacher_title Varchar50字节教师职称d.管理员表 表4-4管理员表列 名数 据 类 型大 小备 注Admin_idVarchar10字节字段ID号,设为主键Admin_nameVarchar10字节管理员登录名称Admin_passwordVarchar50字节管理员登录密码5课程设计模块5.1 用户登录模块设计用户点击课程信息查询、课程信息修改、课程信息录入可以进入相关界面,界面如图5-1所示:图5-1登录界面5.2课程信息查询模块设计课程编号查询:主要功能是通过输入课程编号就可以找出此课程的开课学期,学时,学分等。课程名查询:主要功能是通过输入课程名就可以找出此课程的编号、学时和学分等,如图5-2所示:图5-2课程信息查询5.3课程信息修改模块设计课程信息更新:主要功能是看是否有此课程的信息,若有就修改,若没有就添加,如图5-3所示:图5-3添加修改删除课程信息5.4课程信息录入模块设计课程成绩信息的更新:主要功能是看是否有该课程成绩的信息,若有就修改,若没有就添加。课程成绩信息的删除:主要功能是删除指定的课程成绩,如图5-4所示:图5-4课程信息录入5.5学生信息管理模块设(1)添加学生信息 输入要添加学生的基本属性,基本可以完成对学生的增加。界面如图5-5所示:图5-5添加学生信息(2)删除学生信息 输入要删除学生的学号,确认要删除的学生信息。界面如图5-6所示:图5-6删除学生信息6 小结这次课程设计历时一个多星期左右,发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。 在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。生活就是这样,汗水预示着结果也见证着收获。劳动是人类生存生活永恒不变的话题。虽然这只是一次简单的课程制作,可是平心而论,也耗费了我们不少的心血,这就让我不得不佩服专门搞软件开发的技术前辈,为了人们的生活更美好,他们为我们社会所付出多少心血啊! 刚开始的时候,觉得很棘手,不知道从哪开始,开始做什么,但经过慢慢的调整,我们通过去图书馆找资料,上网搜索资料,开始一点一点的有了些头绪, 再加上同学的帮助和老师的指引,让我们对完成这次课题更加充满了信心,最后,虽然没有能够全部的显示出来,但通过实践的学习,使我认识到学好计算机要重视实践操作,以及其他的计算机方面的知识都要重在实践,所以在以后的学习过程中,我会更加注视实践操作,使自己更好地学好计算机。 对我而言,知识上的收获重要,精神上的丰收更加可喜。同时也让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆!附 录附录1 源程序清单附录1.1系统主界面源程序public void goo(HttpServletRequest req, HttpServletResponse res, String kind)throws ServletException, IOException / 转向学生功能页面if (kind.equals(student) RequestDispatcher rd = getServletContext().getRequestDispatcher(/student.jsp);rd.forward(req, res);/ 转向教师功能页面if (kind.equals(teacher) RequestDispatcher rd = getServletContext().getRequestDispatcher(/teacher.jsp);rd.forward(req, res);/ 转向管理员功能页面if (kind.equals(admin) RequestDispatcher rd = getServletContext().getRequestDispatcher(/admin.jsp);rd.forward(req, res);附录1.2课程信息查询源程序Dim SqlStr As StringPublic Sub MakeSqlStr()SqlStr = If Trim(StuKCH) ThenSqlStr = and KCH like % + Trim(StuKCH.Text) + %End IfIf Trim(StuKCM) ThenSqlStr = SqlStr + and KCM like % + Trim(StuKCM.Text) + %End IfEnd SubPrivate Sub Adodc1_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)End SubPrivate Sub Label2_Click()End SubPrivate Sub StuADO_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)End SubPrivate Sub StuSch_Click() MakeSqlStr StuADO.RecordSource = select * from KC where KCH=KCH & SqlStr StuADO.RefreshEnd Sub附录1.3课程信息修改模块源程序Private Sub Label2_Click()End SubPrivate Sub StuADO_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) If Not pRecordset.EOF And Not pRecordset.BOF Then StuKCH.Text = pRecordset(kch) StuKM.Text = pRecordset(kcm) StuKKXQ.Text = pRecordset(kkxq) StuXS.Text = pRecordset(xs) StuXF.Text = pRecordset(xf) End IfEnd SubPrivate Sub StuDel_Click()Ret = MsgBox(是否要删除 + StuADO.Recordset(kch) + 号课程的纪录!, vbYesNo, 提示)If Ret = vbYes ThenSqlCmd.ActiveConnection = SqlConSqlCmd.CommandText = delete from KC where kch= + StuADO.Recordset(kch) + SqlCmd.ExecuteStuADO.RecordSource = select * from KC StuADO.RefreshEnd IfEnd Sub窗口载入时打开连接Private Sub Form_Load()SqlCon.Provider = SQLOLEDBSqlCon.Open Server=GUPING;DataBase=KCGL;UID=sa;PWD=;End SubPrivate Sub Form_Unload(Cancel As Integer)SqlCon.CloseEnd SubPrivate Sub StuUpd_Click()Dim SqlStr As StringSqlStr = select * from KC where kch= + Trim(StuKCH.Text) + SqlRes.Open SqlStr, SqlCon, adOpenDynamic, adLockPessimisticIf Not SqlRes.EOF Then修改SqlRes(kcm) = StuKM.TextSqlRes(kkxq) = StuKKXQ.TextSqlRes(xs) = StuXS.TextSqlRes(xf) = StuXF.TextSqlRes.UpdateElse添加SqlRes.AddNewSqlRes(kcm) = StuKM.TextSqlRes(kkxq) = StuKKXQ.TextSqlRes(xs) = StuXS.TextSqlRes(xf) = StuXF.TextEnd IfSqlRes.UpdateSqlRes.CloseStuADO.RecordSource = SELECT * FROM KCStuADO.RefreshEnd SubPrivate Sub StuSch_Click() MakeSqlStr StuADO.RecordSource = select * from KC where KCH=KCH & SqlStr StuADO.RefreshEnd Sub附录1.4课程信息录入模块源程序Private Sub Label5_Click()End SubPrivate Sub StuADO_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)If Not pRecordset.EOF And Not pRecordset.BOF Thenstuxh.Text = pRecordset(XH)stuxm.Text = pRecordset(XM)stuzy.Text = pRecordset(ZY)stukcm.Text = pRecordset(KCM)stucj.Text = pRecordset(CJ)End IfEnd SubPrivate Sub StuDel_Click()Ret = MsgBox(是否要删除 + stuxh.Text + 号学生的 + Trim(stukcm.Text) + 课的成绩纪录!, vbYesNo, 提示)If Ret = vbYes ThenSqlCmd.ActiveConnection = SqlConSqlCmd.CommandText = delete from xs_kc where XH= + stuxh.Text + and KCH= + StuADO.Recordset(KCH) + SqlCmd.CommandType = adCmdTextSqlCmd.ExecuteStuADO.RecordSource = select * from xs,kc,xs_kc where xs.xh=xs_kc.xh and kc.kch=xs_kc.kchStuADO.RefreshEnd IfEnd SubPrivate Sub stukcm_Click()Dim stxh, stkcmSqlCmd.CommandText = showscoreSqlCmd.CommandType = adCmdStoredProcSet stxh = SqlCmd.CreateParameter(XH, adVarChar, adParamInput, 6)SqlCmd.Parameters.Append (stxh)Set stkcm = SqlCmd.CreateParameter(KCM, adVarChar, adParamInput, 16)SqlCmd.Parameters.Append (stkcm)SqlCmd(XH) = stuxh.TextSqlCmd(KCM) = stukcm.TextSet SqlRes = SqlCmd.Executestuxh.Text = SqlRes(XH)While Not SqlRes.EOF If SqlRes.Fields.Count = 2 Then stuxm.Text = SqlRes(XM) stucj.Text = StuXF.Text = Else stuxm.Text = SqlRes(XM) stucj.Text = SqlRes(CJ) StuXF.Text = CStr(SqlRes(XF) & ) End If SqlRes.MoveNext Wend SqlCmd.Parameters.Delete (XH) SqlCmd.Parameters.Delete (KCM)End SubPrivate Sub StuUpd_Click()Dim stxh, stkcm, stcj, stxfIf Trim(stucj.Text) = Or Trim(StuXF.Text) = ThenRet = MsgBox(输入完整信息!, vbOKOnly, 提示) Exit SubEnd IfSqlCmd.CommandText = addstuscoreSqlCmd.CommandType = adCmdStoredProcSet stxh = SqlCmd.CreateParameter(XH, adVarChar, adParamInput, 6)SqlCmd.Parameters.Append (stxh)Set stkcm = SqlCmd.CreateParameter(KCM, adVarChar, adParamInput, 16)SqlCmd.Parameters.Append (stkcm)Set stcj = SqlCmd.CreateParameter(CJ, adInteger, adParamInput)SqlCmd.Parameters.Append (stcj)Set stxf = SqlCmd.CreateParameter(XF, adInteger, adParamInput)SqlCmd.Parameters.Append (stxf)SqlCmd(XH) = stuxh.TextSqlCmd(KCM) = stukcm.TextSqlCmd(CJ) = CInt(stucj.Text)SqlCmd(XF) = CInt(StuXF.Text)Set SqlRes = SqlCmd.ExecuteSqlCmd.Parameters.Delete (XH)SqlCmd.Parameters.Delete (KCM)SqlCmd.Parameters.Delete (CJ)SqlCmd.Parameters.Delete (XF)StuADO.RecordSource = select * from xs,kc,xs_kc where xs.XH=xs_kc.XH and kc.KCH=xs_kc.KCHStuADO.RefreshEnd SubPrivate Sub stuxh_click()Dim stxh, stkcmSqlCmd.CommandText = showscoreSqlCmd.CommandType = adCmdStoredProcSet stxh = SqlCmd.CreateParameter(XH, adVarChar, adParamInput, 6)SqlCmd.Parameters.Append (stxh)Set stkcm = SqlCmd.CreateParameter(KCM, adVarChar, adParamInput, 16)SqlCmd.Parameters.Append (stkcm)SqlCmd(XH) = stuxh.TextSqlCmd(KCM) = stukcm.TextSet SqlRes = SqlCmd.Executestuxh.Text = SqlRes(XH)While Not SqlRes.EOF If SqlRes.Fields.Count = 2 Then stuxm.Text = SqlRes(XM) stucj.Text = StuXF.Text = Else stuxm.Text = SqlRes(XM) stucj.Text = SqlRes(CJ) End If SqlRes.MoveNext Wend SqlCmd.Parameters.Delete (XH) SqlCmd.Parameters.Delete (KCM)End SubPrivate Sub StuZY_Click()SqlCmd.CommandText = select * from xs where ZY= + Trim(stuzy.Text

温馨提示

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

最新文档

评论

0/150

提交评论