基于Java的智能网吧管理系统_第1页
基于Java的智能网吧管理系统_第2页
基于Java的智能网吧管理系统_第3页
基于Java的智能网吧管理系统_第4页
基于Java的智能网吧管理系统_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

PAGE-摘要随着信息时代的来临,internet和网络游戏的发展,大大小小的网吧已经遍及全国,无论是大中城市还是小城市甚至是很小的县城。但一直以来人们使用传统人工的方式管理网吧即工作人员人工记时,结算的方式来进行管理,这种管理方式存在着许多缺点,如:效率低、保密性差、容易出错,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。使用计算机对网吧收费,计帐,上机,查找管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。本文介绍了一种在JAVA平台下设计并实现智能卡网吧管理系统的全过程。通过分析比较流行的智能卡网吧管理系统的开发技术,结合网吧管理的一系列特点,java语言基础上使用Eclipse开发工具实现智能卡网吧管理系统的解决方案。本文经过实际的需求分析,阐述了智能卡网吧管理系统支撑的相关技术,以及数据库设计,最后阐述系统的总体结构与系统的各个功能模块。关键词:智能卡,JAVA平台,网吧管理

ABSTRACTAlongwiththeadventofinformationageandthecontinuousdevelopmentofinternetandonlinegames,alotofnetbarshavebeendistributedalloverthewholecountry,notonlydistributedinthelargecitiesbutalsointhesmallcitiesandeveninthesmallcounties.Butpeoplehavealwaysusedthetraditionalmethodstomanagethenetbars,whichmethodsarethatadoptingtheartificialrememberingtimewayandtheartificialsettlingaccountswaytomanagethenetbars.Suchmanagementmethodsexistmanyshortcomings,suchaslowefficiency,poorsecurity,easytogenerateerror,besides,aftermanyyearslaterwillproducealargenumberofdocumentsanddate,whichwillbringalotofdifficultiestofind,updateandmaintainthedate.UsecomputertomanagenetbarsmustbemuchmoreconvenientthanUserthetraditionalmethodstomanagethenetbars.Usecomputertomanagenetbarsisbeyondcomparewhichhasalotofadvantages.Suchashighefficiency,goodsecurity,lowcostandsoon.ThispaperintroducesallprocessesaboutdesignandimplementationofthenetbarssmartcardmanagementsystemintheJAVAplatform.Byanalyzingandcomparingthepopularnetbarssmartcardmanagementsystemdevelopmenttechnology,combinednetbarsmanagementSystemfeatures,bringingforwardachievingnetbarssmartcardmanagementsystemusingoftheEclipsedevelopmenttoolonthebasisofthejava.Thispaperisdescribedthesystemanalysisanddesignusingtherelevanttechnologyanditsfeatures,anddescribedtheoverallsystemstructureandthefunctionofthevarioussystemmodulesKeywords:smartcard,JAVAplatform,netbarsmanage

