数据库课程设计报告lq.docx
- 文档编号:17451962
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:15
- 大小:614.79KB
数据库课程设计报告lq.docx
《数据库课程设计报告lq.docx》由会员分享,可在线阅读,更多相关《数据库课程设计报告lq.docx(15页珍藏版)》请在冰点文库上搜索。
数据库课程设计报告lq
设计的目标与要求
1、课程设计目的:
●熟悉大型数据库管理系统的结构与组成;
●熟悉数据库应用系统的设计方法和开发过程;
●掌握一种大型数据库管理系统(DM5、ORACLE或SQLSERVER)的应用技术和开发工具的使用;
●熟悉数据库设计工具的使用;
●熟悉数据库安全的相关知识和技术;
●熟悉数据库系统的管理和维护。
2、课程设计要求:
●在课程设计指导老师的指导下,选定一个数据库应用系统的题目,完成数据库的设计和应用系统设计,并提交相应文档。
●数据库管理系统仅限DM5、Oracle以及MSSQLServer;
●开发工具限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)实体完整性:
如上信息要求一栏所示,黄色背景的为primarykey。
(II)参照完整性:
收银信息和交易信息中的收银员编号,顾客编号和商品编号均为前面的参照。
(III)用户定义完整性:
如性别只能为‘男’或‘女’,姓名不能为空,登录名必须唯一,密码必须六位以上,等等。
2、概念设计
根据需求分析得到的信息抽象为E-R模型如下:
3、逻辑设计
根据以上分析,得到本系统的基本关系模式为:
●顾客(顾客编号、顾客姓名、顾客性别、注册时间、是否到期、消费金额)。
createtableCustomer
(Cnochar(9)primarykey,
Cnamechar(20),
Csexchar
(2)check(Csexin('男','女')),
Cregdate,
Cactivechar
(2)check(Cactivein('是','否')),
Cconsumptiondecimal(8,2)
);
●收银员(收银员编号、收银员姓名、收银员性别、登录名,密码)。
createtableCashier
(Cnochar(9)primarykey,
Cnamechar(20)notnull,
Csexchar
(2)check(Csexin('男','女')),
Clognamechar(20)unique,
Clogpasschar(20)check(Clogpasslike'______%')
);
●商品(商品编号、商品名称、单价、现有库存)。
createtableGoods
(Gnochar(9)primarykey,
Gnamechar(20)notnull,
Gpricedecimal(5,2),
Gstoragesmallint
);
●收银(收银员编号、收银金额、登录时间,注销时间)。
createtableCashinfo
(Cnochar(9)notnull,
Crecvdecimal(7,2),
CtimeOntimestamp(0),
CtimeOfftimestamp(0),
foreignkey(Cno)referencesCashier(Cno)
);
●交易(顾客编号,商品编号,交易时间,交易数量)。
createtableTradeinfo
(Cnochar(9),
Gnochar(9),
Tquantitysmallint,
Ttimetimestamp(0),
--primarykey(Cno,Gno),
foreignkey(Cno)referencesCustomer(Cno),
foreignkey(Gno)referencesGoods(Gno)
);
为了编程的方便,另外建立了几个视图如下:
●查询收银信息(收银员编号、收银员姓名、收银金额、登录时间,注销时间)
●查询交易信息(顾客编号,顾客姓名,商品编号,商品名称,交易时间,交易数量)
应用系统的设计过程
1、系统模块结构图
2、系统工作流程
1)以收银员的身份登录(密码为123456),如下图:
2)对收银员信息,顾客信息,商品信息做相应操作,以收银员信息为例:
A、添加信息,如果出现非法的输入,会有提示,并会返回该界面等待重新输入(如两次密码不同,编号已存在,性别是‘男’‘女’之外的其他,等等)。
如图:
B、删除信息,输入四个参数中任意的几个,系统会把满足此参数组合的所有记录删除掉。
如图:
C、修改信息,要输入正确的编号。
在需要修改的地方输入新的参数,不需要修改的地方保持空白。
如图:
D、查询信息,可以采用条件查询,方法同删除。
如图:
3)进行交易。
输入商品编号和对应的数量(最多5种商品),如果是会员,输入会员卡号,否则不输入。
以会员为例,如下图:
输入购买信息
判断为会员
计算应收金额
此后,系统会根据交易的情况,自动弹出修改相应数据(如顾客的消费金额,商品的库存,交易信息等等)的对话框,其中,正确的修改数据已经默认的填在了对话框中,收银员只需点击确定按钮即可。
4)注销以后,会弹出重新登陆的对话框。
退出直接退出本系统。
3、关键技术和算法
1)登录对话框增加了“记住用户名”这一选项。
实现算法为:
将选项是否勾选的状态用一个bool变量表示,新建一个名为“user.dat”的文件。
每次登陆时,读取文件中的内容到“用户名”栏中。
如果选择了“记住用户名”,则将用户输入的用户名重新写到user.dat文件中,否则写入空。
2)系统中使用了很多对话框,而且每个对话框都不相同。
我采用了复用对话框的方式。
实现方法为:
定义状态变量
typedefenumstype{
CASHIER_ADD,CASHIER_DELETE,CASHIER_EDIT,CASHIER_QUERY,
CUSTOMER_ADD,CUSTOMER_DELETE,CUSTOMER_EDIT,CUSTOMER_QUERY,
GOODS_ADD,GOODS_DELETE,GOODS_EDIT,GOODS_QUERY,
CASHINFO_ADD,CASHINFO_QUERY,
TRADE_ADD,TRADE_QUERY
}STYPE;
在OnInitDialog()函数中,用switch-case语句来初始化不同用途的对话框。
这样,16个对话框只用1个对话框资源。
3)为了能够实时更新系统中的时间(如交易时间,上班下班时间等等),create几个触发器用来获得系统时间。
//添加新会员的时候,自动获得系统时间作为注册时间
createtriggerInsert_Customer
beforeinsertonCustomer
foreachrow
begin
:
new.Creg:
=curdate();
end;
//添加交易信息的时候,自动获得系统时间作为交易时间
createtriggerInsert_Trade
beforeinsertonTradeinfo
foreachrow
begin
:
new.Ttime:
=current_timestamp();
end;
--用户登录系统时插入新记录
createtriggerInsert_CashinfoOn
beforeinsertonCashinfo
foreachrow
begin
:
new.CtimeOn:
=current_timestamp();
end;
--用户更新Crecv时(logout)
createtriggerInsert_CashinfoOff
beforeupdateonCashinfo
foreachrow
begin
if:
old.CtimeOffisnull
then:
new.CtimeOff:
=current_timestamp();
endif;
end;
为了查询的方便,创建了Query_Tradeinfo和Query_Cashinfo两个视图。
createviewQuery_Cashinfo(Qcno,Qcname,Qcrecv,Qctimeon,Qctimeoff)
as
selectCashinfo.Cno,Cname,Crecv,CtimeOn,CtimeOff
fromCashinfo,Cashier
whereCashinfo.Cno=Cashier.Cno;
createview
Query_Tradeinfo(Qcno,Qcname,Qgno,Qgname,Qgprice,Qttime,Qtquantity)
as
selectTradeinfo.Cno,Cname,Tradeinfo.Gno,Gname,Gprice,Ttime,Tquantity
fromTradeinfo,Customer,Goods
whereTradeinfo.Cno=Customer.CnoandTradeinfo.Gno=Goods.Gno;
4)在交易的过程中,会弹出其他的对话框用来更新数据库,采用了重载消息函数的方法,使得更新的数据能以参数的形式传到对话框中。
5)采用了动态条件修改,删除和查询的方式,实现方法是,在源程序中动态改变查询的条件。
以删除收银员为例:
//m_Cashier是CCashierRecordSet(从CRecordSet继承,与Cashier表关联)的对象
//如果输入不为空
if(m_strEdit1.GetLength())
{
if(bFirst)
m_Cashier.m_strFilter+="and";
strFilter.Format("Cno='%s'",m_strEdit1);
//增加对应的条件
m_Cashier.m_strFilter+=strFilter;
bFirst=TRUE;
}
if(m_strEdit2.GetLength())
{
if(bFirst)
m_Cashier.m_strFilter+="and";
strFilter.Format("Cname='%s'",m_strEdit2);
m_Cashier.m_strFilter+=strFilter;
bFirst=TRUE;
}
if(m_strEdit3.GetLength())
{
if(bFirst)
m_Cashier.m_strFilter+="and";
strFilter.Format("Csex='%s'",m_strEdit3);
m_Cashier.m_strFilter+=strFilter;
bFirst=TRUE;
}
if(m_strEdit4.GetLength())
{
if(bFirst)
m_Cashier.m_strFilter+="and";
strFilter.Format("Clogname='%s'",m_strEdit4);
m_Cashier.m_strFilter+=strFilter;
bFirst=TRUE;
}
设计心得体会
这次数据库课程设计收获颇大,首先对视图和触发器的认识和作用都上了一个台阶。
通过这次的课程设计,我不仅拓宽了自己的知识面,还在实践过程中巩固和加深了自己所学的理论知识,使自己的技术素质和实践能力有了进一步的提高,同时我的专业水平也有了很大的进步。
熟悉大型数据库管理系统的结构,熟悉了数据库系统开发工具的使用。
同时,在软件开发方面也累积了不少经验,对软件工程的知识重要性的认识更深了。
通过设计过程的锻炼,自己分析问题和解决问题的能力都得到了锻炼和提高,完善了自己的知识结构,加深了对所学知识的理解。
这次课程设计完成后,体会颇多,在学与做的过程中,取长补短,不断学习新的知识,吸取经验,达到进步的目的。
在学与做的过程中自身的努力以及相关图书资料的帮助,对ODBC编程接口的理解也从能够使用提高到了熟练使用,对程序开发的一般过程和对数据库知识的运用也有了进一步的了解。
在这个快速发展的当代社会里,数据库已经普遍应用在各个领域。
通过课程设计,我学习到不少的数据库方面的知识,但由于自己的理论知识水平有限,实践知识和设计经验不足,在设计过程中难免存在一些问题,甚至错误。
这些我会在以后的工作和实践中加以改进和提高。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 报告 lq