《基于c#.net的网上书店设计与实现本科学位论文.doc》由会员分享,可在线阅读,更多相关《基于c#.net的网上书店设计与实现本科学位论文.doc(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、摘 要摘 要在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用。Internet上发布信息主要是通过网站来实现的,获取信息也是要在Internet“海洋”中按照一定的检索方式将所需要的信息从网站上下载下来。因此网站建设在Internet应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。在资讯和信息越来越重要的时代,精彩的网络在悄悄改变着人们的工作和生活理念网上购物。不用及交通、不用到书店翻阅、即可看到全国各地的书籍价格、更加全面地搜索自己喜欢的书籍、需要的书籍。这种方
2、便、快捷、花费少的择业新方式,就是浏览网上书店。网上书店也是小型的B2C网站。网上书店与显示书店相比,具有速度快、容量大、费用少、使用方便等优势。比如,可以坐在家中浏览全国各地的书籍报价,省去了到街上及交通的烦恼等。并且网上书店不受时空的限制,可以广纳全国各地的书籍信息,促成轻松购物、满意购物。另外,网上书店还可省下一笔可观的店面租赁费、促销人员开支等。对顾客来说既得到了实惠,又节省了奔波的时间。正是基于以上原因,我决定做一个网上书店系统,为广大的爱书者提供一个更加方便购物场合平台,达到让购书者能随时掌握书籍的最新动向,从而使得购书者能在第一时间了解新书的信息。我的毕业设计(基于C#.NET技
3、术的“网上书店”的设计与实现)使用了自己十分熟悉的C#.NET来编写实现前台后台的功能实现,同时使用到MSSQL2000数据库实现数据的保存功能。利用此来提高购书者搜索书籍的效率。关键词:C#.NET 互联网 网上书店VABSTRACTABSTRACTIn the rapid development of the Internet today, become fast access to the Internet, publish and disseminate important information channel for people in the political, economi
4、c, and other aspects of life plays an important role. On the Internet to distribute information through the Web site is achieved, access to information is also in the Internet sea in accordance with a certain way to retrieve the information they need from the Web site to download it. Therefore the c
5、onstruction site in the Internet application on the status of the obvious, it has become the government, enterprises and institutions in information technology an important component of, so much attention. And information in the information age more and more important, exciting in the network quietl
6、y changing the peoples work and life philosophy - on-line shopping. And do not have transportation, do not have to read the book, you can see the prices of books across the country, a more comprehensive search your favorite books, books in need. This convenient, fast, inexpensive way for a new caree
7、r, is on the online bookstore. The online bookstore is also a small B2C websites. On-line bookstores and bookstores showed that compared with the speed and capacity, low cost, easy to use, and other advantages.To eliminate the need for street and traffic troubles, and so on. And from the online book
8、store temporal and spatial constraints, can take the books across the country,.In addition, the online bookstore can save a substantial amount of store rental fees, marketing expenses, and other staff. For customers of both benefit and savings of time travel. It is for that reason, I decided to do a
9、n on-line bookstore, for the majority of those who love books to provide a more convenient forum shopping platform to allow buyers to keep abreast of the latest trends in books, so that buyers in the first All of a sudden understanding of the new book. My graduation project (based on C #. NET techno
10、logy on-line bookstore, Design and Implementation of) the use of their very familiar with C #. NET background to the preparation of the future to realize the function of the realization, at the same time to use the database MSSQL2000 data to preserve the function. To increase the use of the book buy
11、ers search more efficient. Key words: C#.NET Internet on-line bookstore目 录目 录第一章 引 言11.1 网上书店开发简介11.2 本课题的研究意义31.3 主要研究工作4第二章 基础知识介绍52.1 C#.NET概述52.1.1 C#.NET的主要功能与特点62.1.2 查询数据库举例92.2 数据库技术122.2.1 数据库122.2.2 SQL Server 2000数据库的常用命令122.3 IIS的配置142.4 本章小结14第三章 具体设计163.1 总体设计思路163.1.1 具体设计思路173.1.2 网站
12、的连接结构183.2 用户管理193.3 网站结构设计193.3.1 系统功能分析与设计193.3.2 数据库结构设计203.4 本章小结22第四章 网站设计的实现234.1 动态网页各部分的实现234.2 网页中的ASPX代码244.3 本章小结29第五章 性能测试与分析315.1 启动网络求职招聘系统315.2 运行各个模块进行调试315.3 对调试结果进行分析31第六章 致 谢38第七章 参考文献39第一章 引言38第一章 引言第一章 引 言随着社会经济和Web技术的发展,人们不再满足于仅能浏览信息的静态网页,更多的时候需要能与同时上网的互联网用户进行交流和发表自己的意见见解,这样,能提
13、供后台数据库的管理和控制等服务的动态网站有了诞生的必要。近年来,随着互联网在中国的迅速发展,网上B2B、B2C这一利用网络信息进行的购物、买卖方式得到迅速发展。2003年5月10日淘宝网建立。淘宝网目前业务跨越C2C(个人对个人)、B2C(商家对个人)两大部分,至今成为中国乃至亚洲到世界最具影响力的网络购物网站,以及今年2月分。中国最大搜索引擎百度推出了自己的B2B网站“百度有啊”。全国各地纷纷建立起自己的网络购物网络,网上购物呈星火燎原之势,迅速地出现在全国各地。特别是在北京、上海以及广东等网络比较成熟的省市,网上购物已经有了较大的市场。实际上,网上购物与在真实的书店是相同的,不同的是前者是
14、买卖双方通过一个网络虚拟的平台来实现。网站一般为购物者准备了发表评论联系卖家的功能,也在很明显的地方试用了人性化的导航标示,使得没有太多网络知识的人们,也能准确地找到所需,购物者可以用多种方式查询书店发布的书籍信息,书店管理员也运用了最大的可能的详细介绍来描述书籍。1.1 网上书店开发简介 动态网站开发技术C#.NET使用一种字符基础的,分级的配置系统,使你服务器环境和应用程序的设置更加简单。因为配置信息都保存在简单文本中,新的设置有可能都不需要启动本地的管理员工具就可以实现。这种被称为Zero Local Administration的哲学观念使C#.NET的基于应用的开发更加具体,和快捷。
15、一个C#.NET的应用程序在一台服务器系统的安装只需要简单的拷贝一些必须得文件,不需要系统的重新启动,一切就是这么简单。多处理器环境的可靠性 C#.NET已经被刻意设计成为一种可以用于多处理器的开发工具,它在多处理器的环境下用特殊的无缝连接技术,将很大的提高运行速度。即使你现在的C#.NET应用软件是为一个处理器开发的,将来多处理器运行时不需要任何改变都能提高他们的效能,但现在的ASP确做不到这一点。自定义性和可扩展性 C#.NET设计时考虑了让网站开发人员可以在自己的代码中自己定义plug-in的模块。这与原来的包含关系不同,C#.NET可以加入自己定义的如何组件。网站程序的开发从来没有这么
16、简单过。安全性基于Windows认证技术和每应用程序配置,你可以确性你的原程序时绝对安全的。 C#.NET 的语法在很大程度上与 ASP 兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有 ASP 应用程序中逐渐添加 C#.NET 功能,随时增强 ASP 应用程序的功能。 C#.NET 是一个已编译的、基于 .NET 的环境,把基于通用语言的程序在服务器上运行。将程序在服务器端首次运行时进行编译,比ASP即时解释程序速度上要快很多.而且是可以用任何与 .NET 兼容的语言(包括 Visual Basic .NET、C# 和 JSc
17、ript .NET.)创作应用程序。另外,任何 C#.NET 应用程序都可以使用整个 .NET Framework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。 C#.NET 可以无缝地与 WYSIWYG HTML 编辑器和其他编程工具(包括 Microsoft Visual Studio .NET)一起工作。这不仅使得 Web 开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到 Web 页的 GUI 和完全集成的调试支持。 当创建 C#.NET 应用程序时,开发人员可以使用 Web 窗体或 XML We
18、b services,或以他们认为合适的任何方式进行组合。每个功能都能得到同一结构的支持,使您能够使用身份验证方案,缓存经常使用的数据,或者对应用程序的配置进行自定义。除此之外还有许多动态网站的开发技术,如Java Servlets技术,利用该技术可以很容易地用Java语言编写交互式的服务器端代码。一个Java Servlets就是一个基于Java技术的运行在服务器端的程序(与Applet不同,后者运行在浏览器端)。开发人员编写这样的Java Servlets,以接收来自Web浏览器的HTTP请求,动态地生成响应(可能需要查询数据库来完成这种请求),然后发送包含HTML或XML文档的响应到浏览
19、器。这种技术对于普通的页面设计者来说要轻易地掌握是很困难的。采用这种方法,整个网页必须都在Java Servlets中制作。如果开发人员或者Web管理人员想要调整页面显示,就不得不编辑并重新编译该Java Servlets。 太阳微系统公司(Sun Microsystems Inc.)在Web服务器、应用服务器、交易系统以及开发工具供应商间广泛支持与合作下,整合并平衡了已经存在的对Java编程环境(例如Java Servlets和JavaBeans)进行支持的技术和工具后产生了一种新的、开发基于Web应用程序的方法JavaServer Pages技术(JSP)。这种动态网站开发技术主要有以下一
20、些特点: (1)能够在任何Web或应用程序服务器上运行; (2)分离了应用程序的逻辑和页面显示;(3)能够进行快速的开发和测试; (4)简化了开发基于Web的交互式应用程序的过程 .1.2 本课题的研究意义 当今的社会是一个信息爆炸的社会。互联网的出现加速了这种信息爆炸的当量。导致信息泛滥成灾,严重地阻碍和影响着知识和信息的传播。随着Internet的普及,互联网以一股巨大变革力量的面貌出现在商务关系领域。其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。因为网络本身就是信息的载体,它与普通的书店等书籍出售场所相比,具有速度快、容量大、费用少、使用方便等优势。比
21、如,从网上购书你可以快速分类浏览到全国各地的书籍报价。过网络进行购书,不仅弥补了书店购书的不足,并且网上购书不受时间的限制你什么时候有空就可以什么时候购买,可以购买全国各地的书籍,而不会出现断货的情况,另外,网上购书价格一般比书店的低些,因为店主在成本上节约了,同时价格也有了一定的降低。对购书者来讲,也节约了一些银子,也省去了到书店了和别人拥挤的痛苦。当互联网本身变成信息海洋的时候,人类不得不面临另一场新的挑战:那就是超越信息,将信息转化为知识。著名的经济学家、1972年诺贝尔经济学奖获得者赫伯特西蒙早在20多年前就指出过:在信息时代,最稀缺的资源不再是信息本身,而是对信息的处理能力。传统的各
22、种网络工具(搜索引擎、网上查询、数据挖掘)以及各种软件工具等,越来越难以满足深层次的需要。如何让信息和知识通过互联网有序、广泛、深入地传播,将零散、隐形的知识快速转化为具有使用价值的显性知识。这是当今社会最为关心的问题。博客技术的出现为人们提供了一种全新可能。网络开始真正凸现无穷的知识价值。为了适应信息网络形势,紧跟时代潮流,使自己能在新世纪中运用网络传播渠道建立网络购书网站去帮助更多的人和传播更多的书籍信息,让购书者和卖书着虽未谋面却已相知,利用网站展示书籍信息和展现顾客留言,创建彼此沟通的桥梁。这也是我创建该网站的初衷。1.3 主要研究工作网上书店一般来说包括了两个大的对象:买书着和卖书者
23、。我所做的这个购书网站主要能达到以下要求:管理员可以使用该系统发布书籍、修改书籍信息、管理用户、管理留言板、添加新书、发布书讯、管理订单;注册的购书者可以实现:个人信息管理、发表留言、管理购物车、查看订单等;普通Internet个人用户可以使用该系统注册为“书店会员”,进行购书操作。 “在线留言系统”应实现客户在该网站上进行的询问、建议等信息的提交和保存和显示。其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库。而对于后者则要求应用程序功能完备,易使用等特点。第二章 基础知识介绍第二章 基础知识介绍2.1 C#.NE
24、T概述 C#是一种语言,.NET是一种平台。C#(读做 C sharp,中文译音暂时没有.专业人士一般读C sharp,现在很多非专业一般读C井。C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。它借鉴了Delphi 的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司.NETwindows网络框架的主角。 C
25、# 语法表现力强,只有不到 90 个关键字,而且简单易学。C# 的大括号语法使任何熟悉 C、C+ 或 Java 的人都可以立即上手。了解上述任何一种语言的开发人员通常在很短的时间内就可以开始使用 C# 高效地工作。 语法简化了 C+ 的诸多复杂性,同时提供了很多强大的功能,例如可为空的值类型、枚举、委托、 C# 源文件可以定义任意数量的类、结构、接口和事件。Microsoft.NET 是 Microsoft XML Web services 平台。XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Micros
26、oft .NET 平台提供创建 XML Web services 并将这些服务集成在一起之所需。Web Services是.NET的核心技术。Web services是一个开放的标准,和HTTP、 XML、SOAP一样。他们是一个工业标准而非微软标准,WS-I是为了促进Web Services互通性的联盟组织,最初是由IBM和微软所发起,其它的成员包括BEA System、惠普计算机(HP)、甲骨文(Oracle)、英特尔(Intel)和SUN 计算机(Sun Microsystem)。如今网络上存在的大多Web services其实没有使用.NET构架,Web services具有互操作属性
27、,你同样可以使用Windows开发客户端来调用运行于Linux上面的Web services的方法。Microsoft提供了最佳的服务器构架Microsoft Windows Server System便于发布、配置、管理、编排Web Services。为了满足分布式计算的需要微软构造了一系列的服务器系统,这些内建安全技术的系统全部支持XML,这样加速了系统、应用程序以及同样使用Web Services的伙伴应用之间的集成。.NET Framework 的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面 (
28、GUI) 应用程序,也包括基于 C#.NET 所提供的最新创新的应用程序(如 Web 窗体和 XML Web Services)。C#.NET 是使开发人员能够使用 .NET Framework 开发基于 Web 的应用程序的宿主环境。但是,C#.NET 不止是一个运行库宿主;它是使用托管代码开发网站和通过 Internet 分布的对象的完整结构。Web 窗体和 XML Web Services 都将 IIS 和 C#.NET 用作应用程序的发布机制,并且两者在 .NET Framework 中都具有支持类集合。2.1.1 C#.NET的主要功能与特点1.C#.NET访问数据库的原理C#.NE
29、T是服务器端的脚本执行环境,可用来产生和执行动态的高性能的WEB服务器程序。当用户使用浏览器请求ASPX主页时,WEB服务器响应,调用ASP引擎来执行ASPX文件,并解释其中的脚本语言(JScript或VCScript),通过SQLBC连接数据库,由数据库访问组件ADO(ActiveXDataObjects)完成数据库操作,最后ASP生成包含有数据查询结果的HTML主页返回用户端显示。由于ASPX在服务器端运行,运行结果以HTML主页形式返回用户浏览器,因而ASPX源程序不会泄密,增加了系统的安全保密性。此外,ASPX是面向对象的脚本环境,用户可自行增加ActiveX组件来扩充其功能,拓展应用
30、范围。2.ASPX页面的结构ASPX的程序代码简单、通用,文件名由.aspx结尾,ASPX文件通常由四部分构成:1)标准的HTML标记:所有的HTML标记均可使用。2)ASPX语法命令:位于标签内的ASPX代码。3.C#.NET的运行环境目前C#.NET可运行在三种环境下。1) WINDOWS NT server 4.0运行IIS 3.0(Internet Information Server)以上。2) WINDOWS NT workstation 4.0运行Peer Web Server 3.0以上。3) WINDOWS 95/98运行PWS(Personal Web Server)。4)
31、 WINDOWS XP/VISTA其中以NT server上的IIS功能最强,提供了对C#.NET的全面支持,是创建高速、稳定的ASPX主页的最佳选择。4.C#.NET的内建对象C#.NET提供了六个内建对象,供用户直接调用:1) Application对象:负责管理所有会话信息,可用来在指定的应用程序的所有用户之间共享信息。2) Session对象:存贮特定用户的会话信息,只被该用户访问,当用户在不同WEB页面跳转时,Session中的变量在用户整个会话过程中一直保存。Session对象需cookie支持。3) Request对象:从用户端取得信息传递给服务器,是ASPX读取用户输入的主要方
32、法。4) Response对象:服务器将输出内容发送到用户端。5) Server对象:提供对服务器有关方法和属性的访问。6) Object Context对象:IIS 4.0新增的对象,用来进行事务处理。此项功能需得到MTS(Microsoft Transcation Server)管理的支持。5.ASPX的主要内置组件:1) Ad Rotator组件:用来按指定计划在同一页上自动轮换显示广告,用于WWW上日益重要的广告服务。2) Browser Capabilities组件:确定访问WEB站点的用户浏览器的功能数据,包括类型、性能、版本等。3) 数据组件:提供ADO (ActiveX Dat
33、a Objects)和ADO.NET来访问支持ODBC/SQLBC的数据库。4) File Access组件:提供对服务器端文件的读写功能。5) Content Linking组件:生成WEB页内容列表,并将各页顺序连接,用于制作导航条。此外,还可安装Myinfo、Counters、Content Rotator、Page Count等组件,用户也可自行编制Actiive组件,以提高系统的实用性。6.Database Access组件ADO.NETWWW上很重要的应用是访问WEB数据库,用ASP访问WEB数据库时,必须使用ADO.NET组件,ADO.NET是ASPX内置的ActiveX服务器组
34、件(ActiveX Server Component),通过在WEB服务器上设置ODBC和OLEDB可连接多种数据库:如SYBASE、ORACLE、INFORMIX、SQL SERVER、ACCESS、VFP等,是对目前微软所支持的数据库进行操作的最有效和最简单直接的方法。ADO.NET组件主要提供了以下七个对象和四个集合来访问数据库。1) Connection对象:建立与后台数据库的连接。2) Command对象:执行SQL指令,访问数据库。3) Parameters对象和Parameters集合:为Command对象提供数据和参数。4) RecordSet对象:存放访问数据库后的数据信息,
35、是最经常使用的对象。5) Field对象和Field集合:提供对RecordSet中当前记录的各个字段进行访问的功能。6) Property对象和Properties集合:提供有关信息,供Connection、Command、RecordSet、Field对象使用。7) Error对象和Errors集合:提供访问数据库时的错误信息。7.ASPX访问数据库步骤在ASPX中,使用ADO.NET组件访问后台数据库,可通过以下步骤进行:1. 定义数据源在WEB服务器上打开“控制面板”,选中“ODBC”,在“系统DSN”下选“添加”,选定你希望的数据库种类、名称、位置等。本文定义“SQL SERVER”
36、,数据源为“HT”,数据库名称为“HTDATA”,脚本语言采用Jscript。2. 使用ADO.NET组件查询WEB数据库1) 调用Server.CreateObject方法取得“ADODB.Connection”的实例,再使用Open方法打开数据库:conn = Server.CreateObject(“ADODB.Connection”)conn.Open(“HT”)2) 指定要执行的SQL命令连接数据库后,可对数据库操作,如查询,修改,删除等,这些都是通过SQL指令来完成的,如要在数据表signaltab中查询代码中含有“X”的记录sqlStr = “select * from sign
37、altab where code like %X%”rs = conn.Execute(sqlStr)3) 使用RecordSet属性和方法,并显示结果为了更精确地跟踪数据,要用RecordSet组件创建包含数据的游标,游标就是储存在内存中的数据。rs = Server.CreateObject(“ADODB.RecordSet”)rs.Open(sqlStr,conn,1,A)注:A=1读取A=3 新增、修改、删除在RecordSet组件中,常用的属性和方法有:rs.Fields.Count: RecordSet对象的字段数。rs(i).Name: 第i个字段的名称,i为0至rs.Field
38、s.Count-1rs(i): 第i个字段的数据,i为0至rs.Fields.Count-1rs(字段名): 指定字段的数据。rs.Record.Count:游标中的数据记录总数。rs.EOF: 是否最后一条记录。rs.MoveFirst: 指向第一条记录。rs.MoveLast: 指向最后一条记录。rs.MovePrev: 指向上一条记录。rs.MoveNext: 指向下一条记录。rs.GetRows: 将数据放入数组中。rs.Properties.Count:ADO.NET的ResultSet或Connection的属性个数。rs.Properties(item).Name:ADO.NET
39、的ResultSet或Connection的名称。rs.Properties: ADO.NET的ResultSet或Connection的值。rs.close(): 关闭连接。4) 关闭数据库conn.close()2.1.2 查询数据库举例下面这用Admin访问SQL SERVER数据库的BBS表来说明。下面的代码是管理员管理留言板的页面的后台代码:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Securi
40、ty;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient; public partial class Admin_LinkAdmin : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) if (!this.IsPostBack) if (Sessi
41、onUserName = null) Response.Redirect(erro_Amin.aspx); else this.lb_to_name.Text = 欢迎您: + SessionUserName.ToString(); this.bindgridview(); /定义一个绑定到gridview的方法,实现分页功能! public object bindgridview() SqlConnection con = DBAccess.createsqlcon(); con.Open(); /试用sqldataadapter+set来实现数据源的绑定,实现gridview分页功能。 S
42、qlDataAdapter sda = new SqlDataAdapter(); sda.SelectCommand = new SqlCommand(select * from BBS, con); DataSet ds = new DataSet(); sda.Fill(ds, BBBS); this.GridView1.DataSource = ds.TablesBBBS; / 对应行的主键标识! GridView1.DataKeyNames = new string ID; this.GridView1.DataBind(); return ds; protected void lb
43、t_exit_Click(object sender, EventArgs e) / Response.Write(window.close();); protected void GridView1_PageIndexChanging1(object sender, GridViewPageEventArgs e) this.GridView1.PageIndex = e.NewPageIndex; this.GridView1.DataSource = bindgridview(); this.GridView1.DataBind(); protected void GridView1_R
44、owDataBound(object sender, GridViewRowEventArgs e) if (e.Row.RowType = DataControlRowType.DataRow) e.Row.Attributes.Add(onmouseover, c=this.style.backgroundColor;this.style.backgroundColor=#58baf0); e.Row.Attributes.Add(onmouseout,this.style.backgroundColor=c); protected void GridView1_RowDeleting(o
45、bject sender, GridViewDeleteEventArgs e) string sindex =Convert.ToString ( GridView1.DataKeyse.RowIndex.Value); SqlConnection con = DBAccess.createsqlcon(); SqlCommand cmd = new SqlCommand(delete from BBS where ID=+sindex+, con); con.Open(); cmd.ExecuteNonQuery(); this.bindgridview(); protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) this.GridView1.EditIndex = e.NewEditIndex; this.bindgridview(); protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) this.GridView1.EditIndex = -1;