数据库课程设计.docx
《数据库课程设计.docx》由会员分享,可在线阅读,更多相关《数据库课程设计.docx(98页珍藏版)》请在冰点文库上搜索。
数据库课程设计
西南科技大学网络教育
《数据库课程设计》指导书
一、课程基本信息
【课程设计名称】数据库课程设计
【课程归属】经济管理学院
【适用专业】经济信息管理,专科
【专业基础课程】《数据库系统概论》《数据库原理及应用》《Access》等
二、课程设计目的
本课程设计是学生在学完了《数据库系统概论》《数据库原理及应用》《Access》等课程后,培养学生程序设计能力的一个重要教学环节。
课程设计为学生提供了一个动手、动脑并独立实践的机会,有助于学生将教材的理论知识和实践相结合,从而锻炼学生分析问题、解决问题的能力,提高学生实际编写程序的能力,为学生学习计算机专业的后续课程打下良好基础。
本课程设计要求对数据库系统的有较全面的理解,通过加深对数据库管理系统有关理论和概念的理解,初步掌握数据库应用软件开发的基本技术,能应用所学数据库的基本理论进行数据库设计,能进行数据库应用软件组成模块的设计和系统调试方法,提高进行工程设计和系统分析的能力,为毕业设计和以后的工程实践打下良好的基础。
本课程设计的主要目的:
1.熟悉并巩固《数据库系统概论》和《数据库原理及应用》《Access》的基本概念和基本理论,加强对操作系统有关原理的理解;
2.培养学生自主学习、独立思考的能力,学会查找资料并善于分析资料的能力;
3.培养学生严谨的工作作风,提倡互相学习培养团队精神;
4.提高学生独立设计、独立进行软件调试的能力;
5.初步养成良好的系统软件分析和设计能力,形成良好的编程风格。
三、设计概况及要求
本次设计,提供一次在实际环境中,使用数据库工具获取实践经验的机会。
完成设计任务,你将对设计实际有用的数据库应用程序,有更深入的理解。
先导课程为:
《数据库系统概论》《数据库原理及应用》《Access》或其他语言类课程等。
1.设计环境和开发工具:
操作系统,WindowsXP(或更高版本)。
数据库管理系统,选用Sybase公司的AdaptiveServerAnywhere或SQLServer2005或Access2003
客户端开发工具,选用PowerBuilder7.0(或更高版本)或VisualBasic6.0或VisualStudio2005或其他开发工具
2.知识准备:
熟悉SQLServer2000或SQLServer2005的使用;
熟悉C#、ASP.NET、Jawa、VB、VF或其他语言进行数据库编程。
熟悉其他相关知识。
3.具体要求为:
◆巩固和加深对数据库系统原理的理解,提高综合运用本课程所学知识的能力。
◆培养学生选用参考书,查阅手册及文献资料的能力。
培养独立思考、深入研究、分析问题、解决问题以及团队协作能力。
◆通过实际系统的分析设计、编程调试,掌握数据库软件的分析设计方法和巩固软件工程方法。
软件开发的流程可参见有关软件工程课程教材。
◆能够按要求编写课程设计报告书,能正确阐述设计和实验结果、正确绘制系统数据流图和E-R图。
◆通过课程设计,培养学生严谨的科学态度,严肃认真的工作作风,和团队协作精神。
◆本课程设计只要求大家完成一个基本的数据库软件的开发工作,系统开发不要求大而全数据库软件的开发,只要完成数据的增、删、改、查等基本功能,并设计一个较友好系统操作界面(最好是图形界面)。
◆系统开发平台不做统一要求,但推荐使用PowerBuilder7.0(或更高版本)或者VB或者其他作为系统开发工具。
4.注意:
1.请大家认真阅读本课程设计指导书,明确课程设计的目的、意义和要求;
2.根据要求完成课程设计的系统开发和调试任务,提供可运行的课程设计系统,参加抽查的上机面试答辩。
3.根据学校有关格式要求,可以自行完成本课程设计的课程设计说明书。
5.重点:
本设计的重点是要求根据任务要求,完成数据库设计并能正确并灵活使用SQL语言完成软件开发工作,注重实际应用能力的培养。
四、设计内容、步骤及要求
每个学生选择一个题目,独立完成设计任务。
提交完整的设计报告和源程序清单(以附录形式)。
以下以PB为例。
1、数据库设计
1)需求分析,根据设计任务书给出的背景资料,查找相关资料,结合自己的生活经验,对数据进行分析,编写详细的数据词典。
2)概念结构设计:
在需求分析的基础上,设计E-R模型,详细描述实体的属性和实体之间的联系,消除不必要的冗余。
3)逻辑结构设计:
实现E-R图向关系模型的转换,特别注意实体的1:
n联系,优化数据模型。
详细说明实体、实体属性和实体之间的关系。
2、创建数据库:
(详细内容请阅读Help文件)
创建数据库时,缺省的userID为DBA,password为sql。
●使用SybaseCentral创建数据库
1)在SybaseAdaptiveServerAnywhere文件夹中,打开Utilities。
2)双击CreateDatabase。
3)按照向导(wizard)提示,完成数据库创建。
●使用PowerBuilder创建数据库
1)运行PowerBuilder,选择Databsae画板。
2)打开Utilities。
3)双击CreateASADatabase。
●使用SQL语句创建数据库
例如,在C:
\ex\文件夹下创建数据库mydb.db。
CREATEDATABASE'C:
\\ex\\mydb'
TRANSACTIONLOGON
PAGESIZE1024
COLLATION'437'
ENCRYPTEDOFF
BLANKPADDINGOFF
JAVAON
JCONNECTOFF
3、创建表
●使用PowerBuilder创建表
1)连接数据库
2)打开Tables文件夹。
3)在工具拦中选择CreateTable。
●使用SybaseCentral创建表。
1)运行SybaseCentral。
2)连接数据库。
3)选择Tables文件夹。
4)双击AddTable。
输入表名后,点击第一行的列名,即可创建表。
●使用SQL语句创建表
表名为:
library_books
CREATETABLElibrary_books(
--NOTNULLisassumedforprimarykeycolumns
isbnCHAR(20)PRIMARYKEY,
copyright_dateDATE,
titleCHAR(100),
authorCHAR(50),
--column(s)correspondingtoprimarykeyofroom
--willbecreated
FOREIGNKEYlocationREFERENCESroom
)
4、应用程序设计
PowerBuilder程序设计的基本步骤:
●创建新的PowerBuilderapplication
●运行application
●创建窗口(Windows)
●定义ODBC数据源
●连接数据库
●创建DataWindowObject
●创建DataWindow
●编写事件的脚本(script)、函数等。
5、设计报告要求
设计报告按照以下提纲书写:
1)摘要。
2)需求分析。
3)数据库概念结构设计。
4)数据库逻辑结构设计。
5)数据流图及程序结构框图。
6)程序原代码及其说明。
7)总结。
五、时间安排
1.设计工作从期中开始,累计学时数为32学时。
2.上机时间:
按照实验安排的时间,到相关学院的计算机实验室上机。
3.以答辩形式抽查设计完成情况。
六、评分标准
课程设计的成绩根据学生在课程设计期间的态度、课程设计的完成情况和难易程度,文档的质量以及答辩时的表现综合评定。
课程设计平时表现:
占20%;设计的最后结果展示:
占30%;设计报告:
占30%;答辩:
占20%。
1.提交完整的设计报告和源程序清单(以附录形式)。
2.如果教师认定为抄袭,则双方成绩为0分,并提交管理部门处理。
3.答辩以抽查形式进行。
课程设计结束后,按照优秀、良好、中等、及格,不及格五级给予成绩,也可以按百分制实际给分。
七、参考资料
1.王珊.数据库系统概论(第三版).北京:
高等教育出版社,2000
2.数据库原理及应用(Access)(第2版)姚普选编著.北京:
清华大学出版社,2008
3.PowerBuilder7.0的帮助文件pbgswin.pdf
(在文件夹C:
\ProgramFiles\Sybase\PowerBuilder7.0\hlp\)
4.AdaptiveServerAnywhere的所有帮助文件
(在文件夹C:
\ProgramFiles\Sybase\AdaptiveServerAnywhere\win32)
八、设计范例
共二个案例。
(一)小型图书管理系统
1、参考背景资料:
1)图书室有各种图书一万多册。
2)每种图书都有书名、书号(ISBN)、一名或多名作者(译者)、出版社、定价和内容简介。
3)借书证记录有借阅者的姓名、所在单位、职业等。
4)凭借书证借书,每次最多能借8本书。
借书期限最长为30天。
2、内容:
学生根据所学的数据库系统与程序设计的知识,针对图书管理系统,进行系统的需求分析,系统设计,数据库设计,编码,测试等,完成题目要求的功能,从而达到掌握开发一个小型数据库的目的。
3、操作过程:
1)选择课题,在小组内进行分工,进行系统调查,搜集资料。
2)进行系统需求分析和系统设计,写出系统分析和系统设计报告。
3)设计数据库模型并进行优化,确定数据库结构、功能结构和系统安全性和完整性要求。
3)完成数据库定义工作,实现系统数据的数据处理和数据录入。
4)实现应用程序的设计、编程、优化功能,实现数据安全性、数据完整性和并发控制技术等功能,并针对具体课题问题提出解决方法。
5)对系统的各个应用程序进行集成调试和测试,进一步优化系统性能,改善系统用户界面。
4、基本要求:
能实现以下主要功能
●图书基本情况的录入、修改、删除等基本操作。
●实现借书功能。
●实现还书功能。
●实现对所有购进图书的分类查询和分类统计。
●能够按书名、作者等分类查询现有图书的数量。
●对超期的情况能自动给出提示信息。
参考设计范例见附件一。
(二)宾馆客房管理系统
1、背景资料:
1)宾馆有一名总经理、多名会计和多名前台。
总经理负责宾馆的日常运营,会计负责对宾馆收入支出的统计管理,前台数据包括职工号等。
职工号在宾馆内唯一。
2)宾馆有各种标准的房间。
房间数据包括房间号、房间级别、房间价位以及房间的状态(是否已经有客人)。
房间号唯一表示一个房间,房间级别决定房间价位,房间有多种级别分别表示:
单人间、标准间、豪华间、商务间、行政间。
房间状态表示此房间是否可以预定或者入住或者转房。
2、内容:
学生根据所学的数据库系统原理与程序设计的知识,针对宾馆管理系统,进行系统的需求分析,系统设计,数据库设计,编码,测试等,完成题目要求的功能,从而达到掌握开发一个小型数据库的目的。
3、操作过程:
1)通过社会调查,选择一个实际应用数据库系统的课题。
2)进行系统需求分析和系统设计,写出系统分析和系统设计报告。
3)设计数据库模型并进行优化,确定数据库结构、功能结构和系统安全性和完整性要求。
3)完成数据库定义工作,实现系统数据的数据处理和数据录入。
4)实现应用程序的设计、编程、优化功能,实现数据安全性、数据完整性和并发控制技术等功能,并针对具体课题问题提出解决方法。
5)对系统的各个应用程序进行集成调试和测试,进一步优化系统性能,改善系统用户界面。
4、基本要求:
能实现以下主要功能:
●房间管理
●客人预订、退订客房管理
●客人入住、店内消费管理
●客人换房管理
●结算管理,
●贵宾卡发放管理
●实现分类查询。
●输出相应的数据报表。
参考设计范例见附件二。
九、注意事项
1、学生在教师的指导下,应积极、主动地完成课程设计所规定的全部任务。
2、应严格按照进度进行课程设计,不得无故拖延。
3、小组成员之间,分工明确,但要密切合作,培养良好的互相帮助和团队协作精神。
4、要遵守规定的作息时间,严格遵守纪律,原则上不得请假,因特殊原因必须请假者,一律报指导老师,由指导老师报教研室主任,最后报系领导批准。
5、按规定时间完成个人需要撰写的课程设计报告。
抄袭他人报告内容(内容完全相同的两份以上设计报告作为抄袭处理)、不按要求或未完成全部内容、无故旷课二次及以上、缺勤时间达三分之一及以上者,课程设计成绩定为不及格。
十、课程设计报告要求
1、设计报告应包括封面、任务书、目录、中英文摘要及关键字、正文、参考文献(资料)等内容,以及附图或附件等材料。
2、题目字体用小三,黑体,正文字体用五号字,宋体,小标题用四号及小四,宋体,并用A4纸打印。
3、页眉写上数据库课程设计报告,页脚写上页码。
4、报告具体格式如下:
1)封面
见附1。
2)任务书
3)目录
目录页中每行均由标题名称和页码组成。
4)中英文摘要
扼要叙述本设计的主要内容、特点,文字要精练。
英文摘要与中文摘要对应。
5)正文
第一章概述
包括项目背景、编写目的、软件定义、开发环境等内容。
第二章需求分析
陈述用户的功能、性能等的需求,画出数据流图,给出数据字典等。
第三章软件概要设计
给出系统目标、总体设计、运行设计等,画出软件功能图,描述每一个功能所完成的任务。
第四章数据库设计
包括:
数据库概念设计(画出E-R图)
数据库逻辑设计(把E-R图转换为关系模型并进行优化,要求所有关系达到3NF,定义视图、索引、主关键字、权限等。
)
第五章详细设计
说明每个功能模块具体是怎么实现的。
第六章用户使用说明书。
第七章结束语
写出完成本课程设计的心得,领会数据库理论与软件开发实践的关系,有哪些收获。
介绍整个系统中自己认为最满意、最得意的地方,介绍应用程序中重点创意的技术实现技巧、核心程序等。
指出软件还需要哪些改进。
6)参考文献
参考文献只选用最主要的列入,未公开发表的资料或协作成果,应征得有关方面的同意,以脚注方式顺序标明。
著录格式如下:
Ø专著(含教材):
[序号]编著者.书名[M].版本,出版地:
出版者出版年.页码.
Ø期刊:
[序号]作者.题目[J].刊名,年,卷(期):
页码
Ø学位论文:
著录格式:
[序号]作者.题目[D].地点:
单位,年
Ø论文集,会议录:
[序号]主要责任者.题名[C].出版地:
出版者,出版年.
Ø论文集中析出的文献:
[序号]作者.题目[A].见:
主编.论文集名[C].论文集名.出版地:
出版者,出版年:
页码.
Ø科技报告:
[序号]作者.题名[R].报告题名及编号,出版地:
出版者,出版年.
Ø国际、国家标准,行业规范:
[序号]标准编号,标准名称[S].出版地:
出版者,出版年.
Ø专利:
[序号]设计人.专利题名[P].专利国别:
专利号,公告日.
Ø其他未定义文献类型:
[序号]主要责任者.文献题名[Z].出版地:
出版者,出版年.
附件一:
《小型图书管理系统》设计
1.前言
本系统是小型图书管理系统,专为个人设计。
本系统启动后需要登陆,然后进入主界
在这个界面我们可以选择所需要的功能模块来完成所要执行的功能。
系统共有4个功能模块:
图书入库、图书查询、图书删除、图书概览、修改密码。
支持一系列关于图书管理方面的简单操作,诸如查询、删除、添加、修改密码等。
2.系统流程图
退出
图书删除
图书概览
修改密码
图书查询
图书入库
系统开始
失败
退出
判断
成功
判断
输入密码
说明:
首先是输入判断,相当于在登陆模块,要求用户输入用户名和密码;然后判断,如果判断失败退出系统,否则进入图书管理系统的主界面。
进入主界面后,用户要选择所需执行的功能,即通过鼠标点击相应项,来完成所需操作。
数据库表
3.数据库设计
在图书管理系统中,共设计2张表。
本系统使用Access来创建数据表。
数据库的名称为Book.mdb。
1.表book
字段名称
数据类型
图书名
文本
图书号
文本(主键)
单价
文本
作者
文本
出版社
文本
入库时间
文本
2.表user
字段名称
数据类型
用户名
文本(主键)
密码
文本
4.界面设计
系统源码
1登陆界面:
程序名Login.java
importjava.awt.event.*;
importjavax.swing.*;
importjava.awt.*;
importjava.awt.Container;
importjava.util.*;
importjava.sql.*;
classLoginextendsJFrameimplementsActionListener
{Containercp=null;
JFramef=null;
JButtonj1,j2;
JTextFieldt1;
JPasswordFieldt2;
JLabeljlable1,jlable2;
Colorc;
JPaneljp1,jp2;
Login(){
f=newJFrame("小型图书管理系统");
j1=newJButton("确定");
j2=newJButton("取消");
cp=f.getContentPane();
jlable1=newJLabel("输入用户名");
jlable2=newJLabel("用户密码");
jp1=newJPanel();
jp2=newJPanel();
t1=newJTextField(18);
t2=newJPasswordField(18);
jp1.add(jlable1);
jp1.add(t1);
jp1.add(jlable2);
jp1.add(t2);
JLabelJL=newJLabel("欢迎登陆",SwingConstants.CENTER);
cp.add(JL,"North");
jp2.add(j1);
jp2.add(j2);
cp.add(jp1,"Center");
cp.add("South",jp2);
jp1.setBackground(newColor(255,153,255));
Toolkitkit=Toolkit.getDefaultToolkit();
Dimensionscreen=kit.getScreenSize();
intx=screen.width;/*取得显示器窗口的宽度*/
inty=screen.height;/*取得显示器窗口的高度*/
//setSize(x,y);/*让系统窗口平铺整个显示器窗口*/
f.setSize(300,300);
intxcenter=(x-300)/2;
intycenter=(y-300)/2;
f.setLocation(xcenter,ycenter);/*显示在窗口中央*/
f.setVisible(true);
//-----------------------------------------------------
j1.addActionListener(this);//注册事件监听器
j2.addActionListener(this);
f.addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
}
);
}
publicvoidconfirm()//验证用户和密码是否存在
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundExceptione){System.out.println("加载驱动程序失败!
");}
try{
Stringurl="jdbc:
odbc:
driver={MicrosoftAccessDriver(*.mdb)};DBQ=Book.mdb";//直接使用当前类目录下的数据库文件
Connectioncon=DriverManager.getConnection(url);
Statementsql=con.createStatement();
Stringuname=t1.getText().trim();
StringMima=t2.getText().trim();
StringqueryMima="select*fromuserwhere用户名='"+uname+"'and密码='"+Mima+"'";
ResultSetrs=sql.executeQuery(queryMima);
if(rs.next())
{
newBook(uname);
f.hide();
con.close();
}else{
JOptionPane.showMessageDialog(null,"该用户不存在","提示!
",
JOptionPane.YES_NO_OPTION);
}
t1.setText("");
t2.setText("");
}catch(SQLExceptiong)
{
System.out.println("ECode"+g.getErrorCode());
System.out.println("EM"+g.getMessage());
}
}
publicvoidactionPerformed(ActionEvente)
{
Stringcmd=e.getActionCommand();
if(cmd.equals("确定")){
confirm();
}
elseif(cmd.equals("取消")){
f.dispose();
}
}
publicstaticvoidmain(Str