企业进存销系统分析设计.docx
- 文档编号:29667697
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:22
- 大小:451.92KB
企业进存销系统分析设计.docx
《企业进存销系统分析设计.docx》由会员分享,可在线阅读,更多相关《企业进存销系统分析设计.docx(22页珍藏版)》请在冰豆网上搜索。
企业进存销系统分析设计
企业进存销系统分析设计
1、目的与要求
目的:
通过本实验,对已经学到的知识点进行一次综合创新训练。
重点包括图形界面设计、数据库操作、错误处理、事件处理、输入输出流等内容。
要求:
本实验对主题不做统一规定,只要求几个技术指标。
1).可以采用JavaApplication或网站形式,如Application要求主窗体由菜单导航,总共不少于5个窗体。
2).数据库结合应用自行设计,但数据库表最少不少于3个,至少有两个表存在父子表关系,即存在外健约束。
对数据的添加、删除、修改和查询等操作都应该有所体现。
3).至少存在一个输入输出流的读写操作。
4).至少应参考两个现有的较综合的代码示例(但程序应以自己的设计思路为主线,不能做“逆向工程”),交付作业时应携带自己参考引用的源代码。
5).最后提交成果为可运行的jar包(需写明配置要求),和一份综合实验报告(每人一份需打印),提交时需要演示程序和回答问题。
6).1-3人可以形成一个团队完成某一个选题,但必须有明确的分工。
7).综合报告按照给定模板格式写(否则重做),正文字体采用5号字体,主页排版,尽量节约使用纸张,最多不能超过20页(包括封面和目录)。
2、系统功能概要设计
企业进销存管理系统主要目的是实现企业信息化管理,主要业务为商品的采购、销售、入库。
另外提供统计查询功能,包括商品查询、供应商查询、客户查询、销售查询、入库查询和销售排行等。
系统包含:
基础信息管理、进货管理、销售管理、库存管理、查询统计、系统管理6个部分。
通过项目的实施,可以达到降低成本、提高效率、合理控制库存、减少资金占用,提高企业的市场竞争力的目标。
系统拟实现目标如下:
1、界面设计简洁、友好、美观
2、操作简单、快捷、方便
3、数据库存储安全、可靠
4、强大的查询功能、保证数据查询的灵活性
5、提供灵活、方便的权限设置,使整个系统管理分工明确
3、数据库概要设计
本系统采用SQLServer2000平台,系统主要实现从进货、库存到销售的一体化信息管理,涉及商品、商品供应商、购买商品的客户等多个实体,以下绘制出关键实体的E-R图:
1、商品实体:
包含商品的基本信息,系统将维护商品的进货、销售、退货、入库等操作。
2、供应商实体:
3、客户实体:
记录所有的客户信息,在销售、退货等操作时,直接引用该客户的实体属性,包括:
客户编号、客户名称、简称、地址、电话、邮政编码、联系人、联系人电话、传真等等属性。
各属性定义如下:
属性名
含义
数据类型
长度
主键
外键
允许空
tb_spinfo
商品信息表
id
编号
varchar
50
是
否
spname
名称
varchar
50
否
jc
简称
Varchar
50
是
cd
产地
Varchar
60
是
dw
单位
Varchar
50
否
gg
规格
Varchar
50
否
bz
包装
Varchar
50
是
ph
批号
Varchar
50
是
pzwh
批准文号
Varchar
50
是
memo
简介
Varchar
90
是
gysname
供应商名称
Varchar
100
是
是
tb_gysinfo
供应商信息表
id
编号
varchar
50
是
否
name
名称
varchar
60
是
jc
简称
varchar
50
是
adress
地址
varchar
100
是
bianma
邮政编码
varchar
50
是
tel
电话
varchar
50
是
fax
传真
varchar
50
是
lian
联系人
varchar
50
是
ltel
联系人电话
varchar
50
是
yh
开户行
varchar
50
是
varchar
50
是
tb_khinfo
客户信息表
id
编号
Varchar
50
是
否
khname
名称
Varchar
50
是
jian
简称
Varchar
50
是
address
地址
Varchar
100
是
bianma
邮政编码
Varchar
50
是
tel
电话
Varchar
50
是
fax
传真
Varchar
50
是
lian
联系人
Varchar
50
是
ltel
联系人电话
Varchar
50
是
Varchar
50
是
xinhang
开户行
Varchar
60
是
hao
帐号
Varchar
60
是
4、主要自定义类描述
主程序:
登录窗口:
添加面板:
修改面板:
查询面板:
5、部分关键代码
1、数据库连接代码:
本系统采用数据库与前台操作系统直连的方式,直接在前台系统中加载SQLServer2000的数据库驱动文件“msbase.jar、mssqlserver.jar、msutil.jar”,组成一个类,加载类库后连接运行。
主要代码如下:
Publicclasscom.microsoft.jdbc.sqlserver.SQLServerConnectionextends.microsoft,jdbc.BaseConnection{
Privatestaticjava.lang.Stringfootprint;
Com.microsoft.jdbc.sqlserver,SQLServerImpIConnection;
Com.microsoft.jdbc.sqlserver,SQLServerImpIDatabaseMetaDatadatabaseMetaData;
IntmaxPrecision;
Java.lang.BooleansendStringParametersAsUnicode;
Static{};
PublicSQLServerConnection();
……
}
2、综合组装主程序代码:
packagecom.lzw;
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.Image;
importjava.awt.Insets;
importjava.awt.Toolkit;
importjava.awt.event.ActionEvent;
importjava.awt.event.ComponentAdapter;
importjava.awt.event.ComponentEvent;
importjava.beans.PropertyVetoException;
importjava.lang.reflect.Constructor;
import.URL;
importjava.util.HashMap;
importjava.util.Map;
……
importcom.lzw.login.Login;
publicclassJXCFrame{
privateJPanelsysManagePanel;
privateJDesktopPanedesktopPane;
privateJFrameframe;
privateJLabelbackLabel;
//创建窗体的Map类型集合对象
privateMap
publicJXCFrame(){
frame=newJFrame("企业进销存管理系统");
frame.getContentPane().setBackground(newColor(170,188,120));
frame.addComponentListener(newFrameListener());
frame.getContentPane().setLayout(newBorderLayout());
frame.setBounds(100,100,800,600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
backLabel=newJLabel();//背景标签
backLabel.setVerticalAlignment(SwingConstants.TOP);
backLabel.setHorizontalAlignment(SwingConstants.CENTER);
updateBackImage();//更新或初始化背景图片
desktopPane=newJDesktopPane();
desktopPane.add(backLabel,newInteger(Integer.MIN_VALUE));
frame.getContentPane().add(desktopPane);
JTabbedPanenavigationPanel=createNavigationPanel();//创建导航标签面板
frame.getContentPane().add(navigationPanel,BorderLayout.NORTH);
frame.setVisible(true);
}
publicstaticvoidmain(String[]args){
SwingUtilities.invokeLater(newRunnable(){
publicvoidrun(){
newLogin();
}
});
}
privateJTabbedPanecreateNavigationPanel(){//创建导航标签面板的方法
JTabbedPanetabbedPane=newJTabbedPane();
tabbedPane.setFocusable(false);
tabbedPane.setBackground(newColor(211,230,192));
tabbedPane.setBorder(newBevelBorder(BevelBorder.RAISED));
JPanelbaseManagePanel=newJPanel();//基础信息管理面板
baseManagePanel.setBackground(newColor(215,223,194));
baseManagePanel.setLayout(newBoxLayout(baseManagePanel,
BoxLayout.X_AXIS));
baseManagePanel.add(createFrameButton("客户信息管理","KeHuGuanLi"));
baseManagePanel.add(createFrameButton("商品信息管理","ShangPinGuanLi"));
baseManagePanel.add(createFrameButton("供应商信息管理","GysGuanLi"));
JPaneldepotManagePanel=newJPanel();//库存管理面板
depotManagePanel.setBackground(newColor(215,223,194));
depotManagePanel.setLayout(newBoxLayout(depotManagePanel,
BoxLayout.X_AXIS));
depotManagePanel.add(createFrameButton("库存盘点","KuCunPanDian"));
depotManagePanel.add(createFrameButton("价格调整","JiaGeTiaoZheng"));
JPanelsellManagePanel=newJPanel();//销售管理面板
sellManagePanel.setBackground(newColor(215,223,194));
sellManagePanel.setLayout(newBoxLayout(sellManagePanel,
BoxLayout.X_AXIS));
sellManagePanel.add(createFrameButton("销售单","XiaoShouDan"));
sellManagePanel.add(createFrameButton("销售退货","XiaoShouTuiHuo"));
JPanelsearchStatisticPanel=newJPanel();//查询统计面板
searchStatisticPanel.setBounds(0,0,600,41);
searchStatisticPanel.setName("searchStatisticPanel");
searchStatisticPanel.setBackground(newColor(215,223,194));
searchStatisticPanel.setLayout(newBoxLayout(searchStatisticPanel,
BoxLayout.X_AXIS));
searchStatisticPanel.add(createFrameButton("客户信息查询","KeHuChaXun"));
searchStatisticPanel.add(createFrameButton("商品信息查询","ShangPinChaXun"));
searchStatisticPanel.add(createFrameButton("供应商信息查询",
"GongYingShangChaXun"));
searchStatisticPanel.add(createFrameButton("销售信息查询","XiaoShouChaXun"));
searchStatisticPanel.add(createFrameButton("销售退货查询",
"XiaoShouTuiHuoChaXun"));
searchStatisticPanel.add(createFrameButton("入库查询","RuKuChaXun"));
searchStatisticPanel
.add(createFrameButton("入库退货查询","RuKuTuiHuoChaXun"));
searchStatisticPanel.add(createFrameButton("销售排行","XiaoShouPaiHang"));
JPanelstockManagePanel=newJPanel();//进货管理面板
stockManagePanel.setBackground(newColor(215,223,194));
stockManagePanel.setLayout(newBoxLayout(stockManagePanel,
BoxLayout.X_AXIS));
stockManagePanel.add(createFrameButton("进货单","JinHuoDan"));
stockManagePanel.add(createFrameButton("进货退货","JinHuoTuiHuo"));
sysManagePanel=newJPanel();//系统管理面板
sysManagePanel.setBackground(newColor(215,223,194));
sysManagePanel
.setLayout(newBoxLayout(sysManagePanel,BoxLayout.X_AXIS));
sysManagePanel.add(createFrameButton("操作员管理","CzyGL"));
sysManagePanel.add(createFrameButton("更改密码","GengGaiMiMa"));
sysManagePanel.add(createFrameButton("权限管理","QuanManager"));
tabbedPane.addTab("基础信息管理",null,baseManagePanel,"基础信息管理");
tabbedPane.addTab("进货管理",null,stockManagePanel,"进货管理");
tabbedPane.addTab("销售管理",null,sellManagePanel,"销售管理");
tabbedPane.addTab("查询统计",null,searchStatisticPanel,"查询统计");
tabbedPane.addTab("库存管理",null,depotManagePanel,"库存管理");
tabbedPane.addTab("系统管理",null,sysManagePanel,"系统管理");
returntabbedPane;
}
6、系统特色描述
结合界面截图,说明系统的特色,如界面设计、操作简便性、容错性、多线程、多媒体等等。
1、登录窗口:
根据已经注册的管理员用户名及密码进行登陆。
2、主窗口:
主窗口以简洁的界面设计为主,各功能通过菜单栏极其子项目的点击进行实现。
系统共有基础信息管理、进货管理、销售管理、查询统计、库存管理、系统管理6大功能。
各功能又分别有:
客户信息管理、商品信息管理、供应商信息管理;进货单、进货退货;销售单、销售退货;客户查询、商品查询、供应商查询、销售查询、销售退货查询、入库查询、入库退货查询、销售排行;库存盘点、价格调整;操作员管理、权限管理、修改密码等功能。
3、窗口:
点击寻要实现的功能按钮时,会在主程序界面内弹出窗口,根据需要进行适当的操作,点击保存或修改等按钮,实现功能并关闭窗口。
可以在实际应用中同时打开多个窗口进行操作。
4、添加、修改、删除窗口:
分别填写各个项目进行添加,点击保存完成添加,点击重置重新填写。
填写各个项目时会有数字或文本,非空与否的限制,如果填写不正确,会弹出出错提示窗口,提醒用户重新输入;如果填写正确,会弹出保存成功的提示窗口。
同理可对已添加项目进行修改或删除操作。
5、进、销货处理:
进货或销售时由经手人进行填写,系统的某些项目,如进货单号、销售单号等是自动累积生成的,不可修改。
由下拉选项选择商品信息,点击添加或销售(入库)按钮完成功能。
系统另提供各种查询功能,用户可根据需要进行查看,根据结果进行管理、决策等措施。
6、查询统计:
选择商品名称或简称,等于或包含,输入文本信息,点击查询进行查询功能的视线。
另外,系统还提供了销售排行功能,可以选择相应时期内的销售排行的升序或降序排行进行查看。
选择时间段,并选择是按金钱或数量排序,可进行升序或降序排序,点击确定显示排序结果。
7、库存情况显示:
可以点击库存盘点直接显示库存状况.
8、系统管理员设置:
点击进行添加和删除管理员的操作.
另外可以对已注册用户进行密码的修改和权限的更改:
7、总结与感想
通过这学期对于Java语言的学习,熟悉了另外一种编程语言,对于Java的理论知识有了一定程度的了解与掌握。
但是在程序设计的实践中,发现了自己学习中的许多不足,理论应用于实际时总会遇到很多问题。
而通过不断的找寻解决问题的方法,自己对于Java程序设计语言的掌握也得到了进一步的深化。
语法学习的理论学习阶段是最容易的阶段,学习任何语言,基础一定要打好。
所以学习JAVA一定要先把JAVA的几个基本组成元素学好。
以下是我总结出来的学习顺序和注意事项:
1、数据类型JAVA是一种强类型语言,各种类型不会自动转换,使用前必须先定义。
2、方法方法相当于定义一个“宏”、一个“函数”,方法的定义格式为:
“说明符修饰符返回值方法名(参数){方法体}。
”
3、类在JAVA中最经常听到词,类的定义格式为:
说明符class类名extends超类名implements接口名{主体}
4、变量常量JAVA的常量名一般用全大写字母表示,并且为了节省内存,一般定义为静态(JAVA程序中的名字我们经常有个默认的规则,类名所有单词第一个字母大写,方法名第二个单词开始第一个字母大写,变量名小写,这样我们一看程序就非常清楚了),变量的定义格式为:
“修饰符数据类型变量名”,变量在类中定义(不在方法体中的部分称为域)和在方法体中定义是不同的(在方法体中定义不需要修饰符)。
学习变量的时候要注意两个特殊的“this”和“super”。
同时我们就要学习什么叫“覆盖”、“重载”。
5、控制流所有的编程语言的控制语句无非就是几个ifelseforwhiledoswitch。
6、接口:
一个抽象的东西,接口可以多继承,解决了类只能单继承的问题。
接口的定义格式为:
说明符interface接口名{主体},接口内的方法都是没有主体的,只有常量或变量。
当类使用接口的时候,一定要"覆盖"接口的方法。
7、线程:
线程是个比较复杂的东西,例如一个赛马程序有七匹马赛跑,就有七个线程,看起来好象是同时在跑,其实是计算机分配不同的时间段让七个线程运行。
Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。
1、Java语言是简单的。
Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。
另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。
特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。
2、Java语言是一个面向对象的。
J
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 企业 进存销 系统分析 设计