1、超市收银系统java课程设计 第1章 需求分析 1.1 超市收银系统需求分析 超市收银系统主要可分为收银员用户,经理用户和服务台用户。 (1)收银员用户的功能需求是对顾客是否会员进行判断及结账,然后把会员的消费状况分别存入会员表,消费表以及收银台表。 (2)服务台用户的需求是在会员管理子模块中对会员进行添加,删除,修改,查询以及会员详细消费信息的查询和在商品管理子模块中对商品的添加,修改,删除。 (3)经理用户的功能需求是对某收银台的销售总量和某商品的具体信息进行查询以了解超市的经营状况。1.2 类的说明 : (1)MembHandle类 方法有六个: AddToDb()用于添加会员; Que
2、ryAllFromDb() 用于查询全部会员信息; QueryByIdFromDb() 用于查询某会员的消费总额 delete() 用于删除某会员 update() 修改某会员信息 updateSum() 修改某会员的消费总额 (2)GoodsHandle类 方法有六个: AddToDb() 添加某商品信息 delete() 删除删除商品信息 update() 修改商品信息 QueryAllFromDb() 查询全部商品信息 QueryByIdFromDb() 查询某商品信息 QueryByIdFrDb() 查询某商品价格 (3)ConsumeHandle类 方法有三个 QueryConsuB
3、yID() 查询某会员详细消费信息 QueryAll() 查询全部会员详细消费信息 Add() 插入会员消费信息 (4)DeskHandle类 方法有三个 QueryAllFromDb() 查询全部收银台消费信息 QueryByIdFromDb() 查询某收银台消费信息 AddOrUpdate() 会员消费金额添加到收银台 (5)ManagHandle类 一个方法 Querywhethexs() 查询经理登录用户是否存在 (6)ServiceHandle类 一个方法 Querywhethexs( ) 查询服务台登录用户是否存在 (7) CashierHandle 一个方法 Querywheth
4、exs() 查询收银员登录用户是否存在第2章 系统总体设计2.1 总体设计(1)总体设计图(1)总体设计图 (2)各模块功能表2-1 超市收银系统功能模块表功能模块包含子功能模块功能服务台模块会员管理子模块商品管理子模块对会员信息的添加,修改,删除,查询及消费查询对商品信息的添加,修改,删除收银员模块根据是否会员结账(消费大于二百元给一张九折的会员卡),把会员消费情况存入数据库经理模块查看某商品的信息以及某收银台的销售情况公有模块实现用户的身份验证,退出系统等功能2.2 设计数据管理子系统(1)数据库表表2-2 数据库表序号数据库表数据表存储的内容1member存储会员的信息2goods存储商
5、品的信息3consume存储会员消费的信息4cashier存储收银员的信息5manager存储经理的信息6service存储服务台的息7desk存储收银台信息(2)数据库表结构会员表的详细数据字段:表2-3 member会员表序号字段名字段类型说明备注1membIDvarchar(20)not null会员卡号关键字2membNamevarchar(20)not null会员姓名3idIDvarchar(50)身份证号4Carddatevarchar(50)会员卡日期5Sumdouble 销售总额收银员表详细数据字段:表2-4 cashier收银员表序号字段名字段类型说明备注1CashIDva
6、rchar(20)not null收银员编号关键字2CashNamevarchar(20)not null收银员姓名3CashPwdvarchar(20)not null 收银员密码4CashDeskNovarchar(20)收银台编号商品表goods的详细数据字段:表2-5 goods商品表序号字段名字段类型说明备注1GoodsIDvarchar(20)not null商品编号关键字2GoodsNamevarchar(20)not null商品名称3Biddouble not null进价4SellPridouble 售价5GSumint 总数6RemainNumint not null剩余
7、数7ImportDatvarchar(50)入库日期会员消费表consume的详细数据字段:表2-6 consume会员消费表序号字段名字段类型说明备注1MembIDvarchar(20)not null会员编号关键字2GoodsIDvarchar(20)not null商品编号关键字3SalesDatvarchar(50)not null消费日期关键字4ConsuAmountvarchar(20) not null消费数量关键字服务台表service的详细数据字段:表2-7 service服务台表序号字段名字段类型说明备注1ServIDvarchar(20)not null服务台编号关键字2
8、ServNamevarchar(20)not null服务台用户名3ServPwdvarchar(20)not null服务台密码经理表manager的详细数据字段:表2-8 manager系院表序号字段名字段类型说明备注1ManagIDvarchar(20)not null经理编号关键字2ManagNamevarchar(20)not null经理用户名3ManagPwdvarchar(20)not null经理密码 收银台desk销售表 表2-9 desk表序号字段名字段类型说明备注1CashDeskNovarchar(20)not null收银台编号 关键字2Datevarchar(20
9、)not null日期关键字3SalesSumdouble销售总额2.3 设计人机交互子系统(1)用户分类本系统的用户可分为三类:服务台用户;收银员用户;经理用户。(2)用户描述服务台用户的描述:服务台用户在整个收银系统中起到管理和维护的作用,对会员,商品的信息进行管理和维护。收银员用户的描述:收银员用户在本系统中具有结账的权限。经理用户的描述:经理在本系统中具有查看某收银台消费状况以及某商品消费信息的权限。(3)人机交互子系统人机交互子系统在根据不同的用户身份登陆到不同的页面,然后按照不同的用户只能进行用户权限内的操作,其结构图如下: 第3章 详细设计3.1 用户登录流程图3.2顾客结账流程
10、图3.3 服务台添加会员流程图第4章 系统实现本系统采用了三层架构来实现,即分为用户界面层、业务逻辑层和数据访问层,用户界面层是展示给用户的界面;业务逻辑层是对系统业务实体的封装;数据访问层直接与数据库打交道,为业务逻辑层提供底层的数据库操作。4.1 DbLink类主要是与数据库连接 package database;import java.sql.*;public class DbLink /连接数据库 String dbURL;/数据库标识 String user;/data user String password; public DbLink() dbURL=jdbc:mysql:/l
11、ocalhost: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 ServiceHandl
12、e类完成服务台用户登录验证的功能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
13、= null; int flag=0; tryconn=dbLink.getConnection(); String sql=select * from service where ServID=+id+and ServPwd=+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(Exception ex) return flag;
14、图4-1 服务台用户登录 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
15、; ps=null; dbLink=new DbLink(); public void AddToDb(Goods goods)/添加某商品信息 tryconn=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.setStr
16、ing(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)/删除删除商品信息 trycon
17、n=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); ps.execute(); catch(Exception ex) public void update(String a,String b,String c,String d,String
18、f,String g)/修改商品信息 tryconn=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()/查询全部商品信息 ArrayL
19、ist al=new ArrayList(); ResultSet rs=null; tryconn=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
20、.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; tryconn=dbLink.getConnection(); String sql=select * from goods where GoodsID=?; ps=conn.prepareStatement(sql); /
21、System.out.println(userName); 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; publi
22、c double QueryByIdFrDb(String GoodsID, int n)/查询某商品价格 ResultSet rs=null;double d=0; tryconn=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;
23、if(a0) 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; 图 4-2收银员结账界面 图4-3 会员支付界面第5章系统测试在系统测试中,我们首先对各
24、个子模块进行单元测试,即把每一个模块作为一个单独的实体来测试,保证每个模块作为一个单元能正确运行。然后在完成所有模块后,我们将各子模块集成起来,再对它进行系统测试,以及验证系统是否实现了指定的功能。最后找几个其他的同学再对系统进行黑盒子测试,验证系统是否满足用户的功能需求。在测试的过程,发现了许多问题及功能缺陷,最后经过修改调试后都解决了。比如,有一个问题是在顾客购买某商品数量超过库存时系统照样存入数据库,经过修改,通过弹出对话框警告库存不够并拒绝存入数据库使问题得到了解决。参考文献:1史斌星.java基础及应用教程M.北京:清华大学出版社.2007 2王珊,萨日煊.数据库系统概论(第四版)M.北京:高等教育出版社.20083吴倩. java语言程序设计M.北京:机械工业出版社.20074柳西玲.java语言程序设计基础M.北京:清华大学出版社.20055刘宝林.java程序设计与案例M.北京:高等教育出版社.2004
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2