书店管理系统
课程名称:空间数据库基础
专 业:测绘工程
班 级:0614122
设 计 组:第13组
设 计 者:卢仁志 郑佳 胡远汕 张育恺
指导教师:苗东利、牛磊、宋自影、邢晓娜
设计时间:2014年1月
河南城建学院
测绘工程学院
目录
一、 课题及任务 2
1、课题简介 2
2、任务分派 2
二、 系统需求分析调查 3
1、系统需求分析 3
2、系统功能简介 4
三、系统设计 5
1、系统的总体设计 5
2、系统详细设计 6
3、数据库设计 7
四、系统实施 10
1、数据资源 10
2、主程序设计 12
3、主要工作窗口 12
4、菜单设计 23
五、设计体会 25
六、参考文献 26
一、 课题及任务
1、课题简介
本系统利用VB处理数据库的功能,实现对网上书店信息的管理。主要功能为管理有关顾客、出版社、书籍、订单、库存和管理者的信息等。
本系统的结构分为顾客信息管理模块、出版社信息管理模块、书籍信息管理模块、订单信息管理模块、库存信息管理模块、管理者管理信息模块、报表显示模块和查询处理模块
2、任务分派
本组共有卢仁志、郑佳、胡远汕、张育恺四位成员。经过四人对本系统的简单讨论,均同意如下的任务分派:由卢仁志负责启动、登录、主界面、查询等多个表单的建立,郑佳负责数据维护表单和菜单的建立,胡远汕负责数据浏览表单和报表的建立,张育恺负责本系统所需要的数据库和数据表的设计工作,最后,由卢仁志负责系统的连编和课程设计报告的编写。
二、 系统需求分析调查
1、系统需求分析
需求分析的基本任务是准确的回答“系统必须做什么?”这个问题。虽然在上一个阶段已经粗略的了解了用户的需求,但还是会遗漏一些细节方面的问题。所以需求分析这一阶段的研究必不可少,而且,它在整个系统开发过程中占有非常重要的地位。
(1)、分析系统的数据要求
分析系统的数据要求分析系统的数据要求分析系统的数据要求分析系统的数据要求 任何一个系统本质上都是信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定了系统的面貌,对软件设计有深远的影响。因此,必须分析系统的数据需求,这是软件需求分析的一个重要任务。 复杂的数据由许多基本的数据元素组成,数据结构表示数据元素之间的关系。利用数据字典何以全面准确的定义数据,但是数据字典的缺点是不够形象直观。因此,数据流程图能够很方便的表明整个系统的功能,数据在系统中传输的路径。需求分析阶段的一个重要而困难的任务是收集将来应用所涉及的数据,所以要在此阶段就要充分考虑到可能的扩充和改变,使设计易于更改,系统易于扩充。另外,在数据分析阶段,必须强调用户的参与,要与用户保持密切的联系,任何调查研究没有用户的积极参加是寸步难行的。 在此阶段,我主要是做了一些了解书店销售方面的数据的查阅和设计工作,积极参与到实际的销售过程当中,不断与小组成员交流意见。
(2)、功能需求分析
根据当前的书店管理体制,一般书店的销售管理系统,总是根据掌握的书籍类别,相应分成几个科室来进行的销售,进货,核销托收,验收入库,并随时按期进行库存盘点,作台帐,根据书店自身管理的需要按月,季,年进行统计分析,产生相应的报表。但是这样的人工操作管理既浪费人力,财力,又浪费时间,严重影响了图书管理的效率。本章根据当前的书店机制,把书店销售管理系统划分为如下几个功能:交易管理,包括进货登记管理,销售登记管理,退货登记管理;进货统计管理,其中包括有关进货的各种统计数据表,如今日进货统计,本月进货统计,本极度进货统计,本年度进货统计等;销售统计管理,其中包括有关销售的各种统计数据表,如今日销售统计,本月销售统计,本极度销售统计,本年度销售统计等:员工销售业绩的考核,可以很方便的查看各员工的销售情况,以便对各员工的业绩进行考核比较.同时,为了能够更好的了解书店各方面情况,以便于经营管理。还需要几个信息表来显示诸如库存,出版商,员工信息等内容的功能。基于安全性的考虑,本系统还将登陆的情况下,各个功能是不可用的。
2、系统功能简介
(1).信息管理,包括图书信息管理,出版商信息管理,管理员信息管理。
(2).销售管理,其中包括有关书籍的各种统计数据表,如书籍的销售情况,销售日期,管理员,书籍市场分析,书籍的订货情况等。
(3).为了满足一些特殊的要求,本系统还添加了一些报表打印功能,例如书籍信息单,管理员信息单,销售信息单等。
(4).为了让使用本系统的人员对本系统有一个比较粗略的认识,我们在系统中还添加一个“关于”的表单,用于介绍本系统的基本情况。
(5).为了能够更好的应用本系统,方便销售人员或其它相关工作者进行操作,同时,为了系统的大方美观,本系统设置一个顶层表单,以承载菜单。
(6).基于安全性的考虑,本系统还提供一个管理员登录的功能。
三、系统设计
1、系统的总体设计
为了便于观察清晰,方便查看,现用系统设计流程图对系统总体设计进行说明,系统设计流程图如下:
2、系统详细设计
本系统共分为四个功能模块,分别为查询功能模块、浏览功能模块、维护功能模块、报表打印功能模块。另外还有登录、主界面、关于三个表单,同时,在书店管理系统主界面调用自制的菜单,其中菜单共分为四个一级菜单、十个二级菜单、十五个三级菜单。其中,查询功能模块包括书本信息查询、出版商信息查询、管理员信息查询和销售查询,浏览功能模块包括书本信息浏览、出版商信息浏览、管理员信息浏览、、销售情况浏览,维护功能模块包括出版商信息维护、管理员信息维护、市场信息维护、订单情况维护和销售情况维护。除此之外,系统中的关于表单用来简单介绍本系统的一些基本情况,如开发团队、系统的开发目的、系统的完成日期、一些界面的特点介绍等等,旨在为使用本系统的人员提供一个认识平台。登录表单用来设置用户权限的,当用户名和密码有一个出现错误,就不能进入本系统,更不能使用本系统。欢迎界面只是系统的一个封面而已,吸引别人的关注和点击,除此之外没有其他的任何实用功能
3、数据库设计
要想完整开发出本系统,需要建立一个数据库,并包含系统所需要的数据表。经过我们小组成员的整体讨论,我们决定建立一个“书店管理系统数据库”,其中共包含7个数据表,分别为用户登录表、书本信息表、出版商信息表、管理员信息表、销售情况表。先将各个数据表的一些基本属性用表格阐述,表格如下:
用户登录表
书本信息表
管理员信息表
销售情况表
以上均为书店管理系统数据库中数据表的部分属性。另外,我们将图书信息表中的图书编号字段建立主索引,出版商信息表中的图书编号建立普通索引,然后将两表建立一对多关联,同理,在销售情况表中将图书编号建立主索引,然后也将他们连在一起,建立一对多关联。
四、系统实施
1、数据资源
至于本系统的数据资源,现用数据表截图表示,各数据表截图如下:
管理员信息表:
进货表:
客户信息表:
库存表:
权限表:
图书信息表:
销售表:
2、主程序设计
主程序代码如下:
Do form 登录.scx
Read events
Return
3主要工作窗口
本系统的工作窗口共有十九个,其中包括登录、主界面、查询、浏览、维护、关于等多个表单。每个工作窗口都添加了一些控件并设置了一些属性,同时在工作窗口中或控件中添加一些代码,用以实现预想的功能。为了让方便查看和阅读,现将主要工作窗口截图,用表格对控件及其重要属性进行总结归纳。
3.1登录界面:
登录界面的控件及其重要属性如表格所示:
Form1的init事件代码如下:
i=i+1
locat all for alltrim(管理员姓名)==alltrim(thisform.Combo1.value)
if found () and alltrim(管理员密码)==alltrim(thisform.Text1.value )
do form 主表单.scx
release thisform
else
if i<3 then
=messagebox ("操作人或密码错误,请重试!!!",5+48,"警告!!!")
else
=messagebox("对不起,您是非法用户,系统将自动退出!!!",48,"严重警告")
quit
endif
endif
退出控件的程序代码:
release thisform
3.2书店管理系统主界面:
主界面中控件及重要属性如下:
客户进入控件的程序代码:
do form 客户登录表单.scx
release thisform
管理员进入控件的程序代码:
do form 登录表单.scx
release thisform
退出控件的程序代码:
rele thisform
3.3关于界面:
关于界面只是介绍本系统的一些简单内容,没有其他的任何功能,至于表单中添加的一些控件,均是标签控件和图像控件,他们的一些属性只是字体,字体颜色等等这样的属性,没有什么特殊的功能,在此就不再一一累述。也没有事件代码。
3.4查询模块的截图如下:
客户信息查询控件的程序代码:
if this.value=1
thisform.label1.caption="请输入编号"
thisform.text1.value=""
thisform.text1.setfocus
else
thisform.label1.caption="请输入姓名"
thisform.text1.value=""
thisform.text1.setfocus
endif
查询控件的程序代码:
public P_StrSql
if thisform.optiongroup1.option1.value=1 then
P_StrSql="select * from 客户信息表 where alltrim(客户编号)='"+thisform.text1.value+"'into cursor que"
endif
if thisform.optiongroup1.option2.value =1 then
P_StrSql="select * from 客户信息表 where 客户全称='"+thisform.text1.text+"'into cursor que"
endif
进货查询控件的程序代码:
sele 库存表
locate for allt(thisform.Combo1.value)=allt(图书名称)
if found()
messagebox("查找成功",0+48,"提示")
go top
sele * from 库存表 where allt(thisform.Combo1.value)==allt(图书名称) into cursor temp
thisform.refresh
thisform.init
else
messagebox("对不起,没有相关内容",0+48,"提示")
endif
由于查询模块的设计思路相同,模式也一样,控件及其属性也是大同小异,代码只是有小的变动,下面只以查询模块的第一个查询表单对其中的控件及其重要属性和代码进行阐述,其他查询表单在此就不一一进行累述。
进货信息查询的控件及属性如下表所示:
接上图
3.5浏览模块如下:
本系统所使用的浏览表单大同小异,现以订单情况浏览表单为例,对其中添加的控件及其重要属性进行说明,如下:
3.6维护模块:
修改控件的程序代码:
sele 用户名
if allt(thisform.combo1.value)==""
thisform.combo1.setfocus
messagebox("请选择或输入正确的用户名",64,"提示")
else
locate for allt(用户名)=allt(thisform.combo1.value)
if eof()
messagebox("此用户不存在,请重新输入!",64,"提示")
thisform.combo1.value=""
thisform.combo1.setfocus()
else
if !allt(密码)==allt(thisform.text2.value)
messagebox("密码错误,请重新输入!",64,"提示")
thisform.text2.value=""
thisform.text2.setfocus()
else
if allt(thisform.text3.value)==""
messagebox("请输入新密码!",64,"提示")
thisform.text3.setfocus
else
if !allt(thisform.text3.value)==allt(thisform.text4.value)
messagebox("确认密码错误,请重新输入!",64,"提示")
thisform.text4.value=""
thisform.text4.setfocus
else
repl 密码 with allt(thisform.text4.value)
messagebox("您已修改成功!!!",64)
thisform.release
endif
endif
endif
endif
endif
取消控件的程序代码:
rele thisform
注册控件的程序代码:
Set safety off
sele 客户信息表
if alltrim(thisform.text1.value)==""
messagebox("用户名不能为空! ",0+48,"警告")
thisform.text1.setfocus
else
locate for 客户全称=alltrim(thisform.text1.value)
if(.not. eof())
messagebox("此用户已存在,请重新输入!",64,"警告")
thisform.text1.value=""
thisform.text1.setfocus
else
if alltrim(thisform.text2.value)==""
messagebox("密码不能为空! ",0+48,"警告")
thisform.text2.setfocus
else
if (thisform.text2.value)==(thisform.text3.value)
append blank
repl 客户全称 with alltrim(thisform.text1.value),;
密码 with alltrim(thisform.text2.value)
*!* if thisform.check1.value==1
*!* repl 标识 with .T.
*!* else
*!* repl 标识 with .F.
*!* endif
messagebox("您已注册成功!!!")
thisform.text1.value=""
thisform.text2.value=""
thisform.text3.value=""
thisform.text1.setfocus
thisform.text3.enabled=.f.
thisform.label4.enabled=.f.
*!* thisform.list1.clear
*!* thisform.list1.init
else
tt=messagebox("确认密码错误,请重新输入!",0+48,"警告")
if tt==1
thisform.text3.enabled=.t.
thisform.label4.enabled=.t.
thisform.text3.value=""
thisform.text3.setfocus
endif
endif
endif
endif
endif
删除控件的程序代码:
if allt(thisform.text1.value)==""
messagebox("请选择或输入用户名",64,"提示")
thisform.text1.setfocus
else
use 客户信息表
locate for 客户全称=allt(thisform.text1.value);
.and.密码=allt(thisform.text2.value)
if eof()
messagebox("请选择或输入正确的用户名",64,"提示")
thisform.text1.value=""
thisform.text2.value=""
thisform.text1.setfocus
else
tt=messagebox("一定要删除吗?",4+48,"删除确认")
if tt==6
delete
pack
endif
*!* thisform.list1.clear
*!* thisform.list1.init
*!* thisform.list1.click
messagebox("删除成功!")
endif
endif
返回控件的程序代码:
release thisform
同理,系统维护模块的表单设计理念相同,现只以出版商信息维护表单为代表,对其中所添加的控件及重要属性用表格来进行说明,每种控件只用其中的部分作为代表,表格如下:
Command1的click事件代码如下:
Go top
Thisform.refresh
Command2的click事件代码如下:
Skip-1
Thisform.refresh
Command3的click事件代码如下:
Skip+1
Thisform.refresh
Command4的click事件代码如下:
Go bottom
Thisform.refresh
Command5的click事件代码如下:
Go bottom
Append blank
Thisform.refresh
Command6的click事件代码如下:
Delete
Pack
Thisform.refresh
Command7的click事件代码如下:
Release thisform
4、菜单设计
本系统共采用四个一级菜单,九个二级菜单,十多个三级菜单。一级菜单分别为:信息管理、图书管理、报表打印、系统。二级菜单分别为信息查询、信息浏览、信息维护、图书信息查询、图书信息维护、图书信息浏览、书本信息单、管理员信息单、销售情况单、关于、退出。三级菜单分别为:图书信息查询/维护/浏览、出版商信息查询/浏览/维护、管理员信息浏览/维护/查询、销售查询、销售情况浏览/维护。现在用表格将各级菜单及其中的代码活命令表现出来。
一级菜单设计如下:
一级菜单信息管理的二、三级菜单如下:
一级菜单报表打印和系统的二级菜单如下:
另外,在此特别申明,本系统的设计思路是将自制菜单挂在顶层表单上,故在对“书店管理系统主界面”进行属性设置时将他的showwindow属性值设置为2—作为顶层表单。其他表单出了登陆界面外,都要将属性desktep的属性值设置为T,showwindow的属性值设置为1—显示在顶层表单中。报表就不用设置了,特此申明。
五、设计体会
历时三周,我完成了我的课程设计工作,时至今日,实习论文基本完成。从最初的茫然,到慢慢的进入状态,再到对思路逐渐的清晰。历经了三个星期的努力,紧张而又充实的课程设计终于落下了帷幕。
回想这段日子的经历和感受,我感慨万千,在这次课程设计的过程中,我深刻的体会到了团体合作的力量。再同小组成员讨论的过程中,我从中吸收了一些很好的设计思路。同时,在搜集资料的过程中,我认真准备了一个笔记本,将自己的设计思路写了下来。我在学校图书馆,还在网上查找各类相关资料,将这些宝贵的资料全部记在笔记本上,尽量使我组的课程设计能够达到理想状态。
这次课程设计过程是我的一次再学习,再提高的过程。在设计中我充分地运用了本学期所学到的知识。我从资料的收集过程中,掌握了很多的原先不知道的知识,让我对我所学过的知识有所巩固和提高,并且让我对数据库技术有所了解。在整个过程中,我学到了新知识,增长了见识。在今后的日子里,我仍然要不断地充实自己,争取将所学的数据库技术应用到自己所学专业当中。
在这次课程设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法和不同的设计思路。在此更要感谢我的任课老师,是你的细心指导,使我能够顺利的完成此次的课程设计。 更重要的是,老师的严谨治学态度、渊博的知识、无私的奉献精神使我深受启迪。从尊敬的老师身上,我不仅学到了扎实、宽广的专业知识,也学到了做人的道理。
六、参考文献
1、 《visual foxpro 应用基础与面向对象程序设计教程》——高等教育出版社
2、《visual foxpro应用系统开发教程》——清华大学出版社
3、《visual foxpro实例全解教程》——南方出版社
4、网络资源——百度文库
本文来源:https://www.2haoxitong.net/k/doc/179546fadc3383c4bb4cf7ec4afe04a1b171b01d.html
文档为doc格式