文档库

最新最全的文档下载
当前位置:文档库 > VF课程设计报告

VF课程设计报告

** 科技学院

课程设计说明书

(数据库实用技术)

班级: 计算机Z09-1 学号:

姓名:

设计题目: 图书管理系统

设计时间: 2011-7-4 至2011-7-13

指导教师: 杨月江

评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩: 评阅教师:

目录

一、需求规格说明书

◇系统概述

◇功能需求描述

二、概要设计说明书

◇系统模块结构图

三、数据库设计说明书

1、创建项目

2、数据表的创建

3、在项目中创建一个数据库

4、系统功能设计

5、在项目管理器中创建菜单

6、在项目管理器创建主程序

四、用户使用说明

1、用户登陆界面说明

2、系统主页面说明

3、借书界面说明

4、图书管理界面说明

5、图书流通统计界面说明

6、点击主菜单打印说明

7、密码修改界面说明

8、修改单位名称界面说明

9、点击主表单“关于”按钮说明

五、收获体会

六、总结

七、附录

◇程序源代码、注释

◇参考书目:

一、需求规格说明书

◇系统概述

图书管理系统可以为学校或院系的图书馆管理部门提供基本的图书管理,从而帮助图书管理人员能够对图书管理的业务流程进行高效的管理,这些管理包括:

1.图书的管理,包括图书的增加、修改、删除、浏览管理。

2.对图书信息进行管理,包括借阅、归还管理。

3.根据不同的条件设置对图书进行查询。

4.图书信息的打印。

5.读者的管理,包括添加新读者,修改、删除、浏览管理读者信息。

6.根据不同的条件设置对读者进行查询。

7.管理员管理,主要是管理员的口令管理和修改本系统的单位名称。

◇功能需求描述

图书管理系统的功能需求有如下几个方面:

1、图书借阅管理:实现将指定的图书借给指定的读者。

2、图书归还管理:对于已经借到图书的读者,可以归还指定的图书。

3、图书信息管理:可以将新的图书信息添加到数据库中;可以修改图书的基本

信息,除图书编号之外的其他信息均可以进行修改;删除已不存在的书籍信息。

4、图书查询:可以根据各种组合条件进行图书查询,比如根据书名、图书的出

版社单位等条件进行查询。

5、读者信息管理:主要是将新读者信息添加到数据库中,需要添加的信息有用

户的姓名、性别、年龄、所在班级、所借图书等信息。

6、综合查询功能:包括对图书和读者指定字段的查询。

7、打印功能:将库存图书进行打印。

8、登录管理功能:管理员可以输入密码登录系统,同时管理员也可以修改自己

的口令。

二、概要设计说明书

作为给小型图书管理部门使用的图书管理系统,本系统界面遵循简单设计的原则,尽可能的简化操作步骤。同时考虑到方便性,增加了查询的手段,增加了打印的功能。为了增加系统的可用性,还需要增加管理员的角色,从而更好的满足图书管理的一般需求。

◇系统模块结构图

依据需求分析结果,图书管理系统包括:

A.操作管理

B.数据管理

C.打印报表

D.设置

E.帮助

共五个主要的功能模块,系统结构如图所示:

三、数据库设计说明书

1、创建项目,名为tsgl 、创建项目,

2、数据表的创建(在项目管理器中创建) 根据功能要求的说明创建下列数据表:

Book_recno.dbf 借书登记表结构

字段名称 字段类型

字段说明 TSBH C (25) 图书编号 TXM C (13) 条形码 SM C (20) 书名 BH C (10) 编号 XM C (10) 姓名 JSBZ C (4) 借书标志 JSSJ D (8)

借书日期

Book_table.dbf 图书资料表结构

字段名称 字段类型 字段说明 TSBH C (25) 图书编号 TXM C (13) 条形码 SM C (20) 书名 ZZ

C (20)

作者

图书管理系统

帮助

设置

打印报表

数据管理

操作管理

还书

借书

图书管理 读者管理

图书流通统计

资料浏览

密码修改

名称设置 退出

关于

CBS C(40) 出版社CBSJ D(8) 出版时间LB C(20) 类别XCSL N(3) 现存数量TSZS N(3) 图书总数RGSJ D(8) 入馆时间TSJG N(8,2) 价格ZCCS N(5) 借出次数JSQX N(2) 借书时限

B_table.dbf读者类别查询中间表结构

字段名称字段类型字段说明CHINA_LB C(10)中间字段LB C(15)中间字段

Group_table.dbf图书类别查询中间表结构

字段名称字段类型字段说明CHINA_LB C(10)中间字段LB C(15)中间字段

