数据库应用系统设计报告.docx

上传人:b****0 文档编号:17506287 上传时间:2023-07-26 格式:DOCX 页数:41 大小:611KB
下载 相关 举报
数据库应用系统设计报告.docx_第1页
第1页 / 共41页
数据库应用系统设计报告.docx_第2页
第2页 / 共41页
数据库应用系统设计报告.docx_第3页
第3页 / 共41页
数据库应用系统设计报告.docx_第4页
第4页 / 共41页
数据库应用系统设计报告.docx_第5页
第5页 / 共41页
数据库应用系统设计报告.docx_第6页
第6页 / 共41页
数据库应用系统设计报告.docx_第7页
第7页 / 共41页
数据库应用系统设计报告.docx_第8页
第8页 / 共41页
数据库应用系统设计报告.docx_第9页
第9页 / 共41页
数据库应用系统设计报告.docx_第10页
第10页 / 共41页
数据库应用系统设计报告.docx_第11页
第11页 / 共41页
数据库应用系统设计报告.docx_第12页
第12页 / 共41页
数据库应用系统设计报告.docx_第13页
第13页 / 共41页
数据库应用系统设计报告.docx_第14页
第14页 / 共41页
数据库应用系统设计报告.docx_第15页
第15页 / 共41页
数据库应用系统设计报告.docx_第16页
第16页 / 共41页
数据库应用系统设计报告.docx_第17页
第17页 / 共41页
数据库应用系统设计报告.docx_第18页
第18页 / 共41页
数据库应用系统设计报告.docx_第19页
第19页 / 共41页
数据库应用系统设计报告.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据库应用系统设计报告.docx

《数据库应用系统设计报告.docx》由会员分享,可在线阅读,更多相关《数据库应用系统设计报告.docx(41页珍藏版)》请在冰点文库上搜索。

数据库应用系统设计报告.docx

数据库应用系统设计报告

《数据库应用系统》

课程设计指导书

 

课程名称:

数据库应用系统设计理论

院系年级:

12级电气信息工程系

专业班级:

计算机科学与技术一班

学号:

姓名:

指导老师:

河海大学文天学院

2014年12月

 

一引言

数据库应用系统是计算机应用的一个重要领域,在各行各业的管理工作中都发挥着非常重要的作用。

数据库应用系统设计开发是一项复杂且困难的工作,主要体现在开发环境的复杂性、用户需求的多样性、技术手段的综合性三个方面。

小型的数据库图书馆管理系统是一种典型的信息管理系统,图书馆管理系统包括许多内容,有图书的基本信息以及添加、删除、修改等,读者的基本信息以及借阅书籍的相关信息,用P0werBuilder9.0编写运行环境,它是一个集成的完全可视化的开发工具,使用PowerBuilder9.0可以用一种可视、直观的方式来创建应用程序所需的用户界面和数据库接口。

通过数据窗口,用户可以轻松地完成客户端与服务器之间的数据交互,利用数据窗口控件,则可以方便地显示、修改和更新数据库中的数据。

二相关技术

2.1数据库应用工程原理

数据库应用编程通过对嵌入式的使用SQL语言,只有操作功能没有编辑功能。

数据库应用中包括主语言系统、数据库系统等协调运行必须解决那些关键句属,动态SQL,数据库管理系统集中管理数据资源,实时监听应用系统有何种需求,应用请求立即响应,向应用程序返回操作,由主语言系统实现算法流程,主语言系统编译器不仅能在原有的主语言系统编译器的所有功能,而且可以嵌入式的主语言程序、编译程序调用。

数据通信,游标通信,主变量的实现,游标实现不确定结果集的传递,数据库接口。

2.2数据库技术

数据库技术有主语言程序连接数据事务对象的SQL技术、动态技术、事务控制技术、事务驱动程序的设计技术、数据库通信技术,数据库连接技术等。

2.3数据库通信技术

数据库通信技术有数据通信,游标通信,SQLCA事务对象,数据库访问接口ODBC能支持本地的SQL语言,应用程序中主语言传入目标数据库以及数据库SQL语言嵌入的只能是官方的SQL语言,数据库接口开放性、互联性,目标数据库专用的数据库访问接口,访问一个应用程序端都需要安装程序接口。

