超市收银系统java课程设计
目录
第1章 需求分析.......................................................................................................... 1
1.1 超市收银系统需求分析.................................................................................. 1
1.2 类的说明.......................................................................................................... 1 第2章 系统总体设计.................................................................................................. 2
2.1 总体设计.......................................................................................................... 2
2.2 设计数据管理子系统...................................................................................... 3
2.3 设计人机交互子系统...................................................................................... 5 第3章 详细设计.......................................................................................................... 7
3.1 用户登录
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图.............................................................................................. 7
............................................................................................... 7 3.2顾客结账流程图
3.3 服务台添加会员流程图.................................................................................. 8 第4章 系统实现.......................................................................................................... 9
4.1 DbLink类主要是与数据库连接 ..................................................................... 9
4.2 ServiceHandle类完成服务台用户登录验证 ........................................... 10
............................................................. 12 4.3收银员结账界面................................
第5章系统测试.......................................................................................................... 16
第1章 需求分析 1.1 超市收银系统需求分析
超市收银系统主要可分为收银员用户,经理用户和服务台用户。
(1)收银员用户的功能需求是对顾客是否会员进行判断及结账,然后把
会员的消费
状况分别存入会员
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
,消费表以及收银台表。
(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类 一个方法
1
Querywhethexs() 查询经理登录用户是否存在
(6)ServiceHandle类 一个方法
Querywhethexs( ) 查询服务台登录用户是否存在
(7) CashierHandle 一个方法
Querywhethexs() 查询收银员登录用户是否存在
第2章 系统总体设计 2.1 总体设计
(1)总体设计图
(1)总体设计图
超市收银系 统
学生选课系统
前台模块 后台模块
前台模块 后台模块
学教管学教管公 收经服收经服公生师理生师理共 银理务银理务共处处员登登员模 员登台员处台模理理处块 录录登 块 登录登处理处模模理模模录 录模录理模理块 块 模块 块 模
模块 模模块 模块 块 图3-1学生选课系统总体设计图 块 块 块 块
图2-1超市收银系统总体设计 图
(2)各模块功能
表2-1 超市收银系统功能模块表
功能模块 包含子功能模块 功能
2
服务台模块 对会员信息的添加,修改,删除,查询及消会员管理子模块 费查询
商品管理子模块 对商品信息的添加,修改,删除
收银员模根据是否会员结账(消费大于二百元给一张九折的会员卡),块 把会员消费情况存入数据库
经理模块 查看某商品的信息以及某收银台的销售情况
公有模块 实现用户的身份验证,退出系统等功能
2.2 设计数据管理子系统
(1)数据库表
表2-2 数据库表
序号 数据库表 数据表存储的内容 1 member 存储会员的信息
2 goods 存储商品的信息
3 consume 存储会员消费的信息
4 cashier 存储收银员的信息
5 manager 存储经理的信息
6 service 存储服务台的息
7 desk 存储收银台信息
(2)数据库表结构
?会员表的详细数据字段:
表2-3 member会员表
序号 字段名 字段类型 说明 备注 1 membID varchar(20)not null 会员卡号 关键字 2 membName varchar(20)not null 会员姓名 3 idID varchar(50) 身份证号 4 Carddate varchar(50) 会员卡日期 5 Sum double 销售总额
3
?收银员表详细数据字段:
-4 cashier收银员表 表2
序号 字段名 字段类型 说明 备注 1 CashID varchar(20)not null 收银员编号 关键字 2 CashName varchar(20)not null 收银员姓名 3 CashPwd varchar(20)not null 收银员密码 4 CashDeskNvarchar(20) 收银台编号
o
?商品表goods的详细数据字段:
表2-5 goods商品表
序号 字段名 字段类型 说明 备注 1 GoodsID varchar(20)not null 商品编号 关键字 2 GoodsName varchar(20)not null 商品名称 3 Bid double not null 进价 4 SellPri double 售价 5 GSum int 总数 6 RemainNum int not null 剩余数 7 ImportDat varchar(50) 入库日期
?会员消费表consume的详细数据字段:
表2-6 consume会员消费表
序号 字段名 字段类型 说明 备注 1 MembID varchar(20)not null 会员编号 关键字 2 GoodsID varchar(20)not null 商品编号 关键字 3 SalesDat varchar(50)not null 消费日期 关键字 4 ConsuAmount varchar(20) not 消费数量 关键字
null
?服务台表service的详细数据字段:
4
表2-7 service服务台表
序号 字段名 字段类型 说明 备注 1 ServID varchar(20)not null 服务台编号 关键字 2 ServName varchar(20)not null 服务台用户名 3 ServPwd varchar(20)not null 服务台密码
?经理表manager的详细数据字段:
表2-8 manager系院表
序号 字段名 字段类型 说明 备注 1 ManagID varchar(20)not null 经理编号 关键字 2 ManagName varchar(20)not null 经理用户名 3 ManagPwd varchar(20)not null 经理密码
7 ?收银台desk销售表
表2-9 desk表
序号 字段名 字段类型 说明 备注 1 CashDeskNo 收银台编号 关键字 varchar(20)not null
2 Date varchar(20)not null 日期 关键字 3 SalesSum double 销售总额
2.3 设计人机交互子系统
(1)用户分类
本系统的用户可分为三类:
?服务台用户;
?收银员用户;
?经理用户。
(2)用户描述
?服务台用户的描述:服务台用户在整个收银系统中起到管理和
5
维护的作用,对会员,商品的信息进行管理和维护。
?收银员用户的描述:收银员用户在本系统中具有结账的权限。
?经理用户的描述:经理在本系统中具有查看某收银台消费状况以及某商品消费信息的权限。
(3)人机交互子系统
人机交互子系统在根据不同的用户身份登陆到不同的页面,
然后按照不同的用户只能进行用户权限内的操作,其结构图如下:
主系统界面
收银员用户 服务台用户 经理用户
查查会商结收看员品银某账 台商管管销品理 理 售信
情息 况
添删修添删修查查
加看 除改看加除改
会会会会会商商商
员 员 员品 品 品员员
信信信消
息 息 息 费
信
息
图2-2人机交互子系统结构 图
6
第3章 详细设计
3.1 用户登录流程图
开始
输入用户名、密码
验证用户名、密码
否 提示用户登录失败 验证正确
是
进入相应的用户页面
选择相关管理操作
安全退出系统
结束
图3-1 用户登录流程图
3.2顾客结账流程图
7
开始
填写顾客消费信息
是 否
是否会员
是 消费金额是
到服务台领取九折会员卡 否大于200结账 元
否 消费信息存入数据库 结账
退出
图3-2 结账流程图
3.3 服务台添加会员流程图
8
开始
转到添加会员
填写会员信息
点击添加 填写编号
提示重新填写编号 是 会员编号是
否重复,
否
添加会员
提示添加成功
退出
图 3-3 添加会员流程图
第4章 系统实现
本系统采用了三层架构来实现,即分为用户界面层、业务逻辑层和数据
访问层,用户界面层是展示给用户的界面;业务逻辑层是对系统业务实体的
封装;数据访问层直接与数据库打交道,为业务逻辑层提供底层的数据库操
作。
4.1 DbLink类主要是与数据库连接
package database;
import java.sql.*;
public class DbLink {//连接数据库
9
String dbURL;//数据库标识
String user;//data user
String password;
public DbLink(){
dbURL="jdbc:mysql://localhost:3306/supcash?useUnicode=true&
characterEncoding=GBK";
user="root";
password="";
}
public Connection getConnection()
{ try
{Class.forName("com.mysql.jdbc.Driver");
return
DriverManager.getConnection(dbURL,user,password);
}catch(Exception e){System.out.println("链接失败"+e.toString());}
return null;}
}
4.2 ServiceHandle类完成服务台用户登录验证的功能 package control;
import database.*;
import java.sql.*;
public class ServiceHandle {//完成服务台登录的验证
Connection conn;
PreparedStatement ps;
DbLink dbLink;
public ServiceHandle(){
conn=null;
ps=null;
dbLink=new DbLink();
}
public int Querywhethexs(String id,String psw) {//查询服务台登录用户是否存在
ResultSet rs = null;
int flag=0;
try{conn=dbLink.getConnection();
String sql="select * from service where ServID='"+id+"'and
ServPwd='"+psw+"'";
ps=conn.prepareStatement(sql);
10
rs=ps.executeQuery();
while(rs.next()){
if(rs.getString("ServPwd").equals(psw)&&rs.getString("ServID")
.equals(id))
flag=1;
}
}catch(Exception ex){}
return flag;
}
}
图4-1 服务台用户登录
11
4.3收银员结账界面
GoodsHandle类可获取商品价格及完成商品的添加,删除,修改,查询
package control;
import database.*;
import java.awt.*;
import java.sql.*;
import java.util.ArrayList;
import Gui.PayPanel;
public class GoodsHandle {
Connection conn;
PreparedStatement ps;
DbLink dbLink;
Dialog dialog;
public GoodsHandle(){
conn=null;
ps=null;
dbLink=new DbLink();
}
public void AddToDb(Goods goods){//添加某商品信息
try{conn=dbLink.getConnection();
String sql="insert into goods values(?,?, ?,?,?,?,?)";
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(Exception ex){}
}
public void delete(String s){//删除删除商品信息
try{conn=dbLink.getConnection();
String sql1="delete from goods where GoodsID='"+s+"'";
ps=conn.prepareStatement(sql1);
ps.execute();
String sql2="delete from Consume where GoodsID='"+s+"'";
ps=conn.prepareStatement(sql2);
12
ps.execute();
}catch(Exception ex){}
}
public void update(String a,String b,String c,String d,String f,String g){//修改商品信息
try{conn=dbLink.getConnection();
String sql="update goods set GoodsName='"+b+"',Bid="+c+",SellPri="+d
+",GSum="+f+",ImportDat='"+g+"'where GoodsID='"+a+"'";
ps=conn.prepareStatement(sql);
//System.out.println(userName);
ps.execute();
}catch(Exception ex){}
}
public ArrayList QueryAllFromDb(){//查询全部商品信息
ArrayList al=new ArrayList();
ResultSet rs=null;
try{conn=dbLink.getConnection();
String sql="select * from goods ";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
while(rs.next()){
String str="编号:"+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(Exception ex){}
return al;
}
public ArrayList QueryByIdFromDb(String GoodsID){
ArrayList al=new ArrayList(); //查询某商品全部信息
ResultSet rs=null;
try{conn=dbLink.getConnection();
String sql="select * from goods where GoodsID=?";
ps=conn.prepareStatement(sql);
//System.out.println(userName);
13
ps.setString(1,GoodsID);
rs=ps.executeQuery();
while(rs.next()){
String str="编号:"+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(Exception ex){}
return al;
}
public double QueryByIdFrDb(String GoodsID, int n){//查询某商品价格
ResultSet rs=null;double d=0;
try{conn=dbLink.getConnection();
String sql="select * from goods where GoodsID=?";
ps=conn.prepareStatement(sql);
ps.setString(1,GoodsID);
rs=ps.executeQuery();
while(rs.next()){
int a=Integer.parseInt(rs.getString(7))-n;
if(a<0){
dialog = new Dialog( dialog, "库存不够!", true);
dialog.show(); break;
}
String s="update goods set RemainNum='"+a+"'where
GoodsID="+GoodsID;
ps=conn.prepareStatement(s);
ps.execute();
d=Double.valueOf(rs.getString(4)).doubleValue();}
}catch(Exception ex){}
return d;
}
}
14
图 4-2收银员结账界面
图4-3 会员支付界面
15
第5章系统测试
在系统测试中,我们首先对各个子模块进行单元测试,即把每一个模块作为一个单独的实体来测试,保证每个模块作为一个单元能正确运行。然后在完成所有模块后,我们将各子模块集成起来,再对它进行系统测试,以及验证系统是否实现了指定的功能。最后找几个其他的同学再对系统进行黑盒子测试,验证系统是否满足用户的功能需求。
在测试的过程,发现了许多问题及功能缺陷,最后经过修改调试后都解决了。比如,有一个问题是在顾客购买某商品数量超过库存时系统照样存入数据库,经过修改,通过弹出对话框警告库存不够并拒绝存入数据库使问题得到了解决。
参考文献:
[1]史斌星.java基础及应用教程[M].北京:清华大学出版社.2007
[2]王珊,萨日煊.数据库系统概论(第四版)[M].北京:高等教育出版社.2008 [3]吴倩. java语言程序设计[M].北京:机械工业出版社.2007 [4]柳西玲.java语言程序设计基础[M].北京:清华大学出版社.2005 [5]刘宝林.java程序设计与案例[M].北京:高等教育出版社.2004
16