基于JAVA的小型超市管理系统
《网站规划与建设综合实验》
课程设计报告
设计题目: 基于JAVA的小型超市管理系统
专 业: XXXXXXX 班 级: XXXXX班 指导教师: XXXXX
组长姓名: XXXXX 学号: XXXXX
姓名: XXXXX 学号: XXXXX
姓名: XXXXX 学号: XXXXX 姓名: XXXXX 学号: XXXXX 姓名: XXXXX 学号: XXXXX
2013年6月 计算机科学与技术系
摘要
本文首先简单给出了超市管理系统的设计背景和意义,并介绍了系统开发所用到的开发工具和语言,然后在进行了需求分析的基础上,说明了系统功能模块的划分及各模块之间的相互关系,然后着重论述了系统功能的一些重要的技术实现过程。本系统的每一个功能模块都包含了多个功能。整个系统主要完成对超市商品的日常管理,包括进货管理,销售管理,库存管理,员工管理和供应商管理等方面。在功能上系统可以完成对相关信息的浏览、查询、添加、删除、修改等功能。本课题的核心之一是销售管理、库存管理和进货管理三者之间的联系,同时系统有完整的用户管理及权限管理功能。 本系统选择的是在Myeclipse8.5平台上使用Java语言作为前台开发工具,SQL2005作为后台数据库平台,通过SQL2005将系统所需的数据和用户操作的数据与前台连接起来。
关键词:
JAVA;数据库;Myeclipse;超市管理
1
目 录
1绪论 ..................................................................... 4
1.1课题的开发背景 ...................................... 4 1.2课题研究的目的与意义 .......................... 5 1.3开发方法 .................................................. 6 2基本理论 ............................................................. 7
2.1什么是Java ............................................. 7 2.2 Java语言的优势 ..................................... 9 2.3 SQL Server 2005数据库优点 .............. 10 3系统需求分析 ................................................... 12
3.1需求分析 ................................................ 12
3.1.1用例分析 ..................................... 12 3.1.2类图分析 ..................................... 13 3.2系统功能概述 ........................................ 14
3.2.1用户的特点 ................................. 15 3.2.2对功能的规定 ............................. 15 3.3运行环境规定 ........................................ 20
3.3.1设备 ............................................. 20 3.3.2开发环境配置 ............................. 21 3.4系统性能要求 ........................................ 21
3.4.1系统时间特性要求 ..................... 21 3.4.2系统灵活性 ................................. 22 3.4.3数据管理能力要求 ..................... 22 3.5可行性分析 ............................................ 22
3.5.1技术可行性 ................................. 23 3.5.2经济可行性 ................................. 23
1
3.5.3操作可行性 ................................. 24
4系统概要设计 ................................................... 24
4.1系统总体设计方案 ................................ 25 4.2系统数据流图 ........................................ 27 4.3系统活动图 ............................................ 28 4.4系统数据库设计 .................................... 29
4.4.1数据库需求分析 ......................... 29 4.4.2数据库概念设计(E-R图) .......... 30 4.4.3数据库逻辑结构 ......................... 31
5详细功能设计 ................................................... 39
5.1系统主要功能模块设计 ........................ 40
5.1.1登录模块流程 ............................. 40 5.1.2进货管理流程 ............................. 42 5.1.3销售管理流程 ............................. 43 5.1.4库存管理流程 ............................. 44 5.2系统主要功能模块实现 ........................ 45
5.2.1登陆模块实现 ............................. 45 5.2.2进货管理模块实现 ..................... 50 5.2.3 销售管理模块实现 .................... 52 5.2.4库存管理模块实现 ..................... 60
6系统测试 ........................................................... 61
6.1系统测试步骤 ........................................ 62
6.1.1单元测试 ..................................... 62 6.1.2集成测试 ..................................... 63 6.1.3确认测试 ..................................... 64 6.2系统测试 ................................................ 64
2
6.2.1界面测试 ..................................... 64 6.2.2功能测试 ..................................... 65
结 论 .................................................................... 69
3
1绪论
1.1课题的开发背景
随着竞争的日益激烈,如何降低成本已经成为超市首要解决的问题。对普通的超市来讲,涉及原材料的进货渠道,销售情况及库存等方面的管理,管理的好与坏对超市的持久性至关重要。概括地讲,用户对进销存系统的需求具有普遍性。超市进销存管理系统使用于超市的采购,销
4
售和仓库部门,对超市采购,销售及仓库的业务全过程进行有效控制和跟踪。使用超市进销存管理系统可有效减少盲目采购,降低采购成本,合理控制库存,减少资金占用并提高市场灵敏度,提升超市的市场竞争力。
1.2课题研究的目的与意义
随着小型超市规模的发展不断扩大,商品数量急剧增加,有关商品的各种信息量也成倍增长,传统的人工记忆方式也慢慢的无法适应形势的变化。随着信息技术的发展,计算机已被广泛的用于社会的各个领域,成为推动社会发展的技术动力。而在计算机应用中,软件的作用十分突出,软件已经发展成为信息技术的核心,主导着信息产品的开发和信息技术市场的进一步的开拓。软件产业已成为社会信息化进程中的一个战略性产业。在软件技术的应用中软件的开发技术尤其是应用型软件产品的开发技术成了重中之
5
重。不断开发适应用户需求、市场需要的新型软件产品。
超市需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。面对不同种类的信息,需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。商店自动化的产品管理在欧美等国家早已经实现,也是零售业管理的基础。它最主要的特点是能够实时的和准确的控制店内的销售情况。如果可以能够实时掌握销售流程及销售情况,则可以有效地加速商品的周转率并提高服务质量,而且可以减少产品售价不符等所产生的问题。顾客的消费要求的是希望在超市购物中能基本上都能购得所需的商品,并且还要既保证商品质量还要享受优质,方便的服务。
1.3开发方法
本系统采用Myeclipse8.5作为前台开发工
6
具。后台数据库采用SQL Server 2005数据库,因为它的灵活性、安全性和易用性为数据库编程提供了良好的条件。利用三层结构技术,即表示层、逻辑层、数据服务层。这三层被分成三个相对独立的单元。表示层负责与用户交互,并把相应的请求通过调用中间层的组件传递给逻辑层;逻辑层通过组件执行具体的事务逻辑,通过SQL等方式向第三层的组件提出数据或其他资源请求。表示层在客户端的应用浏览器中运行,数据访问也在专用的数据库服务器上运行。采用三层结构能很好的解决软件的可扩展性、安全性、管理性等关键问题。
2基本理论
2.1什么是Java
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems
7
公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,以“Java”的名称正式发布。
Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、
8
健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。
2.2 Java语言的优势
Java 编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心,Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台
9
上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在 J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。
2.3 SQL Server 2005数据库优点
SQL Server 2005的一个重要设计目标就是提高默认状态下的安全系数。为了缩小被攻击范围,最危险的一些特性都被禁用,除非数据库管理员启用它们。这有所帮助,不过,对有经验的数据库管理员来说帮助不大。他们基本上会编写锁定脚本,觉得安装时加以运行不是很麻烦。安全方面真正重要的改进则是密码管理和权限分配方面。现,在可以设置原始SQL密码来顾及Windows密码政策,这意味着用户可以要求SQL密码拥有与Windows账户同样的密码强
10
度、失效日期、历史、锁定 阈值、锁定时间及生命期等政策,甚至可以要求用户在下次登录时更改密码。安全方面的其他重要改进还包括:加强了对模式变更的控制、能够对数据进行列级加密。
SQL Server 2005不但克服了高可用性和灾难恢复方面的缺点,还几乎在各个方面都有了全面改进:管理任务得到了简化;监控和诊断功能得到了增强;默认的锁定配置、数据加密及其他新特性增强了安全。如今,分析服务(Analysis Services)、报表服务(Reporting Services)和数据挖掘(Data Mining)全面集成,而且已经很成熟。数据转换服务(DTS)已从头到尾经过了改写,已逐渐成为更强大、更灵活的SQL服务器集成服务(SSIS)。与Visual Studio和.Net/CLR的集成,把SQL Server的内部机制展现给了.Net开发人员、把.Net的内部机制展现给了SQL开发人员。这意味着,现在就可以利用.Net的强大
11
功能,用于存储过程、数据流和数据转换、商业智能等应用的。
3系统需求分析
3.1需求分析
需求分析是介于系统分析和软件设计阶段之间的重要桥梁。一方面,需求分析以系统规格说明和项目规划为分析活动的基本出发点,并从软件角度对它们进行检查与调整;另一方面,需求规格说明又是软件设计、实现、测试直至维护的主要基础。良好的分析活动有助于避免或尽早剔除早期错误,从而提高软件生产率,降低开发成本,改进软件质量。
3.1.1用例分析
12
用例图主要用来图示化系统的主事件流程,它主要用来描述客户的需求,即用户希望系统具
备的完成一定功能的动作,通俗地理解用例就是软件的功能模块,所以是设计系统分析阶段的起点,本文中采用用例技术进行需求分析的获取和分析。为了能够正确的找出系统的用例,需要确定系统的边界,找出系统的执行者。用例图如图1所示
图1 超市管理系统用例图
3.1.2类图分析
类图(Class diagram)由许多(静态)说明性的模型元素(例如类、包和它们之间的关系,这
13
些元素和它们的内容互相连接)组成。类图可以组织在(并且属于)包中,仅显示特定包中的相关内容。类图描述的是一种静态关系,在系统的整个生命周期都是有效的。在类描述中一般只给出主要类及主要类间的关系。类图是所有面向对象建模方法的核心部分,类图描述了系统的静态结构,由类及类间的关系组成。类是具有相同属性和相同方法的对象的集合,系统类图如图2所示。
图2 超市管理销售系统类图
3.2系统功能概述
本系统主要完成超市管理(商品信息管理、
14
供货商管理、进货管理、退换货管理、商品销售管理、客户管理、客户退货管理、仓库设置、库存管理)等功能。通过以上功能实现简单、便捷的超市管理系统。
3.2.1用户的特点
本软件最终的用户操作人员水平不一,大多数对电脑只是简单了解,一般用户除了具有一定的计算机应用能力外,还必须各司其职,不得随意泄露口令,以共同维护整个系统的安全和正常运行。维护人员要求具有专业计算机水平,必须具备一定的网络及数据库的操作和管理知识,并具有高度的责任感和强烈的安全意识。
3.2.2对功能的规定
本系统采用Myeclipse8.5作为开发平台,后台语言为Java,前台功能采用JavaScript,并采用SQL SERVER2005数据库开发一个供超市员工使用的小型超市管理系统,利用数据库的读写
15
实现管理系统的各个功能,本系统主要完成超市商品信息管理、供货商管理、进货管理、退换货管理、商品销售管理、客户管理、客户退货管理、库存管理等功能。通过以上功能实现简单、便捷的超市管理系统。系统能够实现对商品的入库管理、商品销售管理等方面提供存储、更新、查询、统计汇总、打印等功能,超市中库存商品资料,出库、入库信息由管理人员在系统库存单元负责管理。而商品销售,商品查询由收银员在前台实现。因此系统范围不涉及管理决策单元和财务单元中往来、账款资金方面的管理。
本系统分为管理员登陆和员工登陆两种用户登陆模式。
1)管理员登陆
管理员登陆之后可以进行商品信息管理,员工信息管理,商品进货管理,商品销售管理,商品库存管理,系统管理等操作;
(1) 商品信息管理:商品信息分为商品类
16
别管理、商品信息添加、商品信息维护等操作。添加商品类别的时候只需输入类别名称(类型一般分为:日用品、食品、药品、电器、衣物、床上用品);添加库存商品时候要填入:商品编号、商品类别、商品名称、商品单位、商品型号、商品规格、商品售价、商品产地以及附加备注信息等;而商品信息维护可以更新商品的名称、商品类型、商品售价、商品规格等信息。
(2) 员工信息管理:员工信息管理有员工信息添加和员工信息维护两个操作。员工信息添加需要添加员工的编号、姓名、性别、生日、电话、身份证、家庭住址以及密码等信息;员工信息维护则可以更新修改员工个人信息、
(3) 商品进货管理:进货管理分为进货登记、进货查询、退货登记、退货查询。登记需要选择供应商信息、商品,录入进货价格、数量、总价、日期等;进货查询则可以查询商品的供应商,进货单价、总价、数量、日期等;退货登记
17
除了要登记以上信息外还有填写退货原因,退货查询则可以查询退货的信息。
(4) 商品销售管理:商品销售管理分为商品销售查询、员工业绩查询、顾客退换货办理、退货商品查询等四个操作。其中,商品销售查询可以根据员工编号销售查询员工的销售情况,也可以根据单据号查询某一笔交易的情况,还可以根据时间查询本超市该时间段的商品销售状况;员工业绩查询则可以查询某一段时间内各员工的销售业绩;顾客退货办理,需按要求输入该交易的销售单据、商品编号、退货单价、退货数目、退货原因以及商品是否完好等消息才能实行退登记;退货信息查询则可以根据商品编号、单据号以及时间查询本超市的商品退货信息以及退货商品总金额。
(5) 商品库存管理:商品库存管理分为商品库存查询和商品库存报警。商品库存查询可以根据商品的编号或者名称查询本超市该商品
18
的库存信息;商品库存报警功能则是当库存量低于20的时候出现红色警报,而商品的库存量高于300的时候出现黄色提醒。
(6) 系统管理:系统管理包括供应商管理、修改密码、关于系统等模块。供应商管理可以显示全部供应商信息,并且添加新的供应商信息(需填写供应商公司名称、供应商法人代表、供应商电话、供应商地址等信息);修改密码泽可以修改当前登录用户(即管理员)的登录密码;关于系统模块则是介绍本系统的开发环境等一些信息。
2)员工登陆
员工登陆模式有商品销售管理、商品库存管理、系统管理三个操作。
(1) 商品销售管理:商品销售管理包括商品销售和个人业绩查询两个功能。商品销售时,员工可以根据商品编号搜索获取顾客想要购买的商品信息,然后填写顾客要购买的数量并且添
19
加到购物车,添加完顾客要购买的全部商品后在进行结账,系统计算全部商品的总价,再根据顾客付给的金额计算找零,最后完成操作回到销售商品页面。个人业绩查询,员工可以根据单据号或者日期查询自己的销售业绩。
(2) 商品库存管理:商品库存管理模块,员工也可以查看商品库存和库存报警。
(3) 系统管理:员工的系统管理模块只包括修改密码和关于系统两个操作。
3.3运行环境规定 3.3.1设备
a> 为了使本系统可以稳定的运行,硬件要求CPU达到奔腾3以上,内存至少为512M。
b> 外存可以不做要求,但建议应该在40GB以上。
c> 本系统不要求在联机情况下使用。
20
3.3.2开发环境配置
在开发企业小型超市管理系统时,开发环境配置如下:
1) 硬件平台 计算机设备
2) 软件平台 操作系统: 数据库:
Microsoft Windows XP Professional Microsoft SQL Server 2005 Myeclipse 8.5 IE 6.0
开发工具: 浏览器:
Framework版本: Framework 2.0
3) 辅助工具
界面辅助工具:
Photoshop cs4
3.4系统性能要求
对系统性能的要求包括对系统时间要求,灵活性,数据管理能力等的要求。
3.4.1系统时间特性要求
系统的速度要在用户可接受的范围内,但考虑到需要实时检测商品的数量和库存情况,对资源实时搜索的速度可以有较低的要求。
21
3.4.2系统灵活性
系统要有良好的接口,以适应增加商品信息,增加商品类型,增加相关的商品录入功能的需求;增加商品信息的更改和更新功能。
3.4.3数据管理能力要求
系统要有较高的管理能力,本系统采用的是SQL Server 2005数据库。具有较强的数据处理能力,数据库引擎增强、分析服务增强等。记录的个数随用户多少不定,但能保证注册的用户都能登录进来,没有延时。
3.5可行性分析
可行性分析是依据初步调查的结果做出系统开发可行与否的结论过程。任何一个工程的立项都需要进行项目的可行性分析。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决、是否值得去解决。根据调查分析,系统设计方案有以下三个可行性。
22
3.5.1技术可行性
根据前期的市场调查与对下列系统功能、性能及实现系统的各项所需技术的约束条件的分析来看,本系统程序开发应是一个集数据库管理和查询为一身的系统,依据现有的开发技术,开发硬件、开发软件的性能要求及环境条件等来看,各项条件良好,同时,考虑给予的开发期限较为充裕,预计可以在规定期限内完成预定功能地开发与实现。
在软件方面本程序设计采用的开发环境是Myeclipse8.5用开发语言Java编写程序 ,SQL Server 2005做后台数据库。在硬件方面电脑的各种配置包括输入输出能力,内部存储器和外部存储器的容量都能满足用户的要求。
3.5.2经济可行性
本超市管理系统,其前期的投入比较小,主要是系统的设计费用:其中包括系统开发费用、
23
管理和维护费等。而后续的投入相对较小,很长时间内都不会需要进一步投资,管理和维护费用也很少,而系统实际能够起到的作用会远远大于投入的开发费用,相信会有十分可观的前景。因此这个系统很有开发价值。
3.5.3操作可行性
本系统界面清晰直观、易于操作。由于它能够准确记录、检索和管理有关超市各类商品信息和用户信息,帮助超市经营者掌握和分析营销情况,及时做出正确决策,并且便于超市相关内部人员对商品的管理,因而大大提高了超市的管理水平与效率。
综上所述,从经济可行性、技术可行性和操作可行性来说,系统开发是完全可行的。
4系统概要设计
本阶段完成系统的大致设计并明确系统的
24
各模块功能以及数据结构。
在概要设计阶段的指导思想是结构化指导思想,是指用一组标准的规则和图表工具确定系统有哪些模块,怎么连接,从而形成新系统的结构,然后再进行诸如输入、输出、对话等设计,为整个系统的实施做好铺垫。
4.1系统总体设计方案
本系统前台使用Myeclipse8.5平台来设计,访问数据库服务器;后台采用Microsoft公司的SQL Server 2005。SQL Server2005开发后台数据库,用于提供数据服务。SQL Server 2005是一种典型关系型数据库管理系统,该系统具有数据一致性好,完整性强,安全性高的优点,系统采用结构化设计方法,按超市实际工作内容来确定所需,将整个系统作为一个大模块自顶向下,以模块化结构设计技术进行模块分解,然后再自底向上,按照系统的结构将整个模块进行组合,
25
最终完成本超市管理系统的开发。具体功能模块如下:
登录模块:具备登录员工、管理员登陆功能。 商品信息管理模块:提供添加商品类型,修改商品信息、商品类型管理功能。
供应商管理模块:具备供应商信息查询、添加新供应商的功能。
进货管理模块:提供进货登记、进货查询的功能。
退货管理模块:提供退货登记、退货查询功能。
商品销售管理模块:提供销售登记、销售记录查询功能。
客户退货管理模块:提供销售退货登记、销售退货查询功能。
库存管理模块:提供库存查询、库存商品预警查询功能。
26
4.2系统数据流图
数据流图是将提供给用户的业务流程图进行功能建模,转化成开发人员能够理解的一系列“逻辑模型”图,即以图形化的方法描绘数据在系统中的流动和处理的过程,这些图都应该用规范的DFD描述。
本系统操作流程,用户根据不同的身份账号进入登录模块,在登录栏处输入用户名和密码以及随机产生的验证码,然后选择用户类别,系统进行验证用户身份,若系统没有检索到用户名,则不允许进入,进去后根据所拥有的权限进行操作。管理员拥有所有权限可选择某种商品种类,点击进入商品信息管理模块,查看商品细售价等信息,销售模块和进货模块可以修改进货和销售清单。在供货商管理模块中可以查看供货商详细的通讯地址、联系方式等信息
本系统的数据流图是比较清晰的,对各功能
27
模块来说都比较有规律。系统的第一层层和第二层数据流图分别如图3和图4所示。
4.3系统活动图
活动图阐述了用例实现的过程,用于研究实现业务目标时所要执行的各项任务或活动的顺序安排。本超市管理系统的活动图如图5所示:
图5 超市管理系统活动图
28
4.4系统数据库设计
数据库设计是建立数据库及应用系统的技术,是信息系统开发和建设中的核心技术,具体说,数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及应用系统,使之能够有效地存储数据,满足各种用户的要求数据库设计是管理信息系统的重要组成部分。这里采用SQL Server2005数据库。该数据库对行增、删、改、统计、显示和应答都极为方便。其中的排序和索引功能,对数据快速定位、查询提供了有利条件。
4.4.1数据库需求分析
主要是收集基本数据及确定数据的处理要求,需求分析主要解决如下问题:
1、数据要求:用户需要从数据库中获取什么数据,并决定在数据库中存储那些数据。
2、操作要求:明确用户对数据的操作要求,
29
从而确定数据之间的关系。
4.4.2数据库概念设计(E-R图)
概念结构设计是整个数据库设计的关键,它能通过对需求进行综合,归纳与抽象,形成一个独立于具体DBMS的概念模型,即E-R图。简单的说,E-R图用来分析数据关系的。下面具体给出超市管理系统主要的实体图。
管理员实体图如图6所示。
商品信息实体图如图7所示
30
进货管理实体图如图8所示
销售管理实体图如图9所示。
4.4.3数据库逻辑结构
逻辑结构是把概念结构转换为某个DBMS所支持的数据模型,并对其进行优化。本系统根据E-R图可以对数据库进行设计,以下列出主要的数据表。
员工信息表如表4.1所示:
表4.1 用户信息表
字段
字段名
31
类型
是否为空
employeeNo ID
employee
姓名
Name employeePa
密码
ssword employeeSe
性别
x
employeeBir
生日
thday employeeEd
学历 int
ucationId
employeeHo家庭电varcharmeTel (20) 话 employeeMovarchar
手机号
bile (20) employeeCa身份证varchar
rd (20) 号
employeeE电子邮varcharmail (30) 箱
employeeAd家庭住nvarcha
dress r(80) 址
商品信息表如表4.2所示:
表4.2 商品信息表
字段
字段名
类型
varchar(20) nvarchar(20) varchar(30) nchar(1) datetime
否 是 是 是 是 是 是 是 是 是 否
是否为空 否
varchar(
goodNo 商品编
20)
32
号
goodClas类型编
Int 是
sId 号
goodNam商品名nvarcha
否
e r(30) 称
商品单nvarcha
goodUnit 是
r(2) 位
goodMod商品型nvarcha
是
el r(20) 号
goodSpec商品规nvarcha
是
s r(20) 格 goodPric商品售
float 是
e 价
goodPlac商品产nvarcha
是
e r(50) 地 goodMe备注信
char(10) 是
mo 息 goodAdd进货日
datetime 是
Time 期
供应商信息表如表4.3所示:
表4.3 供应商信息表
是否
字段 字段名 类型
为空
supplierNa公司名nvarcha
否
me r(50) 称
supplierLa法人代nvarcha是
33
wyer r(4) 表 supplierTelvarchar
电话 否
ephone (11) supplierAdnvarcha
地址 是
dress r(50) 退货登记信息表如表4.4所示:
表4.4 退货登记表
字段
字段名
类型 int varchar(20) varchar(50) float int float datetime text datetime
是否为空 否 是 是 是 是 是 是 是 是
buyBackI退货编
d 号
商品编
goodNo
号
supplierN
供应商
ame
退货价
price
格 退货数
number
量 退货总
totalPrice
价
buyBackD退货日
ate 期 buyBackR退货原eason 因 buyBackA
登记时
ddTime
34
间
进货登记信息表如表4.5所示:
表4.5 进货登记表
是否
字段 字段名 类型
为空
buyId 进货单号 int 否
varchar
goodNo 商品编号 否
(20)
suppliernvarch
供应商 否
Name ar(50) price 进货价格 float 是 number 进货数量 int 是 totalPrice 进货总价 float 是
datetim
buyDate 进货日期 是
e datetim
addTime 登记时间 是
e
管理员信息表如表4.6所示: 表4.6 管理员信息表 字段是否
字段 类型
名 为空
adminUs用户varchar(2
否
ername 0) 名 adminPavarchar(3
密码 否
ssword 2) 学历信息表如表4.7所示:
35
表4.7 学历信息表 字段是否
字段 类型
名 为空
education学历
int 否
Id 编号
education学历nvarchar(
否
Name 20) 名称
员工业绩信息表如表4.8所示:
表4.8 员工业绩表
字段
字段名
类型
是否为空 否 否 否
员工编varchar
employeeNo
(20) 号
employeeNa员工名nvarch
me ar(8) 称 employeeSe销售金
float
llMoney 额
销售信息表如表4.9所示:
表4.9 销售信息表
字段
字段名
类型 int
是否为空 否 否
销售编
sellInfoId
号 sellNo
varchar(30
单据号
)
36
商品编varchar(20
goodNo 是
) 号
销售价
price float 是
格 销售数
number int 是
量 销售总
totalPrice float 是
价 销售时
sellTime datetime 是
间
employeevarchar(20
员工号 是
No )
商品库存信息表如表4.10所示: 表4.10 商品库存信息表
是否为
字段 字段名 类型
空
sellBackI退货编
int 否
d 号
销售单varchar
sellNo 是
(20) 据
商品编varchar
goodNo 是
(20) 号
退货价
price float 是
格 退货数
number int 是
量
37
退货总
totalPrice float 是
价
sellBack退货原
text 是
Reason 因
sellBack退货时datetim
是
Time e 间
商品类别信息表如表4.11所示:
表4.11 商品类别信息表
是否为
字段 字段名 类型
空
goodClas类型编
int 否
sId 号
goodClas类型名nvarcha
是
sName r(20) 称
商品库存信息表如表4.12所示: 表4.12商品库存信息表
是否为
字段 字段名 类型
空
商品编varchar
goodNo 否
(50) 号
goodCou库存数
int 是
nt 量
购物车信息表如表4.13所示: 表4.13购物车信息表
字段 字段名 类型 是否为
38
空
goodCart购物车
int
Id 编号
employee员工编varcharNo (20) 号
商品编varchar
goodNo
(20) 号
goodCou商品数
Int
nt 量
否 是 是 是
5详细功能设计
详细设计的根本目标是确定应该怎样具体地实现所要求的系统,也就是说,经过这个阶段的设计工作,应该的出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某个设计的语言书写的程序。
详细设计的任务不是具体的编写程序,而是要设计出程序的“蓝图”,以后可根据这个蓝图写出实际的程序代码。详细设计的目标不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设
39
计出的处理过程应该尽可能简明易懂。
本系统所包括的几大模块如下:登录模块、进货模块、库存管理模块、销售管理等多个模块。
5.1系统主要功能模块设计 5.1.1登录模块流程
本模块的主要功能是对用户身份进行验证,只有系统的合法用户才能进入系统。在进行系统登录过程中,登录模块将调用数据库里的用户清单,并对账号和密码进行验证,只有输入了正确的账号和密码后,系统登录才会成功。并在输入了错误的或者是不存在的账户和密码时,系统会提示出错信息,指明登录过程中的错误输入或者错误操作,以便用户进行正确的登录。系统登录模块流程如图10所示:
40
41
5.1.2进货管理流程
功能:该模块主要是实现进行进货信息查询功能。
进货信息查询:该模块为超市提供整个超市的进货情况查询,也可以进行进货信息的明细查询。
输入项、输出项:该模块的输入项为超市的商品编号,其中包括商品的编号、供货商号、进货价、数量、金额进货日期和备注。进货管理流程如图11所示:
42
5.1.3销售管理流程
功能:本模块的主要功能是把销售信息写入销售清单,同时对库存清单进行更新,以备用户将来对库存信息进行查询和打印,此外还可以对销售信息进行查询和盘点功能。
销售信息查询:根据商品销售情况,按需要对销售情况进行查询。在该查询模块中,可以按照商品的编号、销售日期等多种方式进行商品销售信息查询。
销售信息盘点:可以按照需要对在一定时期内的销售情况进行盘点。
输入项、输出项:本模块的数据输入项主要是商品的单据号和员工编号。其中还包括销售数量和销售日期。销售管理流程如图12所示:
43
5.1.4库存管理流程
功能:本模块的主要功能是商品信息的查询和更新,库存信息的查询和更新。
查询商品信息:主要功能查询商品的明细信息,和它的库存信息。
添加商品信息:主要功能添加新进的商品。
44
修改商品信息:主要功能是修改商品的信息,包括他的库存数量。
删除商品信息:主要功能是删除不再销售的商品信息。
输入项、输出项:本模块的数据输入项主要是商品编号。
库存管理流程如图13所示。
5.2系统主要功能模块实现 5.2.1登陆模块实现
此模块主要实现员工和管理员的登录进入系统,需要输入用户名、密码和验证码,填写完
45
毕后,点击发送,如填写成功顺利进入系统,如用户名、密码或者验证码错误则会提示相应错误信息。
登录主界面如图14所示:
图14 登录界面
后台代码如下:
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub
//response.setContentType(\"text/html;charset=GBK\");
HttpSession session = request.getSession();
/* 首先取得jsp页面传来的参数信息 */ String txtName =
request.getParameter(\"txtName\");
46
String txtPwd =
request.getParameter(\"txtPwd\"); String identify =
request.getParameter(\"identify\"); String code =
request.getParameter(\"code\");
String sessionCode = (String) session.getAttribute(\"code\"); String errMessage = \"\";
/* 验证输入信息的完整行和正确性 */ if (txtName.equals(\"\"))
errMessage += \"用户名不能为空!\"; if (txtPwd.equals(\"\"))
errMessage += \"密码输入不能为空!\"; if (!code.equals(sessionCode))
errMessage += \"验证码输入不正确!\"; if (txtPwd.indexOf(\"'\") != -1)
errMessage += \"请不要进行sql注入攻击!\";
/* 如果验证没有通过转到登陆页并提示错误信息 */
if (!errMessage.equals(\"\")) {
request.setAttribute(\"errMessage\", errMessage);
RequestDispatcher wm =
request.getRequestDispatcher(\"login.jsp\")
47
;
wm.forward(request, response); return; }
/* 如果初步验证通过就需要进一步验证 */
/* (1)如果是管理员身份登陆系统 */ if (identify.equals(\"admin\")) { Admin admin = new Admin();
admin.setAdminUsername(txtName); admin.setAdminPassword(txtPwd); /*如果是管理员身份用户名和密码都验证成功则设置session的值然后重定向到管理首页*/
if (AdminDAO.checkLogin(admin)) { session.setAttribute(\"adminFlag\", true);
session.setAttribute(\"adminUsername\", txtName);
response.sendRedirect(\"Admin/index.jsp\");
} else {
errMessage += \"管理员帐号或密码错误!\";
48
request.setAttribute(\"errMessage\",errMessage);
RequestDispatcher wm =
request.getRequestDispatcher(\"login.jsp\");
wm.forward(request, response); }
} else if (identify.equals(\"employee\")) {
Employee employee = new Employee(); employee.setEmployeeNo(txtName);
employee.setEmployeePassword(txtPwd); /*如果是员工身份用户名和密码都验证成功也设置session的值然后转到员工操作首页*/
if(EmployeeDAO.checkLogin(employee)) {
session.setAttribute(\"employeeFlag\", true);
session.setAttribute(\"employeeNo\", txtName);
49
response.sendRedirect(\"Employee/index.jsp\");
} else {
errMessage += \"员工帐号或密码错误!\";
request.setAttribute(\"errMessage\",errMessage);
RequestDispatcher wm =
request.getRequestDispatcher(\"login.jsp\");
wm.forward(request, response); } } }
5.2.2进货管理模块实现
商品的进货管理是超市管理系统中的一个非常重要的功能,在庞大的商品信息中,能够及时添加所缺少的商品,是超市经营中一个重要的环节。本系统采用商品数量预警方案,当商品数量下降到预警范围内。管理员就会及时发现缺的
50
商品,从而进货。本模块对商品的录入进行操作。进货管理模块如图15所示。
图15 进货登记模块
本模块使用了Ajax技术,在选择商品名称时,无刷新快速显示商品信息。
主要实现代码如下:
function DisplayGoodInfo() { var GoodName =
XMLHttpReq.responseXML.getElementsByTagName(\"GoodName\")[0].firstChild.nodeValue; var GoodModel =
XMLHttpReq.responseXML.getElementsByTagName(\"GoodModel\")[0].firstChild.nodeValue; var GoodSpecs =
XMLHttpReq.responseXML.getElementsByTagName(\"GoodSpecs\")[0].firstChild.nodeValue; var GoodPlace =
XMLHttpReq.responseXML.getElementsByTagNa
51
me(\"GoodPlace\")[0].firstChild.nodeValue;
document.getElementById(\"GoodName\").innerHTML = GoodName;
document.getElementById(\"GoodModel\").innerHTML = GoodModel;
document.getElementById(\"GoodSpecs\").innerHTML = GoodSpecs;
document.getElementById(\"GoodPlace\").innerHTML = GoodPlace;
document.getElementById(\"GoodInfo\").style.display = \"\";
}
5.2.3 销售管理模块实现
销售管理是超市系统中的核心部分,进入销售界面,选择需要的货物,并输入数量。系统会自动算出价格。录入待销售的界面。点击确认,并转向销售单。销售信息的写入销售清单,同时对库存清单进行更新,以备用户将来对库存信息
52
进行查询。商品详细的信息已经录入超市的数据库中,这样大大缩小了销售人员的工作量。提高了销售人员的工作效率。销售管理模块如图16和17所示。
图16 商品销售购物车
图17 商品销售结账
主要实现后台代码如下:
/*传入商品销售购物车信息模型对象,将商品销售信息加入到系统中*/ public boolean
53
AddGoodCartInfo(GoodCart goodCart) {
/*进行相关的验证*/
if (goodCart.getGoodNo() == \"\") {
this.errMessage = \"请输入商品编号信息!\";
return false; }
String sqlString = \"select * from [goodInfo] where goodNo='\" + goodCart.getGoodNo() + \"'\"; try {
DB db = new DB(); ResultSet rs =
db.executeQuery(sqlString); if(!rs.next()) {
this.errMessage = \"你输入的商品编号信息不存在!\";
return false; }
db.all_close();
/*验证商品的库存是否够卖*/
sqlString = \"select goodCount from [goodStockInfo] where goodNo='\" +
54
goodCart.getGoodNo() + \"'\";
rs = db.executeQuery(sqlString); int goodCount = 0;
if(rs.next()) goodCount = rs.getInt(\"goodCount\"); db.all_close();
if (goodCart.getGoodCount() > goodCount) {
this.errMessage = \"你输入的商品销售数目超出了系统库存\"; return false; }
/*将商品销售信息加入到购物车信息表中*/
sqlString = \"insert into [goodCartInfo]
(employeeNo,goodNo,goodCount) values ('\"; sqlString +=
goodCart.getEmployeeNo() + \"','\";
sqlString += goodCart.getGoodNo() + \"',\";
sqlString += goodCart.getGoodCount() + \")\";
if(db.executeUpdate(sqlString) <= 0) {
55
this.errMessage = \"将商品销售信息加入到购物车信息表时发生了错误!\"; return false; }
sqlString = \"update [goodStockInfo] set goodCount = goodCount -\" + goodCart.getGoodCount() + \" where goodNo='\" + goodCart.getGoodNo() + \"'\";
if(db.executeUpdate(sqlString) <= 0) {
this.errMessage = \"添加商品销售信息修改商品库存失败!\"; return false; }
return true;
} catch (Exception e) {
// TODO Auto-generated catch block e.printStackTrace(); return false; } }
/*根据员工编号得到购物车中商品的总价格*/
public static float
GetTotalPriceInCart(String employeeNo) {
56
float totalPrice = 0.0f; /*查询该员工的购物车*/
String sqlString = \"select * from [goodCartInfoView] where employeeNo='\" + employeeNo + \"'\"; try {
DB db = new DB(); ResultSet rs =
db.executeQuery(sqlString);
/*遍历购物车中每条商品销售记录并计算总的价格*/
while(rs.next()) { totalPrice +=
rs.getFloat(\"goodPrice\") * rs.getInt(\"goodCount\"); }
db.all_close();
} catch (Exception e) {
// TODO Auto-generated catch block e.printStackTrace(); }
return totalPrice; }
/*根据传递过来的销售小票号和员工编号实现对应购物车中商品销售信息的登记,然后清空购物车*/
57
public static boolean
AddGoodSellInfoInCart(String sellNo, String employeeNo) {
boolean isSuccessful = true; /*查询该员工的商品销售购物车中信息*/
String sqlString = \"select * from [goodCartInfoView] where employeeNo='\" + employeeNo + \"'\"; try {
DB db = new DB(); ResultSet rs =
db.executeQuery(sqlString);
/*将每条商品销售信息登记入商品销售信息表*/
while(rs.next()) {
SellInfo sellInfo = new SellInfo();
sellInfo.setSellNo(sellNo);
sellInfo.setGoodNo(rs.getString(\"goodNo\"));
sellInfo.setNumber(rs.getInt(\"goodCount\"));
58
sellInfo.setPrice(rs.getFloat(\"goodPrice\"));
sellInfo.setTotalPrice(sellInfo.getPrice() * sellInfo.getNumber());
sellInfo.setEmployeeNo(employeeNo);
if(!SellDAO.AddSellInfo(sellInfo)) isSuccessful = false; }
/*然后清空该员工的商品购物车*/ sqlString = \"delete from
[goodCartInfo] where employeeNo='\" + employeeNo + \"'\";
if(db.executeUpdate(sqlString) <=0 )
isSuccessful = false; db.all_close();
} catch (Exception e) {
// TODO Auto-generated catch block e.printStackTrace(); isSuccessful = false; }
return isSuccessful;
59
}
5.2.4库存管理模块实现
库存管理模块主要用于编辑每种商品的具体信息,如商品代码、商品名称、商品价格、库存数量等。用户可以通过该模块添加、编辑、查找商品信息,同时可以依据显示的库存情况制定进货单,制定后程序通过将新进货单数据插入到后台数据库中的进货表中,来实现数据间传递,这样在进货界面用户可以了解到进货情况。库存管理模块如图18和19所示。
18 库存查询
图4.10 库存预警
60
主要实现代码如下:
if(null != goodStockList) { for(int
i=0;i GoodClassDAO.GetGoodClassNameById(good.getGoodClassId()); int goodCount = goodStock.getGoodCount(); String color = \"yellow\"; if(goodCount < 20) color = \"red\"; 6系统测试 系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通 61 过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案。 系统测试的策略主要考虑如何把设计测试用例的技术组织成一个系统的、有计划的测试步骤。从模块开始,一级一级的向外扩展,直至整个系统测试完毕。 6.1系统测试步骤 6.1.1单元测试 单元测试也称模块测试。通常单元测试可放在编码阶段,程序员在编写好一个模块后,总会对自己编写的模块进行测试,检查它是否实现了详细设计说明书中规定的模块功能和算法。单元测试主要发现编码和详细设计中产生的错误,通常采用白盒测试。本系统用户登录模块单元测试方案如下: 1)用户登录模块输入测试方案 62 输入用户名、密码、验证码,点击登录 2)用户登录模块输出结果预测 输入正确该用户将成功登录到主界面 3)用户登录模块测试结果预测 a 测试记录 姓名:admin 密码:123 验证码:随机 姓名:EM001 密码:123 验证码:随机 b 结果分析 成功登录到管理员主界面,说明该模块正常 成功登录到员工主界面,说明该模块正常 提示“用户名或密码错误,请重新输入” 6.1.2集成测试 集成超市管理系统测试的主要目的检测系统是否达到需求对业务流程及数据流的处理是否符合标准,检测系统对业务处理是否存在逻辑不严谨及错误,检测需求是否存在不合理的标准及要求。 63 6.1.3确认测试 确认测试的任务是检查软件的功能、性能及其他特征与用户的需求一致,它是以需求规格说明书(即需求规约)作为依据的测试。确认测试通常采用黑盒测试。这次的测试方法是从性能评测来进行确认测试,它对响应时间、事务处理速率和其他与时间相关的需求进行评测和评估。性能评测的目标是核实性能需求是否都已满足。实施和执行性能评测的目的是将超市管理系统的性能行为当作条件(例如工作量或硬件配置)的一种函数来进行评测和微调。 6.2系统测试 6.2.1界面测试 界面测试主要包括以下几个方面的内容: 窗体是否正确背景和色调是否正确、美观,是否符合用户需求;窗体在窗口中的显示是否正确、美观,表单样式大小,格式,是否对提交数据进行验证(如果在页面部分进行验证的话)等连接的形式,位置,是否易于理解等。 窗体元素的容错性列表、窗体元素的容错性是否存在、窗体元素的容错性是否正确、窗体元 64 素基本功能是否实现、窗体元素的外形、窗体元素是否显示正确。 6.2.2功能测试 对功能测试是测试中的重点,主要包括一下几个方面的内容: 连接这个连接和界面测试中的连接不同那里注重的是连接方式和位置,如是图像还是文字放置的位置等,还是其他的方式。这里的连接注重功能。如是否有连接,连接的是否是说明的位置等。 表单提交应当模拟用户提交,验证是否完成功能,如注册信息,要测试这些程序,需要验证服务器能正确保存这些数据,而且后台运行的程序能正确解释和使用这些信息。还有数据正确性验证,异常处理等,最好结合易用性要求等。提交数据,处理数据等如果有固定的操作流程可以考虑自动化测试工具的录制功能,编写可重复使 65 用的脚本代码,可以减轻测试人员的工作量。 在对系统的功能模块测试中,用户登录模块测试用例如表6.1所示。 测试条件:(管理员or员工) AND 密码 AND 验证码 组合:{(t,t),(t,f),(f,t)} 扩展组合:{(f,t,t),(t,f,t),(f,t,f),(t,f,f),(f,f,t)} 白盒测试: 测试案例1:a=管理员,b为空,c=验证码 测试案例2:a=管理员,b=123,c=验证码 测试案例3:a=管理员,b=12,c=验证码 测试案例4:a=管理员,b=12,c为空 测试案例5:a=管理员,b=123,c为空 测试案例6:a=员工,b=123,c=验证码 测试案例7:a=员工,b为空,c=验证码 测试案例8:a=员工,b=12,c=验证码 测试案例9:a=员工,b=123,c为空 黑盒测试: 66 运用等价分类法划分等价类补充用例,然后用边值法和猜错法附加用例,具体的测试案例如下: 测试案例10:a=管理员,b为空,c=验证码(边值法) 测试案例11:a=管理员,b=123456789@#,c=验证码(边值法) 测试案例12:a=管理员,b=¥@#,c=验证码(无效等价类) 测试案例13:a=员工,b为空,c=验证码(有效等价类) 测试案例14:a为空,b为空,c为空(猜错法) 序 号 1 2 表6.1 登录模块测试用例表 实测成功与否、失 输入值 预期结果 结果 败原因 a=管理员,b 提示密码不提示密码 为空,c=验证成功 能为空 不能为空 码 a=管理员,登录至管理登录至管 成功 b=123,c=验界面 理中心 67 证码 a=管理员, 提示用户密显示用户 3 b=12,c=验证 码错误 密码错误 码 成功 失败,测试员 4 a=管理员,b=321,c为空 5 a=管理员,b=123,c为空 a=员工, 6 b=123,c=验证码 7 a=员工,b为空,c=验证码 a=员工, 8 b=12,c=验证码 9 a=员工,b=123,c为空 a=管理员,b 为空,c=验证码 a=管理员, 11 b=123@#,c=验证码 a=管理员,b= ¥@#,c=验证码 a=员工,b为提示用户密码错误 提示验证码输入不正确 登录至业务管理 提示密码不能为空 提示用户密码错误 提示验证码 输入不正确 提示密码不能为空 提示密码错误 提示密码错误 提示密码不68 验证码输入不正确 验证码输 入不正确 登录至业 务管理 提示密码 不能为空 提示用户 密码错误 提示验证 码输入不正确 提示密码 不能为空 提示密码 错误 提示密码 错误 提示密码未检查系统是否先检验 验证码 成功 成功 成功 成功 成功 成功 成功 成功 成功 10 12 13 不能为空 提示用户 提示用户名、名、密码 a为空,b为密码不能为不能为14 空,c为空 空,验证码输空,验证 入错误 码输入错 误 空,c=验证码 能为空 成功 结 论 从开始选择题目、系统的规划再到后来系统的一点点的设计与实现,在经过不断的调试和修改,本超市管理系统基本完成。 本超市管理系统实现了超市管理的一些基本功能,像入库管理、出库管理、商品信息管理、销售管理和查询等功能。对于一般的小超市来说还是很有实际意义以及很强的实用性的。比如在销售了商品或者修改了某种商品信息时,与之关联的库存表和信息表也被修改,实现了数据的实时性。同时各个模块之间都有查询功能,用来实时掌握库存量的动态和商品最新的信息。当某一 69 种商品数量达到预警水平时,系统会发出库存不足的警报,提醒管理员该进货。本系统同时还具有以下特点:扩展性能好,以及快速便捷的操作能力。系统比较安全可靠,用户管理权限很明确。本系统采用相应的技术,具有很好的安全严密性,系统完善的功能设置、比较友好的流程化界面,节省了大量的人力物力和财力,同时也降低了超市的运营成本。总的来说本系统是一个比较好的比较适合小超市的系统,它通过前台和数据库,将原来比较繁琐、浪费时间精力还易出错误的工作,变得简单。 但是本系统功能还是有明显的缺陷,比如管理员只能对用户信息以及商品信息进行添加和更新,却没有删除功能,但是管理员可以对过期或者错误的商品信息进行更改,所以不影响超市的正常业务运行。并且本系统的美观和人性化还做得不够。手动操作量大,如在进货、输入商品信息、商品销售时都需要手工输入,这一缺陷导 70 致系统处理大量数据的时候反应很慢。由于时间关系使得这些缺陷都没有来得及解决。 71 计算机科学与技术系--《网站规划与建设综合实验》课程设计 参 考 文 献 [1] 汤一平.Java 语言程序设计[M]. 北京:科学出版社,2006. [2] 张砚秋,陈川,何明德.基于MVC设计模式构筑JSP/Servlet+EJB 的 Web 应用[J].计算机工 程,2005,23(1):34~38. [3] 刘春菊,朱欣焰.基于JSP/JavaBean的Web GIS实现技术[J].武汉大学学报(信息科学版),2003:28. [4] 徐迎晓.Java安全性编程实例[M].北京:清华大学出版社,2008. [5][美]斯潘尼(Spenik,M.).SQL Server数据库管理员指南[M]. 刘谦等译. 北京:机械工业出版社,2002. [6] 孙一林,彭波.JSP数据库编程实例[M]. 北京:清华大学出版社,2002.8. [7] 柳永坡,刘雪梅,赵长海.JSP应用开发技术[M].北京:人民邮电出版社,2005. [8] 谭浩强.Java语言程序设计[M].第四版. 北京: 1 计算机科学与技术系--《网站规划与建设综合实验》课程设计 清华大学出版社,2010. [9] 朱福喜,唐晓军.Java程序设计技巧与开发[M]. 北京:人民邮电出版社,2004. [10] 辛运帏,饶一梅 秦晓东.Java程序设计题解与上机指导[M]. 北京:清华大学出版社,2003.7. [11] 王克宏.Java语言SQL接口:JDBC编程技术[M]. 北京:清华大学出版社,1997. [12] 严桂兰,刘甲耀,刘波.Java编程模式与范例[M]. 北京:机械工业出版社,2002. [13] 刘艺.Java程序设计大学教程[M].北京:机械工业出版社,2006. [14] Brown等.JSP编程指南[M].第二版. 北京:电子工业出版社 ,2003. [15] [美]Walter Savitch. Absolute Java[M].北京:电子工业出版社,2005. 2 因篇幅问题不能全部显示,请点此查看更多更全内容