2.4动态SQL技术

动态SQL技术处理程序当中的人机交互和大量数据库存取操作,存取操作的SQL语言所需要的参数需要人机交互,程序执行过程的人机交互,在程序设计中需要SQL语言的动态处理程序要求,动态SQL分动态更新、动态查询等,动态更新是直接执行的,SQL主语言系统连接数据库系统,数据连接具有交互性。

2.5数据库事务控制技术

所谓事务,是由于用户定义的一个数据库操作序列,这些操作或者全部执行或者一个都不执行,它是一个不可分割的逻辑工作单元,这种事务由于是作为一个单元整体被执行的,有时也被称为原子事务。

例如,在常用的关系数据库应用中,一个事务可以是一条SQL语句,一组SQL语句或者整个程序,但要注意,实务和程序是不同的两个概念,一般来说,一个程序中可包含若干事务。

事件驱动程序设计技术:

事件就是对象可能会发生的事情,微软的视窗系统(Windows)就是一个事件驱动环境,在事件驱动环境中,程序的流程并不能够预先确定,而是特定的事件触发应用程序中对应的某段代码,运行完成这些代码后系统会进入等待状态,等待下一个事件触发相应的代码。

Powerbuilder的应用程序是事件驱动,事件是由windous系统通过消息(message)传递的,windows系统接收到所有的硬件和软件事件(如按键,鼠标拖动,系统定时器等事件),并将事件转换为消息发送给相应的对象(窗口控件等),消息中包含了其类型码,类型码代表事件的类型,在PowerBuilder中用户可以为事件编写脚本,从而控制程序的运行,对用户的动作,或系统事件做出反应,在PowerBuilder中每一类对象都有一些预定义的事件,比如按钮控件有单击(clicked)事件,编辑框有更新(modified)事件等,一般来说,这些预定义的事件能满足用户的需求,如有特殊需求,用户还可以定义自己的用户事件。

三系统分析

3.1数据需求

3.11图书馆管理系统:

实体:

学生,图书

联系:

学生借阅图书

数据字典:

对于数据流图中的每个元素,都可以额通过数据字典加以描述,以保证数据定义的严格性,针对上述系统的数据字典如下:

借阅者管理=[添加借阅者|修改借阅者|删除借阅者|检索借阅者]

图书管理=[添加图书|修改图书|删除图书|检索图书]

借阅信息管理=[添加借阅信息|修改借阅信息|删除借阅信息|检索借阅信息]

管理个人信息=[检索个人信息|修改个人信息]

基本信息维护请求=[对借阅者类别信息的维护|对图书类别信息的维护|对登陆用户的维护]

对借阅者类别信息的维护=[对借阅者类别信息的添加|对借阅者类别信息的修改|对借阅者类别信息的删除|对借阅者类别信息的检索]

对图书类别信息的维护=[对图书类别信息的添加|对图书类别信息的修改|对图书类别信息的删除|对图书类别信息的检索]

对登录用户的维护=[对用户信息的添加|对用户信息的修改|对用户的删除|对用户信息的检索]

注册用户=借阅卡信息

注册用户=借阅者

借阅卡号=3{数字}3(假设)

性别=[男|女]

身份证号=18{数字}18

联系电话=(区号)+7{数字}7

区号=4{数字}4

办证日期=年+月+日

已借书数目=[0|1|2|3|4|5|6|7|8|9|10]

是否挂失=[挂失|没挂失]

挂失=1

没挂失=0

图书信息=图书号+书名+作者+出版社+出版日期+单价+图书类别+存放位置+入库日期+是否借出

图书=图书信息

图书号=3{数字}3()假设

同一本书副本编号=[0|1|2|3|4|5|6|7|8|9]

出版日期=年+月+日

图书类别=[一类图书|二类图书|三类图书|四类图书|五类图书|六类图书]

入库日期=年+月+日

是否借出=[借出|未借出]

借出=1

未借出=0

借阅信息=借阅卡号+姓名++书名(1~6)

借出日期=年+月+日

实际归还日期=年+月+日

系统基本信息=[借阅者类别信息|图书类别信息|系统用户]

能借书的数量=[1|2|3|4|5|6]单位:

图书类别信息=图书类别+可借天数+图书超期每天罚款金额

