01李丽.docx

上传人:b****8 文档编号:24050973 上传时间:2023-05-23 格式:DOCX 页数:37 大小:402.42KB
下载 相关 举报
01李丽.docx_第1页
第1页 / 共37页
01李丽.docx_第2页
第2页 / 共37页
01李丽.docx_第3页
第3页 / 共37页
01李丽.docx_第4页
第4页 / 共37页
01李丽.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

01李丽.docx

《01李丽.docx》由会员分享,可在线阅读,更多相关《01李丽.docx(37页珍藏版)》请在冰豆网上搜索。

01李丽.docx

01李丽

目录

1.引言1

1.1实习目的1

1.2功能1

1.3实习要求1

2.需求分析2

1.功能需求概述2

2.图书馆管理系统的功能需求2

3.图书检索模块3

4.图书租借模块3

5.证件管理模块4

3.总体设计5

1.功能设计5

2.数据库设计5

2.应用程序用户界面的设计7

3.代码的设计和说明12

4.系统功能测试24

1.界面测试24

2.具体功能测试24

3.系统设置的测试24

5.总结25

6.参考文献26

图书管理和查询系统

1.引言

1.1实习目的

(1)培养综合应用PowerBuilder进行应用程序设计和解决实际问题的能力;

(2)加深对PowerBuilder编程环境和编程方法的理解;

(3)发挥各人的想象能力和分析能力,拓展思维空间;

(4)掌握应用程序设计的基本方法;

(5)巩固已经学到的编程技术,学会在编程中学习编程。

1.2功能

(1)图书信息的录入和删除,出版社信息管理等;

(2)图书的检索(包括按作者姓名、书名、关键字);

(3)图书的租借(包括借书登记、还书登记);

(4)借书证件的管理(包括办新证件,挂失、证件信息查询、注销等)

1.3实习要求

1)按照应用程序设计的4个阶段进行,熟悉每个阶段需要解决的问题以及解决的方法;

2)使用SQLServer设计数据库和数据表,注意把握数据库的设计原则;

3)要求应用程序有菜单栏,操作方便;

4)必须完成功能1-5。

强调一点:

在借书输入证件ID时,首先检索是否在“黑名单”和“挂失表”中,后再校验证件的真伪。

在借、还书时要显示本证件已借书的量和图书信息;证件注销时数据的参照完整性问题。

在系统设置中可随机设置不同借书证件(如教师和学生)的可借书数量和借书的时间。

5)应用程序界面和风格不作具体要求,各人按照自己的思路去做,发挥自己的创造。

2.需求分析

1.功能需求概述

根据本次设计的要求,把本次课程设计设计为四个模块,并分别实现其功能:

1、图书管理模块:

这个模块实现了新书入库、旧书销毁。

2、图书管理模块:

这个模块实现了按作者姓名检索、按书名检索、按关键字检索。

3、图书租借模块:

这个模块实现了图书租借、还书、查看借阅信息等三个功能。

4、证件管理模块:

这个模块实现了新证件的办理、证件的挂失和撤消、证件注销、查看证件信息等功能。

2.图书馆管理系统的功能需求

1、总体功能模块

2、图书管理模块

(1)新书入库。

系统管理员可以添加新购买的图书信息到书库。

(2)旧书销毁。

系统管理员可以销毁已被淘汰的图书信息或丢失的图书信息。

3.图书检索模块

4.图书租借模块

(1)借书。

此部分包括查看某证件的借书记录和借书两部分

(2)还书。

主要是完成对超期书籍的罚款。

5.证件管理模块

3.总体设计

系统总体结构图是详细描述图书管理系统的功能的图形,该图形按照系统的功能将系统的各个模块分类,以简洁、明了的方式将系统的功能列出来。

在我们的图书管理系统的系统中分为四个大的模块即图书管理、图书检索、图书租借、证件管理,在这四个大的功能下划分了若干系统的功能,如图3-1系统总体结构所示。

 

图3-1总体结构图

1.功能设计

1、图书管理模块:

这个模块实现了新书入库、旧书销毁。

2、图书管理模块:

这个模块实现了按作者姓名检索、按书名检索、按关键字检索。

3、图书租借模块:

这个模块实现了图书租借、还书、查看借阅信息等三个功能。

4、证件管理模块:

这个模块实现了新证件的办理、证件的挂失和撤消、证件注销、查看证件信息等功能。

2.数据库设计

数据库中,部分表的结构见表1~表4。

存放图书信息的表BookInfo的结构见表1。

其中图书编号具有惟一性,8位编码中最高2位为图书类型代码,例如电子类、计算机类等,通过表4“BookClass”表进行图书类型的管理,其余6位为图书顺序号。

