《学士学位论文—-企业进销存管理系统数据库课程设计.doc》由会员分享,可在线阅读,更多相关《学士学位论文—-企业进销存管理系统数据库课程设计.doc(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库与信息管理技术设计报告设计名称: 企业进销存管理系统专 业: xxxxxxxxx班 级:xxxxxxxxxx学 号: xxxxxxxx姓 名: xx指导教师: xx2015 年 xx 月 xx 日 目录一 绪论21.1需求分析31.2 项目开发的目标31.3.1 操作系统及其数据库41.3.2 编辑语言4二 系统分析与设计42.1 系统功能结构42.2 系统总体流程图52.3 系统所采用的架构:6三 数据库设计63.1创建数据库63.2创建数据表73.3 数据库关系图123.4 数据库使用到的视图13四 主程序设计144.1 登录界面144.2 主窗体效果144.3 各模块功能效果14五
2、、测试运行19六、心得体会23七、参考文献23附录1:部分java核心代码23附录2:数据库设计相关代码43一 绪论随着国内经济的高速发展,中小型的商品流通企业越来越多,其所经营商品种类繁多,难以管理,而进销存管理系统逐渐成为企业经营和管理中的核心环节,也是企业取得收益的关键。为了完善管理制度,增强企业的竞争力,因此必须开发出进销存管理系统,从而实现对商品管理的信息化。1.1 需求分析企业进销存管理系统的主要工作,是对企业的采购、进货、销售和库存以信息化的方式进行管理,最大限度地减少各个环节中可能出现的错误,有效减少盲目采购、降低采购成本、合理控制库存、减少资金占用并提高市场灵敏度,使企业能够
3、合理安排进销存的每个关键步骤,提升企业市场竞争力。针对这些问题,经销商对产品的进销存合理化提出了更高的要求。通过上网查阅资料以及研究分析可知,企业进销存管理系统应具有以下功能:(1) 界面美观大方、方便、快捷、操作灵活。(2) 通过主界面的按钮快速实现人机交互。(3) 实现强大的进销存管理,包括基本信息、采购、进货销售和库存管理。(4) 能够在不同的操作系统下运行,不局限于特定的平台。(5) 提供库存盘点功能。(6) 提供多条件查询和模糊查询功能。(7) 能够提供方便快捷的服务。1.2 项目开发的目标 实现企业信息化管理是现代社会中小企业稳步发展的必要条件,它可以提高企业的管理水平和工作效率,
4、最大限度地减少手工操作带来的失误。进销存管理的主要功能是实现企业进销存的信息化管理,主要功能包括商品的采购、销售和库存,另外还需要提供统计查询的功能,其中包括商品查询、供应商查询、客户查询等。并且还应达到以下的这些目标:(1) 灵活的人机交互界面,操作简单方便,界面简洁美观。(2) 可以通过菜单、工具栏灵活操作。(3) 对进货和销售提供相应的退货管理功能。(4) 实现各种查询,如单一条件查询或多条件查询等。(5) 可以随时修改系统口令。(6) 可以设置用户的使用权限。(7) 系统最大限度地实现易安装性、易维护性和已操作性。(8) 系统运行稳定、安全可靠。1.3.1 操作系统及其数据库 操作系统
5、:Windows8.1,数据库管理软件:Microsoft SQL SERVER2012 编程软件:Eclipse1.3.2 编辑语言 前台客户端的开发使用的是java语言,里面嵌入了SQL SERVER数据库操作的SQL语句。二 系统分析与设计2.1 系统功能结构 企业进销存管理系统必须提供商品信息、供应商信息和客户信息的基础信息,并提供强大的多条件搜索功能和商品的进货、销售和库存管理功能。此外,每个用户都有属于自己的权限,不同的用户对系统的操作不同。该系统还必须保证数据的安全性、完整性和准确性。 本系统包括基础信息、进货管理、销售管理、库存管理、查询统计、系统管理六大部分。系统机构如下图1
6、所示:企业进销存管理系统 查询统计库存管理系统管理销售管理进货管理基础信息管理 更改密码权限管理操作员管理供应商查询商品查询客户查询库存价格调整库存盘点销售退货销售单进货单进货退货客户信息管理商品信息管理供应商信息管理客户信息添加客户修改与删除商品信息添加商品修改与删除供应商信息添加供应商修改与删除 图1 企业进销存管理系统功能结构2.2 系统总体流程图系统管理查询统计库存管理销售管理基础信息管理进货管理操作员否是管理员是否成功登录用 户 图2 进销存系统流程图2.3 系统所采用的架构: 本系统所采用的结构是B/S架构,前台是以客户端的形式呈现,后台是以DBMS软件作为服务器来处理客户端发来的
7、请求并进行处理。前台客户端登录后按照界面提示完成相应的操作,后台的DBMS应用则会按照前台客户端执行的操作请求来执行相应的操作,从而达到对数据进行正确有效的管理。三 数据库设计3.1创建数据库 数据库使企业进销存管理系统的数据集合,是系统开发的首要环节。数据库结构设计的好坏直接影响着系统的效率和性能。为了方便数据库的创建,本系统使用Microsoft SQL SERVER2012来创建数据库,数据库名称为db_jxcmanager,创建完成后的效果如图三。 图3 SQL SERVER2012窗口3.2创建数据表 在已经创建好的数据库jxc_manager中创建了13个数据表,其具体内容如下所示
8、:(包含在sqlserver中所建表的截图)(1) 客户信息表(tb_khinfo)企业进销存管理系统将记录所有的客户信息,在销售、退货等操作时,将直接引用该客户的实体属性。客户信息包括客户编号、客户名称、简称、地址、电话、邮政编码、联系人、联系人电话、传真、开户行和账号,表结构如表4-1所示。 表4-1 tb_khinfo表结构字段名称类型说明idvarchar(50)客户编号,主键khnamevarchar(50)客户姓名jianvarchar(50)简称addressvarchar(100)地址bianmavarchar(50)邮政编码telvarchar(50)电话faxvarchar
9、(50)传真lianvarchar(50)联系人ltelvarchar(50)联系人电话yinhangvarchar(60)开户银行zhanghaovarchar(60)账号数据库中所建的表:客户信息表(tb_khinfo)(2) 供应商信息表(tb_gysinfo)不同的供应商可以为企业提供不同的商品,在商品信息中将引用商品供商的实体属性。供应商信息包括编号、名称、简称、地址、电话、邮政编码、传真、联系人、联系电话、开户银行和E-mail地址,表结构如表4-2所示。 表4-2 tb_gysinfo表结构字段名类型说明idvarchar(20)供应商编号,主键namevarchar(60)供应
10、商名称jcvarchar(50)简称addressvarchar(100)地址bianmavarchar(50)邮政编码telvarchar(50)联系电话faxvarchar(50)传真lianvarchar(50)联系人ltelvarchar(50)联系人电话yhvarchar(50)开户银行mailvarchar(50)E-mail地址数据库中所建的表:供应商信息表(tb_gysinfo)(3) 商品信息表(tb_spinfo)商品信息是进销存管理系统中的核心信息,系统将维护商品的进货、退货、销售、库存等操作。商品信息包括商品编号、名称、产地、单位、规格、包装、批号、批准文号、简称和供应
11、商,表结构如表4-3所示。 表4-3 tb_spinfo表结构字段名类型说明idvarchar(50)商品编号,主键spnamejc varchar(50)varchar(50)商品名称简称cdvarchar(60)产地dwvarchar(50)单位ggvarchar(50)规格bzvarchar(50)包装phvarchar(50)批号pzwhvarchar(50)批准文号memovarchar(90)简称gysnamevarchar(100)供应商数据库中所建的表:商品信息表(tb_spinfo)(4) 库存信息表(tb_kucun) 库存商品信息包括商品编号、名称、商品简称、产地、规格、
12、包装、单位、单价和库存数量,表结构如表4-4所示 表4-4 db_kucun表结构字段名类型说明idvarchar(30)商品编号,主键spnamevarchar(50)商品名称jcvarchar(50)简称cdvarchar(60)产地dwvarchar(50)单位ggvarchar(50)规格bzvarchar(50)包装djmoney单价kcslint库存数量数据库中所建的表:库存信息表(tb_kucun)(5) 进货详细表(tb_ruku_detail) 进货详细表包括编号、进货票号、商品编号、单价、进货数量,表结构如表4-5所示 表4-5 tb_ruku_detail表结构字段名类型
13、说明idint编号,主键,自增kcIDvarchar(30)进货票号,外键spidvarchar(50)商品编号,外键,参考tb_spinfo中的iddjmoney单价slint进货数量数据库中所建的表:进货详细表(tb_ruku_detail)(6) 进货主表(tb_ruku_main) 进货主要信息包括进货票号、进货总金额、验收结论、供应商名称、进货时间、经手人、操作员、结算方式,表结构如表4-6所示。 表4-6 tb_ruku_main表结构字段名类型说明rkIDvarchar(30)进货票号,主键jemoney进货总价ysjlvarchar(50)验收结论gysnamevarchar(
14、100)供应商名称rkdatevarchar(50)进货时间czyvarchar(30)操作员jsrvarchar(30)经手人jsfsvarchar(10)结算方式数据库中所建的表:库存信息表(tb_ruku_main)(7) 用户表(tb_userlist) 用户可以分为两种权限,即操作员和管理员权限。用户信息包括用户姓名、用户名、密码和权限,表结构如表4-7所示。 表4-7 tb_userlist表结构字段名类型说明namevarchar(50)用户姓名usernamevarchar(50)用户名,主键passvarchar(50)密码quanvarchar(2)权限,c表示操作员,a表
15、示管理员 数据库中所建的表:库存信息表(tb_userlist)进货退货详细表(tb_rkth_detail)、销售详细表(tb_sell_detail)、销售退货详细表(tb_xsth_detail)与 进货详细表(tb_ruku_detail)字段相似,进货退货主表(tb_rkth_main)、销售主表(tb_sell_main)、销售退货主表(tb_xsth_main)与进货主表(tb_ruku_main)字段相似,不一一详细列出具体看生成的sql语句查看3.3 数据库关系图 说明:tb_rkth_detail,tb_sell_detail,tb_xsth_detail,tb_ruku_
16、detail四张表的spid都是参考tb_spinfo里的主键id来进行外键约束的,来保证商品信息表里的商品在销售入库中均能出现。tb_rkth_detail,tb_sell_detail等的详细表里票号rkthID,sellID等是参考tb_rkth_main,tb_sell_main里的主键rkthID,sellID来进行外间约束的。3.4 数据库使用到的视图 在数据库设计过程中,考虑到后面的查询需要进行关联几张表。因此建立了几个视图选择相关联的三张表将其进行内连接并选出需要输出的信息,这样在后面进行前台查询时使得检索速度提升也可较为方便地显示出所需要的信息。四 主程序设计4.1 登录界面
17、 图4-1 登录界面登录默认用户名为admin,密码为admin。4.2 主窗体效果 图4-2 主窗体效果图主窗体界面是系统的欢迎界面,该窗体采用导航面板综合了系统菜单和工具栏的优点,使得界面更加美观,操作也更加地便捷。清晰地呈现了进销存系统所有的功能便于用户的使用。效果如图4-2所示。4.3 各模块功能效果基础信息管理 图4-3 基础信息管理选取基础信息管理里的商品信息管理为例来进行说明,通过较为方便的文本编辑框来实现。用户将信息在编辑框内修改完成后直接点击按钮便实现相应的功能,操作方便快捷。客户信息管理和供应商管理的界面与此例似。进货管理 进货管理主要包括进货单和进货退货两个部分。现以进货
18、退货功能为例。进货退货功能主要负责记录进货管理中的退货信息,界面效果如上图所示。在选择了退货的商品之后,单击【退货】按钮,将在表格中的商品退货信息更新到数据库中,从而使库存的商品数量减少。入库退货程序界面如图4-4所示销售管理 图4-5 销售单界面销售管理主要包括销售单和销售退货两个部分。现以销售单功能为例。销售单功能主要负责记录企业的商品销售信息,可以单击【添加】按钮,在商品表中添加销售的商品信息。在供应商下拉列表框中选择对应的客户,将会改变商品表中的商品记录。销售单程序界面如图4-5所示。查询统计图4-6 模糊查询 图 4-7 显示全部数据 企业进销存管理系统中的查询统计模块包括客户查询、
19、商品查询、供应商查询销售查询、销售退货查询、入库查询、入库退货查询功能。 客户查询功能主要用于查询系统中的客户信息,其查询方式可以分为客户全程匹配查询和模糊查询。程序界面如图4-6和图4-7所示。其中销售查询因为用到多表查询因此将多表进行内连接建立视图视图如数据库设计中的视图所示。 库存管理 图4-8 价格调整界面 企业进销存管理系统中的库存管理模块包括库存盘点和价格调整两个功能,由于库存盘点是将查询库存中的所有数据并显示在商品表格中,主要以价格调整进行说明。 价格调整的主要用于调整库存中的单价,当用户选择了指定的商品,价格调整功能的界面将会显示该商品在库存中的单价、库存数量、库存金额、单位、
20、产地等信息。程序界面如图4-8所示。用户可以修改商品单价并单击【确定】按钮,调整该商品的单价信息。系统管理 图4-9 更新密码界面 用户以管理员身份登录时,才可以对系统管理模块进行操作。企业进销存管理系统中的系统管理模块包括操作员管理、更新密码和权限管理3个部分,其中操作员管理包括添加操作员和删除操作员,由于这两种操作实现较为简单,重点说明更改密码和权限管理。 在进销存管理系统中,管理员可以修改自己的密码,但不可以修改操作员的密码。程序界面如图4-9所示。图4-10 权限管理界面 企业进销存管理系统中的用户分为两种权限:操作员和管理员,其中,管理员身份的用户在用户表中的权限标识为a,操作员身份
21、的用户在用户表中权限标识为c。在权限管理界面中,当用户选择下拉列表框中的用户时,该用户的详细信息将会填充界面中对应的文本框。用户可以选择该用户的权限,从而修改该用户权限。程序及界面如图4-10所示。五、测试运行(1)登录程序界面如下图5-1所示,程序默认用户名和密码分别为admin和admin。点击登录后程序连接入后台数据库进行用户名和密码校验成功后进入主界面。图5-1 登录界面(2)调试运行发现客户新成功添加入数据库。调试结果如上图5-2所示。供应商和商品信息管理与客户操作调试结果类似就不一一展示。图5-2 用户添加界面 (3)调试运行发现正确将商品的入库信息添加入数据库。调试结果如图5-3
22、所示。 图5-3 商品入库管理(进货单信息) (4)调试运行发现正确将商品的入库商品的退货信息正确添加入数据库。调试结果如图5-4所示。销售管理调试与进货管理调试结果类似。图5-4 商品入库退货管理(5)模糊查询调试结果如下图5-5所示,与数据库索保存的信息一致。图5-5 供应商信息模糊查询(6)调试发现商品的价格正确进行了调整(从1000调至1050)并正确更新到了数据库。调试结果如图5-6所示。 图5-6 商品价格调整(7)调试发现系统管理中的更改密码正确实现,并更新至数据库中。调试结果图5-7所示。图5-7 系统管理之密码更改六、心得体会 经过课堂上的学习,掌握不少关于数据库方面的知识,
23、但是理论理解好了并不能说明自己已经掌握好了这门学科,还需要进行实践练习才能真正掌握。虽然先前进行过一些实验,但只是熟悉了DBMS软件的简单使用还不是很熟练地理解一些方法和概念。 而课程设计正好给我提供一个难能可贵机会去巩固课堂知识并去结合入实践去进行练习。经过这次课设是自己对课堂上一些不是很理解的概念逐渐明白并掌握,这次课设自己使用的前台开发语言是java Swing和jdbc。通过课设使自己掌握掌握了一些原来Java课堂上没有学到的方法并加以灵活应用。最重要的一点是:通过课设是自己逐步建立其解决问题的基本步骤和解决方案这对以后的工作学习都有很大的帮助。完成一个较为完善的工程需要自己一步一个脚
24、印去逐步完成不可能一蹴而就,而且语言这个东西得勤加练习才能熟练。七、参考文献1.数据库系统概念(机械工业出版社第六版)。2. Java核心技术I(机械工业出版社第九版).3.java编程从基础到应用(清华大学出版社)4. java变相对象程序设计(清华大学出版社第二版)5.java编程思想(机械工业出版社第四版)附录1:部分java核心代码 1、登录界面java核心代码package com.lzw.login;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event
25、.KeyAdapter;import java.awt.event.KeyEvent;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JTextField;import javax.swing.WindowConstants;import com.lzw.JXCFrame;import com.lzw.dao.Dao;import
26、 com.lzw.model.TbUserlist;public class Login extends JFrameprivate JLabel userLabel;private JLabel passLabel;private JButton exit;private JButton login;private static TbUserlist user;public Login()setTitle(登录企业进销存管理系统!);final JPanel panel=new LoginPanel();panel.setLayout(null);getContentPane().add(p
27、anel);setBounds(300,200,panel.getWidth(),panel.getHeight();userLabel = new JLabel();userLabel.setText(用户名:);userLabel.setBounds(100, 135, 200, 18);panel.add(userLabel);final JTextField userName=new JTextField();userName.setText(admin); /默认用户名userName.setBounds(150, 135, 200, 18);panel.add(userName);
28、passLabel=new JLabel();passLabel.setText(密码:);passLabel.setBounds(100, 165, 200, 18);panel.add(passLabel);final JPasswordField userPassword=new JPasswordField();userPassword.addKeyListener(new KeyAdapter()public void KeyPressed(final KeyEvent e)if(e.getKeyCode() = 10)login.doClick(););userPassword.s
29、etBounds(150, 165, 200, 18);panel.add(userPassword);userPassword.setText(admin); /默认的密码login=new JButton();login.addActionListener(new ActionListener()public void actionPerformed(final ActionEvent e)user=Dao.getUser(userName.getText(),userPassword.getText();if(user.getUsername()=null | user.getName(
30、)=null)userName.setText(null);userPassword.setText(null);return;setVisible(false);new JXCFrame(););login.setText(登录);login.setBounds(180, 195, 60, 18);panel.add(login);exit=new JButton();exit.addActionListener(new ActionListener()public void actionPerformed(final ActionEvent e)System.exit(0););exit.
31、setText(退出);exit.setBounds(260,195,60,18);panel.add(exit);setVisible(true);setResizable(false); /设置窗体不可以自由改变大小setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);/setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);public static TbUserlist getUser()return user;public static void setUse
32、r(TbUserlist user)Login.user=user;2、主界面java核心代码public class JXCFrame private JPanel sysManagePanel;private JDesktopPane desktopPane;private JFrame frame;private JLabel backLabel;/ 创建窗体的Map类型集合对象private Map ifs = new HashMap();public JXCFrame() frame = new JFrame(企业进销存管理系统);frame.getContentPane().set
33、Background(new Color(170, 188, 120);frame.addComponentListener(new FrameListener();frame.getContentPane().setLayout(new BorderLayout();frame.setBounds(100, 100, 800, 600);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);backLabel = new JLabel();/ 背景标签backLabel.setVerticalAlignment(SwingConstants
34、.TOP);backLabel.setHorizontalAlignment(SwingConstants.CENTER);updateBackImage(); / 更新或初始化背景图片desktopPane = new JDesktopPane();desktopPane.add(backLabel, new Integer(Integer.MIN_VALUE);frame.getContentPane().add(desktopPane);JTabbedPane navigationPanel = createNavigationPanel(); / 创建导航标签面板frame.getCo
35、ntentPane().add(navigationPanel, BorderLayout.NORTH);frame.setVisible(true);public static void main(String args) SwingUtilities.invokeLater(new Runnable() public void run() new Login(););private JTabbedPane createNavigationPanel() / 创建导航标签面板的方法JTabbedPane tabbedPane = new JTabbedPane();tabbedPane.se
36、tFocusable(false);tabbedPane.setBackground(new Color(211, 230, 192);tabbedPane.setBorder(new BevelBorder(BevelBorder.RAISED);JPanel baseManagePanel = new JPanel(); / 基础信息管理面板baseManagePanel.setBackground(new Color(215, 223, 194);baseManagePanel.setLayout(new BoxLayout(baseManagePanel,BoxLayout.X_AXI
37、S);baseManagePanel.add(createFrameButton(客户信息管理, KeHuGuanLi);baseManagePanel.add(createFrameButton(商品信息管理, ShangPinGuanLi);baseManagePanel.add(createFrameButton(供应商信息管理, GysGuanLi);JPanel depotManagePanel = new JPanel(); / 库存管理面板depotManagePanel.setBackground(new Color(215, 223, 194);depotManagePane
38、l.setLayout(new BoxLayout(depotManagePanel,BoxLayout.X_AXIS);depotManagePanel.add(createFrameButton(库存盘点, KuCunPanDian);depotManagePanel.add(createFrameButton(价格调整, JiaGeTiaoZheng);JPanel sellManagePanel = new JPanel();/ 销售管理面板sellManagePanel.setBackground(new Color(215, 223, 194);sellManagePanel.se
39、tLayout(new BoxLayout(sellManagePanel,BoxLayout.X_AXIS);sellManagePanel.add(createFrameButton(销售单, XiaoShouDan);sellManagePanel.add(createFrameButton(销售退货, XiaoShouTuiHuo);JPanel searchStatisticPanel = new JPanel();/ 查询统计面板searchStatisticPanel.setBounds(0, 0, 600, 41);searchStatisticPanel.setName(se
40、archStatisticPanel);searchStatisticPanel.setBackground(new Color(215, 223, 194);searchStatisticPanel.setLayout(new BoxLayout(searchStatisticPanel,BoxLayout.X_AXIS);searchStatisticPanel.add(createFrameButton(客户信息查询, KeHuChaXun);searchStatisticPanel.add(createFrameButton(商品信息查询, ShangPinChaXun);search
41、StatisticPanel.add(createFrameButton(供应商信息查询,GongYingShangChaXun);searchStatisticPanel.add(createFrameButton(销售信息查询, XiaoShouChaXun);searchStatisticPanel.add(createFrameButton(销售退货查询,XiaoShouTuiHuoChaXun);searchStatisticPanel.add(createFrameButton(入库查询, RuKuChaXun);searchStatisticPanel.add(createFrameButton(入库退货查询, RuKuTuiHuoChaXun);/searchStatisticPanel.add(create