目录TOC\o"1-3"\t"样式1,1,样式2,2,样式3,3"\h摘要 IABSTRACT II第1章绪论 11.1智能卡网吧管理系统 11.1.1智能卡网吧管理的概念及特点 11.1.2国内网吧管理的现状 21.2课题的背景及意义 31.3系统简介 31.4课题的主要工作及论文的组织 3第2章系统相关技术 42.1JAVA语言的特点 42.2SWT/JFace简介 42.2.1SWT/JFace的特点 42.2.2SWT/JFace的优缺点 52.3Socket简介 52.4URL与URLConnection 62.5java链表的实现 72.6C/S结构概述 72.7本章小结 9第3章系统分析 103.1系统分析概述 103.2系统主要功能 103.3数据流图 123.4数据字典 133.5本章小结 14第4章数据库设计 154.1数据库设计原则 154.2概念结构设计 154.3逻辑结构设计 174.4本章小结 19第5章系统实现 ..205.1插件的导入 205.2配置数据库 205.3界面的实现 205.3.1JavaVE实现系统服务端主界面 205.3.2JavaVE实现系统客户端主界面 225.4具体功能的实现 225.4.1卡片管理模块 225.4.2系统管理模块 265.4.3服务端聊天管理模块 295.4.4客户端聊天服务模块 315.4.5系统其它功能模块 335.5本章小结 37第6章结论 38致谢 39参考文献 40第1章绪论1.1智能卡网吧管理系统1.1.1智能卡网吧管理的概念及特点智能卡网吧管理系统,可以应用于网吧、学校、政府机关、税务、银行等领域的机房计费管理,使管理方便、快捷而取得更好的经济效益。目前,智能卡网吧管理系统主要有三种类型:主要是硬件网吧管理系统、软件网吧管理系统、硬件及软件相结合的网吧管理系统。这里主要是介绍硬件与软件相结合的智能卡网吧计费管理系统。根据网吧经营的性质,作为网吧老板,可能常遇到以下问题:例如1、手工记录时间劳动强度大而计费方式不灵活。2、顾客上完后便走,无法把握回头客。3、老板经常不在网吧,对雇员缺乏财务监控4、管理烦琐而增加人员,成本相应增加。5、老顾客应打折而不方便查询6、每个工作人员均感繁忙而没有经济效益7、怎样均匀顾客来源,提高上机率?8、怎样树立网吧形象而有更多的回头客等等问题。怎样更好管理网吧经营呢?使用高效率的智能卡网吧管理系统可使管理规范化、标准化、效益化。灵活的计费方式是强化经营、吸引顾客的最好手段。智能卡网吧计费管理系统,有着很好的开放性和适应性,允许用户对不同电脑(如贵宾房电脑),不同卡型、不同的时段,定义不同的费率。允许网吧业主根据情况设定优惠条件,如金卡、银卡、普通卡、计时卡等。通过发行不同的卡型,可以满足网吧各种不同的销售推广计划和销售方案。我认为智能卡网吧管理系统的软件是为管理服务的,是为提高网吧的效益服务的。待业主只需点击服务器端菜单,即可了解到每时、每刻、每天、每月等不同时间段的的上机情况、盈利额及销售报表等情况,查询方便快捷,提高经济效益。智能卡网吧计费管理系统往往由服务端软件和客户端软件组成。服务端软件负责发行卡片、充值加钱、注销卡片、卡片挂失、费率管理等工作;客户端软件负责联系网吧管理人员等工作。正如前面所述,提高管理效率、管理安全有效、提升网吧档次等等都是智能卡网吧管理系统较传统网吧管理的优点。1.1.2国内网吧管理的现状目前在中国,网民数量大大超过上网计算机的数量,相当大的一部分网民是在网吧上网,所以在各个城市都有大量的网吧存在。像深圳市的网吧就有600O多家,而全国就可想而知了。北京网吧失火事件后,在全国范围内加大了对网吧管理的力度,对所有注册的网吧,全国正在进行整顿、检查。对所有无证的网吧,也正在进行清理。对于公安部门和文化部门也确实需要一套完整的网吧管理系统来监控网吧的运行。上网实名制也正在开始在各城市推广。对于网吧管理,由于上网人员较多,负责收款的人也往往不是老板本人,如何对收费进行管理,减少上机不付费的现象及收银员吞没上网款的现象,实时远程监测网吧的运营情况,也是摆在各个网吧老板面前的一个问题。使用了该系统,通过发卡,网吧能够获得大量的忠实用户,网民也可以从网吧得到打折等实惠。因此,从网吧老板、网民到公安、文化部门对本系统都将持欢迎态度,我国经过几年的整顿和发展取得了长足的进步,网吧管理系统已经广泛的应用到学校、政府机关、银行等各个领域的机房管理中。在未来的几十年中,网吧管理系统的应用研究将继续前所未有的速度发展。这一方面是网吧发展的需要,随着网吧规模不断的发展壮大,网民的不断增加,网吧的管理、网民与网吧管理员之间的协调等问题也越来越突出,这也就客观促使了网吧管理系统技术的发展;另一方面随着全球经济一体化进程的加速,网吧与网吧之间的交流与合作也越来越密切,Internet、电子商务蓬勃发展客观上也要求有功能更为全面的网吧管理产品的出现。展望下一代的网吧管理系统应具备如下特点:1.完成从C/S模式向B/S模式的转换;2.维护网吧的大量数据应该更加简单方便;3.需要支持电子商务;4.系统更有安全性、实用性、先进性和经济性;1.2课题的背景及意义智能卡网吧管理系统是用计算机软件系统管理网吧日常经营的一种计算机应用技术的创新,它的内容对于网吧的老板和管理者来说都至关重要,所以网吧管理系统应该能够为管理者和上机人员提供方便的管理和上机。使用计算机对网吧收费,计帐,上机,查找管理,具有手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高网吧管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件1.3系统简介此网吧管理系统后台数据库使用MYSQL。可以实现卡片发行,卡片注销,卡片挂失,卡片充值等基本功能,此外网吧管理员还能对网吧收费信息以及网吧经营的商品信息进行管理。采用了JAVA,Socket套接字等技术实现。开发工具使用了当前流行的Eclipse,其中加上了VE插件。1.4课题的主要工作及论文的组织本文共分为五章:第1章主要阐述了智能卡网吧管理的概念、特点、国内外的发展状况,介绍了本课题的来源、背景及主要研究内容。第2章主要阐述了智能卡管理系统支撑的相关技术。第3章对网吧管理系统进行了分析。第4章论述了网吧管理系统的数据库设计。第5章论述了只能卡网吧管理系统的具体实现。第6章是结束语。第2章系统相关技术2.1JAVA语言的特点Java是面向对象的编程语言。面向对象技术较好的解决了当今软件开发过程中新出现的种种传统面向过程语言所不能处理的问题,包括软件开发的规模扩大,升级加快,维护量增大以及开发分工日趋细化、专业化和标准化等[1]。面向对象的核心是以更接近于人类思维的方式建立计算机模型,它利用类和对象的机制将数据与其上的操作封装在一起,通过统一的接口与外界交互,使反映现实世界实体的各个类在程序中能够独立、自治和继承。Java包括一个支持HTTP(超文本传输协议)和FTP(文件传输协议)等基于TCP/IP的子库[1]。因此Java应用程序可凭借URL(统一资源定位符)打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。其分布环境是一项很宏大的工程,但Java语言的语法特性可以很容易的实现这一目标。Java语言独特的运行机制使得它具有良好的二进制可移植性,利用Java,开发人员可编写出与具体平台无关,普遍适用的应用程序,大大降低了开发、维护和管理的开销,也就是一次编译,随处运行,方便存取数据库的JDBAPI,CORBA、JND1、RM1技术以及能够在Internet应用中保护数据的安全模式等功能,为用户和开发人员提供一个具有高度的可移植性、兼容性和安全性的平台。Java语言还具有动态性的特点,它的动态性是面向对象设计方法的扩展,它允许程序动态的装入运行过程中所需要的类。2.2SWT/JFace简介2.2.1SWT/JFace的特点Eclipse不仅提供了一个优秀的JavaIDE(集成开发环境),还提供了一个能够替代JavaAWT和Swing的SWT和JFace库。JavaAWT实现了有关GUI元素和图形操作的Java和C库,Swing则使用纯Java语言在此基础上实现更高级的GUI元素。相比较而言,SWT简化了各种针对本地窗口系统函数的调用方式。由于操作系统紧密集成,采用SWT实现的应用程序的感官效果及响应方式同本地程序几乎一样。对于Java而言,这是子桌面应用领域的一个突破。SWT是提供的开发平台Eclipse中使用的一个窗口控件集和图形库,它集成于本机窗口系统,但有独立于操作系统窗口的API[3]。同SWT相比,JFace库中的组件不会直接与本地窗口系统打交道。JFace完全采用Java实现,并采用SWT中的类和方法,实现一些简单的GUI元素。无疑,SWT/JFace像一股清新的风吹入Java的GUI开发领域,为这个沉闷的领域带来了勃勃生机。虽然SUN不接纳SWT/JFace作为Java的一种图形API标准,但它仍然借着Eclipse的优异表现,以不可阻挡之势向前发展着。借助SWT,可以轻松的开发出高效率的GUI程序,并且拥有标准的Windows外观。Eclipse软件就是基于SWT/JFace构建的。2.2.2SWT/JFace的优缺点SWT的先进之处在于它能够将基于SWT开发的紧密集成到所在的环境中去,普通用户不会觉察出基于SWT的用户界面和本地用户界面有什么不同之处[3]。比如在Windows2000中,SWT的按钮看起来就像Windows2000中的按钮。在WindowsXP中就像WindowsXP中的按钮。当转到Mac操作系统中时,按钮又与Mac操作系统中的一样了。如果使用Swing则按钮始终保持一种样式。SWT采用了本地事件处理机制,所以从响应时间上来说,基于SWT开发的程序比基于Swing开发的程序稍微快一些,并且需要的资源要少一些。同时由于大部分基于SWT的小部件仅仅是本地窗口的适配器,所以在诸多异构的部件和各种图形子系统加速设备下,SWT可能更稳定。但是使用SWT也有它的局限性。(1)基于SWT的应用程序只能在实现了SWT的平台上运行。(2)一般来说,各种SWT的实现是等同的。但对于某些功能来说,GUI元素的行为可能因平台的不同而不同。因此一个软件在多个平台上进行部署的时候,最好是在各个平台上都能够测试。(3)同AWT相比,SWT显示的进行资源管理,SWT中使用的资源,如图片、颜色等,不再需要时,必须进行释放。在这一点上,SWT有类似C/C++里面的资源动态分配方式。2.3Socket简介套接字(Socket)是网络通信的基本操作单元,又被称作端口,通常用来实现客户方和服务器方的连接。网络上的两个程序通过一个双向的通信连接实现数据的交换,在实现双向通信链路的每一端都建立一个Socket,通过对Socket的读/写操作实现网络通信功能。套接字是网络通信的一个标准,它就像房中的电源插座,无论是电灯还是电脑等电器,它们只要使用220V50Hz的交流电压,插在电源插座上就能正常工作[4]。套接字可以分为以下三种类型:(1)流套接字这是最常用的套接字类型,TCP/IP协议中的TCP协议使用此类接口,它提供面向连接的、无差错的、发送先后顺序一致的、包长度不限和非重复的网络信包传输。(2)数据报套接字TCP/IP协议族中的UDP协议使用此类接口,它是无连接的服务,以独立的信包进行网络传输,信包最大长度为32KB,传输不保证顺序性、可靠性和无重复性,它通常用于单个报文传输或可靠性不重复的场合。(3)原始数据报套接字提供对网络通信下层通信协议(如IP协议)的直接访问,它一般不是提供给普通用户的,主要用于开发新的协议或用于提取协议较隐蔽的功能。所有Socket通信程序的基本结构都是一样的,主要有创建Socket、打开连接到Socket的输入流和输出流、按照一定的协议对Socket进行读写操作、关闭Socket这四个步骤,通过这四个步骤可以完成一般的Socket通信[4]。为了完成Socket通信,包中提供了Socket和ServerSocket这两个类,它们分别用来表示双向连接的客户端和服务端。2.4URL与URLConnectionURL的全称是UniformResourceLocator,意思是统一资源定位器,表示的Internet上某一资源的地址,通过URL可以访问Internet上主机所开放的资源。URL由协议名和资源名组成,中间用“:”分隔。协议名指定获取资源所使用的传输协议,比如:ftp、http等。而资源名则是资源的完整地址,包括主机名、端口号、文件名或者文件内部的一个引用。URLConnection是一个抽象类,代表与URL指定数据源的动态连接,URLConnection类提供比URL类更强的服务器交互控制。如果你建立了与远程服务器之间的连接,你可以在传输它到本地之前URLConnection来检查远程对象的属性。这些属性为HTTP协议的规范定义,并且仅对用HTTP的协议的URL对象有意义。同时,它还允许用POST或PUT和其他HTTP请求方法将数据送回服务器。在包中只有抽象的URLConnection类,其中的许多方法和字段与单个构造函数一样是受保护的,这些方法只可以被URLConnection类及其子类访问。2.5java链表的实现线型表的链式存储结构是把线型表的数据元素存放在节点中,因此,用链式存储结构实现的线性表称为链表。节点(node)由数据元素域和一个或若干个指针域组成。指针是用来指向其他节点地址的,指向链表第一个节点的指针成为链表的头指针,一个链表由头指针指向第一个节点,每个节点的链指向其后继节点,其中一个节点的链为空(null)。在C或C++里链表可以通过指针的操作来实现,在Java中是没有指针的,但是可以通过使用对象的引用等方法实现链表。链表的节点个数称为链表的长度,长度为零时称为空表。链表可以根据链的个数可以分为单向链表和双向链表,本文只讨论单向链表,一个单向链表包含一组节点,每个节点都包含了有关数据和指向下一个节点的指针。表的头就是一个指针,它指向第一个节点,而表的结束则用空指针表示。2.6C/S结构概述C/S结构(Client/Server结构)是大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如ORACLE、SYBASE、InfORMix或SQLServer。客户端需要安装专用的客户端软件。传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。而且代价高,效率低。如本文介绍的智能卡网吧管理系统软件就是典型的C/S体系结构管理软件。一、C/S结构的优点和缺点C/S结构的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。缺点主要有以下几个:只适用于局域网。而随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要我们的系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。对客户端的操作系统一般也会有限制。可能适应于Win98,但不能用于win2000或WindowsXP。或者不适用于微软新的操作系统等等,更不用说Linux、Unix等。二、C/S架构软件的优势与劣势(1)、应用服务器运行数据负荷较轻。最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。(2)、数据的储存管理功能较为透明。在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,前台应用可以违反的规则,并且通常把那些不同的(不管是已知还是未知的)运行数据,在服务器程序中不集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。在C/S体系的下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理。(3)、C/S架构的劣势是高昂的维护成本且投资大。首先,采用C/S架构,要选择适当的数据库平台来实现数据库数据的真正“统一”,使分布于两地的数据同步完全交由数据库系统去管理,但逻辑上两地的操作者要直接访问同一个数据库才能有效实现,有这样一些问题,如果需要建立“实时”的数据同步,就必须在两地间建立实时的通讯连接,保持两地的数据库服务器在线运行,网络管理工作人员既要对服务器维护管理,又要对客户端维护和管理,这需要高昂的投资和复杂的技术支持,维护成本很高,维护任务量大。2.7本章小结本章主要介绍了系统使用到的相关技术,包括JAVA平台和JAVA语言特点的介绍、SWT/JFace技术的特点以及它的优缺点的罗列、URL与URLConnection(统一资源定位器)的相关介绍、Java链表的整个实现过程、三种Socket套接字技术的简介,以及C/S结构的一些基本介绍。

