研究意义

通过在 Android 系统,进行航空订票系统的设计与实现,充分运用所学的数据库、Java 语言、数据结构、操作系统、设计模式等知识。了解一个较完整的 Android 项目的构建过程,同时,通过较大量的编码提高需求分析、数据库设计、框架搭建、代码设计、编码及制图的能力。

研究现状

随着时代的进步社会分工的不断细化,各个行业联系的不断密切,人们出行越来越多,出行的方式也是百花齐放,作为空中重要的交通工具,飞机航空系统也在不断地得到优化,其中重要的一项就是飞机航空订票系统,因此好的订票系统关系着人们的日常出行方便与否,设计并编制出符合人们需要的航空订票系统是一项繁重而艰巨的任务。订票系统在现实生活中应用很广泛,通过这个系统可以使订票、退票等变得简便。与传统的人工用纸、笔来记录办理订票、退票等相比,使用这个系统也会增加工作效率随着科学技术的不断发展,计算机科学日渐成熟,其强大功能已为人们所深刻认识,它己进入人类社会的各个领域并发挥着越来越重要的作用。采用计算机进行信息化管理已成为衡量各个国家科学化和现代化的重要标志,而交通方式的全面自动化、信息化则是其中重要的组成部分,在很大程度上影响着企业的经济效益和社会效益。因此,本文所研究的航空订票系统具有一定的使用价值和现实意义。随着科技与经济的发展,越来越多的人选择乘飞机,这跟我国的经济增长有很大关系,人们在追求快节奏的生活方式,所以做飞机无疑成了首选。而且随着网络的盛行,航空订票系统就显得尤为重要,这个系统主要是为了方便大家,让大家能够快速、清晰、准确地了解航班信息,而不至于像以前那样排队等候,从而避免耽搁乘客大量的等待时间。完成此系统,需要综合运用数据结构课程中学到的几种典型数据结构,以及程序设计语言(Java 语言),自行实现一个较为完整的应用系统的设计与开发。通过课程设计,自己通过系统分析、系统设计、编程调试,写实验报告等环节,进一步掌握应用系统设计的方法和步骤,灵活运用并深刻理解典型数据结构在软件开发中的应用。学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。

Android 是一种基于的自由及开放源代码的,主要使用于,如和,由公司和领导及开发。

Android 是运行于 Linux kernel 之上,但并不是/Linux。因为在一般 GNU/Linux 里支持的功能,Android 大都没有支持,包括、、、、、及等都被移除掉了。Android 又以 Bionic 取代 Glibc、以 Skia 取代 Cairo、再以取代等等。Android 为了达到商业应用,必须移除被 GNU GPL 授权证所约束的部份,例如 Android 将驱动程序移到 Userspace,使得 Linux driver 与 Linux kernel 彻底分开。Bionic/Libc/Kernel/ 并非标准的 Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数、数据结构与宏。

工作内容

课程设计中,将会接触到以下几种工作:

  • 需求分析。针对课程项目命题和要求分析其主要和次要功能点。

  • 学习调研。由于之前并没用经历过一个完整的 Android 项目的构建,因此学习和调研相关技术是十分必要的。

  • 代码设计。杂乱无章的代码会导致程序效率低下、错误百出;而组织严密、结构清晰的代码及设计模式有助于我们理清思路,减少错误。

  • 代码编码。这一项直接与编程语言和系统调用相关,想要在这方面有所建树,则必须通过大量的练习来实现。

  • 相关技术基础

  • AndroidStudio 的基本使用。这一部分主要包括:AndroidStudio 的基本功能,Gradle 构建项目方法,将项目代码托管到 Git 上

  • 编译环境搭建及使用。这一部分主要包括:JDK 的安装及配置环境变量,sdk 的下载与安装,代码版本控制工具 Git 命令的配置和使用

  • Java 编程。这一部分主要包括:项目框架的基本搭建思路,设计模式的合理运用,变量及方法的设计,各类常见的语法错误,异常处理的合理使用

  • XML 界面编程。这一部分主要包括:app 所有界面的注册及设计,图片(icon、logo)、颜色、字符串、数组、等资源的部署,drawable\value\layout 等文件目录的构建

  • 本章小结

    ​ 要实现本次课程设计,首先必要的知识储备是必不可少的。在拥有足够的知识储备后,对编程环境的熟悉,编程工具的熟练使用都有助于我们写出高质量的程序。我在本次课程设计中用到的工具一共有如下几种:

    1. jvm Java 虚拟机
    2. sdk Android 开发工具
    3. Android Studio Android 开发目前来讲最好用的 IDE
    4. gradle Android 项目的构建工具,可以方便的添加第三方依赖
    5. Git 非常优秀的开源代码版本控制工具,并在云端提供远程代码库

