基于Java的出租车计价器设计与实现

怪咖先生

发布日期: 2020-07-31 16:56:39 浏览量: 65
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

摘 要

在我国,出租车行业是八十年代初兴起的一项新兴行业,随着出租车的产生,计价器也就应运而生。但当时在全国没有一家企业能够生产,因而那个时期的计价器是由台湾引进。台湾是计价器的主要生产场地,目前全世界的计价器中有90%为台湾生产。现今我国生产计价器的企业有上百家,主要是集中在北京.上海.沈阳和广州等地。在我国,经济尚处于发展阶段,由于人民的生活水平以及道路交通的限制,私家汽车的拥有率在短期内不会有较大的提高,因此出租车扮演者重要的角色。出租车计价器则是出则车上必不可少的重要仪器,它是负责出租车应运收费的专用智能化仪表。我国的第一家生产计价器企业是重庆市起重机厂,最早的计价器全部采用机械齿轮结构,只能完成简单的计程功能,可以说早期的计价器就是一个里程表。随着科学技术的发展,产生了第二代计价器。它采用了手摇计算机与机械结构相结合的方式,实现了半机械半电子化。此时它在计程的同时还可以完成计价的工作。大规模集成电路 的发展又产生了第三代计价器,也就是全电子化的计价器。它的功能也在不断完善.当单片机出现并应用于计价器后,现代出租车计价器的模型也就基本具备了,它可以完成计程,计价,显示等基本工作。

在出租车是城市交通的重要组成部分,行业健康和发展也获得越来越多的关注。汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。因此,汽车计价器的研究也是十分有应用价值的。出租车计价器不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、,特别是对小批量、多品种的产品需求。通过本课题的设计,能够综合运用学过的数字系统、C#语言等知识,学习MyEclipse软件编辑器与jdk软件编辑器的使用方法。研究内容:按照计费标准能实现计费功能。计价器是出租汽车的经营者和乘坐出租汽车的消费者之间用于公平贸易结算的工具,因而计价器计价准确与否,直接关系到经营者和消费者的经济利益。依据国家有关法律、法规,出租汽车计价器是列入国家首批强制检定的工作计量器具之一,也是近年来国家质量技术监督部门强化管理的六类重点计量器具之一。在出租车是城市交通的重要组成部分,行业健康和发展也获得越来越多的关注。汽车计价器是乘客与司机双方的交易准则,它是出租车行业发展的重要标志,是出租车中最重要的工具。它关系着交易双方的利益。具有良好性能的计价器无论是对广大出租车司机朋友还是乘客来说都是很必要的。

关键词:出租车计价系统;java语言;MyEclipse软件编辑器;Jdk软件编辑器;单片机

Abstract

In our country, the taxi industry is rising in the early eighty s, a new industry with a taxi, the meter is also arises at the historic moment.But at that time, no firm can produce throughout the country, and the period of the meter is introduced from Taiwan.Taiwan is the main production area of the meter, 90% of the world of the meter for production in Taiwan.Today hundreds meter production enterprises in China, mainly concentrated in Beijing. Shanghai. Shenyang and guangzhou and other places.In China, the economy was still in the stage of development, people’s living standard and the limitation of road traffic, private car ownership in the short term will not have a larger increase, thus played a crucial role for the taxi.The taxi meter is an important instrument is out of the car, it is responsible for the taxi should charge special intelligent instrument.Our country is the first production of the meter enterprises crane factory in chongqing, one of the earliest meter are all made of mechanical gear structure, can only do simple log function, a meter of the meter is an early, so to speak.With the development of science and technology, the second generation of the meter.It USES the hand computer with a combination of mechanical structure, realizes the mechanical and electronic.At this point it at the time of log can also complete the valuation work.The development of large scale integrated circuit and the third generation of the meter, which is all electronic meter.Its functions are perfect. After the single-chip computer appeared and applied to the meter, modern model is basically the taxi meters, it can complete the log, valuation, the basic work. Such as show.

In the taxi is an important part of urban traffic, industry growth, health and get more and more attention.Auto meter is rule of passengers and the driver both sides of the transaction, it is an important symbol of the taxi industry development, is the most important tools in the taxi.It was about the interests of both parties.Have good performance of the meter to the taxi driver friend or passengers is very necessary.Therefore, the study of the auto meter is also very has the application value.Taxi meter can not only solve the electronic system miniaturization, low power consumption, high reliability, and the software development cycle is short, low cost, and especially for small batch and many varieties of product demand.Through this topic design, can the integrated use of learned knowledge such as digital system, the c # language, learning MyEclipse software editor with the use of the JDK software editor.The research content: according to the charging standards can realize functions.Is the meter taxi operators and taking a taxi consumers between tool for fair trade settlement, therefore the meter denominated in accurate or not, is directly related to the economic interests of the operators and consumers.According to relevant state laws and regulations, and the taxi meter is included in one of the first batch of national compulsory verification work measuring instruments, and in recent years, the state administration of quality and technical supervision departments strengthen the management of one of the six key measuring instruments.In the taxi is an important part of urban traffic, industry growth, health and get more and more attention.Auto meter is rule of passengers and the driver both sides of the transaction, it is an important symbol of the taxi industry development, is the most important tools in the taxi.It was about the interests of both parties.Have good performance of the meter to the taxi driver friend or passengers is very necessary.

Keywords: taxi billing system ;MyEclipse ;Java language ; software (t1) editorThe Jdk; single-chip microcomputer software editor

1 绪论

