收藏 分销(赏)

数据库课程设计超市管理系统(广工).doc

上传人:丰**** 文档编号:3938311 上传时间:2024-07-24 格式:DOC 页数:23 大小:142.04KB 下载积分:10 金币
下载 相关 举报
数据库课程设计超市管理系统(广工).doc_第1页
第1页 / 共23页
数据库课程设计超市管理系统(广工).doc_第2页
第2页 / 共23页


点击查看更多>>
资源描述
成 绩 课 程 设 计 课程名称数据库系统 题目名称小型超市管理系统 学生学院计算机学院 专业班级 学 号 学生姓名 指导教师 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课题来源1 1。2课题研究主要内容1 1。3主要工作1 2 开发工具和平台1 3 命名约定1 4 需求分析2 4.1信息要求分析2 4。2处理要求分析2 5 概念结构设计3 5。1数据实体描述及分ER图3 5.2整体ER图3 6 系统概要设计4 6。1数据库逻辑结构设计4 6。2数据库物理设计6 6.3系统总体框架7 7 系统详细设计7 7.1数据库实施7 7.2数据库的数据完整性设计9 7。3数据的安全设计10 7。4系统功能模块的设计与实现11 7。5系统安装使用说明21 8 回顾与展望21 参考文献22 1 引言 1.1课题来源 到超市购物是一种较为频繁的生活事件。由于人们的超市购物行为越来越频繁,超市规模越来越大,商品种类数目与之俱增,超市商品的管理变得更加困难.显然手工的管理方式是不合适的。因此利用数据库相关技术开发一个规模适当、操作方便、功能完备的超市管理系统显得很有必要。 1.2课题研究主要内容 使用数据库管理系统和应用程序实现小型超市管理系统的商品销售结算,销售情况管理,商品信息管理,库存管理,权限管理等功能。 1。3主要工作 先对小型超市管理系统的设计进行需求分析,建立数据流图和数据字典。进行概念结构设计,作出E—R图并进行优化.进行逻辑结构设计,建立数据关系模型。进行物理结构设计,选择适当的存取方法。利用数据库管理系统按前面的分析设计作出若于基本表,根据应用程序和用户的需要建立视图。最后进行应用程序的设计、调试、运行。 2开发工具和平台 数据库管理系统:Microsoft SQL Server 2008程序设计语言:Java 1。6应用程序开发工具:eclipse测试平台 Windows 7 64bit 3 命名约定 表名和属性名的首字母大写(虽然SQL语言不分大小写,但设计过程仍遵守这一约定),基本表名和数据若由多个单词构成,则每个单词的首字母均大写,且单词间首尾紧密相接,没有间隔或其它分隔符。对于视图采用 _view 这一后辍。 4 需求分析 4。1信息要求分析 4。1.1商品销售模块应具有收银结算的功能:可将查询得的商品加入购物单,并计算总价。结算后要更新商品的库存。 4.1。2销售管理模块要实现对购物单和商品销量的查询。可分别按单号和商品编号,并能在限定(或不限定)时间范围内进行查询,并可查看查询结果的细目。 4.1。3库存管理模块要实现去商品进货的管理,及时更新库存。并具要能实现对供应商信息和商品信息的增、删、查、改等功能。 4。1。4实现权限管理,对不同的用户可授于不同的权限,不同权限所能使用的功能范围有所不同. 4.2处理要求分析 图4-1 用例图 5 概念结构设计 5.1数据实体描述及分ER图 商品 编号 名称 单价 折扣 库存 单位 商品供应商 编号 名称 地址 电话 购物单 单号 日期 操作员工号 时间 总额 用户 工号 姓名 最后登录时间 权限 性别 图5-1 分E-R图 商品实体E-R图 商品供应商实体E-R图 购物单实体E-R图 用户实体E-R图 5。2整体ER图 实体间关系:一个购物单里可以有多种商品,每种商品可以存在于多个购物单中;一个供应商可供应多种商品,每种商品可从多个供应商进货;一个购物单只由一个用户(操作员)操作生成,一个用户可操作生成多个购物单。 根据以上实体间的关系以及各分E—R图,可做出如下的整体E—R图: 图5-2 整体E-R图 商品 商品供应商 购物单 用户 供应 购买 操作 总额 名称 名称 姓名 编号 折扣 单价 单位 库存 数量 单号 日期 时间 工号 性别 最后登录时间 权限 编号 地址 电话 数量 n m m n n 1 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增长. CREATE DATABASE SuperMarketON PRIMARY ( 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建立索引 create index CommodityIDIndex on Commodities(ID); 6。3系统总体框架 小型数据库管理系统 连接数据库并登录 商品销售 销售管理 库存管理 权限管理 商品查询 购物单结算 购物单查询 商品销售情况查询 进货管理 供应商管理 商品信息管理 添加用户 删除用户 图6-1 系统总体框架 7 系统详细设计 7.1数据库实施 7。1。1建立基本表 Create Table Suppliers ( ID varchar(10) primary key, Name varchar(30) not null, Addr varchar(40), Tel varchar(15) ); Create Table Commodities ( ID varchar(12) primary key, Name varchar(30) not null, UnitPrice money not null, Discount smallint check (Discount between 1 and 10), Stocks integer, Unit varchar(8) ); Create Table Users ( ID varchar(10) primary key, Name varchar(30) not null, Sex varchar(2) check (Sex in ('男’, '女’)), Authority varchar(10), RecentlyLogin smalldatetime ); Create Table Orders ( ID varchar(16) primary key, OrderDate date not null, OrderTime time not null, TotalPrice money not null, OperatorID varchar(10), ); Create Table Supply ( SupplierID varchar(10)not null, CommoditiesID varchar(12) not null, primary key (SupplierID, CommoditiesID), foreign key (SupplierID) references Suppliers(ID), foreign key (CommoditiesID) references Commodities(ID) ); Create Table OrderDetails( OrderID varchar(16), CommodityID varchar(12), Name varchar(30) not null, UnitPrice money not null, Discount smallint check (Discount between 1 and 10), Unit varchar(8), Amount integer, primary key(OrderID, CommodityID), foreign key (OrderID) references Orders(ID) ); 7.1。2建立视图 商品视图: create view Commodities_view as select ID 商品编号, Name 名称, UnitPrice 单价, Discount 折扣, Unit 单位, Stocks 库存 from Commodities 购物单视图: create view Orders_view as select ID 单号, TotalPrice 总额, OrderDate 日期, OrderTime 时间, OperatorID 操作员工号 from Orders 购物单细目视图: Create view OrderDetails_view as select OrderID 单号, CommodityID 商品编号, Name 名称, UnitPrice 单价, Discount 折扣, Amount 数量, Unit 单位, OrderDate 日期, OrderTime 时间, OperatorID 操作员工号 from OrderDetails, Orders where Orders.ID = OrderID 库存视图: create view Stocks_view as select CommoditiesID 商品编号, SupplierID 供应商编号, Name 商品名称, Unit 单位, Stocks 原有库存 from Commodities, Supply where Commodities。ID = Supply。CommoditiesID 供应商视图: create view Suppliers_view as select ID 供应商编号, Name 名称, Addr 地址, Tel 联系电话 from Suppliers; 用户(权限)视图: create view Users_view as select ID 工号, Name 姓名, Sex 性别, Authority 权限, RecentlyLogin 最后登录时间 from Users 7.2数据库的数据完整性设计 为处理插入购物单细目时违反实体完整性的情况,设计如下触发器,将插入的元组与原有的元组合并,更新Amount属性值.(实际运行时有报错,这个问题还没解决) create trigger Insert_OrderDetails on OrderDetails instead of insert as begin declare @new_OID varchar(16), @new_CID varchar(12), @new_Name varchar(30), @new_UP money, @new_Dis smallint, @new_Unit varchar(8), @new_Amount int, @old_Amount int select @new_OID = OrderID from inserted select @new_CID = CommodityID from inserted select @new_Name = Name from inserted select @new_UP = UnitPrice from inserted select @new_Dis = Discount from inserted select @new_Unit = Unit from inserted select @new_Amount = Amount from inserted select @old_Amount = Amount from deleted if(@new_OID in (select OrderID from OrderDetails) and @new_CID in (select CommodityID from OrderDetails)) begin set @new_Amount = @old_Amount + @new_Amount end insert into OrderDetails values(@new_OID, @new_CID, @new_Name, @new_UP, @new_Dis, @new_Unit, @new_Amount) end 7.3数据的安全设计 在本系统中有四种角色:超级管理员,权限管理员,销售员,销售管理员,仓库管理员. 7。3。1超级管理员的角色 create role r1; grant select, update, delete on Orders, Suppliers, Commodities, Supply, OrderDetails, Users to r1; 7.3。2权限管理员的角色 create role r2; grant select, update, delete on Users to r2; 7。3.3销售员的角色 create role r3; grant select, update on Orders, Commodities, OrderDetails to r3; 7。3。4销售管理员角色 create role r4; grant select on Orders, Commodities, OrderDetails to r4; grant delete on Orders, OrderDetails to r4; 7.3。5仓库管理员的角色 create role r5 grant select, update, delete on Commodities, Suppliers, Supply to r5; 7。4系统功能模块的设计与实现 7。4。1登录模块 系统要求SQL Server 2008开启 SQL Server身份验证方式登录,并创建一个登录号和密码,该小型超市管理系统登录时使用的登录名和密码与其一致.登录该系统的同时也会连接并登录数据库管理系统。若数据库登录失败,则该超市管理系统也会登录失败。 图7-1 登录界面 主要代码框架: public class Login extends JDialog implements ActionListener { private JPanel panel = new JPanel(new BorderLayout()); private NIcon icon = new NIcon(new ImageIcon(”images/login。png”), "”); private JLabel accountsL = new JLabel(”登录号"); private JLabel passwordL = new JLabel(”密 码”); private JTextField accountsTF = new JTextField(15); private JPasswordField passwordTF = new JPasswordField(15); private JButton loginB = new JButton("登 录”); private JButton exitB = new JButton(”退 出”); public Login(JFrame parent) {} //构造器 @Override public void actionPerformed(ActionEvent e) {} //用于侦听登录和退出两个按钮 } 7。4。2商品销售模块 该模块可查询商品并将其加入购物单。查询商品有按名称和按编号两种方式.若按编号查询并且勾选“直接添加到购物单”,则商品按默认数量1直接加入购物单。否则查询到的商品会先在查询结果中显示,在选择一定的购买数量后按右边的添加按钮方可添加至购物单。当所有要购买的商品都添加至购物单后,可按提交购物单按钮进行提交。提交时会自动生成购物单号,并执行插入Orders表和OrderDetails表,且更新相应商品的库存量。 图7-2 商品销售模块界面 主要代码框架: public class CommoditySales extends JPanel implements ActionListener { private Connection connection; private Statement statement; private ResultSet resultSet; private ResultSetMetaData resultSMD; private JButton queryB = new JButton("查询商品”); private JTextField queryTF = new JTextField(18); private JRadioButton withNameRB = new JRadioButton(”按名称”); private JRadioButton withIDRB = new JRadioButton("按编号"); private ButtonGroup queryMethodBG = new ButtonGroup(); private JCheckBox addDirectlyCB = new JCheckBox(”直接添加到购物单(按编号查询时可用,默认购买数量为 1 )”); private JLabel resultL = new JLabel(”查询结果"); private JTable resultT = new JTable(); private JScrollPane resultSP = new JScrollPane(resultT); private DefaultTableModel resultModel; private JLabel orderL = new JLabel(”购物单”); private JButton clearB = new JButton(”清空购物单"); private JTable orderT = new JTable(); private JScrollPane orderSP = new JScrollPane(orderT); private DefaultTableModel orderModel; private JLabel totalL = new JLabel(”总价:”); private JTextField totalTF = new JTextField(10); private JButton submitB = new JButton(”提交购物单”); private JLabel paidL = new JLabel("实付:”); private JTextField paidTF = new JTextField(10); private JLabel changeL = new JLabel(”应找回:”); private JTextField changeTF = new JTextField(10); int rowCount, colCount, orderTableRowCount = 0; public CommoditySales() {} //构造函数 private void selectQueryMethod() {} //选择查询的方法:按名称/按编号 public void addToOrderTable() {} //将选中的项加入到购物单 public void removeFromOrderTable() {} //将选中的项从购物单移除 private void queryCommodity() {} //查询商品,并将结果添加至查询结果表 @Override public void actionPerformed(ActionEvent e) {} //用于侦听各按钮的行为 public void connectStatement() {} //各模块都有这个方法,用于共享一个 Statement对象 } 7。4。3销售管理模块 销售管理模块有两个子模块: (1)购物单查询子模块。可按单号或起止日期查询指定的购物单。查询结果出现在查询结果表中,点击表中的某一行则可在购物单详情列表中查看购物单细目。该子模块还可以删了指定日期以前的购物单. (2)商品销售情况查询子模块.可按商品编号或起止日期查询指定的购物单。查询结果出现在查询结果表中,点击表中的某一行可在商品销售详情列表中查看在指定时间内包含该商品的所有购物单及购买时商品的信息。 图7-3 购物单查询子模块(上)和商品销售情况查询子模块(下)的界面 主要代码框架: public class SalesManagement extends JPanel implements ActionListener, MouseListener { .。。。。。//该模块的主要字段 /*******下面是购物单查询子模块的元件*********/ private JLabel orderIDL = new JLabel(”单号 ”); 。.。.。. private JButton deleteB = new JButton("删 除"); /*******下面是商品销信情况查询子模块的元件*******/ private JLabel commodityIDL = new JLabel("商品编号 ”); 。.。.。。 private DefaultTableModel commodityDModel; /*********主要的方法*******/ public SalesManagement() {} //销售管理模块的构造器 private void createOrderQueryPanel() {} //构造购物单查询子模块 private void createCommodityQueryPanel() {} //构造商品销信情况查询子模块 private void setComboBox(final JComboBox a, final JComboBox b, final JComboBox c) {} //日期选择的设置 private void queryOrder() {} //查询购物单 private void queryCommodity() {} //查询商品销售情况 private void deleteOrders() {} //删除购物单(小于指定日期) private void showOrderDetails() {} //显示购物单详情 private void showCommoditySalesDetails() {} //显示商品销售详情 /******以下是侦听器必须要实现的方法,用于执行侦听对象的功能*******/ public void actionPerformed(ActionEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void connectStatement() {} } 7。4。4库存管理模块 该模块有三个子模块:供应商管理、商品信息管理、进货管理。 (1)供应商管理:可按供应商名称或编号查询商品的供应商,也可按显示所有供应商按钮来查询所有供应商.可实现对供应商信息的删除、增加、修改。 (2)商品信息管理:可按商品名称或编号查询指定商品的信息,也可按显示所有商品按钮来查询所有商品。可实现对商品信息的删除、增加、修改。 (3)进货管理:当有商品进货时,可用商品编号和供应商编号来录入进货信息.按添加按钮时系统会先将条目添加到进货列表。若有录入错误则可把错误条目从该列表移除。待按下确认提交按钮时才会修改数据库。 图7-4 供应商管理界面 图7-5 商品信息管理界面 图7-6 进货管理界面 主要代码框架: public class StockManagement extends JPanel implements ActionListener { ...。。。//该模块的字段 public StockManagement() {} //销售管理模块的构造器 /* cID: CommodityID, sID: SupplierID */ private JLabel cIDL = new JLabel("商品编号"); 。。。。.。// 进货管理子模块的元件 private JButton submitB = new JButton(”确认提交”); private void createStockPanel() {} //构造进货管理子模块 private JButton querySB = new JButton(”查找供应商”); 。。。。。.//供应商管理子模块的元件 private JButton addSB = new JButton("添 加”); private void createSupplierPanel() {} //构造供应商管理子模块 private JButton queryCB = new JButton(”查找商品"); .。。。。。//商品信息管理子模块的无件 private JButton addCB = new JButton("添 加”); private void createCommodityPanel() {} //构造商品信息管理子模块 private void querySupplier() {} //查询供应商(按名称或编号) private void querySupplierAll() {} //查询所有供应商 private void queryCommodity() {} //查询商品信息(按名称或编号) private void queryCommodityAll() {} //查询所有商品信息 private void addToStockTable() {} //将一项进货信息添加入进货列表 public void removeFromStockTable() {} //从进货列表移除一项进货信息 private void submitStock() {} //提交进货列表,写入数据库 private void deleteSupplier() {} //删除指定供应商 private void addSupplier() {} //添加供应商 private void alterQuerySupplier() {} //查询要更变的供应商 private void alterSupplier() {} //更变供应商信息 private void deleteCommodity() {} //删除指定商品信息 private void addCommodity() {} //添加商品信息 private void alterQueryCommodity() {} //查询要更变信息的商品 private void alterCommodity() {} //更变商品信息 @Override public void actionPerformed(ActionEvent e) {} //执行按钮的功能 public void connectStatement() {} } 7.4.5用户管理模块 本系统有五种用户权限:超级管理员可使用所有功能;销售员仅可使用商品销售模块;销售管理员可使用销售管理模块;仓库管理员可使用库存管理模块;权限管理员可支配用户权限。当用户登录超市管理系统时,系统会根据用户权限跳转是相应的模块(这是期望的功能,还没来得及实现). 图7-6 用户管理模块界面 主要代码框架: public class UserManagement extends JPanel { /***权限管理模块的字段,元件*****/ private Connection connection; ..。。。。 public UserManagement() {} //权限管理模块的构造器 private void showAll() {} //显示所有的用户 private void addUser() {} //添加用户(未实现) private void deleteUser() {} //删除用户(未实现) /****下面两个是布局时用到的方法,其它模块也有,我没有列出来***/ private Box left(JComponent component) {} private JPanel inPanel(JComponent .。。components) {} public void connectStatement() {} } 7。5系统安装使用说明 需将本系统的数据库SuperMarket附加到数据库管理系统里,并且开启SQL Server身份验证方式,创建登录名和密码并用它们来登录本小型超市管理系统. 8 回顾与展望 这次课程设计是一次既有趣又有
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服