表1BookInfo表

字段名

意义

数据类型

宽度

Null

PrimaryKey

BookID

图书编号

Numberic

8

No

ISBN

ISBN书号

Char

30

Yes

Title

书名

Char

40

Yes

Publish

出版日期

Char

Yes

Author

作者

Char

30

Yes

Words

字数(千字)

Integer

Yes

PublisherID

出版社ID

Numberic

4

Yes

Number

印刷册数

Integer

Yes

Price

定价

Money

Yes

Keyword

关键字

Char

30

Yes

Abstract

摘要

Varchar

400

Yes

flag

标识

int

4

Yes

表2Publisherlnfo表

字段名

意义

数据类型

宽度

Null

PrimaryKey

PublisherId

出版社ID

Numberic

4

No

Publisher

出版社名称

Char

30

Yes

Address

出版社地址

Char

50

Yes

Tel

电话

Char

16

Yes

Fax

传真

Char

16

Yes

Postcode

邮政编码

Numberic

6

Yes

http

网址

Char

16

Yes

出版社ID是代表出版社的代码,它与图书信息表(表1BookInfo表)相关联。

图书租惜表(表3Loan表)记录了图书租借情况,借书证书ID与CertificateInfo表相关联。

3、loan表:

图书租惜表(表3Loan表)记录了图书租借情况,借书证书ID与CertificateInfo表相关联。

图书编号与bookinfo表相关联。

其中的flag标记是区分某书是否已还,如果未还则置为1,否则置为0。

此表还用于查看某人的借书记录和统计某书的借阅次数。

表3Loan表

字段名

意义

数据类型

宽度

Null

PrimaryKey

BookID

图书编号

Numric

2

No

Cert_id

借书证书ID

Numric

5

No

Loandates

借书日期

Date

Yes

Return

还书日期

Date

Yes

flag

标记

Tinyint

Yes

4、表4BookClass

字段名

意义

数据类型

宽度

Null

PrimaryKey

ClassID

图书分类代号

Numric

2

No

Classname

图书分类名称

Char

30

Yes

5、Certificateinfo表:

证件信息表(表4Certificateinfo表)是用于记录证件信息的的,其中的表中的flag标记是用来区分证件类型的(如flag=1则表示此证可以一次借10本书,flag<>1则表示可以一次借6本书);flag1是用来区分此证是否已被挂失,在本次设计中,如果被挂失则flag1置为2,否则置为0。

表5CertificateInfo

字段名

意义

数据类型

宽度

Null

PrimaryKey

Cert_id

借书证书ID

Numric

5

No

Cert_name

证件名称

Char

10

Yes

Cert_value

证件号码

Numric

18

Yes

Name

姓名

Char

8

Yes

Depart

所在部门

Char

20

Yes

flag

标记

Tinyint

Yes

Flag1

标记1

Tinyint

Yes

2.应用程序用户界面的设计

1、本次设计共设计了六个窗口:

1)欢迎登录图书管理系统窗口:

其中登入控件中设有用户名和密码。

2)图书管理系统窗口:

其中设有7个命令按扭控件,分别点击可以进入下一个界面。

3)图书管理窗口:

包括五个选项卡控件,分别实现新书入库和旧书销毁。

4)图书检索窗口:

包括三个选项卡控件,分别实现按作者姓名、按书名、按关键字检索。

5)图书租借窗口:

包括两个选项卡控件,分别实现借书、还书。

6)证件管理窗口:

包括四个选项卡控件,分别实现办新证件、挂失与撤消、注销、查看证件信息等功能。

1、系统运行后进入登录界面如图3-1所示:

图3-2登录界面

2、输入用户名和密码,登录成功,进入图书管理系统,如图3-2所示:

图3-3主界面

3、点击图书管理,进入图书管理界面,可以实现新书入库、旧书销毁,如图3-3所示:

图3-4图书管理界面

4、点击图书检索,进入图书检索页面,实现按作者姓名、按书名、按关键字查询,测试作者名2013,效果如图3-4所示:

图3-5图书检索界面

5、点击证件管理按钮,进入证件管理页面,可进行办理新证、挂失也与撤销、注销功能,如图3-5所示:

图3-6证件管理界面

6、点击图书租借,进入图书租借页面,可借书和还书,并查看借阅信息:

如图3-6所示:

图3-7证件查看界面

7、图3-7为还书信息,如图所示:

图3-8还书界面

2、说明

1)本次设计设有应用程序主菜单

2)对话框的设计

应用程序的各项功能都是依靠对话框来实现的。

