超市收银系统 vb课程设计.docx
- 文档编号:5495981
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:20
- 大小:222.63KB
超市收银系统 vb课程设计.docx
《超市收银系统 vb课程设计.docx》由会员分享,可在线阅读,更多相关《超市收银系统 vb课程设计.docx(20页珍藏版)》请在冰点文库上搜索。
超市收银系统vb课程设计
超市收银系统
1.课程设计的目的
21世纪,人类已全面进入数字信息化社会,现在信息技术的应用越来越普及,不但促进了社会的高速发展,也影响着人们的工作、学习、生活和娱乐的方式以及思想观念。
随着科学技术的不断提高,计算机科学与技术日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域,迅速地改变着人类社会的生产方式和生活方式,成为减轻人们体力与脑力劳动,帮助人们完成一些人们难以完成任务的有效工具。
随着电脑的普及与使用,现在的管理也提升了一个档次,渐渐实现了无纸化办公。
高校是科研的阵地,后勤的超市管理也应该一改传统的人工管理,更加信息化,时代化,节省人力物力,提高效率。
基于这一点,开发此学生超市管理系统。
各大超市管理部门在具体工作中担负着管理,检查,收费,协调等重要的管理任务。
安排、水电使用的收费、外来人员访问管理等,所涉及的管理面广,内容多,整个超市管理的工作量很大。
计算机的应用为实现超市管理科学化奠定基础。
计算机的应用推动了超市管理工作向着正规化、科学化、自动化、现代化的方向发展。
超市管理系统从消费者的付费到最后的超市管理全部电脑化。
本系统主要包括:
收银员信息查询、出入登记、收费以及对超市销售情况等的查询,可以更快地了解到每个商品的销售情况以及这个超市商品分配的情况。
使用超市收银管理系统,只需一到两名数据操作员即可操作管理系统,节省大量人力和财力;可以存储大量商品的基本信息,安全、高效、快捷;可以迅速查到所涉及的各种信息;操作简单,使用方便、高效;系统使用寿命长、成本低。
这些特点可以极大地提高超市信息管理的效率。
2.设计方案论证
2.1系统运行环境
(1)硬件环境
处理器:
InterPentium166MX或更高
内存:
32MB以上
硬盘空间:
1GB以上
显卡:
SVGA显示适配器
(2)软件环境
操作系统Windows98/2000/XP
2.2总体设计
2.2.1窗体设计
依据系统分析,本超市收银系统共设计了包括用户登录和系统使用两大部分。
其中用户登录通过数据库分析,可同时进行管理员登陆和收银员登陆,减少了窗体与控件的使用,方便用户登录。
同时为了适应两种登陆方式,共设计了收银页面与管理中心页面。
采用多文档接口处理各种数据保存功能。
2.2.2数据库设计
本收银系统分为管理员管理与收银员系统两个部分组成,采用access数据库存放商品库存与销售等商品信息,其结构如下表所示
表1用户名结构
字段名
类型
Name
文本
Id
数值
Psd
数值
表2商品信息结构
字段名
类型
字段名
类型
商品编号
数值
单价
数值
产品名称
文本
库存数量
数值
序列号
数值
表3商品销售信息结构
字段名
类型
字段名
类型
字段名
类型
Id
数值
序列号
数值
总价
货币
产品编号
数值
单价
货币
出售日期
日期
产品名称
文本
出售数量
数值
表4登陆表
字段名
类型
文本长度
说明
用户编号
文本型
10
姓名
文本型
8
密码
文本型
10
表1用户管理表
表5信息表
字段名
类型
文本长度
说明
编号
文本型
10
名称
文本型
30
借阅天数
整型
4
费用
货币型
8
备注
备注型
4
2.2.3系统模块结构图
图1系统结构图
3.设计结果与分析
3.1用户登录界面
设计用户登录界面,其中为了简便起见登录信息包括用户名和密码,系统根据用户名自动登录到管理员账户或收银系统,如图1所示。
图1登陆界面
3.2收银系统
收银系统共设计了添加到账单、删除行、全部清空和结账、重新登录五大按钮、五个功能。
因为没有打印机,所以为了模拟打印出售小票,特使用msgbox弹出对话框将商品序列号、出售数量和商品总价显示给顾客。
而重新登录则为用户的相互切换提供了便利,如图2所示:
图2收银界面
3.3管理员登陆
当管理员登陆的时候,通过数据库读取用户名,进入到管理中心,如图3所示:
图3管理员登陆
3.4收银员信息管理
因为考虑到超市的工作人员流动性大,所以设计了收银员的信息管理,其中涉及到查找、修改、添加与删除多项操作。
其中查找与修改并联,为了避免出现错误,故通过判断是否进行了查找,如果没有查找则msgbox“请先查找要修改的用户名”,其界面如4所示:
:
图4收银员信息管理
3.5商品信息管理
因为超市的货品流动量大,需要管理员实时进行管理,故添加了商品信息管理界面。
其中包括查询,添加,修改与删除。
如图5所示:
图5商品信息管理
3.6交易信息管理
因为要考虑到月度统计,设计了该统计柱状图,如图6所示:
图6交易信息管理
4.设计体会
这次课程设计收获颇大,首先对视图和数据库的认识和作用都上了一个台阶。
通过这次的课程设计,我不仅拓宽了自己的知识面,还在实践过程中巩固和加深了自己所学的理论知识,使自己的技术素质和实践能力有了进一步的提高,同时我的专业水平也有了很大的进步。
熟悉大型数据库管理系统的结构,熟悉了数据库系统开发工具的使用。
同时,在软件开发方面也累积了不少经验,对软件工程的知识重要性的认识更深了。
通过设计过程的锻炼,自己分析问题和解决问题的能力都得到了锻炼和提高,完善了自己的知识结构,加深了对所学知识的理解。
这次课程设计完成后,体会颇多,在学与做的过程中,取长补短,不断学习新的知识,吸取经验,达到进步的目的。
在学与做的过程中自身的努力以及相关图书资料的帮助,对ODBC编程接口的理解也从能够使用提高到了熟练使用,对程序开发的一般过程和对数据库知识的运用也有了进一步的了解。
在这个快速发展的当代社会里,数据库已经普遍应用在各个领域。
通过课程设计,我学习到不少的数据库方面的知识,但由于自己的理论知识水平有限,实践知识和设计经验不足,在设计过程中难免存在一些问题,甚至错误。
这些我会在以后的工作和实践中加以改进和提高。
5.参考文献
[1]丁宝康.数据库实用教程[M].北京:
清华大学出版社2002.520-25
[2]赛奎春.VisualBasic6.0[M].北京:
清华大学出版社2002.931-41
[3]明月工作室.VisualBasic6.0编程百例[M].,北京:
人民邮电出版社2003.740-45
[4]耿小芬,徐忠军.VisualBasic中的数据访问技术[J].北京:
中国教育信息化高职高教出版社.2009,13:
83-8
[5]汤观全,倪绍勇,史济民.VisualBasic及其应用系统开发题解与实验指导(第二版)[M].北京:
清华大学出版社,2007.8:
56-89
附录
Open"myfile.txt"ForInputAs#1
DoWhileNotEOF
(1)
LineInput#1,inputdata
Text1.Text=inputdata
Loop
Close#1
如果登录时将单选按钮选中,则将本次登录用户名写入mydb。
Txt文件中
IfCheck1.Value=CheckedThen
Open"myfile.txt"ForOutputAs#1
Print#1,Text1.Text
Close#1
本次登录代码如下:
PrivateSubCommand1_Click()
DimUAsBoolean,PAsBoolean,OkAsBoolean
WithAdodc1
.Refresh
DoWhileNot.Recordset.EOF
U=.Recordset.Fields(0).Value=Text1.Text
P=.Recordset.Fields
(2).Value=Text2.Text
IfUAndPThen
Ok=True
ExitDo
Else
.Recordset.MoveNext
EndIf
Loop
EndWith
IfOkThen
收银系统.Show
IfCheck1.Value=CheckedThen
Open"myfile.txt"ForOutputAs#1
Print#1,Text1.Text
Close#1
EndIf
UnloadMe
PrivateSubCommand2_Click()
Dimtemp
IfText1.Text<>""Then
Adodc1.RecordSource="select*from表1where商品编号="&Text1.Text
Adodc1.Refresh
Else
MsgBox"请输入商品号"
ExitSub
EndIf
IfAdodc1.Recordset.EOFThenMsgBox"没有该商品":
ExitSub
WithMSHFlexGrid1
If.TextMatrix(1,0)<>""Then
.AddItem"",.Row+1
.Row=.Row+1
EndIf
.TextMatrix(.Row,0)=Text1.Text
.TextMatrix(.Row,1)=Adodc1.Recordset.Fields("产品名称")
.TextMatrix(.Row,2)=Adodc1.Recordset.Fields("序列号")
.TextMatrix(.Row,3)=Adodc1.Recordset.Fields("单价")
.TextMatrix(.Row,4)=Adodc1.Recordset.Fields("库存数量")
temp=Adodc1.Recordset.Fields("单价")*Val(Text6.Text)
.TextMatrix(.Row,5)=Text6.Text
.TextMatrix(.Row,6)=Text4.Text
EndWith
Text2.Text=Val(Text2.Text)+Val(temp)
EndSub
PrivateSubCommand3_Click()
DimdblTotalAsDouble
DimiAsInteger
DimConnAsADODB.Connection
DimrsAsNewADODB.Recordset
Dimrs2AsNewADODB.Recordset
DimsqlAsString
DimstrBillAsString
WithMSHFlexGrid1
If.Rows=2And.TextMatrix(1,0)=""Then
MsgBox"无记录!
"
Else
strBill="欢迎光临"&vbCrLf&vbCrLf
strBill=strBill&"序列号"&"数量"&"时间"&vbCrLf
SetConn=ConnDB()
sql="selecttop1*from表2"
rs.Opensql,Conn,1,3
DimFacPriceAsSingle
Fori=1To(.Rows-1)
If.TextMatrix(i,0)<>""Then
sql="select*from表1where商品编号="&.TextMatrix(i,0)&""
rs2.Opensql,Conn,1,3strBill=strBill&.TextMatrix(i,2)&""
strBill=strBill&.TextMatrix(i,5)&""&.TextMatrix(i,6)&vbCrLf
FacPrice=Val(.TextMatrix(i,4))*Val(.TextMatrix(i,5))
rs.AddNew
rs("产品名称")=.TextMatrix(i,1)
rs("产品编号")=.TextMatrix(i,0)
rs("序列号")=.TextMatrix(i,2)
rs("单价")=rs2("单价")
rs("出售数量")=Text6.Text
rs("总价")=Val(Trim(rs2("单价")))*Val(Trim(Text6.Text))
rs("出售日期")=.TextMatrix(i,6)
rs.Update
rs2("库存数量")=rs2("库存数量")-Val(.TextMatrix(i,5))
rs2.Update
rs2.Close
EndIf
Nexti
strBill=strBill&"合计:
"&Text2.Text&vbCrLf&"实付:
"&Text3.Text&vbCrLf
strBill=strBill&"找零:
"&Val(Trim(Text3.Text))-Val(Trim(Text2.Text))
MsgBoxstrBill,,"账单"
rs.Close
EndIf
EndWith
Setrs=Nothing
Setrs2=Nothing
Conn.Close
SetConn=Nothing
EndSub
PrivateSubCommand4_Click()
WithMSHFlexGrid1
If.Rows=2Then
.AddItem"",1
.Row=.Row+1
EndIf
.RemoveItem.Row
EndWith
EndSub
PrivateSubCommand5_Click()
Text2.Text=""
Text3.Text=""
MSHFlexGrid1.Clear
CallForm_Load
Text1.SetFocus
Text1.SelStart=0
Text1.SelLength=Len(goodsID)
EndSub
PrivateSubForm_Load()
Text4=Date
WithMSHFlexGrid1
'.Rows=2
.TextMatrix(0,0)="商品编号"
.TextMatrix(0,1)="产品名称"
.TextMatrix(0,2)="序列号"
.TextMatrix(0,3)="单价"
.TextMatrix(0,4)="库存数量"
.TextMatrix(0,5)="数量"
.TextMatrix(0,6)="出售时间"
'.Row=1
EndWith
EndSub
PrivateSubcxdl_Click()
用户登录.Show
UnloadMe
EndSub
PrivateSubjy_Click()
交易信息.Show
EndSub
PrivateSubsxgl_Click()
商品信息管理.Show
EndSub
PrivateSubsygl_Click()
收银员信息管理.Show
EndSub
PrivateSubCommand1_Click()
IfTxtExpression<>""Then
Adodc1.RecordSource="select*from表1wherename='"&TxtExpression&"'"
Adodc1.Refresh
Fori=0To2
DataGrid1.Col=i
Text1(i).Text=DataGrid1.Text
Nexti
Else
MsgBox"输入内容为空"
EndIf
EndSub
PrivateSubCommand2_Click()
DimcnAsADODB.Connection
Setcn=NewADODB.Connection
Iftetexpression<>""Then
cn.Open"provider=microsoft.jet.oledb.4.0;datasource=..\mydb.mdb;"
cn.Execute"update表1setid='"&Text1
(1)&"'wherename='"&TxtExpression&"'"
cn.Execute"update表1setname='"&Text1(0)&"'wherename='"&TxtExpression&"'"
cn.Execute"update表1setpsd='"&Text1
(2)&"'wherename='"&TxtExpression&"'"
cn.Close
Else
MsgBox"请先查找要修改的用户名"
EndIf
Setcn=Nothing
Adodc1.Refresh
EndSub
PrivateSubCommand3_Click()
DimcnAsADODB.Connection
Setcn=NewADODB.Connection
IfText2(0)<>""AndText2
(1)<>""AndText2
(2)<>""Then
cn.Open"provider=microsoft.jet.oledb.4.0;datasource=..\mydb.mdb;"
cn.Execute"insertinto表1(name,id,psd)values('"&Text2(0)&"','"&Text2
(1)&"','"&Text2
(2)&"')"
cn.Close
Else
MsgBox"请填写完整信息"
PrivateSubCommand1_Click()
Dimrs1AsNewADODB.Recordset
DimaAsString
rs1.Open"select*from表1where商品编号=val('"&Text1(0).Text&"')orderby商品编号",cnn,adOpenKeyset,adLockOptimistic
Ifrs1.RecordCount>0Then
a=MsgBox("您确实要修改这条数据吗?
",vbYesNo)
Ifa=vbYesThen
rs1("商品编号")=Text1(0).Text
rs1("产品名称")=Text1
(1).Text
rs1("序列号")=Text1
(2).Text
rs1("单价")=Text1(3).Text
rs1("库存数量")=Text1(4).Text
rs1.Update
商品信息管理.Adodc1.Refresh
EndIf
Else
IfText1
(1).Text<>""AndText1
(2).Text<>""Then
rs1.AddNew
Fori=0To3
rs1.Fields(i)=Trim(Text1(i).Text)
Nexti
rs1.Fields(4)=Val(Text1(4).Text)
rs1.Update
商品信息管理.Adodc1.Refresh
Else
MsgBox"请填写完整的信息"
EndIf
EndIf
rs1.Close
UnloadMe
EndSub
商品信息管理界面的代码如下:
PrivateSubcmdmodify_Click()
Fori=0To4
DataGrid1.Col=i
商品信息输入.Text1(i).Text=DataGrid1.Text
Nexti
Load商品信息输入
商品信息输入.Show
EndSub
PrivateSubcmdend_Click()
UnloadMe
EndSub
PrivateSubcmddelate_Click()
DimaAsString
IfAdodc1.Recordset.RecordCount>0Then
a=MsgBox("您确实要删除这条数据吗?
",vbYesNo)
Ifa=vbYesThen
Adodc1.Recordset.Delete
Adodc1.Refresh
EndIf
Else
MsgBox("没有要删除的数据!
")
EndIf
EndSub
YY=Year(Date)
Text1=YY
UpDown1.Value=YY
ShowProfitYY
EndSub
PrivateSubShowProfit(YY)
DimiAsInteger
DimrsAsNewADODB.Recordset
DimsqlAsString
sql="SELECT出售日期,sum(总价)AS日销售From表2WHERE出售日期between#"&_
YY&"-1-1#and#"&YY&"-12-31#GROUPBY出售日期"
rs.Opensql,Conn
DimMProfits(1To12,1To2)AsVariant
Fori=1To12
MProfits(i,1)=i&"月"
Nexti
DoUntilrs.EOF
i=Month(rs("出售日期"))
MProfits(i,2)=MProfits(i,2)+rs("日销售")
rs.MoveNext
Loop
WithMSChart1
.ChartData=MProfits
.TitleText=YY&"年销售状况"
.Plot.SeriesCollection
(1).LegendText="月销售"
EndWith
EndSub
PrivateSubForm_Unload(CancelAsInteg
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超市收银系统 vb课程设计 超市 收银 系统 vb 课程设计