图书馆管理系统设计报告.docx

上传人:b****6 文档编号:3358520 上传时间:2022-11-22 格式:DOCX 页数:28 大小:1.22MB
下载 相关 举报
图书馆管理系统设计报告.docx_第1页
第1页 / 共28页
图书馆管理系统设计报告.docx_第2页
第2页 / 共28页
图书馆管理系统设计报告.docx_第3页
第3页 / 共28页
图书馆管理系统设计报告.docx_第4页
第4页 / 共28页
图书馆管理系统设计报告.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

图书馆管理系统设计报告.docx

《图书馆管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统设计报告.docx(28页珍藏版)》请在冰豆网上搜索。

图书馆管理系统设计报告.docx

图书馆管理系统设计报告

系统名称图书馆管理系统

专业计算机科学与技术

班级

姓名

学号

指导教师

2009年12月

重庆邮电大学课程设计任务书

学院_专业_班级__

指导教师课程名学年学期第学期

主要内容、方法和要求

填写示例:

(一)图书馆管理系统

1,系统基本功能

结合所学知识,利用PowerBuilder9.0为平台设计一个通用性较强、实用的系统,以提高图书管理水平,实现信息资源的共享。

图书管理系统是一种基于集中统一规划的数据库数据管理新模式。

在对图书、读者的管理,其实是对图书、读者数据的管理。

本系统的建成无疑会为管理者对图书管理系统提供极大的帮助。

使用该系统之后,图书馆管理人员可以管理读者的登记、图书的入库、借出、归还以及注销等;还可以查询某位读者、某本图书的借阅情况,对当前借阅情况给出一些统计,给出统计表格,以全面掌握图书的流通情况。

本系统的宗旨是提高图书管理工作的效率,减少相关人员的工作量,使学校的图书管理工作真正做到科学、合理的规划,系统、高效的实施。

(2)产品功能

登录系统:

注销用户、修改密码、系统退出。

管理:

用户管理、图书管理、读者管理、借阅管理。

查询:

图书查询、读者查询、借阅查询、帮助。

主要参考文献

 

分工

一《图书馆管理系统》需求分析

当今时代是飞速发展的信息时代。

在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境。

计算机的最大好处在于利用它能够进行信息管理。

使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。

尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。

计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。

本系统就是为了管理好图书馆信息而设计的。

图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。

根据调查得知,他们以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。

数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。

总的来说,缺乏系统,规范的信息管理手段。

尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥它的效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。

数据处理手工操作,工作量大,出错率高,出错后不易更改。

图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。

如要对很长时间以前的图书进行更改就更加困难了。

基于这此问题,我认为有必要建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。

二《图书馆管理系统》设计

2.1目标与定位

系统设计

1.系统目标设计。

本图书馆管理系统可以用于支持图书馆管理员完成一般的工作。

有下面3个功能。

⏹借书还书系统。

⏹会员和图书录入系统。

⏹管理员账号管理系统。

2.开发设计思想

本系统开发设计有以下几点。

⏹尽量用现有的软硬件环境,及先进的管理开发方案,从而达到充分利用现有资源。

遗稿系统的开发水平和应用效果的目的。

⏹系统应符合管理的规定,满足日常人事管理的工作需要,并达到操作过程直观、方便、实用等要求。

⏹系统具备及时根据人员的需求进行数据的添加、删除、修改等操作。

3.开发和运行环境选择

用PowerBuilder9.0作为应用开发工具。

Sqlanywhere作为数据库系统。

4.系统功能分析

在系统开发总体任务的基础上完成系统功能分析。

本系统需要完成以下功能。

⏹登陆权限设置

⏹读者注册

⏹管理员各种信息的输入,图书和读者资料。

⏹图书的借出归还。

⏹管理员的账号增加和密码修改。

⏹图书和会员的基本资料查询。

 

系统功能图

 

权限

认证

x

2.2数据库设计

2.2.1E-R图设计

实体之间的E-R图为

2.2.2面向对象结构图

 

 

系统功能

 

 

查查

看看

借图

书书

信信

息息

 

