SQLServer数据库系统开发报告书_第1页
SQLServer数据库系统开发报告书_第2页
SQLServer数据库系统开发报告书_第3页
SQLServer数据库系统开发报告书_第4页
SQLServer数据库系统开发报告书_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE3SQLServer数据库系统开发报告书班级:学号:姓名:题目:通讯录管理系统提交时间:2008年6月7日计算机科学与应用系目录系统分析31.1通讯录管理系统需求分析31.2系统的主要功能模块31.3详细功能分析41.4开发工具和数据库接口51.5系统数据库分析5系统开发过程82.1创建SQLServer2000数据库82.2创建SQLServer2000数据库和PB的连接82.3主应用程序和主窗体设计82.3.1主应用程序82.3.2窗体设计82.4创建通信联系人基本信息管理窗体122.5创建通信年类别管理窗体192.6创建通讯联系人信息查询窗体212.7创建通讯类别信息查询窗体252.8创建数据备份窗体262.9创建数据恢复窗体272.10系统特色或关键技术实现28第一章系统分析1.1、通讯录管理系统需求分析现如今的社会人与人之间的联系是会来会频繁了,人的交友范围也越来越广,所有就需要的一个方便且功能齐全的系统软件来打理联系人的信息。该系统非常容易被接受,它简单易学,便于管理。通讯录管理系统的主要目标是帮助用户更方便地管理自己的通讯信息.一个完整的通讯录管理系统应该具有增加、删除、修改、查找联系人信息等基本功能,为用户提供通讯录管理、查询、系统维护和帮助功能.1、系统说明系统名称:通讯录管理系统任务提出单位:郑州航空工业管理学院计算机系。开发单位:通讯录管理系统开发小组2、需求规定联系人基本信息:对联系人信息进行录入、查询、分类、输出等。通讯类别基本信息:对通讯类别信息的录入、查询等。1.2、系统的主要功能模块根据以上介绍,可以将通用通讯录管理系统所必备的功能归纳如下图所示,其中每个功能都由若干相关联的子功能模块组成.1.3、详细功能分析1.通讯录管理包括通讯录联系人管理和通讯类别管理.同学录联系人管理:完成对联系人编号、姓名、性别、类别、家庭电话、手机号、邮箱、家庭地址、工作单位、籍贯等联系人基本信息的录入、删除、修改等功能.通讯类别管理:完成对通讯类别基本信息的录入、删除、修改等功能.2.查询包括通讯联系人查询和通讯类别信息查询.通讯联系人查询:完成按联系人编号查找某个联系人的基本信息,按姓名查找某个或某几个联系人的基本信息,按类别查找某类别的所有联系人的基本信息,按出生日期找到某个出生日期范围内的所有联系人的信息,等等.通讯类别信息查询:按类别名查找某类别的信息.3.系统维护包括数据备份、数据恢复等辅助管理功能.数据备份:完成对联系人基本信息、通讯类别信息等信息的备份。数据恢复:完成对联系人基本信息、通讯类别信息等信息的恢复。4.帮助包括系统帮助和关于功能。系统帮助:对如何使用本系统和使用过程中出现的问题提供必要的帮助信息。关于:有关本系统的一些开发信息、技术支持信息、版权信息等。1.4、开发工具和数据库接口该通讯录管理系统通过PowerBuilder和SQLServer开发。通过PB访问后台数据库首先要建立数据源,解决数据库的连接问题,在PB中,与数据库的连接是通过ODBC实现的。实现代码如下://Profiletxl_proSQLCA.DBMS="ODBC"SQLCA.Database="txl"SQLCA.ServerName="F194776DEBC04D3"SQLCA.LogId="sa"SQLCA.LogPass="88"SQLCA.AutoCommit=FalseSQLCA.DBParm="ConnectString='DSN=txl;UID=sa;PWD=88'"connectusingSQLCA;ifSQLCA.SQLCode<>0then messagebox("连接失败","不能连接数据库!"+SQLCA.sqlerrtext) returnendif1.5、系统数据库分析1、数据库该通讯录管理系统的数据库名为txl。创建该数据库的T-SQL语句如下:CREATEDATABASEtxlON(NAME='txl_data',FILENAME='e:\学习工具\sql\0\MSSQL\data\txl.mdf',SIZE=5MB,MAXSIZE=50MB,FILEGROWTH=10%)LOGON(NAME='txl_Log',FILENAME='e:\学习工具\sql\0\MSSQL\data\txl_Log.ldf,SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB)GO2、数据表根据系统分析可知,联系人基本信息表和通讯类别信息表是系统关键的表。系统共需3张表用途分别如下所示.联系人基本信息表(lxrjbxxb)基本信息等.通讯类别信息表(txlbxxb)基本信息等.用户表(yhb)保存用户的基本信息等,如用户名和密码.创建通讯类被信息表:usetxlcreatetabletxlbxxb(lbmchar(10)notnullconstraintlbm_pkprimarykey,lxrsint,)go创建联系人基本信息表:createtablelxrjbxxb(bhchar(8)notnullconstraintbh_pkprimarykey,xmchar(10)notnull,xbchar(2),lbmchar(10)notnullforeignkeyreferencestxlbxxb(lbm),csrqsmalldatetime,jgchar(10),xlchar(8),jtdhvarchar(12),jtdzvarchar(50),gzdwvarchar(50),yxvarchar(50),sjhchar(11),grjlvarchar(200))go创建用户表:createtableyhb(yhmchar(10)constraintyhm_pkprimarykey,mmvarchar(8))Go第二章系统开发过程2.1创建SQLServer2000数据库在查询分析器中输入上面创建数据库和表的T-SQL语句即可创建数据库txl和3个表。2.2创建SQLServer2000数据库和PB的连接(1)、新建操作xctxl数据库数据源txl,具体步骤在此不说明。(2)、新建Profile:xstxl_pro与数据源相连。2.3主应用程序和主窗体设计2.3.1主应用程序在应用程序xstxl的open()事件中添加代码,用于和数据库的连接,具体代码如下://Profiletxl_proSQLCA.DBMS="ODBC"SQLCA.Database="txl"SQLCA.ServerName="F194776DEBC04D3"SQLCA.LogId="sa"SQLCA.LogPass="88"SQLCA.AutoCommit=FalseSQLCA.DBParm="ConnectString='DSN=txl;UID=sa;PWD=88'"connectusingSQLCA;ifSQLCA.SQLCode<>0then messagebox("连接失败","不能连接数据库!"+SQLCA.sqlerrtext) returnendifopen(w_fm)//打开封面窗口2.3.2窗体设计(1)创建封面窗体在w_fm的open()事件中添加以下代码:timer(1)。在w_fm的timer()事件中添加以下代码:open(w_yfzc)timer(0)close(w_fm)上述代码用于实现在运行系统时,开始会出现一个封面窗体,过一会即出现一个用于注册用户的窗体,并关闭封面窗体。封面界面如下:(2)创建用户注册窗体:在此须创建一个数据窗口对象d_yhzc,在用户注册窗体中用一个数据窗口控件来与d_yhzc关联。界面如下:代码设计如下:1、“确定”按钮cb_1的click事件代码:integerli_row,ll_rowcountll_rowcount=dw_1.rowcount()ifll_rowcount=1then li_row=dw_1.insertrow(0) dw_1.scrolltorow(li_row)dw_1.update()else messagebox("警告","用户已注册")endifopen(w_dl)//打开登陆窗体close(parent)//关闭当前窗体2、“退出”按钮cb_2的click事件代码:ifdw_1.rowcount()=1then messagebox("提示","还未注册用户!") returnelseopen(w_dl)close(parent)endif(3)、创建登陆系统窗体界面如下:代码设计如下:1、“确定”按钮cb_1的click事件代码;integerli_countstringls_yhm,ls_mm,ls_mmdals_yhm=trim(sle_1.text)ls_mm=trim(sle_2.text)selectcount(*) into:li_count fromyhb whereyhm=:ls_yhm;ifli_count<1then messagebox("提示!","请输入正确的用户名!") sle_1.setfocus() returnendifselectmm into:ls_mmda fromyhb whereyhm=:ls_yhm;ifls_mm<>trim(ls_mmda)then messagebox("提示","密码输入错误,请重新输入!") sle_2.setfocus() returnelse open(w_mainframe) close(parent)endif2、“清除”按钮cb_2的click事件代码:sle_1.text=""sle_2.text=""sle_1.setfocus()创建主界面:此界面是用PB选单和数据窗口来实现的。界面如下:2.4创建通信联系人基本信息管理窗体在该窗体中有3个数据窗口控件dw_1、dw_2、dw_lxrjbxxfl,其相应的数据窗口对象分别为d_txlb、d_xrjbxxcx_lbm、dw_xrjbxxfl,这3个数据窗口对象的具体创建在此不再说明。界面如下:代码设计如下:1、在dw_1的rowfocuschanged事件中添加代码:ifcurrentrow>0then this.selectrow(0,false) this.selectrow(currentrow,true) dw_2.retrieve(this.object.lbm[currentrow])endif用于与dw_2建立关联,当点击某一类别名时在dw_2中会显示出属于此类别名的联系人。2、在dw_2的doubleclicked事件中添加代码:longrownumberdw_2.selectrow(0,false)dw_2.selectrow(dw_2.getrow(),true)dw_2.setrowfocusindicator(off!)rownumber=dw_2.getrow()ls_lxrbh=getitemstring(dw_2,rownumber,"bh")open(w_lxrjbxx)当双击dw_2中某一联系人时会弹出一个显示联系人基本信息的窗体w_lxrjbxx,此窗体界面如下:3、在“首记录”按钮的clicked事件中添加代码:dw_lxrjbxxfl.scrolltorow(1)//显示数据窗口控件的第一条记录4、在“上一条”按钮的clicked事件中添加代码:longll_rowll_row=dw_lxrjbxxfl.getrow()ll_row--ifll_row>=1then dw_lxrjbxxfl.scrolltorow(ll_row)else messagebox("系统提示","已经到首记录!")endif5、在“下一条”按钮的clicked事件中添加代码:longll_row,ll_lastrowll_row=dw_lxrjbxxfl.getrow()ll_lastrow=dw_lxrjbxxfl.rowcount()ll_row++ifll_row<ll_lastrowthen dw_lxrjbxxfl.scrolltorow(ll_row)else messagebox("系统提示","已经到最后一条记录!")endif6、在“尾记录”按钮的clicked事件中添加代码:dw_lxrjbxxfl.scrolltorow(dw_lxrjbxxfl.rowcount()-1)7、在“删除”按钮的clicked事件中添加代码:integerll_rowwll_roww=dw_lxrjbxxfl.getrow()save_lbm=dw_lxrjbxxfl.getitemstring(ll_roww,"lbm")//dw_lxrjbxxfl.deleterow(0)strings_bhintnums_bh=dw_lxrjbxxfl.getitemstring(ll_roww,"bh")num=messagebox("删除记录","确定要删除",Question!,YesNoCancel!,3)ifnum=1then deletefromlxrjbxxb wherebh=:s_bh; messagebox("提示","删除成功!")else ifnum=2then return endifendifintnumberifdw_lxrjbxxfl.update()=1then commit; selecttxlbxxb.lxrs into:number fromtxlbxxb wheretxlbxxb.lbm=:save_lbm; number=number-1 updatetxlbxxbsetlxrs=:number wheretxlbxxb.lbm=:save_lbm;else rollback;endif在“增加联系人”按钮的clicked事件中添加代码:open(w_lxryjbxxgl)//打开增加联系人窗体创建增加联系人窗体界面如下:代码设计如下:A、在“录入”按钮的clicked事件中添加代码:ll_row=dw_1.insertrow(0)dw_1.scrolltorow(ll_row)B、在“清空”按钮的clicked事件中添加代码:dw_1.deleterow(0)C、在“保存”按钮的clicked事件中添加代码:stringsave_lbmstrings_bhs_bh=dw_1.getitemstring(ll_row,"bh")ifisnull(s_bh)ors_bh=''then messagebox("提示","编号不能为空!") returnelseiflen(s_bh)<>8then messagebox("提示","编号应为8位!") returnelseifdw_1.update()=1then commit; save_lbm=dw_1.getitemstring(ll_row,"lbm") selecttxlbxxb.lxrs into:number fromtxlbxxb wheretxlbxxb.lbm=:save_lbm; number=number+1 updatetxlbxxbsetlxrs=:number wheretxlbxxb.lbm=:save_lbm;else rollback;endifendifD、在“退出”按钮的clicked的事件中添加代码:close(w_lxryjbxxgl)E、在w_lxrjbxxgl的closequery事件中添加代码:integerli_rcdw_1.accepttext()ifdw_1.modifiedcount()>0then li_rc=messagebox("提示","是否保存修改?",Question!,YesNoCancel!,3) ifli_rc=1then cb_3.triggerevent(clicked!) return0 elseifli_rc=2then return0 else return1 endifelse returnendif在“修改”按钮的clicked事件中添加代码integerll_rowwmessagebox("警告!","不能修改编号和类别名!")strings_bh,s_xm,s_xb,s_lbm,s_jtdh,s_grjl,s_sjh,s_jtdz,s_gzdw,s_jg,s_xl,s_yxdated_csrqdw_lxrjbxxfl.accepttext()ll_roww=dw_lxrjbxxfl.getrow()s_bh=dw_lxrjbxxfl.getitemstring(ll_roww,"bh")s_xm=dw_lxrjbxxfl.getitemstring(ll_roww,"xm")s_xb=dw_lxrjbxxfl.getitemstring(ll_roww,"xb")s_lbm=dw_lxrjbxxfl.getitemstring(ll_roww,"lbm")s_jtdh=dw_lxrjbxxfl.getitemstring(ll_roww,"jtdh")s_grjl=dw_lxrjbxxfl.getitemstring(ll_roww,"grjl")s_sjh=dw_lxrjbxxfl.getitemstring(ll_roww,"sjh")s_gzdw=dw_lxrjbxxfl.getitemstring(ll_roww,"gzdw")s_jg=dw_lxrjbxxfl.getitemstring(ll_roww,"jg")s_xl=dw_lxrjbxxfl.getitemstring(ll_roww,"xl")s_yx=dw_lxrjbxxfl.getitemstring(ll_roww,"yx")updatelxrjbxxbsetxm=:s_xm,xb=:s_xb, //lbm=:s_lbm, jtdh=:s_jtdh, grjl=:s_grjl, sjh=:s_sjh, gzdw=:s_gzdw, jg=:s_jg, xl=:s_xl, yx=:s_yx, csrq=:d_csrq wherebh=:s_bh;//dw_lxrjbxxfl.retrieve()ifsqlca.sqlcode=0then messagebox("提示","信息修改成功")endif在“打印”按钮的clicked事件中添加代码dw_lxrjbxxfl.print()2.5创建通讯类别管理窗体可以在这个窗口中添加新的类别名,在这个窗体中有一个数据窗口控件dw_1,dataobject属性为d_txlb,界面如下:代码设计如下:在“新增”按钮的clicked事件中添加代码:strings1s1=trim(sle_1.text)integerll_rowwll_roww=dw_1.insertrow(0)dw_1.scrolltorow(ll_roww)dw_1.setitem(ll_roww,1,s1)在“保存”按钮的clicked事件中添加代码:dw_1.update()strings1integers2=0s1=trim(sle_1.text)updatetxlbxxbsetlxrs=:s2wheretxlbxxb.lbm=:s1;在关闭按钮的clicked事件中添加代码:close(w_txlbgl)在w_txlbgl的closequery事件中添加代码:integerli_rcdw_1.accepttext()ifdw_1.modifiedcount()>0then li_rc=messagebox("提示","是否保存修改?",Question!,YesNoCancel!,3) ifli_rc=1then cb_4.triggerevent(clicked!) return0 elseifli_rc=2then return0 else return1 endifelse returnendif2.6创建通讯联系信息查询窗体此窗体由pb的选项卡实现,其中有四个数据窗口控件dw_bh、dw_xm、dw_lbm、dw_csrq,它们的dataobject属性为d_lxrjbxxcx_bh、d_lxrjbxxcx_xm、d_lxrjbxxcx_lbm、d_lxrjbxxcx_csrq。界面如下:代码设计如下:在w_txryxxcx的open事件中添加代码:tab_1.tabpage_bh.dw_bh.settransobject(SQLCA)tab_1.tabpage_xm.dw_xm.settransobject(SQLCA)tab_1.tabpage_lbm.dw_lbm.settransobject(SQLCA)tab_1.tabpage_csrq.dw_csrq.settransobject(SQLCA)tab_1.tabpage_bh.dw_bh.insertrow(0)在dw_bh中“查询”按钮的clicked事件中添加代码:stringls_bhlongll_rowils_bh=trim(em_bh.text)ifls_bh=''orisnull(ls_bh)then messagebox("查询提示","请输入编号!") em_bh.setfocus() returnelseiflen(ls_bh)<>8then messagebox("查询提示","编号应为8为!") em_bh.setfocus() returnendifll_rowi=dw_bh.retrieve(ls_bh)ifll_rowi<1then messagebox("查询提示","未找到指定记录,请确认编号正确后重新查询!")endif em_bh.setfocus()在dw_xm中“查询”按钮的clicked事件中添加代码:stringls_xmlongll_rowils_xm=trim(sle_xm.text)ifls_xm=''orisnull(ls_xm)then messagebox("查询提示","请输入联系人姓名!") sle_xm.setfocus() returnendif//ls_xm="%"+ls_xmll_rowi=dw_xm.retrieve(ls_xm)ifll_rowi<1then messagebox("查询提示","未找到指定记录,请确认姓名正确后重新查询!")endif sle_xm.setfocus()在dw_lbm中“查询”按钮的clicked事件中添加代码:stringls_lbmlongll_rowils_lbm=trim(ddlb_lbm.text)ifls_lbm=''orisnull(ls_lbm)then messagebox("查询提示","请输入联系人类别名!") ddlb_lbm.setfocus() returnendif//ls_lbm="%"+ls_lbmll_rowi=dw_lbm.retrieve(ls_lbm)ifll_rowi<1then messagebox("查询提示","未找到指定记录!")endif ddlb_lbm.setfocus()在dw_csrq中“查询”按钮的clicked事件中添加代码:dateld_start,ld_endlongll_rowiifisdate(em_start.text)then ifisdate(em_end.text)then ld_start=date(em_start.text) ld_end=date(em_end.text) ll_rowi=dw_csrq.retrieve(ld_start,ld_end) ifll_rowi<1then messagebox("查询提示","未找到指定记录,请确认输入后重新查询!") em_start.setfocus() endifelse messagebox("查询提示","请重新输入结束日期!") endifelse messagebox("查询提示","请重新输入开始日期!")endif2.7创建通讯类别信息查询窗体在这个w_txlbxxcx窗体中有一个数据窗口控件dw_lbmcx,其dataobject属性为d_txlbxxcx,界面如下:代码设计如下:1、在“查询”按钮的clicked事件中添加代码:stringls_lbmcxlongll_rowls_lbmcx=trim(sle_1.text)ifls_lbmcx=''orisnull(ls_lbmcx)then messagebox("查询提示","请输入联系人类别名!") sle_1.setfocus() returnendif//ls_lbmcx="%"+ls_lbmcxll_row=dw_lbmcx.retrieve(ls_lbmcx)ifll_row<1then messagebox("查询提示","未找到指定记录,请确认类别名正确后重新查询!")endif sle_1.setfocus()在w_txlbxxcx的open事件中添加代码:dw_lbmcx.settransobject(sqlca)2.8创建数据备份窗体这个窗口w_sjbf是用PB中的备份功能制作的,系统有几个表,这里就有几个数据窗口控件,界面如下:代码设计如下:在w_sjbf的open事件中添加代码:dw_1.settransobject(sqlca)dw_1.retrieve()dw_2.settransobject(sqlca)dw_2.retrieve()dw_3.settransobject(sqlca)dw_3.retrieve()在“确定”按钮的clicked事件中添加代码:choosecaseddlb_1.text case"联系人基本信息表" dw_1.saveas() case"通讯类别信息表" dw_2.saveas() case"用户表" dw_3.saveas()endchoose在“取消”按钮的clicked事件中添加代码:close(parent)2.9创建数据恢复窗体数据恢复窗体的创建步骤和创建数据备份窗体的相似,界面如下:代码设计如下:在“确定”按钮的clicked事件中添加代码:stringls_fileintli_ssetnull(ls_file)choosecaseddlb_1.text case"联系人基本信息表" ifdw_1.rowcount()>0then messagebox("警告","该数据库有数据,无法执行数据恢复操作!") else dw_1.importfile(ls_file) dw_1.update() endif case"通讯类别信息表" ifdw_2.rowcount()>0then messagebox("警告","该数据库有数据,无法执行数据恢复操作!") else dw_2.importfile(ls_file) dw_2.update() endif case"用户表" ifdw_3.rowcount()>0then messagebox("警告","该数据库有数据,无法执行数据恢复操作!") else dw_3.importfile(ls_file) dw_3.update() endifendchoose在“取消”按钮的clicked事件中添加代码:close(parent)其他简单窗体的创建过程在此不在加以说明。2.10系统特色或关键技术实现通讯录管理系统的特色是它实现起来简单,易明白,方便,不复杂。在这个通讯录管理系统中的“通讯类别信息查询”中用于查询联系人类别的类别名及属于各个类别的联系人的总数。在通讯类别信息表中的“联系人数”初始值为0,当在增加联系人的窗口中增加一个联系人时,通讯录信息表中的“联系人数”会根据所增加的联系人所属类别名自动增加,这个功能由在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论