对话框的设计应当“以人为本”,方便用户。

例如,在新书录入的对话框中,“图书类型”和“出版社”可以通过下拉列表框来选不能让用户去输入代码或名称。

又比如菜单“统计资料”中的“各类图书的比例”菜单项弹出的对话框中,最好采用饼图方式来表论统计结果。

“热门图书统计”可以采用条形图来表示。

其他设计方法和设计原则可以参考上机操作题和有关章节中的内容。

表6各菜单项的功能(供参考)

菜单标题

菜单项

功能

 

图书管理

新书入库

进行新书的入库登记,即将新书信息加入到BookInfo表中

旧书销毁

将需要淘汰或销毁的旧书从数据库中删除

出版社

管理出版社信息,具有添加、删除、修改的功能

退出

退出应用系统

 

图书检索

按作者姓名

按作者姓名进行图书的模糊查询

按出版日期│某个阶段

查询某个时间段内的出版的图书

按出版日期│某个日期

查询某个日期出版的图书

按出版日期│某个日期之前

查询某个日期之前出版的图书

按出版日期│某个日期之后

查询某个日期之后出版的图书

按出版社名称

按出版社名称进行图书的模糊查询

按图书分类

按图书分类进行图书的分类查询

按书名

按图书的名称进行图书的模糊查询

按关键字

按图书的关键字进行图书的模糊查询

图书租借

借书

办理借书登记,将借书信息记录到Loan表中

还书

办理还书手续,包括过期罚款的计算,在Loan表中该记录上填写还书日期和

图书测览

阅读摘要

可设计成两个数据窗口,一个显示图书名称,另一个显示选中的图书摘要

新书预览

浏览近半年内出版的新书及该书摘要

统计资料

各类图书比例

按图书分类,统计各类图书数量占总量的比例

库存与借出比例

统计借出图书数量与库存图书量的比例

热门书统计

按分类、图书名称统计借出率最高的类别、图书

帮助

帮助

提供系统的功能说明\使用说明\注意事项等

版本信息

提供系统的版权和版本信息

3.代码的设计和说明

1、欢迎进入图书管理查询系统窗口

登录:

ifsle_1.text="123"andsle_2.text="123"then

Open(main)

sle_1.text=""

endif

退出:

close(parent)

2、图书管理查询系统窗口

图书管理:

tab_1.tabpage_jiushuxiaohui.dw_id.settransobject(sqlca)

图书检索:

close(parent)

tab_1.tabpage_author.dw_author.settransobject(sqlca)

tab_1.tabpage_title.dw_title.settransobject(sqlca)

tab_1.tabpage_keyword.dw_keyword.settransobject(sqlca)

图书租借:

tab_1.tabpage_jieshu.dw_jieshu.settransobject(sqlca)

tab_1.tabpage_huanshu.dw_huanshu.settransobject(sqlca)

证件办理:

tab_1.tabpage_guashi.dw_guashi.settransobject(sqlca)

tab_1.tabpage_zhuxiao.dw_zhuxiao.settransobject(sqlca)

退出:

close(guanlichaxue)

Open(huanyingjinru)

说明:

上述控件中使用数据库的事物对象的代码。

3、图书管理窗口

1)新书入库:

longls_BookID,ls_PublisherID,ll_i

integerls_Number,ls_Words,ls_flag1

Stringls_ISBN,ls_Title,ls_Publish,ls_Author,ls_Keyword,ls_Abstract,ls_price

//doublels_price

ifsle_bookid.text=""oriSNull(sle_bookid.text)then

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

sle_bookid.setfocus()

return

endif

ls_BookID=long(sle_bookid.text)

ls_ISBN=trim(sle_isbn.text)

ls_Title=trim(sle_title.text)

ls_Publish=trim(sle_publish.text)

ls_Author=trim(sle_author.text)

ls_Words=integer(sle_words.text)

ls_PublisherID=long(sle_publisherid.text)

ls_Number=integer(sle_number.text)

ls_price=trim(sle_price.text)

ls_Keyword=trim(sle_keyword.text)

ls_Abstract=trim(sle_abstract.text)

ls_flag1=0

selectBookInfo.BookID

into:

ll_i

fromBookInfo

whereBookInfo.BookID=:

ls_BookID;

ifll_i<>0then