信息查询

 

 

 

 

 

2.2.3数据库表结构及数据字典设计

2.3代码于程序的实现

登陆认证代码

//将全局变量-输入用户名和口令的次数赋初值0

G_INPUT_TIME=0

//定义变量

Environmentl_env

intl_ScrWidth,l_ScrHeight

//关闭窗口刷新

setRedraw(false)

//取得屏幕的高度和宽度

GetEnvironment(l_env)

l_ScrWidth=PixelsToUnits(l_env.ScreenWidth,XpixelsToUnits!

l_ScrHeight=PixelsToUnits(l_env.ScreenHeight,YpixelsToUnits!

//移动窗口到屏幕中间

Move((l_scrwidth-this.width)/2,(l_scrheight-this.height)/2)

//打开窗口刷新

setredraw(true)

管理员注册

ifsle_1.text=""then

messageBox("警告:

","请输入资料!

")

return

endif

stringid,number

id=sle_4.text

inti,j

//检查有无重号

selectuser_id

into:

i

fromuser_information

whereuser_id=:

id;

ifi<>0then

messageBox("警告:

","账号重复,请重新输入!

")

return

endif

number=sle_3.text

selectadministrator_number

into:

j

fromadministrator

whereadministrator_number=:

number;

ifj<>0then

messageBox("警告:

","职工号重复,请重新输入!

")

return

endif

INSERTINTO"administrator"

("administrator_sex",

"administrator_name",

"user_password",

"user_id",

"administrator_number")

VALUES(:

sle_2.text,

:

sle_1.text,

:

sle_5.text,

:

sle_4.text,

:

sle_3.text);

if(sqlca.sqlcode<>0)then

messagebox("","保存失败,错误:

"+sqlca.sqlerrtext)

rollback;

else

commitusingsqlca;

messagebox("","保存成功")

endif

close(administrator_enroll)

添加图书

intn

n=dw_1.rowcount()

dw_1.insertrow(0)

dw_1.scrolltorow(n+1)

integerli_rc

//Acceptthelastdataenteredintothedatawindow

dw_1.AcceptText()

//Checktoseeifanydatahaschanged

IFdw_1.ModifiedCount()>0THEN

li_rc=MessageBox("提示",&

"是否保存所做的修改?

",Question!

&

YesNoCancel!

3)

//Userchosetoupdataandclosewindow

IFli_rc=1THEN

cb_4.triggerevent(Clicked!

RETURN0

//Userchosetoclosewindowwithoutupdating

ELSEIFli_rc=2THEN

RETURN0

//Usercanceled

ELSE

RETURN1

ENDIF

ELSE

//Nochangestothedata,windowwilljustclose

RETURN0

ENDIF

图书查询

stringcondition

condition='book_number'+'='+"'"+sle_1.text+"'"

dw_1.setfilter(condition)

filter(dw_1)

sle_1.text=""

sle_1.setfocus()

ifdw_1.retrieve()=0thenmessagebox('提示','图书馆没有此书!

')

借书处理代码

stringIs_bookid,Is_cert_id,Il_m,Il_n,Il_f,Il_l,Il_p,check

dateIs_returndates

datetimeIs_loandates,Il_j,Il_k

integerIl_a,Is_flag,Il_v,Il_d,Il_b

check="是"

ifsle_1.text=""then

messagebox("缺少数据","请输入借书证书ID")

sle_1.setfocus()

return

elseifsle_2.text=""then

messagebox("缺少数据","请输入图书编号")

sle_2.setfocus()

return

endif

Is_cert_id=sle_1.text

Is_bookid=sle_2.text

Is_loandates=datetime(today())

Is_returndates=relativedate(today(),30)

selectreturn_date

into:

Il_j

fromborrower_information

wherebook_number=:

Is_cert_idandborrowe_date<:

Is_loandates;

selectbook_number

into:

Il_m

frombook

wherebook_number=:

Is_bookid;

ifIl_m<>Is_bookidthen

messagebox("信息错误","数据库内没有此图书信息!

")

sle_1.setfocus()

return

endif

selectborrower_card_number

into:

Il_n

fromreader

whereborrower_card_number=:

Is_cert_id;

ifIl_n<>Is_cert_idthen

messagebox("信息错误","数据库内不存在此证!

")

sle_1.setfocus()

return

endif

selectborrow_or_not

into:

Il_p

frombook

wherebook_number=:

Is_bookid;

ifIl_p=checkthen

messagebox("信息错误","图书已借出!

")

sle_1.setfocus()

return

endif

selectbook_name

into:

Il_l

frombook

wherebook_number=:

Is_bookid;

insertintoborrower_information(return_date,borrowe_date,borrower_card_number,book_number,book_name)

values(:

lib_date,

:

Is_loandates,

:

Il_n,

:

Il_m,

:

Il_l

);

UPDATEbookSETborrow_or_not='是'WHEREbook_number=:

Is_bookid;

dw_1.retrieve(Is_cert_id)

messagebox("提示信息","图书编号为"+Is_bookid+"的图书已借成功")

//dw_1.update()

sle_1.text=""

sle_2.text=""

em_1.text=""

sle_1.setfocus()

还书代码

stringIs_cert_id,Is_bookid,Il_a

datetimeIl_k,Is_sjtime,l_returntime,l_loandate

stringIl_e,Il_h,Il_l,l_cid,l_bid,c_cid

doublem_money,emoney,sum,Is_price

integerl_flag

Is_bookid=sle_4.text

Is_sjtime=datetime(today())

Is_cert_id=sle_3.text

ifsle_3.text=""then

messagebox("缺少数据","请输入借书证书号")

sle_3.setfocus()

return

elseifsle_4.text=""then

messagebox("缺少数据","请输入图书编号")

sle_4.setfocus()

return

endif

//判断证件是否借过书或借书证不存在

selectborrower_card_number

into:

c_cid

fromreader

whereborrower_card_number=:

Is_cert_id;

ifc_cid<>sle_3.textthen

messagebox("信息错误","您的借书证号不存在,请询问管理员!

")

sle_3.setfocus()

return

endif

selectbook_number

into:

l_bid

fromborrower_information

wherebook_number=:

Is_bookid;

ifl_bid<>sle_4.textthen

messagebox("信息错误","该书未借出!

")

sle_4.setfocus()

return

endif

UPDATEbook

SETborrow_or_not='否'

WHEREbook_number=:

Is_bookid;

messageBox("提示信息","图书编号为"+Is_bookid+"的图书已还书成功")

delete

fromborrower_information

wherebook_number=:

Is_bookid;

sle_3.text=""

sle_4.text=""

sle_3.setfocus()

修改密码

stringpw

pw=SLE_2.TEXT

//输入次数加1

G_INPUT_TIME=G_INPUT_TIME+1

//判断两次输入的新口令是否一致

IFSLE_2.TEXT<>SLE_3.TEXTTHEN

IFG_INPUT_TIME>3THEN

MESSAGEBOX("警告","输入的次数太多!

")

CLOSE(CHANGE_PASSWORD)

ELSE

MESSAGEBOX("警告","两次输入的口令不一致,请重新输入")

ENDIF

ELSE

//判断输入的原口令是否正确

IFSLE_1.TEXT<>G_PWDTHEN

IFG_INPUT_TIME>3THEN

MESSAGEBOX("警告","输入的次数太多!

")

CLOSE(CHANGE_PASSWORD)

ELSE

MESSAGEBOX("警告","输入的原口令不正确,请重新输入")

ENDIF

ELSE

//修改数据库中的该用户的口令

UPDATEuser_informationSETuser_password=:

pw

WHEREuser_id=:

G_USER;

MESSAGEBOX("注意","你的口令已经修改,请牢记")

//提交修改,关闭口令修改窗口

commitusingsqlca;

CLOSE(CHANGE_PASSWORD)

ENDIF

ENDIF

if(sqlca.sqlcode<>0)then

messagebox("","保存失败,错误:

"+sqlca.sqlerrtext)

rollback;

else

commitusingsqlca;

messagebox("","保存成功")

endif

读者用户注册

ifsle_1.text=""then

messageBox("警告:

","请输入资料!

")

return

endif

stringid,number

id=sle_2.text

inti,j

//检查有无重号

selectuser_id

into:

i

fromuser_information

whereuser_id=:

id;

ifi<>0then

messageBox("警告:

","账号重复,请重新输入!

")

return

endif

number=sle_5.text

selectborrower_card_number

into:

j

fromreader

whereborrower_card_number=:

number;

ifj<>0then

messageBox("警告:

","借书证号重复,请重新输入!

")

return

endif

INSERTINTO"reader"

("reader_sex",

"reader_name",

"user_password",

"user_id",

"borrower_card_number",

"reder_mobile_phone_number")

VALUES(:

sle_4.text,

:

sle_1.text,

:

sle_3.text,

:

sle_2.text,

:

sle_5.text,

:

sle_6.text);

if(sqlca.sqlcode<>0)then

messagebox("","保存失败,错误:

"+sqlca.sqlerrtext)

rollback;

else

commitusingsqlca;

messagebox("","保存成功")

endif

close(reder_enroll)

三系统功能

上图为登录界面,点击进入

可用借书卡号注册普通为普通用户

这是普通用户注册界面

填写上述信息可添加到数据库中

登陆

普通读者号登陆

进入主程序读者可根据菜单选择相应的处理

如图书查询

图书管理图书查询

读者可根据图书编号、书名、作者、种类查询

在查询窗口中还可查到图书是否已被借出

可在用户信息项查看自己的信息以及本人已借书籍的信息

管理员账号登陆

可以进行图书入库,删除,进行借还书处理,添加管理员,读者信息查询操作

插入操作:

点击窗口的添加按钮,在数据窗口中输入图书相应信息,让后点保存即可完成图书入库。

删除:

在数据窗口中选择要删除的行,点击删除即可。

图书借还处理

选择相应选项卡,如借书:

输入借书证号,图书编号后点击确定完成借书处理

管理员可查询更新读者基本信息

选择查询种类,点击查询,在数据窗口中更改需要更改的信息,点击更新完成读者信息更新

添加管理员

输入相应信息后,点击添加,完成添加

四心得体会

在这次设计中,涉及到了之前关于PB学习的很多知识点,让我对一个软件的设计开发过程有了更深的了解,重新复习了之前学习到的东西。

查询曾经借过的书的记录和未还书的记录时不能全部显示,要出来对应证件号码的信息。

在设计软件过程中遇到了很多困难,需要反复的改写,思考,有时候因为书看的不仔细或者上课的时候不认真,自己盲目的做而耽误了不少时间。

不过多天来一直研究PB也使自己的PB编程和设计思想和水平有了稍许的提高。

一开始,我觉得老师让做系统不如让我们笔试,但是经过编程、设计,使自己掌握了不少知识与技巧,这样实践性强的期末考试形式很好,可以真正的提高就业能力和动手能力。

对于软件工程的学习,只有真正参与到设计和编程才能够积累经验,提高自己的软件编程能力。

动手能力对于一个程序员来说至关重要。

由于设计系统开发经验不足,时间有限,而我的设计只能提供其基本的功能。

还有许多的设想由于时间和自身和因素无法得以实现。

虽然我们小组完成了系统的调研、分析、设计和调试的工作,但是仍然有许多不足之处。

不过,至少它已经启发了自己的思维,提高了我的动手能力,这是我在课本中学不到的。

它为我们在以后的工作岗位上发挥自己的才能奠定了坚实的基础。

心得体会

这次选用的编程工具是PowerBuilder9.0,对于一个数据库软件的开发,PB对数据库的操作很方便,特别是提供的数据窗口控件

这次程序设计复习巩固了以前学习的数据库知识,进一步掌握了PB的一些基本操作,了解到一些程序设计的基本过程,学习到一些追踪程序错误及解决问题的方法。

通过这次程序实践让增强了自己的动手能力也我了解到自己的许多不足,一些设想的功能也未能实现,希望随着以后知识和经验的累计能够设计出更加完善的程序。

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

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1