《书店管理系统.docx》由会员分享,可在线阅读,更多相关《书店管理系统.docx(25页珍藏版)》请在三一办公上搜索。
1、数 据 库 课 程 设 计书店管理系统指导老师:*班级:计算机*班姓名:*学号:*数据库课程设计 - 书店管理系统摘 要时代在发展,人的求知欲也在不断的增长,我们需要不断的提升自己的竞争力,书籍成了我们帮助我们提高自身能力的有效也是很普遍的工具。书籍每时每刻都在推陈出新,信息量的更新很庞大。信息时代高速发展的今天,书店的信息化管理却没有得到很好的普及和发展,特别是很多小型的书店出于成本增加等原因而没有为自己的书店建立一个电脑记录的信息管理,殊不知投入了更大的人员方面的投入,反而增加了一定的成本,又使工作人员陷入繁琐的数据中,出错的几率也因此增大,上述这些事实迫使我们必须适应时代的要求,利用电脑
2、有序而高效地管理各项信息。为了优化书店管理模式,提高人力工作效率,我设计了这个书店管理系统,可以很方便书店管理员进行高效的书籍和会员等相关管理。系统将会提供各种权限供不同的用户群使用,书店管理员可以使用整套系统的所有功能,新增书籍入库,书籍信息维护,会员信息维护,书籍借阅记录等,都可以轻松实现。另外简约美观的界面会让我们的工作环境焕然一新,这在一定程度上也能提高管理人员的工作热情和工作效率。当然,还存在很多需要改进的地方,也需要用户在使用过程中对我提出改进意见。关键词:数据库,课程设计,书店管理,Delphi目录:摘要 (2)关键字 (2)序言 (4)第一章 设计目标 (4) 1.1 理论应用
3、 (4) 1.2 工具使用 (4) 1.3 应用开发 (4) 1.4 报告编写 (4)第二章 系统设计说明 (4) 2.1 系统简介 (4) 2.2 数据库设计 (4)2.2.1 实体联系图设计 (4) 2.2.2 关系定义 (5) 2.3 应用程序设计 (6) 2.3.1 业务流程图 (6) 2.3.2 系统结构图 (6) 2.4 系统框架的选择 (7) 2.5 界面设计 (7)第三章 部分程序代码和实现功能 (7) 3.1 系统登陆部分 (8) 3.2 书籍查询部分 (8)第四章 数据库相关 (13)第五章 最终应用程序运行说明 (14) 5.1 系统登陆 (14) 5.2 用户权限管理
4、(15) 5.3 会员分组管理 (16) 5.4 新到书籍编目 (16) 5.5 书籍资料维护 (17) 5.6 办理会员卡 (18) 5.7 会员信息维护 (19) 5.8 借阅和归还 (19) 5.9 查询信息 (21) 5.10 关于本系统 (23)第六章 总结 (24)第七章 参考文献 (24)平时我们在学校附近的书店买书你就会发现,现在很多书店的信息管理依然比较滞后,一般都采用纸笔加计算器人工管理的方法。对于较小型的书店,这种原始的管理方式还能应付,但对于种类繁多、数量庞大的较大型书店来说,这种原始落后的管理已经远远不能满足,不但工作繁琐,出错的几率也是很大的,大大降低了工作效率。另
5、外现在比较有先见之明的书店都慢慢发展自己的特色业务,比如会员制度,针对会员有免费借阅书籍的业务,要求是每月消费达到一定金额,据悉这种举措很受市场的欢迎,极大的带动了带动了书店的消费,为书店自身的发展积累了一定的资金和管理经验。除此之外还有各色名目繁多的会员活动等等,给读者一种心理上的优越感,刺激了消费。为了优化书店管理模式,我尝试开发了这个书店综合管理系统,让用户很方便的通过这套系统管理书店的日常事务和繁琐数据,让用户在整洁的环境下轻松的进行书店的日常业务的开展。第一章 设计目标1.1 理论应用运用数据库设计理论设计一个较完善的有实际意义的数据库结构1.2 工具使用掌握目前流行数据库管理系统工
6、具和前端应用开发工具1.3 应用开发为数据库开发相应应用程序,构成完整的数据库应用系统1.4 报告编写使用计算机按照规定格式编写高质量的设计报告第二章 系统设计说明2.1 系统简介随着时代的飞速发展和电脑的普及应用,信息智能化的社会正在向我们迎面走来。相比以前靠纸笔记录信息的时代,电脑的智能化管理将给我们的生活带来极大的便利性。针对现今书店管理信息化的滞后,这次课设我设计了一款面向书店的综合管理系统,可供系统管理员和一般用户使用,可以十分便利的增加、记录、查询和修改书籍的各种信息:包括书号、书名、作者、出版社、定价和分类等,并在此基础上设计了现在书店广泛采用的VIP会员功能,会员可以注册成不同
7、级别的VIP会员,享受不同的免费图书借阅的优惠,同时管理员也可以十分方便的新增、查询和修改会员信息。2.2 数据库设计2.2.1 实体联系图设计在这个实体联系图设计中,主要有用户、客户、书籍三个实体,拥有各自的属性,三者之间,用户同时管理客户和图书的信息,具体的E-R图设计见图2-1所示。编 号权 限姓 名密 码用 户客 户书 籍管 理nmm借 阅nm书 号书 名组 别性 别姓 名编 号类 别作 者 图2-1 E-R图 2.2.2 关系定义(数据字典)分别定义了字段名,数据类型,可否为空和相关说明等,具体见如下表2-1 表2-7。表2-1 登陆用户表字段名数据类型是否可空说明编号Char(4)
8、NO主码用户名Char(60)NO登录用户名密码Char(16)NO登录密码权限Char(1)NO登录权限表2-2 客户表字段名数据类型是否可空说明组号Char(2)NO主码组名Char(60)NO最大天数StringNO最大数量StringNO表2-3 借阅信息表字段名数据类型是否可空说明用户卡号Char(10)NO主码书号Char(13)NO主码借书日期DatetimeNO主码还书日期DatetimeNO主码最后期限DataimeNO数量IntegerNO表2-4 用户类别表字段名数据类型是否可空说明编号Char(1)NO主码用户类别名Char(40)NO表2-5 图书信息表字段名数据类型
9、是否可空说明书号Char(13)NO主码类别Char(4)NO书名Char(60)NO作者Char(50)NO出版日期DatetimeNO出版社Char(60)NO价格FloatNO总数IntegerNO现有数量IntegerNO备注Char(255)NO表2-6 图书类别表字段名数据类型是否可空说明编号Char(4)NO主码组名Char(40)NO表2-7 管理用户表字段名数据类型是否可空说明编号Char(10)NO主码名字Char(50)NO性别Char(4)NO组别Char(2)NO证件号Char(18)NO2.3 应用程序设计2.3.1 业务流程图 详细见图2-22.3.2 系统结构图
10、 详细见图2-32.4 系统构架的选择在系统构架上,我选择了C/S(Client/Server)形式,这是一种比较常见的形式。我选用Delphi作为集成开发环境,通过ADO数据库接口连接数据库,在Delphi 中用嵌入SQL 语言访问数据库。统计信息新书信息书籍各自信息书店新书目录客户名单客户各自信息客户信息买卖书籍修改书籍信息修改会员信息借还信息书籍买卖记录书籍修改记录会员资料记录借还记录图2-2 业务流程图书店综合管理系统书籍信息输入信息输入信息删除信息查询修改会员信息输入书籍查询修改会员查询修改书籍信息删除会员信息删除图2-3 系统结构图2.5 界面设计在界面的设计上,为了使界面更加美观
11、,另外下载了两个Delphi的编写界面的控件,这个在实际的使用过程中比较麻烦,核心就是界面控件的正确安装,复杂又需要耐心。整个界面设计的思想是合并和拆分,把功能不相关的窗体分开,把相近功能的窗体用page形式整合在一起,使用时较为清晰,功能也较为完整,虽然还有一些不甚完善之处,但应该也算一个小小的尝试吧。第三章 部分程序代码和实现功能3.1 登陆系统部分/*procedure TEnter_Form.Enter_BtnClick(Sender: TObject); /登录系统var DLYB_Q:TQuery; Password:string;begin DLYB_Q:=TQuery.Crea
12、te(nil); DLYB_Q.DatabaseName:=DataPath; DLYB_Q.SQL.Clear; DLYB_Q.SQL.Add(Select MM,QXID From DLYB Where Name=:FName); /SQL语言嵌入 DLYB_Q.ParamByName(FName).AsString:=XM_CB.Text; DLYB_Q.Open; if DLYB_Q.RecordCount0 then begin Password:=DLYB_Q.FieldValuesMM; if MM_E.Text=Password then begin self.Hide; QS
13、:=DLYB_Q.FieldValuesQXID; with TMainForm.Create(nil) do try showmodal; finally free; end; end else begin MessageBox(0,密码错误请重新输入!,密码错误,MB_OK or MB_ICONERROR); MM_E.Text:=; /MM_E.SetFocus; end; end; DLYB_Q.Close; FreeAndNil(DLYB_Q);end;/*3.2 书籍查询部分(含模糊查询)/*procedure TCX_F.KSCX_FBtnClick(Sender: TObjec
14、t); /开始查询begin if ASH_FRBtn.Checked then /按书号 if MHCX_FCB.Checked then begin TSXX_Q.Close; TSXX_Q.SQL.Clear; TSXX_Q.SQL.Add(Select TSBH,Name,Auther,ClassName,CBS,Cost From); TSXX_Q.SQL.Add( TSJBXX A,TSLB B Where (A.TSBH Like :TSBH) and A.Class=B.ClassID); TSXX_Q.ParamByName(TSBH).AsString:=%+GJZ_CB.
15、Text+%; TSJG_DS.DataSet:=TSXX_Q; /第二种数据库动态连接 TSJG_DG.Columns0.FieldName:=TSBH; TSJG_DG.Columns1.FieldName:=Name; TSJG_DG.Columns2.FieldName:=Auther; TSJG_DG.Columns3.FieldName:=ClassName; TSJG_DG.Columns4.FieldName:=CBS; TSJG_DG.Columns5.FieldName:=Cost; TSXX_Q.Open; TS_Lable.Caption:=Format(共 %d 条记
16、录,TSXX_Q.RecordCount); end else begin TSXX_Q.Close; TSXX_Q.SQL.Clear; TSXX_Q.SQL.Add(Select TSBH,Name,Auther,ClassName,CBS,Cost); TSXX_Q.SQL.Add( From TSJBXX A,TSLB B Where (A.TSBH=:TSBH) and A.Class=B.ClassID); TSXX_Q.ParamByName(TSBH).AsString:=GJZ_CB.Text; TSJG_DS.DataSet:=TSXX_Q; TSJG_DG.Columns
17、0.FieldName:=TSBH; TSJG_DG.Columns1.FieldName:=Name; TSJG_DG.Columns2.FieldName:=Auther; TSJG_DG.Columns3.FieldName:=ClassName; TSJG_DG.Columns4.FieldName:=CBS; TSJG_DG.Columns5.FieldName:=Cost; TSXX_Q.Open; TS_Lable.Caption:=Format(共 %d 条记录,TSXX_Q.RecordCount); end; if ASM_FRBtn.Checked then /按书名 i
18、f MHCX_FCB.Checked then begin TSXX_Q.Close; TSXX_Q.SQL.Clear; TSXX_Q.SQL.Add(Select TSBH,Name,Auther,ClassName,CBS,Cost From); TSXX_Q.SQL.Add( TSJBXX A,TSLB B Where (A.Name Like :Name) and A.Class=B.ClassID); TSXX_Q.ParamByName(Name).AsString:=%+GJZ_CB.Text+%; TSJG_DS.DataSet:=TSXX_Q; /第二种数据库动态连接 TS
19、JG_DG.Columns0.FieldName:=TSBH; TSJG_DG.Columns1.FieldName:=Name; TSJG_DG.Columns2.FieldName:=Auther; TSJG_DG.Columns3.FieldName:=ClassName; TSJG_DG.Columns4.FieldName:=CBS; TSJG_DG.Columns5.FieldName:=Cost; TSXX_Q.Open; TS_Lable.Caption:=Format(共 %d 条记录,TSXX_Q.RecordCount); end else begin TSXX_Q.Cl
20、ose; TSXX_Q.SQL.Clear; TSXX_Q.SQL.Add(Select TSBH,Name,Auther,ClassName,CBS,Cost); TSXX_Q.SQL.Add( From TSJBXX A,TSLB B Where (A.Name=:Name) and A.Class=B.ClassID); TSXX_Q.ParamByName(Name).AsString:=GJZ_CB.Text; TSJG_DS.DataSet:=TSXX_Q; TSJG_DG.Columns0.FieldName:=TSBH; TSJG_DG.Columns1.FieldName:=
21、Name; TSJG_DG.Columns2.FieldName:=Auther; TSJG_DG.Columns3.FieldName:=ClassName; TSJG_DG.Columns4.FieldName:=CBS; TSJG_DG.Columns5.FieldName:=Cost; TSXX_Q.Open; TS_Lable.Caption:=Format(共 %d 条记录,TSXX_Q.RecordCount); end; if AZZ_FRBtn.Checked then /按作者 if MHCX_FCB.Checked then begin TSXX_Q.Close; TSX
22、X_Q.SQL.Clear; TSXX_Q.SQL.Add(Select TSBH,Name,Auther,ClassName,CBS,Cost From); TSXX_Q.SQL.Add( TSJBXX A,TSLB B Where (A.Auther Like :Auther) and A.Class=B.ClassID); TSXX_Q.ParamByName(Auther).AsString:=%+GJZ_CB.Text+%; TSJG_DS.DataSet:=TSXX_Q; /第二种数据库动态连接 TSJG_DG.Columns0.FieldName:=TSBH; TSJG_DG.C
23、olumns1.FieldName:=Name; TSJG_DG.Columns2.FieldName:=Auther; TSJG_DG.Columns3.FieldName:=ClassName; TSJG_DG.Columns4.FieldName:=CBS; TSJG_DG.Columns5.FieldName:=Cost; TSXX_Q.Open; TS_Lable.Caption:=Format(共 %d 条记录,TSXX_Q.RecordCount); end else begin TSXX_Q.Close; TSXX_Q.SQL.Clear; TSXX_Q.SQL.Add(Sel
24、ect TSBH,Name,Auther,ClassName,CBS,Cost); TSXX_Q.SQL.Add( From TSJBXX A,TSLB B Where (A.Auther=:Auther) and A.Class=B.ClassID); TSXX_Q.ParamByName(Auther).AsString:=GJZ_CB.Text; TSJG_DS.DataSet:=TSXX_Q; TSJG_DG.Columns0.FieldName:=TSBH; TSJG_DG.Columns1.FieldName:=Name; TSJG_DG.Columns2.FieldName:=A
25、uther; TSJG_DG.Columns3.FieldName:=ClassName; TSJG_DG.Columns4.FieldName:=CBS; TSJG_DG.Columns5.FieldName:=Cost; TSXX_Q.Open; TS_Lable.Caption:=Format(共 %d 条记录,TSXX_Q.RecordCount); end; if ACBS_FRBtn.Checked then /按出版社 if MHCX_FCB.Checked then begin TSXX_Q.Close; TSXX_Q.SQL.Clear; TSXX_Q.SQL.Add(Sel
26、ect TSBH,Name,Auther,ClassName,CBS,Cost From); TSXX_Q.SQL.Add( TSJBXX A,TSLB B Where (A.CBS Like :CBS) and A.Class=B.ClassID); TSXX_Q.ParamByName(CBS).AsString:=%+GJZ_CB.Text+%; TSJG_DS.DataSet:=TSXX_Q; /第二种数据库动态连接 TSJG_DG.Columns0.FieldName:=TSBH; TSJG_DG.Columns1.FieldName:=Name; TSJG_DG.Columns2.
27、FieldName:=Auther; TSJG_DG.Columns3.FieldName:=ClassName; TSJG_DG.Columns4.FieldName:=CBS; TSJG_DG.Columns5.FieldName:=Cost; TSXX_Q.Open; TS_Lable.Caption:=Format(共 %d 条记录,TSXX_Q.RecordCount); end else begin TSXX_Q.Close; TSXX_Q.SQL.Clear; TSXX_Q.SQL.Add(Select TSBH,Name,Auther,ClassName,CBS,Cost);
28、TSXX_Q.SQL.Add( From TSJBXX A,TSLB B Where (A.CBS=:CBS) and A.Class=B.ClassID); TSXX_Q.ParamByName(CBS).AsString:=GJZ_CB.Text; TSJG_DS.DataSet:=TSXX_Q; TSJG_DG.Columns0.FieldName:=TSBH; TSJG_DG.Columns1.FieldName:=Name; TSJG_DG.Columns2.FieldName:=Auther; TSJG_DG.Columns3.FieldName:=ClassName; TSJG_
29、DG.Columns4.FieldName:=CBS; TSJG_DG.Columns5.FieldName:=Cost; TSXX_Q.Open; TS_Lable.Caption:=Format(共 %d 条记录,TSXX_Q.RecordCount); end; if ALB_FRBtn.Checked then /按类别 if MHCX_FCB.Checked then begin TSXX_Q.Close; TSXX_Q.SQL.Clear; TSXX_Q.SQL.Add(Select TSBH,Name,Auther,ClassName,CBS,Cost From); TSXX_Q
30、.SQL.Add( TSJBXX A,TSLB B Where (B.ClassName Like :ClassName) and A.Class=B.ClassID); TSXX_Q.ParamByName(ClassName).AsString:=%+GJZ_CB.Text+%; TSJG_DS.DataSet:=TSXX_Q; /第二种数据库动态连接 TSJG_DG.Columns0.FieldName:=TSBH; TSJG_DG.Columns1.FieldName:=Name; TSJG_DG.Columns2.FieldName:=Auther; TSJG_DG.Columns3
31、.FieldName:=ClassName; TSJG_DG.Columns4.FieldName:=CBS; TSJG_DG.Columns5.FieldName:=Cost; TSXX_Q.Open; TS_Lable.Caption:=Format(共 %d 条记录,TSXX_Q.RecordCount); end else begin TSXX_Q.Close; TSXX_Q.SQL.Clear; TSXX_Q.SQL.Add(Select TSBH,Name,Auther,ClassName,CBS,Cost); TSXX_Q.SQL.Add( From TSJBXX A,TSLB
32、B Where (B.ClassName=:ClassName) and A.Class=B.ClassID); TSXX_Q.ParamByName(ClassName).AsString:=GJZ_CB.Text; TSJG_DS.DataSet:=TSXX_Q; TSJG_DG.Columns0.FieldName:=TSBH; TSJG_DG.Columns1.FieldName:=Name; TSJG_DG.Columns2.FieldName:=Auther; TSJG_DG.Columns3.FieldName:=ClassName; TSJG_DG.Columns4.Field
33、Name:=CBS; TSJG_DG.Columns5.FieldName:=Cost; TSXX_Q.Open; TS_Lable.Caption:=Format(共 %d 条记录,TSXX_Q.RecordCount); end;end;/*procedure TCX_F.MHCX_FCBClick(Sender: TObject); /选中书籍模糊查询begin TSXX_Q.Close; TS_Lable.Caption:=共有 0 条记录;end;/*第四章 数据库相关在Delphi自带的Database Desktop平台下,我们可以很方便的查看并修改相关的数据内容,下面贴出其运行
34、时的部分截图。包含用户及其权限,客户及其组名,书籍及其分类等等。如图4-1和图4-2。图4-1 Database Desktop平台数据图a图4-2 Database Desktop平台数据图b第五章 最终应用程序运行说明5.1 系统登陆不用的用户登陆系统将会拥有不同的使用权限(登陆的用户不可以涉及的信息管理方面将会使灰色显示,点击无反应),在下拉框中可以选择(如图5-1),如果用户输入密码错误将会有错误提示(如图5-2),点击确定后继续新一次输入,正常登陆后,如果有会员借阅书籍过期,系统自动弹出提示窗口(如图5-3)。图5-1 登陆多用户选择图5-2 密码输入错误提示窗口图5-3 借阅过期弹出窗口5.2 用户权限管理这个只能由管理员进行操作,在这里可以添加,修改,删除系统可登陆用户,甚至连超级管理员都可以删除,由于删除操作不可恢复,所以选定删除对象点击删除之后会有警告(如图5-4),以防管理员误操作导致资料丢失,我认为这样比较人性化,并充分考虑到不可确定的因素。图5-4 在用户权限管理窗口删除某用户时出现警告窗口5.3 会员分组管理