随着我国经济的迅速发展,人民生活水平的显著提高,城市的交通日趋完善,虽然私家车的拥有量在大幅度的提高,但出租车仍然是城市交通的重要组成部分,行业健康和发展也获得越来越多的关注。汽车计价器是乘客与司机双方的交易准则,它关系着交易双方的利益。具有良好性能的计价器无论是对出租车司机朋友还是乘客来说都是十分的有必要。所以,出租车计价器的研究非常的有价值。该出租车计费系统的设计包括(1)出租车信息模块,始终包含:出租车辆的车型,出租车辆的车牌号,出租车辆是否维修,可以实现基本信息的维护,增加,修改,删除。(2)司机管理模块包含:司机信息设置,司机职务设置,司机学历,司机编号,司机生日等,可以实现对司机的基本信息如:员工编号,姓名等的查询,增加,修改,删除。(3)计价模块包含:通过旅客点击派车,从而使得出租车按照时间生成一个订单,插入到订单表中(4)订单模块包含:订单数汇总,打印订单数,可以实现查看订单数,并且将这些数据打印出来。出租车计费系统可以大大降低出租车的成本,为出租车公司运营管理公司提供灵活的销售策略和强力可靠的运营平台,给用户全新的打车体验和便捷的打车服务。可以想见,出租车系统即将在新媒体时代,成为推动出租车增加的助推器。为整个出租车行业向数字化,多媒体化的转变起到关键性的作用。其将是出租车行业发展的重要标志,成为是出租车行业最重要的工具。

随着出租车市场竞争的日益激烈,出租车计价事业正面临着一个前所未有的发展时机,抓住机遇,迅速的响应市场,是出租车企业获得竞争优势刻不容缓的任务。信息产业的飞速发展以及技术水平的提高,使我们能够紧跟时代发展,建立先进的信息化的处理平台,将科学技术和企业的优秀管理经验结合起来,推动企业的进步和发展。

基于对出租车计价业务数据管理的复杂性和重要性的深刻理解,我们推出了出租车计价器系统,实现了对出租车计价业务流程的合理规划和基础数据的整合,为出租车企业全面、及时、准确的处理业务提供了基本保证,同时为企业的内部管理和决策支持提供了坚实的数据基础和分析手段。

1.1 系统开发目的

出租车计价系统可以大大降低出租车运营的成本,为出租车运营管理公司提供灵活的销售策略和强力可靠的运营平台,给用户全新的打车体验和便捷的打车服务。可以想见,出租车系统即将在新媒体时代,成为推动出租车增加的助推器。为整个出租车行业向数字化,多媒体化的转变起到关键性的作用。

1.2 系统开发目标

  • 通过设计合理的、规范化的数据存储结构,对企业的基础数据进行有效的组织、维护,提供统一的基础数据管理平台

  • 为其他子系统的运行提供共享数据环境,减少数据冗余,提高管理效率

  • 灵活设置业务管理中需要的价格、日期等参数

  • 提供对出租车、司机、订单的设置和管理

  • 采用的是矩阵式的权限管理和各级数据的校验,经过各个层次的数据的保密,面向不同的用户,分配不同的权限,并体现不同的界面,从而使得操作更加的方便与安全

  • 为各子系统提供综合服务功能

2 系统开发技术和工具

2.1 系统开发的工具

2.1.1 MySQL数据库

MySQL是个关系数据库管理系统,MySQL关系数据库管理系统,在WEB应用程序中最受欢迎的MySQL是最好的RDBMS(关系数据库管理系统、关系数据库管理系统),应用软件之一。MySQL是一个关系数据库管理系统,关系数据库数据存储在不同的表中,而不是把所有的数据放在一个大仓库,从而增加的速度和增加灵活性。MySQL使用SQL语言是一种最常用的标准化语言访问数据库。MySQL软件采用双授权策略(这个术语“授权政策”),它分为社区版和商业版本,由于其体积小、速度快、总体拥有成本低,开源的特性,特别是中小网站的发展,通常选择MySQL作为数据库的网站。MySQL开发人员的初衷是使用mSQL和快速低级的例程(ISAM)连接到表单。经过一些测试,开发人员得出结论:mSQL他们不需要那么快和灵活。这导致使用几乎像mSQL API接口用于生产他们的新SQL数据库接口,这样,mSQL写的API允许第三方代码更容易迁移到MySQL。

MySQL[2]这个名字怎么还不清楚。基本准则和大量的库和工具与前缀“我”已经有超过十年,和在任何情况下,MySQL AB的创始人之一的女儿是我的。两个MySQL给出什么名字仍然是一个谜到目前为止,包括开发人员,也不知道。

MySQL海豚标志是“sakila”的名称,它是由MySQL AB的创始人从用户在比赛中“海豚命名为“建议选择从大量的表中的名称。赢是开源软件开发人员的名字来自非洲,斯威士兰安布罗斯Twebaze提供。

2.1.2 MyEclipse 8.5

MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布和应用程序服务器整合方面有着非常大的提高工作效率。它是功能十分强大的JavaEE集成开发环境,完整支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。MyEclipse 8.5不但集成最新版本的Eclipse 3.5.2同时包含了大量当前最新版的开源框架的插件支持,对主流Java框架的支持都更新许多,所以,选择MyEclipse 8.5开发相对来说是较好的选择。

2.1.3 Tomcat 6.0

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量型应用服务器,它运行时占用非常小的系统资源,有非常好的扩展性,有支持负载平衡和邮件服务等开发应用系统常用的功能,是开发和调试JSP 程序的首选。

2.1.4 Start UML

StarUML(简称SU),是一种创建UML类图,生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML是一个开源项目之一发展快、灵活、可扩展性强。

VisioMicrosoft Office Visio 2003 是微软公司出品的一款的软件,它有助于 IT 和商务专业人员轻松地可视化、分析和交流复杂信息。它可以将复杂的文本和表格转换为简洁的Visio图表。它通过创建与数据相关的Visio图表可以来显示数据,这些图表容易刷新,并提高生产率。使用 Office Visio 2003 中的各种图表可了解、操作和共享企业内组织系统、资源和流程的有关信息。

Office Visio是统一的建模语言图标的工具,其中它提供了各种各样的丰富的模板:其中大体的模板有业务流程的流程图、业务流程的网络图、业务流程的工作流图、业务流程的数据库模型图和业务流程的软件图,这些丰富的模板可用于可视简化的业务流程、跟踪项目和资源、绘制组织结构图、映射网络、绘制建筑地图以及优化系统等业务流程。

2.1.5 PowerDesigner

