数据库课程设计超市管理系统广工.docx
- 文档编号:11417986
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:29
- 大小:1.25MB
数据库课程设计超市管理系统广工.docx
《数据库课程设计超市管理系统广工.docx》由会员分享,可在线阅读,更多相关《数据库课程设计超市管理系统广工.docx(29页珍藏版)》请在冰豆网上搜索。
数据库课程设计超市管理系统广工
课程设计
课程名称数据库系统
题目名称小型超市管理系统
学生学院计算机学院
专业班级
学号
学生姓名
指导教师
2013年1月
评价标准
分数比例(%)
成绩
论文
论文结构包含:
1、相关技术介绍、需求分析、
2、概念结构设计(涉及的实体至少三个以上)、
3、逻辑结构设计(有完整性约束说明)、
4、数据库物理设计、
5、数据库完整性设计(违反实体、参照完整性时的解决办法,比如触发器、存储过程等)
5、数据库安全性设计、
6、数据库实施、系统测试方案和测试报告、
7、系统的主要功能和使用说明、系统安装说明。
要求论文完整、内容详细,格式规范.
40
程序
1、系统运行正确;
2、功能完善:
有增、删、改、查功能,输入、输出功能;
3、有基本的统计、报表功能
4、有多表连接查询、自身连接查询、字符串匹配查询、模糊查询、分组查询等.
5、工作量充分;
6、系统实现技术的难度。
30
数据
库设
计
E—R图设计正确;
数据库逻辑结构设计规范化;
数据库物理设计合理.
30
总评成绩
优
良
中
及格
不及格
总分
1引言
1.1课题来源
到超市购物是一种较为频繁的生活事件。
由于人们的超市购物行为越来越频繁,超市规模越来越大,商品种类数目与之俱增,超市商品的管理变得更加困难.显然手工的管理方式是不合适的.因此利用数据库相关技术开发一个规模适当、操作方便、功能完备的超市管理系统显得很有必要。
1。
2课题研究主要内容
使用数据库管理系统和应用程序实现小型超市管理系统的商品销售结算,销售情况管理,商品信息管理,库存管理,权限管理等功能。
1.3主要工作
先对小型超市管理系统的设计进行需求分析,建立数据流图和数据字典.进行概念结构设计,作出E-R图并进行优化.进行逻辑结构设计,建立数据关系模型。
进行物理结构设计,选择适当的存取方法.利用数据库管理系统按前面的分析设计作出若于基本表,根据应用程序和用户的需要建立视图.最后进行应用程序的设计、调试、运行.
2开发工具和平台
数据库管理系统:
MicrosoftSQLServer2008
程序设计语言:
Java1.6
应用程序开发工具:
eclipse
测试平台Windows764bit
3命名约定
表名和属性名的首字母大写(虽然SQL语言不分大小写,但设计过程仍遵守这一约定),基本表名和数据若由多个单词构成,则每个单词的首字母均大写,且单词间首尾紧密相接,没有间隔或其它分隔符。
对于视图采用_view这一后辍。
4需求分析
4.1信息要求分析
4。
1。
1商品销售模块应具有收银结算的功能:
可将查询得的商品加入购物单,并计算总价。
结算后要更新商品的库存。
4.1.2销售管理模块要实现对购物单和商品销量的查询。
可分别按单号和商品编号,并能在限定(或不限定)时间范围内进行查询,并可查看查询结果的细目。
4。
1。
3库存管理模块要实现去商品进货的管理,及时更新库存。
并具要能实现对供应商信息和商品信息的增、删、查、改等功能。
4。
1.4实现权限管理,对不同的用户可授于不同的权限,不同权限所能使用的功能范围有所不同。
4.2处理要求分析
5概念结构设计
5。
1数据实体描述及分ER图
5.2整体ER图
实体间关系:
一个购物单里可以有多种商品,每种商品可以存在于多个购物单中;一个供应商可供应多种商品,每种商品可从多个供应商进货;一个购物单只由一个用户(操作员)操作生成,一个用户可操作生成多个购物单。
根据以上实体间的关系以及各分E-R图,可做出如下的整体E—R图:
6系统概要设计
6。
1数据库逻辑结构设计
参考整体E-R图可得到如下关系模式:
商品(编号,名称,单价,折扣,库存,单位)
商品供应商(编号,名称,地址,电话)
供应商-商品(供应商编号,商品编号,数量)
购物单(单号,总额,日期,时间)
购物单—商品(购物单号,商品编号,数量)
用户(工号,姓名,性别,权限,最后登录时间)
购物单—用户(单号,工号)
说明:
由于购物单所关联的历史商品信息不一定与当前的商品信息相同,因此需要更改一个关系模式:
购物单—商品(单号,编号,名称,单价,折扣,库存,单位);另外可以将购物单—用户模式合并到用户模式中去。
由关系模式可设计得如下基本表:
Commodities表
字段
说明
类型
宽度
约束
ID
商品编号
varchar
12
主键,非空
Name
商品名
varchar
30
非空
UnitPrice
单价
money
-
非空
Discount
折扣
smallint
1
大于0小于或等于10
Stocks
库存
int
—
Unit
单位
varchar
8
Orders表
字段
说明
类型
宽度
约束
ID
购物单号
varchar
16
主键,非空
OrderDate
日期
date
-
非空
OrderTime
时间
time
7
非空
TotalPrice
该单总额
money
-
非空
OperatorID
操作员工号
varchar
10
OrderDetails表
字段
说明
类型
宽度
约束
OrderID
购物单号
varchar
16
主键,非空,外键(参考Orders表)
CommodityID
商品编号
varchar
12
主键,非空,外键(参考Commodities表)
Name
商品名
varchar
30
非空
UnitPrice
购买时单价
money
-
非空
Discount
购买时折扣
smallint
1
大于0小于或等于10
Unit
单位
varchar
8
Amount
购买数量
int
-
Suppliers表
字段
说明
类型
宽度
约束
ID
供应商编号
varchar
10
主键,非空
Name
供应商名称
varchar
30
非空
Addr
地址
varchar
10
Tel
联系电话
varchar
15
Supply表
字段
说明
类型
宽度
约束
SupplierID
供应商编号
varchar
10
主键,非空,外键(参考Suppliers表)
CommoditiesID
商品名称
varchar
12
主键,非空,外键(参考Commodities表)
Users表
字段
说明
类型
宽度
约束
ID
工号
varchar
10
主键,非空
Name
姓名
varchar
30
非空
Sex
性别
varchar
2
‘男’或'女’
Authority
权限
varchar
10
非空
RecentlyLogin
最近登录时间
smalldatetime
-
6.2数据库物理设计
6。
2。
1创建数据库
数据库命名为SuperMarket。
数据文件初始大小为30MB,日志文件的初始大小为3MB;数据文件按20%增长,日志文件按1MB增长.
CREATEDATABASESuperMarket
ONPRIMARY(
NAME=SuperMarket,
FILENAME='G:
\SuperMarket\SuperMarket。
MDF’,
SIZE=30MB,
FILEGROWTH=20%
)
LOGON(
NAME=SuperMarket_LOG,
FILENAME=’G:
\SuperMarket\SuperMarket_LOG.LDF',
SIZE=3MB,
FILEGROWTH=1MB
);
6.2。
2建立索引
createindexCommodityIDIndexonCommodities(ID);
6。
3系统总体框架
7系统详细设计
7.1数据库实施
7.1.1建立基本表
CreateTableSuppliers(
IDvarchar(10)primarykey,
Namevarchar(30)notnull,
Addrvarchar(40),
Telvarchar(15)
);
CreateTableCommodities(
IDvarchar(12)primarykey,
Namevarchar(30)notnull,
UnitPricemoneynotnull,
Discountsmallintcheck(Discountbetween1and10),
Stocksinteger,
Unitvarchar(8)
);
CreateTableUsers(
IDvarchar(10)primarykey,
Namevarchar(30)notnull,
Sexvarchar
(2)check(Sexin(’男',’女’)),
Authorityvarchar(10),
RecentlyLoginsmalldatetime
);
CreateTableOrders(
IDvarchar(16)primarykey,
OrderDatedatenotnull,
OrderTimetimenotnull,
TotalPricemoneynotnull,
OperatorIDvarchar(10),
);
CreateTableSupply(
SupplierIDvarchar(10)notnull,
CommoditiesIDvarchar(12)notnull,
primarykey(SupplierID,CommoditiesID),
foreignkey(SupplierID)referencesSuppliers(ID),
foreignkey(CommoditiesID)referencesCommodities(ID)
);
CreateTableOrderDetails(
OrderIDvarchar(16),
CommodityIDvarchar(12),
Namevarchar(30)notnull,
UnitPricemoneynotnull,
Discountsmallintcheck(Discountbetween1and10),
Unitvarchar(8),
Amountinteger,
primarykey(OrderID,CommodityID),
foreignkey(OrderID)referencesOrders(ID)
);
7。
1。
2建立视图
商品视图:
createviewCommodities_view
as
selectID商品编号,Name名称,UnitPrice单价,Discount折扣,Unit单位,Stocks库存
fromCommodities
购物单视图:
createviewOrders_view
as
selectID单号,TotalPrice总额,OrderDate日期,OrderTime时间,OperatorID操作员工号
fromOrders
购物单细目视图:
CreateviewOrderDetails_view
as
selectOrderID单号,CommodityID商品编号,Name名称,UnitPrice单价,Discount折扣,Amount数量,Unit单位,OrderDate日期,OrderTime时间,OperatorID操作员工号
fromOrderDetails,Orders
whereOrders.ID=OrderID
库存视图:
createviewStocks_view
as
selectCommoditiesID商品编号,SupplierID供应商编号,Name商品名称,Unit单位,Stocks原有库存
fromCommodities,Supply
whereCommodities。
ID=Supply.CommoditiesID
供应商视图:
createviewSuppliers_view
as
selectID供应商编号,Name名称,Addr地址,Tel联系电话
fromSuppliers;
用户(权限)视图:
createviewUsers_view
as
selectID工号,Name姓名,Sex性别,Authority权限,RecentlyLogin最后登录时间
fromUsers
7。
2数据库的数据完整性设计
为处理插入购物单细目时违反实体完整性的情况,设计如下触发器,将插入的元组与原有的元组合并,更新Amount属性值。
(实际运行时有报错,这个问题还没解决)
createtriggerInsert_OrderDetails
onOrderDetails
insteadofinsert
asbegin
declare
@new_OIDvarchar(16),
@new_CIDvarchar(12),
@new_Namevarchar(30),
@new_UPmoney,
@new_Dissmallint,
@new_Unitvarchar(8),
@new_Amountint,
@old_Amountint
select@new_OID=OrderIDfrominserted
select@new_CID=CommodityIDfrominserted
select@new_Name=Namefrominserted
select@new_UP=UnitPricefrominserted
select@new_Dis=Discountfrominserted
select@new_Unit=Unitfrominserted
select@new_Amount=Amountfrominserted
select@old_Amount=Amountfromdeleted
if(@new_OIDin(selectOrderIDfromOrderDetails)and@new_CIDin(selectCommodityIDfromOrderDetails))begin
set@new_Amount=@old_Amount+@new_Amount
end
insertintoOrderDetailsvalues(@new_OID,@new_CID,@new_Name,@new_UP,@new_Dis,@new_Unit,@new_Amount)
end
7.3数据的安全设计
在本系统中有四种角色:
超级管理员,权限管理员,销售员,销售管理员,仓库管理员。
7.3。
1超级管理员的角色
createroler1;
grantselect,update,delete
onOrders,Suppliers,Commodities,Supply,OrderDetails,Userstor1;
7。
3。
2权限管理员的角色
createroler2;
grantselect,update,delete
onUserstor2;
7。
3.3销售员的角色
createroler3;
grantselect,update
onOrders,Commodities,OrderDetailstor3;
7。
3。
4销售管理员角色
createroler4;
grantselect
onOrders,Commodities,OrderDetailstor4;
grantdelete
onOrders,OrderDetailstor4;
7.3.5仓库管理员的角色
createroler5
grantselect,update,delete
onCommodities,Suppliers,Supplytor5;
7.4系统功能模块的设计与实现
7.4。
1登录模块
系统要求SQLServer2008开启SQLServer身份验证方式登录,并创建一个登录号和密码,该小型超市管理系统登录时使用的登录名和密码与其一致。
登录该系统的同时也会连接并登录数据库管理系统。
若数据库登录失败,则该超市管理系统也会登录失败.
主要代码框架:
publicclassLoginextendsJDialogimplementsActionListener{
privateJPanelpanel=newJPanel(newBorderLayout());
privateNIconicon=newNIcon(newImageIcon(”images/login。
png"),”");
privateJLabelaccountsL=newJLabel("登录号");
privateJLabelpasswordL=newJLabel("密 码”);
privateJTextFieldaccountsTF=newJTextField(15);
privateJPasswordFieldpasswordTF=newJPasswordField(15);
privateJButtonloginB=newJButton(”登 录");
privateJButtonexitB=newJButton("退 出”);
publicLogin(JFrameparent){}//构造器
@Override
publicvoidactionPerformed(ActionEvente){}//用于侦听登录和退出两个按钮
}
7。
4。
2商品销售模块
该模块可查询商品并将其加入购物单。
查询商品有按名称和按编号两种方式。
若按编号查询并且勾选“直接添加到购物单”,则商品按默认数量1直接加入购物单.否则查询到的商品会先在查询结果中显示,在选择一定的购买数量后按右边的添加按钮方可添加至购物单。
当所有要购买的商品都添加至购物单后,可按提交购物单按钮进行提交。
提交时会自动生成购物单号,并执行插入Orders表和OrderDetails表,且更新相应商品的库存量.
主要代码框架:
publicclassCommoditySalesextendsJPanelimplementsActionListener{
privateConnectionconnection;
privateStatementstatement;
privateResultSetresultSet;
privateResultSetMetaDataresultSMD;
privateJButtonqueryB=newJButton(”查询商品");
privateJTextFieldqueryTF=newJTextField(18);
privateJRadioButtonwithNameRB=newJRadioButton(”按名称”);
privateJRadioButtonwithIDRB=newJRadioButton("按编号”);
privateButtonGroupqueryMethodBG=newButtonGroup();
privateJCheckBoxaddDirectlyCB=newJCheckBox(”直接添加到购物单(按编号查询时可用,默认购买数量为1)”);
privateJLabelresultL=newJLabel("查询结果”);
privateJTableresultT=newJTable();
privateJScrollPaneresultSP=newJScrollPane(resultT);
privateDefaultTableModelresultModel;
privateJLabelorderL=newJLabel(”购物单");
privateJButtonclearB=newJButton(”清空购物单”);
privateJTableorderT=newJTable();
privateJScrollPaneorderSP=newJScrollPane(orderT);
privateDefaultTableModelorderModel;
privateJLabeltotalL=newJLabel(”总价:
");
privateJTextFieldtotalTF=newJTextField(10);
privateJButtonsubmitB=newJButton("提交购物单");
privateJLabelpaidL=newJLabel(”实付:
”);
privateJTextFieldpaidTF=newJTextField(10);
privateJLabelchangeL=newJLabel(”应找回:
”);
privateJTextFieldchangeTF=newJTextField(10);
introwCount,colCount,orderTableRowCount=0;
publicCommoditySales(){}//构造函数
privatevoidselectQueryMethod(){}//选择查询的方法:
按名称/按编号
publicvoidaddToOrderTable(){}//将选中的项加入到购物单
publicvoidremoveFromOrderTable(){}//将选中的项从购物单移除
private
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 超市 管理 系统