1、课 程 设 计 课程名称_ 数据库系统 _题目名称_ 进销存管理系统_学生学院_计算机学院_专业班级_学 号 学生姓名_指导教师_ 左亚尧_2013 年 1 月 16日目 录1 引言41.1课题研究内容41.2主要工作42 需求分析42.1系统模块42.2信息要求分析52.3处理要求分析62.4数据字典及安全性、完整性要求分析72.4.1安全性和完整性需求72.4.2数据字典72.4.3处理过程73 概念结构设计123.1数据实体描述及分ER图133.2整体ER图144 系统概要设计15数据库逻辑结构设计155 系统详细设计185.1数据库实施185.2数据库物理设计215.3数据库的数据完整
2、性设计215.4数据的安全设计225.4系统功能模块的设计与实现225.5系统功能测试325.6数据库性能检测与备份设计325.7系统安装使用说明355.7.1导入项目到MyEclipse355.7.2为MyEclipse整合Tomcat服务器365.7.3发布项目376 总结与心得376.1总结376.2心得37参考文献391 引言1.1课题研究内容本次课题使用jsp + servlet技术和SQL Server 2008 数据库开发跨平台的应用程序。本次课程设计,我们需要学习:如何进行数据库分析和数据库建模和对jsp、servlet技术的熟悉以及整个软件开发的流程。1.2主要工作整个工作是
3、对整个进销存系统进行需求分析、概念结构分析、系统概要设计、系统详设计、数据库的实施、系统编码。2 需求分析实现企业行细化管理是现代社会中小企业稳步发展的必要条件,它可以提高企业的管理水平和工作效率,最大限度地减少手工操作带来的失误。进销存管理系统正是一个信息化管理软件,可以实现企业的进货、销售、库存管理等各项业务的信息化管理。2.1系统模块系统划分为五大模块:进货管理模块、基础信息管理模块、销售管理模块、查询统计模块和系统管理模块。进货管理模块:对进货、退货单进行设置。基础信息管理模块:对客户信息、商品信息、供应商信息的添加、修改和删除。销售管理模块:对销售和销售退货进行设置。查询统计模块:对
4、客户信息,商品信息,供应商,进货、进货退货、销售、销售退货的信息进行查询的功能模块。系统管理模块:对操作员进行添加和删除,更改操作员密码,系统用户登录。系统功能结构(如图):图2-12.2信息要求分析通过详细调查分析,进销存管理系统模块应满足以下信息需求:商品信息:商品编码、商品名称、简称、产地、规格、备注客户信息:客户编码、客户名称、简称、住址、邮政编码、电话、传真、联系人、联系电话、E-mail供应商信息:供应商编码、名称、简称、住址、邮政编码、电话、传真、联系人、联系电话、E-mail销售主要信息:商品编码、客户编码、单位、单位价格、销售量销售退货主要信息:商品编码、客户编码、单位、单位
5、价格、退货量进货主要信息:商品编码、供应商编码、单位、单位价格、进货量进货退货主要信息:商品编码、供应商编码、单位、单位价格、退货量登录用户信息:登录名、密码、权限2.3处理要求分析通过详细调查分析,进销存管理系统模块应满足以下处理需求:登录用户的权限:管理员通过用户添加页面,拥有添加、删除用户的权限,普通用户没有添加用户的权限,但能完成对客户、供应商、商品、进货单、退货单、销售单、销售退货单的增、删、查、改。登录:用户可通过登录页面登录,登录时用户必须填写用户名、密码,通过验证之后方可进入系统。客户信息:普通用户可以通过添加页面、修改页面、查询页面,添加、修改、删除、查询客户信息,包括客户名
6、称、简称、住址、邮政编码、电话、传真、联系人、联系电话、E-mail。供应商信息:普通用户可以通过添加页面、修改页面、查询页面,添加、修改、删除、查询供应商信息,包括客户名称、简称、住址、邮政编码、电话、传真、联系人、联系电话、E-mail。商品信息:普通用户可以通过添加页面、修改页面、查询页面,添加、修改、删除、查询商品信息,包括商品名称、简称、产地、单位、规格、包装、备注。进货、退货:普通用户可以通过进货页面可以进行进货单添加查询,通过进货退货单页面进行退货单添加查询。信息包括商品名、供应商名、进货量、退货量。销售、脱货:普通用户可以通过进货页面可以进行销售单添加查询,通过销售退货单页面进
7、行退货单添加查询。信息包括,商品名、供应商名、销售量、退货量。2.4数据字典及安全性、完整性要求分析2.4.1安全性和完整性需求(1)管理员拥有添加、删除普通用户的权限,普通用户能够进行除了添加、删除普通用户权限的其他所有功能。(2)管理员、普通用户由用户名唯一标识,用户名由管理员添加产生;用户名不能与其他用户相同且只能又数字和字母组成,用户密码不允许为空;权限也不允许为空。(3)每个商品由商品编码唯一标识,商品编码由系统按顺序生成。商品名、产地、规格不允许为空。(4)每个客户由客户编码唯一标识,客户编码由系统按顺序生成。客户名、联系人、联系电话不允许为空。(5)供应商由供应商编码唯一标识,供
8、应商编码由系统按顺序生成。供应商名称、联系人、联系电话不允许为空。(6)一个供应商可以供应多种商品,一种商品可以由多个供应商供应;一个客户可以买多种商品,一种商品可以为多个客户所购买。(7)一个进货单对应一个供应商和一种商品;一个进货退货单也对应一个供应商和一种商品。进货和进货退货单由供应商和商品进行标识,单位、单位价格、进货量、退货量不允许为空。(8)一个销售单对应一个客户和一种商品;一个销售退货单对应一个客户和一种商品。进货和销售退货单由供应商和商品进行标识,单位、单位价格、进货量、退货量不允许为空。2.4.2数据字典1、数据项数据项名别名数据类型数据长度取值范围简述商品编码GID字符型8
9、位惟一标识商品的编码商品名称GName字符型16位商品名唯一简称GShortName字符型8位商品的别名产地Gfield字符型30位规格Standard字符型4位备注Remark字符型100位客户编码UID字符型8位唯一标识客户的身份客户名称UName字符型16位客户的名称简称UShortName字符型8位客户的简称住址UAddr字符型30位客户的住址邮政编码UCode字符型6位只有数字组成电话UTel字符型15位只有数字组成客户的电话E-mailUE-mail字符型30位客户的电子邮箱传真UFax字符型15位联系人ULinkman字符型20位客户的联系人联系电话ULinkTel字符型15位客
10、户的联系电话供应商编码SID字符型8位供应商的唯一标识名称SName字符型16位供应商的名称简称SShortName字符型8位供应商的简称住址SAddr字符型30位供应商的住址邮政编码SCode字符型6位只有数字组成E-mailSE-mail字符型30位供应商的电子邮箱电话STel字符型15位只有数字组成供应商的电话传真SFax字符型15位供应商的传真联系人SLinkman字符型20位供应商的联系人联系电话ULinkTel字符型15位供应商的联系电话单位Unit字符型4位商品的计算单位单位价格UnitPrice字符型4位商品的单位价格销售量Sell整型8位0 108-1商品的销售量进货量Sto
11、ck整型8位0 108-1商品的进货量销售退货量SellReturn整型8位0 108-1商品的销售退货量进货退货量StockReturn整型8位0 108-1商品的进货退货量登录名Username字符型15位登录系统时需要的登录名,登录名唯一密码Password字符型16位登陆系统需要的密码,密码只由数字和字母组成权限Type字符型8位只有两种权限类型,“管理员”、“普通用户”2、数据结构名称别名含义组成登录信息表User表登录用户的基本信息登录名+密码+权限客户信息表Client表客户的基本信息客户编码+客户名称+简称+住址+邮政编码+电话+传真+联系人+联系电话+E-mail商品信息表G
12、oods表商品基本信息表商品编码+商品名称+简称+产地+规格+备注供应商信息表Provider表供应商基本信息表供应商编码+名称+简称+住址+邮政编码+电话+传真+联系人+联系电话+E-mail进货信息表Stock表进货信息基本表商品编码+供应商编码+ +进货量进货退货表StockReturn表进货退货信息基本表商品编码+供应商编码+ +退货量销售信息表Sell表销售信息基本表商品编码+客户编码+ +销售量销售退货信息表SellReturn表销售退货基本信息表商品编码+客户编码+ +退货量3、部分处理过程(1)登录名称:用户登录-功能描述: 用户登录是负责所有的用户的登录,用户要登录到系统必须
13、经过登录界面,输入自己的用户名和密码,通过判断这个用户的权限信息,不同的登录人可能具有不同的权限,根据不同的权限现实不同的功能。-输入:账号、密码、类型输出:验证通过,进入系统;验证不通过,给与错误提示基本信息管理(2)客户信息管理名称:客户信息管理-功能描述:客户信息管理系统用于添加、删除、修改客户信息。-输入:新客户信息输出:添加完成时给予提示信息(3)商品信息管理名称:商品信息管理-功能描述:商品信息管理系统用于添加、删除、修改商品信息。-输入:新商品信息输出:添加完成时给予提示信息(4)供应商信息管理名称:供应商信息管理-功能描述:供应商信息管理系统用于添加、删除、修改供应商信息。-输
14、入:新供应商信息输出:添加完成时给予提示信息(5)进货单名称:进货单-功能描述:商品进货单管理系统用于设置企业的进货单信息。进货单功能主要负责记录企业的商品进货信息,可以单击“添加”按钮,在商品表中添加进货的商品信息。在“供应商”下拉列表框中选择不同的供应商,将会改变商品表中可以添加的商品。-输入:商品进货信息输出:完成时给予提示信息(6)进货退货名称:进货退货-功能描述:商品进货退货管理系统用于管理企业进货退货信息。进货退货功能主要负责记录进货管理中的退货信息提示。在选择了退货的商品之后,单击“退货”按钮,将把表格中的商品退货信息更新到数据库中。-输入:商品退货信息输出:完成时给予提示信息(
15、7)销售单名称:销售单-功能描述:商品销售单系统用于设置企业的销售单信息。销售单功能主要负责记录企业的商品销售信息,可以单击“添加”按钮,在商品表中添加销售的商品信息。-输入:商品销售信息输出:完成时给予提示信息(8)销售退货名称:销售退货-功能描述:商品销售退货系统用于管理企业销售退货信息。销售退货功能主要负责记录销售管理中的退货信息提示。在选择了退货的商品之后,单击“退货”按钮,将把表格中的商品退货信息更新到数据库中。-输入:商品销售退货信息输出:完成时给予提示信息(9)客户信息查询名称:客户信息查询-功能描述:客户信息查询系统客户查询功能主要用于查询系统中的客户信息,其查询方式可以按照客
16、户全称匹配查询。-输入:客户查询条件输出:客户信息(10)商品信息查询名称:商品信息查询-功能描述:商品信息查询系统商品查询功能主要用于查询系统中的商品信息,其查询方式可以按照商品全称、商品编号进行匹配查询和模糊查询。-输入:商品查询条件输出:商品信息(11)供应商查询信息名称:供应商查询信息-功能描述:供应商查询信息系统供应商查询功能主要用于查询系统中的供应商信息,其查询方式可以按照供应商全称进行匹配查询。-输入:供应商查询条件输出:供应商信息(12)操作员管理名称:操作员管理-功能描述:操作员管理系统添加或删除新的操作员信息-输入:操作员信息输出:添加或删除完成时给予提示信息(13)更改密
17、码名称:更改密码-功能描述:更改密码系统更改新的操作员密码信息-输入:操作员新密码信息输出:更改完成时给予提示信息(14)权限管理名称:权限管理-功能描述:操作员权限管理系统更改操作员新的权限管理信息-输入:操作员权限管理信息输出:更改完成时给予提示信息3 概念结构设计3.1数据实体描述及分ER图1、商品实体E-R模型设计 2、客户实体E-R模型设计3、供应商实体E-R模型设计 3.2整体ER图总体E-R模型设计4 系统概要设计数据库逻辑结构设计字段号代码类型约束登录名UserNamechar(15)主键密码Passwordchar(16)非空权限Typechar(8)普通用户管理员1、用户关
18、系模式用户(登录名,密码,权限)属于3NF2、商品关系模式商品(商品编码,商品名称,简称,产地,规格,备注)字段号代码类型约束 商品编码GIDchar(8)主键商品名称GNamechar(16)非空,非聚集索引简称GShortNamechar(8)产地GFieldchar(30)非空规格Standardchar(4)备注Remarkchar(100)属于3NF3、客户关系模式客户(客户编码、客户名称、简称、住址、邮政编码、电话、传真、联系人、联系电话、E-mail)字段号代码类型约束客户编码UIDchar(8)主键客户名称UNamechar(16)非空, 非聚集索引简称UShortNamech
19、ar(8)住址UAddrchar(30)E-mailUE_mailchar(30)非空邮政编码UCodechar(6)电话UTelchar(15)传真UFaxchar(15)非空联系人ULinkmanchar(20)非空联系电话ULinkTelchar(15)非空属于3NF4、供应商关系模式供应商(供应商编码、名称、简称、住址、邮政编码、电话、传真、联系人、联系电话、E-mail)字段号代码类型约束供应商编码SIDchar(8)主键供应商名称SNamechar(16)非空, 非聚集索引简称SShortNamechar(8)住址SAddrchar(30)E-mailSE_mailchar(30)
20、非空邮政编码SCodechar(6)电话STelchar(15)传真SFaxchar(15)非空联系人SLinkmanchar(20)非空联系电话SLinkTelchar(15)非空属于3NF5、销售关系模式销售(商品编码、客户编码、单位、单位价格、销售量)字段号代码类型约束销售表编码SlIDchar(16)主键,唯一标识销售关系商品编码GIDchar(8)与Goods表中GID外键关联, 非聚集索引客户编码CIDchar(8)与Client表中CID外键关联, 非聚集索引单位Unitchar(16)非空单位价格UnitPricechar(15)非空销售量Slint非空属于3NF6、销售退货关
21、系模式销售退货(商品编码、客户编码、单位、单位价格、退货量)字段号代码类型约束销售退货表编码SlRIDchar(16)主键,唯一标识销售退货表商品编码GIDchar(8)与Goods表中GID外键关联, 非聚集索引客户编码CIDchar(8)与Client表中CID外键关联, 非聚集索引单位Unitchar(16)非空单位价格UnitPricechar(15)非空销售退货量SlReturnint非空属于3NF7、进货关系模式进货(商品编码、供应商编码、单位、单位价格、进货量)字段号代码类型约束进货表编码StoIDchar(16)主键,唯一标识进货表商品编码GIDchar(8)与Goods表中G
22、ID外键关联, 非聚集索引供应商编码SIDchar(8)与Supplier表中CID外键关联, 非聚集索引单位Unitchar(16)非空单位价格UnitPricechar(15)非空进货量Stoint非空属于3NF8、进货退货关系模式进货退货(商品编码、供应商编码、单位、单位价格、退货量)字段号代码类型约束进货退货表编码StoRIDChar(16)主键,唯一标识进货退货表商品编码GIDchar(8)与Goods表中GID外键关联, 非聚集索引供应商编码SIDchar(8)与Supplier表中CID外键关联, 非聚集索引单位Unitchar(16)非空单位价格UnitPricechar(15
23、)非空进货退货量StoReturnint非空属于3NF5 系统详细设计5.1数据库实施创建数据库CREATE DATABASE db_IMS ON PRIMARY ( NAME = Ndb_IMS, FILENAME = ND:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAdb_IMS.mdf , SIZE = 3072KB , FILEGROWTH = 1024KB ) LOG ON ( NAME = Ndb_IMS_log, FILENAME = NF:ProgramDataSQL server 2008datad
24、b_IMS_log.ldf , SIZE = 1024KB , FILEGROWTH = 10%)GO使用SSMS创建两个登录名admin和general,两个登录名默认数据库为db_IMS,general的默认架构为dbo,创建过程如下:创建架构admin,默认属于admin用户。代码如下:USE db_IMSGOCREATE SCHEMA admin AUTHORIZATION adminGO创建表示例:创建User表CREATE TABLE admin.User(UserName nchar(15) NOT NULL,PassWord nchar(16) NOT NULL,Type nc
25、har(20) NOT NULL) ON PRIMARYGOCREATE NONCLUSTERED INDEX IX_User ON admin.User(UserName) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARYGO5.2数据库物理设计1、系统的大小:数据文件的初始大小为3M,增长值为1M。日志问价初始大小为1M,增长值为10%。2、索引:(1)创建User表 在username上的索引,同时usernam
26、e也是user表上的主键。(2)创建Goods表的主键GID,在GName上建立非聚集索引。(3)创建Client表的主键为CID,非聚集索引为CName(4)创建Supplier表的主键为SID, 在SName上建立非聚集索引。(5)创建Sell表的主键SlID,GID,CID为外键,同时在GID,CID上面建立非聚集索引。(6)创建SellReturn表主键SlRID,GID,CID为外键,同时在GID,CID上面建立非聚集索引。(7)创建Stock表主键StoID,GID,SID为外键,同时在GID,SID上面建立非聚集索引。(8)创建stockReturn表主键StoRID,GID,S
27、ID为外键,同时在GID,SID上面建立非聚集索引。3、数据设备:本系统在500G的硬盘上运行,CPU主频为2.53GHZ4、用途说明:进销存管理系统是一个信息化管理软件,可以实现企业的进货、销售、库存管理等各项业务的信息化管理。5.3数据库的数据完整性设计示例:创建User表 在username上的索引,同时username也是user表上的主键。CREATE NONCLUSTERED INDEX IX_User ON admin.User(UserName) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_RO
28、W_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARYGO创建Client表的主键为CID,非聚集索引为CNameGOALTER TABLE dbo.Client ADD CONSTRAINTPK_Client PRIMARY KEY CLUSTERED (CID) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARYGOCREATE NONCLUSTERED INDEX IX_Cl
29、ient ON dbo.Client(CName) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARYGO5.4数据的安全设计面对应用程序在数据库中设置了两个用户,一个是一般用户general,一个是管理用户admin。Admin拥有访问User表的权限,管理用户的权限,能对User表中的元组进行增删查改,不能访问其它的表。General拥有对其它表的元组的增删查改。在数据库中的实现,admin和general的数据库角
30、色为db_datareader和db_datewriter。Admin拥有架构admin,general拥有架构dbo;admin架构拥有表User,dbo拥有表Client、Supplier、Goods、Sell、SellReturn、Stock、StockReturn;general和admin同时有相对应的登录名和登录密码,可以实现应用程序访问数据库。在应用程序中,用户登录从User表中取出登录名和密码进行匹配,匹配成功之后会保存起来用户的信息。每次访问数据库时都要先通过验证,验证之后才能通过相应的登录名和密码访问数据库。5.4系统功能模块的设计与实现数据库连接(JDBC)public
31、class DBConnection private static final String DBDRIVER = com.microsoft.sqlserver.jdbc.SQLServerDriver;/驱动类类名private static final String DBURL = jdbc:sqlserver:/localhost:1433;DatabaseName=db_IMS;/urlprivate static String DBUSER = null;/数据库用户名private static String DBPASSWORD = null;/数据库用户密码public static void setGeneral() /一般用户的用户名和密码DBUSER=general;DBPASSWORD=admin;public static void setAdmin() /管理用户的用户名和密码DBUSER=admin;DBPASSWORD=admin;public static Connection getConnection()Connection conn = null;/声明一个连接对象tryClass.forName(DBDRIVER);/注册驱动conn = DriverManager.getConnection(DBURL,DBUSER