messagebox("信息错误","图书编号第"+string(ll_i)+"号重号!

请改正")

sle_bookid.text=""

sle_BookID.text=""

sle_ISBN.text=""

sle_Title.text=""

sle_Publish.text=""

sle_Author.text=""

sle_Words.text=""

sle_PublisherID.text=""

sle_Number.text=""

sle_price.text=""

sle_Keyword.text=""

sle_Abstract.text=""

sle_bookid.setfocus()

return

endif

INSERTINTO"BookInfo"

("BookID",

"ISBN",

"Title",

"Publish",

"Author",

"Words",

"PublishID",

"Number",

"Price",

"Keyword",

"Abstract")

VALUES(

:

ls_BookID,

:

ls_ISBN,

:

ls_Title,

:

ls_Publish,

:

ls_Author,

:

ls_Words,

:

ls_PublisherID,

:

ls_Number,

:

ls_price,

:

ls_Keyword,

:

ls_Abstract);

sle_bookid.text=""

sle_BookID.text=""

sle_ISBN.text=""

sle_Title.text=""

sle_Publish.text=""

sle_Author.text=""

sle_Words.text=""

sle_PublisherID.text=""

sle_Number.text=""

sle_price.text=""

sle_Keyword.text=""

sle_Abstract.text=""

sle_bookid.setfocus()

messagebox("提示信息","数据插入成功")

说明:

在定义变量的时候,要特别注意其字符类型和数据库里所建表的数据类型保持一致。

同时要判断所输入的图书信息主码是否为空,如果为空则提示错误信息。

同时还需判断BookInfo表中的图书信息的图书编号与所输入的图书信息是否有重号,如果重号则提示错误信息。

2)旧书销毁:

stringll_i

stringls_bookid

ls_bookid=trim(sle_id.text)

ifsle_id.text=""orisNull(sle_id.text)then

messagebox("删除失败","要删除的旧书号不可为空,请输入书号。

")

sle_id.setfocus()

return

endif

selectBookInfo.BookID

into:

ll_i

fromBookInfo

whereBookInfo.BookID=:

ls_bookid;

ifll_i=""then

messagebox("删除结果","删除失败,此书不存在。

")

sle_id.setfocus()

return

endif

deletefromBookInfo

whereBookInfo.BookID=:

ls_bookid;

messagebox("删除结果","删除成功!

")

dw_id.deleterow(0)

sle_id.text=""

sle_id.setfocus()

说明:

其代码和新书入库的代码相似。

4、图书检索窗口

1)按作者姓名查询:

stringIs_author,II_n

Is_author=trim(sle_author.text)

selectAuthor

into:

II_n

fromBookInfo

whereAuthor=:

Is_author;

ifsle_author.text=""then

messageBox("数据不全","请输入作者姓名")

return

endif

ifII_n=""then

messageBox("数据错误","没有这个作者")

return

elseifII_n<>""then

dw_author.retrieve(Is_author)

return

endif

sle_author.setfocus()

说明:

按书名、以及按关键字查询的代码与上述相近。

特别主要的是在按出版社名称查询选项页中设计数据窗口对象时要把BookInfo相连。

5、图书租借窗口

1)借书

借书:

longll_jieshu,ll_tushu,Il_m,Il_b,Il_a,Il_i,Il_n,Il_d

datetimeloandt

dateld_datetime

ll_jieshu=long(sle_jieshuid.text)

ll_tushu=long(sle_tushuid.text)

ld_datetime=today()

loandt=datetime(ld_datetime)

ifsle_jieshuid.text=""oriSNull(sle_jieshuid.text)then

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

sle_jieshuid.setfocus()

return

elseifsle_tushuid.text=""oriSNull(sle_tushuid.text)then

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

sle_tushuid.setfocus()

return

endif

selectbookinfo.bookid

into:

Il_m

frombookinfo

wherebookinfo.bookid=:

ll_tushu;

ifIl_m<>ll_tushuthen

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

")

sle_jieshu.setfocus()

return

endif

//判断图书是否被借出

selectbookinfo.flag

into:

Il_b

frombookinfo

wherebookinfo.bookid=:

ll_tushu;

ifIl_b=1then

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

")

return

endif

selectCertificateInfo.cert_id

into:

Il_n

fromCertificateInfo

whereCertificateInfo.cert_id=:

ll_jieshu;

ifIl_n<>ll_jieshuthen

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

")

sle_jieshu.setfocus()

return

endif

//说明如果flags=2时则此证已被挂失,如果flags=0则没有挂失

selectcertificateinfo.flag

into:

Il_d

fromcertificateinfo

wherecertificateinfo.cert_id=:

ll_jieshu;

ifIl_d=2then

messagebox("信息错误","此证已被挂失!

")

return

endif

//判断权限

//selectCertificateInfo.flag

//into:

Il_a

//fromCertificateInfo

//whereCertificateInfo.cert_id=:

ll_jies

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

当前位置:首页 > 高等教育 > 其它

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

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