第3章系统分析3.1系统分析概述采用自顶向下的结构化分析方法分析和表达用户需求的方法:图3-1需求分析图用结构化的方法做需求分析,可以将任何一个系统可以抽象成如下图的形式:图3-2系统抽象图将处理功能分解成若干个子功能,再将各个子功能继续分解,直到把整个系统工作流程表达清楚为止。3.2系统主要功能本系统主要功能涉及到如下部分:卡片管理、系统设置,聊天服务管理,另外还有管理员对网吧进行上下机管理和网吧经营情况的管理。以下是本系统的模块图:图3-3系统模块图1.卡片管理功能包括卡片发行、卡片充值、卡片注销、卡片挂失等模块。客户可以用卡片进行网吧上网消费,卡片有三种类型,即普通卡、银卡、金卡和计时卡。每种卡片可以拥有不同的优惠方式,例如普通卡可以不打折,银卡和金卡都可以进行打折。上网顾客在卡中储存一定数量的金额,每次上机费用从中扣除。待卡中金额用完时可以向卡中加存,继续使用。如卡片遗失就可去该网吧进行挂失。客户若不需要该网吧计费卡也可注销,拿回卡片内剩余的金额。2.系统设置功能系统管理是网吧管理员才具有的功能,即网吧的费率设置,智能卡计费管理系统的各项功能都是根据经营中的实际作经验及长期发展策略而提炼而成,比如为了支持网吧优惠政策,提供灵活机动的费率设置功能,让网吧管理系统真正成为网吧的管家,而不是碍手碍脚的障碍。包括网吧不同卡片不同时间段的收费设置和网吧所售商品的进售价设置,通过这两个设置可以根据当时的需求对价格进行管理。3.聊天服务管理功能聊天程序分为服务器端和客户端两个部分,服务器端的功能为:在特定的端口上进行侦听,等待客户端连接;客户可以配置服务端的侦听端口,默认端口为8888;向已经连接到服务端的客户发送系统消息;统计在线人数;当停止服务时断开所有的用户连接。客户端的功能为:连接到已经开启聊天服务的服务端;客户可以配置要连接服务器端的IP地址与端口号;用户可以配置连接后显示的客户名;当服务器开启的话,用户可以随时登陆和注销;用户可以向网吧管理员发送消息,提出需要解决的问题或者要求。4.上下机情况功能这一功能主要是管理网吧客户的上下机,客户一上机即可以对其进行计费,在上机的过程中客户可以发送消息给管理员,要求购买什么商品和购买商品的数量,网吧管理员即可对其卡片进行相应的扣费。若客户要下机了,就可以进行结帐退出。5.网吧经营情况功能这一功能主要是显示网吧过去到现在的营业情况,网吧产生的经济效益对网吧管理员和老板来说可以一目了然,在这一模块中还可以根据年月来显示网吧的经营记录,通过选择需要显示的年份或者月份从而显示相关的一系列记录,方便统计比较分析,提高经济效益。6.退出系统功能只要点击退出按钮,就会出现提示对话框“确定要退出吗?”,点击“是”即可退出系统。3.3数据流图数据流图是用来描述数据处理的过程,不反映时间的顺序,只反映数据的流向、自然的逻辑过程和必要的逻辑数据存储,即表示“做什么”,而不表示“怎么做”我毕业设计的流图大体如下所示:卡片管理网吧客户系统管理聊天服务管理卡片管理网吧客户系统管理聊天服务管理网吧经营情况管理网管修改各种费率信息数据库联系网管操作操作联系交换数据3.4数据字典数据字典是对系统用到的所有数据项和结构的定义,以确保开发人员使用统一的数据定义。本系统中的部分的数据字典如下:数据项数据项:卡片ID含义说明:唯一的表示一张卡片类型:整型长度:11取值含义:用户自定义数据项数据项:卡片类型含义说明:唯一的表示一种卡的类型类型:字符型长度:10数据结构数据结构:卡片信息含义说明:记录卡片的所有信息。组成:卡片ID、卡片类型、持卡人姓名、持卡人身份证号、卡内金额、卡片押金、卡内赠送金额数据结构数据结构:卡片费率信息表含义说明:记录各类卡片上网消费的收费信息。组成:卡片类型、最低收费、最小收费单位、每单位收费、通宵计费单位、通宵每单位计费数据存储数据存储:上下机情况信息说明:记录客户上下机情况信息存取方式:随即存取处理过程处理过程:上下机说明:客户上下机输入:客户上下机信息输出:客户下机信息处理:保存上下机信息到数据库3.5本章小结本章主要概述了系统的各个功能模块,包括系统设置功能、卡片管理功能、聊天服务管理功能、退出系统功能、网吧经营情况功能、上下机情况功能。也分别介绍了各个功能模块的相应的功能;画出了系统的数据流图,写出了部分数据字典。为系统设计和实现的展开打好了基础。

