数据库课程设计报告_第1页
数据库课程设计报告_第2页
数据库课程设计报告_第3页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、设计的目标与要求1、课程设计目的:熟悉大型数据库管理系统的结构与组成;熟悉数据库应用系统的设计方法和开发过程;掌握一种大型数据库管理系统(DM5、ORACLE或SQL SERVER)的应用技术和 开发工具的使用;熟悉数据库设汁工具的使用;熟悉数据库安全的相关知识和技术;熟悉数据库系统的管理和维护。2、课程设计要求:在课程设计指导老师的指导下,选定一个数据库应用系统的题口,完成数 据库的设计和应用系统设计,并提交相应文档。数据库管理系统仅限DM5、Oracle以及MS SQL Server:开发工具限PowerBuilder Delphi> C卄、JAVA、. NET平台或其它动态 网

2、页开发工具;系统采用客户/服务器(C/S)结构或浏览器/服务器(B/S)结构实现。系统应严格遵照题目要求进行设讣,可在其基础上进一步细化完善,但不 得违背,原则上不额外增加与要求无关的功能。系统中应适当体现下列技术的应用:存储过程,触发器,索引。提交系统的源码及文档。二、设计的应用背景本系统是一个超市收银系统。顾名思义,本系统用来管理和更新超市日常交 易数据,如收银员的管理,收银员的匸作记录,日常交易记录,顾客信息管理,商 品信息管理,等等,所有的数据存储在达梦数据库的system库中。本系统实现的主要功能为:1、收银:收银员输入顾客的会员卡卡号(若有卡)、所购商品的货号等信 息,系统根据这些

3、信息获取相应的价格信息并计算应收取的总金额。完成收银后, 记录交易信息,修改有关种类商品的剩余量以及该持卡顾客的消费情况。2、发卡:顾客可交纳一定的费用(如50元)办理一张会员卡,以后在该商 场购物可凭卡享受9折优惠。如果一个未持卡顾客一次购物满1000元,可为其免 费发放一张会员卡,每张卡的优惠期为一年,一年内消费达到一定金额的可继续享 受下一年的优惠。3、款项盘存:收银员下班或交接班前对本收银台中本班次收取的款额进行盘 存,明确责任。4、商品信息的录入、修改、删除和查询等。5、收银员身份及口令管理。三、数据库设计过程1、需求分析(1)、信息要求顾客信息:顾客编号(会员卡号)、顾客姓名、顾客

4、性别、注册时间、是 否到期、消费金额。收银员信息:收银员编号、收银员姓名、收银员性别、登录名,密码。商品信息:商品编号、商品名称、单价、现有库存。收银信息:收银员编号、收银金额、登录时间,注销时间。交易信息:顾客编号,商品编号,交易时间,交易数量。(2) 、处理要求A、处理方式:联机处理。B、处理时间要求:2S。C、处理功能:(I) 、添加新信息,修改现存信息,删除无用信息,查询信息。(II) 、计算一次交易的金额,如果是会员,就可以享受9折优惠,如果非会 员消费金额超过1000元,免费为其发放一张为期一年的会员卡。(III) 、只有收银员以正确的用户名和密码才能登录本系统。(3) 、安全性和

5、完整性要求A、安全性要求:只有收银员以正确的用户名和密码才能登录本系统,进行相 应操作。后台服务器(达梦数据库)会生成相应的日志文件。B、完整性要求:(I) 实体完整性:如上信息要求一栏所示,黃色背景的为primary keyo(II) 参照完整性:收银信息和交易信息中的收银员编号,顾客编号和商品编号均为前面的参照。(Ill)用户定义完整性:如性别只能为“男'或“女',姓名不能为空,登录名必须唯一,密码必须六位以上,等等。2、概念设计根据需求分析得到的信息抽象为E-R模型如下:3. 逻辑设计根据以上分析,得到本系统的基本关系模式为:顾客(顾客编号、顾客姓名、顾客性别、注册时间、

6、是否到期、消费金 额)。create table CustomerCno 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(Cno char(9) primary key,Cname

7、 char(20) not null,Csex char(2) check(Csex in('男','女'),Clogname char (20) unique,Clogpass char (20)check (Clogpass like '好);商品(商品编号、商品名称、单价、现有库存)。create table GoodsGno char(9) primary key,Gname char(20) not null,Gprice decimal(5, 2),Gstorage smallint);收银(收银员编号、收银金额、登录时间,注销时间)。cre

8、ate table Cashinfo( Cno char(9) not null,Crecv decimal(7, 2),CtimeOn timestamp(O),CtimeOff timestamp(O),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) refe

9、rences Customer(Cno),foreign key(Gno) references Goods (Gno);为了编程的方便,另外建立了儿个视图如下:查询收银信息(收银员编号、收银员姓名、收银金额、登录时间,注销时 间)查询交易信息(顾客编号,顾客姓名,商品编号,商品名称,交易时间, 交易数量) 四.应用系统的设计过程1、系统模块结构图超市收银系统耦助登录 管理收银员信息管 理顾客佶息管理息管理交易佶 息管理收银信息管理注销、 退山 系统添加. 删除、 修改. 查询添加.修改、 査询2、系统工作流程1)以收银员的身份登录(密码为123456),如下图:2)对收银员信息,顾客信息,商

10、品信息做相应操作,以收银员信息为例:A、添加信息,如果出现非法的输入,会有提示,并会返回该界面等待重新 输入(如两次密码不同,编号已存在,性别是'男'女之外的其他,等等)。 如图:B、删除信息,输入四个参数中任意的儿个,系统会把满足此参数组合的所有记录删除掉。如图:C、修改信息,要输入正确的编号。在需要修改的地方输入新的参数,不需要修改的地方保持空白。如图:D、查询信息,可以釆用条件查询,方法同删除。如图:3)进行交易。输入商品编号和对应的数量(最多5种商品), 输入会员卡号,否则不输入。以会员为例,如下图:如果是会员,输入购买信息判断为会员讣算应收金额此后,系统会根据交易的情

