数据库课程设计系统

2022-12-10 版权声明 我要投稿

第1篇:数据库课程设计系统

《数据库系统概论》课程“课程思政”教学设计初探

摘要:“课程思政”是一种教育教学理念,也是一种思维方式,教师在教学过程中要有意、有机、有效地对学生进行思想政治教育,把思想政治工作贯穿教育教学全过程。文中对《数据库系统概论》课程“课程思政”教学设计进行了初步探索,在专业教学内容中融入“课程思政”教育素材,给出了教学设计方案。

关键词: 数据库系统概论;课程思政;教学设计;思想政治教育;教育素材

开放科学(资源服务)标识码(OSID):

思想政治教育是我国高等教育中的重要组成部分。2016年12月在全国高校思想政治工作会议上,习近平总书记指出,“要坚持把立德树人作为中心环节,把思想政治工作贯穿教育教学全过程,实现全程育人、全方位育人,努力开创我国高等教育事业发展新局面”[1]。习总书记站在实现中华民族伟大复兴的全局和战略高度,科学回答了高校培养什么样的人、如何培养人以及为谁培养人这一根本问题,为做好新形势下高校思想政治工作、发展高等教育事业指明了行动方向。广大高校教师肩负着对大学生进行思想政治教育的重要责任。为深入贯彻落实全国高校思想政治工作会议精神,把思想政治工作贯穿教育教学全过程,推动“思政课程”向“课程思政”转变,挖掘专业课程的德育元素,充分发挥专业课程的育人功能,对《数据库系统概论》课程的教学内容进行认真梳理,进行了“课程思政”教学设计。

1“课程思政”的含义

“课程思政”是一个内涵丰富而又立意深远的课程改革创新。所谓“课程思政”,简而言之,就是将马克思主义理论贯穿教学和研究全过程,深入挖掘各类课程的思想政治理论教育资源,高校设置的各学科、课程都要发挥思想政治教育作用,从战略高度构建全员、全过程、全方位以及全课程育人格局,使高校各类课程与思想政治理论课同向同行,形成协同效应,并始终贯穿“立德树人”根本任务的一种综合教育理念。高校所有课程应具有知识传授、能力培养及思想政治教育的双重功能,承载着培养大学生世界观、人生观、价值观的作用。专业教师在教学过程中要有准备、有意识地向学生进行思想政治教育,在润物细无声的知识学习中融入理想信念层面的精神指引。

2 《数据库系统概论》课程教学现状

数据库是数据管理的有效技术,是计算机科学的重要分支。内蒙古民族大学计算机科学与技术学院的《数据库系统概论》课程是计算机科学与技术专业、网络工程专业和软件工程专业的专业必修课。课程涵盖了整个数据库系统体系的重要理论与技术,在教学中存在着理论性强、概念众多、内容抽象、理论与实际联系较难等问题。为了更好地提高教学效果,加强学生的综合实践能力,自2016年3月开始,《数据库系统概论》课程开展了混合式教学改革,线上线下教学相结合、课堂教学中采用多种教学方法、理论教学和实验教学相辅相成,取得了一定的成效[2-7]。

3 《数据库系统概论》课程“课程思政”教学设计

本着全面贯彻党的教育方针,牢固树立育人为本、德育为先的理念,以课堂是弘扬主旋律、传播正能量的主阵地为导向,坚持正确的政治方向,对《数据库系统概论》课程的教学内容进行认真梳理,进行了“课程思政”教学设计。以习近平新时代中国特色社会主义思想为指导,坚持知识传授与价值引领相结合,围绕专业教学内容,选取了可以培养大学生理想信念、价值取向、政治信仰、社会责任的“课程思政”教育素材,旨在全面提高大学生缘事析理、明辨是非的能力,让学生成为德才兼备、全面发展的人才。

在教学中所采用的教材是由萨师煊、王珊编著,高等教育出版社出版的《数据库系统概论》[8]。在教学内容中的第四章数据库安全性、第五章数据库完整性以及第七章数据库设计等教学内容中融入了“课程思政”教育素材,并给出了专业教学目标、“课程思政”教学目标,如表1所示。

4章 数据库安全性

4.1数据库安全性概述

4.2数据库安全性控制 1.理解计算机安全性概念;

2.了解信息安全标准的发展简史;

3.掌握数据库安全性控制技术和方法。 1.了解计算机专业人员应当具备的职业道德规范,为将来从事IT行业做准备;

2.理解并敬重工匠精神,在学习中努力发扬工匠精神;

3.理解标准化的作用,在工作学习中要“尊重标准,向标准看齐”,努力形成遵章守则的氛围。 1.世界上“头号电脑黑客”凯文·米特尼克的经历——引出:—计算机专业人员应当具备的职业道德规范;

2.我国的信息安全标准——引出:工匠精神;

3.软件危机的出現——引出:标准化的作用。 第五章 数据库完整性

5.1 实体完整性

5.2 参照完整性

1.掌握并理解完整性的概念,理解数据的正确性和相容性的意义;

2.了解数据库管理系统进行数据完整性检查的机制;

3.掌握实体完整性的定义方法;

4.掌握参照完整性的定义方法。 1.学习“内蒙古民族大学课堂教学管理规定”,要求同学们遵守学校的各项规章制度,强化制度约束,助推学风建设,推进课堂教学质量;

2.理解事物的联系是普遍存在的,向同学们灌输大学生处理好人际关系的方法技巧,努力在师生间、生生间形成良好的人际关系;

3.理解个体、群体与社会的辩证关系,培养同学们的主人翁责任感和集体荣誉感,进行集体主义教育。 1.微信中的一则信息:“22名大学生一夜之间被开除:在最好的位置上懒惰,你到底会失去什么”——引出:强化制度约束,助推学风建设,推进课堂教学质量;

2.大学生活中的美好回忆(以课堂活动形式展开)——引出:大学生如何处理好人际关系;

3.学校的一次课堂教学检查真实案例——引出:集体主义教育。 第七章 数据库设计

7.1 数据库设计概述

7.2需求分析 1.理解数据库设计的特点、方法、步骤;

2.理解需求分析的任务,掌握需求分析的方法。

1.理解团队协作的重要性,了解团结协作是计算机应用程序开发小组成员所遵循的基本规范之一;

2.理解分步骤是人类了解复杂事物、解决复杂问题时最常用的方法之一,在学习生活中做好规划,并能够按照制定的规划稳步前进;

3.理解沟通能力是一个人生存与发展的必备能力,了解数据库设计的需求分析中,乃至日常生活中沟通能力的重要性,学习高效沟通的三大秘诀。 1.数据库设计的人员组成——引出:团结协作精神;

2.分步原理——引出:合理规划自己的学习生活;

3.一个往届毕业生的需求分析工作真实经历——引出:良好的沟通能力的重要性。 ]

4 结语

文中给出了对《数据库系统概论》课程的“课程思政”教学设计,这仅仅是“课程思政”教学改革的第一步,今后继续深入梳理和挖掘与专业教学内容相结合的“课程思政”教育素材,使专业教育与思想政治教育有机结合,相得益彰。坚持社会主义核心价值观的正确指导,提升教师自身的专业素养,树立正确的教学理念,争取有效完善思想政治与计算机专业课程的融合。通过提高教师思想政治水平、选取合适的“课程思政”教育素材,并采用恰当的教学方法可以有效提升“课程思政”的教学效果。

参考文献:

[1]习近平.把思想政治工作贯穿教育教学全过程开创我国高等教育事业发展新局面[N].人民日报,2016-12-09.

[2]图雅,张春生.《数据库系统概论》课程混合式教学改革探索与实践[J].软件导刊(教育技术),2018,17(9):39-40.

[3]张春生,图雅,李艳,等.民族院校《数据库系统概论》教学团队建设探索——以内蒙古民族大学计算机科学与技术学院为例[J].软件导刊(教育技术),2018,17(11):51-53.

[4]庄丽艳,张春生.混合教学模式下数据库系统概论课程教学方法的探讨[J]. 读与写(教育教学刊),2018,15(11):79-80.

[5]李艳,白玉峰.新媒体技术在混合式教学改革中的应用[J].电脑知识与技术,2018,14(32):151-152.

[6]張春生,庄丽艳,图雅,等. 《数据库系统概论》精品课程体系改革与建设[J].内蒙古民族大学学报(自然科学版),2014,29(4):397-399.

[7]张春生,李艳. “任务驱动”教学法在数据库系统概论课程教学中的应用[J].内蒙古民族大学学报(自然科学版),2013,28(4):413-415.

[8]萨师煊,王珊.数据库系统概论[M].第5版.北京:高等教育出版社,2014.

【通联编辑:王力】

作者:图雅

第2篇:数据库系统原理课程教学载体设计的持续改进

摘要:针对数据库系统原理课程实践教学过程中教师指导薄弱而无法保证达到培养目标等问题,对研究性教学训练载体进行研究和设计,说明研究性教学训练载体库的整体框架和设计细节,提出以不断增加的成就感激发学生兴趣,以不断扩展的问题求解引导学生探究,强调教师在教与学关系中的重要作用。

关键词:研究性教学;数据库;训练载体;持续改进

0 引言

数据库系统原理课程是一门实践性较强的课程,建设一定数量且较高质量的研究性训练载体可以使训练题目动态更新,使训练内容更丰富和多样化。教师可根据学生的反馈对教学载体进行持续改进,在训练载体中增加研究性设计和实验项目前后衔接设计,使前期实验能够为后期的综合课程设计服务,提升综合课程设计质量,保证学生完成课程训练。