PowerDesigner是美国著名Sybase公司的开发的CASE工具集,使用它就可以十分方便地对系统进行分析设计,它几乎包括了数据库模型设计的全过程。利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型等数据模型,它可以生成多种客户端开发工具的应用程序,它还可为数据仓库制作结构模型,也能对团队设计模型进行控制。它可与许多流行的数据库设计软件,例如:PowerBuilder,Delphi,VB等相配合使用更能缩短开发时间和使系统设计更加的优化。从而使得数据库的设计更加完善。

PowerDesigner主要包括以下几个功能部分:

  • DataArchitect :这是一个强大的数据库设计工具,使用DataArchitect可利用实体-关系图为一个信息系统创建”概念数据模型”-CDM(Conceptual Data Model)。并且可根据CDM产生基于某一特定数据库管理系统(例如:Sybase System 11)的”物理数据模型”-PDM(Physical Data Model)。还可优化PDM,产生为特定DBMS创建数据库的SQL语句并可以文件形式存储以便在其他时刻运行这些SQL语句创建数据库。另外,DataArchitect还可根据已存在的数据库反向生成PDM,CDM及创建数据库的SQL脚本

  • ProcessAnalyst:这部分用于创建功能模型和数据流图,创建”处理层次关系”

  • AppModeler:为客户/服务器应用程序创建应用模型

  • ODBC Administrator:此部分用来管理系统的各种数据源

  • XML文件:可以使用工具生成相应的XML文件,或者用XML文件生成相关模型

PowerDesigner的3模型文件:

  • 概念数据模型(CDM):概念数据模型是表现数据库的全部逻辑的结构,与任何的软件或者数据储藏结构没有关系。一个概念数据模型经常包括在物理数据库中仍然不能实现的数据对象。它可以给运行计划或着业务活动的数据一个正式的表现方式。使其可以完整运行

  • 逻辑数据模型 (LDM):在后期的PowerDesigner 15 中,又引入了新的模型 如 LDM,多维数据模型等。而逻辑模型是概念模型的延伸,表示概念之间的逻辑次序,是一个属于方法层次的模型。具体来说,逻辑模型中一方面显示了实体、实体的属性和实体之间的关系,另一方面又将继承、实体关系中的引用等在实体的属性中进行展示。逻辑模型介于概念模型和物理模型之间,具有物理模型方面的特性,在概念模型中的多对多关系,在逻辑模型中将会以增加中间实体的一对多关系的方式来实现。逻辑模型主要是使得整个概念模型更易于理解,同时又不依赖于具体的数据库实现,使用逻辑模型可以生成针对具体数据库管理系统的物理模型。逻辑模型并不是在整个步骤中必须的,可以直接通过概念模型来生成物理模型

  • 物理数据模型 (PDM):PDM 叙述数据库的物理实现。藉由PDM ,你考虑真实的物理实现的细节。它进入帐户两个软件或数据储藏结构之内拿。你能修正 PDM 适合你的表现或物理约束

2.1.6 SQLyog

SQLyog是美国Webyog公司研发的一款十分高效简洁、有强大功能的图形化MySQL数据库管理工具。使用SQLyog可以快速直观地让您从世界的任何角落通过网络来维护远端的MySQL数据库。

SQLyog有如下特点:

  • 它主要是用于MySQLAPI与C++的编程

  • 数据库同步和数据库结构同步十分方便快捷

  • 数据库容易使用、还支持数据表的备份、数据表的还原

  • XML、HTML等多种格式的数据的导入和导出都是被支持的

  • 大量的SQL脚本文件可以被直接运行,速度极快

  • 新版本更是增加了强大的数据迁

2.2 系统开发技术

2.2.1 编程框架

框架式抽取某类应用的共性设计的软件半成品,用户可以在其基础之上搭建自己的软件。它可以帮助处理细节、琐碎的内容;开发员集中精力与业务逻辑的实现,提高开发效率;结构性好,可扩展性强,可升级;是成熟的、稳健的。

2.2.2 Java的基本概念

Java使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。事实上,Sun设计Java的初衷正是为了解决两层模式的弊端,在传统模式中,客户端担当了过多的角色而显得辐重难负。在两层模式下,第一次部署的时候比较容易,但难于升级或改进,可伸展性也不理想。可现在Java的多层企业应用模型中将两层化模型的不同层面切分成许多的层。一个多层化应用能够为不同服务提供一个独立的层。以下是Java典型的四层结构:

  • 表现层的功能:主要的功能是负责客户端的展示

  • 服务层的功能:主要的功能是直接为客户端提供的服务或功能

  • 领域层的功能:主要的功能是系统内的领域活动

  • DAO层的功能:主要的功能是数据访问对象,通过领域实体对象来操作数据库

2.2.3 Java 层结构的特点

  • 面向对象:面对对象是真实的世界模型的延伸。真实的世界中的实体都是可以看成一个对象的。他们之间是通过信息的传递与作用,任何实体都可以归属到一类事物中,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。 所有面向对象编程语言都支持三个概念:封装、多态性和继承,Java也不例外。现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表示对象的方法。封装,通俗的来讲就是用一个自主式的框架去把对象的数据和方法联系在一起。面对的对象是支持封装的方式,是其最基本的单位。Java的封装性一般是比较强的, Java没有变量,没有主函数, Java中绝大部分的成员都是对象,其中除过数字类型、字符类型和布尔类型。这些类型,Java也是提供了与之对应的对象类型便于其他的对象进行交互操作

  • 可移植性:计算机软件系统上的程序经过了一次的编译可以移植到其他的计算机软件系统上去执行,经过粘贴与复制就能不影响到这个程序的运行的效果,该程序是可以完美运行

  • 安全性:Java 应用程序的安全性限制与iSeries服务器上的任何其它程序都是相同。在iSeries服务器上去运行java程序,必须的是自己对整个的集成文件系统的类文件都有权限去运行,因为程序一经运行,它则在该用户的权限下来运行。自己可以用权限去判断该程序的用户权限与拥有该程序的权限的对象

  • 并发性:可以提高系统并发处理的能力。JAVA支持多线程技术,多线程技术就是多个线程并发运行的机制,特别是有利于在程序中实现并发任务。Java提供Thread线程类,实现了多线程的并发机制。程序的并发执行会出现多个线程互斥访问临界资源的局面,因此并发系统解决的关键就是对临界资源的管理和分配问题,而在进行临界资源分配时这两方面则都需要考虑

