实验报告模版.docx
《实验报告模版.docx》由会员分享,可在线阅读,更多相关《实验报告模版.docx(19页珍藏版)》请在冰豆网上搜索。
![实验报告模版.docx](https://file1.bdocx.com/fileroot1/2022-11/29/c65148ca-c1aa-4a09-8bd4-3ddedda9d889/c65148ca-c1aa-4a09-8bd4-3ddedda9d8891.gif)
实验报告模版
数据库原理及应用
课程设计报告
题目:
课程设计图书管理系统
所在学院:
信息工程学院
班级:
计科1001
学号:
101304118
姓名:
申慧
指导教师:
陈才扣
2013年1月4日
目录
一、概述……………………………………………….……2
二、需求分析…………………………………………….…4
三、概念设计……………………………………………….5
四、逻辑设计……………………………………………….6
五、系统实现………………………………………….……8
六、小结……………………………………………………16
一、概述
1.1开发背景
数据库技术和Interne的飞速发展,使他们已经成为现代信息技术的重要组成部分,是现在计算机信息系统和计算机应用系统的基础和核心。
对于拥有庞大人员的学校的管理来讲,数据的有效使用是一个学校能否进行有效管理的一个关键。
学校作为一个学习的地方,一定会有一个图书馆。
有图书馆就必定要有管理,这样学校图书管理系统就显得更为重要。
学校图书管理系统适应于绝大多数的学校图书馆的管理。
应用此系统可以将众多的学生信息和图书信息进行有效的管理,提高学校的效率。
该系统主要可以分为两大模块:
图书馆管理员模块和读者登录模块,并在这两大模块下分成多个子模块。
图书的使用对象是借阅者。
因此根据这些信息,本系统的主要功能就是:
实现图书馆图书信息的管理和维护,如新书入库,修改图书信息,删除图书信息进行查询等,以及系统的图书信息查询,图书的借出和归还等功能图书信息管理系统能够为用户提供充足的信息和快捷的查询手段.例如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
对于读者模块,可以对系统做查询图书和预约图书功能。
1.2开发工具的选用及介绍
1.2.1eclipse简介
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。
Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。
它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——EclipsePlatform、JDT、CDT和PDE。
1.2.2MicrosoftSQLServer2000简介
SQLServer是一个关系数据库管理系统。
它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本。
在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了,Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本。
Sybase则较专注于SQLServer在UNⅨ操作系统上的应用。
SQLServer2000是Microsoft公司推出的SQLServer数据库管理系统,该版本继承了SQLServer7.0版本的优点,同时又比它增加了许多更先进的功能。
具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台使用。
MicrosoftSQLServer2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的MicrosoftSQLServer版本。
这篇文章详细介绍了MicrosoftSQLServer2008中的新的特性、优点和功能。
2、需求分析
2.1数据需求
根据系统的需求,首先将要记录的信息分类,要记录的信息如下。
读者信息:
包括证号、姓名、联系方式、已借书数目、读者类别和能否借书等。
出版社信息:
包括名称、地址、网址、E-mail等。
书籍信息:
包括书号、丛书系列、作者、责任编辑、字数、定价、出版时间、主题分类、二级分类、馆内借阅分类、总册数、库存量、出版社和书名等。
借阅信息:
包括借阅日期、应归还日期、实际归还日期、能否续借、书号和证号等。
管理者信息:
包括管理者名称、对应密码和对应权限等。
根据这些需要,本系统需要“读者信息”表,“出版社信息”表,“书籍信息”表,“借阅信息”表和“管理者信息”表。
2.2事务需求
经过实际考察、咨询和分析,高等院校图书管理系统主要应该具有以下功能模块,如1.1图。
在读者信息管理部分,要求如下。
可以浏览读者信息。
可以对读者信息进行维护,包括添加及删除等操作。
在出版社信息管理部分,要求如下。
可以浏览出版社信息。
可以对出版社信息进行维护,包括添加及删除等操作。
在书籍信息管理部分,要求如下。
可以浏览书籍信息。
可以对书籍信息进行维护,包括添加及删除等操作。
在借阅信息管理部分,要求如下。
可以浏览借阅信息。
可以对借阅信息进行维护操作。
在管理者信息管理部分,要求如下。
显示当前数据库中管理者情况。
对管理者信息维护操作。
2.3安全性和完整性要求
1)安全性要求
系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。
安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。
2)完整性要求
系统完整性要求系统中数据的正确性以及相容性。
可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。
3、概念设计
图书馆管理系统,总共含有三个实体:
管理员,图书,读者,之间的关系如下图的E-R图如下:
4、逻辑设计
图书馆管理系统中数据库的各个表格设计结果如下:
表1图书信息表
字段
类型
长度
必填字段
允许空值
备注
bookNo
int
否
书号,主键
bookName
varchar
20
否
是
书名
bookPress
Varchar
20
否
是
出版社
bookPrice
int
否
是
价格
bookPosition
varchar
20
否
是
位置
bookRemain
int
否
是
剩余可借数目
bookWriter
Varchar
20
否
是
作者
表2借书信息表
字段
类型
长度
必填字段
允许空值
备注
readNo
int
是
否
读者编号,外键
bookNo
int
是
否
书编号,外键
表3用户信息表
字段
类型
长度
必填字段
允许空值
备注
readNo
int
是
否
读者编号,主键
readName
Varchar
20
是
否
读者姓名
pwd
varchar
10
是
否
登陆密码
表4管理员表
字段
类型
长度
必填字段
允许空值
备注
mno
char
10
是
否
管理员编号,主键
mname
char
10
是
否
登陆名
pwd
char
10
是
否
登陆密码
表5还书信息表
字段
类型
长度
必填字段
允许空值
备注
readNo
Int
是
否
读者号,外键
BookNo
Int
是
否
书号,外键
5、系统实现
5.1登陆界面
5.2图书信息添加界面及实现代码
classBookAddFrameextendsJFrame//添加书籍
{privateJButtonYesBtn,NoBtn;
privatestaticJTextFieldbookNo,bookName,bookPress,bookPrice,bookWriter,bookPosition,bookRemain;//空白区
privateJLabelbookNoLabel,bookNameLabel,bookPressLabel,bookPriceLabel,bookWriterLabel,bookPositionLabel,bookRemainLabel;//提示区
privatestaticFontfont=newFont("楷体",Font.BOLD,14);
publicBookAddFrame(){
this.setTitle("添加书籍");
this.setSize(400,600);this.setLayout(null);
this.setResizable(false);
this.setVisible(true);
this.addCompnents();
this.add(getbookName());
this.add(getbookNo());
this.add(getbookPress());
this.add(getbookPrice());
this.add(getbookWriter());
this.add(getbookPosition());
this.add(getbookRemain());}
privatevoidaddCompnents()
{bookNameLabel=newJLabel("书名:
");
bookNameLabel.setFont(font);
bookNameLabel.setBounds(100,10,60,20);
this.add(bookNameLabel);
bookNoLabel=newJLabel("书号:
");
bookNoLabel.setFont(font);
bookNoLabel.setBounds(100,50,60,20);
this.add(bookNoLabel);
bookPressLabel=newJLabel("出版社:
");
bookPressLabel.setFont(font);
bookPressLabel.setBounds(100,90,60,20);
this.add(bookPressLabel);
bookPriceLabel=newJLabel("价格:
");
bookPriceLabel.setFont(font);
bookPriceLabel.setBounds(100,130,60,20);
this.add(bookPriceLabel);
bookWriterLabel=newJLabel("作者:
");
bookWriterLabel.setFont(font);
bookWriterLabel.setBounds(100,170,60,20);
this.add(bookWriterLabel);
bookPositionLabel=newJLabel("位置:
");
bookPositionLabel.setFont(font);
bookPositionLabel.setBounds(100,210,60,20);
this.add(bookPositionLabel);
bookRemainLabel=newJLabel("进货量:
");
bookRemainLabel.setFont(font);
bookRemainLabel.setBounds(100,250,60,20);
this.add(bookRemainLabel);
YesBtn=newJButton("确定");
YesBtn.setFont(font);
YesBtn.setBounds(130,300,80,30);
this.add(YesBtn);
NoBtn=newJButton("取消");
NoBtn.setFont(font);
NoBtn.setBounds(220,300,80,30);
this.add(NoBtn);
YesBtn.addActionListener(newActionListener()//添加确认按钮响应
{@Override
publicvoidactionPerformed(ActionEvente)
{//TODO自动生成的方法存根
Stringsql="insertintoBook(bookNo,bookName,bookPress,bookPrice,bookWriter,bookPosition,bookRemain)values("
+bookNo.getText()+",'"+bookName.getText()+"','"+bookPress.getText()+"',"+bookPrice.getText()+",'"
+bookWriter.getText()+"','"+bookPosition.getText()+"',"+bookRemain.getText()+");";
DBHelper.update(sql);
MFrameframe=newMFrame();
dispose();}});
NoBtn.addActionListener(newActionListener()
{@Override
publicvoidactionPerformed(ActionEvente){
//TODO自动生成的方法存根
MFrameframe=newMFrame();
dispose();}});}
publicstaticJTextFieldgetbookName()
{if(bookName==null){
bookName=newJTextField();
bookName.setBounds(155,10,150,20);
bookName.setFont(font);
bookName.setForeground(Color.blue);}
returnbookName;}
publicstaticJTextFieldgetbookNo()
{if(bookNo==null)
{bookNo=newJTextField();
bookNo.setFont(font);
bookNo.setBounds(155,50,150,20);
bookNo.setForeground(Color.blue);}
returnbookNo;}
publicstaticJTextFieldgetbookPress()
{if(bookPress==null)
{bookPress=newJTextField();
bookPress.setFont(font);
bookPress.setBounds(155,90,150,20);
bookPress.setForeground(Color.blue);}
returnbookPress;}
publicstaticJTextFieldgetbookPrice()
{if(bookPrice==null)
{bookPrice=newJTextField();
bookPrice.setFont(font);
bookPrice.setBounds(155,130,150,20);
bookPrice.setForeground(Color.blue);}
returnbookPrice;}
publicstaticJTextFieldgetbookWriter()
{if(bookWriter==null)
{bookWriter=newJTextField();
bookWriter.setFont(font);
bookWriter.setBounds(155,170,150,20);
bookWriter.setForeground(Color.blue);}
returnbookWriter;}
publicstaticJTextFieldgetbookPosition()
{if(bookPosition==null)
{bookPosition=newJTextField();
bookPosition.setFont(font);
bookPosition.setBounds(155,210,150,20);
bookPosition.setForeground(Color.blue);}
returnbookPosition;
}
publicstaticJTextFieldgetbookRemain()
{if(bookRemain==null)
{bookRemain=newJTextField();
bookRemain.setFont(font);
bookRemain.setBounds(155,250,150,20);
bookRemain.setForeground(Color.blue);}
returnbookRemain;}
//publicvoidsetFrame(LoginFrameframe){
//this.frame1=frame;//}}
5.3借书界面及实现代码
classBorrowFrameextendsJFrame//借书
{
privateJButtonYesBtn,NoBtn;
privatestaticJTextFieldreadNo,bookNo;//空白区
privateJLabelreadNoLabel,bookNoLabel;//提示区
privatestaticFontfont=newFont("楷体",Font.BOLD,14);
publicBorrowFrame(){
this.setTitle("借阅书籍");
this.setSize(400,400);
this.setLayout(null);
this.setResizable(false);
this.setVisible(true);
this.addCompnents();
this.add(getreadNo());
this.add(getbookNo());}
privatevoidaddCompnents()
{readNoLabel=newJLabel("借阅号:
");
readNoLabel.setFont(font);
readNoLabel.setBounds(95,10,60,20);
this.add(readNoLabel);
bookNoLabel=newJLabel("书编号:
");
bookNoLabel.setFont(font);
bookNoLabel.setBounds(100,50,60,20);
this.add(bookNoLabel);
YesBtn=newJButton("确定");
YesBtn.setFont(font);
YesBtn.setBounds(130,150,80,30);
this.add(YesBtn);
NoBtn=newJButton("取消");
NoBtn.setFont(font);
NoBtn.setBounds(220,150,80,30);
this.add(NoBtn);
YesBtn.addActionListener(newActionListener()//添加确认按钮响应
{@Override
publicvoidactionPerformed(ActionEvente)
{//TODO自动生成的方法存根
Stringsql="insertintoBorrow(readNo,bookNo)values("+readNo.getText()+",'"
+bookNo.getText()+"');";
DBHelper.update(sql);}})}
publicstaticJTextFieldgetreadNo()
{if(readNo==null){
readNo=newJTextField();
readNo.setBounds(155,10,150,20);
readNo.setFont(font);
readNo.setForeground(Color.blue);}
returnreadNo;}
publicstaticJTextFieldgetbookNo()
{if(bookNo==null)
{bookNo=newJTextField();
bookNo.setFont(font);
bookNo.setBounds(155,50,150,20);
bookNo.setForeground(Color.blue);}
returnbookNo;}}
5.4添加读者界面及实现代码
classReaderAddFrameextendsJFrame//添加读者
{
privateJButtonYesBtn,NoBtn;
privatestaticJTextFieldreadName,readNo;
privatestaticJPasswordFieldreadPasswd;//空白区
privateJLabelreadNameLabel,readPasswdLabel,readNoLabel;//提示区
privatestaticFontfont=newFont("楷体",Font.BOLD,14);
publicReaderAddFrame()
{
this.setTitle("添加读者");
this.setSize(400,300);
this.setLayout(null);