数据库系统原理课程研究性训练载体库的设计思想、主要内容、研究性训练安排、学生自主探究环节等实现细节,已经在课程教学中使用并不断改进。目前已有多组学生的训练作品依托该载体获得了学校优秀研究性学生作品。

1 教学训练载体库的整体框架

数据库系统原理课程研究性教学训练载体的设计目的是要求学生在系统学习数据库基础理论知识,包括数据模型、数据库设计、数据库控制等基本原理和方法的基础上,掌握运用数据库设计技术、规范化理论、SQL语言等技术实现数据库应用系统的过程与方法。

一个好的训练载体的设计应以培养学生为目标,因此教师应首先将数据库系统原理课程训练目标确定如下:①让学生深刻理解和领会关系数据库的核心“关系模型”;②培养学生的分析、归纳和设计能力;③使学生熟练掌握各种关系数据库操作;④从实际工程角度训练学生的编程和调试能力;⑤训练学生利用所学知识求解新问题的能力,重点培养自学能力和系统集成能力。

在对学生基本能力培养的基础上,数据库系统原理教学训练载体应特别体现数据库系统分析能力、数据库系统综合实践能力和创新能力的训练。

1.1 总体设计

数据库系统原理课程研究性教学训练载体库是由综合课程设计“图书借阅系统”“酒店前台登记系统”“房产中介系统”等多个训练载体组成的。每个训练载体均包括两部分训练内容。

第1部分训练内容是精心设计的由浅入深的9组实验,完成全部SQL重点命令的练习,涵盖数据定义、数据查询、数据更新、数据完整性、数据库编程与查询优化6个理论教学模块。整个训练载体的设计符合认知规律,由浅入深,层层递进,前后衔接,保持了学生的学习兴趣,能够使大部分学生迅速获得成就感。第1部分训练题目都是从后期综合课程设计中抽象出来的典型数据库操作问题,能够使学生在实现这些核心操作任务的同时,掌握具体的数据库SQL语言并在后期的综合课程设计中运用。

第2部分内容是要求学生按照软件工程的规范完成综合课程设计的需求分析、系统概要设计和详细设计、系统编程实现等数据库应用系统开发流程。该课程设计题目体现了综合实验的设计性、综合性和研究性特点,可以使学生全面认识数据库系统原理课程中的各个知识点及其联系,从而掌握数据库应用系统分析、设计和实现的方法,进一步提高学生的编程能力和动手实践能力。此外,综合课程设计在前期SQL基础训练上完成,使学生能够快速进入角色,这种循序渐进的设计可以提高训练的效率。

1.2 详细设计

以训练载体“图书借阅系统”为例的研究性教学训练载体设计见表1。

训练项目1和项目2是整个训练的基础,帮助学生逐渐熟悉环境。Access是一个小型数据库管理系统,具有使用方便、操作简单、容易上手的特点,数据库基础训练就从学生熟悉的Access数据库环境开始。SQL Server是“图书借阅系统”训练载体的主要实验环境,项目2将项目1中使用Access建立的表及数据导人SQL Server,使学生了解在实际应用中共享数据的方法。每组实验在设计时都需要建立这种前后的关联。

训练项目3--项目9是基础训练的重点。在每个训练载体中,教师可将前期的SQL验证实验题目全部设计为与该载体相关的内容,如“图书借阅系统”中的子查询实验题目是“借了3本以上计算机类图书的金卡读者”、触发器实验题目是“已挂失的借书证不能再借阅图书”等。在“酒店前台登记系统”中,所有的题目都更改为与该载体相关的内容,如子查询实验题目是“已住人的各类房间的总数”、触发器实验题目是“故障和整理中的房间不能登记住人”等。教师可在基础实验和综合实验之间建立联系,使前期实验能够为后期的综合课程设计服务,将前期的完整性实验、触发器实验、函数和存储过程等实验全部用于后期的综合课程设计中,使得整个训练载体的设计体现系统性和完整性。

训练项目10是综合课程设计。除了共同的训练内容之外,每个训练载体均有其侧重的研究任务。图书借阅系统重点研究数据的完整性,如读者借阅的图书一定是系统中提供的图书、一个读者不能借同一本书超过1本、读者遗失的图书一定是本人借阅的图书、已遗失的图书不能再被借阅、遗失图书数量不能超过馆藏图书数量、已挂失的借书证不能再借书、出借天数和最多借书册数由会员级别决定等;酒店前台登记系统则突出事务的练习,如换房操作就是一个事务,如果没有按事务处理,就可能导致客人无法实现换房操作;房产中介系统引导学生研究数据库安全性的实现方法,保证某些重要信息不被窃取和丢失。通过上述训练,学生能够对数据完整性、事务、数据安全性、查询优化等数据库中重要概念的认识更加深入,从而加深对数据库的理解。

2 教学洲练载体的研究性设计

要想在训练载体中体现研究性,教师必须巧妙设计题目,引导学生思考与探究。例如,每个训练载体中都有自出题,要求学生出的是把自己难倒的题,需要学生用未学的知识解决,学生必须通过自己上网查阅资料研究解决办法,教师还要引导学生学会提出问题。再比如,每次实验都会特别设计题目让学生探究完成,数量不多,难度也不大,如有一题是“建立金卡会员的视图,显示会员姓名和年龄”,数据库中存储的是会员的出生日期,如何将出生日期转化为年龄输出,需要学生自己解决;教师可引导学生找到函数year、getdate、datediff、datepart等将日期显示转换成数值显示,或用cast和convert转换数据类型,还可以使用多种方法并对每种方法进行扩展应用,引导学生学会寻找解决问题的方法。这样的设计能够引起学生的兴趣,同时培养学生的探究意识。

综合课程设计中也有很多可以扩展的问题,甚至故意留有小的“陷阱”,如要求学生查阅读者的借阅历史信息,但给出的表并没有支持该查询的数据存储,要想完成该功能需要在数据库中增加新表;再比如,借书时要根据读者的级别、是否挂失、是否还有库存、同一本书是否2次借阅等多个条件,才能确定是否允许借阅,该判断要求学生使用之前的触发器实验完成,但当时的触发器功能并不能区分是何种原因使借阅操作无法进行,这样就不是单纯的引用,而是需要在前面的基础上继续补充知识。

在训练载体中精心设计研究性问题并带领学生探究非常重要。教师在教与学的互动中,需要既突出学生的自主性,又要让学生离不开教师的指导和反馈;而无论是载体的设计还是训练过程中的引导,教师都发挥着重要作用。实践足检验真理的标准,教学改革的效果只有在学生的实践过程中才能体现,在此过程中,如何做到持续改进更是重中之重。

3 结语

在数据库系统原理课程的每个验证实验和后期的综合课程设计训练之间建立联系,将前后实验打通连贯并层层递进,使验证实验能够作为综合课程设计的基础实验,不仅能够建立前后实验的衔接层次关系,而且可以保证学生做实验的效果。笔者在训练载体中特别设计了与各个数据库应用系统有关的重点研究问题,如安全性问题、优化问题、数据完整性问题等,用数据库理论、方法和技术指导学生的课程实践活动,在课程设计中体现研究性。未来的工作是根据学生反馈小断改进,进一步丰富与完善载体库设计并对改进效果进行科学评价。

作者:徐薇

第3篇:“数据库系统应用”课程教学研究

摘要:分析“数据库系统应用”课程教学中存在的问题,明确课程教学内容,提出采用混合式教学法、任务驱动教学法等改进教学的方法和具体措施。

关键词:数据库应用;课程教学;任务驱动;混合式教学

数据库技术是信息系统的支撑技术,在软件开发中发挥着重要的作用。为了使学生具备扎实的数据库技术知识和应用能力,我校为计算机专业本科生开设两门数据库课程。其中,“数据库原理”课程的目标是全面学习数据库系统的理论知识[1],“数据库系统应用”课程的目标是深入学习一种流行的数据库系统(如SQL Server)的操作与使用,强化数据库应用能力,在数据库应用开发中正确、熟练应用数据库系统。

在“数据库系统应用”课程的教学实践中,我们发现需要解决下列问题[2]。1)本课程与原理课内容联系紧密,因此要求精选教学内容,尽量减少重复概念、已掌握内容的讲授。2)本课程作为一门本科课程,应该在教学内容设置和教学方法上突出本科课程特色,同时发挥本科学生自学能力强的优势。3)课程教学学时较少,需要精选教学内容,合理利用教学时间。4)如何充分利用网络环境构建网络课程教学平台,将混合式教学思想运用到课程教学中。5)在学习“数据库原理”和“数据库系统应用”两门课后进行信息系统设计实践环节时,发现学生所做的数据库设计错误很多,反映出学生没有真正掌握数据库设计技术,因此数据库设计能力的培养不是学习原理课就一蹴而就的,需要在“数据库系统应用”教学中进一步训练和提高。

下面从“数据库系统应用”课程的教学内容设置和教学方法两个方面展开讨论,并提出解决上述问题的方法。

1课程教学内容设置

1.1课程内容的范围

SQL SERVER作为一个流行的网络数据库系统,具有强大且丰富的功能。本课程内容应使学生全面理解和掌握SQL SERVER的功能及应用。按照由基本到深入、从基础到提高的关系,可以将课程内容分为四个模块:1)应用基础。包括SQL SERVER服务器的概念、安装、服务器管理、数据库创建、表创建与数据完整性、索引、表数据操作与查询、视图、T-SQL语言、存储过程和触发器。2)SQL SERVER管理。包括安全管理、备份与恢复、复制、SQL SERVER代理服务。3)应用开发。介绍数据库应用系统结构、数据库访问接口、B/S和C/S数据库应用系统实例。4)提高与扩展。介绍SQL SERVER事务管理、XML数据操作、SQL SERVER报表服务、集成服务、分析服务。