Pass_word.dbf管理员ID密码表结构

字段名称字段类型字段说明GLY_ID C(10)管理员ID MM C(10)管理员密码GLY_NAME C(10)管理员姓名

User_table.dbf读者资料表结构

字段名称字段类型字段说明BH C(10)编号

XM C(10)姓名

XB C(2)性别DWBM C(20)单位部门ZZ C(40) 住址

YJSS N(4) 已借书数BZ C(20) 备注

LB C(10) 职业DJRQ D(8) 登记日期JSRQ D(8) 借书日期HSRQ D(8) 还书日期

Mcsc.dbf修改图书管理系统单位名称表结构

字段名称字段类型字段说明

No_1 C(30)图书管理系统单位名称

3、在项目中创建一个数据库,并把book_table、book_recno、user_table表添加到数据库中。在book_table表中,为tsbh建立主索引,为book_recno表tsbh 建立普通索引,通过该索引和book_table表之间创建关联;在user_table表中,为 bh设置主索引,在book_recno表中,bh为普通索引,通过该索引和user_table 表之间创建关联。

4、系统功能设计(在项目管理器创建表单,实现以下功能)

(1)登陆功能

系统登录:本系统的使用人员在输入了正确的借书证号和密码后,才能进入该系统。管理人员输入用户名:li 密码:li可以进入。

(2)借书功能

进入系统可以根据书名或条形码进行查询图书,根据读者编号借阅图书,借书时有借书数量的限制。

(3)还书功能

进入系统可以根据书名或条形码进行查询所还的图书,根据读者编号返还图书,还书超期有罚款处理

(4)图书管理功能

图书信息管理提供图书的浏览功能、简单的查询功能、添加图书功能和删除图书功能。

(5)读者管理功能

读者信息管理模块提供读者信息的浏览功能、简单的查询功能、添加读者功能和删除读者功能。

(6)图书流通统计功能

图书流通统计功能实现按书名、书号、作者、出版社等统计借阅量;

按个人借书号、姓名等统计个人借书情况;

按借书人所在单位或部门统计该单位或部门的借书情况。

(7)资料浏览功能

浏览所有图书信息和读者信息

(8)密码修改功能

实现密码的维护(可以更改用户名和密码)

(9)名称设置功能

修改图书系统单位名称

(10)打印功能

打印模块提供图书信息的打印。

(11)退出功能

离开本图书馆管理系统。

5、在项目管理器中创建菜单,生成菜单程序,通过调用程序,为顶层表单添加菜单。

6、在项目管理器创建主程序,连编。

四、用户使用说明

1、用户登陆界面,输入ID号li,密码li,点击“确定”即可进入主页面。

VF课程设计报告

2、系统主页面

VF课程设计报告

3、借书界面:输入编号或条形码选择对应的查询,点击“确定”,显示相应图书资料,再输入读者编号,显示相应读者信息,最后点击“借出当前图书”即可借阅。还书操作与借书操作类似,这里不再介绍。

VF课程设计报告

4、图书管理界面:输入编号或条形码选择对应的查询,点击“确定”,即可查询相应图书资料;点击“<=”可查询上一条图书信息;点击“=>”可查询下一条图书信息;点击“删除”可以删除当前图书信息;点击“增加”可以增加一条图书信息。读者管理操作与图书管理操作类似,这里不再介绍。

VF课程设计报告

5、图书流通统计界面,点击对应页面,可以分别实现统计借阅量,读者个人借阅信息,单位借阅情况。

VF课程设计报告

6、点击主菜单打印,即可打印图书资料。

VF课程设计报告

7、密码修改界面,通过填写id和密码,即可改变登录时的id和密码。

VF课程设计报告

8、修改单位名称界面,填写后,下次启动系统,系统所显示的名称及当前填写的名称。

VF课程设计报告

9、点击主表单“关于”按钮,可以了解本制作本系统的更多信息。

VF课程设计报告

五、收获体会

将近两个星期的数据库实用技术的课程设计,从头到尾的实践和体验,对于我们来说学到的不仅是那些知识,更多的是团队和合作。写到收获及体会时感触颇深,也许学校安排的课程设计有着更深层的意义。它不仅让我们综合那些理论知识来运用到设计和创新,还让我们知道了一个团队凝聚在一起所能发挥出的巨大潜能!

