资源描述
《信息系统分析与设计》课程设计汇报
课 题: 零售商库存管理系统
学生姓名:
学生学号:
专业班级:
同组姓名:
指导教师:
设计时间:
评阅意见:
评估成绩:
指导老师签名:
年 月 日
目 录
1、课程设计目及意义 3
1.1 目 3
1.2 意义 3
2、系统分析与设计 4
2.1功能模块图 4
2.2 功能分析 4
2.3 数据流图 5
2.4 数据字典 6
2.5 概念构造设计 6
2.6 逻辑构造设计 7
3、系统实行运行成果 8
3.1运行环境 8
3.2 测试数据 8
3.3运行成果 9
4、总结 12
5、参照文献 13
6、附录 14
1、课程设计目及意义
1.1 目
伴随因特网兴起和应用普及,目运用信息系统对企业库存水平进行科学合理控制技术得到了迅速发展,并逐渐取代老式手工方式记录库存信息。由于库存领域存在着减少成本广阔空间,库存管理尤显重要。
通过改善物资采购方式和库存控制措施,可以减少采购费用和保管费用,减少资金占用。虽然加大库存可以起到提高客户服务率作用,不过,加大库存不仅要占用大量资金,并且要占用较大储存空间,会带来成本支出上升,在过高成本下维持高水平服务也不会长期;然而,库存过低无法满足订单灵活性,订单交货周期将加长,减少企业竞争力。因此,必须通过有效库存控制,在满足物流服务需求状况下,保持合适库存量。
1.2 意义
本次课程设计选用超市为研究对象,以这一熟悉生活实体为根据分析怎样更好地运用计算机系统和信息技术管理超市库存信息,从而更好地认识到管理信息系统在人们生活中所发挥日益重要作用。运用网络对库存信息进行记录和操作,实现企业信息化,有效控制企业成本,提高企业综合竞争力。
伴随科学技术发展,新产品不停出现,产品更新换代速度加紧。有产品,平均每二三个月更新换代一次。假如库存过多,就会因新产品出现使旧产品价值缩水,严重状况也许会一钱不值。从另一种角度看,消费者需求在朝着个性化、多样化方向发展,对商品挑剔程度在增大,从而导致商品花色品种越来越多,这给库存管理带来一定难度,也使库存风险加大。一旦消费者需求发生变化,过多库存就会成为陷入经营困境直接原因。因此,在多品种小批量商品流通时代,更需要运用现代库存管理技术科学地管理库存。
2、系统分析与设计
2.1功能模块图
本系统功能模块图如下:
超市库存管理系统
入库管理子系统
出库管理子系统
查询订单
修改订单
查询订单
删除订单
增长订单
图1 系统功能模块图
2.2 功能分析
考虑到系统安全性,首先对登录人员进行了权限判断:顾客、采购员、销售员、经理、超级顾客。
我所负责入库部分重要是针对采购员需要实现功能:查看目前数据库中订单,按需求增长订单,对订单状态进行修改功能。
当某项物资缺乏时,在零售商发出订货信息前首先需要查看目前与否发出过对该物资订单,若未对该物资订购时则发出订货信息,同步向数据中添加该订单记录,当物资抵达后应修改数据中订单状态,确定该订单已经完毕。
2.3 数据流图
本系统数据流图如下:
订单信息
采购员
订货
系统
事务
管理人员
图2 入库功能模块顶层数据流图
管理
人员
1
订货
事务
处理
库存信息表
2
产生
订单
采购员
订单信息表
库存清单
订单信息
事务
订单信息
订单信息
图3 入库功能模块第一层数据流图
管理
人员
库存信息表
采购员
1.1
查询订单
1.2
查询订单
库存信息
订单清单
事务
订单信息表
订单信息
订单信息
2
产生
订单
事务
1.3
修改订单状态
事务
图4 入库功能模块第二层数据流图
2.4 数据字典
名字:库存信息
别名:库存清单
描述:在处理事务时需要查询到目前库存有关信息
定义:库存信息=商品编号+商品名称+库存数量+产地+单价+品牌
位置:输出到显示屏
名字:订单信息
别名:订单清单
描述:每天一次给采购员需要订货商品表
定义:订单信息=采购员编号+商品编号+订购数量+库存数量+订购厂家+订购日期+订购状态+订购人姓名
位置:输出到打印机
图5 数据字典
2.5 概念构造设计
本系统E-R图如下:
产 地
商品编号
单 价
商品名称
商品
库存数量
品 牌
m
订购数量
订购日期
订购厂家
订购
库存数量
订购状态
1
采购员
采购员编号
图6 系统E-R图
2.6 逻辑构造设计
根据系统设计,将E-R图转换为关系模型如下:
(a)、库存信息表(商品编号,商品名称,库存数量,产地,单价,品牌);
(b)、顾客信息(顾客编号,名称,密码,住址,顾客权限,性别,年龄);
(c)、订货信息表(采购员编号,商品名称,订购数量,库存数量,订购厂家,订购日期,订购状态,订购人姓名);
对应建立三张表字段名、字段名称、字段类型、字段长度、主关键字、与否为空设置如下:
表1 库存信息表
字段名
名称
字段类型
长度
主关键字
非空
GoodsID
商品编号
int
4
是
是
GoodsName
商品名称
Varchar
50
否
否
GoodsNumber
库存数量
Int
4
否
否
GoodsProduct
产地
Varchar
50
否
否
GoodsPrice
单价
Float
8
否
否
GoodPP
品牌
Varchar
50
否
否
表2 顾客信息表
字段名
名称
字段类型
长度
主关键字
非空
userID
顾客编号
Int
4
是
是
userName
名称
Varchar
50
否
否
userPassword
密码
Varchar
50
否
否
userAddress
住址
Varchar
50
否
否
userAuthority
顾客权限
Varchar
50
否
否
userGender
性别
Varchar
10
否
否
userAge
年龄
Int
4
否
否
表3 订货信息表
字段名
名称
字段类型
长度
主关键字
非空
BuyerID
采购员编号
Int
4
是
是
BuyerGoodsName
商品名称
Varchar
50
否
否
BuyerGoodsNumber
订购数量
Varchar
50
否
否
GoodsNumber
库存数量
Int
4
否
否
BuyerManufacturer
订购厂家
Varchar
50
否
否
BuyerDate
订购日期
Varchar
50
否
否
BuyerStatus
订购状态
Varchar
10
否
否
BuyerName
订购人姓名
Varchar
50
否
否
3、系统实行运行成果
3.1运行环境
操作系统:Windows/XP或更高版本;
运行环境:Borland JBuilder9;
数据库开发工具:Microsoft Access 。
3.2 测试数据
运行时各表测试数据如下:
表4 库存信息表测试数据
GoodsID
GoodsName
GoodsNumber
GoodsProduct
GoodsPrice
GoodsSize
1
手机
100
北京
888
直板
2
音响
80
上海
88
漫步者
3
MP3
200
南京
158
OPPO
4
MP4
150
天津
250
OPPO
表5 顾客信息表测试数据
userID
user
Name
user
Password
user
Address
user
Authority
user
Gender
userAge
1
朱传蓉
123456
常德
admin
女
20
2
陈霞
123456
浏阳
manager
女
20
3
吴军
123456
株洲
saler
男
21
4
骆军
123456
永州
buyer
男
21
5
江展
123456
岳阳
customer
男
21
12
test
123456
常德
customer
女
20
13
刘丽
123456
湖南常德
customer
女
22
14
万方
123456
湖南常德
saler
男
25
表6 订货信息表测试数据
Buyer
ID
Buyer
GoodsName
Buyer
GoodsNumber
Buyer
Menfacture
BuyerDate
Buyer
Status
2
手机
100
摩托罗拉
未订
3
哇哈哈
1000
杭州哇哈哈集团
已订
4
音响
20
微软
未订
5
电脑
100
惠普
.10.10
未订
7
爽歪歪
100
太子奶
.01.02
未订
3.3运行成果
以采购员身份登录系统,可以进行查询订单,如图7;分项查询,如图8;增长订单,如图18;更改订单状态,如图20。
图7 查看所有订货单
图8 分项查询对话框
图9 分项查询记录
图10 增长订单对话框
图11 增长订单后
图12 更改订单状态
图13 更改订单后
4、总结
在课堂上我们学到了诸多有关管理信息系统理论知识,而这一周就是检查我们所掌握理论知识时刻。通过这一周上机实践使我对管理信息系统有了深入认识。
这一次我们小组课题是零售商库存信息管理系统。零售商设置合理库存水平是为了保证生产和经营过程持续性。库存起着蓄水池作用,通过设置库存可以防止由不确定性引起缺货而导致生产和经营过程停止。而老式库存控制措施在这个信息发达社会显然是不合用了,运用Internet实既有效地信息系统,建立畅通信息沟通渠道可以协助零售商维持合理库存水平,以便于减少成本,提高自身竞争力。
然而,要真正做好这一系统却不那么简朴,在设计过程中和设计完毕之后我们又发现了诸多局限性之处。这次课程设计我们小组选择了超市这毕生活中常见零售商作为分析对象,通过对它平常运作与库存分析,我们组设计了本课题简朴超市管理信息系统。由于超市管理系统难免会波及到大量交易数据,因此保证对数据库对操作以及数据库自身安全也是非常重要,同步通过对数据库中数据进行分析我们便能总结其规律,以确定合理库存水平。
我们小组设计超市管理系统设计了四种角色:超市管理员、经理、采购员、销售员,并根据登录人员身份设计有关功能。我所负责入库部分重要是实现对购入物资订单记录,对既有订单查询以判断与否需要订购商品,对订单状态修改等功能。
通过这次实践操作,让我发现了我自己尚有许多局限性之处,书本知识不够牢固,尚有待加强理论知识。“实践出真知”,在把理论运用到实践过程中,我学到了许多东西,巩固了在课堂上学到知识,懂得怎样把所学东西应运到实践中,让我懂得理论和实践是分不开,我们学习最终目就是要把理论变成实践指导。从本次设计中,我学到做任何事都要付出一定努力才可以获得成果。这一周学习不仅巩固了我们在课堂上所学理论知识,并且协助我们深入理解管理信息系统以及它在我们生活中重大作用。
5、参照文献
[1] 黄梯云.管理信息系统[M].北京:高等教育出版社.
[2] 黄晓东.Java课程设计案例精编(第二版)[M].北京:中国水利出版社,
[3] 向传杰.Java编程案例教程[M].北京:电子工业出版社,
[4] 王国华.供应链管理[M].北京:机械工业出版社,
[5] 薛华成.管理信息系统(第四版)[M].北京:清华大学出版社,
6、附录
import java.awt.*;
import javax.swing.*;
import com.borland.dx.sql.dataset.*;
import com.borland.dbswing.*;
import com.borland.jbcl.layout.*;
import java.awt.event.*;
public class BuyerWindow extends JDialog {
private JPanel panel1 = new JPanel();
private Database database1 = new Database();
private QueryDataSet queryDataSet1 = new QueryDataSet();
private QueryDataSet queryDataSet2 = new QueryDataSet();
private QueryDataSet queryDataSet3 = new QueryDataSet();
private QueryDataSet queryDataSet4 = new QueryDataSet();
private QueryDataSet queryDataSet5 = new QueryDataSet();
private XYLayout xYLayout1 = new XYLayout();
private JPanel jPanel1 = new JPanel();
private XYLayout xYLayout2 = new XYLayout();
private JdbTable jdbTable1 = new JdbTable();
private TableScrollPane tableScrollPane1 = new TableScrollPane();
private JButton jButton1 = new JButton();
private JButton jButton2 = new JButton();
private JButton jButton5 = new JButton();
private JButton jButton3 = new JButton();
private JButton jButton4 = new JButton();
public BuyerWindow(Frame frame, String title, boolean modal) {
super(frame, title, modal);
try {
jbInit();
pack();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
public BuyerWindow() {
this(null, "采购员", false);
}
private void jbInit() throws Exception {
panel1.setLayout(xYLayout1);
database1.setConnection(new com.borland.dx.sql.dataset.ConnectionDescriptor("jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=.\\xin.mdb", "", "", false, "sun.jdbc.odbc.JdbcOdbcDriver"));
jPanel1.setLayout(xYLayout2);
jButton1.setText("查看所有订货单");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
jButton2.setText("分项查询");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton2_actionPerformed(e);
}
});
jButton5.setText("退出");
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton5_actionPerformed(e);
}
});
jButton3.setText("增长订单");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton3_actionPerformed(e);
}
});
jButton4.setText("更改订单状态");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton4_actionPerformed(e);
}
});
panel1.add(jPanel1, new XYConstraints(190, 154, -1, -1));
panel1.add(jdbTable1, new XYConstraints(1, 0, 399, 238));
panel1.add(tableScrollPane1, new XYConstraints(192, 117, -1, -1));
panel1.add(jButton2, new XYConstraints(155, 244, 110, 23));
panel1.add(jButton1, new XYConstraints(8, 244, 128, 22));
panel1.add(jButton3, new XYConstraints(9, 274, 128, 20));
panel1.add(jButton4, new XYConstraints(155, 274, 111, 21));
panel1.add(jButton5, new XYConstraints(292, 274, 106, 22));
this.getContentPane().add(panel1, BorderLayout.SOUTH);
}
public void cancel(){
dispose() ;
}
//浏览所有商品订货单
void jButton1_actionPerformed(ActionEvent e) {
initialize () ;
queryDataSet1.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(database1, "SELECT Buyer_TABLE.BuyerID,Buyer_TABLE.BuyerGoodsName,Buyer_TABLE.BuyerGoodsNumber,Buyer_TABLE.BuyerM" +
"anufacturer,Buyer_TABLE.BuyerDate,Buyer_TABLE.BuyerStatus FROM Buyer_TABLE", null, true, Load.ALL));
jdbTable1.setDataSet(queryDataSet1);
queryDataSet1.refresh();
}
//增长订货单
void jButton3_actionPerformed(ActionEvent e) {
AddOrderForm addOrderForm = new AddOrderForm() ;
Dimension dlgSize = addOrderForm.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
addOrderForm.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
addOrderForm.setModal(true);
addOrderForm.pack();
addOrderForm.show();
queryDataSet1.refresh();
}
void jButton5_actionPerformed(ActionEvent e) {
cancel() ;
}
//分项选择
void jButton2_actionPerformed(ActionEvent e) {
QueryOrderForm queryOrderForm = new QueryOrderForm() ;
Dimension dlgSize = queryOrderForm.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
queryOrderForm.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
queryOrderForm.setModal(true);
queryOrderForm.pack();
queryOrderForm.show();
switch(queryOrderForm.gettestQuery()){
case 1:
initialize () ;
String BuyerGoodsName = queryOrderForm.getBuyerGoodsName().trim();
queryDataSet2.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(database1, "SELECT Buyer_TABLE.BuyerID,Buyer_TABLE.BuyerGoodsName,Buyer_TABLE.BuyerGoodsNumber,Buyer_TABLE.BuyerM" +
"anufacturer,Buyer_TABLE.BuyerDate,Buyer_TABLE.BuyerStatus FROM Buyer_TABLE WHERE BuyerGoodsName = '"+BuyerGoodsName+"'", null, true, Load.ALL));
jdbTable1.setDataSet(queryDataSet2);
queryDataSet2.refresh();
break;
case 2:
initialize () ;
String BuyerManufacturer = queryOrderForm.getBuyerManufacturer().trim();
queryDataSet3.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(database1, "SELECT Buyer_TABLE.BuyerID,Buyer_TABLE.BuyerGoodsName,Buyer_TABLE.BuyerGoodsNumber,Buyer_TABLE.BuyerM" +
"anufacturer,Buyer_TABLE.BuyerDate,Buyer_TABLE.BuyerStatus FROM Buyer_TABLE WHERE BuyerManufacturer = '"+BuyerManufacturer+"'", null, true, Load.ALL));
jdbTable1.setDataSet(queryDataSet3);
queryDataSet3.refresh();
break;
case 3:
initialize () ;
String BuyerDate = queryOrderForm.getBuyerDate().trim();
queryDataSet4.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(database1, "SELECT Buyer_TABLE.BuyerID,Buyer_TABLE.BuyerGoodsName,Buyer_TABLE.BuyerGoodsNumber,Buyer_TABLE.BuyerM" +
"anufacturer,Buyer_TABLE.BuyerDate,Buyer_TABLE.BuyerStatus FROM Buyer_TABLE WHERE BuyerDate = '"+BuyerDate+"'", null, true, Load.ALL));
jdbTable1.setDataSet(queryDataSet4);
queryDataSet4.refresh();
break;
case 4:
initialize () ;
String BuyerStatus = queryOrderForm.getBuyerStatus().trim();
queryDataSet5.setQuery(new com.borland.dx.sql.dataset.QueryDescriptor(database1, "SELECT Buyer_TABLE.BuyerID,Buyer_TABLE.BuyerGoodsName,Buyer_TABLE.BuyerGoodsNumber,Buyer_TABLE.BuyerM" +
"anufacturer,Buyer_TABLE.BuyerDate,Buyer_TABLE.BuyerStatus FROM Buyer_TABLE WHERE BuyerStatus = '"+BuyerStatus+"'", null, true, Load.ALL));
jdbTable1.setDataSet(queryDataSet5);
queryDataSet5.refresh();
break;
default:JOptionPane.showMessageDialog(null,"请选择对选项","",JOptionPane.DEFAULT_OPTION);
}
}
public void initialize (){
queryDataSet1.close() ;
queryDataSet2.close() ;
queryDataSet3.close() ;
queryDataSet4.close() ;
queryDataSet5.close() ;
}
void jButton4_actionPerformed(ActionEvent e) {
UpdateOrderForm updateOrderForm = new UpdateOrderForm() ;
Dimension dlgSize = updateOrderForm.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
updateOrderForm.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
updateOrderForm.setModal(true);
updateOrderForm.pack();
updateOrderForm.show();
queryDataSet1.refresh();
}
}
展开阅读全文