图书类别=[一类图书|二类图书|三类图书|四类图书|五类图书|六类图书]

可借天数=[10|20|30|40|50|60|70]单位:

图书超期每天罚款金额=[0.1|0.2]单位:

系统用户=用户名+密码+是否管理员

用户名=姓名

密码=1{字母|数字}8

是否管理员=[是管理员|不是管理员]

是管理员=1

不是管理员=0

3.12图书馆管理系统的ER图

根据上一小节的数据字典,得到系统E-R图,如图3.121-3.125。

物理结构:

对应图书管理系统有六张表,分别是:

表3-121“借阅者表”,表3-122“图书表”,表3-123“借阅表”,表3-124“借阅者类别表”,表3-125“图书类别表”,表3-126“系统用户表”。

表3-121借阅者表

字段名称

数据类型

是否关键字

是否可以为空

借阅卡号

decimal

姓名

Varchar(20)

性别

Boolean

身份证号

Varchar(30)

单位

Varchar(30)

家庭住址

Varchar(30)

联系电话

Varchar(30)

借阅者类别

Varchar(30)

办证日期

datetime

已借书数目

int

是否挂失

boolean

表3-122图书表

字段名称

数据类型

是否关键字

是否可以为空

图书号

decimal

书名

Varchar(20)

作者

Varchar(20)

出版社

Varchar(20)

出版日期

datetime

单价

money

图书类别

存放位置

Varchar(30)

入库日期

datetime

是否借出

boolean

表3-123借阅表

字段名称

数据类型

是否关键字

是否可以为空

借阅卡号

decimal

图书号

decimal

姓名

Varchar(20)

书名

Varchar(20)

借出日期

datetime

实际归还日期

datetime

罚款金额

money

表3-124借阅者类别表

字段名称

数据类型

是否关键字

是否可以为空

借阅者类型

Varchar(30)

能借书的数量

int

表3-125图书类别表

字段名称

数据类型

是否关键字

是否可以为空

图书类别

Varchar(30)

可借天数

int

图书超期每天罚款金额

money

表3-126系统用户表

字段名称

数据类型

是否关键字

是否可以为空

用户名

Varchar(20)

密码

Varchar(20)

是否是管理员

boolean

3.2功能需求

以图书管理为例使用powerbuilder创建表,建立数据连接,及事件的驱动,控键按钮等建立起图书系统,包括管理员的登陆,图书信息的查询,增,删,改等功能。

以及系统的维护。

本系统实现功能有:

查询功能:

用户查询自身所借书的名称,所借书本数,个人信息的查询;

登陆系统:

用户个人登陆账号,密码界面;

用户设置登陆密码,修改密码;

查询信息:

方便快速定位;

功能需求:

图书管理系统完整功能需求如下:

(1)借阅者管理

每个通过审查的人可以办理一张借阅卡,拥有用户名、密码,成为注册用户。

此卡包含所有个人信息,以后所有图书借阅活动凭此卡进行,直至该卡被注销或删除。

因此,对借阅者的管理包括相关信息的添加、修改、删除、检索。

1)图书信息管理

新书入库:

每本新到图书需将详细信息添加入库,方可对外借阅。

图书检索:

馆藏图书丰富,须提供图书快速查询检索功能。

图书信息修改:

图书基本信息入库时已基本确定,但是一些辅助信息,如存放位置,是否接触等会有变化,须提供修改功能。

图书信息删除:

对于太过破旧被淘汰或者丢失的书籍,要从系统信息中删除。

2)图书借阅信息管理

系统核心功能之一。

图书管理系统最主要的功能是对图书的借出和归还。

主要涉及被借阅的图书和借阅者,即图书基本信息,借阅者部分信息,借出归还日期等。

具体来说,对于借书,首先获得借阅者的信息,看其是否有权利借书,其次检查相关书籍,看其是否被可以被外借;对于还书,同样也需要借阅者信息和图书信息才能还书,同时还要计算本次借阅是否超期,超期要计算出罚款金额,借阅者交了足额罚款才能还书成功。

此外,对于历史借还记录要提供查询功能;同时由于存储空间限制,不能永久保存历史记录,还需提供删除记录功能。

3)用户登录