2.2.4 MVC框架

MVC是英文Model-view-controlle:(模型-视图-控制器)首字母的缩写,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层即模型层、视图层、控制层。

在MVC的模式,模型的封装是核心数据和逻辑关系与业务规则,提供业务逻辑过程的处理方式。模型被控制器调用,用来处理问题的操作,并为视图获取数据提供了数据的操作。又因数据格式与模型没有关系,所以一个模型能提供数据给多个视图。视图是在MVC模式下并与之交互的界面。视图可以从模型处获得数据,它的更新又是由控制器来控制的。

MVC的模式,控制器是起导航的作用,它能根据用户输入的类型调用出相应模型与视图来完成用户请求,控制器可以不用输出数据,其只是用于接受请求并且来调用哪个模型构件可以去处理,并且用哪个视图去显示模型处理的数据。MVC的模式处理过程大体是:首先控制器来接收用户的请求信息,并决定调用一个模型去处理,模型主要是用业务逻辑去处理用户的请求并且返回数据,控制器用对应的视图返回这个数据,并用表示层呈现给用户。

2.2.5 Swing

Swing是一个用于开发Java应用程序用户界面的开发工具包。以AWT为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员非常轻易就可以创建一个完美优雅的用户界面。AWT不能满足图形化用户界面发展的需要是Swing产生的主要原因。AWT的初衷是用于开发小应用程序的小界面。

由于图形化界面发展的需要,Swing出现了,swing与AWT相比,Swing完全是没有本地的对等组件,swing基本都是轻量级的组件,AWT几乎都是重量级的组件,swing可以不用重量级组件那样要在本地不透明的窗体绘制,轻量级组件则是在重量级组件中绘制。

2.2.6 Jpanel

JPanel 是一般轻量级容器JPanel 为javax.swing包中的,为面板容器,可以加入到JFrame中 , 它自身是个容器,可以把其他component加入到JPanel中,如JButton,JTextArea,JTextField等。

2.2.7 Java多线程

Java编写的程序都运行在JVM中,在JVM的内部,程序的多任务是通过线程来完成实现的。

当java命令启动一个java应用程序,就会启动一个JVM进程。在同一个JVM进程中,有且只有一个进程。在这个JVM环境中,所有程序代码的运行都是以线程来运行的。JVM找到入口点main(),并且运行main(),就可以产生一个线程,这个线程称为主线程。

操作系统将线程进行管理,轮流(没有固定的顺序)分配每个进程很短的一段时间(不一定是均分),然后在每个进程的内部,程序的代码自己就可以去处理该进程的内部线程时间分配,多个线程相互去切换去执行,这个切换时间也是非常短的。使用java.lang.Thread类或者java.lang.Runnable接口编写代码来定义、实例化和启动新线程。一个Thread类实例只是一个对象,像Java中的任何其他对象一样,具有变量和方法,生死于堆上。Java中,每个线程都有一个调用栈,线程也在后台运行着。Java可以从main()开始运行,mian()运行在一个线程中,可以称之为主线程。一旦一个新的线程创建,就能产生一个新调用栈。

3 可行性分析

3.1 可行性分析

可行性分析又称为可行性研究,就是在充分的系统调查的基础上,从而分析新系统的开发是否具备必要性和可能性,对新系统的开发要从技术、经济、管理等多方面进行分析和研究,以保证新系统的成功开发。该系统的可行性分析包括以下几个方面的内容。

3.1.1 技术可行性

主要考虑从技术上能否能顺利完成该软件开发工作,并且从硬件和软件上能否满足开发者的需要等。从技术可行性上分析,开发该系统时所使用的均是目前流行轻量级开发技术,具体使用可以查阅工具书或者相应介绍这些技术的资料,因此在技术上可行。

3.1.2 经济可行性

从经济可行性上分析,本次设计属于完全的出租车计价类的,开发工具均可以免费从网上下载获得并安装,不需要支付任何费用来利用工具开发。所以经济上可行。

3.1.3 操作可行性

操作可行性上分析,本系统基于C/S模式,部署简单。像客户端一样在系统中操作一样,所以操作上可行。

综合上述,出租车计价系统的设计与实现,从技术上、经济上、操作上分析均可行,故本次设计的可行性分析结果为成功通过,可以对这个系统进行开发。

3.2 设计目标

出租车计费系统的总体目标:

  • 出租车计价系统可以实现出租车信息的管理

  • 出租车计价系统可以实现司机信息的管理

  • 出租车计价系统可以实现出租车计价功能

  • 出租车计价系统可以实现订单信息的维护

3.3 功能要求

系统应该具备的基本功能:

3.3.1 出租车维护

  • 出租车信息的查询:通过数据库查询出租车的车型,车号,以及是否可用

  • 出租车信息的增加:向数据库中添加出租车的车型,车号,以及是否可用

  • 出租车信息的修改:对数据库中已经存在的出租车的车型,车号,以及是否可用的信息进行修改

  • 出租车信息的删除:删除数据库中已经存储的出租车的信息

3.3.2 司机信息的维护

  • 司机信息的查询:通过数据库查询出司机的年龄,性别,学历,名字等信息

  • 司机信息的增加:向数据库中添加司机的年龄,性别,学历,名字等信息

  • 司机信息的修改:对数据库中已经存在的司机的年龄,性别,学历,名字等信息进行修改

  • 司机信息的删除:删除数据库中已经存储的司机的信息

3.3.3 订单信息的生成(出租车计价功能):

通过java多线程,模拟出租车在路上的情景,通过距离计费的方式,将订单的时间,乘客的信息,订单的价格等插入数据库中。

3.3.4 订单信息的维护:

  • 订单信息的查询:通过数据库查询出订单的时间,价格等信息

  • 订单信息的删除:删除数据库中已经存储的订单信息

  • 订单信息的修改:对数据库中已经存在的订单的时间,价格等信息进行修改

3.4 系统开发环境配置

