课程设计论文VCAccess通讯录课程设计论文.doc
攀枝花学院学生课程设计(论文)题 目: 通 讯 录 学生姓名: 学 号: 所在院(系): 计 算 机 学 院 专 业: 信息与计算科学 班 级: 04级信息与计算科学 指 导 教 师: 职称: 助 教 2007 年 6 月 22日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书题目通 讯 录1、课程设计的目的 本次开设的课程设计为了进一步筑固VC+基础知识, 熟悉VC+开发的硬件及软件环境,掌握应用程序的开发过程,通过面向对象课程设计的学习,使学生能够更进一步地熟练掌握与运用 VC+开发环境,以及加增培养创新型就业人才的理论知识与实际实践相合的技能。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)内容和要求:1.主要功能:(1)能建立、修改和增删学生通讯录(2)能够按多种方式进行查询2.要求:界面友好,易于操作3.需要一台装有Visual VC+ 6.0的电脑3、主要参考文献1 马云升.VC+下声卡低层音频服务的编程技术.北京希望电子出版社.2001年3月1日2 杨淑莹 .VC+图像处理程序设计. 清华大学出版社,北京交通大学出版社 2005年4月25日3 杨淑莹.图像模式识别:VC+技术实现. 清华大学出版社,北京交通大学出版社 2005年5月1日4 祁云嵩.VC+程序设计解析与训练. 华东理工大学出版社.2005年8月16日5 汪兵.EVC高级编程及其应用开发:Embedded Visual C+嵌入式编程. 中国水利水电出版社. 2005 年7月15日4、课程设计工作进度计划1)15周星期一,选课题2)15周星期二15周星期三,查找参考书3)15周星期四16周星期二,代码编写4)16周星期三16周星期四,写论文5) 16周星期五检查材料和程序结果指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月 日课程设计(论文)指导教师成绩评定表题目名称评分项目分值得分评价内涵工作表现20%01学习态度6遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。02科学实践、调研7通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。能力水平35%04综合运用知识的能力10能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。06设计(实验)能力,方案的设计能力5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。07计算及计算机应用能力5具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10具有较强的数据收集、分析、处理、综合的能力。成果质量45%09插图(或图纸)质量、篇幅、设计(论文)规范化程度5符合本专业相关规范或规定要求;规范化符合本文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名: 年月日摘 要通过两周的课程设计:我所开发编写的是一个通讯录. (1)软件概要:通讯录管理系统采用ODBCAccess数据库作为软件的后台,用微软公司的快速开发工具Microsoft visual c+6.0开发软件的前台界面及功能实现部分,用SQL(结构化查询语言)实现对数据库中数据的查询,插入,以及删除等操作。用户可以以姓名,按模糊查找和精确查找作为查询标准对数据库进行查询。考虑到该通讯录为从人使用,所以具备设置登录密码以及权限设置的功能。(2)开发纲要:Microsoft visual c+6.0中具有MFC功能,所以用它开发通讯录是效率是非常高的;而且它的功能非常强大.用(Microsoft visual c+6.0/MFC开发软件的整体流程如下:(1)将合适的控件加入窗体(2)修改控件属性并为控件添加响应事件的代码(3)调试软件(4)完成开发,进入维护阶段.关键词 MFC,VC+,ODBC1通讯录制作的目的和要求1.1通讯制作的目的由于:即将走入社会,已经认识的或者将要认识的人会越来越多,纸质的通讯录已经不能满足我们的要求,更新麻烦,查询困难等缺点是纸质通讯录所不能克服的。在此情况下,迫切需要一个电子版的通讯录来满足我们的需求 1.2 通讯录制作的要求通讯录管理系统采用ODBCAccess数据库作为软件的后台,用微软公司的快速开发工具Microsoft visual c+6.0/MFC开发软件的前台界面及功能实现部分,制作的通讯录能够用SQL(结构化查询语言)实现对数据库中数据的多功能查询,插入,以及删除等操作,而且要求界面良好. 2通讯录制作的内容及要求2.1通讯录制作的内容制作一个具有:(1)能建立、修改和增删学生通讯录 (2)能够按多种方式进行查询 (3)界面友好2.2通讯录制作的要求通讯录制作所需要的环境:开发工具:Microsoft visual c+6.0/MFC开发平台:Windows XP Professional数据库:Access、ODBC 3 通讯录开发过程和方法3.1数据库引擎(存取规范)的选择Microsoft visual c+6.0本身自带有ODBC数据库引擎、许多函数及控件,可以用来存取很多类型的数据库,如Access,ODBC等数据库,鉴于其开发软件时设置的困难及软件发布时附带的文件容量(大约要9M多)太大,故使用微软的数据库操作引擎ODBC。ODBC简介:MFC的ODBC类对较复杂的ODBC API进行了封装,提供了简化的调用接口,从而大大方便了数据库应用程序的开发。程序员不必了解ODBC、API和SQL的具体细节,利用ODBC类即可完成对数据库的大部分操作。MFC的ODBC类主要包括CDatabase类:主要功能是建立与数据源的连接。CRecordset类:该类代表从数据源选择的一组记录(记录集),程序可以选择数据源中的某个表作为一个记录集,也可以通过对表的查询得到记录集,还可以合并同一数据源中多个表的列到一个记录集中通过该类可对记录集中的记录进行滚动、修改、增加和删除等操作。CRecordView类:提供了一个表单视图与某个记录集直接相连,利用对话框数据交换机制(DDX)在记录集与表单视图的控件之间传输数据。该类支持对记录的浏览和更新,在撤销时会自动关闭与之相联系的记录集。CFieldExchange类:支持记录字段数据交换(DFX),即记录集字段数据成员与相应的数据库的表的字段之间的数据交换。该类的功能与CDataExchange类的对话框数据交换功能类似。概括地讲,CDatabase针对某个数据库,它负责连接数据源;CRecordset针对数据源中的记录集,它负责对记录的操作;CRecordView负责界面,而CFieldExchange负责CRecordset与数据源的数据交换。3.2数据库操作方法的选择采用Microsoft visual c+6.0内嵌SQL语言的方式以及ODBC接口,采用参数传递,变量传递的方法解决数据库的动态查询。3.3具体过程3.3.1数据库建立(鉴于通讯录管理系统的数据的单一性以及容量小等特点,采用单数据表的形式建立数据库)数据库名:AddressBook.mdb,数据表名:AddressBook表结构:姓名,性别,关系,联系电话,手机号码,家庭住址,工作单位,E-mail,QICQ。3.3.2数据库连接从控件面板上将ADOConnection控件拖拉到窗体。ADOConnetion的ConnectString为Provider=Microsoft.Jet.OLEDB.4.0;Password=""User ID=Admin;Data Source=dataAddressBook.mdb;3.3.3连接语句与部分函数数据库查询操作:利用SQL语言中的SELECT查询语句来实现,比如说查询条件是性别为男的所有人,数据表为AddressBook,则查询语句如下(Select * from Address where 性别=男) ;如果在程序中查询的条件是变化的,那么可以用变量传递的方式解决:如在窗体上有一输入框(Edit1)供软件使用者输入查询的条件值,则查询功能实现代码如下:var Condition:String /定义一个为Conditon的查询条件变量 Condition:=Trim(Form1.Edit1.Text) /*Condition的值为窗体上的输入框输入的值,Trim为去除输入的值中空格的函数*/查询代码:SELECT * from Addressbook where 性别=+Condition+;/用字符串相加的形式来实现变量传递,VC+中用表示单引号;添加对应的按钮、事件及属性:CModifyDlg:OnDoubleclickedOk() /提 交voidCModifyDlg:OnClearButton() /重 置void CModifyDlg:OnCancel() /取 消CMainDlg:CMainDlg(CWnd* pParent /*=NULL*/):CDialog(CMainDlg:IDD, pParent) /查询类别void CMainDlg:OnOK() /查 询void CMainDlg:OnRadioMod() /删除记录void OnViewAll(); /响应菜单项和工具栏按钮消息,在列表中所有联系人的资料CMainDlg:OnRadioSearch() /响应搜索按钮单击消息并执行搜索InitListCtrl(); /初始化列表控件UpdateListCtrl(); /更新列表控件SaveAsFile(Person&); /储存单个联系人资料到文件SaveAllAsFile(); /储存列表中所有联系人的资料到文件LoadFromFile(); /从文件载入数据,构造链表ViewSearchResult(CList<Person,Person&>*); /在列表控件内显示搜索3.3.4函数的算法描述LoadFromFile()实现的字符串分割算法:nIndex=0; nLast=0; i=0; while (nIndex != -1) nIndex = s.Find(_T("|"), nLast); if(nIndex != -1) strTemp = s.Mid(nLast, nIndex - nLast); nLast = nIndex + 1; else strTemp = s.Mid(nLast, s.GetLength() - nLast); pri = strTemp; i+; OnBnClickedButtonSearch()实现的搜索算法:pos = m_nList.GetHeadPosition();CList<Person, Person&> *p_L = new CList<Person, Person&>for (;i<m_nList.GetCount();i+) p=m_nList.GetNext(pos);if (p.name.Find(search) >= 0) m_dlgListCtrl.SetItemState(i,LVIS_SELECTED, LVIS_SELECTED); m_dlgListCtrl.EnsureVisible(i,false);p_L->AddTail(p); 3.3.5 开发重难点软件查询功能,尤其是根据姓名进行查询的功能的实现姓名数据的比较姓名型数据查询的处理解决办法:将姓名型数据的值作为字符串进行比较数据备份与导入功能,将数据库复制一份,作为数据库备份使用。3.3.6关键性代码/名称:构造函数/功能:对象产生则调用此函数/a. CMainDlg:CMainDlg(CWnd* pParent /*=NULL*/): CDialog(CMainDlg:IDD, pParent)/AFX_DATA_INIT(CMainDlg)m_input = _T("");m_field = _T("");/AFX_DATA_INIT/查找记录并按ID升序排列m_query.Format("select * from person order by ID ASC");RefreshData();/为操作区增加工具条提示m_addTip.Create(this);CButton* m_radio_add=(CButton*)GetDlgItem(IDC_RADIO_ADD);m_addTip.AddTool(m_radio_add,"单击此按钮,可以为通讯录增加记录。");m_modTip.Create(this);CButton* m_radio_mod=(CButton*)GetDlgItem(IDC_RADIO_MOD);m_modTip.AddTool(m_radio_mod,"先选取列表框中要修改的记录,再单击此按钮就可以修改相应的记录。");m_delTip.Create(this);CButton* m_radio_del=(CButton*)GetDlgItem(IDC_RADIO_DEL);m_delTip.AddTool(m_radio_del,"先选取列表框中要删除的记录,再单击此按钮就可以彻底将此记录删除。");m_searchTip.Create(this);CButton* radio_search=(CButton*)GetDlgItem(IDC_RADIO_SEARCH);m_searchTip.AddTool(m_radio_search,"单击此按钮可以查到你想要的记录。");.查询数据的功能实现代码(模糊查询功能的实现)下拉列表框(Combox1)供用户选择要查询的字段名,编辑框(Edit1)供用户输入查询的值,数据表AddressBookSelect * from AddressBook where +Combox1.Text+like %+Edit1.Text+% 4 结 论4.1 通讯录程序调试简图 图4.1通讯录主界面 图4.2添加记录界面 图4.3修改记录界面图 图 4.4删除记录界面 图3.6查找界面4.2 程序调试情况及系统在调试过程中出现问题从选题,设计程序功能,搜集资料到实现程序,碰到了很多问题,比如函数的功能不能够实现,界面设计不够美观,功能实现不了,程序调试出现错误,数据库连接有问题,SQL语句实现不了应有的功能。详情如下:问题:数据库在建立保存的时候没有考虑全面,导致每到一个机子上都得重新建立并导入数据库。解决方法:在建立并保存数据库的时候,将其与程序目录保存在一个文件夹里面。问题:整数的输出解决方法:调用CString类的Format成员函数格式化整数问题:数组下标越界,造成内存泄露解决方法:改变数组的大小4.3 系统的总体测评 实现了通讯录的基本功能,界面效果一般。能够完成向数据库中添加、删除、修改、可按姓名模糊、精确查找心 得在这次由我自已亲自参加、亲自设计制作的课程设计通讯录中,收获非常的大. 从一开始策划到制作的整个流程中,遇到了非常多的困难,首先,由于VC+的基础知识掌握得不够劳固,以致在开发过程中不知从何如手,并且在涉及到VC+高级知识的运用的时候,更是非常的困难,但这并没有成为我迈向知识殿堂的障碍,反而以此为动力,通过四处查询、积极参与、询问老师,以前所面对的问题一个一个迎刃而解。在这次课程设计的制作中我体会地体会到了要想从事计算机程序开发这方面的工作,那和做为一个程序员的我们本身所具有的素质是非常的关键和重要的,它与项目开发的结果息息相关,比如说:要是一个程序员在开发的过程中遇到了一时间不能解决的问题的时候,不能够有一颗良好的心态去面对、去解决这个问题、而是选择了放弃或逃避问题的话,那么这个问题是始终不能解决的,所以在这次程序的开发中我不仅学到了很多关心VC+的知识,懂得了许多以前不懂的格式、技术。而更重要地是我在这次事情的参与中明白了做了一个程序员来说:我们必须时刻发挥我们年轻人拼搏、努力向上奋斗、大胆挑战自己、踏实的品质。也明白了做程序重要的是要有耐心,要坚持不懈,要善于查找资料以寻求解决问题的办法,要善于利用已有的成果并在此基础上创新,还要有足够的时间,才能很好的完成一个项目。 参 考 文 献1 马云升.VC+下声卡低层音频服务的编程技术.北京希望电子出版社.2001年3月1日2 杨淑莹.VC+图像处理程序设计.清华大学出版社,北京交通大学出版社 2005年4月25日3 杨淑莹.图像模式识别:VC+技术实现.清华大学出版社,北京交通大学出版社 2005年5月1日4 粟塔山.VC+和BC+数值分析类库= Numerical analysis class library for VC+ and BC+.清华大学出版社.20065 祁云嵩 .VC+程序设计解析与训练.2005 13