您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > 网络数据库综合性实验报告
计算机系综合性实验实验报告课程名称网络数据库实验学期2007至2008学年第2学期学生所在系部计算机年级05级专业班级信管B05-2学生姓名学号任课教师实验成绩计算机系制华北科技学院计算机系综合性实验报告第1页《网络数据库》课程综合性实验报告开课实验室:软件工程实验室2008年6月2日实验题目图书借阅管理系统一、实验目的通过该实验把数据库的理论知识(数据库和数据表的设计理论、数据完整性的实现、存储过程、触发器等)应用到具体的综合实例中,达到数据库与其他课程整合的目的。二、设备与环境硬件:多媒体计算机软件:WindowsXP以上的操作系统、VisualBasic或其它可视化语言及SQLServer2000以上版本三、实验内容系统功能设计总体描述系统所包含的功能,要求体现出系统所完成的功能,可以用功能模块图来体现。如:本系统至少包括读者信息管理模块、图书信息管理模块、借阅信息管理模块。2.根据系统功能作数据库设计;可以使用体现数据完整性的SQL语句或表结构图如:读者信息、图书信息、借阅信息表的设计要符合数据库设计的理论范式,并设置相应的主键、外键、默认值等。3.数据库应用根据设计需要设计必要的视图、索引、存储过程和触发器。写出相应的SQL代码。如:读者信息、图书信息、借阅信息表的添加、修改、删除的存储过程、借阅信息表的添加、删除触发器(1)如果在一次查询中涉及到多个表,应该创建视图。(2)如果对某个字段进行多次查询,应该对该字段创建索引、并建立存储过程。(3)如果在对数据库操作过程中,有对多个表的级联操作,应该建立触发器,由触发器实现数据的完整性。4.图书借阅系统的界面设计和代码设计。界面设计要求简洁、美观、操作方便。代码设计至少要包括数据库的连接代码、通过前台界面实现数据库记录的添加、修改、删除等操作的相关代码。如果系统较大,可以实现部分体现功能的代码(体现数据库知识点的应用)。四、实验结果及分析(一)系统说明图书管理系统采用delphi做前台界面,SQL做后台语言图书借阅管理系统包括五个部分:用户登录:建立登陆人员的用户名和密码表,根据需要可以设立管理员和读者登陆,设置不同的访问权限。借书模块:其中包括学生信息和图书信息,其中学生信息包括学生证号,姓名,专业,性别,出华北科技学院计算机系综合性实验报告第2页生时间和借书数;图书信息包括书名,出版社,ISBN,作者,价格,复本量,库存量还书模块:涉及了学生和图书的相关信息,显示还书的学生学号和书的索书号等查询模块:根据需要选择查询信息,指定学生,指定专业,指定书籍维护模块:主要有对学生表的维护包括对学生相关信息的添加,删除和修改;对图书表的维护包括“添加书籍”、“修改书籍”和“删除书籍”3部分功能和借阅表的添加,删除和修改及对表中的照片进行添加,总体设计的模块图如下数据库设计前台界面主要用到的Delphi的相关控件为用于数据库连接,读取和执行存储过程的ADOConnection,ADOQuery,ADOStoredPro控件,Label,DBtext,Pagecontrol,Panel,Form,Bitbtn,DblookupComboBox,Edit,Dbgrid,RadioGroup,TabSheet等控件,于此相关的的是后台的数据库,创建一个数据库文件wangling.sql,创建五张表分别为学生表,图书表,借阅表,借阅历史表,登陆密码表,两个触发器用于学生借书数和复本量,库存量的增加和减少,和八个存储过程,主要用于对学生表,借阅表和图书表的添加删除和更新。以其中的学生表的设计结构为例:字段名类型与宽度是否主键是否允许空值说明借书证号Char(12)是Notnull0:男;1:女;借书数的默认值为0,并且不超过5;姓名Char(12)否Null专业名Char(20)否Notnull性别Bit否Null借书量Integer否Null借书还书查询维护学生的学号姓名专业以及将要借的图书的相关信息图书管理系统主界面借书学生的学号及对应的书的索书号指定学生指定专业指定书籍查询不同的借书信息对学生表图书表和借阅表进行添加删除和修改的操作安全登陆华北科技学院计算机系综合性实验报告第3页出生时间Datetime否Null照片Image否Null以其中一个触发器为例:usewangling//使用我的数据进行操作gocreatetriggertjy_insertonjywl//在借阅表中创建名为tjy_insert触发器forinsertasbeginupdatexswlset借书数=借书数+1wherexswl.借书证号in(selectinserted.借书证号frominserted)updatebookwlset库存量=库存量-1wherebookwl.ISBNin(selectinserted.ISBNfrominserted)end运行结果分析运行结果如下图所示:图(一)借书界面安全登陆包括两种身份的登陆和读者的登陆,选择不同的身份对应不同的用户名和密码,登陆后选择“借书”页面,将触发TabSheetjsShow事件,该事件处理程序将日期编辑框的文字置为当前的日期,然后建立与数据库的连接,并执行查询语句select*fromxswl华北科技学院计算机系综合性实验报告第4页procedureTfmbook.TabSheetjsShow(Sender:TObject);beginetrq.text:=datetostr(date);open(adqxs,'select*fromxswl');end;单击借书按纽后执行借书的操作此时学生的借书量曾加一,而库存量减少一将在查询页面中看到iflength(trim(etssh.text))=8then//若输入的索书号是正确的beginbtjs.enabled:=false;//可执行借书操作adqup.SQL.Clear;//清空adqup组件的SQL语句//形成insert语句str:='insertintojywl(借书证号,ISBN,索书号,借书时间)values(';str:=str+quotedStr(adqxs.FieldVal借书证号'])+','+QuotedStr(dbtext7.caption)+','+Quotedstr(etssh.text)+','+QuotedStr(etrq.text)+')';adqup.SQL.add(str);adqup.Execsql;//执行SQL语句showmessage('借书成功');endelseshowmessage('索书号不是8位数');//出错提示图(二)还书页面当选择“借书证号”下拉列表项时,将触发DBLookupComboBox3Exit事件,该事件处理程序将查询选择的借书证号所代表的学生已借阅的图书的信息,从中选中要还的那本书,在下面的控华北科技学院计算机系综合性实验报告第5页件书名中对应显示这本书的名称如图所虱索书号为78978978的书名为安全工程学,单击“还书”按钮执行以下操作:bths.Enabled:=false;str:='deletefromjywlwhere借书证号='+QuotedStr(adqxs.FieldValues['借书证号']);str:=str+'and索书号='+QuotedStr(adqjy.FieldValues['索书号']);//形成删除指定记录的SQL语句adqup.SQL.Clear;adqup.SQL.Add(str);adqup.ExecSQL;//执行组件中的SQL语句adqjy.Active:=false;adqjy.Active:=true;showmessage('还书成功');单击“还书”按钮后,将触发bthsClick事件,该事件处理将从JYWL表中删除符合条件的记录图(三)查询界面当选择“查询”页面后,将触发TabSheetcxShow,根据选择的按钮不同显示不同的查询结果procedureTfmbook.rgcxClick(Sender:TObject);varstr:string;begincasergcx.ItemIndexof//指定按什么查询0:str:='select姓名as名称,借书证号fromxswl';//指定学生1:str:='select书名as名称,ISBNfrombookwl';//指定书籍华北科技学院计算机系综合性实验报告第6页2:str:='selectdistinct专业名as名称fromxswl';//指定专业end;aopen(adqxm,str);end;当选择单选按钮中的任意选项时,将触发rgcxClick,根据选择形成相应的查询语句,并建立与数据库的连接,执行查询,如图三所示,选中“王玲”,右边的Dbgrid框显示王玲借的书的书名,ISBN号等。指定学生时,DBimage框显示学生的照片。当选择“指定书籍”按钮后,显示所有借阅这本书的的学生的姓名,借书证号,ISBN号,书名,借书时间,DBimage框显示该本书的封面。当选择“指定专业”按钮后,显示该专业的学生的姓名,借书证号,所借阅的书的ISBN号,书名,借书时间,索书号等。当选择“维护”页面将触发TabSheetwhShow事件,单击“增加”按钮后sbinsert.Enabled:=false;//使“增加”按钮不可用adqwh.Insert;//加入一空记录btwh.Enabled:=true;//使“确认”按钮可用运行界面如图四所示:图(四)维护页面根据选择显示不同的表,再具体的添加,修改,删除其中的记录casergwh.ItemIndexof0:str:='select*fromxswl';//显示学生表华北科技学院计算机系综合性实验报告第7页1:str:='select*frombookwl';//显示图书表2:str:='select*fromjywl';//显示借阅表end;aopen(adqwh,str);当单击“增加”按钮后,将触发sbinsertClick事件,该时间将在adqwh组件中添加一条空记录,单击“删除”按钮后,将触发sbdeleteClick事件,这个事件分别调用xswl_delete,bookwl_delete,Jywl_delete存储过程,并执行删除操作。单击“修改”按钮后,对学生表,图书表的部分信息进行更新等。单击“确认”按钮后将触发btwhClick事件,根据维护操作的类型(修改/插入记录),分别执行xswl_update,bookwl_update,jywl_update或者xswl_delete,bookwl_delete,Jywl_delete存储过程。五、总结通过这次的综合性的实验发现了自己有很多的不足之处,特别是要把前台界面和后台语言分开,后台语言是SQL,前台界面用Delphi做,刚开始搞的我都不知道从何下手,尤其是前台语言都学的快忘了,什么东西该写在哪里都不记得了,就开始翻书看看,复习前面已经学过的知识还要把相应的数据库语句加入到对应的控件中,我知道自己学的不好,所以整个程序就是按照书上的步骤打出来的,在这个过程中随着做的深入,逐渐的完善表的结构,根据实际生活中的经验增加一些规则和约束,比如在建表的时候并没有考虑到借书数的限制,学生不超过5本,还有安全登陆的时候如果分为管理员和读者登陆,他们对应的权限上不同的等等,这样让自己去学会思考,虽然这个系统做的时候是一个理想化的系统,但还是尽量加进自己的思想,在调试的过程中才发现书上也有很多的错误,很多的代码执行不了,而且还少了一些代码,这样程序的功能就实现不了,比如在做对三个表的添加的时候,插入和更新是在同一个事件里,但插入并不真正实现把记录添加到表中,而且将插入和更新放在一起时会同时添加2条相同的记录,怎么改也改不出来,到最后就重新增加一个“修改”按钮来实现更新的功能,最重要的是能锻炼我调试的能力,要一块一块的调试,不能把所有的都打上去,那样所有的错误堆在一起,就不好发现错误,大大增加了调
本文标题:网络数据库综合性实验报告
链接地址:https://www.777doc.com/doc-2142665 .html