本系统以微软平台作为主导,主要是考虑目前微软的庞大市场占用率,另外从技术角度来讲,微软平台上的应用无论是在开发上,还是在软件的部署上都是非常容易,而且性能优越。具体如下:

  • 开发工具:MyEclipse 8.5

  • 数据库:SQLyog

  • 服务器 :Tomcat服务器

  • 运行环境 :安装JDK1.8支持JAVA运行并且正确配置环境变量

3.5 系统开发工具

3.5.1 开发语言—JSP(JAVA Server Page)

JSP页面由HTML代码和嵌入其中的JAVA代码所组成。JAVA Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要JAVA Servlet和JSP配合才能完成。JSP具备了JAVA技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的等特点。

JSP概述

JSP是Java server page的缩写,该技术是由Sun公司为主导。其根本是一个简化的Servlet设计,,该技术是由Sun公司为主导、许多公司参与一起建立的一种动态网页技术标准。JSP 是创建高度动态的 Web 应用的一个独特的开发环境,提供了网页动态执行能力。

JSP在服务器端,即在web服务器上执行 ,并且将执行的结果发送到客户端的浏览器上,基本上是与浏览器没有关系的

JSP 与 ASP比较

作为动态web技术,JSP与ASP之间存在很多相似之处。事实上JSP两者都提供在 HTML代码中混合程序代码、由语言引擎解释执行程序代码。在ASP与JSP环境下,HTML代码负责描述信息呈现的显示样式,而程序代码则用来描述处理逻辑。普通的 HTML页面只依赖于Web服务器,而ASP和JSP页面需要附加的语言用来分析和运行行程序的代码。执行结果就可以被重新的嵌入到HTML代码中,并全部发送到浏览器上。ASP和JSP都是面向Web服务器的技术,客户端浏览器是不需要任何附加的软件用于支持。

JSP使用的是Java,而ASP使用的是VBS。这是十分显著的区别。ASP与JSP还有一个更加本质区别:两种语言引擎用是用不同的方式去处理页面中嵌入的程序代码。在ASP中,VBS被ASP引擎解释和执行;在JSP中,VBS被编译为Servlet在JSP页面的首次请求时由Java虚拟机去执行操作。

安装JSP运行运行环境

  • 安装JDK

  • 把JDK安装到到D:\java\jdk目录中

  • 编辑系统变量

    • path=%path%;d:\java\jdk1.4.0\bin
    • classpath=.;d:\j2sdk1.4.0\lib\tools.jar
  • JDK测试

  • 编译

  • 运行

3.5.2 Eclipse简介

Eclipse是替代IBM Visual Age for JAVA(以下简称IVJ)的下一代IDE开发环境,但它未来的目标不仅仅是成为专门开发JAVA程序的IDE环境,根据它的体系结构,通过开发插件,它能扩展到开发可以用于任何语言,甚至能成为图片绘制的工具。目前,该软件已经开始提供功能插件主要是用于在c语言的开发上。尤为重要的是其为开发的源代码,成为普通大众的福音,人人都可以免费的下载。并且还开发了自己的功能插件。只要需要,都会有其他语言的开发插件出现,例如perl语言。

3.5.3 Tomcat简介

Tomcat是一个免费的开源的Serlvet容器,是Apache基金会的Jakarta中的核心项目之一,是Apache Sun和一些公司及个人共同开发而成。有了Sun的参与和支持,最新Servlet和JSP规范最终可以在Tomcat中得到体现。Tomcat被选为2001年最具创新的产品,可见其在业界的地位。

Eclipse是跨平台的集成开发环境(IDE)。最初主要用来Java语言的开发与编辑,目前也有人用其作为C++、Python、PHP等其他语言的开发工具。

历史

Eclipse最初是由IBM自主开发的Java IDE开发环境,为开源社区2001年11月,现在由Eclipse基金会(Eclipse Foundation)管理。2003年,Eclipse 3.0选择OSGi服务平台规范运行时体系结构。2007年6月,稳定版3.3版本,发布2008年6月,代号为木星的3.4版本,发布于2009年6月,代号为伽利略3.5版本,发布于2010年6月,代号为Helios版本3.6

架构

Eclipse的基础是RCP。RCP包括下列组件:

  • 核心平台

  • OSGi

  • SWT

  • JFace

  • Eclipse工作台

  • 视角(perspectives)

  • 向导(wizards))

MyEclipse是基于Eclipse开发的功能强大的企业级集成开发环境,主要用于Java、Java EE以及移动应用的开发。如三星、IBM、惠普、花旗集团、西门子、斯坦福大学、波音公司等知名机构均使用MyEclipse进行Java、JavaEE开发,Eclipse采用的技术是IBM公司开发的,是一种基于Java的窗口组件,Eclipse的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。80%以上的全球财富100强企业均是MyEclipse的用户。

Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它功能都以插件的形式附加于Eclipse核心上。Eclipse基本内核包括:API, JDT, PDE等。

Eclipse计划

Eclipse是由不同的计划组合而成。它的计划包括Eclipse平台本身与Eclipse Java开发工具(JDT)以及富客户端平台(RCP)。

TPTP是提供一个软件开发人员可以构建测试和调试等情况分析和基准测试工具。

  • WTP:用java企业版web应用程序开发工具扩展Eclipse平台。由以下部分组成:HTML、JavaScript、CSS、JSP、SQL、XML DTD、XSD和WSDL源代码编辑器

  • BIRT:提供Web应用程序基于Java enterprise edition(尤其是)报告的开发工具

  • VEP:在Eclipse框架创建一个图形化用户界面的代码生成工具

  • Eclipse modeling framework(EMF):在 XMI规范描述的模型的基础上,生成一个结构化的数据模型开发工具以及生成应用程序的代码

  • GEF:主要是用来让开发人员在一个应用程序模型上方便快捷地创建一个丰富的图形化编辑工具

  • UML2.0编译器:在UML2.0模型的实现上,来促进建模工具的发展

  • AspectJ:Java语言扩展

  • ECF:专注为Eclipse平台的应用程序的创建起沟通工作

  • CDT:为Eclipse平台提供了一个功能齐全的C和c++的集成开发环境(IDE),它使用GCC编译器

  • PDT:Eclipse平台提供了一个功能齐全的PHP集成开发环境(IDE)

  • COBOL:将在Eclipse平台上建立一个功能齐全的COBOL集成开发环境

  • PTP:将开发一个框架,用于并行计算机的一套工具集成并行的工具平台,平台是便携式,可伸缩的和基于标准