在上述四部分内容的学习中,或多或少存在与原理课重复出现的知识点,因此教学中要尽量减少讲述与原理课的重复内容,只介绍在SQL SERVER系统的具体实现及应用中需要注意的地方。课程的第四部分内容体现了本科教学对课程内容深度和广度的要求。如果课时充裕就详细介绍SQL SERVER报表服务、分析服务等,否则也要简要介绍其概念及应用。

1.2实验安排

实验教学是课程教学中重要的组成部分,数据库课程又是一门实践性很强的课程,只有通过大量的上机实验,才能使学生练习巩固数据库操作和管理功能,达到熟练灵活应用的目的。结合课程教学内容,可以安排以下七个实验。

实验1:SQL Server服务器管理和创建数据库。

实验2:创建表与定义数据完整性。

实验3:表操作语句和视图的使用。

实验4:Transact-SQL语言的使用。

实验5:存储过程、触发器的建立与使用。

实验6:SQL Server安全性管理。

实验7:SQL Server数据库访问接口与应用程序开发。

各个实验与相关课程安排如表1所示。

在上机实验之前,教师在课堂上应给学生指定明确的实验题目,让学生上机时做到目的明确,有的放矢。学生上机时,教师要对学生进行及时的指导,并且对学生完成实验的质量作出评价,将评价结果作为评定课程成绩的组成部分。

2教学方法

依据学生的特点、合理运用各种教学方法和教学手段是实现教学目标的重要保障。我们在教学中,重视学生的主体作用,采用案例教学法、任务驱动教学法、混合式教学相结合的教学方法,来改善教学效果,保证教学目标的实现。

2.1重视学生的主体作用

本课程的学习主体是本科学生,其优点是自学能力和学习自觉性较强,因此对操作性的内容完全可以交给学生自己练习,对简单的界面操作也无需过多讲解详细步骤,只需要向学生们明确提出学习和练习的要求,学生们完全可以在课余时间自己学习和练习,这样能够进一步锻炼学生的自学能力,同时较好地解决了课时少与内容多的矛盾。

在其他教学方法的运用中同样也要重视对学生主体作用的发挥。

2.2用统一的示例贯穿教学过程

在课程教学中,针对课堂教学、实验教学和课余练习,应分别设计一个比较系统的、能涵盖各章知识点的数据库示例,使各章节内容围绕同一个示例展开讲解。统一的示例不仅便于学生记忆、学习和练习,而且能够体现课程各章节知识的逻辑联系与连续性,并使学生学习的知识更加系统化。

示例的设计应选择学生熟悉的事物,选择有较多数据联系、不过于复杂的数据库作为示例数据库,如学校教务管理系统中的选课数据库、毕业设计选题数据库、图书管理数据库等。好的示例不仅便于教学的开展,而且能激发学生的学习兴趣。例如,以图书管理数据库作为课后作业的示例数据库,首先要求学生复习数据库原理知识,完成图书管理系统的数据库设计;其次建立数据库;再次按各章内容逐步建立表、建立索引、设计查询等;最后,在学习了数据库访问接口之后,就可以建立数据库连接字符串,并设计完成系统的主要界面。因此当学生完成全部作业,也得到了一个初步的成果,无疑将会提高学习的积极性。

2.3采用任务驱动教学法

学生的学习需要教师悉心的督促和激励。任务驱动教学法是将学生的学习活动与大的任务或问题相结合,以探索问题来引导和维持学习者学习的兴趣和动机,使学生拥有学习的主动权,教师不断地激励学生前进[3]。任务驱动教学法的目标就是让学生带着任务学习、带着任务(问题)练习,增强学习目的性,增进教学效果。

在讲授每一章节内容之前,首先要告诉学生本部分内容的学习目标,提出通过学习该内容需要回答的问题或完成的任务。其次,在实验或课余作业之前,必须明确任务,即作业的目标和详细内容,可以将作业分为一般作业题和选做作业题。一般作业题是每位学生必做的,体现课程内容的基本要求。选做题是一些深入探究的题目,供研究能力强的学生深入钻研。除日常作业之外,为提高学生数据库设计能力,还需要安排另外的任务,如为某个信息系统设计数据库。由教师提出一些有一定规模的信息系统的数据库设计任务,让学生自由选择独立完成,并尽量安排时间让每位学生对自己的设计进行讲解或答辩。

2.4采用混合式教学

混合式教学(Blending Learning或Hybrid Learning)是将传统的面对面的课堂学习(Face to Face)与E-learning(即数字化或网络化学习)有机结合,把传统教与学方式的优势和E-learning的优势结合起来;也就是说,既要发挥教师引导、启发、监控教学过程的主导作用,又要充分体现学生作为学习过程认知主体的主动性、积极性与创造性[4]。

由于混合式学习是面对面的课堂学习和在线学习这两种教学形式的结合,因此支持在线学习的网络教学平台是必不可少的。利用校园网作为载体,我校提供了网络课程教学平台,使教师可将大量的课程资源发布在网上,学生登录后可以进入学习、获取学习资源。教师和学生可以通过在线答疑及时交流,通过讨论区(论坛)进行专题讨论,通过博客系统发布个人收集的技术资料,利用作业提交系统及时发布、提交、批改作业。

在学校提供的网络课程教学平台上,我们建设了“数据库系统应用”网络课程,提供课程教学的相关资源,并支持课程的教学活动,达到辅助教学的目的。课程网站的资源设计和功能设计包括以下内容:

1) 给教师提供教学参考资料,包括教学大纲、授课计划、教学建议。

2) 给学生提供进行在线预习和复习的资源,包括课程学习指导、电子课件、电子教案、实验指导。电子教案不应该是对教材的简单重复,而应该对各章节重点、难点内容进行必要的解释说明。

3) 支持基本的教学活动,包括发布通知、浏览学习计划、发布作业与批阅作业、在线答疑、在线测试。

4) 提供论坛即讨论区,使学生和教师可以方便的交流和自由讨论,由教师管理论坛的主题,将某个技术主题或重点难点内容设置成主题,如数据库的安全性管理技术、几种恢复技术的异同、复杂查询语句等,使学生围绕主题进行讨论。课程网站开放博客系统,支持教师和学生发布篇幅较长的技术文章、问题解答等内容。还可以使用站内消息功能进行课程学习相关人员之间的两人和多人之间的交流。

5) 为学生提供拓展学习资源,如数据库技术研究文章、其他流行数据库管理系统的应用知识。其目标是拓展知识宽度和深度,发挥本科学生学习能力强的优势,激发学生进行深入学习的兴趣,使学生更多更深入地掌握数据库应用知识和技术。

6) 建立合理的课程考核评价机制。学生成绩评定不宜采取以期末考试决定课程成绩的方式,可以结合学生完成理论作业和实验作业的质量、期末测试得分、参与论坛讨论的次数、参加在线答疑的次数、上传技术资料数量几个方面作为课程成绩的组成部分,激励学生积极访问网络课程网站参与讨论、独立思考、发现和提出问题。还可以结合采用积分制,将成绩的各个组成部分量化,累计起来作为最终成绩。此外,应使学生能够及时获得教师的反馈,随时查看自己的得分情况,以激励学生坚持不懈地努力学习。

3结语

综上所述,在分析“数据库系统应用”课程教学目标和存在问题的基础上,我们明确界定了课程教学内容,并以建设网络课程为辅助手段,结合采用混合式教学和任务驱动教学方法,使课程的教学效果得到明显改善,课程期末考核成绩优良率提高了30%。从调查结果来看,学生很欢迎网络课程网站的使用,学到了更多的知识。

在课程教学中,教师是教学的主导者,是学生学习的指导者、教学资源的整理者、教学活动的设计者和组织者[5]。课程的教学改革对教师提出了更高的要求,教师需要不断学习和运用新知识、技术与方法,不断提高教学水平,还需要以更强的责任心,引导、督促学生积极参与到课程的各个教学活动中。

“数据库系统应用”课程的教学还涉及一些紧密相关的课程,如数据库原理、软件工程等,应加强相关课程教师之间的交流,开展教学研讨,使老师们对课程间相关联的概念、知识、方法的理解取得一致,使学生通过各门课程的学习,应用能力不断强化提高,真正具有实践能力和创新能力。

参考文献:

[1] 王珊,萨师煊. 数据库系统概论[M]. 4版. 北京:高等教育出版社,2006.

[2]Nga-Sin Lau, Lui Lam, Bo Zhou. Enhancing Blended Courses to Facilitate Student Achievement of Learning Outcomes[C]// Proceedings of ICHL 2010. Berlin:Springer,2010:205-216.

[3] 程录庆,王志立,陆骥. 任务驱动法在“大型数据库”课程教学中的应用探索[J]. 高教论坛,2009(6):65-67.

[4] 何克抗. 关于发展中国特色教育技术理论的深层思考(上)[J]. 电化教育研究,2010(5):7-21.

[5] 杨鑫华,邓武,赵慧敏,等. 实用型人才培养的数据库课程教学改革与实践索[J]. 理工高教研究,2008,27(3):102-104.

Research of Database System Application Course Teaching

GAO Chunling, LIU Baoluo

(Computer and Information Engineering Department, Luoyang Institute of Science and Technology, Luoyang 471023, China)

