超市收银系统java课程设计.docx
- 文档编号:10217214
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:21
- 大小:180.18KB
超市收银系统java课程设计.docx
《超市收银系统java课程设计.docx》由会员分享,可在线阅读,更多相关《超市收银系统java课程设计.docx(21页珍藏版)》请在冰点文库上搜索。
超市收银系统java课程设计
第1章需求分析
1.1超市收银系统需求分析
超市收银系统主要可分为收银员用户,经理用户和服务台用户。
(1)收银员用户的功能需求是对顾客是否会员进行判断及结账,然后把会员的消费
状况分别存入会员表,消费表以及收银台表。
(2)服务台用户的需求是在会员管理子模块中对会员进行添加,删除,修改,查询以及会员详细消费信息的查询和在商品管理子模块中对商品的添加,修改,删除。
(3)经理用户的功能需求是对某收银台的销售总量和某商品的具体信息进行查询以了解超市的经营状况。
1.2类的说明:
(1)MembHandle类方法有六个:
AddToDb()用于添加会员;
QueryAllFromDb()用于查询全部会员信息;
QueryByIdFromDb()用于查询某会员的消费总额
delete()用于删除某会员
update()修改某会员信息
updateSum()修改某会员的消费总额
(2)GoodsHandle类方法有六个:
AddToDb()添加某商品信息
delete()删除删除商品信息
update()修改商品信息
QueryAllFromDb()查询全部商品信息
QueryByIdFromDb()查询某商品信息
QueryByIdFrDb()查询某商品价格
(3)ConsumeHandle类方法有三个
QueryConsuByID()查询某会员详细消费信息
QueryAll()查询全部会员详细消费信息
Add()插入会员消费信息
(4)DeskHandle类方法有三个
QueryAllFromDb()查询全部收银台消费信息
QueryByIdFromDb()查询某收银台消费信息
AddOrUpdate()会员消费金额添加到收银台
(5)ManagHandle类一个方法
Querywhethexs()查询经理登录用户是否存在
(6)ServiceHandle类一个方法
Querywhethexs()查询服务台登录用户是否存在
(7)CashierHandle一个方法
Querywhethexs()查询收银员登录用户是否存在
第2章系统总体设计
2.1总体设计
(1)总体设计图
(1)总体设计图
(2)各模块功能
表2-1超市收银系统功能模块表
功能模块
包含子功能模块
功能
服务台模块
会员管理子模块
商品管理子模块
对会员信息的添加,修改,删除,查询及消费查询
对商品信息的添加,修改,删除
收银员模块
根据是否会员结账(消费大于二百元给一张九折的会员卡),把会员消费情况存入数据库
经理模块
查看某商品的信息以及某收银台的销售情况
公有模块
实现用户的身份验证,退出系统等功能
2.2设计数据管理子系统
(1)数据库表
表2-2数据库表
序号
数据库表
数据表存储的内容
1
member
存储会员的信息
2
goods
存储商品的信息
3
consume
存储会员消费的信息
4
cashier
存储收银员的信息
5
manager
存储经理的信息
6
service
存储服务台的息
7
desk
存储收银台信息
(2)数据库表结构
①会员表的详细数据字段:
表2-3member会员表
序号
字段名
字段类型
说明
备注
1
membID
varchar(20)notnull
会员卡号
关键字
2
membName
varchar(20)notnull
会员姓名
3
idID
varchar(50)
身份证号
4
Carddate
varchar(50)
会员卡日期
5
Sum
double
销售总额
②收银员表详细数据字段:
表2-4cashier收银员表
序号
字段名
字段类型
说明
备注
1
CashID
varchar(20)notnull
收银员编号
关键字
2
CashName
varchar(20)notnull
收银员姓名
3
CashPwd
varchar(20)notnull
收银员密码
4
CashDeskNo
varchar(20)
收银台编号
③商品表goods的详细数据字段:
表2-5goods商品表
序号
字段名
字段类型
说明
备注
1
GoodsID
varchar(20)notnull
商品编号
关键字
2
GoodsName
varchar(20)notnull
商品名称
3
Bid
doublenotnull
进价
4
SellPri
double
售价
5
GSum
int
总数
6
RemainNum
intnotnull
剩余数
7
ImportDat
varchar(50)
入库日期
④会员消费表consume的详细数据字段:
表2-6consume会员消费表
序号
字段名
字段类型
说明
备注
1
MembID
varchar(20)notnull
会员编号
关键字
2
GoodsID
varchar(20)notnull
商品编号
关键字
3
SalesDat
varchar(50)notnull
消费日期
关键字
4
ConsuAmount
varchar(20)notnull
消费数量
关键字
⑤服务台表service的详细数据字段:
表2-7service服务台表
序号
字段名
字段类型
说明
备注
1
ServID
varchar(20)notnull
服务台编号
关键字
2
ServName
varchar(20)notnull
服务台用户名
3
ServPwd
varchar(20)notnull
服务台密码
⑥经理表manager的详细数据字段:
表2-8manager系院表
序号
字段名
字段类型
说明
备注
1
ManagID
varchar(20)notnull
经理编号
关键字
2
ManagName
varchar(20)notnull
经理用户名
3
ManagPwd
varchar(20)notnull
经理密码
收银台desk销售表
表2-9desk表
序号
字段名
字段类型
说明
备注
1
CashDeskNo
varchar(20)notnull
收银台编号
关键字
2
Date
varchar(20)notnull
日期
关键字
3
SalesSum
double
销售总额
2.3设计人机交互子系统
(1)用户分类
本系统的用户可分为三类:
①服务台用户;
②收银员用户;
③经理用户。
(2)用户描述
①服务台用户的描述:
服务台用户在整个收银系统中起到管理和维护的作用,对会员,商品的信息进行管理和维护。
②收银员用户的描述:
收银员用户在本系统中具有结账的权限。
③经理用户的描述:
经理在本系统中具有查看某收银台消费状况以及某商品消费信息的权限。
(3)人机交互子系统
人机交互子系统在根据不同的用户身份登陆到不同的页面,然后按照不同的用户只能进行用户权限内的操作,其结构图如下:
第3章详细设计
3.1用户登录流程图
3.2顾客结账流程图
3.3服务台添加会员流程图
第4章系统实现
本系统采用了三层架构来实现,即分为用户界面层、业务逻辑层和数据访问层,用户界面层是展示给用户的界面;业务逻辑层是对系统业务实体的封装;数据访问层直接与数据库打交道,为业务逻辑层提供底层的数据库操作。
4.1DbLink类主要是与数据库连接
packagedatabase;
importjava.sql.*;
publicclassDbLink{//连接数据库
StringdbURL;//数据库标识
Stringuser;//datauser
Stringpassword;
publicDbLink(){
dbURL="jdbc:
mysql:
//localhost:
3306/supcash?
useUnicode=true&characterEncoding=GBK";
user="root";
password="";
}
publicConnectiongetConnection()
{try
{Class.forName("com.mysql.jdbc.Driver");
returnDriverManager.getConnection(dbURL,user,password);
}catch(Exceptione){System.out.println("链接失败"+e.toString());}
returnnull;}
}
4.2ServiceHandle类完成服务台用户登录验证的功能
packagecontrol;
importdatabase.*;
importjava.sql.*;
publicclassServiceHandle{//完成服务台登录的验证
Connectionconn;
PreparedStatementps;
DbLinkdbLink;
publicServiceHandle(){
conn=null;
ps=null;
dbLink=newDbLink();
}
publicintQuerywhethexs(Stringid,Stringpsw){//查询服务台登录用户是否存在
ResultSetrs=null;
intflag=0;
try{conn=dbLink.getConnection();
Stringsql="select*fromservicewhereServID='"+id+"'andServPwd='"+psw+"'";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
if(rs.getString("ServPwd").equals(psw)&&rs.getString("ServID").equals(id))
flag=1;
}
}catch(Exceptionex){}
returnflag;
}
}
图4-1服务台用户登录
4.3收银员结账界面
GoodsHandle类可获取商品价格及完成商品的添加,删除,修改,查询
packagecontrol;
importdatabase.*;
importjava.awt.*;
importjava.sql.*;
importjava.util.ArrayList;
importGui.PayPanel;
publicclassGoodsHandle{
Connectionconn;
PreparedStatementps;
DbLinkdbLink;
Dialogdialog;
publicGoodsHandle(){
conn=null;
ps=null;
dbLink=newDbLink();
}
publicvoidAddToDb(Goodsgoods){//添加某商品信息
try{conn=dbLink.getConnection();
Stringsql="insertintogoodsvalues(?
?
?
?
?
?
?
)";
ps=conn.prepareStatement(sql);
//System.out.println(userName);
ps.setString(1,goods.getGoodsID());
ps.setString(2,goods.getGoodsNam());
ps.setString(3,Double.toString(goods.getBid()));
ps.setString(4,Double.toString(goods.getSellPri()));
ps.setString(5,Double.toString(goods.getGSum()));
ps.setString(6,goods.getImportDat());
ps.setString(7,Double.toString(goods.getGSum()));
ps.execute();
}catch(Exceptionex){}
}
publicvoiddelete(Strings){//删除删除商品信息
try{conn=dbLink.getConnection();
Stringsql1="deletefromgoodswhereGoodsID='"+s+"'";
ps=conn.prepareStatement(sql1);
ps.execute();
Stringsql2="deletefromConsumewhereGoodsID='"+s+"'";
ps=conn.prepareStatement(sql2);
ps.execute();
}catch(Exceptionex){}
}
publicvoidupdate(Stringa,Stringb,Stringc,Stringd,Stringf,Stringg){//修改商品信息
try{conn=dbLink.getConnection();
Stringsql="updategoodssetGoodsName='"+b+"',Bid="+c+",SellPri="+d
+",GSum="+f+",ImportDat='"+g+"'whereGoodsID='"+a+"'";
ps=conn.prepareStatement(sql);
//System.out.println(userName);
ps.execute();
}catch(Exceptionex){}
}
publicArrayListQueryAllFromDb(){//查询全部商品信息
ArrayListal=newArrayList();
ResultSetrs=null;
try{conn=dbLink.getConnection();
Stringsql="select*fromgoods";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
Stringstr="编号:
"+rs.getString
(1)+"名称:
"+rs.getString
(2)+"进价:
"
+rs.getString(3)+"卖价:
"+rs.getString(4)+"总数量:
"
+rs.getString(5)+"进货日期:
"+rs.getString(6)+"余量:
"+rs.getString(7);
al.add(str);
}
}catch(Exceptionex){}
returnal;
}
publicArrayListQueryByIdFromDb(StringGoodsID){
ArrayListal=newArrayList();//查询某商品全部信息
ResultSetrs=null;
try{conn=dbLink.getConnection();
Stringsql="select*fromgoodswhereGoodsID=?
";
ps=conn.prepareStatement(sql);
//System.out.println(userName);
ps.setString(1,GoodsID);
rs=ps.executeQuery();
while(rs.next()){
Stringstr="编号:
"+rs.getString
(1)+"名称:
"+rs.getString
(2)+"进价:
"
+rs.getString(3)+"卖价:
"+rs.getString(4)+"总数量:
"
+rs.getString(5)+"进货日期:
"+rs.getString(6)+"余量:
"+rs.getString(7);
al.add(str);
}
}catch(Exceptionex){}
returnal;
}
publicdoubleQueryByIdFrDb(StringGoodsID,intn){//查询某商品价格
ResultSetrs=null;doubled=0;
try{conn=dbLink.getConnection();
Stringsql="select*fromgoodswhereGoodsID=?
";
ps=conn.prepareStatement(sql);
ps.setString(1,GoodsID);
rs=ps.executeQuery();
while(rs.next()){
inta=Integer.parseInt(rs.getString(7))-n;
if(a<0){
dialog=newDialog(dialog,"库存不够!
",true);
dialog.show();break;
}
Strings="updategoodssetRemainNum='"+a+"'whereGoodsID="+GoodsID;
ps=conn.prepareStatement(s);
ps.execute();
d=Double.valueOf(rs.getString(4)).doubleValue();}
}catch(Exceptionex){}
returnd;
}
}
图4-2收银员结账界面
图4-3会员支付界面
第5章系统测试
在系统测试中,我们首先对各个子模块进行单元测试,即把每一个模块作为一个单独的实体来测试,保证每个模块作为一个单元能正确运行。
然后在完成所有模块后,我们将各子模块集成起来,再对它进行系统测试,以及验证系统是否实现了指定的功能。
最后找几个其他的同学再对系统进行黑盒子测试,验证系统是否满足用户的功能需求。
在测试的过程,发现了许多问题及功能缺陷,最后经过修改调试后都解决了。
比如,有一个问题是在顾客购买某商品数量超过库存时系统照样存入数据库,经过修改,通过弹出对话框警告库存不够并拒绝存入数据库使问题得到了解决。
参考文献:
[1]史斌星.java基础及应用教程[M].北京:
清华大学出版社.2007
[2]王珊,萨日煊.数据库系统概论(第四版)[M].北京:
高等教育出版社.2008
[3]吴倩.java语言程序设计[M].北京:
机械工业出版社.2007
[4]柳西玲.java语言程序设计基础[M].北京:
清华大学出版社.2005
[5]刘宝林.java程序设计与案例[M].北京:
高等教育出版社.2004
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超市 收银 系统 java 课程设计