一.课设题目:小型自选商场商品管理
二.设计要求
对小型自选商场的商品进货、销售、库存等环节进行管理
三. 需求分析
3.1 信息要求
本系统包含商场库存基本信息,供应商基本信息,进货单记录信息,销售单
记录信息以及操作员权限信息等。
3.2 功能要求
本系统要求能对小型自选商场的商品进货、销售、库存等环节进行管理。主
要有:
1)能记录每一笔进货,查询商品的进货记录,并能按月进行统计。
2)能记录每一笔售货,查询商品的销售情况,并能进行日盘存、月盘存。
3)在记录进货及售货的同时,必须动态刷新库存。
4)能查询某个厂商或供应商的信息。
5)设计收银台程序,能根据输入的商品编号、数量,显示某顾客所购商品
的清单,并显示收付款情况。
3.3 可行性分析
系统数据库采用目前比较流行的 MySQL,开发本地数据库。该数据库系统
在安全行、准确性、运行速度方面有绝对的优势,并且处理数据库量大,效率高;
开发工具采用 eclipse。Eclipse 中的 GUI 可以快速创建界面。本次开发我用了
eclipse 中的一个插件 Jigloo 开发界面,手动画出需要的界面,代码自动生成。
1.设计模式:
○1 人员表(职工编号、密码、职工姓名、职位、工资)
○2 进货表(顺序码、条形码、进价、采购数量、采购日期、职工编号)
○3 售货表(顺序码、条形码、数量、零售价、销售日期、职工编号、一次交易每
种商品总价)
○4 库存表(条形码、商品名称、库存量、生产厂商、商品规格、零售价)
2.E-R 图:
职 位
工 资
进 价
条 形 码
顺 序 码
职 工 姓 名
职 工 编 号
零 售 价
m
m
人 员
m
销 售
n
查 询
条 形 码
商 品
n
销 售
采 购
n
货 源
n
入 库
1
库 存
n
1
采 购 日 期
采 购 数 量
零 售 价
商 品 规 格
商 品 名 称
生 产 厂 商
顺 序 码
总体功能图:
一 次 交 易 中 每
种 商 品 的 总 价
格
销 售 日
期
销 售 数
量
条 形 码
库 存 量
超市管理信息系统
销售人员
采购员
管理员
销
售
取
消
销
售
采
购
货
物
缺
货
查
询
库存
查询
雇
员
查
询
进
货
查
询
销
售
查
询
删
除
雇
员
添
加
雇
员
四.各功能模块详细设计
1) 用 MySQL 可 视 化 工 具 分 别 创 建 雇 员 表 (employee )、 进 货 表
(in_goods)、售货表(sale)、库存表(storage)四张表,并建立各种约
束条件。
建立的个如下图:
雇员表(employee):
2
进货表(in_goods):
售货表(sale):
库存表(storage):
五.前台界面的设计与实现
在这个模块中,主要有两个操作:“登陆”和“退出”。
“登陆”主要是将输入的编号、密码和数据库中的数据进行校验,如果数据
3
库中存在则允许登陆,否则不能登陆。主要代码如下:
q.initSQLLink(null, null, null);
q.setRs(q.getStmt().executeQuery("select * from employee"));
while(q.getRs().next()){
if(jTextField_id.getText().equals(q.getRs().getString("eid"))
&& pwd.equals(q.getRs().getString("pwd"))){
setVisible(false);
if(q.getRs().getString("job").equals("saler")){
JFrame_saler jf_s = new JFrame_saler();
jf_s.setLog_eid(jTextField_id.getText());
}else if(q.getRs().getString("job").equals("buyer")){
NewJFrame_buyer njb = new NewJFrame_buyer();
njb.setLog_eid(jTextField_id.getText());
if(q.getRs().getString("job").equals("administrator")){
}else
NewJFrame_adm nja = new NewJFrame_adm();
nja.setLog_eid(jTextField_id.getText());
}
dispose();//关闭本窗口
System.gc();//建议垃圾回收机制回收本窗口
flag = false;
}
JOptionPane.showMessageDialog(null, "您输入的编号与密码有误,请您重
}
if(flag){
新输入!");
}
jTextField_id.setText("");
jTextField_password.setText("");
flag = true;
“退出”则是退出登陆界面。
2) 销售人员模块
4
在这个模块中,销售人员主要有两个操作,即“销售商品”和“取消交
易”。“销售商品”分两步进行:
○1 先将需要销售的商品添加到 jtable 表中。首先输入条形码,如果数据
库中不存在此商品,则提示“没有此商品,请重新输入!”;否则,敲击“Enter”
键,商品的信息会自动显示在各 jTextField 文本框中。再点击“添加”,商品
添加到 jtable 表中,如果库存不足,则还会有相关提示。关于此部分功能的
代码如下:
while(q.getRs().next())
{
int num = q.getRs().getInt("s_num");
if(num
sale_num,price,eid,every_due_money)
values("+jTextField_barcode.getText()+","
+Integer.parseInt(jTextField_num.getText())
+","+Integer.parseInt(jTextField_price.getText()
)
+",'"+log_eid+"',"+every_due_money+")");
//添加下一行
tableModel.addRow(new Object[]{jTextField_barcode.getText(),
jTextField_name.getText(),jTextField_price.getText(),
jTextField_num.getText(),jTextField_commodity.getText()}
);
//将文本框中的内容清空,以便下一次输入
clearTextField();
break;
}
}
○2 添加完成要销售的商品时,进行提交,即将销售记录保存在数据库中。
提交代码如下:
stmt.executeQuery(“commit”);
3) 采购员模块
采购员模块主要有三个功能:向库存中添加货物、缺货查询和库存查询。
○1 添加货物中也用到了信息的自动显示的功能,此功能在前面已描述,
6
这里不再说明。本模块的添加功能与销售模块中的添加货物功能相似,只是
此模块的添加货物的过程中,直接把货物的信息提交到数据库中。
○2 缺货查询。此功能比较简单,就是把库存中数量小于5的商品显示到
jTable中。以后的查询和此功能相似,于是我把所有的查询功能打包成一
个Query类,如果要用到查询功能,就可以在其所在的类中创建一个Query
对象,直接调用Query中的查询方法buyer_storageQuery
(DefaultTableModel tableModel , String str),其中
tableModel为将查询结果输入到table表中的table格式名,str为将要
查询内容的SQL语句,将其作为字符串参数传入到query()方法中,其查
询条件是str = "select * from storage where s_num < 5"。其
方法的主要代码如下:
initSQLLink(null , null , null);
rs = stmt.executeQuery(str+"");
NewJFrame_buyer. addRow_allQuery(tableModel , rs);
注:initSQLLink(null , null , null)是将连接数据库的参数初始化的
方法,其具体代码如下:
protected void initSQLLink(Connection c , Statement s , ResultSet r){
conn = c;
stmt = s;
rs = r;
try {
Class.forName("com.mysql.jdbc.Driver");
//2.建立连接
conn = DriverManager.getConnection("jdbc:mysql://Localhost
:3306/supermarket", "root", "19861004");
//3.获取Statement对象
stmt = conn.createStatement();
} catch (ClassNotFoundException e) {
System.out.println("没有找到类异常!");
} catch (SQLException e) {
System.out.println("SQL语句错误!");
}
}
○3 库存查询与缺货查询类似,库存查询是将库存中所有商品的信息全部打印
出来。要完成查询功能,只需将查询条件 str 换成 select * from storage
7
即可。
5)管理员模块
管理员模块的功能较多,但是不很复杂。其主要功能有:添加雇员、删除雇
员、雇员信息查询、货物查询。其中,货物查询又包括销售查询、库存查询和进
货查询。
○1 添加雇员,就是将新员工的信息添加到数据库中。先输入雇员编号,如
果此雇员编号存在,则提示管理员重新输入雇员编号;如果输入的信息不全,则
提示“不能添加空值”;否则,输入新雇员的全部信息。还有,雇员的职位只能
有三种:销售员(saler)、采购员(buyer)、管理员(administrator)。点击“添加雇
员”,将雇员信息添加到数据库中。其代码如下:
if(jTextField_eid.getText().equals("")
&&jTextField_ename.getText().equals("")
&&jTextField_pwd.getText().equals("")
&&jTextField_job.getText().equals("")
&&jTextField_sal.getText().equals(""))
JOptionPane.showMessageDialog(null, "不能添加空值!");//提示消息对话框
else
{//----------------------数据库连接-------------------------------
boolean flag = true;
//1.加载驱动
try {
8