系统需求分析

功能需求

  1. 实现 Android 客户端,有普通客户和管理员两种身份,普通客户可根据出发地、目的地以及出行日期查询航班相关信息,通过填写姓名、身份证号、航班号以及出行日期来订票,可通过客户姓名、身份证号、出行日期来查询已订机票信息,并选择是否退票。管理员可以检视所有航班及客户信息,并对数据进行增删改查。

  2. 在浏览器中,可通过登陆 Bmob 云后台来对数据库中数据直接进行操作。

性能需求

​ 尽可能的将代码模块化,封装好完备的功能方法并将它们按功能的不同分别加入不同的类中,以此减少冗余代码命题高性能;通过 Bmob 后端云服务构建数据库,调用先关 API 对数据库进行操作。

本章小结

​ 课程设计中,产出结果应为一个 apk 文件作为客户端安装包,后端数据库可直接通过浏览器进入 Bmob 后端云来操作。

系统设计和实现

总体设计

分包:

Activity
Adapter
Base
Bean
Fragment
Net
Utils
Widget
App

Activity:

MainActivity
AboutActivity
AdminActivity
BoardingActivity
EditClientActivity
EditFlightActivity
GuideActivity
LoginActivity
PlaceListActivity
PriceActivity
Adapter:
AdminClientAdapter
AdminFlightAdapter
DynamicAdapter
Fragment:
AdminClientFragment
AdminFlightFragment
BookFragment
DynamicFragment
MainFragment
QueryFragment
Base:
BaseActivity
BaseFragment
BaseFragment
Bean:
Client
Flight
Utils:
DividerItemDecoration
Widget:
InputDialog

数据库设计

详细设计和实现