eRCP嵌入式平台,计划扩大Eclipse的富客户机平台的嵌入式设备。这个平台主要是一个 RCP组件的一个子集,它使应用程序模型可以大致相同的桌面环境能够在嵌入式设备中使用。

4 需求分析

4.1 需求分析描述

需求分析值得是去搭建一个新的或修改一个已经存在的软件系统时分析出系统的目的如何、范围是什么养的、该系统是如何定义和该系统应实现什么功能时所做的分析工作。需求分析描述的是软件编译工程中的一个十分关键的过程。需求分析阶段的主要工作是确定软件功能并分析描述软件的作用。在该过程中,软件系统分析师和软件工程师应了解和分析顾客的需求。在确定了客户需要的功能后他们才分析和寻求搭建新的系统的方法。

需求分析,指对要解决的问题进行详细的分析,弄清楚问题的要求。需求分析的任务指通过调查现实世界处理的对象,了解原系统工作概况,明确用户的各种需求并在此基础上确定出租车计价系统的各种功能。 所以需求分析是一项重要的工作,也是最困难的工作

4.1.1 需求分析的任务

  • 确定系统要求:系统的功能需求是对软件系统的一项基本需求,但却并不是唯一需求,通常有下述几方面的综合要求:功能的需求、性能的需求、可靠性的需求、出错处理的需求、接口需求

  • 分析系统数据要求:系统处理的信息和系统产生的信息决定了系统的面貌,对软件设计有很大的影响,因此,分析系统数据要求,是软件分析的一个重要任务。分析系统数据要求一般建立数据模型。复杂的数据由许多基本的数据元素组成,数据结构表示数据元素之间的逻辑关系。可以利用数据字典进行全面数据的定义,为了提高可理解性,通常可利用图形化工具辅助

  • 导出系统的逻辑模型:综合上述两项分析的结果可以导出系统的详细的逻辑模型,通常用数据流图、E-R图、数据字典描述这个逻辑模型

4.2 本系统的需求

4.2.1 系统的要求

  • 可以添加车辆信息

  • 可以删除车辆信息

  • 可以添加司机信息

  • 可以删除手机信息

  • 可以维护车辆信息

  • 可以管理车辆信息

  • 可以维护司机信息

  • 可以管理司机信息

  • 可以查询订单,实现出租车计价

4.2.2 系统实现目标

  • 通过设计合理的、规范化的数据存储结构,对企业的基础数据进行有效的组织、维护,提供统一的基础数据管理平台

  • 为其他子系统的运行提供共享数据环境,减少数据冗余,提高管理效率

  • 灵活设置业务管理中需要的价格、日期等参数

  • 提供对出租车、司机、订单的设置和管理

  • 采用矩阵式权限管理和各级数据校验,实现各层次的数据保密,面向不同的用户,分配不同的权限,并体现不同的界面,使操作方便安全

4.3 系统流程图、数据流图和数据字典

4.3.1 系统流程图

系统流程图是一个系统流经的信息流、系统流经的部件流和系统流经的观点流的图形化代表。流程图主要用来说明某一过程的流程。这种过程是完成一项任务必需的管理过程。

出租车计价系统的系统流程图:

4.3.2 数据流图

数据库流图:在数据传递与加工角度中,是用图形方式表达该出软件开发的逻辑。例如:租车计价系统的思维逻辑是如何的,结构化系统分析方法的主要表达工具是数据流图,用数据流图是表示软件模型的图示方法。

数据库回显处理,通过数据回显,将信息显示在屏幕上:

4.3.3 数据字典

数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。

数据字典(Data dictionary)是一种目录,是用户访问的记录数据库和应用程序源数据。数据字典最重要的作用是作为分析阶段的工具。在结构化分析中,数据字典的作用是给数据流图上每个成分加以定义和说明。

  • 出租车维护

    • 出租车信息的查询:通过数据库查询出租车的车型,车号,以及是否可用
    • 出租车信息的增加:向数据库中添加出租车的车型,车号,以及是否可用
    • 出租车信息的修改:对数据库中已经存在的出租车的车型,车号,以及是否可用的信息进行修改
    • 出租车信息的删除:删除数据库中已经存储的出租车的信息
  • 司机信息的维护

    • 司机信息的查询:通过数据库查询出司机的年龄,性别,学历,名字等信息
    • 司机信息的增加:向数据库中添加司机的年龄,性别,学历,名字等信息
    • 司机信息的修改:对数据库中已经存在的司机的年龄,性别,学历,名字等信息进行修改
    • 司机信息的删除:删除数据库中已经存储的司机的信息
  • 订单信息的生成(出租车计价功能)

    • 通过java多线程,模拟出租车在路上的情景,通过距离计费的方式,将订单的时间,乘客的信息,订单的价格等插入数据库中
  • 订单信息的维护

    • 订单信息的查询:通过数据库查询出订单的时间,价格等信息
    • 订单信息的删除:删除数据库中已经存储的订单信息
    • 订单信息的修改:对数据库中已经存在的订单的时间,价格等信息进行修改

5 概要设计

5.1 概要设计引入

5.1.1 概要设计引入

软件的研制工作经过需求分析阶段以后,已经完全(或者说基本)弄清了用户的需求,也就是已经解决了要让所开发的软件的功能是如何的,同时还在软件说明书中详尽的叙述表达了软件开发的需求。在这设计阶段后,就可以开始着手对软件需求的实施工作。

设计阶段分为两部分,概要的设计与详细的设计 。在概要的设计阶段着重解决了需求实现的程序设计问题。其中就包括考虑被开发的软件系统由若干个模块来组成,并且来决定各模块接口的关系以及模块之间信息的传递。详细设计是决定每个模块内部的算法。在概要设计完成后,必须进行阶段的评审工作。

软件概要设计工作由设计员完成。设计员由经验丰富的软件人员担任。软件概要设计的方法有结构化设计(SD)方法, Jackson方法, Parans方法, LCP方法等。

