石家庄职业技术学院课程论文
图书管理系统
系 别: 信息工程系
专 业: 电子信息工程技术1班
学生姓名: 薄宁
指导教师: 张春平
石家庄职业技术学院信息工程系
年 月 日
摘要
中小企业在我国经济发展中具有重要地位,随着我国市场经济的蓬勃发展和人们对计算机的普遍应用,批发、零售行业正处在一个高速发展的时期。行业的快速发展必然导致竞争的加剧,要想在激烈的市场竞争中谋求发展,客观上要求企业必须加强内部管理,提高运营效率。而我国大部分小型批发、零售企业在信息机制上还没有摆脱原有的手工模式,企业内部没有形成完善的、有效的信息化管理机制,企业发展的动力不足,从而影响企业的持续、稳定、快速的发展。
当今国内外多数企业的竞争特点是:产品的种类、规格特别多,市场需求变化很快,与分销商,零售商的关系日益密切等。而随着业务量的扩大,传统的管理方法已经无法处理日益膨胀的大量的业务数据,企业采用电脑管理进货、库存、销售等诸多环节也已成为趋势及必然。
实现企业信息化管理是现代社会中小企业稳步发展的必要条件,它可以提高企业的管理水平和工作效率,最大限度地减少手工操作带来的失误。进销存管理系统正是一个信息化管理软件,可以实现企业的进货、销售、库存管理等各项业务的信息化管理。 出于以上原因,本课程设计将基于MySQL 数据库并以JAVA 为开发环境设计实现一个企业进销存管理系统。该系统包括基础信息管理、进货管理、销售管理、库存管理、查询统计、系统管理几个模块,主要是处理商业企业商品的采购、库存和销售各个环节的活动,具有良好的人机界面。考虑到系统的使用对象可能较多,权限管理良好,数据查询方便,支持多条件查询。
关键词:进销存管理系统、进货管理、销售管理、库存管理、系统管理
石家庄职业技术学院课程论文 目录
目 录
摘要 ...............................................................................................................................2
第一章 概述 .................................................................................................................1
1.1系统功能概述 ................................................................................................1
1.2系统的运行环境 ............................................................................................2
1.3开发工具 ........................................................................................................2
第二章 系统的数据库设计 .........................................................................................3
2.1 数据库字典 ...................................................................................................3
2.1.1数据项条目 ..........................................................................................3
2.1.2数据结构条目 ......................................................................................3
2.2数据库E-R 图 ...............................................................................................4
2.2.1客户实体 E-R 图 ................................................................................4
2.2.2供应商实体 E-R 图 ............................................................................5
2.2.3商品实体 E-R 图 ................................................................................5
2.2.4销售实体 E-R 图 ................................................................................5
第三章 系统的程序设计与实现 .................................................................................7
3.1各模块的功能及其关系 ................................................................................7
3.2各功能模块的设计和实现 ............................................................................8
3.2.1登录界面 ..............................................................................................8
3.2.2系统主窗体 ........................................................................................10
3.2.3基础信息管理模块方案 ....................................................................14
3.2.4进货管理模块 ....................................................................................15
3.2.5销售管理模块 ....................................................................................16
第四章 系统测试 .......................................................................................................17
4.1单元测试 ......................................................................................................17
4.2功能测试 ......................................................................................................20
4.3集成测试与系统测试 ..................................................................................20
4.4 程序的异常处理 .........................................................................................21
4.5调试 ..............................................................................................................21
第五章 总结 ...............................................................................................................22 参考文献 .................................................................................... 错误!未定义书签。 致谢 ............................................................................................ 错误!未定义书签。
第一章 概述
1.1系统功能概述
本系统要求具有以下功能:
系统操作简单、便捷,界面简洁、友好。
具有规范、完善的基础信息设置和管理。
支持多人管理,要求有用户和权限进入功能。
支持多条件的快捷查询功能。
支持各种浏览。
支持图书借阅与归还。
支持无数读者借阅。
支持图书与读者的信息修改。
通过对进销存管理系统的功能需求分析,可以将本系统划分为基础系统控制﹑用户管理﹑图书管理﹑借阅管理﹑读者管理5大部分。系统功能结构如图1-1所示。
图1-1 系统功能结构图
进销存管理系统的系统流程如图1-2所示。
图1-2 系统流程图
1.2系统的运行环境
本项目所用的运行环境如表1-1所示
表 1-1运行环境表
1.3开发工具
本项目所用的开发工具如表1-2所示。
表 1-2开发工具表
第二章 系统的数据库设计
2.1 数据库字典
2.1.1数据项条目
数据项编号:1
数据项名称:商品编号
符 号 名:ID
数 据类 型:varchar
长 度:5
数据项编号:2
数据项名称:系统用户编号
符 号 名:username
数 据类 型:varchar
长 度:8
数据项编号:3
数据项名称:供应商编号
符 号 名:id
数 据类 型:varchar
长 度:8
2.1.2数据结构条目
数据结构编号:1
数据结构名称:商品入库
简 述:商品入库的记录点
组
数据结构编号:2 成:商品编号+入库日期+商品价格+供应商+数量
数据结构名称:用户登记
简
组
数据结构编号:3
数据结构名称:供应商录入
简 述:记录贸易往来 述:管理员合法凭证 成:用户编号+用户权限
组 成:供应商编号+供应商名+供应商联系方式
2.2数据库E-R 图
企业进销存管理系统主要实现从进货、库存到销售的一体化信息管理,涉及商品信息、商品的供应商、购买商品的客户等多个实体。下面简单介绍几个关键的实体 E-R 图。
2.2.1客户实体 E-R 图
企业进销存管理系统将记录所有的客户信息,在销售、退货等操作时,将直接引用该客户的实体属性。客户实体包括客户编号、客户名称、简称、地址、电话、邮政编码、联系人、联系人电话、传真、开户行和账号等属性,客户实体 E-R 图如图2-1所示。
图2-1 客户实体E-R 图
2.2.2供应商实体 E-R 图
不同的供应商可以为企业提供不同的商品,在商品信息中将引用商品供应商的实体属性。供应商实体包括编号、名称、简称、地址、电话、邮政编码、传真、联系人、联系电话、开户行和E-mail 属性,供应商实体 E-R 图如图2-2所示。
图2-2 供应商实体E-R 图
2.2.3商品实体 E-R 图
商品信息是进销存管理系统中的基本信息,系统将维护商品的进货、退货、销售、入库等操作。商品实体包括编号、商品名称、商品简称、产地、单位、规格、包装、批号、批准文号、商品简介和供应商属性,商品实体 E-R 图如图2-3所示。
图2-3 商品实体E-R 图
2.2.4销售实体 E-R 图
销售实体分为销售主表和销售明细表两个实体,它们是一对多的关系。其
中销售主表包括:销售票号、品种数、金额、验收结论、客户名称、经手人、结算方式、操作员和销售日期属性。销售明细表包括:编号、销售票号、商品编号、数量和单价属性。销售实体 E-R 图如图2-4所示。
图2-4 销售实体E-R 图
第三章 系统的程序设计与实现
通过前面的功能逻辑分析,已经将进销存管理系统划分为6大功能模块,分别为基础信息管理模块、进货管理模块、销售管理模块、查询统计模块、库存管理模块、系统管理模块。同时考虑到系统的安全性,防止非法用户访问系统以及满足不同人员对系统操作的权限控制,再添加一个登陆模块。再者,为了将各功能模块集成起来,还需要设计一个系统主界面,将各个功能模块整合到主界面中。
3.1各模块的功能及其关系
在登录界面,输入用户名和密码之后,经身份认证通过进入系统主界面,对于系统管理员身份的用户,其系统管理模块具有操作员管理、修改密码以及权限管理功能。而具有操作员身份的用户在管理模块只有修改密码功能。其他的功能模块对两种不同身份的用户都是一样的。
基础信息管理模块用于管理客户、商品和供应商信息,其功能模块主要是对这些基础信息进行添加、修改和删除。添加操作将相关信息录入到相应的数据表中,修改和删除操作则更新相应的数据表。
进货管理模块负责商品的进货以及退货管理。通过填写进货单,将商品的进货信息录入到数据库中的入库主表、入库详细表和库存表中。退货功能负责将已入库的有质量问题的商品退还给供应商,其操作会将退货信息录入到数据库中相应商品的入库退货主表和入库退货详细表中同时还会更新相应商品的库存信息。
销售管理模块负责商品的销售和退货管理。通过填写销售单,将库存商品销售出去,因此待销售的商品必须是入库了的商品,且数量大于0。相应的该销售记录会录入到销售主表、销售详细表中,对应的库存数量减少了销售出去的数量。退货功能负责记录客户要求退货的商品。其操作会将退货信息录入到数据库中相应商品的销售退货主表和销售退货详细表中同时还会更新相应商品的库存信息。
查询统计模块负责根据用户的查询条件,快速地查询相应的信息。这些查询结果都是相应的数据库表和视图中满足查询条件的数据。这些查询操作都不会修改数据库中的数据。
库存管理负责库存商品的盘点和库存商品的价格调整。盘点管理用于统计
所有库存商品的数量。价格调整可以修改商品的单价,其操作会修改库存表中对应商品的价格。
系统管理负责登录用户的管理。系统管理员身份的用户具有增加、修改和
删除操作员的功能,修改密码的功能,还具有修改用户的权限的功能。而操作员身份的用户仅具有修改自身密码的功能。
3.2各功能模块的设计和实现
3.2.1登录界面
登录界面用户验证登录用户的身份信息,只有合法的用户才能进入系统,
从而保证系统的安全性。
登录界面的运行结果如下图3-1所示:
图3-1 登录界面
登录界面的创建:
创建Login 类,它继承自JFrame 。用户名和密码通过JtextField 接收,单击“登录”按钮触发监听器验证登录用户是否正确,该过程通过连接数据库,判断用户是否存在数据表Userlist 表中来实现。关键代码如下:
public void login_Button(ActionEvent e)
{
if(userName.getText().equals("") || userName.getText()==null)
{
JOptionPane.showMessageDialog(this, "用户名不能为空"); return; }
else if(userPassword.getText().equals("") ||
userPassword.getText()==null)
{
{
user = DAO.getUser(userName.getText(), userPassword.getText()); if (user.getUsername()==null ||
user.getUsername().equals(""))
{
JOptionPane.showMessageDialog(this, "用户名或密码错误"); userName.setText(null); userPassword.setText(null); return;
{
setVisible(false); MainFrame frame=new MainFrame(); } } } else JOptionPane.showMessageDialog(this, "密码不能为空"); return; } else
}
连接数据库的方法:
由于系统对数据库的存取比较频繁,因此可以定义一个公共类DAO 类来负责有关数据库的操作。关键代码如下:
/*** 连接数据库操作 */
protected static String MysqlClassName =
"com.mysql.jdbc.Driver";// mysql驱动
protected static String MysqlUrl = protected static String MysqlUser = "root";// 用户名 protected static String MysqlPwd = "root";// 密码 protected static String second = null; public static Connection conn = null; static { } try { } if (conn == null) { } ee.printStackTrace(); Class.forName(MysqlClassName).newInstance(); conn = DriverManager.getConnection(MysqlUrl, MysqlPwd); "jdbc:mysql://localhost:3306/db_JXCManager";// url MysqlUser, } catch (Exception ee) {
3.2.2系统主窗体
应用程序的主窗体必须设计层次清晰的系统菜单和工具栏,其中系统菜单
包含系统中所有的菜单项,而工具栏主要提供常用功能快捷访问按钮。本系统主窗体采用导航面板综合了系统菜单和工具栏的优点,而且导航面板的界面更加美观,操作快捷。主窗体的界面如图3-2所示。
图3-2 系统主窗体
创建主窗体
创建主窗体的步骤如下:
(1)创建JXFrame 类,在类中创建并初始化窗体对象,为窗体添加桌面面
板,并设置背景图片。关键代码如下:
private JDesktopPane desktopPane;
private JFrame frame;
private JLabel backLabel;
// 创建窗体的Map 类型集合对象
private Map ifs=new HashMap(); public MainFrame(){
frame=new JFrame("企业进销存管理系统");//创建窗体对象 frame.getContentPane().setBackground(new Color(170,188,120)); frame.addComponentListener(new FrameListener());//添加窗体事件监听器 frame.getContentPane().setLayout(new BorderLayout());//设置布局管理器 frame.setBounds(100, 100, 900, 700); backLabel=new JLabel();//背景标签 backLabel.setVerticalAlignment(SwingConstants.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.getContentPane().add(navigationPanel,BorderLayout.NORTH );//添加导航面板到窗体中
} frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);//显示窗体
(2)编写主窗体的main ()入口方法,在该方法中创建登陆窗体对象,登陆窗体会验证登陆信息,并显示主窗体界面。关键代码入下:
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() { new Login();
}
});
}
创建导航面板
创建导航面板的实现方法:
在该方法中创建JtabbedPane 选项卡面板对象。为突出选项卡的立体效果,设置该选项卡使用BevelBorder 边框效果,然后依次创建基础信息管理、库存管理、销售管理、查询统计、进货管理和系统管理的选项卡。关键代码及注释如下:
private JTabbedPane createNavigationPanel() {// 创建导航标签面板的方法
Userlist user = Login.getUser(); JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.setFocusable(false); tabbedPane.setBackground(new Color(211,230,192)); tabbedPane.setBorder(new BevelBorder(BevelBorder.RAISED)); JPanel baseMainPanel=new JPanel();//基础信息管理面板 baseMainPanel.setBackground(new Color(215,223,194)); baseMainPanel.setLayout(new BoxLayout(baseMainPanel,BoxLayout.X_AXIS)); stateBar.setHorizontalAlignment(SwingConstants.RIGHT); stateBar.setBorder(BorderFactory.createEtchedBorder()); frame.getContentPane().add(stateBar,BorderLayout.SOUTH);
stateBar.setVisible(true); baseMainPanel.add(createFrameButton("客户信息管理", "GuestManager")); baseMainPanel.add(createFrameButton("供应商信息管理", "TradeManager")); baseMainPanel.add(createFrameButton("商品信息管理", "ProductManager")); JPanel stockManagePanel = new JPanel();// 进货管理面板 stockManagePanel.setBackground(new Color(215, 223, 194)); stockManagePanel.setLayout(new BoxLayout(stockManagePanel, BoxLayout.X_AXIS)); stockManagePanel.add(createFrameButton("进货单", "ComeProductDan")); stockManagePanel.add(createFrameButton("进货退货", "BackProduct")); JPanel depotManagePanel=new JPanel();//库存管理面板 depotManagePanel.setBackground(new Color(215,223,194)); depotManagePanel.setLayout(new
BoxLayout(depotManagePanel,BoxLayout.X_AXIS));
depotManagePanel.add(createFrameButton("库存盘点","ProductKuCun")); depotManagePanel.add(createFrameButton("价格调整","PriceManager"));
JPanel sellManagePanel = new JPanel();// 销售管理面板 sellManagePanel.setBackground(new Color(215, 223, 194)); sellManagePanel.setLayout(new BoxLayout(sellManagePanel,BoxLayout.X_AXIS)); sellManagePanel.add(createFrameButton("销售单", "SellDan")); sellManagePanel.add(createFrameButton("销售退货", "SellBack")); JPanel searchStatisticPanel = new JPanel();// 查询统计面板 searchStatisticPanel.setBounds(0, 0, 600, 41); searchStatisticPanel.setName("searchStatisticPanel"); searchStatisticPanel.setBackground(new Color(215, 223, 194)); searchStatisticPanel.setLayout(new
BoxLayout(searchStatisticPanel,BoxLayout.X_AXIS));
searchStatisticPanel.add(createFrameButton("客户信息查询", "SearchGuest")); searchStatisticPanel.add(createFrameButton("商品信息查询",
"SearchProduct"));
searchStatisticPanel.add(createFrameButton("供应商信息查询
","SearchTrade"));
searchStatisticPanel.add(createFrameButton("销售信息查询", "SearchSell")); searchStatisticPanel.add(createFrameButton("销售退货查询
","SearchSellBack"));
searchStatisticPanel.add(createFrameButton("入库查询", "SearchRuKu")); searchStatisticPanel.add(createFrameButton("入库退货查询", "SearchRkth")); searchStatisticPanel.add(createFrameButton("销售排行", "SearchSellSort"));
JPanel systemManagePanel = new JPanel(); // 系统管理面板 systemManagePanel.setBackground(new Color(215, 223, 194)); systemManagePanel.setLayout(new BoxLayout(systemManagePanel, systemManagePanel.add(createFrameButton("更改密码", "ChangePassword")); String q = user.getQuan(); BoxLayout.X_AXIS)); int r = q.compareTo("a"); if(r==0)//如果登录的用户是管理员身份,则添加操作员管理和权限管理功能。 //问题:直接用if( user.getQuan()=="a" ) 判断不行,暂未找到原因。 { systemManagePanel.add(createFrameButton("操作员管理",
"OperatorManager"));
systemManagePanel.add(createFrameButton("权限管理", "QuanManager"));
} } tabbedPane.addTab(" 基础信息管理 ", null, baseMainPanel, " 基础信息管理"); tabbedPane.addTab(" 进货管理 ", null, stockManagePanel, "进货管理"); } tabbedPane.addTab(" 销售管理 ", null, sellManagePanel, "销售管理"); tabbedPane.addTab(" 查询统计 ", null, searchStatisticPanel, "查询统计"); tabbedPane.addTab(" 库存管理 ", null, depotManagePanel, "库存管理"); tabbedPane.addTab(" 系统管理 ", null, systemManagePanel, "系统管理"); return tabbedPane;
3.2.3基础信息管理模块方案
基础信息模块主要包括客户管理、商品管理和供应商管理3部分,由于它们的实习方法基本相似,因此仅以客户管理为例介绍其实现的业务逻辑。
(1) 添加客户信息:客户添加功能主要负责为系统添加新的客户记录。一般企业的客户比较稳定,商品都销售给固定的客户,因此有必要将不同的客户添加到系统中,在销售商品时,会关联系统中对应的客户信息。客户添加功能的界面如下图3-3所示:
图3-3 添加客户信息
(2) 修改和删除客户信息:客户信息修改和删除功能用于维护系统中的客户信息。当客户信息发生改变时必须更新系统中的记录。当不再和某客户合作时,则需要从系统中删除该客户的信息。该功能的程序界面如下图3-4所示:
图3-4 修改和删除客户信息
3.2.4进货管理模块
进货管理模块主包括进货单和进货退货管理两个部分。下面以进货单功能为主,介绍进货管理模块实现的业务逻辑。
(1) 进货单:主要负责记录企业的商品进货信息,单击“添加”按钮,在表格中添加商品进货信息,在“供应商”下拉列表中选择不同的供应商,将会
改变表格中的商品。进货单的程序界面如图3-5所示:
图3-5 进货单
3.2.5销售管理模块
销售管理模块主包括销售单和销售退货管理两个部分。下面以销售单功能为主,介绍销售管理模块实现的业务逻辑。
(1) 销售单:主要负责记录企业的商品销售信息,单击“添加”按钮,在表格中添加商品销售信息,在“客户”下拉列表中选择不同的客户,表示将商品销售给该客户。销售单的程序界面如图3-6所示:
图3-6 销售单
第四章 系统测试
4.1单元测试
单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立工作单元将与程序的其他部分相隔离的情况下进行测试。
在一种传统的结构化编程语言中,如C++语言,要进行测试的工作单元一般是方法,而JAVA 这样的面向对象语言中,要进行测试的基本单元是类。单元测试不仅仅是作为无错编码的一种辅助手段,在一次性的开发过程中使用,单元测试还必须是可重复的,无论是在软件修改或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行。
JUnit 单元测试工具的介绍与使用
JUtit 是一个单元测试框架,专门用于测试JAVA 开发的程序,同类的产品还包括Numit (.Net ),CPPUnit (C++),都属于xUnit 中的成员,目前JUnit 的最新版本是JUnit4.9。
使用JUnit 进行单元测试
1.为单元测试代码创建一个JAVA 项目,其命名为JUnitTest 。
2.创建ItemTest 类,该类用于测试公共类Item 的行为。在“创建JAVA 类”对话框中设置该类的超类为TestCase ,也就是集成JUnit 框架的测试用例编写单元测试,单击“完成”按钮,如图4-1所示。
图4-1 新建测试用例类
3.在项目的构建路径中添加JUnit 类库,右击项目名称,在弹出的快捷菜单中选择“构建路径”/“添加库”命令,在弹出的“添加库”对话框中选择JUnit 选项,单击“下一步”按钮,如图4-2所示。
图4-2添加库对话框
4.在弹出的对话框中选择JUnit 的版本为JUnit4,单击“完成”按钮。
5.在创建的ItemTestzh ,对Item 类进行单元测试。Item 是本系统的公共类之一,要实现该类的单元测试,需要编写以test 作方法名称的前缀,创建testName ()方法、testID ()方法和testEquals ()方法。另外还要重写父类的setUp ()方法,在该方法中创建并初始化测试用例中需要的数据。
完成代码如下:
import internalFrame.guanli.Item;
import junit.framework.TestCase;
public class ItemTest extends TestCase{
private Item item;
protected void setup() throws Exception{
}
public void testID(){
}
public void testName(){
assertEquals(item.getName(),"JAVA测试")
}
public void testEquals(){
Item newItem=new Item(); newItem.setId("007"); assertEquals(item.getId(),"007"); item=new Item(); item.setId("007"); item.setName("JAVA测试");
newItem.setName("JAVA测试");
assertEquals(item,newItem);
}
}
6. 在该类上单击鼠标右键,在弹出的快捷菜单中选择“运行方式”/“JUnit 测试”命令,运行Item 类的单元测试,根据警示条中的颜色,即可判断单元测试的成功于失败。因为在本系统中不需要判断Item 实例的相等性,所以Item 类没有实现父类的equals ()方法,可以不进行该测试,否则在判断两个Item 类的实例对象是否相等时,将出现判断失败。
4.2功能测试
基本信息管理模块的功能测试:
在此模块中,操作员登陆后能实现客户信息、商品信息和供应商信息等基本数据的录入,修改与删除,管理员也有此权限。
销售管理模块的测试:
在此模块中,操作员登录后能实现商品的销售单数据录入、客户退货数据录入等,管理员也有此权限。
查询统计模块的测试:
在此模块中,操作员登录后能实现客户信息查询、商品信息查询、供应商信息查询、销售查询、商品入库查询、入库退货查询。
系统管理模块的测试:
此模块仅对管理员开放,管理员登陆后可实现系统用户设置、操作权限设计和密码修改、操作员管理与退出等功能。
4.3集成测试与系统测试
集成测试应该考虑以下问题:
1.在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;
2.各个子功能组合起来,能否达到预期要求的父功能;
3.一个模块的功能是否会对另一个模块的功能产生不利的影响;
4.全局数据结构是否有问题;
5.单个模块的误差积累起来,是否会放大,从而达到不可接受的程度。 在各个模块都分别进行了测试之后,发现并改正了每个错误后,并不能保证整个系统的错误都已经测试出来了。而要进行系统性的测试,把系统看作一个统一的整体,把应用程序的各功能部件组合在一起后进行的测试。以保证各个模块能协调工作,正常处理各自的任务,能正确相互传递数据,确保系统的完整性与一致性,必须保证绝大部分功能正常实现。
本系统的测试过程中,以不同权限人员对系统进行操作,并对数据库进行各种复杂操作。经过三天的测试时间,测试出系统的多处重要错误,五十次要错误,并且在发现错误后进行了及时的改正,极大地减少了系统的错漏,而最终实现了系统的全部功能。
4.4 程序的异常处理
异常是指在程序执行过程中发生了错误, 并导致程序不能正常执行下去。程序运行时引起错误可能有许多的原因,从硬件、软件的改变到使用了别的开发团队的代码等等。有效的处理这些错误并使得它对于系统正常操作过程的中断最小化是每个有良知的程序员的责任。一个合格的系统,必须能有效地处理各种异常,防止应用程序中止运行,减少不必要的麻烦,避免给用户带来不良的感觉。程序的异常处理与系统的可维护性和稳定性有极大的关系。因此异常处理是开发本系统时重要考虑和特别注意的处理过程。
4.5调试
在每个测试的过程中,面对各种已知的和未知的错误,都需要我们去逐步调试。测试的目的是发现错误,而调试的目的就是改正错误。调试是改正程序错误,把从测试过程中发现的错误逐步改正,使系统成功实现每个功能的必要过程。调试人员需要具备从错误信息中找出错误原因,并根据错误原因采取有效的改正方法。
第五章 总结
经过几个月的制作完成了自己的毕业设计,从开始的想法,到实际的规划,概要设计,以及程序语言的选择,到最后的实际的制作,后期的调试,修改,这整个过程自己遇到了很多的问题,由于这是一个完整的程序设计过程,涉及的各个方面比较多,所以实现起来困难是肯定的,通过自己的查阅图书,上网搜索,以及辅导老师的指导下,克服了种种困难,在此特别感谢辅导老师不厌其烦的指导。
本次毕业设计,最大的收获是对信息系统分析设计有了更熟练的运用,对系统整体架构有了很好的把握。从项目的现状和研究意义、工作方案和进度计划、系统可行性研究、到需求分析、到系统设计、再到系统实施,严格遵守毕业设计要求,严格按照系统设计开发规范来组织进行,对自己的严密性、规范性等都有很好的指导意义。整个系统基本上实现了设计之初的目标,完成了系统规划阶段的构想。但限于水平有限,本系统还不够完善,如用户登录时账户加解密问题、有些地方容易异常等问题,但可以肯定的是,我会在后面的学习中将其完善,从而使其具有实际开发和使用意义,使之趋于完善。
总之,学习了三年后,即将毕业了,最后的毕业设计对我有很大的帮助,这不单单是一个学习任务,也是我以后从事这方面工作的一个经验,一个开始,一个认知,对我以后的学习和工作都有很大的帮助!
石家庄职业技术学院课程论文
图书管理系统
系 别: 信息工程系
专 业: 电子信息工程技术1班
学生姓名: 薄宁
指导教师: 张春平
石家庄职业技术学院信息工程系
年 月 日
摘要
中小企业在我国经济发展中具有重要地位,随着我国市场经济的蓬勃发展和人们对计算机的普遍应用,批发、零售行业正处在一个高速发展的时期。行业的快速发展必然导致竞争的加剧,要想在激烈的市场竞争中谋求发展,客观上要求企业必须加强内部管理,提高运营效率。而我国大部分小型批发、零售企业在信息机制上还没有摆脱原有的手工模式,企业内部没有形成完善的、有效的信息化管理机制,企业发展的动力不足,从而影响企业的持续、稳定、快速的发展。
当今国内外多数企业的竞争特点是:产品的种类、规格特别多,市场需求变化很快,与分销商,零售商的关系日益密切等。而随着业务量的扩大,传统的管理方法已经无法处理日益膨胀的大量的业务数据,企业采用电脑管理进货、库存、销售等诸多环节也已成为趋势及必然。
实现企业信息化管理是现代社会中小企业稳步发展的必要条件,它可以提高企业的管理水平和工作效率,最大限度地减少手工操作带来的失误。进销存管理系统正是一个信息化管理软件,可以实现企业的进货、销售、库存管理等各项业务的信息化管理。 出于以上原因,本课程设计将基于MySQL 数据库并以JAVA 为开发环境设计实现一个企业进销存管理系统。该系统包括基础信息管理、进货管理、销售管理、库存管理、查询统计、系统管理几个模块,主要是处理商业企业商品的采购、库存和销售各个环节的活动,具有良好的人机界面。考虑到系统的使用对象可能较多,权限管理良好,数据查询方便,支持多条件查询。
关键词:进销存管理系统、进货管理、销售管理、库存管理、系统管理
石家庄职业技术学院课程论文 目录
目 录
摘要 ...............................................................................................................................2
第一章 概述 .................................................................................................................1
1.1系统功能概述 ................................................................................................1
1.2系统的运行环境 ............................................................................................2
1.3开发工具 ........................................................................................................2
第二章 系统的数据库设计 .........................................................................................3
2.1 数据库字典 ...................................................................................................3
2.1.1数据项条目 ..........................................................................................3
2.1.2数据结构条目 ......................................................................................3
2.2数据库E-R 图 ...............................................................................................4
2.2.1客户实体 E-R 图 ................................................................................4
2.2.2供应商实体 E-R 图 ............................................................................5
2.2.3商品实体 E-R 图 ................................................................................5
2.2.4销售实体 E-R 图 ................................................................................5
第三章 系统的程序设计与实现 .................................................................................7
3.1各模块的功能及其关系 ................................................................................7
3.2各功能模块的设计和实现 ............................................................................8
3.2.1登录界面 ..............................................................................................8
3.2.2系统主窗体 ........................................................................................10
3.2.3基础信息管理模块方案 ....................................................................14
3.2.4进货管理模块 ....................................................................................15
3.2.5销售管理模块 ....................................................................................16
第四章 系统测试 .......................................................................................................17
4.1单元测试 ......................................................................................................17
4.2功能测试 ......................................................................................................20
4.3集成测试与系统测试 ..................................................................................20
4.4 程序的异常处理 .........................................................................................21
4.5调试 ..............................................................................................................21
第五章 总结 ...............................................................................................................22 参考文献 .................................................................................... 错误!未定义书签。 致谢 ............................................................................................ 错误!未定义书签。
第一章 概述
1.1系统功能概述
本系统要求具有以下功能:
系统操作简单、便捷,界面简洁、友好。
具有规范、完善的基础信息设置和管理。
支持多人管理,要求有用户和权限进入功能。
支持多条件的快捷查询功能。
支持各种浏览。
支持图书借阅与归还。
支持无数读者借阅。
支持图书与读者的信息修改。
通过对进销存管理系统的功能需求分析,可以将本系统划分为基础系统控制﹑用户管理﹑图书管理﹑借阅管理﹑读者管理5大部分。系统功能结构如图1-1所示。
图1-1 系统功能结构图
进销存管理系统的系统流程如图1-2所示。
图1-2 系统流程图
1.2系统的运行环境
本项目所用的运行环境如表1-1所示
表 1-1运行环境表
1.3开发工具
本项目所用的开发工具如表1-2所示。
表 1-2开发工具表
第二章 系统的数据库设计
2.1 数据库字典
2.1.1数据项条目
数据项编号:1
数据项名称:商品编号
符 号 名:ID
数 据类 型:varchar
长 度:5
数据项编号:2
数据项名称:系统用户编号
符 号 名:username
数 据类 型:varchar
长 度:8
数据项编号:3
数据项名称:供应商编号
符 号 名:id
数 据类 型:varchar
长 度:8
2.1.2数据结构条目
数据结构编号:1
数据结构名称:商品入库
简 述:商品入库的记录点
组
数据结构编号:2 成:商品编号+入库日期+商品价格+供应商+数量
数据结构名称:用户登记
简
组
数据结构编号:3
数据结构名称:供应商录入
简 述:记录贸易往来 述:管理员合法凭证 成:用户编号+用户权限
组 成:供应商编号+供应商名+供应商联系方式
2.2数据库E-R 图
企业进销存管理系统主要实现从进货、库存到销售的一体化信息管理,涉及商品信息、商品的供应商、购买商品的客户等多个实体。下面简单介绍几个关键的实体 E-R 图。
2.2.1客户实体 E-R 图
企业进销存管理系统将记录所有的客户信息,在销售、退货等操作时,将直接引用该客户的实体属性。客户实体包括客户编号、客户名称、简称、地址、电话、邮政编码、联系人、联系人电话、传真、开户行和账号等属性,客户实体 E-R 图如图2-1所示。
图2-1 客户实体E-R 图
2.2.2供应商实体 E-R 图
不同的供应商可以为企业提供不同的商品,在商品信息中将引用商品供应商的实体属性。供应商实体包括编号、名称、简称、地址、电话、邮政编码、传真、联系人、联系电话、开户行和E-mail 属性,供应商实体 E-R 图如图2-2所示。
图2-2 供应商实体E-R 图
2.2.3商品实体 E-R 图
商品信息是进销存管理系统中的基本信息,系统将维护商品的进货、退货、销售、入库等操作。商品实体包括编号、商品名称、商品简称、产地、单位、规格、包装、批号、批准文号、商品简介和供应商属性,商品实体 E-R 图如图2-3所示。
图2-3 商品实体E-R 图
2.2.4销售实体 E-R 图
销售实体分为销售主表和销售明细表两个实体,它们是一对多的关系。其
中销售主表包括:销售票号、品种数、金额、验收结论、客户名称、经手人、结算方式、操作员和销售日期属性。销售明细表包括:编号、销售票号、商品编号、数量和单价属性。销售实体 E-R 图如图2-4所示。
图2-4 销售实体E-R 图
第三章 系统的程序设计与实现
通过前面的功能逻辑分析,已经将进销存管理系统划分为6大功能模块,分别为基础信息管理模块、进货管理模块、销售管理模块、查询统计模块、库存管理模块、系统管理模块。同时考虑到系统的安全性,防止非法用户访问系统以及满足不同人员对系统操作的权限控制,再添加一个登陆模块。再者,为了将各功能模块集成起来,还需要设计一个系统主界面,将各个功能模块整合到主界面中。
3.1各模块的功能及其关系
在登录界面,输入用户名和密码之后,经身份认证通过进入系统主界面,对于系统管理员身份的用户,其系统管理模块具有操作员管理、修改密码以及权限管理功能。而具有操作员身份的用户在管理模块只有修改密码功能。其他的功能模块对两种不同身份的用户都是一样的。
基础信息管理模块用于管理客户、商品和供应商信息,其功能模块主要是对这些基础信息进行添加、修改和删除。添加操作将相关信息录入到相应的数据表中,修改和删除操作则更新相应的数据表。
进货管理模块负责商品的进货以及退货管理。通过填写进货单,将商品的进货信息录入到数据库中的入库主表、入库详细表和库存表中。退货功能负责将已入库的有质量问题的商品退还给供应商,其操作会将退货信息录入到数据库中相应商品的入库退货主表和入库退货详细表中同时还会更新相应商品的库存信息。
销售管理模块负责商品的销售和退货管理。通过填写销售单,将库存商品销售出去,因此待销售的商品必须是入库了的商品,且数量大于0。相应的该销售记录会录入到销售主表、销售详细表中,对应的库存数量减少了销售出去的数量。退货功能负责记录客户要求退货的商品。其操作会将退货信息录入到数据库中相应商品的销售退货主表和销售退货详细表中同时还会更新相应商品的库存信息。
查询统计模块负责根据用户的查询条件,快速地查询相应的信息。这些查询结果都是相应的数据库表和视图中满足查询条件的数据。这些查询操作都不会修改数据库中的数据。
库存管理负责库存商品的盘点和库存商品的价格调整。盘点管理用于统计
所有库存商品的数量。价格调整可以修改商品的单价,其操作会修改库存表中对应商品的价格。
系统管理负责登录用户的管理。系统管理员身份的用户具有增加、修改和
删除操作员的功能,修改密码的功能,还具有修改用户的权限的功能。而操作员身份的用户仅具有修改自身密码的功能。
3.2各功能模块的设计和实现
3.2.1登录界面
登录界面用户验证登录用户的身份信息,只有合法的用户才能进入系统,
从而保证系统的安全性。
登录界面的运行结果如下图3-1所示:
图3-1 登录界面
登录界面的创建:
创建Login 类,它继承自JFrame 。用户名和密码通过JtextField 接收,单击“登录”按钮触发监听器验证登录用户是否正确,该过程通过连接数据库,判断用户是否存在数据表Userlist 表中来实现。关键代码如下:
public void login_Button(ActionEvent e)
{
if(userName.getText().equals("") || userName.getText()==null)
{
JOptionPane.showMessageDialog(this, "用户名不能为空"); return; }
else if(userPassword.getText().equals("") ||
userPassword.getText()==null)
{
{
user = DAO.getUser(userName.getText(), userPassword.getText()); if (user.getUsername()==null ||
user.getUsername().equals(""))
{
JOptionPane.showMessageDialog(this, "用户名或密码错误"); userName.setText(null); userPassword.setText(null); return;
{
setVisible(false); MainFrame frame=new MainFrame(); } } } else JOptionPane.showMessageDialog(this, "密码不能为空"); return; } else
}
连接数据库的方法:
由于系统对数据库的存取比较频繁,因此可以定义一个公共类DAO 类来负责有关数据库的操作。关键代码如下:
/*** 连接数据库操作 */
protected static String MysqlClassName =
"com.mysql.jdbc.Driver";// mysql驱动
protected static String MysqlUrl = protected static String MysqlUser = "root";// 用户名 protected static String MysqlPwd = "root";// 密码 protected static String second = null; public static Connection conn = null; static { } try { } if (conn == null) { } ee.printStackTrace(); Class.forName(MysqlClassName).newInstance(); conn = DriverManager.getConnection(MysqlUrl, MysqlPwd); "jdbc:mysql://localhost:3306/db_JXCManager";// url MysqlUser, } catch (Exception ee) {
3.2.2系统主窗体
应用程序的主窗体必须设计层次清晰的系统菜单和工具栏,其中系统菜单
包含系统中所有的菜单项,而工具栏主要提供常用功能快捷访问按钮。本系统主窗体采用导航面板综合了系统菜单和工具栏的优点,而且导航面板的界面更加美观,操作快捷。主窗体的界面如图3-2所示。
图3-2 系统主窗体
创建主窗体
创建主窗体的步骤如下:
(1)创建JXFrame 类,在类中创建并初始化窗体对象,为窗体添加桌面面
板,并设置背景图片。关键代码如下:
private JDesktopPane desktopPane;
private JFrame frame;
private JLabel backLabel;
// 创建窗体的Map 类型集合对象
private Map ifs=new HashMap(); public MainFrame(){
frame=new JFrame("企业进销存管理系统");//创建窗体对象 frame.getContentPane().setBackground(new Color(170,188,120)); frame.addComponentListener(new FrameListener());//添加窗体事件监听器 frame.getContentPane().setLayout(new BorderLayout());//设置布局管理器 frame.setBounds(100, 100, 900, 700); backLabel=new JLabel();//背景标签 backLabel.setVerticalAlignment(SwingConstants.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.getContentPane().add(navigationPanel,BorderLayout.NORTH );//添加导航面板到窗体中
} frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);//显示窗体
(2)编写主窗体的main ()入口方法,在该方法中创建登陆窗体对象,登陆窗体会验证登陆信息,并显示主窗体界面。关键代码入下:
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() { new Login();
}
});
}
创建导航面板
创建导航面板的实现方法:
在该方法中创建JtabbedPane 选项卡面板对象。为突出选项卡的立体效果,设置该选项卡使用BevelBorder 边框效果,然后依次创建基础信息管理、库存管理、销售管理、查询统计、进货管理和系统管理的选项卡。关键代码及注释如下:
private JTabbedPane createNavigationPanel() {// 创建导航标签面板的方法
Userlist user = Login.getUser(); JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.setFocusable(false); tabbedPane.setBackground(new Color(211,230,192)); tabbedPane.setBorder(new BevelBorder(BevelBorder.RAISED)); JPanel baseMainPanel=new JPanel();//基础信息管理面板 baseMainPanel.setBackground(new Color(215,223,194)); baseMainPanel.setLayout(new BoxLayout(baseMainPanel,BoxLayout.X_AXIS)); stateBar.setHorizontalAlignment(SwingConstants.RIGHT); stateBar.setBorder(BorderFactory.createEtchedBorder()); frame.getContentPane().add(stateBar,BorderLayout.SOUTH);
stateBar.setVisible(true); baseMainPanel.add(createFrameButton("客户信息管理", "GuestManager")); baseMainPanel.add(createFrameButton("供应商信息管理", "TradeManager")); baseMainPanel.add(createFrameButton("商品信息管理", "ProductManager")); JPanel stockManagePanel = new JPanel();// 进货管理面板 stockManagePanel.setBackground(new Color(215, 223, 194)); stockManagePanel.setLayout(new BoxLayout(stockManagePanel, BoxLayout.X_AXIS)); stockManagePanel.add(createFrameButton("进货单", "ComeProductDan")); stockManagePanel.add(createFrameButton("进货退货", "BackProduct")); JPanel depotManagePanel=new JPanel();//库存管理面板 depotManagePanel.setBackground(new Color(215,223,194)); depotManagePanel.setLayout(new
BoxLayout(depotManagePanel,BoxLayout.X_AXIS));
depotManagePanel.add(createFrameButton("库存盘点","ProductKuCun")); depotManagePanel.add(createFrameButton("价格调整","PriceManager"));
JPanel sellManagePanel = new JPanel();// 销售管理面板 sellManagePanel.setBackground(new Color(215, 223, 194)); sellManagePanel.setLayout(new BoxLayout(sellManagePanel,BoxLayout.X_AXIS)); sellManagePanel.add(createFrameButton("销售单", "SellDan")); sellManagePanel.add(createFrameButton("销售退货", "SellBack")); JPanel searchStatisticPanel = new JPanel();// 查询统计面板 searchStatisticPanel.setBounds(0, 0, 600, 41); searchStatisticPanel.setName("searchStatisticPanel"); searchStatisticPanel.setBackground(new Color(215, 223, 194)); searchStatisticPanel.setLayout(new
BoxLayout(searchStatisticPanel,BoxLayout.X_AXIS));
searchStatisticPanel.add(createFrameButton("客户信息查询", "SearchGuest")); searchStatisticPanel.add(createFrameButton("商品信息查询",
"SearchProduct"));
searchStatisticPanel.add(createFrameButton("供应商信息查询
","SearchTrade"));
searchStatisticPanel.add(createFrameButton("销售信息查询", "SearchSell")); searchStatisticPanel.add(createFrameButton("销售退货查询
","SearchSellBack"));
searchStatisticPanel.add(createFrameButton("入库查询", "SearchRuKu")); searchStatisticPanel.add(createFrameButton("入库退货查询", "SearchRkth")); searchStatisticPanel.add(createFrameButton("销售排行", "SearchSellSort"));
JPanel systemManagePanel = new JPanel(); // 系统管理面板 systemManagePanel.setBackground(new Color(215, 223, 194)); systemManagePanel.setLayout(new BoxLayout(systemManagePanel, systemManagePanel.add(createFrameButton("更改密码", "ChangePassword")); String q = user.getQuan(); BoxLayout.X_AXIS)); int r = q.compareTo("a"); if(r==0)//如果登录的用户是管理员身份,则添加操作员管理和权限管理功能。 //问题:直接用if( user.getQuan()=="a" ) 判断不行,暂未找到原因。 { systemManagePanel.add(createFrameButton("操作员管理",
"OperatorManager"));
systemManagePanel.add(createFrameButton("权限管理", "QuanManager"));
} } tabbedPane.addTab(" 基础信息管理 ", null, baseMainPanel, " 基础信息管理"); tabbedPane.addTab(" 进货管理 ", null, stockManagePanel, "进货管理"); } tabbedPane.addTab(" 销售管理 ", null, sellManagePanel, "销售管理"); tabbedPane.addTab(" 查询统计 ", null, searchStatisticPanel, "查询统计"); tabbedPane.addTab(" 库存管理 ", null, depotManagePanel, "库存管理"); tabbedPane.addTab(" 系统管理 ", null, systemManagePanel, "系统管理"); return tabbedPane;
3.2.3基础信息管理模块方案
基础信息模块主要包括客户管理、商品管理和供应商管理3部分,由于它们的实习方法基本相似,因此仅以客户管理为例介绍其实现的业务逻辑。
(1) 添加客户信息:客户添加功能主要负责为系统添加新的客户记录。一般企业的客户比较稳定,商品都销售给固定的客户,因此有必要将不同的客户添加到系统中,在销售商品时,会关联系统中对应的客户信息。客户添加功能的界面如下图3-3所示:
图3-3 添加客户信息
(2) 修改和删除客户信息:客户信息修改和删除功能用于维护系统中的客户信息。当客户信息发生改变时必须更新系统中的记录。当不再和某客户合作时,则需要从系统中删除该客户的信息。该功能的程序界面如下图3-4所示:
图3-4 修改和删除客户信息
3.2.4进货管理模块
进货管理模块主包括进货单和进货退货管理两个部分。下面以进货单功能为主,介绍进货管理模块实现的业务逻辑。
(1) 进货单:主要负责记录企业的商品进货信息,单击“添加”按钮,在表格中添加商品进货信息,在“供应商”下拉列表中选择不同的供应商,将会
改变表格中的商品。进货单的程序界面如图3-5所示:
图3-5 进货单
3.2.5销售管理模块
销售管理模块主包括销售单和销售退货管理两个部分。下面以销售单功能为主,介绍销售管理模块实现的业务逻辑。
(1) 销售单:主要负责记录企业的商品销售信息,单击“添加”按钮,在表格中添加商品销售信息,在“客户”下拉列表中选择不同的客户,表示将商品销售给该客户。销售单的程序界面如图3-6所示:
图3-6 销售单
第四章 系统测试
4.1单元测试
单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立工作单元将与程序的其他部分相隔离的情况下进行测试。
在一种传统的结构化编程语言中,如C++语言,要进行测试的工作单元一般是方法,而JAVA 这样的面向对象语言中,要进行测试的基本单元是类。单元测试不仅仅是作为无错编码的一种辅助手段,在一次性的开发过程中使用,单元测试还必须是可重复的,无论是在软件修改或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行。
JUnit 单元测试工具的介绍与使用
JUtit 是一个单元测试框架,专门用于测试JAVA 开发的程序,同类的产品还包括Numit (.Net ),CPPUnit (C++),都属于xUnit 中的成员,目前JUnit 的最新版本是JUnit4.9。
使用JUnit 进行单元测试
1.为单元测试代码创建一个JAVA 项目,其命名为JUnitTest 。
2.创建ItemTest 类,该类用于测试公共类Item 的行为。在“创建JAVA 类”对话框中设置该类的超类为TestCase ,也就是集成JUnit 框架的测试用例编写单元测试,单击“完成”按钮,如图4-1所示。
图4-1 新建测试用例类
3.在项目的构建路径中添加JUnit 类库,右击项目名称,在弹出的快捷菜单中选择“构建路径”/“添加库”命令,在弹出的“添加库”对话框中选择JUnit 选项,单击“下一步”按钮,如图4-2所示。
图4-2添加库对话框
4.在弹出的对话框中选择JUnit 的版本为JUnit4,单击“完成”按钮。
5.在创建的ItemTestzh ,对Item 类进行单元测试。Item 是本系统的公共类之一,要实现该类的单元测试,需要编写以test 作方法名称的前缀,创建testName ()方法、testID ()方法和testEquals ()方法。另外还要重写父类的setUp ()方法,在该方法中创建并初始化测试用例中需要的数据。
完成代码如下:
import internalFrame.guanli.Item;
import junit.framework.TestCase;
public class ItemTest extends TestCase{
private Item item;
protected void setup() throws Exception{
}
public void testID(){
}
public void testName(){
assertEquals(item.getName(),"JAVA测试")
}
public void testEquals(){
Item newItem=new Item(); newItem.setId("007"); assertEquals(item.getId(),"007"); item=new Item(); item.setId("007"); item.setName("JAVA测试");
newItem.setName("JAVA测试");
assertEquals(item,newItem);
}
}
6. 在该类上单击鼠标右键,在弹出的快捷菜单中选择“运行方式”/“JUnit 测试”命令,运行Item 类的单元测试,根据警示条中的颜色,即可判断单元测试的成功于失败。因为在本系统中不需要判断Item 实例的相等性,所以Item 类没有实现父类的equals ()方法,可以不进行该测试,否则在判断两个Item 类的实例对象是否相等时,将出现判断失败。
4.2功能测试
基本信息管理模块的功能测试:
在此模块中,操作员登陆后能实现客户信息、商品信息和供应商信息等基本数据的录入,修改与删除,管理员也有此权限。
销售管理模块的测试:
在此模块中,操作员登录后能实现商品的销售单数据录入、客户退货数据录入等,管理员也有此权限。
查询统计模块的测试:
在此模块中,操作员登录后能实现客户信息查询、商品信息查询、供应商信息查询、销售查询、商品入库查询、入库退货查询。
系统管理模块的测试:
此模块仅对管理员开放,管理员登陆后可实现系统用户设置、操作权限设计和密码修改、操作员管理与退出等功能。
4.3集成测试与系统测试
集成测试应该考虑以下问题:
1.在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;
2.各个子功能组合起来,能否达到预期要求的父功能;
3.一个模块的功能是否会对另一个模块的功能产生不利的影响;
4.全局数据结构是否有问题;
5.单个模块的误差积累起来,是否会放大,从而达到不可接受的程度。 在各个模块都分别进行了测试之后,发现并改正了每个错误后,并不能保证整个系统的错误都已经测试出来了。而要进行系统性的测试,把系统看作一个统一的整体,把应用程序的各功能部件组合在一起后进行的测试。以保证各个模块能协调工作,正常处理各自的任务,能正确相互传递数据,确保系统的完整性与一致性,必须保证绝大部分功能正常实现。
本系统的测试过程中,以不同权限人员对系统进行操作,并对数据库进行各种复杂操作。经过三天的测试时间,测试出系统的多处重要错误,五十次要错误,并且在发现错误后进行了及时的改正,极大地减少了系统的错漏,而最终实现了系统的全部功能。
4.4 程序的异常处理
异常是指在程序执行过程中发生了错误, 并导致程序不能正常执行下去。程序运行时引起错误可能有许多的原因,从硬件、软件的改变到使用了别的开发团队的代码等等。有效的处理这些错误并使得它对于系统正常操作过程的中断最小化是每个有良知的程序员的责任。一个合格的系统,必须能有效地处理各种异常,防止应用程序中止运行,减少不必要的麻烦,避免给用户带来不良的感觉。程序的异常处理与系统的可维护性和稳定性有极大的关系。因此异常处理是开发本系统时重要考虑和特别注意的处理过程。
4.5调试
在每个测试的过程中,面对各种已知的和未知的错误,都需要我们去逐步调试。测试的目的是发现错误,而调试的目的就是改正错误。调试是改正程序错误,把从测试过程中发现的错误逐步改正,使系统成功实现每个功能的必要过程。调试人员需要具备从错误信息中找出错误原因,并根据错误原因采取有效的改正方法。
第五章 总结
经过几个月的制作完成了自己的毕业设计,从开始的想法,到实际的规划,概要设计,以及程序语言的选择,到最后的实际的制作,后期的调试,修改,这整个过程自己遇到了很多的问题,由于这是一个完整的程序设计过程,涉及的各个方面比较多,所以实现起来困难是肯定的,通过自己的查阅图书,上网搜索,以及辅导老师的指导下,克服了种种困难,在此特别感谢辅导老师不厌其烦的指导。
本次毕业设计,最大的收获是对信息系统分析设计有了更熟练的运用,对系统整体架构有了很好的把握。从项目的现状和研究意义、工作方案和进度计划、系统可行性研究、到需求分析、到系统设计、再到系统实施,严格遵守毕业设计要求,严格按照系统设计开发规范来组织进行,对自己的严密性、规范性等都有很好的指导意义。整个系统基本上实现了设计之初的目标,完成了系统规划阶段的构想。但限于水平有限,本系统还不够完善,如用户登录时账户加解密问题、有些地方容易异常等问题,但可以肯定的是,我会在后面的学习中将其完善,从而使其具有实际开发和使用意义,使之趋于完善。
总之,学习了三年后,即将毕业了,最后的毕业设计对我有很大的帮助,这不单单是一个学习任务,也是我以后从事这方面工作的一个经验,一个开始,一个认知,对我以后的学习和工作都有很大的帮助!