毕业实习报告
1、课程设计目的:
? 熟悉大型数据库管理系统的结构与组成; ? 熟悉数据库应用系统的设计方法和开发过程;
? 掌握一种大型数据库管理系统(DM5、ORACLE或SQL SERVER)的应用技术和开发工具的使用;
? 熟悉数据库设计工具的使用; ? 熟悉数据库安全的相关知识和技术; ? 熟悉数据库系统的管理和维护。
2、毕业实习设计要求:
? 在课程设计指导老师的指导下,选定一个数据库应用系统的题目,完成数据库的设计和应用系统设计,并提交相应文档。
? 数据库管理系统仅限DM5、Oracle以及MS SQL Server;
? 开发工具限PowerBuilder、Delphi、C++、 JAVA、.NET平台或其它动态网页开发工具; ? 系统采用客户/服务器(C/S)结构或浏览器/服务器(B/S)结构实现。
? 系统应严格遵照题目要求进行设计,可在其基础上进一步细化完善,但不得违背,原则上不额外增加与要求无关的功能。
? 系统中应适当体现下列技术的应用:存储过程,触发器,索引。 ? 提交系统的源码及文档。
一、 设计的应用背景
本系统是一个超市收银系统。顾名思义,本系统用来管理和更新超市日常交易数据,如收银员的管理,收银员的工作记录,日常交易记录,顾客信息管理,商品信息管理,等等,所有的数据存储在达梦数据库的system库中。 本系统实现的主要功能为:
1、收银:收银员输入顾客的会员卡卡号(若有卡)、所购商品的货号等信息,系统根据这些信息获取相应的价格信息并计算应收取的总金额。完成收银后,记录交易信息,修改有关种类商品的剩余量以及该持卡顾客的消费情况。
2、发卡:顾客可交纳一定的费用(如50元)办理一张会员卡,以后在该商场购物可凭卡享受9折优惠。如果一个未持卡顾客一次购物满1000元,可为其免费发放一张会员卡,每张卡的优惠期为一年,一年内消费达到一定金额的可继续享受下一年的优惠。
3、款项盘存:收银员下班或交接班前对本收银台中本班次收取的款额进行盘存,明确责任。 4、商品信息的录入、修改、删除和查询等。 5、收银员身份及口令管理。
二、
数据库设计过程
1、需求分析
(1)、信息要求
? 顾客信息:顾客编号(会员卡号)、顾客姓名、顾客性别、注册时间、是否到期、消费金额。
? 收银员信息:收银员编号、收银员姓名、收银员性别、登录名,密码。 ? 商品信息:商品编号、商品名称、单价、现有库存。 ? 收银信息:收银员编号、收银金额、登录时间,注销时间。 ? 交易信息:顾客编号,商品编号,交易时间,交易数量。 (2)、处理要求 A、处理方式:联机处理。 B、处理时间要求:< 2S。 C、处理功能:
(I)、添加新信息,修改现存信息,删除无用信息,查询信息。
(II)、计算一次交易的金额,如果是会员,就可以享受9折优惠,如果非会员消费金额超过1000元,免费为其发放一张为期一年的会员卡。
(III)、只有收银员以正确的用户名和密码才能登录本系统。 (3)、安全性和完整性要求
A、安全性要求:只有收银员以正确的用户名和密码才能登录本系统,进行相应操作。后台服务
器(达梦数据库)会生成相应的日志文件。 B、完整性要求:
(I)实体完整性:如上信息要求一栏所示,黄色背景的为primary key。
(II)参照完整性:收银信息和交易信息中的收银员编号,顾客编号和商品编号均为前面的参照。 (III)用户定义完整性:如性别只能为‘男’或‘女’,姓名不能为空,登录名必须唯一,密码必须六位以上,等等。
2、概念设计
根据需求分析得到的信息抽象为E-R模型如下:
编号 姓名 性别 密码 收银员 单价 库存 登录名 M名称 商品 收银 编号 下班时间 1交易 金额 上班时间 N1数量 时间 顾客 编号 姓名 性别 注册时间 是否过期 消费金额
3、逻辑设计
根据以上分析,得到本系统的基本关系模式为:
? 顾客(顾客编号、顾客姓名、顾客性别、注册时间、是否到期、消费金额)。
create table Customer
( Cno char(9) primary key, Cname char(20),
Csex char(2) check(Csex in('男','女')),
Creg date,
Cactive char(2) check(Cactive in('是','否')),
Cconsumption decimal(8,2) );
? 收银员(收银员编号、收银员姓名、收银员性别、登录名,密码)。
create table Cashier ( );
? 商品(商品编号、商品名称、单价、现有库存)。 create table Goods ( Gno char(9) primary key, Gname char(20) not null, Gprice decimal(5,2), Gstorage smallint );
? 收银(收银员编号、收银金额、登录时间,注销时间)。 create table Cashinfo ( Cno char(9) not null, Crecv decimal(7,2), CtimeOn timestamp(0), CtimeOff timestamp(0), foreign key(Cno) references Cashier(Cno) );
? 交易(顾客编号,商品编号,交易时间,交易数量)。
create table Tradeinfo ( Cno char(9), Gno char(9), Tquantity smallint, Ttime timestamp(0), -- primary key( Cno, Gno),
foreign key(Cno) references Customer(Cno), foreign key(Gno) references Goods(Gno) );
为了编程的方便,另外建立了几个视图如下:
? ?
查询收银信息(收银员编号、收银员姓名、收银金额、登录时间,注销时间) 查询交易信息(顾客编号,顾客姓名,商品编号,商品名称,交易时间,交易数量)
Cno char(9) primary key, Cname char(20) not null,
Csex char(2) check(Csex in('男','女')),
Clogname char(20) unique,
Clogpass char(20) check(Clogpass like '______%')
三、
应用系统的设计过程
1、 系统模块结构图
超市收银系统 帮助 登录管理 收银员信息管理 顾客信息管理 商品信息管理 交易信息管理 收银信息管理 注销、 退出 系统 添加、删除、修改、查询 添加、删除、修改、查询 添加、删除、修改、查询 添加、查询、交易 添加、查询 2、 系统工作流程
1) 以收银员的身份登录(密码为123456),如下图:
2)
对收银员信息,顾客信息,商品信息做相应操作,以收银员信息为例:
A、 添加信息,如果出现非法的输入,会有提示,并会返回该界面等待重新输入(如两次