资源描述
书店管理系统 目 录:摘要 4前言 7第一章设计目标 8 1.1理论应用 8 1.2工具使用 8 1.3应用开发 8 1.4报告编写 8第二章系统设计说明 8 2.1系统简介 8 2.2数据库设计 8 2.2.1实体联系图设计 82.2.2关系定义 9 2.3应用程序设计 112.3.1业务流程图 112.3.2系统结构图 112.4系统框架的选择 12 2.5界面设计 12 第三章部分程序代码和实现功能 12 3.1系统登陆部分 12 3.2书籍查询部分 13 第四章数据库相关 20 第五章最终应用程序运行说明 21 5.1系统登陆 21 5.2用户权限管理 23 5.3会员分组管理 23 5.4新到书籍编目 24 5.5书籍资料维护 25 5.6办理会员卡 26 5.7会员信息维护 26 5.8借阅和归还 26 5.9查询信息 28 5.10 关于本系统 29第六章总结 31第七章参考文献 31书店管理系统摘 要 时代在发展,人的求知欲也在不断的增长,我们需要不断的提升自己的竞争力,书籍成了我们帮助我们提高自身能力的有效也是很普遍的工具。书籍每时每刻都在推陈出新,信息量的更新很庞大。 信息时代高速发展的今天,书店的信息化管理却没有得到很好的普及和发展,特别是很多小型的书店出于成本增加等原因而没有为自己的书店建立一个电脑记录的信息管理,殊不知投入了更大的人员方面的投入,反而增加了一定的成本,又使工作人员陷入繁琐的数据中,出错的几率也因此增大,上述这些事实迫使我们必须适应时代的要求,利用电脑有序而高效地管理各项信息。为了优化书店管理模式,提高人力工作效率,我设计了这个书店管理系统,可以很方便书店管理员进行高效的书籍和会员等相关管理。系统将会提供各种权限供不同的用户群使用,书店管理员可以使用整套系统的所有功能,新增书籍入库,书籍信息维护,会员信息维护,书籍借阅记录等,都可以轻松实现。另外简约美观的界面会让我们的工作环境焕然一新,这在一定程度上也能提高管理人员的工作热情和工作效率。当然,还存在很多需要改进的地方,也需要用户在使用过程中对我提出改进意见。 关键词 数据库 课程设计 书店管理 Delphi Abstract The time is developing, humans intellectual curiosity also in the unceasing growth, we needed to promote own unceasingly competitive power, the books to become us to help us to sharpen own ability effectively also is the very universal tool.The books all are weeding through the old to bring forth the new every time, the information content renewal is very huge. The information age high speed development today, bookstores informationization management has not obtained the very good popularization and the development actually, but very are specially many the small bookstore stemming from reasons and so on cost increase not to establish the information management for own bookstore which a computer records, had never realized invested the bigger personnel aspect investment, Instead increased certain cost, also causes the staff to fall into in the tedious data, makes a mistake therefore the probability also increases, the above these facts force us to have to adapt the time request, but manages each information highly effective using the computer order.In order to optimize the bookstore to manage the pattern, enhances the manpower working efficiency, I have designed this bookstore management system management system, may the very convenient bookstore managers carry on highly effective correlation management and so on the books and member.The system will be able to provide each jurisdiction for the different user group use, the bookstore manager may use the entire wrap systematic all functions, the additional books warehousing, the books information maintenance, The member information maintenance, the books borrow the record and so on, all may with ease realize.Moreover the brief artistic contact surface can let our working conditions be changed beyond recognition, this also can enhance administrative personnels work enthusiasm and the working efficiency to a certain extent.Certainly, but also has the place which very many needs to improve, also needs the user to give the improvement comment in the use process to me.Key words database curriculum designs the bookstore to manage Delphi前言平时我们在学校附近的书店买书你就会发现,现在很多书店的信息管理依然比较滞后,一般都采用纸笔加计算器人工管理的方法。对于较小型的书店,这种原始的管理方式还能应付,但对于种类繁多、数量庞大的较大型书店来说,这种原始落后的管理已经远远不能满足,不但工作繁琐,出错的几率也是很大的,大大降低了工作效率。另外现在比较有先见之明的书店都慢慢发展自己的特色业务,比如会员制度,针对会员有免费借阅书籍的业务,要求是每月消费达到一定金额,据悉这种举措很受市场的欢迎,极大的带动了带动了书店的消费,为书店自身的发展积累了一定的资金和管理经验。除此之外还有各色名目繁多的会员活动等等,给读者一种心理上的优越感,刺激了消费。为了优化书店管理模式,我尝试开发了这个书店综合管理系统,让用户很方便的通过这套系统管理书店的日常事务和繁琐数据,让用户在整洁的环境下轻松的进行书店的日常业务的开展。 第一章 设计目标1.1 理论应用 运用数据库设计理论设计一个较完善的有实际意义的数据库结构 1.2 工具使用 掌握目前流行数据库管理系统工具和前端应用开发工具 1.3 应用开发 为数据库开发相应应用程序,构成完整的数据库应用系统 1.4 报告编写 使用计算机按照规定格式编写高质量的设计报告 第二章 系统设计说明2.1 系统简介 随着时代的飞速发展和电脑的普及应用,信息智能化的社会正在向我们迎面走来。相比以前靠纸笔记录信息的时代,电脑的智能化管理将给我们的生活带来极大的便利性。针对现今书店管理信息化的滞后,这次课设我设计了一款面向书店的综合管理系统,可供系统管理员和一般用户使用,可以十分便利的增加、记录、查询和修改书籍的各种信息:包括书号、书名、作者、出版社、定价和分类等,并在此基础上设计了现在书店广泛采用的VIP会员功能,会员可以注册成不同级别的VIP会员,享受不同的免费图书借阅的优惠,同时管理员也可以十分方便的新增、查询和修改会员信息。 2.2 数据库设计 2.2.1 实体联系图设计 在这个实体联系图设计中,主要有用户、客户、书籍三个实体,拥有各自的属性,三者之间,用户同时管理客户和图书的信息,具体的E-R图设计见图2-1所示。 2.2.2 关系定义(数据字典) 分别定义了字段名,数据类型,可否为空和相关说明等,具体见如下表2-1 表2-7。 2.3 应用程序设计 2.3.1 业务流程图 2.3.2 系统结构图 2.4 系统构架的选择 在系统构架上,我选择了C/S(Client/Server)形式,这是一种比较常见的形式。我选用Delphi作为集成开发环境,通过ADO数据库接口连接数据库,在Delphi 中用嵌入SQL 语言访问数据库。 2.5 界面设计 在界面的设计上,为了使界面更加美观,另外下载了两个Delphi的编写界面的控件,这个在实际的使用过程中比较麻烦,核心就是界面控件的正确安装,复杂又需要耐心。整个界面设计的思想是合并和拆分,把功能不相关的窗体分开,把相近功能的窗体用page形式整合在一起,使用时较为清晰,功能也较为完整,虽然还有一些不甚完善之处,但应该也算一个小小的尝试吧。 第三章 部分程序代码和实现功能3.1 登陆系统部分 /* procedure TEnter_Form.Enter_BtnClick(Sender: TObject); /登录系统 var DLYB_Q:TQuery; Password:string; begin DLYB_Q:=TQuery.Create(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:=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: TObject); /开始查询 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.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 条记录,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.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; if ASM_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.Name Like :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:=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(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:=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; 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.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.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.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.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:=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 ACBS_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.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.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); 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_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.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.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 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.FieldName:=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平台下,我们可以很方便的查看并修改相关的数据内容,下面贴出其运行时的部分截图。包含用户及其权限,客户及其组名书籍及其分类等等。如图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 会员分组管理 在这里可以设置会员分组,同样也提供了添加,修改,删除等操作,让拥有权限的管理员轻松修改会员等级制度和各级别会员所能享受到的优惠度(如图5-5),方便书店经营者根据自己的经营战略调整相关信息。 图5-5 会员等级制的修改等操作 5.4 新到书籍编目 新到书籍编目即新书入库,所有选项都是活动的,但是一旦给定编号入库,之后的书籍信息维护就不能更改其编号了,另外如果输入格式有误,比如日期格式(如图5-6),如果不慎输入错误就会出现提示窗口,其他选项出错提示类似,当一切都正确输入后点击入库书籍就进入了你的数据库并显示入库成功提示窗口供你确认(如图5-7),之后停留在新书入库界面等待下个新书信息的录入。 图5-6 日期格式输入错误提示 图5-7 新书入库成功 5.5 书籍资料维护 书籍维护分为书籍修改删除,书籍类别编辑两个子操作,前者可以通过书籍编号进行定位,找出书籍的相关资料并进行编辑(如图5-8),注意这个时候编号选项框是灰色的,表示不可编辑,这也就是我上面所提到的书籍一旦入库成功,编号就是唯一的,不能修改的。同样在后者窗口中,用户也可以很方便的对书籍分类进行一系列的修改(如图5-9)。 图5-8 编号定位书籍后修改和删除资料 图5-9 书籍类别编辑 5.6 办理会员卡 办理会员卡的时候主要需要录入编号,姓名等相关资料(如图5-10)。 图5-10 录入相关信息办理会员卡 5.7 会员信息维护 图5-11 会员信息定位修改等 5.8 借阅和归还 借阅和归还在一个窗口中出现,在选择要进行的操作之后转换窗口,这里默认借阅操作,首先面对的是书籍编号的输入(如图5-12),出现相关信息后再要求输入会员卡号,当用户选择归还操作时窗口变化,首先是会员卡号的输入,确定之后便会出现所借书目,选择某书籍确定出现剩余的相关信息(如图5-13),如果过期应缴费就非零了(如图5-14)。 图5-12 借阅操作 图5-13 归还操作a 图5-14 归还操作b 5.9 查询信息 查询信息包括查询书籍,会员和借阅信息,分别都可以按多种方式查询,比如卡号,姓名,书号,出版社等等,只要用户提供关键字我们就可以得到所需要的相关信息,这里特别提到的是模糊查询方式,这在现实生活中是比较常见而且比较有效的。如图5-15图5-18。 图5-15 书籍信息查询 图5-16 会员信息查询 图5-17 个人借阅信息查询 图5-18过期借阅信息查询 5.10 关于本系统 图5-19 应用系统说明 这次数据库设计的过程中,我使用集成开发环境Delphi7,用Delphi开发数据库确实有其便利性,在界面设计及程序易读性上都非常的便利。由于以前较多的使用过C/C+来编程,对Delphi没有很多的了解,在语言的学习上没有花太多功夫,以致于在安装控件的时候有点摸不着头,在调试涉及到数据库的代码时,也花了不少时间,有些莫名其妙的问题现在仍然没有弄明白,可能是学习得还不够吧。最后还是马马虎虎的作出来了,当然还存在着很多问题,在程序的功能设计上因为时间不充足加上自己没有实际参加过书店的日常管理,很多问题都没有考虑周全,另外考虑问题多多少少都存在不够全面的问题,在程序设计的时候主要都是按着程序正常运行或者说按着自己想要其发生的方向去设计,没有很重视在程序遇到不常规的数据,发生不正常的情况时应该有的应付措施,我觉得在这个方面比较缺乏一种队全局的把握和对异常处理的考虑,今后一定要加强。 通过这次数据库的设计,我对整个数据库设计的过程有了一些了解,在程序语言的学习上也有了新的进步,在不断的遇到问题到解决问题的过程中学到很多宝贵的经验。虽然还存在许多不足,但学习的过程已让我收获颇丰,期待以后有机会能取得更大的进步吧。 第七章 参考文献1Delphi 7数据库项目案例导航周兴华, 李增民, 臧洪光编著清华大学出版社,2005年 2Delphi数据库开发经典案例解析王晟, 万科编著清华大学出版社, 2005年 3Delphi 7基础教程宋一兵, 赵景波, 李春艳等编著机械工业出版社, 2005年- 30 -
展开阅读全文