资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2020年5月29日星期五,#,01 十一月 2024,第11章项目设计实例,学习目的与要求,通过学习项目,“,图书管理系统,”,的设计过程,掌握Visual FoxPro的应用方法。,11.1 可行性和需求分析,1)引言,(1)编写目的,随着信息技术的广泛应用,数字化管理的优势日趋显著,针对中小型图书馆或图书室管理落后的情况,设计实现一个图书信息管理系统,通过与计算机的结合使用,对各种图书信息进行管理可以给管理员和读者带来很多便捷:查找方便、可靠性高、存储量大、寿命长、成本低等,这些优点能够极大地提高工作效率,也是图书管理科学化、正规化的重要标志之一。,(2)背景,开发软件名称:图书管理系统。,用户:中小型图书馆或图书室,1.可行性分析,2.可行性研究的前提,(,1)要求,功能:负责图书、读者信息的编辑及查询,借阅/归还图书的管理。,性能:借阅、归还的记录正确,流通图书速度快、效率高,操作方便、快捷。,(2)目标,方便图书信息、读者信息以及图书借阅的高效管理。,(3)条件、环境,硬件条件:PC机。,运行环境:Windows操作系统。,开发软件:Visual FoxPro 6.0。,(4)效益成本,技术可行,现有技术完全胜任开发任务;操作可行,软件能被操作人员快速接受。(5)结论,综上分析,开发图书管理系统不仅有着很大的经济效益,而且有着更大的社会效益。该系统的开发,不仅可以节省大量的资源,而且可以大大地提高工作效率,因此该项目的开发前景可观。,2.需求分析,1)引言,开发图书管理系统的宗旨是提高图书管理工作的效率,减少相关人员的工作量,使学校的图书管理工作真正做到科学、合理的规划,系统、高效的实施。本系统的通用性、可实用性较强,用以提高图书信息的现代化管理水平,实现信息资源的共享。,2)系统功能,管理:图书管理、读者管理、借阅/归还管理。,查询:图书查询、读者查询、借阅查询。,11.2 系统设计,1.设计思想,1)采用模块化设计,本系统采用模块化的程序设计,将各个功能分解为相互独立的模块,这样既便于系统各功能的组合和修改,又便于后期的维护和各功能的完善和补充。,2)系统操作简单、方便、实用,本系统各模块的操作简单方便,操作员可以快速地完成各种操作,从而提高工作效率。,3)系统能够进行数据维护,用户可以根据需要进行数据的添加、修改等操作。,2.系统功能分析,本系统提供了三大功能,即图书信息管理、读者信息管理、图书借阅/归还管理。,1)图书信息管理,本模块可以实现对图书信息的维护功能。对于新图书,可编制图书编号,将图书的相关信息加入数据表中;还可以修改图书的相关信息。,2)读者信息管理,本模块可实现对读者信息的维护功能。对于新读者,可编制其图书证编号,并将读者的相关信息录入数据表中,还可以修改读者的相关信息。,3)图书借阅/归还管理,本模块可实现对图书的借阅/归还信息的维护功能。对于借阅图书,只需确定图书证号和图书编号即可完成借阅的信息管理;归还图书时,根据图书证号、图书编号自动确认归还日期是否超期。,3.系统功能模块设计,4.数据库设计,本系统的数据库名为“图书管理系统.dbc”。,1)数据表结构,(1)图书信息表,将所有图书的信息保存在本表中,表文件名称为book.dbf,,字段名称,类 型,字段长度,用 途,Bookid,字符型,20,图书编号,Bookname,字符型,60,图书名称,Editor,字符型,8,作者,Price,数值型,5.0,价格,Publish,字符型,30,出版社,Pubdate,日期型,8,出版日期,Qty,数值型,10,库存量,表 book.dbf表的结构,2)读者信息表,所有读者的信息均存放在本表中,表文件名称为reader.dbf。,表 字 段,类 型,长 度,用 途,Cardid,字符型,10,图书证编号,Name,数值型,8,读者姓名,Class,字符型,8,读者类别,Dept,字符型,20,所属部门,Sex,字符型,2,性别,3)图书借阅/归还记录表,图书借阅/归还记录信息均存放在本表中,表文件名称为borrow.dbf.,表字段,类型,长度,用途,Cardid,字符型,10,图书证编号,Bookid,字符型,10,图书编号,Bdate,日期型,8,借书日期,Sdate,日期型,8,还书日期,2)数据库的创建,打开项目文件“图书管理.pjx”,“新建”数据库,数据库名称为“图书管理系统”,将表book.dbf、reader.dbf和borrow.dbf添加入数据库中,成为数据库表.,3).创建与编辑主文件main.prg,在“代码”/“程序”下,新建程序文件main.prg并右击,将main.prg设置为“主文件”,即系统启动后执行的第一个文件,主文件以黑体显示。,4).连编项目,单击项目管理器右侧的“连编”按钮。,在“连编选项”对话框中的“操作”选项组中,选择“连编可执行文件”单选按钮;在“选项”选项组中,选择“重新编译全部文件”和“显示错误”复选框,然后单击“确定”按钮,如图11-5所示。,主文件的名称为main.prg,代码如下:,*,Clear&清屏,clear all&从内存中释放所有的内存变量,close all&关闭各种类型的文件,set escape off&禁止运行的程序和命令在按 Esc 键后被中断,set safety off&指定在改写已有文件时不显示对话框,set delete on&使用范围子句处理记录的命令忽略标有删除标记的记录,set sysmenu off&在程序执行期间废止 Visual FoxPro 主菜单栏,release window 常用&关闭常用工具栏,set century on&年份以四位显示,set date to ansi&日期格式为年、月、日,set hours to 24&指定为24小时时间格式,_Screen.visible=.f.&屏蔽Visual FoxPro的主窗口,do form form_menu&调用主表单 form_menu.scx,read events&建立事件循环,*,11.3 程 序 代 码,2.主窗口模块代码,1)下拉式菜单的创建及设置,在项目管理器中,选择“其他”,|“菜单”项目,单击“新建”按钮,在菜单设计器中输入以下菜单项。,(1)主菜单项“图书借阅管理”的“结果”选择“过程”,其中的代码如下:,do form form_borrow.scx,(2)主菜单项“图书信息管理”的“结果”选择“子菜单”,再单击“编辑”按钮,其子菜单的结构如图,其中,“添加图书信息”和“修改图书信息”的结果均为“过程”。“添加图书信息”过程的代码如下:do form form_add_book.scx,“修改图书信息”过程的代码如下:do form form_edit_book.scx,(3)主菜单“读者信息维护”的子菜单结构如图所示:,其中,“添加读者信息”和“修改读者信息”的“结果”均为“过程”。“添加读者信息”过程的代码如下:do form form_add_reader.scx,“修改读者信息”过程的代码如下:do form form_edit_reader.scx,(4)主菜单项“退出系统”的“结果”为“过程”,其代码如下:,result=messagebox(是否退出【图书管理系统】?,4+32+256,提示),IF result=6,close all,clear events&退出事件循环,quit&结束当前 Visual FoxPro 工作期,ENDIF,(5)设置下拉式菜单的常规选项属性,选择“显示”|“常规选项”,在对话框中选中“顶层表单”复选框,如图所示。,(6)生成菜单程序文件。选择“菜单”|“生成”命令,生成菜单的程序文件“main_menu.mpr”,如图所示。,2表单的设置及属性,主窗口的表单文件名称为,form_menu.scx,主要用途是为操作提供一个便捷的操作界面。表单的主要属性如表所示。,属性,属性值,用途,Autocenter,.t.,表单启动后自动位于屏幕中央,Caption,图书管理系统,表单的标题栏,Controlbox,.f.,取消表单右上角的控制按钮,Showwindow,2,作为顶层表单,表单form_menu的主要属性,在本表单上需要调用下拉式菜单,实现方法:在表单的init事件中输入代码,do main_menu.mpr with this,.t.,3.图书信息管理模块代码,图书信息管理模块包含两个功能:“添加图书信息”和“修改图书信息”。“添加图书信息”的表单文件名为form_add_book.scx,“修改图书信息”的表单文件名为form_edit_book.scx。,1)表单的属性设置,在“添加图书信息”和“修改图书信息”表单的数据环境中分别加入表book.dbf。“添加图书信息”及“修改图书信息”表单的主要属性如表所示:,属 性,属 性 值,用 途,Autocenter,.t.,表单启动后位于屏幕中央,Controlbox,.f.,取消表单右上角的控制按钮,Showwindow,1,位于顶层表单中,(2)“添加图书信息”表单的控件信息如表所示。,控 件,用 途,Text1,输入图书编号,Text2,输入图书名称,Text3,输入作者,Text4,输入出版社,Text5,输入出版日期,Text6,输入价格,Text7,输入库存量,Grid1,显示已有的图书信息,Command1,保存录入的图书信息,Command2,退出表单,(3)“添加图书信息”表单的运行效果如图所示,。,(,4)相应代码。,填写完图书信息后,单击“保存信息”按钮即可保存信息,对应的则是命令按钮Command1的Click事件,执行的代码如下:,&将控件的信息存储到变量中,book_id=alltrim(thisform.text1.value),book_name=alltrim(thisform.text2.value),book_editor=alltrim(thisform.text3.value),book_publish=alltrim(thisform.text4.value),book_pubdate=ctod(alltrim(thisform.text5.value),Book_price=val(alltrim(thisform.text6.value),book_kcl=val(alltrim(thisform.text7.value),&执行插入记录的SQL语句,insert into book(bookid,bookname,editor,price,pubdate,publish,qty)values(book_id,book_name,book_editor,book_price,book_pubdate,book_publish,book_kcl),thisform.refresh,&信息提示,r=messagebox(信息添加成功!,0+64,信息提示,要退出“添加图书信息”表单,可以单击“退出”按钮,对应的是命令按钮Command2的Click事件,执行的代码如下:,Thisform.release,(5)“修改图书信息”的控件信息如表所示。,控 件,用 途,Grid1,显示当前已有的图书信息,Text1,显示图书编号,Text2,显示图书名称,Text3,显示作者,Text4,显示出版社,Text5,显示出版日期,Text6,显示价格,Text7,显示库存量,Command1,保存修改的图书信息,Command2,退出表单,(6)“修改图书信息”表单的运行效果,4.读者信息管理模块代码,读者信息管理模块包含两个功能:“添加读者信息”和“修改读者信息”。“添加读者信息”的表单文件名为form_add_reader.scx,“修改读者信息”的表单文件名为f
展开阅读全文