该系统用户主要有系统管理员和普通注册用户(即持有借阅卡的借阅者)两种。

系统管理员拥有所有功能权限,普通注册用户只能管理个人信息和检索需要图书。

系统要对不同的用户给予不用权限,每个合法用户凭登录名和密码登陆此系统。

4)系统基本信息管理

对借阅者类别的设置:

对于借阅者设置不同类别,不同类别的借阅者设置不同的借阅图书数量上限。

对图书类别的设置:

不同类别图书的借阅期限不同,超期后的罚款金额也不同。

对系统用户的管理:

本系统暂定两类用户,系统管理员和普通注册用户,不同用户拥有不同的使用权限。

3.3运行环境需求

图书馆管理系统采用PowerBulider9.0来进行操作的,虽然PowerBuilder不断的在更新,功能不断的在增加,针对于不同的企业或个人都能找到适合自己的版本,但对于小型的图书馆管理系统的运行开发已经足够了,它是一种面向对象编程的快速开发工具,方便使用。

四系统设计与实现

4.1用户界面技术

本系统共设置了“服务工具”,“个人信息编辑”,“图书信息查询”,“系统维护”,“图书管理”,这五个菜单,在设计中在tushumenu中设置,并为每个菜单项的子选项设置“clicked”事件,使每个功能项能够连接数据库,并且实现其工能选项:

4.2数据查询与编辑功能设计

该系统设计了一个主控功能选项,用户只有登录之后才能访问和使用该系统,连接数据库后用户能够访问个人信息,按类查询图书,查询自己所借图书详细信息等。

学生主体信息,学生信息的增删改功能等

增加个人信息表:

(为了简化工作量,减少了部分个人信息)

删除个人信息表没有选中学生表时,弹出的对话窗口

删除个人信息表选中学生信息时,弹出的对话窗口

修改个人信息表没有选中学生信息时,弹出的对话窗口

修改个人信息表选中学生信息时,弹出的对话窗口

 

该功能主要是图书按类别查询(该系统一图书馆图书的出版社为类别筛选)

添加功能实现部分:

修改功能实现部分:

删除功能实现部分:

本章内容主要展示了我做的图书管理系统的功能实现,open事件代码,clicked事件代码。

也就是各个实现功能的代码,即该系统的详细内容。

移植工具代码,连接数据库:

getenvironment(ge_Environment)

this.microhelpdefault='研制人:

河海大学文天学院咨询电话:

12345678901'

inifile="tushu.ini"

open(w_main)

//DatasourcenameforODBC:

mydb

//DataBaseProfileName:

mydb

//DataBaseAccount:

dba-----sql

代码部分如下:

登陆系统:

open(w_login)

退出系统:

close(parent)

修改口令:

open(w_cpasswd)

学生档案编辑:

