《网上书店系统毕业论文.doc》由会员分享,可在线阅读,更多相关《网上书店系统毕业论文.doc(23页珍藏版)》请在三一办公上搜索。
1、目 录摘 要3第1章 概 述41.2 主要工作内容4第二章 开发工具的简介52.2 Java语言的特点52.3 Java语言的发展7第三章 系统需求分析93.1 系统的任务概述93.2 系统的综合要求93.2.1 硬件平台93.2.2 软件平台9第四章 系统详细设计104.1 界面设计的实现104.1.1 加载图片104.1.2 分割任意图片,然后拼图114.1.3 画出界面124.2 鼠标事件处理134.2.1 判断鼠标点击的是哪个拼图144.2.2 判断这个拼图可以往哪个方向移动144.2.3 移动该拼图的事件15如果可以移动图片,那么就编写以下代码:15public void move(
2、int nRow,int nCol,int nDirection)15 switch(nDirection)154.3 判断游戏的步数及所用时间164.3.1记录所用的步数164.3.2记录所用的时间164.3.3 计算玩家的分数174.4 让游戏能够判断游戏是否结束及怎样重新开始174.4.1游戏怎样结束174.4.2 游戏怎样开始184.5 让游戏的每次初始化状态都不一样194.6 增加预览的功能194.7 添加音响效果204.8 编写HTML代码20第五章 小结22致 谢23参考文献24摘 要JAVA语言是目前Internet上大型的WEB应用程序开发时使用得最热门的编程语言,本文描述了
3、JAVA和JSP技术的特点以及在互联网上的使用情况,介绍这两种技术的重要编程方法和两者之关的联系,并完成一个基于这种技术的网上书店系统。【关键字】JAVA, JavaBeans, Servlet, JSP, 网络编程, 电子商务, 网上书店第1章 概 述1.1 引言随着Internet 的发展,网络已经改变了人们学习、工作和生活的方式,电子商务活动正飞速度发展,它使人类社会进入*和“虚拟化”运作的电子商务时代。网上书店系统是在网络上建立一种虚拟的图书书店,用户足不出户就可以购买到自己想要的图书,使用户不受时间、空间的限制,让用户可以更方便、更快捷地挑选图书。同时,网上书店可以推动网上支付、邮政
4、、速递等服务行业的迅速发展。本文从理论和实际角度出发,设计了基于XML 技术和. NET 平台的网上书店系统。1.2 主要工作内容网上书店系统主要实现网上购书和后台管理的书店系统,主要功能模块描述如下:(1) 注册登录功能。系统提供免费注册功能。注册用户登录之后,可以修改个人基本信息、删除非法用户以及过期登录用户的;用户必须登录系统后才可以浏览图书信息。(2) 书籍管理功能。主要包括显示书籍信息,增加、删除或更新数据信息。(3) 图书浏览查询功能。该功能提供用户分类书籍查询功能。用户登录系统后,系统应提供本店图书目录供用户搜索;用户根据搜索条目,系统向用户提供显示查找后的书籍详细信息。在显示书
5、籍详细信息页面,系统向用户提供是否决定购买图书。(4) 购物车功能。当用户登录系统后,系统会为用户准备一辆“购物车”。当用户进行浏览图书或进行搜索到自己想要的书之后,将其添加到购物车中,每次买完后,系统会自动到购物车界面,购物车中要清楚地显示所购图书的名称、数量、价格、总价格信息。该功能还应包括是否允许用户更改当前购物车中购买图书的数量。用户点击“继续购物”可以继续搜索图书,单击“更新”后可以更新购物车的内容。(5) 图书结账功能。当用户购物结束,系统提供结账功能。第二章 开发工具的简介2.1 XML 技术的优势 可扩展标记语言( eXtensible markup language ,XML
6、) 是由万维网联盟(World Wide Web COMsortium ,W3C) 推出用于新一代网络数据表示、传递和交换的标准,是Internet 环境中跨平台的、依赖于内容的技术。XML 的优势十分显著, 主要表现在如下几个方面:(1) 良好的可读性。在XML 文档中,人们可以使用特定的标记为数据定义相关的语义。(2) 数据内容与形式的分离。在XML 文档中,数据的显示样式已从文档中分离出来,放入相关的样式表文件中。如果要改动数据的表现形式,就不需要改动数据本身,而只要改动控制数据显示的样式表文件。(3) 可以轻松跨平台应用。XML 文档是基于文本的,所以很容易被人和机器阅读,也非常容易使
7、用,便于不同设备和不同系统间的信息交换。XML 可以定义自己的数据格式,很容易使用软件工具去读、写、交换这些格式的文档。(4) 方便的可扩展性。XML 允许各个组织或个人建立适合他们自己需要的标记集合或标记库,并且这些标记集合可以迅速地投入到互联网的使用中。总之,XML 技术的优势显著,应用之广泛。XML主要在B2B (企业对企业) 或B2C(企业对客户) 的电子商务中应用。网上书店主要是把数据库和XML 技术结合起来,让用户在浏览器中以XML 文档形式向Web服务器进行数据交换,Web 服务器把XML 文档提交给XML 解析器,后台处理程序通过XML 文件或数据库访问数据并进行处理,后台处理
8、程序再把处理后的数据封装成XML 文档返回给客户端浏览器。2.2 Java语言的特点1. 简单性 Java是一种简单的语言。Java取消了其它的许多编程语言中十分繁琐的和难以理解的内容,例如C/C+中的指针,+中类的多重继承等。Java语言在外观上让大多数程序员都感到很熟悉,这样程序员不需要经过长时间训练就能够学会使用这种新型的程序开发工具。Java要求的基本解释器约为40KB ,若加上基本的程序库,约为215KB。由于Java程序很小,因此在小型机上Java程序也能够很好地执行。2. 面向对象 Java是一种面向对象的语言。这里的“对象”是指应用程序的数据及其操作方法。Java程序的设计思想
9、不同于语言基于过程的程序设计思想。设计面向对象的程序需要将编程重点放在资料和接口上。3. 分布式特性 Java是一种分布式的语言。Java有一个很周全的程序库,且很容易与HTTP和TCP/IP通信协议相配合。Java应用程序能在网络上开启并连结使用对象,就如同透过URL链接使用一个本地文件系统。利用Java来开发分布式的网络程序是Java的一个重要应用。4. 健壮性 用Java编写的程序在多种情况下都能稳定地执行。Java与/C+最大的不同点是在于Java有一个专门的指针模型,它的作用是排除内存中的数据被覆盖和毁损的可能性。5. 安全性 Java是一种安全的网络编程语言。Java是被设计用于网
10、络及分布的环境中的,所以Java程序的安全性自然是非常重要的。Java拥有数个阶层的互锁保护措施,能有效地防止病毒的侵入和破坏行为的发生。6. 结构中立性 众所周知,网络是由很多不同机型的计算机组合而成的。这些计算机的CPU和操作系统体系结构均有所不同。因此,要使一个应用程序可以在每一种计算机上都能够执行是很难的。所幸的是,Java的编译器能够产生一种结构中立的目标文件格式,这使得编译码能够在多数的处理器中执行。7. 可移植性 Java的源代码和C/C+的源代码一样具有可移植性,而且Java的可移植性在相比之下还要更强一些。只要有对应系统的解释器,Java程序就可以在所有的系统上执行。Java
11、的原始资料形式的大小是被指定的,例如Java之所以一直用“float”来表示一个32位字节的IEEE754的浮点运算数字,正是因为绝大多数的CPU都有此共同特征。Java自带的程序库定义了一些可移植的程序接口,这使Java语言具备了很好的可移植性。8. 解释型语言 Java的源程序首先由编译器编译成字节码,之后再由解释器解释执行。Java解释器能直接在任何机器上执行Java字节码(Byte Codes),因此在进行程序链接时节省了时间,这对于缩短程序的开发过程有极大的帮助。9. 高效性 Java字节码能迅速地转换成机器码(Machine Code)。Java的这种效能几乎与C/C+没有分别。用
12、Java编制的Java小应用程序可以取代部分CGI脚本(CGI Scripts)的功能,但是考到效率方面的问题,在大多数的情况下很多客户端的基本操作还是由脚本语言来完成的。涉及到复杂算法的计算以及一些特别的效果,就可以由Applet或者ActiveX来完成。10. 多线程性 Java语言具有多个线程,这对于交互回应能力和即时行为是有帮助的。11. 动态性 Java比C/C+语言更具有动态性,更能适应时刻在变的环境。Java不会因程序库的更新而重新编译程序。2.3 Java语言的发展Java自正式问世以来已经历了四年的历程,时间虽短,发展极快。一年一度在美国旧金山召开的世界Java One语言开
13、发者大会(Java One Developer Conference)盛况空前正说明了这一点。四年中每年的Java One大会,既是了解Java最新技术动态、应用成果和下一步发展趋势的最好场所,又是推动下一年Java快速发展的重要动力。首届Java One大会于1996年召开,各届简况如下: 1996年5月29-31日,第一届,出席会议者6500余人,来自工业界的超过一半。有人评价说:“这是近年计算机界最光辉的一次盛会”。工业界相当看好Java语言,认为它的使用将会引起一场软件革命:从软件的设计风格、设计方法、设计目标到设计过程,都会产生彻底的变革,“甚至会改变此星球的生活方式”。 1997年
14、,第二届,出席会议者10000人。Java的追随者不断增加,应用开发迅速起步。 1998年3月24-27日,第三届,出席会议者14000余人(注册人数),注册门票售价1195美元,否则1395美元,即使如此,仍有不少人不惜工本,挤入会场。本次会议除了软件巨头微软未参加会议外,几乎所有的计算机公司都参加了。展厅内设300多个展台,先后举行了90场专题讨论会,每场参加的人数从千人至五六千人不等。会议的主题是:通过Java的培训来带动Java软件的开发和技术研究,从而发展生产力,获取高额利润,提高生活质量,推动信息产业的进步。会议展出的内容大致如下: Java开发工具软件,如:JMF、JDK、Sym
15、antec Visual Cafe、Java Dynamic Management Kit、JFC、JNDI、Java Studio 等; 企业信息管理解决方案软件,如:EJB(Enterprise JavaBeans); 基于Java技术的信息家电,如:机顶盒、Java电话等; 个人信息综合服务(Java戒指)、社会信息综合查询亭(Kiosk); 电子商务软件、智能卡、Java Card API 等; 网络计算环境下的Java服务器软件、远程方法调用(RMI)、基于Java技术的移动计算设备; JMS(Java Message Service)用于出版、票据订阅的软件; JOS(Java O
16、S)、基于Java技术的NC和Java Station。 1999年6月15-18日,第四届,出席会议者达20000人,300多家厂商参展,举办400多场技术讲座,555名演讲者慷慨陈词,精彩纷呈。这次大会的主要特点是: Java框架结构被梳理清晰 本次JavaOne大会上,Sun公司的一个重大举措就是公布了Java平台的最新架构。重新定义的Java平台以Java 2为核心,由面向企业和服务器市场的企业版Java 2(J2EE)、面向传统PC客户机市场的标准版Java 2(J2SE)和面向信息电器等后PC终端设备市场的Micro版Java 2(J2ME)三大部分组成。其中,J2EE包括Ente
17、rprise JavaBeans(EJB)、Java Server Pages & Java Servlets、Java Mail API和Java Massage Service组成。而J2ME则是原有的Personal Java、EmbeddedJava、JavaCard以及刚刚推出的Kjava组成。虽然新框架结构中的内容都是已有的,但这样重新定义和组合,使得Java平台的概念简单化,从而变得易于理解,更适合于进行市场推广。第三章 系统需求分析3.1 系统的任务概述这个游戏将一张大图打散成9张小图,然后在游戏里任意挑8张图,贴在9个位置中的任意位置。通过鼠标键移动打乱的8张图片,让其复原成
18、原来的顺序,玩家就胜利了,游戏结束。3.2 系统的综合要求3.2.1 硬件平台CPU: Pentium II、 Celeron800(或以上)。内存:256MB(或以上)。显卡:16MB(或以上)显存。硬盘:至少150M剩余空间。3.2.2 软件平台操作系统:Microsoft Windows 2000/XP、Linux等。开发工具:JBuilder7.0以上。文档工具:Microsoft Word 2000以上简体中文版。浏览工具:Internet Explorer 6.0以上。 第四章 系统详细设计4.1 界面设计的实现4.1.1 加载图片首先找一张漂亮的图片,用作拼图游戏的画面,大小为3
19、60*360像素。首先定义两个常量,来记录每块拼图的大小。在此将大图片分成3*3的拼图,则每张拼图的大小为120*120。并定义以下常量:每张拼图的宽:final int IMAGE_WIDTH=120; 每张拼图的高:final int IMAGE_HEIGHT=120; 再定义10个图片对象。其中1个用来装入总的大图片,9个用来装入每个拼图的图片:image m_Image=new Image9; 为大图定义:image m_ImaAll;在init()中填写装入图片的代码,如总图的名称为:pintu.jpg代码如下:m_ImaAll=getImage(getCodeBase(),“img
20、pintu.jpg”);通过图像处理工具把整个图像分成了9个小图像,分别命名为0.jpg-8.jpg,然后分别加载,如图:总图:pintu.jpg 以下是分图:0.jpg 1.jpg 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.jpg 8.jpg用以下代码加载8张图片:for(int i=0;i9;i+) m_Imagei=getImage(getCodeBase(),img/+i+.jpg); 将第2行第2列的拼图初始化为第8个拼图。将第3行第2列的拼图初始化为无。 ImageNo11=7; ImageNo21=NO_IMAGE;并对paint方法进行处理:if(Imag
21、eNoij=NO_IMAGE)g.fill3DRect(x,y,IMAGE_WIDTH,IMAGE_HEIGHT,true) ; else g.drawImage(m_ImageImageNoij,x,y,this) ; g.drawRect(x,y,IMAGE_WIDTH,IMAGE_HEIGHT) ; 4.1.2 分割任意图片,然后拼图private void jbInit() throws Exception m_ImaAll=getImage(getCodeBase(),imgImage00001.jpg); for(int i=0;i9;i+) m_Imagei=createImag
22、e(IMAGE_WIDTH,IMAGE_HEIGHT); Graphics g=m_Imagei.getGraphics() ; int nRow=i/3; int nCol=i%3;g.drawImage(m_ImaAll,0,0,IMAGE_WIDTH,IMAGE_HEIGHT,nCol*IMAGE_WIDTH,nRow*IMAGE_HEIGHT,(nCol+1)*IMAGE_WIDTH,(nRow+1)*IMAGE_HEIGHT,this); 4.1.3 画出界面一、分割界面在4.1.1中介绍了怎样分割并加载图片,图片装载完毕后,下一步设计界面,并画出来。让界面在左边留下一定的区域用来显
23、示游戏的一些信息,如玩家走了多少步了,玩家是否已经赢了,等等;然后在右边将拼图的图片画出,可以定义一个常量来标识左边提示信息区域的宽度,代码为:final int LEFTX=120;为了标识现在各个拼图的排列情况,本设计定义一个二位数组:int ImageNo=new int33; 数组下标表明了这个地方为哪张拼图,如项ImageNoij表明第(i+1)行第(j+1)列上的拼图为第ImageNoij张拼图。定义一个常量,当ImageNo的某一项等于这个常量时,表明这个位置的拼图为空:final int NO_IMAGE=-1;定义一个方法,用来初始化各个拼图的排列情况,将拼图按顺序排列在各个
24、位置上。public void initData() for(int i=0;i3;i+) for(int j=0;j3;j+) ImageNoij=i*3+j; 二、画左边的提示信息区域在Applet的paint()方法里写代码,按照数组所提供的信息来画出界面。将当前颜色设置为深红色,并填充左边的提示信息区域并设置区域里的字体为华文行楷,大小20,粗体,白色,显示位置坐标10,40: Color c=new Color(150,0,0);g.setColor(c ); g.fillRect(0,0,LEFTX,IMAGE_HEIGHT*3); g.setFont(new Font(华文行楷,
25、Font.BOLD ,20) ; g.setColor(Color.white ) ; g.drawString(步数:+nStep,10,40) ; 三、画出拼图区域遍历ImageNoij数组,按数组里所表述的拼图的排列顺序画出拼图区域: for(int i=0;i3;i+) for(int j=0;j=0) if(ImageNonRow-1nCol=NO_IMAGE) return DIRECTION_UP; if(nRow+1)=0) if(ImageNonRownCol-1=NO_IMAGE) return DIRECTION_LEFT; if(nCol+1)200)str=str+,
26、你可要加油啦!; else str=str+别紧张,慢慢来。; showStatus(str); if(!WantStartNewGame)nTime+; catch(Exception e) 在init方法里新建一个线程:timeThread=new Thead(this);timeThread.start();在initData里将nTime置为0:nTime=0;4.3.3 计算玩家的分数采用(1000-步数*10-时间)来记分4.4 让游戏能够判断游戏是否结束及怎样重新开始 4.4.1游戏怎样结束本设计只要判断8张拼图是否都已经到了正确的位置上就行了。如果是,游戏结束,并给出相应的分数
27、,并让玩家可以重新开始游戏。先定义一个Applet的成员WantStartNewGame,用来标志游戏是否结束,是否需要重新开始新游戏:boolean WantStartNewGame=false;方法如下: public void checkStatus() boolean Win=true; int CorrectNum=0; for(int i=0;i3;i+) for(int j=0;j3;j+) if(ImageNoij!=CorrectNum&ImageNoij!=NO_IMAGE) Win=false; CorrectNum+;待添加的隐藏文字内容2 if(Win)WantSta
28、rtNewGame=true; 调用这个方法后,会将当前的游戏状态存在WantStartNewGame里,通过查看WantStartNewGame的值,就可以得知当前的游戏状态是还没有结束,还是已经赢了。4.4.2 游戏怎样开始由于每次移动拼图之后,都要调用重画方法,所以,本设计将这个方法的调用放到paint方法里。 在paint方法里本设计增加如下代码,让游戏能够判断当前状态,并能够在游戏可以结束时打印出有关信息,如“你赢了”之类的信息:public void paint(Graphics g) checkStatus(); if(WantStartNewGame) g.setColor(C
29、olor.yellow ) ; g.setFont(new Font(“宋体”,Font.BOLD ,15) ; g.drawString(你赢了,祝贺你!,5,180) ; 4.5 让游戏的每次初始化状态都不一样前面写下的初始化游戏状态的方法过于简单,玩家只要玩过一次之后,就没有什么可玩的了。本设计用Math包里的random()方法来产生随机数,用这个随机数来初始化游戏的状态。 randoam():返回一个double类型的值,这个值是正的,大于等于0小于1。使用这个方法必须要注意:每个拼图只能在游戏里出现一次,也就是本设计应该在9张图片里随机挑出其中的8张,随机分配到9个位置中的8个位置
30、。代码如下:public void initData() int HasDistrib=new int9; for(int i=0;i9;i+)HasDistribi=0; for(int i=0;i3;i+) for(int j=0;j3;j+) int ImgNo=-1; do ImgNo=(int)(Math.random() *9);while(HasDistribImgNo=1); ImageNoij=ImgNo; HasDistribImgNo=1; ImageNo(int)(Math.random() *3)(int)(Math.random() *3)=No_Image; nS
31、tep=0; 4.6 增加预览的功能定义变量Image previewIma;在jbInit() 方法里继续添加:previewIma=createImage(IMAGE_WIDTH,IMAGE_HEIGHT);Graphics g= previewIma.getGraphics() ;g.drawImage(m_ImaAll,0,0,IMAGE_WIDTH,IMAGE_HEIGHT,0,0,360,360,this) ;在paint方法里添加: g.drawImage(previewIma,0,0,this) ;4.7 添加音响效果一、准备声音文件可以随便找任何*.au或*.wav等的声音文
32、件,让游戏在每一次移动拼图时都发出这个声音。二、装载声音文件先定义一个Applet的公共变量来保存装载的声音文件。 AudioClip audio1,audio2; 装载声音这一部分代码写在init方法中audio1=getAudioClip(getCodeBase(),”au/move.au”)audio2=getAudioClip(getCodeBase(),”au/notmove.au”)三、在必要的地方播放声音文件。本设计准备在拼图能够移动的时候,播放这个声音文件,那么代码应该加在mouseClicked方法里。if(nDirection!=DIRECTION_NONE) move(n
33、Row,nCol,nDirection); nStep+; audio1.play() ; else audio2.play() ; 4.8 编写HTML代码HTML Test Page拼图游戏这是一个拼图游戏。玩家应该将打散的小图拼成一张大图玩家可以通过鼠标和键盘来移动小图,移动的次数在左边显示按replay游戏会重新开始。第五章 小结一、虽然理论知识我们都学习了,但是,具体做起来还是有一定的难度。这就说明,自己的实践经验还是不够,理论知识掌握的扎实的同时更应注重实际应用。二、学习应该学会举一反三,这样才能把学到的知识充分利用起来。三、做程序设计,应该从实际出发,即要考虑应实现的功能,也要考
34、虑细节,考虑可能出现的特殊情况。四、对Java的语发结构的掌握比较清楚和熟练,这样在编写代码是才不容易出错。五、要想把系统做好,就必须做多次的程序测试,经过反复的测试和调试,才能不断完善此系统。参考文献1 张孝祥.Java就业培训教程M.清华大学出版社.20032 樊荣.Java基础教程M.机械工业出版社.20043 Bruce Eckel.Java编程思想M.机械工业出版社.20054 孙卫琴.Java面向对象编程M.电子工业出版社.20065 孙印杰.刘斌.孙玉强.Java编程案例精解.电子工业才出版社.20056 王克宏.Java技术教程M.清华大学出版社.20057 叶思义.宋昀璐.游戏设计全方位学习M.中国铁路出版社,20068 李远静.莫诚生.Windows游戏编程M.清华大学出版社.20049 张鹏.宁莹璋.王雪梅.Java游戏实例手册M.海洋出版社.200610 Mark Grand.Java 模式M.电子工业出版社.200411 马特纳.EJB应用指南M.清华大学出版社.200412 Peter C.Dibble.实时Java平台编程M.机械工业出版社,200313 阎宏.Java与