通过这次课程设计,使我们学到了一些以前没有学过的知识,使我们对数据库程序设计有了更深层次的认识和理解,懂得了灵活运用。在计算机飞速发展的今天,懂得一门计算机技术是非常必要的。同时,我们也清醒的认识到,只要自己肯努力,愿意去付出劳动,就能够得到属于我们自己所期望的东西。这次课程设计遇到的问题远比想象的多,没想到这项看起来很简单的课题却是需要非常多的耐心和精力,在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的资料是非常必要的,同时也是必不可少的。在这次课程设计中我们运用到了以前所学的专业课知识,如select_sql查询,记录的维护命令等。在设计的同时,我们还发现了自己的不足之处,对以前所学的知识理解的不够深刻、掌握的不够牢固。而且即使感觉自己的理论上已经掌握,但运用到实践过程中仍有意想不到的困难,比如数据库表的字段级验证,看似简单的问题,却费了好大的功夫,经过一番努力才得以解决;

在做“图书管理”表单时,对于追加新纪录INSERT命令,本以为自己掌握的很好,但运用起来,却是很费劲,经过多次的的改正,才使得增加新纪录得以完善;在做“关于菜单”时,由于字幕是滚动的,运用了计时器控件,也是因为缺乏实践,计时器的属性INTERVEL的大小设置,ENABLED的设置,也反复改了好几次。虽然完成这次设计困难重重,但这也激发了我们今后努力学习的兴趣。最后,在此由衷的向我们的指导老师杨月江表示感谢,每次遇到自己解决不了的问题时,他都会面带慈祥的微笑细心地给我们讲解,他教会我们的不仅是知识,还有方法。是他悉心的指导和严格的要求,才使我们的课程设计有了较为完善的一面;是他严谨的治学态度,才有了我们能力的提高。在杨老师的帮助与指引下,使我们得到了充分的锻炼。

六、总结

方法的优、缺点的分析,存在问题,及改进方法:

(1)本图书系统操作方便简单,基本符合图书管理的各种操作。可以减轻图书管理人员的工作量。

(2)本图书管理系统属于小型系统,数据量不是很丰富。

(3)借书、还书时,只能通过条形码或图书编号查询图书,可以添加按书名、作者、出版社查询。

(4)图书管理和读者管理只能简单的浏览信息,一条一条的浏览信息,可以增加复杂的查询功能,按管理员要求同时显示多条符合要求的记录。

七、附录:程序源代码、注释及参考书目

◇程序源代码、注释:

Main_Tsgl.prg

close all

clear all

SET SYSMENU TO

public m_js,m_hs,tsgl

m_js=.t.

m_hs=.t.

sele 1

use book_table

sele 2

use group_table

sele 3

use b_table

sele 4

use user_table

sele 5

use mcsc

sele 6

use pass_word

sele 7

use book_recno

sele 5

go bottom

store mcsc.no_1 to s

_screen.caption=s

do form login_form

read events

&&当发出 READ EVENTS 时,Visual FoxPro 开始进行事务处理,如果没有这条命令,程序就会一闪而过,什么操作都操作不了

Login_form.scx

sele 6

if gly_id!=allt(thisform.text1.value)

messagebox('登陆id错误',0+16+0,'提示')

thisform.text1.setfocus

endif

if mm!=allt(thisform.text2.value)

messagebox('密码错误',0+16+0,'提示')

thisform.text2.setfocus

endif

if gly_id=allt(thisform.text1.value) and mm=allt(thisform.text2.value)

do login_app

thisform.release

endif

login_app.prg

do form tsgl.scx

do menu_tsgl.mpr with tsgl,.t.,.t.

jies.scx

查询图书信息的“确定”,确定读者信息的“确定”,“借出当前图书”的CLICK事件代码:sele 1

if thisform.optiongroup1.option1.value=0

locate for txm=allt(thisform.text2.value)

if not found()

messagebox('没有该图书条形码',0+64+0,'提示')

go top

else

http://www.wendangku.net/doc/87a64d214b35eefdc8d33379.htmlmand3.enabled=.t.

endif

endif

if thisform.optiongroup1.option1.value=1

locate for tsbh=allt(thisform.text1.value)

if not found()

messagebox('没有该图书编号',0+64+0,'提示')

go top

else

http://www.wendangku.net/doc/87a64d214b35eefdc8d33379.htmlmand3.enabled=.t.

endif

endif

thisform.refresh

sele 4

locate for bh=allt(thisform.text3.value)

if not found()

messagebox('没有该读者编号',0,'提示')

go top

else

http://www.wendangku.net/doc/87a64d214b35eefdc8d33379.htmlmand5.enabled=.t.

thisform.txtbh.enabled=.t.

thisform.txtxm.enabled=.t.

thisform.txtjsrq.enabled=.t.

thisform.txtxb.enabled=.t.

thisform.txthsrq.enabled=.t.

endif

thisform.refresh