增加客户信息
private void addClient(String name, String idCard, String flightNo,String data) {Client client = new Client();client.setName(name);client.setIdCard(idCard);client.setFlightNo(flightNo);client.setData(data);client.save(new SaveListener<String>() {@Overridepublic void done(String s, BmobException e) {if (e==null) {isBooked = true;} else {Toa("网络繁忙,请稍后再试");Log.e("Bmob","save error:"+e.getMessage());}}});
}
更新航班票量
BmobQuery<Flight> query = new BmobQuery();
query.addWhereEqualTo("flightNo", flightNo);
query.findObjects(new FindListener<Flight>() {@Overridepublic void done(List<Flight> list, BmobException e) {if (e == null) {String id = list.get(0).getObjectId();int booked = list.get(0).getBookedTickets();int surplus = list.get(0).getSurplusTickets();Flight flight = list.get(0);flight.setBookedTickets( booked + 1);flight.setSurplusTickets( surplus - 1);flight.update(id, new UpdateListener() {@Overridepublic void done(BmobException e) {if (e == null) {isUpdated = true;startActivity(new Intent(getActivity(), MainActivity.class));getActivity().finish();} else {Toa("网络繁忙,请稍后再试");Log.e("Bmob", "update error:" + e.getMessage());}}});} else {Toa("网络繁忙,请稍后再试");Log.e("Bmob", "change error:" + e.getMessage());}}
});
查询航班信息
BmobQuery<Flight> query = new BmobQuery<>();
query.addWhereEqualTo("originPlace", origin);
query.addWhereEqualTo("destinationPlace", destination);
query.addWhereEqualTo("data", day);
query.findObjects(new FindListener<Flight>() {@Overridepublic void done(List<Flight> list, BmobException e) {loading.setVisibility(View.GONE);if (e == null) {if (list.size() > 0) {adapter.replaceData(list);} else {Toa("暂无航班");}} else {Toa("网络繁忙,请稍后再试");Log.e("Bmob", "error:" + e.getMessage());}}
});
删除客户信息
Client c = new Client();
setObjectId(client.getObjectId());
delete(new UpdateListener() {@Overridepublic void done(BmobException e) {if (e == null) {Toast.makeText(mContext,"删除成功!",Toast.LENGTH_SHORT).show();} else {Log.e("Bmob","delete error:"+e.getMessage());}}
});
删除航班信息
Flight f = new Flight();
setObjectId(flight.getObjectId());
delete(new UpdateListener() {@Overridepublic void done(BmobException e) {if (e==null) {Toast.makeText(mContext,"删除成功!",Toast.LENGTH_SHORT).show();} else {Toast.makeText(mContext,"网络繁忙,请稍后再试",Toast.LENGTH_SHORT).show();Log.e("Bmob","delete error:"+e.getMessage());}}
});
新增及修改航班信息
private void commitFlight(String mOrigin, String mDestination, String mDate, String mStart, String mEnd,String mFlight, String mType, int mPrice, int mBooked, int mSurplus) {commit.setText("请等待");commit.setEnabled(false);Flight flight = new Flight();flight.setOriginPlace(mOrigin);flight.setDestinationPlace(mDestination);flight.setData(mDate);flight.setStartTime(mStart);flight.setEndTime(mEnd);flight.setFlightNo(mFlight);flight.setFlightType(mType);flight.setPrice(mPrice);flight.setBookedTickets(mBooked);flight.setSurplusTickets(mSurplus);if (isNew) {createFlight(flight);} else {updateFlight(flight);}
}
private void updateFlight(Flight flight) {flight.update(objectId, new UpdateListener() {@Overridepublic void done(BmobException e) {if (e==null) {finish();} else {Toa("网络繁忙,请稍后再试");commit.setText("提交");commit.setEnabled(true);Log.e("Bmob","save error:"+e.getMessage());}}});
}
private void createFlight(Flight flight) {flight.save(new SaveListener<String>() {@Overridepublic void done(String s, BmobException e) {if (e==null) {finish();} else {Toa("网络繁忙,请稍后再试");commit.setText("提交");commit.setEnabled(true);Log.e("Bmob","save error:"+e.getMessage());}}});
}
日期选择器
pickerPopWin = new DatePickerPopWin.Builder(getContext(), new DatePickerPopWin.OnDatePickedListener() {@Overridepublic void onDatePickCompleted(int year, int month, int day, String dateDesc) {data.setText(year+"-"+month+"-"+day);}
})
.textConfirm("选择")
.textCancel("取消")
.btnTextSize(16)
.viewTextSize(25)
.colorCancel(Color.parseColor("#999999"))
.colorConfirm(Color.parseColor("#7C4DEF"))
.minYear(1970)
.maxYear(2020)
.dateChose("2016-07-02")
.build();
城市选择列表
private void startCityList(int code) {Intent intent = new Intent(getActivity(),PlaceListActivity.class);intent.putExtra("type",code);startActivityForResult(intent,code);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode==REQUEST_ORIGIN) {originPlace.setText(data.getStringExtra("place"));} else {destinationPlace.setText(data.getStringExtra("place"));}
}
gradle app
apply plugin: 'com.android.application'
android {compileSdkVersion 23buildToolsVersion "23.0.3"useLibrary 'org.apache.http.legacy'defaultConfig {applicationId "com.levent_j.airlinebooksystem"minSdkVersion 14targetSdkVersion 23versionCode 1versionName "1.0"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
}
dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])testCompile 'junit:junit:4.12'compile 'com.android.support:appcompat-v7:23.3.0'compile 'com.jakewharton:butterknife:7.0.1'compile 'com.android.support:design:23.3.0'compile 'com.android.support:cardview-v7:23.2.0'compile 'com.android.support:recyclerview-v7:23.2.0'compile 'cn.bmob.android:bmob-sdk:3.5.0'compile 'cn.bmob.android:bmob-push:0.8'compile 'com.brucetoo.pickview:library:1.1.1'compile 'com.wang.avi:library:1.0.5'compile 'com.nineoldandroids:library:2.4.0'compile 'com.squareup.picasso:picasso:2.5.2'
}
gradle project
buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:1.3.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files}
}
allprojects {repositories {jcenter()maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }}
}
task clean(type: Delete) {delete rootProject.buildDir
}

本章小结

​ 在所有代码中,最重要的莫过于 Activity 和 Fragment 中的代码。主要包含了界面管理与控制,云数据获取,网络交互等功能。整个项目由 gradle 构建,结构清晰明了。

系统测试

测试环境

  • 小米 3C
  • 系统:Android 6.0

测试用例和结果

本章小结

​ 以上就是测试数据及其截图

总结

​ 在本次课程设计中,我充分利用了 androidstudio+linux 终端 +gradle+git 这一组工具,极大地提升了编程效率。AndroidStudio 下进行编程,代码提示、目录结构等非常束缚,让我的精力可以集中于解决眼前的问题。在界面设计中,采用了 Google 官方推荐的 Material Design 设计风格以及 Material Design 颜色,控件方面,用了 RecyclerView 作为列表显示,FloatingActionButton 作为图特殊按钮,NavigationDrawerLayout 作为策划菜单,同时单个 Activity 配合多个 Fragment 一起使用,极大的减少了冗余工作量的同时,使代码结构清晰而完整。后台数据库采用了 Bmob 云端数据库,免去了自己搭建后台服务器写 API 的繁琐以及购买服务器的花费,能更高效而便捷的操作数据,同时 Bmob 后端云在硬件和软件层面都为大家建立了安全机制。增加了数据安全隔离,分布式存储架构,多租户虚拟化技术,密钥匹配,访问权限控制等功能,进一步保障了数据的安全,降低风险。最后关于 gradle,Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化建构工具。它使用一种基于 Groovy 的特定领域语言(DSL)来声明项目设置,抛弃了基于 XML 的各种繁琐配置。gradle 对多工程的构建支持很出色,工程依赖是 gradle 的第一公民。 gradle 支持局部构建。支持多方式依赖管理:包括从远程仓库、私服、ivy 仓库以及本地文件系统的 jars 或者 dirs 轻松迁移:gradle 适用于任何结构的工程(Gradle can adapt to any structure you have.)gradle 的整体设计是以作为一种语言为导向的,而非成为一个严格死板的框架。免费开源。