Key words: database application; course teaching; task-driven; hybrid learning

(编辑:彭远红)

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

作者:高春玲,刘保罗

第4篇:数据库课程设计+飞机订票系统

飞机订票系统

1.概述(设计题目与可行性分析)

1.1设计题目:飞机订票系统

1.2可行性分析

飞机订票系统是为机场工作人员和客户提供订票退票等与机票相关内容的管理系统,方便机场工作人员对机票的管理,以提高机场工作人员对机票管理工作的效率。当前飞机订票问题:手工订票所产生的客座率低。而我们的目标是:建立一个飞机订票系统数据库。

1.2.1研究现有系统,画现有系统的流程图

了解当前系统能够完成的功能及组成

航班管理:票据管理

售票点:直接面向用户 航班管理

票据管理

票库

订票库

订票管理

出售管理

打印机票

售票点1 售票点n

现有系统:票据都分布在各个售票点

1.2.2导出新系统的高层逻辑结构

数据流图的基本符号:

数据源/终点(人机界面):

加工处理:

文件名

文件: 数据流名

数据流: 票价信息

机票

查订票号

订票处理

客户信息

出票处理

订票记录

顾客

订票信息

订票号

库存信息

票价信息

票价管理

航班管理

航班信息

操作员

航班信息

保存

新系统的数据流图:

说明:流向文件的数据流的名可以省略

1.2.3可行性分析报告

随着Internet的迅速发展和用户数量的急剧增加,互联网对于企业和事业单位的运营和发展日益重要,网上交易也逐渐被人们认可,并成为未来交易的发展方向。在这种情况下,很多原有的C/S模式的系统也逐步向B/S模式靠拢,飞机订票系统也不例外。

飞机订票系统是飞机旅游服务信息系统的一个重要组成部分。为旅客提供优质便捷的服务,为了提高飞机客运的售票效率,丰富飞机客运的营销手段,飞机售票总站的下属代售点可以通过公用的互联网资源,建立数据库,实现网上的售票,查询及管理工作。

2.系统目标和设计原则

2.1系统目标:

建立一个飞机订票系统数据库。

2.1.1系统简介:

本系统是专为乘坐飞机的旅客准备的,旅客只需把自己的信息(姓名.性别.工作单位.身份证号.旅行时间.旅行目的地)预先交给旅行社,旅行社就可以将信息输入本系统,系统就可以为旅客安排航班,打印出取票通知和帐单。旅客只要在飞机起飞的前一天凭取票通知单和帐单交款取单,系统校对无误即印出机票给旅客。

2.2设计原则

2.2.1根据实际情况考虑三种可行性

技术可行性、经济可行性、操作可行性

2.2.2提出侯选方案

1 、提出各种各样的实现方案

主机(纯主机型、C/S型)、开发环境、网络方案

2 、对提出的每个方案进行成本估计

硬件、软件费用投资(根据各公司的报价) 开发成本估计(任务估算法)

运行费用、投资回收期

纯收入:通过本系统的运行、投资回收后的收入

3、描述推荐理由:分别从技术、经济、用户、投资方的不同角度考虑

3.支撑环境规划

3.1整体系统运作图

3.2运行环境

服务器:硬件配置:CPU Intel P4 1.2G以上

内存256 硬盘 80G以上

软件配置:Windows 2000/2003 SERVER SQL SERVER 2000 4.系统功能结构

1、录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定)

2、查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况;

3、订票:(订票情况可以存在一个数据文件中,结构自己设定) 可以订票,如果该航班已经无票,可以提供相关可选择航班;

4、退票:可退票,退票后修改相关数据文件;

客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。

5、修改航班信息:当航班信息改变可以修改航班数据文件。

5.数据库设计

5.1概念结构设计

E-R图如下:

5.2逻辑结构设计

1.航空公司表:AIRLINE 2.客户表CUSTOMER

3、飞机表PLANE 4.航线表LINE 5.航班表FLIGHT 6.订票表BOOKTICKET

5.3实现设计

实现以下操作:

1、注册航空公司:

2、增加飞机:

3、增加航线:

4、增加航班:

5、增加客户:

6、建立一个订票的存储过程,存储过程名为Book_Ticket,请完成以下存储过程,实现订票的操作:

a) 指定要订的航班号(HID)及客户的编号(KID);

b) 先查看客户是否为特殊客户,如果不是,票价不打折扣;

c) 否则如果客户航程超过5万公里,票价7折,超过15万公里,票价打5折;

d) 查看客户订票以后,所有乘客的票数是否超过总的座位数,如果超过,回滚订票操作;

e) 要求在操作过程中使用到事务技术。

CREATE PROCEDURE Book_ticket @HID VARCHAR(20)

@HID VARCHAR(20)

AS DECLARE @TRANS_NAME VARCHAR(20) select @TRANS_NAME=’ ’

BEGIN TRANSACTION DECLARE @Bookid int,@seats int,@IsSpec char(1) /*定义订票里程DIST、折扣率discount、总的订票里程distance、票价PRICE(实型)*/ select @Isspec=Isspec,@distance=Points FROM Customer where select @discount=1 IF @ BEGIN

END /*选择出票价*/ SELECT @PRICE=PRICE FROM FLIGHT WHERE /*加入客户订票信息*/

/*将客户新订票里程的信息累计到用户信息里面*/

UPDATE SET WHERE /*查看客户订票后,是否超过可容纳的座位数目,如果超过,取消所有操作*/ SELECT booked=count(*) FROM WHERE FID= /*查看额定座位容量*/ SELECT @seats=seatsnum FROM WHERE

IF @BOOKED>@SEATS

ELSE

COMMIT TRANSACTION GO 7. 运行这个订票操作的存储过程(自己设定客户及航班)

book_ticket , 8. 事务运行成功后,再显示各表的数据,按表分别写出来。

6.总体实施计划

6.1可行性研究:

研究现有系统,画现有系统的流程图,编写可行性分析报告

6.2进行数据库设计:

概念结构设计,逻辑结构设计,实现设计

6.3概要设计:

从数据流图导出初始结构图,设计优化 6.4详细设计:

结构化的程序设计,采用流程图的形式

6.5保密设计

1. 每个用户需要注册才能进入航空订票信息系统,并进行网上订票的。用户必须

用自己真实的身份进行注册。

2. 系统要另外在备一份数据库,防止系统出现错误而使数据信息丢失的可能性。

3. 系统要安装防火墙,防止黑客入侵破坏系统。还有就是安装杀毒软件,防止

病毒入侵而导致系统瘫痪。

6.6维护设计

系统设置提供管理员操作页面:

1. 提供管理员密码,方便维护操作. 2. 固定时间对系统进行维护和检测. 3. 若系统出现瘫痪时,可出动备用系统维持运转. 4. 定期对系统进行更新整顿清空.

7.总结

这次数据库课程设计的“飞机订票系统”,通过近一周的上机操作,充分应用了所学的数据库的知识,并去图书馆查阅了一些书集和上网搜索一部分相当资料,粗略设计出该系统。 总体上来说,这次课程设计还是比较成功的,充分运用了所学的软件工程设计、数据库的设计,设计出E-R图、流程图、数据库基本表,从整体规划出了系统的运行环境和系统实现的功能。

当然,由于学艺不精,在课程设计的过程也碰到的一些问题。其中,画E-R图时,各实体中的关系的确定,由于对系统还不够了解而找不到一个准确的词来形容;总体规划时,材料太多,不易整理;相关数据库技术方面没有多注意,这次课程设计的重点只在对整个系统的总体思路设计。

其实这些通过最近的课程设计觉得最重要一点就是:我们一定要自己动手,这样才能真正的学到东西。书本知识固然重要,但我们更要学会将书本知识应用到实际的工作中。实践中才会发现错误,也才能改进,才能达到学习的最终目的。

最后感谢在这次课程设计中帮助过我的老师,同学! 8.参考文献

物流信息系统

赵刚 四川大学人民出版社 2002/9 物流信息管理

尹涛 东北财经大学出版社

2005/1 数据库系统概论

王珊 萨师煊 高等教育出版社 2006/5 数据库技术与应用-Access2000篇 郭力平 人民邮电出版社

2002/8 软件设计师教程 陈平禇华

清华大学出版社 2006/6 文章引用自:

第5篇:数据库课程设计学籍管理系统

学籍管理系统

本次数据库课程设计是以Access数据库作为后台以VB作为前台的应用型设计课程。

综合我们所学的两大课程创建应用型的数据库系统,大大的提高了我们学生的动手能力,作到了理论与实践相结合。 一.题目说明:

学生学藉管理系统是典型的学藉管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。

本系统主要完成对学生情况和学生成绩的管理,包括数据库中表的添加、删除等。系统还可以完成对各类信息的浏览、添加、删除、等功能。

系统的核心是数据库中各个表联系,每一个表的修改都将联动的影响其它的表,当完成对数据的操作时系统会自动地完成数据库的修改。查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,系统不仅有静态的条件查询,也有动态生成的条件查询,其目的都是为了方便用户使用。系统有完整的用户添加、删除和密码修改功能,并具备报表打印功能。 关键字:窗体、数据库、vb6.0、access2000。

学生学籍管理系统被广泛应用于各类学校的学生学籍管理工作中,要求其具有实用性强、使用方便、效率高和安全可靠等特点。本管理系统正是围绕以上几个方面进行开发的,在开发过程中充分考虑到本系统的应用特点,并进行了大量的检验,证明其的确达到了设计的要求,是一个已具备了实际应用能力的软件。本文主要论述学生学籍管理系统的开发过程,在涉及到VB及Access中的部分知识以举例的方式进行讲解 二. 总体设计:

