Java语言课程设计小型超市管理系统.doc
《Java语言课程设计小型超市管理系统.doc》由会员分享,可在线阅读,更多相关《Java语言课程设计小型超市管理系统.doc(23页珍藏版)》请在冰点文库上搜索。
计算机学院信管08级JAVA程序设计报告
JAVA语言课程设计报告
题目:
小型超市管理系统
设计者:
专业班级:
学号:
指导教师:
2010年12月12日
计算机学院
目录
一、系统需求分析 -1-
1.1系统名称:
-1-
1.2系统介绍:
-1-
1.3开发背景 -1-
1.4.系统面向的用户群体 -1-
1.5开发环境 -1-
二、系统总体设计 -2-
2.1系统功能结构图 -2-
三、系统详细设计 -2-
3.1数据库实体E-R图设计 -2-
3.2数据库表的设计 -4-
3.3物理设计文档 -6-
3.4详细设计 -10-
四、系统总结 -20-
五、系统设计心得体会 -21-
六、参考文献 -21-
一、系统需求分析
1.1系统名称:
小型超市管理系统
1.2系统介绍:
界面设计简洁、友好、美观大方
操作简单、快捷方便
数据存储安全、可靠
信息分类清晰、准确
强大的查询功能、保证数据查询的灵活性
提供销售排行,为管理员提供真实的数据信息
提供灵活、方便的权限设置功能,使整个系统的管理分工明确
对用户的输入的数据,系统进行严格的数据检验,尽可能排人为错误
1.3开发背景
随着现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对数据库的进一步开发和利用显得尤为迫切。
作为国内市场的一些中小型超市,它们在信息化过程中的步伐要落后于大中型超市,而对于这些企业的资源管理,信息的存储和处理也显得迫切需要,要适应市场竞争,就需要有高效的处理方式和管理方法,因此加快超市的信息化进程是必不可少的。
我国的超市在20世纪90年代初期形成,现在已经成为我国零售业的一种重要形态,为国民经济的发展发挥了重要的作用。
随着经济的快速发展,超市的经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售业的发展,这样就迫切地需要引入新的管理技术。
1.4.系统面向的用户群体
主要是中小型超市使用者,该消费群体具有以下特征:
1超市日常管理人工化居多,工作效率较低;2超市日常交易额较小,货物流通较小,不愿花高价购进大型超市管理系统。
因此,该消费群体对产品的功能性需求并不高,只需满足前台销售系统、后台货物管理即可。
1.5开发环境
Eclipse+mysql
二、系统总体设计
2.1系统功能结构图
登陆界面
主界面
商品信息管理
基本信息管理
进销管理
查询统计
权限管理
库存管理
供货商信息管理
进销管理
退货处理
商品查询
供货商查询
库存盘点
生成报表
修改密码
权限管理
商品查询
数据统计
用户管理
三、系统详细设计
3.1数据库实体E-R图设计
(1)图书信息实体E-R图
商品
进货价
商品编号
商品名称
有效期
数量下限
单位
销售价
生产日期
(2)读者信息实体
用户
用户名
用户编号
用户类型
用户密码
用户状态
(3)图书借阅实体
供货商
供货商姓名
供货商地址
供货商编号
供货商电话
(4)多图之间的E-R图
商品
进货价
商品编号
商品名称
有效期
数量下限
单位
销售价
生产日期
供货商
供货商姓名
供货商地址
供货商编号
供货商电话
用户
用户名
用户编号
用户类型
用户密码
用户状态
出入库
供货
3.2数据库表的设计
数据库名:
limitedmarket
(1)用户登录表(account)
字段名
类型
长度
字段约束
中文名
Accountnumber
Integer
登录号
Accountname
varchar
30
Notnull
登录名
Accountpassword
varchar
20
Notnull
登录密码
accountType
smallint
6
Notnull
登录类型
accountState
smallint
6
Notnull
登录状态
managerID
Integer
Notnull
用户ID
(2)用户信息表(manager)
字段名
类型
长度
字段约束
中文名
managerID
Integer
用户编号
managername
varchar
20
Notnull
用户姓名
mobilephone
varchar
15
手机号码
phone
varchar
15
固定电话
manageremail
varchar
30
电子邮件
(3)商品信息表(commodity)
字段名
类型
长度
字段约束
中文名
commodityID
Integer
商品编号
Commodityname
varchar
40
Notnull
商品名称
producedate
datatime
notnull
生产日期
Inprice
numeric
2
Notnull
进货价格
saleprice
numeric
2
Notnull
销售价格
storagetime
int
Notnull
有效期
downlimit
int
Notnull
数量下限
unit
varchar
8
Notnull
单位
providernumber
int
供应商编号
indate
date
进货日期
(4)供应商表(provider)
字段名
类型
长度
约束
中文名
providernumber
int
供应商编号
providername
varchar
40
Notnull
供应商名称
provideraddress
varchar
60
Notnull
供应商地址
phone
varchar
20
Notnull
供应商电话
(5)销售表(sale)
字段名
类型
长度
约束
中文名
saleid
int
销售票号
commodityid
int
Notnull
商品编号
selltime
date
Notnull
销售日期
number
int
Notnull
销售数量
money
float
Notnull
收入
operator
varchar
45
Notnull
销售员
commodityname
varchar
45
Notnull
商品名称
(6)库存信息表(storage)
字段名
类型
长度
约束
中文名
storageid
int
入库编号
commodityname
varchar
45
Notnull
商品名称
commodityid
varchar
Notnull
商品编号
unit
vachar
45
Notnull
单位
price
float
45
Notnull
单价
outdate
date
Notnull
退货时间
provider
varchar
45
Notnull
供应商
operator
varchar
45
Notnull
操作员
number
int
Notnull
数量
(7)销售退货(returnsale)
字段名
类型
长度
约束
中文名
Rsaleid
int
退货票号
commodityid
int
Notnull
商品编号
commodityname
varchar
商品名称
number
Int
Notnull
商品数量
moeny
folat
Notnull
金额
returntime
date
Notnull
退货时间
operator
varchar
45
Notnull
操作员
(8)入库退货(returnsale)
字段名
类型
长度
约束
中文名
Rid
int
退货编号
commodityname
varcgar
45
Notnull
商品名称
commodityid
int
Not
商品编号
price
float
Notnull
价格
outdate
date
Notnull
退货时间
provider
varchar
45
Notnull
供应商名称
number
int
Notnull
退货数量
unit
varchar
8
Notnull
单位
3.3物理设计文档
/*----------创建数据库----------*/
本系统使用mysql数据库,首先我们在NavicatforMySQL的Host:
localhost下创建数据库limitedmarket,选择数据库编码为utf8--UTF-8Unicode。
或使用sql语句createdatabaselimitedmarket创建数据库。
/*----------创建基本表----------*/
/*
创建account表
*/
DROPTABLEIFEXISTS`account`;
CREATETABLE`account`(
`accountNumber`IntegerNOTNULLauto_increment,
`accountName`varchar(30)NOTNULL,
`accountPassword`varchar(20)NOTNULL,
`accountType`smallint(6)NOTNULL,
`managerID`IntegerdefaultNULL,
`accountState`smallint(6)NOTNULL,
PRIMARYKEY(`accountNumber`),
KEY`FK_manage`(`managerID`),
CONSTRAINT`FK_manage`FOREIGNKEY(`managerID`)REFERENCES`manager`(`managerID`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
/*
创建manage表
*/
DROPTABLEIFEXISTS`manager`;
CREATETABLE`manager`(
`managerID`IntegerNOTNULLauto_increment,
`managerName`varchar(20)NOTNULL,
`managerMobilephone`varchar(15),
`managerRegionNumber`varchar(4),
`managerEMail`varchar(30)defaultNULL,
`managerPhone`varchar(10),
PRIMARYKEY(`managerID`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
/*
创建commodity表
*/
DROPTABLEIFEXISTS`commodity`;
CREATETABLE`commodity`(
`commodityID`integerNOTNULLauto_increment,
`providernumber`int(11)defaultNULL,
`commodityname`varchar(45)NOTNULL,
`inDate`datetimeNOTNULL,
`producedate`datetimeNOTNULL,
`inprice`floatNOTNULL,
`saleprice`floatNOTNULL,
`storagetime`int(11)NOTNULL,
`downlimit`int(11)NOTNULL,
`unit`varchar(8)defaultNULL,
PRIMARYKEY(`commodityID`),
KEY`FK_supply`(`providernumber`),
CONSTRAINT`FK_supply`FOREIGNKEY(`providernumber`)REFERENCES`provider`(`providernumber`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
/*
创建returncommodity
*/
DROPTABLEIFEXISTS`returncommodity`;
CREATETABLE`returncommodity`(
`RCid`intunsignedNOTNULLauto_increment,
`commodityname`varchar(45)NOTNULL,
`commodityid`varchar(45)NOTNULL,
`unit`varchar(45)NOTNULL,
`price`floatNOTNULL,
`outdate`datetimeNOTNULL,
`provider`varchar(45)NOTNULL,
`operator`varchar(45)NOTNULL,
`number`intunsignedNOTNULL,
PRIMARYKEY(`RCid`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
/*
创建sale表
*/
DROPTABLEIFEXISTS`sale`;
CREATETABLE`sale`(
`commodityname`varchar(45)NOTNULL,
`commodityid`intunsignedNOTNULL,
`sellTime`datetimeNOTNULL,
`number`varchar(45)NOTNULL,
`money`doubleNOTNULL,
`operator`varchar(45)NOTNULL,
`saleid`intNOTNULLauto_increment,
PRIMARYKEY(`saleid`)
)ENGINE=InnoDBDEFAULTCHARSET=gb2312PACK_KEYS=1;
/*
创建returnsale表
*/
DROPTABLEIFEXISTS`returnsale`;
CREATETABLE`returnsale`(
`Rsaleid`intunsignedNOTNULLauto_increment,
`commodityid`intunsignedNOTNULL,
`commodityname`varchar(45)NOTNULL,
`number`intunsignedNOTNULL,
`money`doubleNOTNULL,
`returnTime`datetimeNOTNULL,
`operator`varchar(45)NOTNULL,
PRIMARYKEY(`Rsaleid`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
/*
创建provider表
*/
DROPTABLEIFEXISTS`provider`;
CREATETABLE`provider`(
`providernumber`int(11)NOTNULLauto_increment,
`phone`varchar(20)NOTNULL,
`provideraddress`varchar(60)NOTNULL,
`providername`varchar(40)NOTNULL,
PRIMARYKEY(`providernumber`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
/*
创建stroge表
*/
DROPTABLEIFEXISTS`storage`;
CREATETABLE`storage`(
`storageid`intunsignedNOTNULLauto_increment,
`commodityname`varchar(45)NOTNULL,
`commodityid`intunsignedNOTNULL,
`unit`varchar(45)NOTNULL,
`price`floatNOTNULL,
`indate`datetimeNOTNULL,
`provider`varchar(45)NOTNULL,
`operators`varchar(45)NOTNULL,
`number`intunsignedNOTNULL,
PRIMARYKEY(`storageid`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8
/*
创建storageinfo表
*/
DROPTABLEIFEXISTS`storageinfo`;
CREATETABLE`storageinfo`(
`commoditynumber`intunsignedNOTNULL,
`accountid`intunsignedNOTNULL,
`amount`intunsignedNOTNULL,
`storageid`intunsignedNOTNULLauto_increment,
`money`doubleNOTNULL,
PRIMARYKEY(`storageid`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
3.4详细设计
(1)数据库与Eclipse的连接
packagedao;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.Statement;
/**
*
*@authorAdministrator
*/
publicclassConnectdatabase{
protectedstaticStringdbClassName="com.mysql.jdbc.Driver";
protectedstaticStringdburl="jdbc:
mysql:
//127.0.0.1:
3306/limitedmarket?
user=root&password=123";
staticConnectioncon=null;
staticStatementstmt=null;
publicstaticConnectiongetConnection()throwsException{
Class.forName(dbClassName);
con=DriverManager.getConnection(dburl);
returncon;
}
publicstaticStatementgetStatement()throwsException{
Class.forName(dbClassName);
con=DriverManager.getConnection(dburl);
stmt=con.createStatement();
returnstmt;
}
}
(2)主要代码
stmt=con.createStatement();
/*
statement对象静态执行查询sql语句
*/
publicDao(){
}
publicstaticResultSetfindForResultset(Stringsql){
ResultSetrs=null;
Statementsmt;
try{
smt=Connectdatabase.getStatement();
rs=smt.executeQuery(sql);
System.out.print("sql语句已经执行!
");
}catch(Exceptionex){
Logger.getLogger(Dao.class.getName()).log(Level.SEVERE,null,ex);
}
returnrs;
}
/*
statement对象静态执行插入、删除、更新sql语句
*/
publicstaticintupdate(Stringsql){
intresult=0;
try{
Statementsmt=Connectdatabase.getStatement();
result=smt.executeUpdate(sql);
}catch(Exceptionex){
Logger.getLogger(Dao.class.getName()).log(Level.SEVERE,null,ex);
}
returnresult;
}
/