PB设计超市货物管理系统.docx
《PB设计超市货物管理系统.docx》由会员分享,可在线阅读,更多相关《PB设计超市货物管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
PB设计超市货物管理系统
《数据库应用综合设计》
课程设计报告
学院名称:
电子与信息工程学院
专业:
电气工程及其自动化
班级:
姓名:
学号:
指导教师:
定稿日期:
年6月10日
《数据库应用综合设计》课程设计报告
1.题目内容
超市货物管理系统
1.1课题研究的意义
随着现代科学技术的迅猛发展,计算机技术已经渗透到个个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对书数据库的进一步开发和利用显得尤为迫切。
作为国内市场的一些中小型超市,它们在信息化过程中的步伐要落后于大中型超市,而对于这些企业的资源管理,信息的存储和处理也显得迫切需要,要适应市场竞争,就需要有高效的处理方式和管理方法,因此加快超市的信息化进程是必可少的。
2.总体设计方案
本系统采用自定向下方法开发,其功能模块主要有如下几个部分:
货物价格管理模块、库存查询管理模块和登录模块。
具体的功能描述如下:
价格管理:
其功能是对超市商品价格的查询管理,可根据编号、名称、价格区间等方式对所需产品进行查询。
库存管理:
其功能是对采购来的产品进行库存查询,添加商品等活动,同时能够对库存数据进行修改,以及库存统计。
登录管理:
其功能是对用户登录信息进行管理,登录进去后课对密码及用户名进行添加及修改,方便使用。
本系统共包括三大模块,分别是价格管理模块,库存管理模块,登录管理模块。
每个模块的功能如下:
1.价格管理模块功能:
(1)实现商品价格信息的查询;
(2)实现商品价格信息的更新,包括增加、删除、修改功能;
(3)实现商品价格的升序及降序;
(4)实现通过价格区间来对商品进行查询。
2.库存管理模块功能:
(1)实现库存信息的查询;
(2)实现商品库存信息的更新,包括增加、删除、修改功能。
3.登录管理模块功能:
(1)实现用户的登录;
(2)实现用户信息的更新,包括增加、删除、修改密码功能。
3.数据库设计
3-1超市管理系统数据库E-R模型,如图1-1所示:
图3-1学生E-R图
3-2登录表(users)的设计
(1)系别表(users)主要用来记录登录的信息,主要由字符属性构成。
其表结构如表1-1所示。
表1-1users表结构
字段名称
数据类型
是否为空
是否为主键
说明
name
char(10)
notnull
是
姓名
password
char(10)
null
否
密码
(2)登录表(users)中的数据如图3-2所示。
图3-2users表中数据
3-3数据表(sth)的设计
(1)数据表(sth)主要用来记录货物的信息(商品编号id、商品名称name、商品价格price),主要由字符属性构成。
其表结构如表1-2所示。
表1-2sth表结构
字段名称
数据类型
是否为空
是否为主键
说明
id
char(10)
notnull
是
商品编号
name
varchar(50)
notnull
否
商品名称
price
varchar(50)
null
否
商品价格
(2)数据表(sth)中的数据如图3-3所示。
图3-3sth表中数据
3-4库存表(storelist)的设计
(1)库存表(storelist)主要用来记录货物的信息(商品编号id、商品名称name、商品库存storenum),主要由字符属性构成。
其表结构如表1-2所示。
表1-2storelist表结构
字段名称
数据类型
是否为空
是否为主键
说明
id
char(10)
notnull
是
商品编号
name
varchar(50)
notnull
否
商品名称
storenum
int
null
否
商品库存
(2)数据表(storelist)中的数据如图3-4所示。
图3-4storelist表中数据
4、用户界面设计
4-1ODBC进行pb与sqlserver的连接配置
4-2系统菜单的设计
本系统主要分为以为几个功能:
筛选、价格排序、查询、库存清单、用户管理。
根据系统的功能,设计系统菜单如图4-1所示。
图4-1系统菜单
4-3各功能模块的实现
4-3-1登录模块设计
登录模块实现用户登录功能,负责验证输入的用户名和密码的正确性,涉及的数据表为users表。
主要功能如下:
1)登录,2)添加新用户,3)修改密码。
登录模块的实现界面如图4-2、图4-3、图4-4所示。
图4-2登录界面
界面及相关控件的实现代码为:
(1)登录按钮(cb_1)的clicked事件代码为:
ls_username=trim(sle_1.text)//输入的用户名和密码
ls_password=trim(sle_2.text)
ifls_username=""orls_password=""then
messagebox("提示","用户名和密码不能为空")
else
SELECTusers.name,users.password
INTO:
gs_username,:
gs_password
FROMusers
WHERE(users.name=:
ls_username)AND
(users.password=:
ls_password);
ifsqlca.sqlcode=0then
open(x_main)//密码正确,打开主窗口
close(x_login)
else
li_n=li_n-1
ifli_n<>0then
messagebox("提示","用户名或密码错误")
else
messagebox("提示","错误超过3次,自动退出")
halt//错误超过3次,退出程序
endif
endif
endif
(2)退出按钮的事件代码
close(parent)
图4-3添加及修改新用户
(1)添加控件的程序(图4-3-1)
图4-3-1添加控件程序
(2)保存控件的程序
ifdw_1.update()=1then
commit;
messagebox(“提示”,”保存成功”)
endif
图4-4密码修改界面
(1)确定按钮的程序
iftrim(sle_1.text)<>ls_passwordthen
messagebox("提示","旧密码错误")
else
iftrim(sle_2.text)=trim(sle_3.text)then
ls_password=trim(sle_2.text)
UPDATEusers
SETpassword=:
ls_password
WHERE(users.name=:
gs_username)AND
(users.password=:
gs_password);
ifsqlca.sqlcode<>0then
messagebox("提示","密码修改不成功")
else
close(parent)
messagebox("提示","密码修改完成")
endif
else
messagebox("提示","两次新密码不相同")
endif
endif
4-3-2价格管理模块设计
价格管理模块实现用户查询功能,负责对商品价格的查询、排序、修改等功能,涉及的数据表为sth表。
主要功能如下:
1)查询,2)排序,3)添加。
价格管理模块的实现界面如图4-5、图4-6、图4-7、图4-8所示。
查询又分为区间查询和按id、name、price查询
图4-5区间查询图4-6按id、name、price查询
(1)筛选控件的程序
stringcondition,condition1
ifcbx_1.checked=truethen
ifcbx_2.checked=falsethen
dw_1.setfilter("price>'"+sle_1.text+"'")
dw_1.filter()
dw_1.setsort("priceasc")
dw_1.sort()
endif
endif
ifcbx_2.checked=truethen
ifcbx_1.checked=falsethen
dw_1.setfilter("price<'"+sle_2.text+"'")
dw_1.filter()
dw_1.setsort("pricedesc")
dw_1.sort()
endif
endif
ifcbx_1.checked=truethen
ifcbx_2.checked=truethen
condition="price>'"+sle_1.text+"'"
condition1="price<'"+sle_2.text+"'"
dw_1.setfilter(condition+"and"+condition1)
dw_1.filter()
dw_1.setsort("priceasc")
dw_1.sort()
endif
endif
dw_1.settransobject(sqlca)
dw_1.retrieve()
(2)开始查询控件的程序
dw_1.settransobject(sqlca)
dw_1.retrieve()
ifrb_1.checked=truethen
ifdw_1.rowcount()=0then
messagebox("提示","id无效")
endif
dw_1.setfilter("id='"+trim(sle_1.text)+"'")
dw_1.filter()
endif
ifrb_2.checked=truethen
ifdw_1.rowcount()=0then
messagebox("提示","name无效")
endif
dw_1.setfilter("name='"+trim(sle_1.text)+"'")
dw_1.filter()
endif
ifrb_3.checked=truethen
ifdw_1.rowcount()=0then
messagebox("提示","price无效")
endif
dw_1.setfilter("price='"+trim(sle_1.text)+"'")
dw_1.filter()
endif
价格排序分为升序和降序两种:
图4-7升序图4-8降序
(1)升序控件程序
dw_1.settransobject(sqlac)
dw_1.retrievet()
dw_1.setsort(“priceasc”)
dw_1.sort()
(2)降序控件程序
dw_1.settransobject(sqlac)
dw_1.retrievet()
dw_1.setsort(“pricedesc”)
dw_1.sort()
4-3-3库存管理模块设计
库存管理模块实现用户对库存数量查询功能,并负责对商品库存查询添加等功能,涉及的数据表为storelist表。
主要功能如下:
1)查询,2)修改。
库存管理模块的实现界面如图4-9所示。
图4-9库存查询及修改
注:
各控件的程序同上
4-4设计过程截图
表格的建立:
库存表价格表
登录表
当查询输入错误时显示:
登录时输入错误显示:
定义全局变量:
5.系统的调试和心得体会
在本次设计中,是我和刘阳共同完成的,我主要是负责对后台程序的编写,我的队友负责数据库、页面、以及表格的建立和部分程序的修改。
在查询界面中,因为我涉及到了区间查询方式,需要输入一个区间然后将再此区间内的所有商品都显示出来。
我不知道该如何编写,后来通过网上查找和与队友讨论,终于实现了该项功能。
比较遗憾的是,我们应该在该查询系统中加入完整的人事管理模块和进货管理模块,可是由于基础不够只好放弃。
在本次课程设计中,我的收获还是蛮大的。
让我对数据库有了更进一步的了解。
但是我还是缺乏自己学习PB的能力,因为网上的有些函数看不懂,不懂得如何转换成自己的东西。
在以后的学习中要多和别人讨论,然后获得更多的知识。
附录
关键代码
查询程序:
dw_1.settransobject(sqlca)
dw_1.retrieve()
ifrb_1.checked=truethen
ifdw_1.rowcount()=0then
messagebox("提示","id无效")
endif
dw_1.setfilter("id='"+trim(sle_1.text)+"'")
dw_1.filter()
endif
ifrb_2.checked=truethen
ifdw_1.rowcount()=0then
messagebox("提示","name无效")
endif
dw_1.setfilter("name='"+trim(sle_1.text)+"'")
dw_1.filter()
endif
ifrb_3.checked=truethen
ifdw_1.rowcount()=0then
messagebox("提示","price无效")
endif
dw_1.setfilter("price='"+trim(sle_1.text)+"'")
dw_1.filter()
endif
密码修改程序:
iftrim(sle_1.text)<>ls_passwordthen
messagebox("提示","旧密码错误")
else
iftrim(sle_2.text)=trim(sle_3.text)then
ls_password=trim(sle_2.text)
UPDATEusers
SETpassword=:
ls_password
WHERE(users.name=:
gs_username)AND
(users.password=:
gs_password);
ifsqlca.sqlcode<>0then
messagebox("提示","密码修改不成功")
else
close(parent)
messagebox("提示","密码修改完成")
endif
else
messagebox("提示","两次新密码不相同")
endif
endif
登录程序:
ls_username=trim(sle_1.text)//输入的用户名和密码
ls_password=trim(sle_2.text)
ifls_username=""orls_password=""then
messagebox("提示","用户名和密码不能为空")
else
SELECTusers.name,users.password
INTO:
gs_username,:
gs_password
FROMusers
WHERE(users.name=:
ls_username)AND
(users.password=:
ls_password);
ifsqlca.sqlcode=0then
open(x_main)//密码正确,打开主窗口
close(x_login)
else
li_n=li_n-1
ifli_n<>0then
messagebox("提示","用户名或密码错误")
else
messagebox("提示","错误超过3次,自动退出")
halt//错误超过3次,退出程序
endif
endif
endif