我的总体设计如下:

(1).利用Access建立数据库,并在该数据库下创建五张表格,分别是学生表、课程表、选课表、学生选课表以及口令表。

(2)利用VB来建立界面并对它进行设计和修改,大体框架如下: FORM1 用于首界面

FORM2 用于登陆此系统的登录界面

FORM3 是主窗体,在这上面建立相应的菜单 如:文件——退出、添加用户(FORM4) 数据信息——管理使用(FORM5)

基本操作——学生操作、选课操作、课程操作 (FORM

6、FORM

7、FORM8) (3)对以上的界面进行设计以及对所要操作的部件进行编程。

三.常用控件的说明: 所有的Windows应用程序窗口或对话框,都是由诸如文本框、列表框、命令按扭、滚动条、命令菜单等组成的。VB通过控件工具箱提供了它们与用户进行交

互的可视化部件,即控件。程序开发人员只需要通过简单的操作,在窗体上安排所需要的控件,完成应用程序的用户界面设计即可。 序号

名称

功能

1 Label标签

用于说明

2 Textbox文本框

用于文本输入或显示 3 Frame框架

用于组合控件

4 Commandbutton命令按扭

单击执行命令 5 Timer计时期

用于定时

6 Data数据控件

用于访问数据库

三.详细说明:

1.数据库的建立与设计:

数据库是有结构的数据集合,它与一般的数据文件不同,(其中的数据是无结构的)是一串文字或数字流。数据库中的数据可以是文字、图象、声音等。

Access数据库由六种对象组成,它们是表、查询、窗体、报表、宏和模块。

(1).表(Table) ——表是数据库的基本对象,是创建其他5种对象的基础。表由记录组成,记录由字段组成,表用来存贮数据库的数据,故又称数据表。

(2).查询(Query)——查询可以按索引快速查找到需要的记录,按要求筛选记录并能连接若干个表的字段组成新表。

(3).窗体(Form)——窗体提供了一种方便的浏览、输入及更改数据的窗口。还可以创建子窗体显示相关联的表的内容。窗体也称表单。

(4).报表(Report)——报表的功能是将数据库中的数据分类汇总,然后打印出来,以便分析。

(5).宏(Macro)——宏相当于DOS中的批处理,用来自动执行一系列操作。Access列出了一些常用的操作供用户选择,使用起来十分方便。

(6).模块(Module)——模块的功能与宏类似,但它定义的操作比宏更精细和复杂,用户可以根据自己的需要编写程序。模块使用Visual Basic编程。

我们利用Access来建立数据库,我们的库中有五张表格,其分别是学生表、课程表、选课表、学生选课表以及口令表。

我们就以学生表为例做一个简单的说明:

我们使用设计器来创建表的,我的这张表有七个字段,每个字段的名称分别是:学号、班级、姓名、性别、出生年月、民族、地址、电话号码,每个字段有七个数据。我并对其字段的属性进行了重新的修改,以做到不浪费其空间。

我具体的实施步骤是:启动数据库管理器——建立数据库——建立数据表结构——输入记录。

最终产生了这样的一个数据库:(如下)

2.VB界面的建立设计以及程序的编写说明:

VB 是在Windows操作平台下,用于开发和创建具有图形用户界面的应用程序的强有力工具之一。VB为开发Windows应用程序不仅提供了全新的相对简单的方式,而且也引进了新的程序设计方法——面向对象的设计方法(00P)。从传统的面向过程的程序设计,转移到更先进的面向对象的程序设计,无论是对老的程序员,还是初学者,都是一个挑战。而学习VB,则是掌握这一新的程序设计方法的一条捷径。

(1).界面的设计和程序的编写:

设计一个像这样的友好的界面,我考虑到它的颜色的配制,界面的大小,界面所载的内容的多少等,在后台我用定时器给其限定时间让它在一定的时间后自动跳到下一个界面。

这个界面是系统的主界面,用户可以在通过系统登录后直接到我们的主界面上来进行相应的操作,我的主界面采用的是一张苏州市职业大学的图片,在这个图片的上面有三个菜单,分别是文件、数据信息和基本操作。在各自的下面还有与之相对应的子菜单,文件下有退出和添加用户,数据信息下有管理使用,基本操作下有学生操作、选课操作和课程操作。我利用FORMn.SHOW命令连接到相对应的界面上。

我们的界面有好几张我就对其中的一张进行详细的分析:

这是一张学生选课浏览表的界面,这也是对应我的主界面菜单中的数据信息下的管理使用子菜单的一张界面,在这张界面中包含了8个LABEL标签控件、7个 TEXTBOX文本框控件、6个COMMANDBUTTON命令按扭控件、1个FRAME框架控件和1个DATA部件。我利用DATA部件将界面与 ACCESS数据库相连接,具体的操作是利用DATABASENAME与数据库连接,在RECORDSOURCE中找到与之对应的表,再用 DATASOURCE、DATAFIELD与个文本框内容对应,从而实现界面与数据库的连接。 下面是程序的编写过程:

显示前一个数据: COMMAND1:

Private Sub Command1_Click() If Data1.Recordset.RecordCount = 0 Then MsgBox "没有记录" Else If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst MsgBox "这是第一条记录!" Else Data1.Recordset.MovePrevious If Data1.Recordset.BOF = True Then

Data1.Recordset.MoveFirst MsgBox "这是第一条记录!" End If End If End If End Sub 显示第一个数据: COMMAND2:

Private Sub Command2_Click() If Data1.Recordset.RecordCount = 0 Then MsgBox "没有记录" Else Data1.Recordset.MoveFirst End If End Sub 显示最后一个数据: COMMAND4:

Private Sub Command4_Click() If Data1.Recordset.RecordCount = 0 Then MsgBox "没有记录" Else Data1.Recordset.MoveLast End If End Sub 显示后一个数据: COMMAND3:

Private Sub Command3_Click() If Data1.Recordset.RecordCount = 0 Then MsgBox "没有记录" Else If Data1.Recordset.EOF Then Data1.Recordset.MoveLast MsgBox "这是最后一条记录!" Else Data1.Recordset.MoveNext If Data1.Recordset.EOF = True Then Data1.Recordset.MoveLast MsgBox "这是最后一条记录!" End If End If End If End Sub 添加一个数据:COMMAND6 Private Sub command6_Click() If Command6.Caption = "添加" Then

Command1.Enabled = 0 Command2.Enabled = 0 Command3.Enabled = 0 Command4.Enabled = 0 Command6.Caption = "确定" Command5.Caption = "放弃" If Data1.Recordset.RecordCount > 0 Then Data1.Recordset.MoveLast End If Data1.Recordset.AddNew Text1.SetFocus Else Command1.Enabled = -1 Command2.Enabled = -1 Command3.Enabled = -1 Command4.Enabled = -1 Command6.Caption = "添加" Command5.Caption = "删除" Text2.Enabled = 0 Text5.Enabled = 0 Text3.Enabled = 0 Text4.Enabled = 0 Text6.Enabled = 0 Text7.Enabled = 0 Data1.Recordset.Update Command1.SetFocus End If End Sub 删除一个记录:COMMAND5 Private Sub Command5_Click() If Command5.Caption = "放弃" Then Command4.Enabled = -1 Command5.Enabled = -1 Command6.Enabled = -1 Command3.Enabled = -1 Command1.Caption = "添加" Command2.Caption = "删除" Text2.Enabled = 0 Text5.Enabled = 0 Text6.Enabled = 0 Text7.Enabled = 0 Text1.Enabled = 0

Else If Data1.Recordset.RecordCount = 0 Then MsgBox "没有记录", 32, "注意" Exit Sub Else str1 = MsgBox("删除该记录吗?", 17, "删除") If str1 = 1 Then Data1.Recordset.Delete Data1.Refresh If Data1.Recordset.RecordCount = 0 Then MsgBox "记录数为零" Data1.Recordset.AddNew End If End If End If End If End Sub

四、在此过程中遇到的问题以及解决方法: 在开始编写程序的时候总是有一些出错,在查找有关书籍和向老师询问后得出了结果。在将界面与数据库相连接的时候,不知道用哪种方法,在老师的帮助下我学会了两种方法:1.DATA、2.ADODC。我最终使用DATA这种方法。

五、心得体会:

在这次的设计过程中,我学到的不仅是知识,我还认识到许多事情。这次设计使我的编程水平提高了一大步,使我充分的认识到合作的可贵。由于这次设计涉及到数据库,我的学到了不少编程工具与数据库连接的知识,对数据库的操作有了进一步的了解。这次设计对我的综合能力是一次很好的锻炼,但是我必须承认自己的能力和知识还很肤浅。所以今后我的学习道路还是很漫长的。最后,在这里我要衷心的感谢我们的指导老师牛丽、程渊,谢谢她的悉心指导和热心帮助。由于我水平有限,加之时间短暂,故学籍管理系统中还有许多不足之处,请老师批评指正,我会在以后的制作中不断改进,不断完善。

第6篇:《数据库系统课程设计》教学大纲

开课院系:信息科学与工程学院 计算机科学与技术系

教学大纲撰写人:刘艳艳 刘洁

撰写时间:2014年12月1日 课程编号:080503103287 课程名称:《数据库系统课程设计》 选课号:02003034 学分:0.5分

【设计目的】