5.1.2 概要设计的任务

  • 设计软件系统结构(简称软件结构):为了实现目标系统,最终必须设计出组成这个系统的所有程序和数据库(文件),对于程序,则首先进行结构设计。软件结构的设计,在软件的需求分析阶段,系统为层次结构。设计阶段,根据需求分析的结果,划分为模块,并组成模块的层次结构。软件结构的设计会影响下一阶段设计与编码质量和整体特性

  • 数据结构及数据库设计:数据结构设计:数据字典对数据组成、操作约束、数据的关系等进行了描述,确定了数据结构的特点,并且在概要设计阶段要加以细化,详细设计阶段则规定具体的实现细节。数据库设计:数据库的设计指数据存储文件的设计

  • 编写概要设计文档:文档主要有:概要设计说明书,数据库设计说明书,用户手册。

  • 评审:对是否完整实现了规定的功能、性能要求,设计方案的可行性,关键的处理及内外部接口定义的正确性,各部分间的一致性等都进行了评审。

5.2 系统功能模块

5.2.1 系统功能模块描述

  • 出租车信息模块包含:出租车辆的车型,出租车辆的车牌号,出租车辆是否维修,可以实现基本信息的维护,增加,修改,删除

  • 司机管理模块包含:司机信息设置,司机职务设置,司机学历,司机编号,司机生日等,可以实现对司机的基本信息如:员工编号,姓名等的查询,增加,修改,删除。

  • 计价模块包含:通过旅客点击派车,从而使得出租车按照时间生成一个订单,插入到订单表中

  • 订单模块包含:订单数汇总,打印订单数,可以实现查看订单数,并且将这些数据打印出来

5.2.2 系统功能模块层次方框图

软件的结构有时成为软件的体系结构,它是软件系统中最本质的东西。良好的体系结构意味着实用、高效和稳定。层次结构图是SD方法中使用最普遍的软件体系结构。

层次图用来描述软件的层次结构。层次图中的一个矩形框表示一个模块,矩形框之间的连线表示模块之间的调用关系。

5.3 系统数据库设计

5.3.1 概念数据模型

概念数据模型是面向数据库用户实现的模型,主要的作用是用来描述世界的概念化结构。概念数据模型必须换成逻辑数据模型,才能在DBMS中实现。其只描述信息的特征和强调语义,而不涉及信息在计算机中的表示,是现实世界到信息世界的第一层抽象。它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。概念数据模型它的英文是:Conceptual Data Model,一般用CDM来表示。

  • 层次模型:有且仅有一个结点无父结点,这个结点称之为根结点; ② 其他结点有且仅有一个父结点

  • 层次数据库模型的主要优点:层次数据库模型本身比较简单, 层次数据库模型对具有一对多的层次关系的部门描述的非常自然、直观,并且非常容易让人理解,层次数据库模型提供了良好的完整性支持

  • 层次数据库模型的主要缺点:在现实的世界中有许许多多的非层次性的联系,如多对多的联系等,一个结点具有许多个父结点等,层次模型表示这类联系的方法很笨拙,对于插入和删除的操作的限制种种比较多、查询子结点事必须经过父结点的,由于结构的严密,层次的命令趋于程序化

CDM是建模过程中的关键阶段,此阶段把显示世界中需要保存的信息抽象成信息世界中的实体联系,产生实体联系图。建立概念数据模型是一项综合性的工作。

概念数据模型的数据对象有域(Domain),数据项(Data item),实体(Entity),实体属性(Entity attribute),联系(Relationship)和继承链(Inheritance link)等.这些数据对象只是在概念层次上的抽象,并未涉及到物理数据库的实现。

建立CDM的过程就是对信息系统进行概念层次上的抽象和表达的过程,用CDM的各种对象来描述信息系统内部的实体之间的关系,建立CDM的步骤:

  • 为CDM定义域(Domain):主要包括设置所建域的域名、数据类型、长度、精度和扩展选项等

  • 定义数据项:是指定数据项名、代码、选择域(或指定数据类型、长度、精度)等

  • 定义实体:打开List of Entities对话框建立相关实体

  • 定义实体属性:包括设置实体名称、代码、规则等,并为所建立的实体引入相关的数据项

  • 定义联系:联系指在相关实体之间建立联系,同时设置所建联系的属性(包括联系名、设置一对多、多对多等可选联系等)

  • 建立子模型:首先应确定所建CDM应划分成几个子模型,再对各子模型加入相应的各个实体

  • 定义继承:使用继承连接建立实体间继承关系,并设置继承属性(包括继承名称、代码、设置继承方向等)

  • 定义检查参数并检查所建立的CDM

5.3.2 数据库表

为了数据存储更加有效率,数据库存储时的表会有变化,在这个系统中,总共定义了4个表,如下:

用户表

字段名 字段类型 是否可为空
username Varcha N(主键,不可为空)
Password Varchar N
Type varchar N

司机表

字段名 字段类型 是否可为空
id_p int N(主键,不可为空,自动递增)
name varchar N
sex varchar N
nation varchar N
jiguan varchar N
idcard varchar N
xueli varchar N
school varchar N
tel varchar N
mail Varchar N
address varchar N
state varchar N

订单表

字段名 字段类型 是否可为空
id_ch int N(主键,不可为空,自动递增)
name varchar N
number varchar N
boss varchar N
mile varchar N
charge varchar N

车辆表

字段名 字段类型 是否可为空
id_c int N(主键,不可为空,自动递增)
number varchar N
xinghao varchar N
type varchar N
F_number varchar N
j_number varchar N
selltime datetime N
state String N
inf varchar N

6 详细设计及实现编码

6.1 详细设计概述

详细设计是软件开发最为重要的一个步骤,即对概要设计的一个细化,是详细设计每一个模块算法的实现,所需的局部结构设计。详细设计的主要任务为设计每一个模块的实现算法、局部数据结构。详细设计的有两个设计目标:模块功能的算法逻辑上要正确,算法描述必须要简明易懂。

传统软件开发方法的详细设计主要是用结构化程序设计法。其中的工具中:图形工具有业务流图、程序流程图、Problem Analysis Diagram图、NS图。语言工具有伪码和PDL(Program Design Language)等。

