实验报告(2017/2018学年第二学期)课程名称数据库系统实验名称小型MIS开发实验时间2018年6月1日指导单位计算机学院软件工程系指导教师程春玲学生姓名张颖班级学号B15041103学院(系)计软院专业软件工程1实验报告实验名称小型MIS开发指导教师程春玲实验类型设计实验学时4实验时间2018-06-01一、实验目的和要求(1)了解C/S结构的小型MIS的开发思路和过程(2)理解ODBC和ADO的作用(3)学习Delphi访问数据库的方法和表单Form的设计方法二、实验环境(实验设备)硬件:微型计算机软件:Windows操作系统、Delphi6(或更高版本),MSSQLServer或ORACLE10G三、实验原理及内容1.在MSSQLServer或ORACLE10G中创建一个存储航班信息的数据库;(1)打开程序MicrosoftSQLSERVER服务管理器,将服务器名选为local,服务选为SQLServer,然后刷新服务;(2)打开程序MicrosoftSQLSERVER企业管理器,打开MicrosoftSQLSERVERSQLServer组(local)(WindowsNT)数据库,右键“数据库”后就可以创建数据库B15041103,即在本地服务器上创建一个数据库B15041103。如下图所示:2实验报告2.在刚创建的数据库中,设计和创建实验所用到的数据库结构(三级模式结构);将该表导出为SQL语句后:ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[flight]')andOBJECTPROPERTY(id,N'IsUserTable')=1)3实验报告droptable[dbo].[flight]GOCREATETABLE[dbo].[flight]([航班号][char](10)COLLATEChinese_PRC_CI_ASNOTNULL,[起点][varchar](15)COLLATEChinese_PRC_CI_ASNULL,[终点][varchar](15)COLLATEChinese_PRC_CI_ASNULL,[日期][datetime]NOTNULL,[起飞时刻][char](6)COLLATEChinese_PRC_CI_ASNULL,[到达时刻][char](6)COLLATEChinese_PRC_CI_ASNULL,[剩余座位数][int]NULL,[票价][float]NULL,[折扣票数][float]NULL,[折扣率][float]NULL,[航班所属航空公司][varchar](20)COLLATEChinese_PRC_CI_ASNULL)ON[PRIMARY]GO3.启动Delphi,创建一个自己的Project,进行界面设计(1)Form1系统界面:系统启动时的界面,给不同的用户提供不同的选择,可以以此进入票务管理和票务查询子功能。具体操作为:建新表单Form1→拖放Button控件→设置控件属性→编写事件代码。(2)Form2登录界面:用户登录界面,输入用户名和密码,确认身份后,跳出操作界面,在此界面中,用户(管理员)可以进行航班数据维护和查询操作。具体操作为:建新表单Form2→拖放控件Label→设置控件属性→编写事件代码。4实验报告(3)Form3查询界面:按访问系统的用户的不同,对功能进行设置进行航班数据查询操作,但不能维护数据。具体操作为:建新表单Form→拖放控件:ADOConnection控件ADOQuery控件和DataSource控件→设置控件属性(连接数据库)→编写事件代码。4.通过ADO访问在MSSQLServer或ORACLE10G中创建的航班信息数据库本次报告对实验中所使用的控件名称、作用及属性和空间属性取值进行了详细的表格说明,表格按照控件执行的先后顺序依次列出:控件名称控件作用控件属性控件取值ADOConnection可对数据库下命令(设置SQL属性值)、存取同一数据库内不同表ConnectionString点击该属性后的“…”,在弹出的对话框中点击“Build”,选择希望连接的数据“MicrosoftOLEDBProviderforSQLServer”,点击“下一步”后,其中服务器名称可以选为“local”(复制本机的SQLSERVER服务器名),数据库选为事先在SQLSERVER中设计好的数据库B15041103。点击“测试连接”,如果“测试连接成功”5的内容。则点击“确定”后完成对ADOConnection控件的配置,否则就要返回检查。ADOQuery数据库程序操作的对象是数据库内单一的表。ConnectionADOConnection1SQLselect*fromflight;DataSource用于指明与数据控制组件链接的数据访问DataAccess组件。DataSetADOQuery1DBNavigator主要用于在数据集中进行记录导航和为用户操纵数据集中的记录提供一组简明的控制按钮。DataSourceDataSource1DBGrid以网格的形式显示指定数据库表中的全部记录的所有字段信息。DataSourceDataSource1ADOQuery数据库程序操作的对象是数据库内单一的表。ActiveTRUE以下是文字说明:本次实验需要连接数据库:利用MSSQLServer2000做后台数据库,通过ADO访问数据库,则方法与步骤如下:a)打开Delphi后,将一些控件拖到FORM中。其中ADOConnection控件和ADOQuery控件在ADO数据集组件中,DataSource在DataAccess数据访问组件中,DBNavigator和DBGrid在DataControl数据控制组件中;b)修改ADOConnection控件的ConnectionString属性,具体说明见表格;6c)修改ADOQuery控件属性。将Connection属性值改为ADOConnection1;将SQL属性值改为“select*fromflight;”;d)修改DataSource控件的DataSet属性。将该属性值改为:ADOQuery1;e)修改DBNavigator控件属性。将DataSource属性值设置为DataSource1;f)修改DBGrid控件属性。将DataSource属性值设置为DataSource1;g)最后将ADOQuery控件的Active属性值改为TRUE;最终显示成果如下图所示:要求登录数据库后输入密码如下图,只有在数据库成功连接时才能把Active属性值改为TRUE。在数据库中插入数据:5.写出实现各功能的响应事件、事件的核心代码,如插入、更新或删除事件等Form1:ProcedureTForm1.Button2Click(Sender:TObject);beginUnit3.Form3.DBNavigator1.VisibleButtons:=[];Unit3.Form3.FormCreate(Sender);Unit3.Form3.Show;7end;usesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,DBCtrls;procedureTForm1.Button1Click(Sender:TObject);BeginUnit3.Form3.DBNavigator1.VisibleButtons:=[nbFirst,nbPrior,nbNext,nbLast,nbInsert,nbDelete,nbEdit,nbPost,nbCancel,nbRefresh];Unit2.Form2.Show;end;Form2:【确定】按钮代码如下:procedureTForm2.Button1Click(Sender:TObject);beginif((Edit1.Text='sxn')and(Edit2.Text='sxn'))thenbeginUnit3.Form3.FormCreate(Sender);Unit3.Form3.Show;endelseshowmessage(‘请输入正确的用户名或密码!’);Edit1.Text:='';Edit2.Text:='';end;【取消】按钮代码如下:procedureTForm2.Button2Click(Sender:TObject);beginclose;end;Form3:【查询】按钮代码如下:procedureTForm3.Button1Click(Sender:TObject);8beginADOQuery1.Close;ADOQuery1.SQL.Clear;ADOQuery1.SQL.Add('select*');ADOQuery1.SQL.Add('fromflight');ADOQuery1.SQL.Add('where航班号='''+Edit1.Text+'''and日期='''+ComboBox1.Text+'-'+ComboBox2.Text+'-'+ComboBox3.Text+'''');ADOQuery1.Prepared;ADOQuery1.Open;ADOQuery1.Active:=true;end;【退出】按钮代码如下:procedureTForm3.Button2Click(Sender:TObject);beginclose;end;9实验报告四、实验小结(包括问题和解决方法、心得体会、意见与建议等)(一)实验中遇到的主要问题及解决方法创建主系统编写界面时完成双击按钮的执行时,由于实践指导书不够清晰的原因,代码中的,总是误写为.,导致程序无法正常运行,后来仔细观察后才知道错误所在。在创建本地数据库时,并没有在本地创建数据库,而是在别的项目下创建了数据库,所以导致了后来数据无法连接,经过一系列排查问题,最终解决了这个问题。(二)实验心得这个实验的过程不是很难,因为有实验指导书作为参考,但是实际上做实验的时候还是有很多自己没注意到的小毛病,比如说关键代码的,与.写错了,或者是单词拼写错误导致了程序无法正常运行。如果认真做四个课时的实验肯定是足够的。此外这个实验还拓宽了我的眼界。之前我一直以为很多软件包括APP在内是用C#或者JAVA实现的,数据库只是很简单的起到了一个后台的作用,现在发现基本上很多重要的大型的系统离开数据库就如同鸡肋一般。这个课程还是让我认识到了数据库在我们很多软件设计中的重要地位,学好数据库也是很重要的一项内容。五、支撑毕业要求指标点☑1.4-M掌握计算机科学与技术的专业知识,能将专业知识用于分析和解决计算机及应用领域的复杂工程问题。☑3.2-M能够根据用户需求,选取适当的研究方法和技术手段,确定复杂工程问题的解决方案。☑4.2-M能够根据实验方案,配置实验环境、开展实验,综合分析实验结果以获得合理有效的结论。☑5.1-H能够合理使用现代化信息工具。10六、指导教师成绩评价表评分细则评分项优秀良好中等合格不合格遵守实验室规章制度学习态度实验准备是否充分配置实验环境实验开展情况实验完成度实验结果的分析专业知识掌握情况选取适当方法和技术能力分析和解决工程问题能力使用现代化信息工具报告书写认真程度内容详实程度文字表达熟练程度其它评价意见本次实验能力达成评价(总成绩)批阅人日期