nanswer=messagebox('确认所借书目无误么?',4+32+0,'重要提示')

do case

case nanswer=6

sele 1

*use book_table

if xcsl=0

messagebox('该图书已无库存')

return .t.

else

sele 4

if yjss>5

messagebox('你的借书数目已超过5次,不能再借')

return .t.

else

sele 1

replace xcsl with xcsl-1,zccs with zccs +1

insert into book_recno(Tsbh,Txm,Sm,Bh,Xm,Jsbz,Jsrq) values(allt(thisform.txttsbh.value),allt(thisform.txttxm.value),allt(thisform.t xtsm.value),allt(thisform.txtbh.value),allt(thisform.txtxm.value),'借出',date())

sele 4

use user_table

replace yjss with yjss+1

*use

endif

endif

case nanswer=7

endcase

sele 6

thisform.text4.value=gly_name

tushugl.scx

查询图书信息的“确定”的CLICK事件代码:

sele 1

if thisform.optiongroup1.option1.value=0

locate for txm=allt(thisform.text2.value)

if not found()

messagebox('没有该图书条形码',0+64+0,'提示') go top

endif

endif

if thisform.optiongroup1.option1.value=1

locate for tsbh=allt(thisform.text1.value)

if not found()

messagebox('没有该图书编号',0+64+0,'提示')

go top

endif

endif

thisform.refresh

命令按钮组command1的CLICK事件代码:

sele 1

skip-1

if not bof()

thisform.refresh

else

go bottom

thisform.refresh

endif

命令按钮组command2的CLICK事件代码:

sele 1

skip

if not eof()

thisform.refresh

else

go top

thisform.refresh

endif

命令按钮组command3的CLICK事件代码:

sele 1

x=messagebox('真的要删除此图书信息?',4+32+256,'重要提示') if x=6

delete

pack

else

return .f.

endif

命令按钮组command4的CLICK事件代码:

sele 1

append blank

go bottom

thisform.refresh

命令按钮组command5的CLICK事件代码:

thisform.release

shuminghuizong.scx

page1的optiongroup1的click代码:

sele 1

do case

case this.value=1

total on tsbh to tsbhtj fields zccs

use tsbhtj

browse fields tsbh:h='图书编号',zccs:h='借出次数'

case this.value=2

total on txm to txmtj fields zccs

use txmtj

browse fields txm:h='条形码',zccs:h='借出次数'

case this.value=3

total on cbs to cbstj fields zccs

use cbstj

browse fields cbs:h='出版社',zccs:h='借出次数'

case this.value=4

total on zz to zztj fields zccs

use zztj

browse fields zz:h='作者',zccs:h='借出次数'

endcase

page2的“确定”的click代码:

s=allt(thisform.pageframe1.page2.text1.value)

sele 7

set filter to

do case

case thisform.pageframe1.page2.optiongroup1.value=1

set filter to bh=s

browse fields bh:h='读者编号',xm:h='读者姓名',sm:h='所借书名',jsbz:h='借书标志',jsrq:h='借书日期'

case thisform.pageframe1.page2.optiongroup1.value=2

set filter to xm=s

browse fields xm:h='读者姓名',bh:h='读者编号',sm:h='所借书名',jsbz:h='借书标志',jsrq:h='借书日期'

endcase

set filter to

page2的“确定”的click代码:

s=allt(thisform.pageframe1.page3.text1.value)

select book_recno.sm,book_recno.xm,book_recno.jsbz,user_table.dwbm from book_recno,user_table;

where book_recno.xm=user_table.xm and user_table.dwbm=s into dbf daweijieyue use daweijieyue.dbf

browse

pass_word.scx

页面“确定”的click代码:

store allt(thisform.text1.value) to dl_1

store allt(thisform.text2.value) to dl_2

if dl_1#dl_2

messagebox('登录号码不统一',0,'提示')

endif

store allt(thisform.text3.value) to dl_3

store allt(thisform.text4.value) to dl_4

if dl_3#dl_4

messagebox('登录密码不统一',0,'提示')

endif

if dl_1=dl_2 and dl_3=dl_4

update pass_word set gly_id=dl_1 &&where gly_name=allt(demo[1,3])

update pass_word set mm=dl_3 &&where gly_name=allt(demo[1,3])

endif

messagebox(“恭喜您,修改密码成功!”)

◇参考书目:

作者书名出版社

李人贤任务驱动式Visual FoxPro实践教程清华大学出版社

肖金秀Visual FoxPro程序设计与实例教程冶金工业出版社

金钟为Visual FoxPro应用技能教程(下册)哈尔滨工业大学出版社许向荣Visual FoxPro项目开发实用案例科学出版社