姜梅若数据库主内容
更新时间:2023-04-25 20:53:01 阅读量: 自然科学 文档下载
- 姜梅若雪推荐度:
- 相关推荐
1 绪论
当今时代是飞速发展的信息时代。在各行各业中离不开信息处理,计算机被广泛应用于B/S系统环境。计算机的好处在于它能够进行信息管理。使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了安全性。
对于复杂的信息管理,计算机能够充分发挥它的优越性。计算机与信息管理系统的开发密切相关,系统的开发是系统管理的前提。本系统就是为了管理好图书信息而设计的。
1.1 开发背景
图书管理包括的图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书管理系统都是初步开始使用,甚至尚未使用计算机进行信息管理。以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是图书管理系统开发所要解决的问题。
基于这此问题,有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的进行查询和修改图书情况等图书管理操作。
1.2系统对计算机软、硬件环境的基本要求
硬件要求:386,486,586及兼容机.256M基本内存,及各类奔腾系列机器;
操作系统::windows sever 2000 及以上版本
实现平台:powerbuilder 9.0和sybase 数据
统一的语言:SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL 命令只需很少时间就能学会,最高级的命令在几天内便可掌握。
1
所有关系数据库的公共语言:由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS(关系数据库管理系统)转到另一个,所有用SQL编写的程序都是可以移植的。
2 需求分析
2.1 系统分析
图书管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库。而对于后者则要求应用程序功能完备,易使用等特点。在数据库应用系统开发之前,对开发数据库的基本概念,数据库的结构、开发数据库应用程序的步骤、开发体系及方法都应当有相当清晰的了解和认识。数据库应用系统开发的目标是建立一个满足用户长期需求的产品。开发的主要过程为:理解用户的需求,然后,把它们转变为有效的数据库设计。把设计转变为实际的数据库,并且这些数据库带有功能完备、高效能的应用。
2.2 系统功能分析
图书馆管理系统应具备借书、还书、图书查询和图书管理(如增加、修改和删除)等基本管理功能,具体如下:
(1)凭借书证借书时,对借书证的有效性、最大借书数和目前能借书数,借书期限进行判断,并记录借书信息。
(2)在还书时,更改借书信息记录,并检查该书是否超期,如超期应计算出罚款金额。
(3)能查询读者基本信息和借书的历史记录。
(4)能对所有图书按分类查询(如作者、书名、出版社等)。
(5)能对图书进行基本管理(如增加、修改和删除)。
(6)能管理读者的基本信息(如增加、修改和删除)。
(7)能对各类读者的权限(有效性、最大借书数目和借书期限等)和超期罚款金额进行设置。
2
2.3总体需求
图书管理系统是一项复杂系统工程,要从实际出发,对实际情况进行客观的分析,深入了解需求。需求调查是为了研究系统设计的开发途径和方法。同时它也是进行概要设计和详细设计的基础,是进行内部维护和测试的依据。具体分析如下:添加操作:在执行操作时首先都要先检查是否已经输入以及数据库中是否已经存在输入的数据,如果存在会报错,程序返回上个页面,不执行添加操作。
删除操作:考虑到了字段在不同表中可能会同时存在的情况,比如:删除图书分类时候该分类下有书或者删除用户时该用户有借书记录,这样的情况下程序会给出提醒并跳转到该分类下的所有图书查看或者是该用户的全部借书查看。直到这种关联取消掉之后才允许进行删除这样的危险操作。
查询操作:考虑到了模糊查询的实现, SQL语句中用“like”,还有组合查询,通过对用户输入情况的判断来确定SQL语句的最终形式,比如用户查询时并未输入图书名字,就是名字匹配任意字符,那么程序给数据库的SQL语句就会是name like ‘%’。组合查询的实现也是程序判断用户所做的选择或者输入,在SQL语句中实现的。
超期统计:假定借书超期的限制是三十天,借书记录中的所有数据的借书时间如果不在当前服务器时间减去三十天和当前服务器时间之间,那么这条借书记录就属于超期记录了。由用户借书记录中的用户编号到用户表中查找该用户。
发送消息:往消息表中添加数据,该数据包含用户名,用户超期的图书,超期时间,罚金等相关警告信息。当用户正常登陆主页后,程序自动检查消息表中是否存在该用户的记录,如果有要给出提示,但是没有强制用户必须查看。
数据库备份和还原操作:程序只要告诉SQL 服务器执行备份和还原SQL语句就可以实现,在还原时程序还在使用系统数据库,此时执行还原操作会因为没有排它使用权出现错误,所以应告诉SQL 服务器使用另外的一个数据库,程序中用的是:秦梦琦数据库。还原操作时用FSO组件首先检查备份数据库文件是否存在,如果不存在则给出提示回到上个页面。所有条件都允许后则执行还原操作,如果数据库数据比较多,备份和还原的时间都可能会比较长。
3
4 3 数据库设计
3.1 用户登录流程图
用户登录流程图如下表:
图3.1
用户操作界面 系统 读者信息管理 图书信息管理 重 新登录 修改密
码 退出系
统
添加 修
改
查询 添加 修改 查询
5 3.2概念结构设计
图书馆管理系统,总共含有两个实体:图书,读者,它们之间的关系E-R 图如下:
图3.2 系统E-R 图
图书 读者
添加
修改 查
询
书名 编号 出版社
作者 定价
数量
类型 有效性 已借书数 姓名
班级
系别
编号
3.3 逻辑结构设计
用户登录表:
字段类型长度必填字段允许空格备注
ID int id主键
name char 50 是否名字
pwd char 50 是否密码
表3.1用户登录表
读者基本信息表:
字段名字段类型字段长度是否为空说明
BH Char 8 F 编号(关键字)
XM Char 8 F 姓名
BJ Char 50 T 班级
XB Char 50 F 系别
LXH Char 3 F 类型
YXX Char 1 F 有效性
YJSS Int F 已借书数
表3.2读者基本信息表
图书信息表:
字段名字段类型字段长度是否为空说明
BH Char 8 F 编号(关键字)
SM Char 50 F 书名
ZZ Char 50 F 作者
CBS Char 50 F 出版社
DJ Money F 定价
SL Int F 数量
表3.3 图书信息表
6
借还书记录表:
字段名字段类型字段长度是否为空说明
ID Bigint F 记录序号(关键字)
DZBH Char 8 F 读者编号
TSBH Char 8 F 图书编号
JSRQ SmallDatatime F 借书日期
HSRQ SmallDatatime T 还书日期
CQTS Int T 超期天数
CFJE Money T 处罚金额
表3.4 借还书记录表
读者类型表:
字段名字段类型字段长度是否为空说明
LXH Char 3 F 类型号(关键字)
LXM Char 20 F 类型名
ZDJSQ Int F 最大借书天数
ZDJSS Int F 最大借书数量
CQCF Money F 超期处罚(元/天)
表3.5 读者类型表
3.4创建表的脚本文件
关于创建数据库部分,可以通过SQL Server企业管理器来创建,也可以通过查询分析器来创建,对应的SQL语句如下:
(1)用户登录表:
CREATE user_inf
(
User_id char(10) NOT NULL PRIMARY KEY
User _PWD char(10) NOT NULL
)
7
(2)图书信息表:
CREATE 图书信息
(
编号char(8)NOT NULL PRIMARY KEY
书名char(50)NOT NULL
作者char(50)NOT NULL
出版社char(50)NOT NULL
定价money(8)NOT NULL
数量int(8)NOT NULL
)
(3)读者类型表:
CREATE 读者类型
(
类型号char(3)NOT NULL PRIMARY KEY
类型名char(20)NOT NULL
最大借书天数int(10)NOT FULL
最大借书量int(10)NOT NULL
超期处罚天数money(8)NOT NULL
)
(4)读者信息表:
CREATE 读者信息
(
编号char(10) NOT NULL PRIMARY KEY
姓名char(10) NOT NULL
班级char(50) NOT NULL
系别char(50) NOT NULL
类型char(3)
有效性char(1) NOT NULL
已借书数char(4)
)
(5)借还书记录表:
CREATE 借还书记录
8
(
记录序号bigint( ) NOT NULL PRIMARY KEY
读者编号char(8) NOT NULL
图书编号char(8) NOT NULL
借书记录smalldatatime( ) NOT NULL
还书日期smalldatatime( )
超期天数int(4)
处罚金额money(4)
)
4 详细设计
首先是欢迎进入图书馆管理系统首页,点击进入到用户登录界面,用户输入用户名和密码,就直接进入菜单主页。通过选择用户所要进行的操作如执行添加,修改或查询等功能进行操作管理。各模块组成功能结构以及其实现代码如下:
4.1 系统登录
应用程序代码:
// Profile 123
SQLCA.DBMS = "MSS Microsoft SQL Server"
SQLCA.Database = "姜梅若"
SQLCA.ServerName = "WWW-8C4F29375E3"
SQLCA.LogId = "dba"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
connect;
open(sy)
9
图书馆管理系统首页截图:
图4.1 欢迎进入图书馆管理系统页面
窗口下输入如下代码:
integer G_INPUT_TIME=0,total,yjss,zdjsl;
string G_PWD,CORRECT_PSWD,G_U,lxh;
图书馆系统登录:
图4.2 用户登录窗口
10
登录按键的代码:
STRING G_USER;
IF sle_1.text="" THEN
messagebox("payattention!","用户名不能为空")
sle_1.setfocus()
elseif sle_2.text="" then
messagebox("payattention!","密码不能为空")
sle_2.setfocus()
ELSE
G_INPUT_TIME=G_INPUT_TIME+1
G_USER=sle_1.text
G_U=G_USER
G_PWD=sle_2.text
select user_PWD INTO:CORRECT_PSWD FROM USER_inf
where user_id=:G_USER;
IF G_PWD=CORRECT_PSWD THEN
open(w_cd)
close(dl)
ELSE
IF G_INPUT_TIME>3 THEN
messagebox("警告","输入用户口令的次数太多!")
close(dl)
else
messagebox("警告","输入用户口令有误,请重新输入")
end if
end if
end if
取消按的键代码:
close(dl)
open(sy)
11
4.2 主菜单页面
用户登录后进入主菜单页面,用户根据需要的操作点击相应功能,在下拉菜单中进行选择。
截图如下:
图4.3主菜单页面
4.3系统界面
点击系统有重新登录,修改密码和退出三项选择。
(1)若选择重新登录则返回登录界面,如下界面:
图4.4 重新登录窗口
12
(2)若选择修改密码则出现如下页面:
图4.5 修改密码窗口
确定键的代码:
STRING G_P,G_L;
G_P=SLE_2.TEXT
G_INPUT_TIME=G_INPUT_TIME+1
IF SLE_2.TEXT<>SLE_3.TEXT THEN
IF G_INPUT_TIME>3 THEN
MESSAGEBOX("警告","输入次数太多!")
close(w_xgmm)
ELSE
MESSAGEBOX("警告","两次输入的口令不一致,请重新输入") END IF
ELSE
IF SLE_1.TEXT<>G_PWD THEN
IF G_INPUT_TIME>3 THEN
MESSAGEBOX("警告","输入次数太多!")
CLOSE(w_xgmm)
ELSE
MESSAGEBOX("警告","输入的原口令不正确,请重新输入")
END IF
ELSE
UPDATE USER_inf SET user_PWD=:G_P
13
WHERE user_id=:G_U;
MESSAGEBOX("注意","你的口令已经修改,请牢记")
COMMIT;
CLOSE(w_xgmm)
END IF
END IF
(3)若选择退出则退出图书馆管理系统。
4.4读者信息管理
点击读者信息管理则会有添加,修改和查询三项选择。
(1)若选择添加则会进入如下页面:
图4.6 添加读者信息窗口
前一条按键的代码:
integer row_current
row_current=dw_1.ScrollPriorRow()
if row_current=1 then
MessageBox("警告","以是最前一条")
14
end if
后一条按键的代码:
integer row_current
integer row_count
row_current=dw_1.ScrollNextRow()
row_count=dw_1.RowCount()
if row_current=row_count then
MessageBox("警告","以是最后一条")
end if
添加按键的代码:
dw_1.object.datawindow.readonly = "no"
long g_RowNumber
g_RowNumber=dw_1.InsertRow(0)
dw_1.ScrollToRow(g_RowNumber)
dw_1.Setrow(g_RowNumber)
dw_1.Setfocus()
保存按键的代码:
if update(dw_1,true,false)=1 then
dw_1.resetupdate()
commit;
messagebox("错误!!!","数据保存成功")
else
rollback;
messagebox("错误!!!","数据保存失败")
end if
退出按键的代码:
int MCount
int UPdateOrNot
MCount=w_tj.dw_1.ModifiedCount()
if MCount=0 then
close(w_tj);
elseif MCount>0 then
15
UPdateOrNot=messagebox("保存修改","您修改了数据窗口中的数据,现在是否保存?",Question!,YesNoCancel!)
if UPdateOrNot=1 then
if update(w_tj.dw_1,true,false)=1 then
w_tj.dw_1.resetupdate()
commit;
else
rollback;
messagebox("错误!!!","数据保存失败")
end if
close(w_tj)
elseif UPdateOrNot=2 then
rollback;
close(w_tj)
end if
end if
(2)若选择修改则会进入如下页面:
图4.7读者信息窗口
16
窗口下输入如下代码:
dw_1.settransobject(sqlca)
dw_1.retrieve()
dw_1.object.datawindow.readonly = "yes"
修改按键的代码:
string oldsql,newsql
int total_row
dw_1.object.datawindow.readonly = "NO"
dw_1.Object.类型.Protect=1
if sle_1.text="" then
MessageBox("注意","请输入内容!")
else
oldsql=dw_1.getsqlselect()
newsql=oldsql+" where 编号="+"'"+sle_1.text+"'"
dw_1.setsqlselect(newsql)
dw_1.retrieve()
dw_1.setsqlselect(oldsql)
total_row=dw_1.rowcount()
if total_row=0 then
MessageBox("注意","没有符合条件的内容")
end if
end if
删除按键的代码:
long current_row
if sle_1.text="" then
MessageBox("注意","请输入内容!")
else
current_row=dw_1.getrow()
deleterow(dw_1,current_row)
end if
17
保存的代码:
if update(dw_1,true,false)=1 then
dw_1.resetupdate()
commit;
messagebox("","数据保存成功")
else
rollback;
messagebox("错误!!!","数据保存失败")
end if
退出按键的代码:
int MCount
int UPdateOrNot
MCount=w_xg.dw_1.ModifiedCount()
if MCount=0 then
close(w_xg);
elseif MCount>0 then
UPdateOrNot=messagebox("保存修改","您修改了数据窗口中的数据,现在是否保存?",Question!,YesNoCancel!)
if UPdateOrNot=1 then
if update(w_xg.dw_1,true,false)=1 then
w_xg.dw_1.resetupdate()
commit;
else
rollback;
messagebox("错误!!!","数据保存失败")
end if
close(w_xg)
elseif UPdateOrNot=2 then
rollback;
close(w_xg)
end if
end if
18
(3)若选择查询则会进入如下页面:
图4.8查询窗口
窗口下输入如下代码:
dw_1.settransobject(sqlca)
dw_1.retrieve()
dw_1.object.datawindow.readonly = "yes"
查询按键的代码:
string oldsql,newsql
int total_row
if sle_1.text="" then
MessageBox("注意","请输入内容!")
else
oldsql=dw_1.getsqlselect()
newsql=oldsql+" where 编号="+"'"+sle_1.text+"'"
dw_1.setsqlselect(newsql)
dw_1.retrieve()
dw_1.setsqlselect(oldsql)
total_row=dw_1.rowcount()
19
if total_row=0 then
MessageBox("注意","没有符合条件的内容")
end if
end if
退出按键的代码:
close(w_cx)
4.5图书信息管理
点击图书信息管理则会有添加,修改和查询三项选择。
(1)若选择添加则会进入如下页面:
图4.9 添加图书信息窗口
窗口下输入如下代码:
dw_1.settransobject(sqlca)
dw_1.retrieve()
dw_1.object.datawindow.readonly = "yes"
前一条按键的代码:
integer row_current
row_current=dw_1.ScrollPriorRow()
20
if row_current=1 then
MessageBox("警告","以是最前一条")
end if
后一条按键的代码:
integer row_current
integer row_count
row_current=dw_1.ScrollNextRow()
row_count=dw_1.RowCount()
if row_current=row_count then
MessageBox("警告","以是最后一条")
end if
添加按键的代码:
dw_1.object.datawindow.readonly = "no"
long g_RowNumber
g_RowNumber=dw_1.InsertRow(0)
dw_1.ScrollToRow(g_RowNumber)
dw_1.Setrow(g_RowNumber)
dw_1.Setfocus()
保存按键的代码:
if update(dw_1,true,false)=1 then
dw_1.resetupdate()
commit;
messagebox("错误!!!","数据保存成功")
else
rollback;
messagebox("错误!!!","数据保存失败")
end if
退出按键的代码:
int MCount
int UPdateOrNot
MCount=w_tj.dw_1.ModifiedCount()
if MCount=0 then
21
正在阅读:
姜梅若数据库主内容04-25
chap3空调的负荷与送风量04-18
Phison PS3109固件更新工具(DLMC)使用指引 v0.1305-06
成功招商九步骤05-14
中药学(师)《相关专业知识》模拟试题(2)-中大网校09-05
东财 施工技术 随机作业大全 带答案11-02
2015年职业生涯规划考试试题及答案01-01
模具车间招标文件最终版10-04
- 《面积和面积单位》教学反思4篇
- 如何筹建证券营业部
- 《圣经》中的十种奇妙的沟通方式
- 海湾JB-QG QT-GST9000火灾报警控制器(联动型)安装使用说明书 Ver
- 春节拜年的礼仪有些
- 环境影响评价技术导则与标准模拟试题及答案解析(8)
- 人教部编教材一年级下册:人教版语文一年级下册教案1
- 亲子教育-精选幼儿园优秀观察记录【三篇】 精品
- 初中数学平方根教学反思
- 长春版语文四年级下册 1.小蓝裙的故事(优秀教案 教学设计)1
- 基于视频的道路识别新算法在交通监测系统中的应用
- 浅谈如何提高小学生“迁移”阅读能力-2019年教育文档
- 中考新突破江西专用2017中考英语话题十二饮食试题
- 测井解释与生产测井-吴锡令生产测井原理与应用
- 线性代数 第2章 矩阵及其运算
- 第二篇 钱江四桥重大专项技术研究第四章 钱江四桥风洞模型试验
- 2018年天津师范大学城市与环境科学学院828地理学综合之经济地理
- 苏教版小学四年级下册语文期中测试题及答案
- 加油站消防维保方案
- 培育和践行社会主义核心价值