电子通讯录管理系统 毕业论文.doc_第1页
电子通讯录管理系统 毕业论文.doc_第2页
电子通讯录管理系统 毕业论文.doc_第3页
电子通讯录管理系统 毕业论文.doc_第4页
电子通讯录管理系统 毕业论文.doc_第5页
免费预览已结束,剩余19页可下载查看

下载本文档

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

文档简介

第 24 页 共 24页一、前言随着计算机的飞速发展,人们的生活、工作、学习越来越依赖于计算机,同学、朋友之间的联系也常常是通过计算机来操作,因而建立一个电子通讯录管理系统也就相应而生。在从多的软件开发平台中,以microsoft 的visual basic的开发平台较为简单,visual basic平台中有丰富的控件,可以很快地完成各种软件的开发界面,由于visual basic与microsoft access数据无缝链接,使开发一个数据库的软件更加简单,visual basic中的data控件可以直接和microsoft access的数据库绑定;dbgrid控件可以直观地显示出数据库中的信息,且visual basic中还可以直接引用sql结构化查询语句,对数据的查询往往只要一条语句便可完成,因此对于数据库编程,visual basic是较好的选择。visual basic软件开发平台也有它的缺点,它生成的软件所需要的附带文件太多,一般一个数据库管理软件要真正用起来,至少要4mb,而且还必须生成一个安装包才能其它机器运行,因此光会做一个软件,而不会“打包”,该软件也只能在有visual basic的环境下才能运行,所以它的可移植性相对较差些。电子通讯录主要是记载同学、朋友、同事、客户等之间的联系方式,它应该有输入、修改、查询、打印等功能,首先用microsoft access建立一个数据库,然后再用visual basic的data控件将数据库捆绑,再通过调用data控件的方法和相应属性的设置便可完成上面的一些功能。二、设计框架及思路1设计框架2设计思路21数据库建立用microsoft access建立一个名为“通讯录”的数据库,在库中有两张表,一张为“address”,其字段有姓名、通讯地址、联系电话、电子信箱、oicq五个;另一张表为“密码”,其字段有用户、密码;整个数据库加密。22 软件工程建立整个工程包括主窗口、输入及修改窗口、查询窗口、打印窗口、密码修改窗口、登录窗口五大块。各个窗口中主要使用数据控件data及dbgrid控件,其它为常用控件。23 软件打包在整个工程完成之后,生成exe文件,然后利用vb自带的安装向导,生成一个安装盘。三、工程实施1.界面设计1.1登录界面 该界面中共有7个控件,一个窗口,下表为窗口和控件的相应属性设置。 序号类别属性名属性值1form名称frmregistercaption电子通讯录管理系统登录窗口startupposition2 centerscreen2label名称label1caption请选择用户名:alignment1 right justifyforecolor&h00ff0000&(蓝色)3label名称label2caption请输入密码:alignment1 right justifyforecolor&h00ff0000&(蓝色)4command名称cmdconfirmcaption(&c)确定5command名称cmdexitcaption(&x)退出6text名称txtusertext7text名称txtpasswordpasswrodchar*8data名称passworddataconnect;pwd=19981105databasenamec:program files电子通讯录通讯录.mdb1.2主窗口界面 该界面中使用了菜单编辑器,一个父窗口,下表为窗口和菜单的相应属性设置。序号类别属性名属性值1mdiform名称frmmaincaption电子通讯录管理系统v1.0 设计人:王勇平 联系电话ackcolor&h00808000&windowstate2 maximized2菜单名称inputmenu标题(&i)数据输入名称askmenu标题(&a)数据查询名称printmenu标题(&p)数据打印名称passwordsetmenu标题(&w)密码设置名称exitmenu标题(&x)退出系统1.3 输入窗口界面 该界面中共有16个控件,一个窗口,下表为窗口和控件的相应属性设置。 序号类别属性名属性值1form名称frminputcaption电子通讯录输入窗口controlboxfalsestartupposition2 centerscreen2label名称inputlabel(0)caption姓名:alignment1 right justifyforecolor&h00ff0000&(蓝色)3label名称inputlabel(1)caption通讯地址:alignment1 right justifyforecolor&h00ff0000&(蓝色)4label名称inputlabel(2)caption联系电话:alignment1 right justifyforecolor&h00ff0000&(蓝色)5label名称inputlabel(3)caption电子信箱:alignment1 right justifyforecolor&h00ff0000&(蓝色)6label名称inputlabel(4)captionoicq:alignment1 right justifyforecolor&h00ff0000&(蓝色)7text名称txtfield(0)forecolor&h00ff0000&(蓝色)text8text名称txtfield(1)forecolor&h00ff0000&(蓝色)text9text名称txtfield(2)forecolor&h00ff0000&(蓝色)text10text名称txtfield(3)forecolor&h00ff0000&(蓝色)text11text名称txtfield(4)forecolor&h00ff0000&(蓝色)text12data名称inputdataconnect;pwd=19981105databasenamec:program files电子通讯录通讯录.mdbrecordsourceaddress13dbgrid名称inputgriddatasourceinputdataheadlines1.5rowheight300forecolor&h00ff0000&(蓝色)14command名称cmdsavecaption(&i)存库style1- graphicalpicture选取tooltiptext将数据存入库中15command名称cmddeletecaption(&d)删除style1- graphicalpicture选取tooltiptext删除当前数据16command名称cmdexitcaption(&x)退出style1- graphicalpicture选取tooltiptext退出1.4查询窗口界面 该界面中共有11个控件,一个窗口,下表为窗口和控件的相应属性设置。 序号类别属性名属性值1form名称frmaskcaption电子通讯录查询窗口controlboxfalsestartupposition2 centerscreen2label名称lblconditioncaption条件:alignment1 right justifyforecolor&h00ff0000&(蓝色)3text名称txtconditionforecolor&h00ff0000&(蓝色)text4check名称fieldcheck(0)caption姓名5check名称fieldcheck(1)caption通讯地址6check名称fieldcheck(2)caption联系电话7check名称fieldcheck(3)caption电子信箱8data名称askdataconnect;pwd=19981105databasenamec:program files电子通讯录通讯录.mdbreadonlytruerecordsourceaddress9dbgrid名称askgridallowupdatefalsedatasourceaskdataheadlines1.5rowheight300forecolor&h00ff0000&(蓝色)10command名称cmdfindcaption(&f)查找style1- graphicalpicture选取tooltiptext按所设条件查找11command名称cmdprintcaption(&p)打印style1- graphicalpicture选取tooltiptext打印12command名称cmdexitcaption(&x)退出style1- graphicalpicture选取tooltiptext退出1.5 打印窗口界面 该界面中共有16个控件,一个窗口,下表为窗口和控件的相应属性设置。 序号类别属性名属性值1form名称frmprintcaption电子通讯录打印窗口controlboxfalsewindowstate2 maxiziedmdichildtrue2label名称label1caption字体大小:alignment1 right justifyforecolor&h00ff0000&(蓝色)3label名称label2caption行间距:alignment1 right justifyforecolor&h00ff0000&(蓝色)4label名称label3caption页码:alignment1 right justifyforecolor&h00ff0000&(蓝色)5data名称printdataconnect;pwd=19981105databasenamec:program files电子通讯录通讯录.mdbrecordsourceselect * from address order by 姓名6dbgrid名称adjustgriddatasourceprintdata7command名称cmdprintcaption(&p)打印style1- graphicalpicture选取tooltiptext打印8command名称cmdupcaption(&u)上页style1- graphicalpicture选取tooltiptext上一页9command名称cmddowncaption(&d)下页style1- graphicalpicture选取tooltiptext下一页10command名称cmdexitcaption(&x)退出style1- graphicalpicture选取tooltiptext退出11combo名称fontsizecomboforecolor&h00ff0000&(蓝色)text10.512combo名称lineheightcomboforecolor&h00ff0000&(蓝色)text3mm13combo名称pagecomboforecolor&h00ff0000&(蓝色)text114picture名称picture1backcolor&h00808080&(深灰)autoredrawtrue15picture名称showwinbackcolor&h00ffffff& (白色)autoredrawtrue16vscroll名称vscroll1max10000min-1000value-450largechange100smallchange1001.6密码修改界面 该界面中共有7个控件,一个窗口,下表为窗口和控件的相应属性设置。 序号类别属性名属性值1form名称frmpasswordcaption密码startupposition2 centerscreen2label名称label1caption新密码:alignment1 right justifyforecolor&h00ff0000&(蓝色)3label名称label2caption验证:alignment1 right justifyforecolor&h00ff0000&(蓝色)4command名称cmdconfirmcaption(&c)确定5command名称cmdexitcaption(&x)退出6text名称txtpasswordpasswrodchar*7text名称txtcheckpasswrodchar*8data名称passworddataconnect;pwd=19981105databasenamec:program files电子通讯录通讯录.mdb2.程序代码编写2.1登录窗口代码 本窗口的代码相对较小,只要是判断输入的密码是否与数据库中的密码一致,若一致则打开主窗口,否则显示出错信息。该代码只要在cmdconfirm_click的鼠标单击事件中完成。主要代码如下:private sub cmdconfirm_click()passworddata.recordsource = select * from 密码 where 用户= & txtuser.text & and (密码= & txtpassword.text & or 密码=null) passworddata.refresh if passworddata.recordset.recordcount 1 then a = msgbox(密码不正确!请重输!, vbexclamation + vbokonly, 电子通讯录) exit sub elseif passworddata.recordset.recordcount = 1 then unload me frmmain.showend sub为了使输入者方便,还增加了光标定位程序,该功能主要在keydown事件中完成。光标定位主要是判断是否按下“光标移动键”或“回车键”,在visual basic中,是通过键的ascii值来判断的,某键的ascii值可用vbkey+键名来代替,如:上箭头可用vbkeyup来代替,通过if语句判断便可完成,详细见源程序。2.2主窗口代码 在主窗口中,主要是根据菜单,调用相应的窗口,用“窗口名.show”语句来完成,例如点击“数据输入”菜单子项的代码如下:private sub inputmenu_click()frminput.showend sub 在主窗口中,主要是根据菜单,调用相应的窗口,用“窗口名.show”语句来完成,例如点击“数据输入”菜单子项的代码如下:2.3输入窗口代码 输入窗口是系统中比较重要的窗口,要让使用者方便地输入数据,光标的移动就必须灵活、方便;而且是否入到数据库中要直观,修改也要比较方便。为了使光标定位程序编写较为简单,使用了控件数组即txtfield文本框控件数组,在程序中通过index的值来判断当前焦点在哪个文本框中,然后再根据keycode的值来决定将光标定位到哪个文本框中,光标定位用文本框的方法setfocus来完成,如:txtfield(index).setfocus。在数据输入完后,按下回车键,光标自动定到“存库”按钮上,此时再按下回车键便可将数据存入库中。保存数据时,是向数据库添加一条记录,这里使用了数据库捆绑控件data,先将data控件与数据库中的“address”表绑定,使用data控件中的“recordset”来操作数据库,data控件中,可用recordset.addnew来添加一条新记录,将文本框的文本赋给相应的字段即:recordset.fields(i).value = txtfield(i).text,可用一个循环语名来完成,最后,调用recordset.update语句来修改数据库。此外,使用了visual basic的dbgrid控件,通过该控件可以直接操作数据库里的数据,若发现数据库中某条记录有错,可直接在dbgrid控件中修改,数据库里的数据也相应的修改,还可以点中dbgrid网格中某一行,再调用data控件的recordset.delete可删除该条记录,当然这些操作都在于dbgrid与data控件必须绑定。具体代码可见源程序。2.4查询窗口代码 visual basic的data控件中的recordsource可直接使用sql查询语句,因此,对于查询可直接用sql语句来完成。当条件输入框txtcondition中输入查询的条件,并选中要查询的字段(通过fieldcheck的选择)时,按下“查找”按钮,便将查询的sql语句赋给data控件的recordsource,再将data控件与dbgrid控件绑定,查询的结果便直接显示到网格上了。在这里关键要生成sql语句,下面是生成sql语句的代码:private sub cmdfind_click()dim sqlstring as stringif txtcondition.text = then exit subsqlstring = select * from address whereif fieldcheck(0).value = 1 then sqlstring = sqlstring & 姓名 like* & _ txtcondition.text & * or if fieldcheck(1).value = 1 then sqlstring = sqlstring & 通讯地址 like* & _ txtcondition.text & * or if fieldcheck(2).value = 1 then sqlstring = sqlstring & 联系电话 like* & _ txtcondition.text & * or if fieldcheck(3).value = 1 then sqlstring = sqlstring & 电子信箱 like* & _ txtcondition.text & * or sqlstring = left(sqlstring, len(sqlstring) - 5)askdata.recordsource = sqlstringaskdata.refreshend sub 上面代码中,通过对fieldcheck的value是否等于1来判断是否是选中状态,若选中,则在sql语句中增加该字段的查询条件,在sql中使用like和通配符可进行模糊查找。 若想将查询出的结果打印出来,可以直接编写一段代码就行,在编写过程中,将打印机当成printer对象使用,在其后面使用print语句便可完成打印输出任务。2.5打印窗口代码 打印窗口是整个系统中设计最为复杂的,要通过自己编写代码来完成打印任务。在该窗口中,设计两个picturebox控件,一个作为背景,一个作为纸张;再设计一个滚动条,通过滚动条来完成纸张的移动;再设计一个dbgrid控件,通过dbgrid的标题行列宽的调整来控制输出的列宽。 在程序编制过程中,每次行间距、字体大小的改变都将影响整张纸的布局,因此每次都应计算行间距、字体大小的改变所引起各种参数的变化。打印参数主要有边距、行距、行数等,首先计算一页中的行数,可由下面代码完成:lineheight = val(lineheightcombo.text) * 56.7 / 2lines = (showwin.height - 2000) / (lineheight / 2 + showwin.textheight(陆)其次,计算总的页数,只要将总记录数除以每页的行数便可得到:if printdata.recordset.recordcount mod lines = 0 then totalpage = printdata.recordset.recordcount / lineselse totalpage = printdata.recordset.recordcount lines + 1end if 当各参数确定后,就要调用打印模块,在打印模块中,首先要确定要列的位置,这里我利用dbgrid的列宽来决定列的位置,通过一个循环,将dbgrid的列宽赋给对应的currentx的值:for j = 1 to .fields.count tempx = tempx + adjustgrid.columns(j - 1).width ps.currentx = tempx ps.print .fields(j - 1).name; next 具体实施时,先在picture控件上显示打印结果(预览),然后再输出。代码可参见附录的源程序。2.6密码修改窗口代码密码修改首先应有一个确认身份的过程,因此调用登录窗口,先验证是否有权修改,若身份符合,打开修改窗口,修改成功显示一个提示框。在这个窗口中,只要使用了data控件中的recordset.edit的方法。四、工程发布 界面和程序代码调试完后,将工程生成一个执行文件,该执行文件要在visual basic环境中才能运行,为了能让工程在其它机器上能运行,就必须进行发布,也就是说要做一个安装盘,此时可通过visual basic所带的“应用程序安装向导”来进行软件发布,按照提示一步步操作便可完成。五、系统试运行 将上面制作好的安装盘刻录到光盘中,或复制到三张磁盘里,然后到没有安装visual basic环境的机器上,点击盘中的“setup”应用程序,按提示安装,安装后在“程序”菜单中打开“电子通讯录管理系统”。再请一个不了解此程序的人自由地输入、查询、打印,看看系统是否正常运行,若有错则应重新调试。若上面步骤能顺利完成表明整个工程已经完成。六、帮助文件及使用手册完成作为一个完整的软件系统来说,帮助文件和使用手册是不能少的,帮助文件可以帮助初学者方便使用系统。visual basic应用程序的帮助文件可用word制作,先将帮助文件的文字和图片在word中编辑完成,然后保存为.rtf格式,再利用visual basic光盘中的hcw帮助文件制作系统,将其生成windows通过帮助文件格式,再与系统对接便可。由于该系统较为简单,因此略去了帮助文件的制作。七、致谢本系统制作过程中,得到祁云嵩老师的大力帮助,在此表示衷心的感谢。八、参考文献1 visual basic 程序设计快速入门 刘炳文著 人民邮电出版社2 visual basic 程序设计基础 段银田等著 高等教育出版社3 visual basic 参考手册 王克已编 人民邮电出版社4 sql使用指南 allen g.taylor著 吴言等译 电子工业出版社5 office 2000 中文版使用与技巧 高越朋等著 清华大学出版社九 附录(源程序)1. 登录窗口private sub txtpassword_keydown(keycode as integer, shift as integer) if keycode = vbkeyup then txtuser.setfocus if keycode = 13 then cmdconfirm_clickend subprivate sub txtuser_keydown(keycode as integer, shift as integer) if keycode = vbkeydown or keycode = 13 then txtpassword.setfocusend subprivate sub cmdexit_click() unload meend subprivate sub cmdconfirm_click() if txtuser.text = thena = msgbox(请输入你的用户名!, vbexclamation + vbokonly, 电子通讯录) exit sub end ifpassworddata.recordsource = select * from 密码 where 用户= & _ txtuser.text & and (密码= & _ txtpassword.text & or 密码=null) passworddata.refresh if passworddata.recordset.recordcount 0 and keycode = vbkeyup then txtfield(index - 1).setfocus txtfield(index - 1).selstart = 0 txtfield(index - 1).sellength = 10elseif index 4 and (keycode = vbkeydown or keycode = 13) then txtfield(index + 1).setfocus txtfield(index + 1).selstart = 0 txtfield(index + 1).sellength = 10elseif index = 4 and keycode = 13 then cmdsave_clickend ifend subprivate sub cmdsave_click()a = msgbox(真的将输入的数据存入到库中吗?, 36, 电子通讯录管理系统)if a 6 then exit subinputdata.recordset.addnewfor i = 0 to 4 on error goto abc inputdata.recordset.fields(i).value = txtfield(i).textnext iinputdata.recordset.updateinputdata.recordset.movelastfor i = 0 to 4 txtfield(i).text = next itxtfield(0).setfocusexit subabc: temp = inputdata.recordset.fields(i).name & 输入太多文字! a = msgbox(temp, 16, 电子通讯录管理系统)end subprivate sub inputgrid_headclick(byval colindex as integer)inputdata.recordsource = select * from address order by _ & inputdata.recordset.fields(colindex).nameinputdata.refreshend subprivate sub cmdexit_click() unload meend subprivate sub cmddelete_click() if inputdata.recordset.recordcount 1 then exit subtemp$ = 真的删除当前的“ & inputdata.recordset.fields(0).value & _ ”的记录吗? a = msgbox(temp$, 36, 电子通讯录管理系统) if a 6 then exit sub inputdata.recordset.delete inputdata.recordset.movenextend sub4. 查询窗口private sub cmdexit_click() unload meend subprivate sub cmdfind_click()dim sqlstring as stringif txtcondition.text = then exit subsqlstring = select * from address whereif fieldcheck(0).value = 1 then sqlstring = sqlstring & 姓名 like* &_ txtcondition.text & * or if fieldcheck(1).value = 1 then sqlstring = sqlstring & 通讯地址 like* &_ txtcondition.text & * or if fieldcheck(2).value = 1 then sqlstring = sqlstring & 联系电话 like* &_ txtcondition.text & * or if fieldcheck(3).value = 1 then sqlstring = sqlstring & 电子信箱 like* & _ txtcondition.text & * or sqlstring = left(sqlstring, len(sqlstring) - 5)askdata.recordsource = sqlstringaskdata.refreshend subprivate sub inputgrid_headclick(byval colindex as integer)inputdata.recordsource = select * from address order by &_ askdata.recordset.fields(colindex).name inputdata.refreshend subprivate sub cmdprint_click()a = msgbox(真的将所显示的结果打印输出吗?, 36, 电子通讯录管理系统)if a 6 then exit subwith askdata.recordset printer.fontname = 黑体 printer.fontsize = 14 printer.print tab(20); 通讯录 printer.print printer.fontsize = 11 printer.print tab(2); 姓名; tab(12); 通讯地址; tab(34); 联系电话;_ tab(49); 电子信箱 ; tab(69); oicq printer.print printer.fontname = 宋体 for i = 1 to .recordcountprinter.print tab(3); .fields(0).value; tab(13); .fields(1).value; _ tab(33); .fields(2).value; tab(48);.fields(3).value; _ tab(68); .fields(4).value printer.currenty = printer.currenty + 30 .movenext next i printer.enddoc end withend sub5. 打印窗口dim currentpage, totalpage, lineheight, lines as integerdim printflag as booleanprivate sub adjustgrid_colresize(byval colindex as integer, cancel as integer)printpreviewend subprivate sub downcom_click()currentpage = currentpage + 1printpreviewend subprivate sub exitcom_click()unload meend subprivate sub fontsizecombo_click()printsetprintpreviewend subprivate sub lineheightcombo_click()printsetprintpreviewend subprivate sub form_activate()if currentpage 1 then exit sub else currentpage = 1fontsizecombo.clearfor i = 0 to 20 step 0.5 fontsizecombo.additem format(9 + i, 0.0)nextfontsizecombo.text = 10.5lineheightcombo.clearfor i = 1 to 10 lineheightcombo.additem i & mmnextlineheightcombo.text = 3mmprintsetprintpreviewend subprivate sub pagecombo_click()currentpage = val(pagecombo.text)printpreviewend subprivate sub printcom_click()printflag = trueprintpreviewprintflag = falseend subprivate sub printset()if val(fontsizecombo.text) 9 then showwin.fontsize = 9else showwin.fontsize = val(fontsizecombo.text)end iflineheight = val(lineheightcombo.text) * 56.7 / 2lines = (showwin.height - 2000) / (lineheight / 2 + showwin.textheight(陆)if printdata.recordset.recordcount mod lines = 0 then totalpage = printdata.recordset.recordcount / lineselse totalpage = printdata.recordset.recordcount lines + 1end ifpagecombo.clearfor i = 1 to totalpage pagecombo.additem inext pagecombo.text = 1end subprivate sub upcom_click()currentpage = currentpage - 1printpreviewend subprivate sub vscroll1_change()showwin

温馨提示

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

评论

0/150

提交评论