6.2 系统各功能模块的实现

详细设计阶段,每个功能模块是单独考虑。详细设计要确定模块内部的详细执行过程,包括:局部数据组织、控制流、每一步的具体加工要求及种种实现细节等。详细设计的方法是结构化程序设计。

由于是分别考虑每个模块,所以问题的规模已大大缩小,而且有了结构化程序设计的方法,一般来说,详细设计的难度已不大了,关键是用一种合适的表示方式来描述每个模块的执行过程,这种表示方式应该是简明而精确。

6.2.1 系统程序流程图

系统程序流程图是程序分析中最为基本、最为重要的分析技术。系统程序流程图是进行程序流程分析过程中最为基本的工具。它是运用工序图示符号对生产现场的整个制造程序做详细的记录,可以对零部件和产品在整个制造中的检验、储存、操作、搬运.等待等作详细的研究分析,最重要的是用于分析其搬运距离和储存等“隐藏成本”的浪费。程序流程图是人们对解决问题的方法、思路或算法的一种描述。

流程图的优点:

  • 采用简单规范的符号,画法简单

  • 结构清晰,逻辑性强

  • 便于描述,容易理解

6.2.2 用户登录流程图

用户登录的图标在首页上设置,主要的作用是接收用户登陆的信息。在点击“登录”图标的同时,则将会对用户的信息进行验证例如用户名称和密码的确认去验证,假如数据表的用户名称和密码的确认验证是存在在那么就是显示登陆成功直接进入下一界面,并且进行查寻与验证数据的正确与否然后返回首页,否则提示信息错误继续跳转验证用户信息界面。

6.2.3 修改资料流程图

用户资料修改时为用户更改个人信息所提供的窗口,用户只有登录网页后才有权限修改个人资料信息。

6.2.4 查询资料流程图

先判断是按信息查找还是联系人查找还是查找数据编号,如果按照信息查找,则在数据库中查找的相应信息,如果是按联系人查找,则在数据库找出对应的联系人。如果按数据编号查找,则在数据库找出相应的数据编号如果查找的结果不存在,则结束,如果查找结果存在,显示他们的信息。

数据库连接:使用框架整合连接数据库,关键是配置好连接驱动applicationContext.xml 中配置数据源,有关连接数据库驱动的参数,用户名、密码。

  1. <bean id="dataSource"
  2. class="org.apache.commons.dbcp.BasicDataSource">
  3. <property name="driverClassName"
  4. value="oracle.jdbc.driver.OracleDriver">
  5. </property>
  6. <property name="url"
  7. value="jdbc:oracle:thin:@localhost:1521:orcl">
  8. </property>
  9. <property name="username" value="scott"></property>
  10. <property name="password" value="tiger"></property>
  11. </bean>

配置 sessionFactory 数据库方言:并设置show_sql为true,打印sql语句,方便调试:

  1. <bean id="sessionFactory"
  2. class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  3. <property name="dataSource">
  4. <ref bean="dataSource" />
  5. </property>
  6. <property name="hibernateProperties">
  7. <props>
  8. <prop key="hibernate.dialect">
  9. org.hibernate.dialect.Oracle9Dialect
  10. </prop>
  11. <prop key="hibernate.show_sql">true</prop>
  12. </props>
  13. </property>

配置映射关系

  1. <property name="mappingResources">
  2. <list>
  3. <value>
  4. com/neusoft/lm/dispatchservice/entity/Leave.hbm.xml
  5. </value>
  6. </list>
  7. </property>
  8. </bean>

注入action dao service层:将类的初始化,销毁交给Spring 管理

  1. <beanid="fileDAO"class="com.neusoft.lm.dispatchservice.dao.impl.FileDAOImpl">
  2. <property name="sessionFactory" ref="sessionFactory" />
  3. </bean>
  4. <beanid="fileService"class="com.neusoft.lm.dispatchservice.service.impl.FilelistServiceImpl">
  5. <property name="dao" ref="fileDAO" />
  6. </bean>
  7. <bean id="fileAction" class="com.neusoft.lm.dispatchservice.action.FileAction" scope="prototype">
  8. <property name="service" ref="fileService" />
  9. </bean>

6.2.5 系统各模块界面

登录界面

用户只有在主界面上登录后才能实现车辆维护,司机管理,生成订单,订单查询等功能。

车辆状态主界面

车辆管理主界面

司机信息主界面

计价信息主界面

订单信息主界面

参考文献

[1] 刘浩.Java从入门到精通[M]. 北京:人民邮电出版社,2010:7-10.

[2] 印旻.Java语言与面向对象程序设计[M]. 北京:清华大学出版社,2000:88-102.

[3] LJ. ARACIL,D.MORATO,M.IZAL.Analysis and stochastic characterization of TCP lows[J].The Public Access Computer Systems Review,1993.4.9-5.6

[4] 程峰,黄若波译. JAVA核心技术卷Ⅰ:基础知识[M].北京:机械工业出版社,2005.4.3-5.7

[5] 孙培生.出租车计价器.中国计量出版社,1999.11

[6] 唐红亮,刘家愚,冯茂岩,郑有增.计算机专业毕业设计指导(第2版),科学出版社.北京科海电子出版社,科学出版社,2008.2

[7] 张颖.多功能出租车计价器的设计.计算机与信息技术,2009.9

[8] 张秀娥.叶哲江等.出租车计价器的软件设计.山西电子技术,2007.4

[9] 高书莉.罗朝霞.可编辑逻辑设计技术及应用.人民邮电出版社,2004.3

[10] 洪传文.出租车计价器的原理及应用[J].技术监督与服务,1997

[11] Jone Wulenskl.VHDL Digtal System Design[D],电子工业出版社,2004.10-10.5

[12] Kenneth E.Kedall等.施平安译.系统分析与设计(第6版).清华大学出版社,2006

上传的附件 cloud_download 基于Java出租车计价器设计与实现.zip ( 6.74mb, 2次下载 )
error_outline 下载需要13点积分

发送私信

16
文章数
1
评论数
最近文章
eject