setpointer(HourGlass!

opensheet(w_tushu_2_browse,w_main,1,layered!

学生档案查询:

setpointer(HourGlass!

opensheet(w_tushu_2_query,w_main,1,layered!

图书信息编辑:

setpointer(HourGlass!

opensheet(w_tushu_4_browse,w_main,1,layered!

图书信息查询:

setpointer(HourGlass!

opensheet(w_tushu_4_query,w_main,1,layered!

设置用户账户:

opensheet(w_set,w_main,1,layered!

图书类别编辑:

setpointer(HourGlass!

opensheet(w_jj_browse,w_main,1,layered!

主窗口

Open事件:

(1)通过游标生成系别的下拉列表;

(2)为数据窗口设置事务对象。

系别名称下拉列菜单select的事件:

(1)获取下拉列表当前系列名称;

(2)对数据窗口按系别名称提取数据。

Open事件代码:

setdbparm_for_sqlca();

connectdb_by_sqlca();

stringmc

longi;

sle_logid.reset()

declarestart1cursorfor

selectuser_xm

fromdmuser

whereallow_log='y'andxm_select='y'

orderbyuser_xm;

openstart1;

fetchstart1into:

mc;

i=1

dowhilesqlca.sqlcode=0

sle_logid.InsertItem(mc,i)

i=i+1

fetchstart1into:

mc;

loop

closestart1;

数据窗口的click事件:

(1)获取当前行的行号;

(2)撤销原有的高亮度;

(3)为当前行号设置高亮度。

确认按钮事件:

stringpassword,allow_log,log_string

log_string=sle_logid.text

selectuser_xm,password,allow_log

into:

czyxm,:

password,:

allow_log

fromdmuser

whereuser_xm=:

log_string;

ifsqlca.sqlcode=100ortrim(sle_logpass.text)<>passwordthen

messagebox('警告','Error6您的帐户不正确,不能登录系统!

')

sle_logid.setfocus()

return

endif

ifnotallow_log='y'then

messagebox('警告','Error7您的帐户没有获准注册权限,不能登录系统!

')

sle_logid.setfocus()

return

endif

stringdb_edit,db_query,sys_wh

selectdb_edit,db_query,sys_wh

into:

db_edit,:

db_query,:

sys_wh

fromdmuserwhereuser_xm=:

czyxm;

ifsqlca.sqlcode<>0then

messagebox('警告','您的帐户不正确,请系统管理员检查您的帐户!

')

return

endif

ifisnull(db_edit)thendb_edit='n'

ifisnull(db_query)thendb_query='n'

ifisnull(sys_wh)thensys_wh='n'

open(w_main)

messagebox('','登陆成功')

close(parent)

放弃:

close(parent)

系统维护功能

增加用户

修改功能:

删除功能:

代码部分:

Open事件代码:

rollback;

ifnotpb_1.enabledthen

messagebox('提示','您在“编辑”状态下退出,会丢失刚才的编辑结果!

')

endif

主窗口代码:

ifnotrow>0then

return

endif

ifedit_bz=''then

this.selectrow(0,false)

this.selectrow(row,true)

this.SetRow(row)

return

endif

添加按钮click事件:

(1)打开编辑窗口,发送“添加”标志;

(2)等编辑窗口关闭以后,浏览数据窗口与数据库同步。

添加按钮控件:

intold_row,new_row

old_row=dw_1.getselectedrow(0)

ifnotold_row>0then

old_row=0

endif

dw_1.selectrow(0,false)

new_row=dw_1.insertrow(old_row)

dw_1.selectrow(new_row,true)

dw_1.setitem(new_row,'allow_log','y')

dw_1.modify("user_xm.tabsequence=10")

dw_1.modify("password.tabsequence=20")

dw_1.modify("allow_log.tabsequence=30")

dw_1.modify("xm_select.tabsequence=40")

dw_1.modify("db_edit.tabsequence=50")

dw_1.modify("db_query.tabsequence=60")

dw_1.modify("sys_wh.tabsequence=70")

pb_1.enabled=false

cb_1.enabled=false

cb_2.enabled=false

cb_3.enabled=false

cb_4.enabled=true

cb_5.enabled=true

edit_bz='append'

修改按钮click事件:

(1)要获取数据窗口当前行的行号;

(2)打开编辑窗口;

(3)把靶子记录行号、学号送到消息队列并且把“修改”标志传送到消息队列中,同步数据窗口与表数据。

修改按钮代码:

intn

n=dw_1.getselectedrow(0)

ifnotn>0then

messagebox('提示','请选择将要修改的用户记录!

')

return

endif

dw_1.modify("user_xm.tabsequence=10")

dw_1.modify("password.tabsequence=20")

dw_1.modify("allow_log.tabsequence=30")

dw_1.modify("xm_select.tabsequence=40")

dw_1.modify("db_edit.tabsequence=50")

dw_1.modify("db_query.tabsequence=60")

dw_1.modify("sys_wh.tabsequence=70")

pb_1.enabled=false

cb_1.enabled=false

cb_2.enabled=false

cb_3.enabled=false

cb_4.enabled=true

cb_5.enabled=true

edit_bz='modify'

删除按钮click事件:

(1)获取数据窗口靶记录;

(2)打开编辑窗口;

(3)编辑窗口返回以后浏览数据窗口,同步显示数据库。

删除按钮代码:

intn,rowsub,net,delopt=0,have_sub=0,yn1

stringuser_dm,gl_sys=''

n=dw_1.getselectedrow(0)

ifnotn>0then

messagebox('提示','请选择将要删除的用户记录!

')

return

endif

user_dm=dw_1.getitemstring(n

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2