11、况,自动弹出修改相应数据(如顾客的消费金 额,商品的库存,交易信息等等)的对话框,其中,正确的修改数据已经默认的填 在了对话框中,收银员只需点击确定按钮即可。4)注销以后,会弹出重新登陆的对话框。退出直接退出本系统。3、关键技术和算法1)登录对话框增加了 “记住用户名”这一选项。实现算法为:将选项是否勾 选的状态用一个bool变量表示,新建一个名为“user.dat”的文件。每次登陆 时,读取文件中的内容到"用户名”栏中。如果选择了 '记住用户名”,则将用户 输入的用户名重新写到user, dat文件中,否则写入空。2)系统中使用了很多对话框,而且每个对话框都不相同。我采用了

12、复用对话 框的方式。实现方法为:定义状态变量typedef enum stypeCASHIER_ADD, CASHIER_DELETE, CASHIER_EDIT, CASHIER.QUERY,CUSTOMER_ADD, CUSTOMER_DELETE, CUSTOMER_EDIT, CUSTOMER_QUERY,G00DS_ADD, GOODS_DELETE, GOODS_EDIT, GOODS_QUERY,CASHINFO_ADD, CASHINFO.QUERY,TRADE.ADD, TRADE_QUERYSTYPE;在OnlnitDialog()函数中,用switch-case语句来初始

13、化不同用途的对话 框。这样,16个对话框只用1个对话框资源。3)为了能够实时更新系统中的时间(如交易时间,上班下班时间等等), create儿个触发器用来获得系统时间。/添加新会员的时候,自动获得系统时间作为注册时间create trigger InsertCustomerbefore insert on Customerfor each rowbegin:new. Creg :二 curdateO ;end;/添加交易信息的时候,自动获得系统时间作为交易时间 create trigger Insert_Tradebefore insert on Tradeinfofor each rowbe

14、gin:new.Ttime := current_timestamp();end;一用户登录系统时插入新记录create trigger Insert_CashinfoOnbefore insert on Cashinfofor each rowbegin:new.CtimeOn := current_timestamp();end;用户更新Crecv时(logout)create trigger Insert_CashinfoOffbefore update on Cashinfofor each rowbeginif :old.CtimeOff is nullthen :new.Ctime

15、Off := current_timestamp();end if:end;为了查询的方便,创建了 Query_Tradeinfo和Query_Cashinfo两个视图。create view Query_Cashinfo(Qcno, Qcname, Qcrecv, Qctimeon, Qctimeoff) asselect Cashinfo.Cno, Cname, Crecv, CtimeOn, CtimeOfffrom Cashinfo, Cashierwhere Cashinfo. Cno = CashierCno;create viewQuery_Tradeinfo(Qcno, Qcn

16、ame, Qgno, Qgname, Qgprice, Qttime, Qtquantity)select Tradeinfo. Cno, Cname, Tradeinfo. Gno, Gname, Gprice, Ttime,Tquantityfrom Tradeinfo, Customer, Goodswhere Tradeinfo.Cno = CustomerCno and Tradeinfo. Gno = GoodsGno;4)在交易的过程中,会弹出其他的对话框用来更新数据库,采用了重载消息 函数的方法,使得更新的数据能以参数的形式传到对话框中。5)采用了动态条件修改,删除和査询的方式

17、,实现方法是,在源程序中动态 改变查询的条件。以删除收银员为例:/ m_Cashier 是 CCashierRecordSet (从 CRecordSet 继承,与 Cashier 表关 联)的对象如果输入不为空if (m_strEditl GetLengthO)m Cashierm strFilter +二 ” and “;strFilter. Format("Cno = ' %s' ", m_strEditl);增加对应的条件m_Cashier. m_strFilter += strFilter;bFirst 二 TRUE;if(m_strEdit2.

18、GetLength()if(bFirst)m Cashier, m strFilter += " andstrF订ter. Fornidt C'Cname = ' %s" m_strEdit2); m_Cashierm_strFilter +二 strFilter;bFirst 二 TRUE;if(m_strEdit3 GetLength()m_Cashierm_strFilter +二 “ andstrFilter Format("Csex = ' %s" "、m_strEdit3);mCashierm_strF订ter +二 strFilter;bFirst 二 TRUE;if(mstrEdit4. GetLength()辻(bFirst)m Cashier.m strFilter +二"and ”;strFilter. Format(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论