♻️ 资源

大小: 4.08MB
➡️ 资源下载:https://download.csdn.net/download/s1t16/87354531

基于android实现航空订票系统【100010286】相关推荐

  1. 基于ssh的航空订票系统-飞机订票系统javaweb-机票订购课程设计java代码(源码+数据库文件+文档)

    基于ssh的航空订票系统-飞机订票系统javaweb-机票订购java代码(源码+数据库文件+文档) 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 作者:IT跃迁谷 1.开发环境 开发语言: ...

  2. 基于h5的航空订票系统的设计与实现

    1,项目介绍 基于 SpringBoot,h5 的航空订票系统系统拥有两种角色,分别为管理员和用户. 用户:机票浏览,机票查询,机票预定,新闻浏览,购票信息管理,留言信息管理 管理员:购票信息管理,机 ...

  3. 精品基于java开发的航空订票系统SSM

    <基于java开发的航空订票系统>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 使用技术: 开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1. ...

  4. 基于JAVA Web的航空订票系统

    基于JAVA Web的航空订票系统 开发语言:JSP,JAVAweb 开发平台:eclipse; 数据库:MYSQL: 系统分为前台和后端: 前台界面图: 登录界面: 主界面图: 后端界面 登录: 后 ...

  5. 基于java开发的航空订票系统

    <基于java开发的航空订票系统>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 使用技术: 开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1. ...

  6. 基于JAVA航空订票系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA航空订票系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA航空订票系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  7. cs结构航空订票系统java_VC++航空订票系统数据库设计-课程设计

    VC++航空订票系统数据库设计 目录 一  绪论 1 二 需求分析 1 三 概要设计 2 四 详细设计 4 五 调试分析 19 六 测试结果 20 七 用户使用说明 29 小结 29 参考文献 30 ...

  8. 航空订票系统界面java_Java命令行界面(第21部分):航空公司2

    航空订票系统界面java 本系列文章的第21篇关于Java中解析命令行参数的文章的重点是Airline 2库. Airline 2的GitHub项目页面描述了该库," Airline是一个J ...

  9. JAVA毕业设计航空订票系统计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计航空订票系统计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计航空订票系统计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

最新文章

  1. Unity导出apk出现的问题,JDK,Android SDK,NDK,无“安装模块”
  2. CTFshow 命令执行 web67
  3. Consul和ZooKeeper的区别
  4. 最明的int和Integer的区别
  5. NFS文件锁一致性设计原理解析
  6. java字节码_好的,每个接触Java字节码的人
  7. 国庆出游,这个银行卡大小的充电宝一定要带
  8. 计算机组成原理整机实验报告,计算机组成原理加器实验报告.doc
  9. 全球首款5G手机来了?三星Galaxy S10 5G版或于4月5日开卖
  10. 数据科学包14-matplotlib-6种图形的基本画法
  11. poj 2029 Get Many Persimmon Trees 二维树状数组
  12. 零基础自学SQL课程 | SQL中的日期函数大全
  13. python平稳性检验程序_用Python检验时间序列的平稳性
  14. Mikrotik ROS软路由设置上网方式(三)
  15. 如何使用阿里云矢量图标库
  16. 全球地震 Python 爬虫可视化,最频发的地方是这里!
  17. 交银施罗德基金郭斐:集中心力,布好一盘“成长投资”
  18. 贵金属行情价格走势图,香港十大杰出贵金属交易平台排名2023
  19. 2022安全员-B证考试题模拟考试题库及模拟考试
  20. 北京筑龙出席《中国招标》30周年座谈会暨理事年会并进行分享

热门文章

  1. java校验手机号码、固定电话的合法性
  2. python 检测电话号码代码 练习记录
  3. 实战怎么用u盘重装系统
  4. 内存屏障(Memory Barriers/Fences) - 并发编程中最基础的一项技术
  5. json动态过滤某些属性 之@jsonignore
  6. 在 UOS 上玩转安卓 App,像使用手机一样使用电脑
  7. WIFI基础入门--802.11--管理操作--9
  8. Mac 安装配置JDK14 并安装配置Intellij IDEA
  9. 「保姆级教学」Mac下JDK环境配置
  10. CF6D Lizards and Basements 2题解