《数据库系统课程设计》是在学生系统地学习了《数据库系统》课程后,按照关系数据库的基本原理,综合运用所学的知识,特别是第七章的内容,设计开发一个小型的数据库管理信息系统。通过对一个实际问题的分析、设计与实现,将原理与应用相结合,学会如何把书本上学到的知识用于解决实际问题。

通过数据库课程设计,既培养学生的动手能力,又能使学生深入理解和灵活掌握教学内容。

【设计要求】

1. 2. 3. 4. 学生自愿分组,原则3-5人一组。

课程设计题目三选一,以组为单位完成。 课程设计时间为8周。

数据库管理系统不限(SQL ServerMySQL Oracle …)、开发语言不限(Java C#VC…),避免把学习语言的时间放在设计期间。

5. 给出数据库设计各个阶段的详细设计报告,各个阶段都要有相应的文档,包括需求分析(系统的主要功能)、概念结构设计、逻辑结构设计、物理结构设计、软件实现等,都要有详细的计划,设计文档应按照数据库设计的要求书写。

6. 系统中的数据表设计合理、高效、尽量减少数据冗余,软件界面友好、健壮性强。

7. 提交运行的系统。

8. 写出收获和体会,包括已解决和尚未解决的问题,进一步完善设想与建议。 9. 每个小组进行报告和答辩,讲解设计方案,演示系统运行,汇报分工与合作情况。

10. 最终成绩=平日成绩20%+答辩成绩30%+实验报告成绩50%。

题目:

1、 点菜系统数据库设计

目前大多数酒店由于规模的限制,忽略了点菜系统的重要性。点菜系统专为具有一定规模和经济条件的大型酒店设计,通过集成从顾客定桌、点菜、上菜到结账等一系列功能,为每个环节明确分工,并通过可视化的软件支持,有效减小人为差错的概率,代之以高效、便捷、准确的数字化服务系统,使酒店的管理更加规范化。

数据库设计要求支持以下系统功能的实现:(供参考)

1、服务员信息的管理:查询、增、删、改。

2、菜单信息的管理:查询、增、删、改。

3、厨师信息的管理:查询、增、删、改。

4、房间信息的管理:查询、增、删、改。

5、餐桌信息的管理:查询、增、删、改。

6、前台定桌:顾客可以根据自己的需求,选择不同型号的房间或大厅。

7、房间/大厅点菜:服务员按照用户需求为其点菜并提交菜单给厨房。

8、厨师和菜的分组:厨师和菜分别分组,每组厨师和一组菜一一对应,该组每位厨师会做该组所有的菜。(本条目位置)。

9、厨师做菜管理:厨师可以获得自己的待做菜单,并对已做的菜进行标记。

10、上菜管理:服务员对已上菜和待上菜进行管理。

11、结账服务:审核菜单,协助顾客结账。

2、学生宿舍管理系统

本系统的最终用户为宿舍楼管理员,本宿舍楼的学生。在一般高校的管理中,用户有下列实际要求:(供参考)

学生住在宿舍楼中,每栋宿舍楼都会有若干名老师负责本宿舍楼的日常管理。

(一) 学生的基本信息:入校时,每位同学都有唯一的学号,并被分配到指定的宿舍楼和指定的宿舍,也会有一个宿舍号,其入校时间就是他的入住时间。另外,为了管理方便,同一院系的学生的宿舍一般在一起,相应地会有其所在院系名称。

(二) 宿舍的基本信息:每间宿舍都有唯一的宿舍号,入校时,宿舍会装公用电话机,相应地就有宿舍电话号码。

(三) 宿舍财产的基本信息:每个宿舍的财产属于学校,比如电灯,床铺,柜子,桌椅等,为了对不同的财产进行区分,可以为每种财产分配不同的财产号。这样有利于财产的报修和管理。

(四) 快件收发的基本信息:每栋宿舍楼都有邮件收发的管理,当本楼的同学有信件时,相应的会有信件的到达时间,接受信件的同学姓名和他所在的宿舍号。有时,同一个学生有多封信件需要接收,需要表示一个同学有多少封信件。当信件接收后,应有一个接收信件的时间,表示信件已成功到达指定的同学手中。

(五) 报修的基本信息:宿舍楼中经常出现财产的损坏,比如灯泡坏了,厕所的马桶出故障了等,这时,同学们需要将财产损坏情况报告给宿舍楼管理员,以便学校派人进行维修。这时,需要记录报修的宿舍号和损坏的财产编号,同时记录报修的时间和损坏的原因。当损坏的财产维修完毕后,应记录解决时间,表示该报修成功解决。

(六) 夜归的基本信息:宿舍楼在指定的时间关门(比如晚上12点),若有同学晚于关门时间回宿舍,需通知宿舍楼管理员,同时应登记晚归学生姓名,宿舍号,时间和晚归原因,以利于学校的管理和查证。

(七) 离校的基本信息:每当放寒假或暑假时,同学们大部分都会回家;每当“五·一”或“十·一”放假时,同学们也有很多不会留在宿舍。这时,为加强学校对同学假期安全的管理,离校的同学应登记离校时间,待返校后记录返校时间,以便学校查证和管理。

3、根据自己的兴趣,课程设计题目自己填充,要求相同。 实验一:需求分析及概念结构设计

实验目的:

练习根据实际需求,从需求中分析相应的实体及实体之间的关系。 实验内容:

1. 从实验背景描述中,理解需求,找出需求中存在哪些实体?实体之间处于何种联系?

2. 按照分析出的实体及联系,画出E-R图。 3. 分析出每个实体或关系分别具有哪些属性。 实验要求:

1. 仔细阅读需求,找出显然的条件以及隐含的条件。

2. 实验过程中严格遵守实验室管理规定,按照实验手册进行实验

3. 实验结束后画出E-R图,包括实验过程中遇到的问题、解决的办法,实验后的心得及对该次实验的建议与意见。

实验二:逻辑结构及物理结构设计

实验目的:

1. 建立数据库、数据表以及表间约束关系。

2. 通过分析数据库范式,进一步理解已经设计好的数据库存在的问题,从而更好地理解数据库范式理论。

实验内容:

1. 设计数据库的逻辑结构及物理结构。

2. 在数据库中,根据设计的E-R图建立数据表及数据表之间的约束关系,分析自己所设计的数据库属于哪一范式?分析自己所设计的数据库存在哪些冗余,会带来什么问题?如何修改数据库,使之避免问题的发生?并对数据库进行调整。

实验三:系统界面设计

实验目的:设计开发一个小型的数据库管理信息系统。 实验内容:根据需求,设计数据管理系统的界面。

实验四:数据库管理系统设计与实现

实验目的:实现设计的数据库管理系统。 实验内容:

1. 开发语言与数据库连接。

2. 通过界面,实现数据查询、增加、删除、修改功能实现。

第7篇:数据结构课程设计—java通讯录管理系统

import java.io.*; import java.util.*; public class LittleProgram {

static boolean isDelete = true;

static boolean isFind = true;

public static void main(String [] args)//主方法,程序从这里开始运行

throws IOException,NumberNotFoundException

{

int choice=-1;

do{

LittleProgram lp = new LittleProgram();

System.out.println();

System.out.println("

#");

System.out.println();

System.out.println(" 通訊錄管理系统");

System.out.println("

请用号码插入,查找,修改,删除数据");

System.out.println();

System.out.println("

# ");

System.out.print("1.增加号码: "+

"2.查找号码: "+

"3.删除号码: "+ "4.清除所有号码: "+ "5.把号码全部打印到屏幕 "+ "6.把通讯录按号码排序 "+

"7.修改号码 "+

"8.统计通码讯录的总人数 "+

"9.关于作者 "+

"0.退出程序. " +

"输入:");

BufferedReader in =

//从终

new BufferedReader(

//端接

new InputStreamReader(System.in));//收数

String inputLine = in.readLine();

//字选

choice= Integer.valueOf(inputLine).intValue();//项;

switch(choice)

{

case 1: {//1.增加号码

String str = lp.inputData();

lp.addData(str);

System.out.println("增加号码成功.");

timeOut(1);

}break;

case 2: {//2.查找号码

long find = 0;

System.out.print("请输入你要查找的号码:");

BufferedReader inn =

new BufferedReader(

new InputStreamReader(System.in));

String inputLi = inn.readLine();

find = Integer.valueOf(inputLi).longValue();

lp.findData(find);

timeOut(2);

}break;

case 3: {//3.删除号码

long deleteNumber = 0;

System.out.print("请输入你想删除号码:");

BufferedReader bf =

new BufferedReader (

new InputStreamReader(System.in));

String inputL = bf.readLine();

deleteNumber = Integer.valueOf(inputL).longValue();

lp.deleteData(deleteNumber);

if(isDelete)

System.out.println("删除号码成功!");

timeOut(1);

}break;

case 4: {

lp.clearData();//4.清除所有号码

timeOut(1);

}break;

case 5: {

print();//5.把号码全部打印到屏幕

timeOut(2);

}break;

case 6: {

lp.numSort();//6.把号码按号码排序

System.out.println("按照号码从小到大排序成功! "+

"排序后: ");

print();

timeOut(2);

}break;

case 7: {

lp.rewrite();//7.修改号码

timeOut(2);

}break;

case 8: {

int count = lp.count();

System.out.println("共有"+count+"个号码记录.");

timeOut(2);

}break;

case 9: {

System.out.print(" 李雪萍 "+

" 安徽理工大學理學院 "+

" QQ:1154646392 ");

timeOut(4);

}break;

}}while (choice != 0);

System.out.println("Bye! ^-^");

System.exit(0);

}

public String inputData()//从终端接收数据的方法,返回字符串

throws IOException,NumberFormatException

{

System.out.print("请依次输入 :号码 姓名 地址 生日 " +

"每项数据请用空格隔开:");

String all = "";

try{

BufferedReader in =

//从终

new BufferedReader (

//端接

new InputStreamReader(System.in));

//收数

String inputLine = in.readLine();

//据

StringTokenizer str =

new StringTokenizer(inputLine," ");//接收的数据用空格隔开,这个类用来提取每个字符串

long num = Integer.valueOf(str.nextToken()).longValue();//号码

String name = (String)str.nextToken();

//姓名

String add = (String)str.nextToken();

// 地址

String birth = (String)str.nextToken();//出生年月

all = String.valueOf(num) +" , "+

name +" , "+

add +" , "+

String.valueOf(birth);//把所有的数据用" , "隔开然后在连起来放进字符串all

}catch (IOException e){}

catch (NumberFormatException e){}

return all;//返回字符串all

}

public void addData(String str)//增加号码的方法

throws IOException

{

String s1 ="",s2="" ,s3= "";

File file = new File("c:data.txt");

if (file.exists())//如果文件data.txt存在

{

try{

BufferedReader in =

new BufferedReader(

new FileReader(file));

while ((s1=in.readLine())!=null)

s2+=s1+" ";//把文件中的每行数据全部放进一个字符串s2

s2+=str+" ";

//再把s2于形参str相连放进s2

BufferedReader in2 =

//把字符

new BufferedReader(

//串s2也

new StringReader(s2));

//就是原

PrintWriter out =

//文件+

new PrintWriter(

//形参str(新输入的一行数据)

new BufferedWriter(

//重新写进data.txt

new FileWriter(file)));

//覆盖原来的数据

while ((s3=in2.readLine())!= null)

{

out.println(s3);

}

out.close();

//System.out.println("write data true.");

}catch (IOException e){}

}else{

System.err.println("File "data" Missing!");

}

}

public void clearData()//清除data.txt的所有数据的方法

throws IOException

{

File file = new File("c:data.txt");

if(file.exists())//如果文件在

{

try{

PrintWriter out =

new PrintWriter(

new BufferedWriter(

new FileWriter(file)));

out.print("");//在文件data.txt里写进一个空字符,所以清除了原来的内容

out.close(); //关闭文件

System.out.println("clear data true!");

}catch(IOException e){}

}else{

System.err.println("File "data" Missing!");

}

}

public void deleteData(long deleteNumber)//删除某条号码数据

throws IOException,FileNotFoundException

{

isDelete = true;

try{

DataMap mp = new DataMap();//生成一个自己编写的容器

long j=0;

String s1="",s2="",s3="";

BufferedReader in =

new BufferedReader(

new FileReader("c:data.txt"));

while ((s1=in.readLine())!=null)

{

j=numberTokenizer(s1);

mp.put(j,s1);

}

try{

if(mp.containsKey( String.valueOf(deleteNumber).toString()))

{

mp.remove(deleteNumber);

}else

throw new NumberNotFoundException();

Collection c = mp.values();

Iterator iter = c.iterator();

while(iter.hasNext())

{

s1 = (String)iter.next();

s3 +=s1+" ";

}

BufferedReader in2 =

new BufferedReader(

new StringReader(s3));

PrintWriter out =

new PrintWriter(

new BufferedWriter(

new FileWriter("c:data.txt")));

//System.out.println("delete No"+deleteNumber);

while( (s1 = in2.readLine())!=null)

{

out.println(s1);

} out.close(); }catch (NumberNotFoundException e) {

isDelete = false;

System.out.println(deleteNumber+" no found :(");

}

}catch(IOException e){}

}

public long numberTokenizer(String s)

throws IOException

{

StringTokenizer st =

new StringTokenizer(s," ");

return Integer.valueOf((st.nextToken())).longValue();

}

public void findData(long find)//查找数据

throws IOException,NumberNotFoundException

{

isFind = true;

String s = "",findString =""; long i; DataMap dm = new DataMap(); BufferedReader in =

new BufferedReader(

new FileReader("c:data.txt"));

while ((s=in.readLine())!=null)

{

i=numberTokenizer(s);

dm.put(i,s);

}

//in.close();

try{

if(dm.containsKey( String.valueOf(find).toString()))

{

findString = dm.get(find);

System.out.println("学号"+find+"学生的资料是:");

System.out.println(findString);

}else

throw new NumberNotFoundException();

}catch (NumberNotFoundException e){

System.out.println(find+" no found :(");

isFind = false;

}

}

public static void print()//读取文本文件把数据打印到终端的方法

throws IOException

{

try{

BufferedReader in =

new BufferedReader(

new FileReader("c:data.txt"));

String read = "";

while ((read = in.readLine())!=null)

System.out.println(read);

}catch(IOException e){}

}

public static void timeOut(double sec)//停顿短暂时间的一个方法完全可以不要这个功能

{

double seconds = sec;

long t = System.currentTimeMillis()+(int)(seconds*1000);

while ((System.currentTimeMillis())

;

}

public void numSort()//按学号排序

throws IOException

{

long i = 0;

String s = "";

try{

DataArrayList dal = new DataArrayList();

BufferedReader in =

new BufferedReader(

new FileReader("c:data.txt"));

while ((s=in.readLine())!=null)

{

i=numberTokenizer(s);

dal.add(i);

}

Collections.sort(dal);

DataMap dm = new DataMap();

BufferedReader in2 =

new BufferedReader(

new FileReader("c:data.txt"));

while ((s=in2.readLine())!=null)

{

i=numberTokenizer(s);

dm.put(i,s);

}

PrintWriter out =

new PrintWriter (

new BufferedWriter(

new FileWriter("c:data.txt")));

Iterator it = dal.iterator();

long temp = 0;

String tempStr = "";

while (it.hasNext())

{

temp = Integer.valueOf((String)it.next()).longValue();

tempStr = dm.get(temp);

out.println(tempStr);

}

out.close();

}catch(IOException e){}

}

public void rewrite()

throws IOException,NumberNotFoundException

{

try{

System.out.print("请输入你要修改的学生号码:");

BufferedReader in =

new BufferedReader (

new InputStreamReader(System.in));

String inputLine = in.readLine();

long num = Integer.valueOf(inputLine).longValue();

findData(num);

if(isFind)

{ deleteData(num); System.out.print("请重新输入该号码:"); String str = inputData();

addData(str);

System.out.println("rewrite true!");

}

}catch(IOException e){}

catch(NumberNotFoundException e){}

}

public int count()

throws IOException

{

DataArrayList dal = new DataArrayList();

try{

String s = "";

long i =0;

BufferedReader in =

new BufferedReader(

new FileReader("c:data.txt"));

while ((s=in.readLine())!=null)

{

i=numberTokenizer(s);

dal.add(i);

}

}catch(IOException e){}

return dal.size();

} } /* *

* @author RangWei * TODO 这是个写的一个容器,继承公共类HashMap * 大概的功能就相当一个数组

*

*/ class DataMap extends HashMap//一个存储数据的Map

{

public void put(long i,String str)//把学号和数据放进这个Map

{

//以后一个学号(key)对应的是一个人的数据(value)

put(String.valueOf(i).toString(),str);

}

public void remove(long i)//接收学号,然后删除学号(key)和它对应的数据(value)

{

remove(String.valueOf(i).toString().toString());

}

public String get(long i)//接收一个学号,然后返回这个key对应的value

{

String s = String.valueOf(i).toString();

if (!containsKey(s))

{

System.err.println("Not found Key: "+s);

}

return (String)get(s);

} } /*

*

* @author RangWei * * TODO 这个类继承ArrayList * 用来按数字排序,在用号码排序时要用到它

*

*/ class DataArrayList extends ArrayList {

public void add(long num)

{

String numToString = String.valueOf(num).toString();

add(numToString);

} } /* *

* @author RangWei * * TODO 增加的一个Exception,主要是在文件里没有要找

* 的号码就抛出

*

*/ class NumberNotFoundException extends Exception {

public NumberNotFoundException()

{} }

第8篇:数据库课程设计

1 需求分析

在银行业务模拟中用随机函数产生随机数,求客户在银行的平均时间,客户来到银行后加入两个队列,客户办理的业务有两种,一是取款和贷款,二是存款和还款。

2 概要设计

typedef struct service { int num; //客户号 string type; //到达或离开 int beginTime; int endTime; int money; //正数为存款,负数为取款 struct service* next; }service; typedef struct //队列 { service* head; service* rear; }queue; int total; //初始时银行现存资金总额 int closeTime; //营业结束时间

int arriveTime; //两个到达事件之间的间隔上限 int dealTime; //客户交易的时间上限 int dealMoney=5000; //交易额上限 int currentTime=0; //当前时间 int totalTime=0; //客户逗留总时间 int counter=0; //客户总数 int number=1; //初始客户序列号 int currentTimeOfDeal=0;

1 int theArriveTime=0; queue eq; //事件队列 queue fq; //队列一

queue sq; //对列二 //初始化三个队列 service* temped; int Time; void push(queue &q,int a)// 插入元素a为Q的新的队尾元素 void pop(queue &q)// 若队列不空,出对列函数 service* front(queue &q)//返回队首元素 service* back(queue &q)//返回队尾元素

service* searchAndDel(queue &q,int m)//在对列中寻找可处理元素 bool state=1; //用于判断是否有窗口在处理

void arrive()//"到达"函数 随机产生顾客,进入队列一产生到达事件 进入事件队列

void putMoney()//存款函数 void getMoney()//取款函数

void findAndDeal()//在对列中寻找可处理元素,对其进行处理

3 运行环境

Window XP Visual C++

4 开发工具和编程语言

Visual C++ C++

5 详细设计

1.队列的链式表示和实现 typedef struct service { int num; //客户号

2 string type; //到达或离开 int beginTime; int endTime; int money; //正数为存款,负数为取款 struct service* next; }service; typedef struct //队列 { service* head; service* rear; }queue; 2.插入一个元素为队尾元素 void push(queue &q,int a) { service* p=new service; p->money=a; p->next=NULL; if(q.head==NULL)//列队为空,初始化 { q.head=p; q.rear=p; } else //队列不为空,插入元素a { q.rear->next=p; q.rear=q.rear->next; } } 3. 返回函数

3 service* front(queue &q)//返回队首元素 { return q.head; } service* back(queue &q)//返回队尾元素 { return q.rear; } 4. 在对列中寻找可处理元素

service* searchAndDel(queue &q,int m) { service* sign=q.head; //标记头节点 service* p; while(q.head!=NULL) { if((-(q.head->money))

{ p=q.head; q.head=q.head->next; //首节点后移一位,返回原首节点 return p; }

4 } if((-(q.head->money))>m) //队首元素不能被处理 {

if(q.head==q.rear) { } return NULL; else //首节点移到队列尾部 { q.rear->next=q.head; q.rear=q.rear->next; q.head=q.head->next; q.rear->next=NULL; } } if(q.head==sign) //队列循环一周时停止 return NULL; } return NULL; } 5.到达函数

void arrive()//到达"函数 随机产生顾客,进入队列一产生到达事件 进入事件队列 { push(fq,(rand()%(2*dealMoney)-dealMoney)); //随机产生顾客加入第一队列

back(fq)->beginTime=currentTime; back(fq)->num=number; push(eq,(back(fq)->money)); //将产生事件加入事件队列

5 back(eq)->beginTime=currentTime; back(eq)->type="到达"; back(eq)->num=number; ++number; } 6存款函数 void putMoney() { total+=front(fq)->money; //更新资金总额 push(eq,front(fq)->money); //加入事件队列 离开 back(eq)->type="离开"; back(eq)->num=front(fq)->num; back(eq)->endTime=(front(fq)->beginTime+rand()%dealTime+1); ++counter; //更新客户总数

totalTime+=(back(eq)->endTime-front(fq)->beginTime); //更新逗留时间

pop(fq); //删除第一队列第一个业务 currentTimeOfDeal=back(eq)->endTime; state=0; } 7取款函数

void getMoney() //取款函数 { if((-fq.head->money)>total) //资金短缺 加入第二队列 { push(sq,front(fq)->money); back(sq)->beginTime=front(fq)->beginTime; back(sq)->num=front(fq)->num; pop(fq); 6 } else { total=total+back(fq)->money; push(eq,front(fq)->money); //加入事件队列离开 back(eq)->type="离开"; back(eq)->num=front(fq)->num; back(eq)->endTime=(front(fq)->beginTime+rand()%dealTime+1); back(eq)->beginTime=0; currentTimeOfDeal=back(eq)->endTime; ++counter; //更新客户总数

totalTime+=(back(eq)->endTime-back(fq)->beginTime); //更新逗留时间

pop(fq); //删除第一队列第一个业务 state=0; } } 8. 在对列中寻找可处理元素,对其进行处理 void findAndDeal() { while((temped=searchAndDel(sq,total))&&NULL!=temped) //查找可处理取款 { total+=temped->money;

totail=total+temped->money; push(eq,temped->money); //加入事件队列训 离开 back(eq)->type="离开"; back(eq)->num=temped->num; randomTemp=rand()%dealTime+1;

//更

新资

金总额 7 back(eq)->endTime=currentTime+randomTemp; currentTimeOfDeal+=randomTemp; ++counter; //更新客户总数

totalTime+=(back(eq)->endTime-temped->beginTime); //更新逗留时间

delete temped; //删除节点 temped=NULL; } state=0; } 9 主函数 int main() { int m; cin>>m; if(m=111111) { cout<<”欢迎进入系统<>n; while(n==1) {

srand(time(NULL)); //初始化随机函数 cout<<"输入银行的初始存款: "; cin>>total; cout<<"输入银行的营业时间: "; cin>>closeTime; 8

cout<<"输入最大到达时间间隔: "; cin>>arriveTime; cout<<"输入最大的处理时间: "; cin>>dealTime; theArriveTime+=rand()%arriveTime+1; //首次到达时间 while(currentTime

} cout<

} if(state==1&&fq.head!=NULL) {

} if(fq.head->money>=0) {

} else getMoney(); putMoney(); findAndDeal(); arrive(); theArriveTime+=rand()%arriveTime+1; 9

<<"事件类型"<<" " <<" 时间"<<" " <<" 处理金额"<

} cout<<"未处理客户:"<<""type=="离开") cout

cout

}

} cout<<"银行当前余额:"<

在用随即函数rand产生随机数的时候,对其初始化用srand(time(NULL),为了使得产生的随机数是整数要在后面加一

7 测试结果

如图一所示为输入密码进入系统后

图一输入密码进入系统后

如图二为输入银行的初始存款,营业时间,两个到达事件的最大间隔,客户交易的最大时间

图二输入各项信息后

如图三所示产生的客户信息

图三 客户的信息(到达时间和离开时间,平均在的时间)

参考文献

[1] 吴文虎,程序设计基础(第二版),北京,清华大学出版社 [2] 谭浩强,C语言程序设计,北京 ,清华大学出版社 [3] 边肇祺,模式识别(第二版),北京:清华大学出版社

[4] 李永忠,几种小波变换的图像处理技术,西北民族学院学报,自然科学版 [5] 严蔚敏,吴伟民,米宁,数据结构题集(c语言版),清华大学出版社

心得体会

转眼之间,来到大学已经一年半的时间了,对程序的学习也有了初步的认识,在大一的时候学习了程序设计,大二紧接着又学了数据结构,在这次的课程设计中,遇到了一些问题,通过老师和同学的帮助得到了解决,并且对程序设计的认识又提高了一个层次,在以后的学习中,对经常出现的问题会更加注意。

这次的课程设计给了我很大的帮助,在过程中学到了很多的知识,对程序的规范性以及有效性更加的重视。在以后编程序的过程中会更加注意程序的完善性,使程序的功能更加的齐全,而这也是作为一个程序设计师必须要具备的。认识到只有多多的练习才能更好的运用所学习的知识。在大学里要充分的利用各种资源,提高自己的水平。

第9篇:数据库课程设计总结

课 程 设 计 报 告

课程名称数据库课程设计—总结题目个人CD盘管理系统_________________________________

指导教师设计起止日期

学院计算机学院

系别专业计算机科学与技术

学生姓名班级/学号 成绩___________________

课程设计总结:

经过近2个月的设计,CD盘管理系统基本开发完成,该系统是一个简单的关于数据库与现实相结合的管理系统,它集各种功能用于一身,在系统的各个模块中体现了它的功能,针对音乐爱好者的需求方面进行设计的,方便了用户的一些信息操作,为音乐爱好者节省了管理成本,提高管理效率。该系统的界面简单大方,非常方便用户的操作,同时,也为以后系统的扩展留出了足够的空间。

在此次设计中后台主要采用了servlet和JavaBean技术,数据库则加入了存储过程和触发器的控制。我进一步理解了servlet和JavaBean的工作机制和所提供的便利,也感受到了存储过程和触发器所带来的方便。

servlet具有以下的优势:

1 方便Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。* 功能强大在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。

2可移植性好Servlet用Java编写,Servlet API具有完善的标准。因此,为IPlanet

Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、

Microsoft IIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。3 节省投资不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。

JavaBean具有以下特点:

用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后一种JavaBean。

存储过程的能力大大增强了SQL语言的功能和灵活性。存储过程可以用流控制语

句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。可保证数据的安全性和完整性。通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。可以降低网络的通信量。使体现企业规则的运算程序放入数据库服务器中,以便集中控制。当企业规则发生变化时在服务器中改变存储过程即可,无须修改任何应用程序。企业规则的特点是要经常变化,如果把体现企业规则的运算程序放入应用程序中,则当企业规则发生变化时,就需要修改应用程序工作量非常之大(修改、发行和安装应用程序)。如果把体现企业规则的运算放入存储过程中,则当企业规则发生变化时,只要修改存储过程就可以了,应用程序无须任何变化。

触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用 CHECK 约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。

在本系统的设计过程中,首先通过对CD盘管理系统功能进行详细的分析,得到系统功能模块图,然后根据系统功能分析,围绕它进行系统的设计,介绍开发环境和开发技术,再可行性分析、功能和性能需求,然后得出系统业务流图、数据流图、E-R图,并进行数据库的设计和模块化的实现。由于之前有稍微接触过Java Web方面的知识,再加上利用自己的课余时间的学习,做起来感觉没太多的困难。经过这次系统设计过程,加深了我对数据库操作的认识,更加熟悉了Java Web的构架,如servlet,struts,SOA等等。完成本设计后,才知道平日里书本上所学的东西太少,仅是些概念知识,没运用到实践中来,知识是无法得到升华的。只有不断地学习才能够跟上科技和知识的发展步伐。

上一篇:商务助理岗位职责下一篇:寒假趣事作文