第4章数据库设计数据库设计的目标是要求完全满足业务的数据存储要求。如果能够设计一个合理的数据库模型,不仅会降低程序编程和维护的难度,也会提高系统实际运行的性能,因而必须仔细的制定设计步骤方案,了解规范的设计方法和必要的规则。4.1数据库设计原则一个成功的管理系统,是由:[50%的业务+50%的软件]所组成,而50%的成功的软件又有[25%的数据库+25%的程序]所组成,数据库设计的好坏是一个关键。如果把企业的数据比做生命所需的血液,那么数据库设计就是应用中最重要的一部分。对于智能卡网吧管理系统来说,拥有大量的上网人员需要强有力的数据库支撑,但是对于本系统来说,由于不会在实际环境中运行,所以数据库的使用可以选择容易使用,并且易于维护的、容易获取的数据库作为后台存放网吧相关信息等的数据库最终选择了MYSQL作为后台支持数据库。4.2概念结构设计E-R模型和关系模型是两种对数据库不同的描述,在E-R模型中用实体集和联系表示现实世界中的事物及其相互之间的关系;而在关系模型中则用单一的结构来组织数据。所以,在这里就存在一个如何将E-R模型转化为关系模型的问题。下面介绍转化所需要遵守的几条准则:★E-R模型中的每一个实体都转化成一个同名的关系,实体集的属性就是关系的属性,实体集的码就是关系的码。★E-R模型中的每一个联系也用一个关系表示,与该联系相连的各实体集的码以及联系的属性转化为关系的属性。该关系的码有三种情况:●若联系为1:1,则每个实体的码均是该关系的候选码。●若联系为1:n,则关系的码为n端实体集的码。●若联系为m:n,则关系的码为各实体集码的组合。★具有相同码的关系模式可以合并(合并原则)。在这里我们将要设计的是数据库的概念模式。根据对数据流图和数据字典的分析,我们可以确定该应用中的实体、属性和实体之间的关系,并画出表E-R图:卡片卡片NNNN消费设置消费设置M1M1费率费率账单账单NN分析统计分析统计MM总营业额 总营业额图4-1实体及其联系图cardsendcardsendidentifyPNumumnamecachPledgeinMoneycardTypecardIdidentifyPNumumnamecachPledgeinMoneycardTypecardId图4-2卡片实体及其属性图feesfeesnightunitfeesnightfeesunitunitfeestimecardTypelowestnightunitfeesnightfeesunitunitfeestimecardTypelowest图4-3费率实体及其属性图totaltotalcardTypetotalMoneybuyMoneyplayMoneytimecardTypetotalMoneybuyMoneyplayMoneytime图4-4经营汇总实体及其属性图updowncomputerupdowncomputermoneyIncardcomputerIdmoneyIncardcomputerIdcomputerAdresscomputerAdressplayMoneybuyMoneytotalMoneycardTypetimeplayMoneybuyMoneytotalMoneycardTypetime图4-5上下机实体及其属性图goodsgoodsbuyingPricebuyingPricequntitygoodsTypesellingPricegoodsNameunitquntitygoodsTypesellingPricegoodsNameunit图4-6商品实体及其属性图4.3逻辑结构设计设计逻辑结构的是和分三步进行:将概念结构(E-R图)转化为一般关系模型将转化来的关系模型向MYSQL支持下的数据模型转化对数据模型进行优化,消除冗余字段。对数据依赖进行极小化处理。对关系模式进行必要的分解合并和优化,形成以下的逻辑结构表4-1cardsend信息表字段数据类型大小允许空/主键描述cardIdint11NO/主键卡片idcardTypevarchar20NO卡片类型cachPledgefloat8NO卡片押金inMoneyfloat8NO卡内金额givePresentfloat8NO卡内赠送金额namevarchar20NO持卡人姓名identifyPNumvarchar45NO持卡人身份证表4-2卡片fees信息表字段数据类型大小允许空/主键描述cardtypevarchar10NO/主键卡片类型lowestfloat8NO最低收费timeint11NO最小收费单位unitfeesfloat8NO每单位收费nightfeesunitint11NO通宵计费单位nightunitfeesfloat8NO通宵每单位计费表4-3goods信息表字段数据类型大小允许空/主键描述goodsIdint11NO/主键商品idgoodsTypevarchar10NO商品类型goodsNamevarchar20NO商品名称goodsUnitvarchar10NO商品单位goodsQuantityint11NO商品数量sellingPricefloat8NO进价buyingPricefloat8NO售价表4-4total汇总表字段数据类型大小允许空/主键描述timevarchar20NO/主键经营时间playMoneyfloat8NO上网消费buyMoneyfloat8NO购物消费cardTypevarchar10NO卡片类型totalMoneyfloat8NO总消费表4-5updowncomputer临时信息表字段数据类型大小允许空/主键描述computerIdint11NO/主键计算机idIpadressvarchar25NO计算机IpcardTypevarchar20YES卡片类型moneyIncardfloat8YES卡内金额timevarchar20YES上机时间playMoneyfloat8YES上网消费buyMoneyfloat8YES购物消费totalMoneyfloat8YES总消费yearint11YES上机年份monthint11YES上机月份dayint11YES上机时间(日)hourint11YES上机时间(时)minuteint11YES上机时间(分)secondint11YES上机时间(秒)4.4本章小结本章介绍了数据库的设计原则和概念结构的设计,作了对系统的数据库设计工作。画出了E-R图和各个数据库表的实体及其属性图,分析了表与表之间的关系,以及写出了详细的表结构信息。

