(一)主窗体设计
主窗体是系统的欢迎界面。用程序的主窗体包括系统菜单和工具栏,其中系统菜单是包含系统中所有功能的菜单项,工具栏是提供常用的功能的快捷访问按钮。(该系统采用了导航面板综合了系统菜单和工具栏的优点,导航面板的界面更美观,操作更快捷。)
1.创建主窗体
1) 创建JXCFrame类,在类中创建和初始化窗体对象,为窗体添加桌面面板,
并且设置背景图片。
Frame=new JFrame(“企业进销存管理系统”);//创建窗体对象 desktopPanel=new JDeskPanel();//创建桌面面板
JTabbedPane navigationPanel=createNavigationPanel();//创建导航
面板
16
2) 编写updateBackImage()方法,初始化背景标签,背景标签使用HTML超
文本语言设置了主窗体的背景图片(该图片会随着主窗体的大小自动缩放)。
3) 在类的静态代码中设置了系统的外观样式。使用了UIManager类的
setLookAndFeel()方法设置程序界面使用本地外观。
4) 编写主窗体的mian()入口方法,创建登录窗体对象(登录窗体会验证登
录信息,并显示主窗体界面) (二)创建导航面板
1) 在JXCFrame类中编写createNavigationPanel()方法,创建JTabbePanel
选项卡面板对象。(为了突出选项卡的立体效果,设置该选项卡使用了BevelBorder边框效果。)然后依次创建了基础信息管理面板、库存管理面板、销售管理面板、查询统计面板、进货管理面板和系统管理面板的选项卡。
JTabbedPane tabbedPane=new JTabbedPane();//创建JTabbePanel选项
卡面板对象
JPanel baseManagePanel=new JPanel();//基础信息管理面板 JPanel depotManagePanel=new JPanel();//库存管理面板 JPanel sellManagePanel=new JPanel();//销售管理面板 JPanel searchStatisticPanel=new JPanel();//查询统计面板 JPanel stockManagePanel=new JPanel();//进货管理面板 JPanel sysManagePanel=new JPanel();//管理系统面板
2) 编写createFrameButton()方法,该方法负责创建Action对象,该对象
是用来创建并显示窗体对象,(图标、文本等属性),本系统没有使用系统菜单,所以该方法直接创建按钮对象。
Icon icon=new ImageIcon(imgUrl);//创建按钮图标
Icon_roll=new ImageIcon(imgUrl_roll);//创建鼠标经过按钮的图标
17
Icon_down=new ImageIcon(imgUrl_down);//创建按钮按下的图标 Action action=new openFrameAction(fName,cname,icon);//用
openFrameAction类创建Actio对象
3) 编写内部类openFrameAction,它必须要继承AbstraAction类实现Action
接口。该类用于创建导航按钮的Ation对象,并且为每一个导航按钮定义创建不同窗体对象的动作监听器,当这个监听器的按钮被按下时,调用getFrame()方法获取相应的窗体对象,并显示在主窗体中。
4) 编写getIFrame()方法。该方法就是用来创建指定名称的窗体对象,使用
了java反射技术,调用不同窗体类的默认构造方法创建窗体对象。 (三)公共模块设计 1.编写Dao公共类
1) Dao类主要负责有关数据库的操作,该类在静态代码段中驱动并连接数据
库,然后将所有的数据库访问方法定义为静态的。
Class.forName(dbClassName).newInstance();//加载数据库驱动类 conn=DriverManager.getConnection(dbUrl,dbUser,dbPwd);//获取数
据库连接
2) addGys()方法(添加供应商信息的方法)
该方法用于添加供应商的基础信息,它接收供应商的实体类TbGysinfo作方法的参数,然后把实体对象中的所有属性存入供应商数据表中。
3) getGysinfo()方法(读取指定供应商的信息)
该方法将根据Item对象中封装的供应商ID编号和供应商名称获取供应商的数据,然后将该供应商的数据封装到实体对象中,然后返回该实体对象。
4) updateGys()方法(修改供应商信息的方法)
该方法用于更新供应商的基础信息,它接收供应商的实体类TbGysinfo作方法参数,在方法中直接解析供应商实体对象中的属性,并且将这些属性更新到数据表中。
18
5) insertRukuInfo()方法
该方法负责完成入库单信息的添加,(库存表、入库主表、入库详细表等多个数据表的操作)。为了保证数据的完整性,该方法将入库信息的添加操作放在事务中完成,方法将接收入库主表的实体类TbRukuMain作为参数,该实体类中包含了入库详细表的引用。
6) getKucun()方法
该方法用于获取指定商品ID编号或者名称的库存信息,方法接收一个Item对象作参数,该对象中封装了商品的ID编号和商品的名称信息,如果库存表中存在该商品的库存记录,就获取该记录并将记录中的数据封装到库存表的实体对象中,然后将该实体对象作为方法的返回值。
2.编写Item类
Item类主要用于封装和传递参数信息,这是典型命令模式的实现。 在Dao类中经常使用该类作为方法参数;在各个窗体界面中也经常使用该类作组件数据,其toString()方法将返回name属性值,所以显示到各个组件上的内容是Item类的对象所代表的商品、供应商、或者客户等信息的名称。 (四)基础信息主要功能模块详细设计
基础信息管理模块的有三个功能:客户信息管理、商品信息管理和供应商信息管理。其中客户信息管理所使用的的数据表是tb_khinfo,其功能类包括KeHuTianJiaPanel类和KeHuXiuGaiPanel类;商品信息管理所使用的数据表是tb_spinfo,其功能类包括ShangPinTianJiaPanel类和ShangPinXiuGaiPanel类;供应商信息管理所使用的数据表是tb_gysinfo,其功能类包括GysTianJiaPanel类和GysXiuGaiPanel类。整个基础信息管理模块的技术分析以供应商信息管理面板为例,下面简单介绍一下供应商信息管理的添加、修改和删除的实现过程。
19
1.GysTianJiaPanel类
该类用于实现系统供应商添加功能,实现在界面将显示多个用于输入供应商信息的文本框。界面中主要包括以下控件: 控件类型 控件名称 quanChengF JianChengF BianMaF DiZhiF DianHuaF JtextFielChuangZhenF d LianXiRenF lianXiRenDianH无 uaF YinHangF EmailF 无 无 设置按钮文本为“添加” 设置动作监听器为TjButton TjActionListener类的实例对象 Jbutton 设置按钮文本为“重填” 设置动作监听器为 ResetButton ResetActionListener类的实例对象 要点介绍:
1) ResetActionListener类。作为“重填”按钮的事件监听器。该类必须实
现ActionListener接口,并在actionPerformed()方法中清除界面中的所有文本框内容。
20
主要属性 无 无 无 无 无 无 无 用途 供应商全称 简称 邮政编码 地址 电话 传真 联系人 联系人电话 银行 邮箱 添加 重填