第5章系统实现5.1插件的导入开发这个系统我用的开发工具是Eclipse,在Eclipse中我导入了三个插件用来进行可视化的GUI编程,它们分别是emfsdoxsdSDK2.2,GEF-ALL-3.3和VE-SDK-1。这三个插件导入过程很轻松,只要分别将三个包中的features和plugins文件夹中的内容全部分别复制到Eclipse的features和plugins文件夹内。加入到工程后,重新启动Eclipse,这时候在工程中就可以新建可视化的类了即(Visualclass),这样为开发系统的界面带来了很多方便。5.2配置数据库本系统用JDBC来连接数据库,数据库是MYSQL,所以需要导入mysql-connector-java-3.1.jar这个java包。导入方法为:在工程下新建一个文件夹lib,把mysql-connector-java-3.1.jar这个jar包放入lib文件夹中,然后在工程的属性中就可添加新的库。这是com.mysql.jdbc.Driver是JDBC连Mysql数据库的驱动程序;jdbc:mysql://localhost:3306/system是连接数据库的url;两个root分别为Mysql的用户名和密码。5.3界面的实现5.3.1JavaVE实现系统服务端主界面系统服务端主页面是MainFrame.java这个文件,具体代码如下: publicvoidcreateSShell(){ sShell=newShell(display); sShell.setText("智能网吧管理系统"); sShell.setSize(newPoint(800,500)); sShell.setLayout(null); MenumenuBar=newMenu(sShell,SWT.BAR); MenuItemitemCard=newMenuItem(menuBar,SWT.CASCADE); Menumenu1=newMenu(itemCard); MenuItemitemCardsend=newMenuItem(menu1,SWT.PUSH); MenuItemitemCardinmoney=newMenuItem(menu1,SWT.PUSH); MenuItemitemCardloss=newMenuItem(menu1,SWT.PUSH); MenuItemitemCarddistroy=newMenuItem(menu1,SWT.PUSH); MenuItemitemSystemSet=newMenuItem(menuBar,SWT.CASCADE); Menumenu2=newMenu(itemSystemSet); MenuItemitemFeesSet=newMenuItem(menu2,SWT.PUSH); MenuItemitemGoodsSafeguard=newMenuItem(menu2,SWT.PUSH); MenuItemnews=newMenuItem(menu2,SWT.PUSH); itemSystemSet.setMenu(menu2); Menumenu3=newMenu(itemHelp); MenuItemitemAbout=newMenuItem(menu3,SWT.PUSH); MenuItemitemExit=newMenuItem(menuBar,SWT.PUSH); MenuItemitemChat=newMenuItem(menuBar,SWT.PUSH);sShell.open();}界面效果如下:图5-1系统服务端主界面页面中定义了两个选项卡,一个选项卡用来控制客户的上下网情况,对于未有人上网的计算机可以进行上网服务,对于已经有人上网的计算机可以进行下网服务和购物服务。另一个选项卡用来统计网吧经营情况,网吧管理员可以根据年份或者月份对经营情况进行查看和统计。5.3.2JavaVE实现系统客户端主界面系统客户端主页面是ClientLogin.java这个文件,具体代码如下:publicvoidcreateSShell(){ sShell=newShell(); sShell.setText("欢迎界面"); sShell.setSize(newPoint(300,200)); sShell.setLayout(null); connect=newButton(sShell,SWT.NONE); connect.setBounds(newRectangle(114,98,65,29)); connect.setText("联系网管"); sShell.open();界面效果如下:图5-2系统客户端主界面5.4具体功能的实现5.4.1卡片管理模块(1)系统的卡片发行对话框:图5-3卡片发行对话框管理员输入卡片信息,点击发行进行卡片发行。这里进行了非空验证:if(cardType.getText()==null||cardType.getText().trim().equals("")){messageBox.setMessage("卡片类型不能为空!"); }if(cachPledge.getText()==null||cachPledge.getText().trim().equals("")){messageBox.setMessage("押金不能为空!"); }if(inMoney.getText()==null||inMoney.getText().trim().equals("")){ messageBox.setMessage("充值金额不能为空!"); }if(name.getText()==null||name.getText().trim().equals("")){messageBox.setMessage("姓名不能为空!"); } Stringstr5=identifyPNum.getText();if(identifyPNum.getText()==null||identifyPNum.getText().trim().equals("")){messageBox.setMessage("身份证号码不能为空!");}这里将对身份证号码进行唯一性验证,单击“检查唯一性”按钮,系统将对输入的身份证号码与数据库中已经存在的身份证号码进行逐个匹配,如果已存在在数据库中则发卡失败,返回继续填写信息;在其它信息和身份证号码格式都填写正确的情况下若身份证号码不存在数据库中则发卡成功。图5-4发卡成功对话框(2)系统的卡片挂失对话框:图5-5发髂挂失对话框管理员输入来挂失客户的身份证号码,点击“查找”按钮,客户的卡片内的一切信息就会显示出来,包括卡内的剩余金额balance也会显示出来,然后点击“挂失”按钮,就会出现一个选择对话框是否返回客户balance元,点击“”就挂失成功,卡内的剩余金额就变成0元。(3)系统的卡片充值对话框:图5-6卡片充值对话框通过卡号对卡片进行充值,关键代码为:Stringsql1="selectinMoneyfromcardsendwherecardId='"+str1+"'";//查找相应要充值卡片的本来剩余金额rs=stmt.executeQuery(sql1);//执行上条SQL语句 if(rs.next()){str2=rs.getFloat("inMoney");//得到剩余金额的值} floatstr4=str2+str3;//剩余金额与刚充值的金额相加Stringsql2="updatecardsendsetinMoney="+str4+"wherecardId='"+str1+"'";//把数据库中的剩余金额改为充值之后的金额,从而充值动作完成stmt.executeUpdate(sql2);//执行上条SQL语句(4)系统的卡片注销对话框:图5-7卡片注销对话框若客户不需要此张卡片,或者卡片已经永久遗失,则可以通过该功能注销卡片,通过用户的身份证注销卡片,返还客户卡片内的剩余金额。关键代码如下:Stringsql="select*fromcardsendwhereidentifyPNum='"+str1+"'";//查找要注销卡片的相关信息,并显示在对话框中 rs=stmt.executeQuery(sql);//执行以上SQL语句 Stringsql="deletefromcardsendwhereidentifyPNum='"+str2+"'";//删除要注销卡片的所有信息stmt.executeUpdate(sql);//执行以上SQL语句5.4.2系统管理模块点主对话框上的菜单栏中的系统设置,下拉菜单出现三个选择项:收费设置、商品资料维护、系统初始化。收费设置收费设置类FeesSet.java调用了修改卡片费率的类ModifyFees.java,关键代码为:ModifyFeesmodify=newModifyFees();//创建实例对象modifymodify.createSShell(ctype);//引用类ModifyFees中的createSShell()方法图5-8收费设置对话框选中要修改的卡类的收费信息行,接着点击修改记录按钮,即会弹出修改收费信息页面,若没有选中数据项,则会报错。图5-9修改收费信息对话框图5-10报错对话框商品资料维护商品资料维护类GoodsSafeguard.java调用了商品资料信息修改类GoodsModify.java。关键代码为: ModifyGoodsmodify=newModifyGoods();//创建实例对象modify modify.createSShell(goodsIp);//引用类ModifyGoods中的createSShell()方法图5-11商品资料设置对话框在商品资料设置对话框中有修改商品信息和添加商品信息的功能,选中要修改的信息项,然后点击修改记录,弹出修改商品信息对话框。图5-12修改商品信息对话框修改后点修改按纽修改商品信息。关键代码:Stringsql="updategoodssetquantity="+Quantity+",buyingPrice="+BuyingPrice+",sellingPrice="+SellingPrice+"wheregoodsName='"+GoodsName+"'";stmt.executeUpdate(sql);//调用executeUpdate()方法实现修改商品信息。在商品资料设置对话框中点击添加记录按钮,即会弹出添加商品信息对话框,在添加商品信息对话框中填写完整要添加商品的信息后,点击添加按钮完成了对商品信息的添加,关键代码:strSQL="insertintogoods(goodsType,goodsName,unit,quantity,buyingprice,sellingprice)values('"+str1+"','"+str2+"','"+str3+"','"+str4+"','"+str5+"','"+str6+"')";stmt.executeUpdate(strSQL);//调用executeUpdate()方法实现添加商品信息。系统初始化系统初始化的类为New.java,该类实现系统中部分信息的处始清零,关键代码为:Stringsql1="deletefromgoods";//商品资料初始化代码 stmt.executeUpdate(sql1);//调用executeUpdate()方法执行sql语句Stringsql1="deletefromtotal";//经营情况初始化代码stmt.executeUpdate(sql1);//调用executeUpdate()方法执行sql语句Stringsql1="deletefromfees";//收费资料初始化代码stmt.executeUpdate(sql1);//调用executeUpdate()方法执行sql语句图5-13系统信息初始化对话框点“商品资料初始化”按钮,商品资料信息表中的内容全部被清楚,可以重新设置商品资料的一切信息。其它按钮也是如此。5.4.3服务端聊天管理模块该模块是和客户端进行联系的。点主页面的开启聊天服务图5-14服务端聊天主对话框管理员要启动服务,客户端的聊天程序才能连接上服务器而进行正常的聊天,点端口设置可以对要侦听的端口进行设置,默认的端口号为8888,点停止服务服务端就会被关闭。服务端聊天管理主要包括6个文件,它们的功能如下:(1)ChatServer.java包含名为ChatServer的public类,其主要功能为定义服务器端的界面,添加事件侦听与事件处理。调用ServerListen类来实现服务端用户上线与下线的侦听,调用ServerReceive类来实现服务器端的消息收发。(2)ServerListen.java该类实现服务端用户上线与下线的侦听。该类对用户上线下线的侦听是通过用户链表(UserLinkList)来实现的,当用户上线下线的情况发生变化时,该类会对主类的界面进行相应的修改。(3)ServerReceive.java该类是实现服务器消息收发的类。该类分别定义了向客户发送消息的方法,发送的消息会显示在主界面类的界面上。PortConf.java该类是对服务器端侦听端口进行修改配置的类。(5)Node.java用户链表的节点类,定义了链表中的用户。该类与前面所讲的链表节点Node类的功能相当。(6)UserLinkList.java用户链表节点的具体实现类。该类通过构造函数构造用户链表,定义了添加用户、删除用户、返回用户数、根据用户名查找用户、根据索引查找用户这5个方法。点退出按钮,即会弹出是否真的要退出的选择对话框。点击是或者按回车键,就退出了界面。图5-15聊天服务退出对话框5.4.4客户端聊天服务模块聊天服务客户端主要包括5个文件,它们的功能如下:(1)ChatClient.java包含名为ChatClient的public类,其主要功能为定义客户端的界面,添加事件侦听与事件处理。该类定义了Connect()与DisConnect()方法实现与服务器的连接与断开连接。同时该类还定义了SendMessage()方法向网管发送消息或者与网管悄悄话聊天。(2)ClientReceive该类是实现服务器端与客户端消息收发的类。(3)ConnectConf.java该类继承自对话框,是用户对所要连接的服务器IP及侦听端口进行修改配置的类。(4)UserConf.java该类也继承自对话框,是用户对连接到服务器时所显示的用户名进行修改配置的类。图5-16聊天服务客户端界面点聊天服务客户端界面用户设置,用户可以配置连接后显示的用户名,若没有配置用户名,则显示系统默认的用户名。关键代码:userInputName=userName.getText();/*输入的用户名在非空和字符小于15个字符的情况下,保存成功*/图5-17客户端用户名配置界面点聊天服务客户端界面连接设置,用户可以配置要连接服务器的IP地址与端口号。关键代码: userInputIp=""+InetAddress.getByName(inputIp.getText());userInputIp=userInputIp.substring(1);//判断端口号是否合法savePort=Integer.parseInt(inputPort.getText());if(savePort<1||savePort>65535){DLGINFO.setText("侦听端口必须是0-65535之间的整数!");inputPort.setText("");return;}//判断端口号是否合法图5-18连接设置界面点登录,如果服务器端已经启动了服务,则用户可以正常与网管进行聊天。用户登陆后也可以随时注销和退出客户端聊天界面。如果服务器没有被启动,登录就失败。关键代码: try{ socket=newSocket(ip,port); } catch(Exceptione){ JOptionPane.showConfirmDialog( this,"不能连接到指定的服务器。\n请确认连接设置是否正确。","提示",JOptionPane.DEFAULT_OPTION,JOptionPane.WARNING_MESSAGE); return; }图5-19客户端用户登录失败界面5.4.5系统其它功能模块(1)网吧经营查询模块图5-20网吧经营查询界面在这一模块中可以根据年月来显示网吧的经营记录,通过选择需要显示的年份或者月份从而显示相关的一系列记录,方便统计比较分析,提高经济效益。关键代码:Stringsql1="select*fromtotalwhereyear="+Year+"";//SQL语句按年份查询rs=stmt.executeQuery(sql1);//执行SQL语句Stringsql1

温馨提示

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

评论

0/150

提交评论