项目名称: 火车订票系统
项目组长:
项目组员:
目 录
1项目简介31.1 开发软硬件环境31.2 主要功能51.3 亮点和不足/意义52项目结构62.1 目录结构62.2 功能模块介绍72.2.1登陆注册设计72.2.2首页设计72.2.3个人中心设计82.2.4个人资料设计82.2.5充值余额设计82.2.6修改密码设计92.2.7购买车票设计92.2.8 电话购买车票设计92.2.9我的订单页面设计102.2.10乘车人页面设计102.2.11系统消息设计102.2.12积分商城设计112.2.13 关于我们113 主要问题和解决方法123.1 遇到的问题123.2 解决的方法123.3 总结/收获124 项目展示145 小组分工及评分14
1项目简介
- 开发软硬件环境
该项目建立在 Android Studio 3.5.2 版本上编写,使用win10操作系统,JVM:使用OpenJDK 64-Bit Server VM,JRE为 1.8.0_202-release-1483-b03 amd64,数据库使用android自带的sqlite数据库,调试时使用模拟器为API 29版本;
SQLite优缺点:SQLite是一个非常轻量级的数据库。 因此在电脑,手机,相机,家用电子设备等设备的嵌入式软件是非常好的选择。SQLite的数据存储非常简单高效。 当您需要存储文件存档时,SQLite可以生成较小数据量的存档,并且包含常规ZIP存档的大量元数据。SQLite可以用作临时数据集,以对应用程序中的一些数据进行一些处理。在SQLite数据库中,数据查询非常简单。 您可以将数据加载到SQLite内存数据库中,并随时提取数据。可以按照您想要的方式提取数据。SQLite提供了一种简单有效的方式来处理数据,而不是以内存变量来做数据处理。 例如:如果您正在开发一个程序,并且有一些记录要对其进行一些计算。 然后,您可以创建一个SQLite数据库并在其中插入记录,查询,可以选择记录并直接进行所需的计算。SQLite非常容易学习和使用。它不需要任何安装和配置。只需复制计算机中的SQLite库,就可以创建数据库了。但是SQLite一般用于处理小到中型数据存储,对于高并发高流量的应用不适用。并且能够支持的数据类型不够,本项目中需要存储的日期类型,就是sqlite一个痛点。
具体的开发环境配置如下:
Android Studio 3.5.2
Build #AI-191.8026.42.35.5977832, built on October 31, 2019
JRE: 1.8.0_202-release-1483-b03 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
调试时模拟器的信息:
Name: new_phone
CPU/ABI: Google Play Intel Atom (x86)
Path: C:\Users\ASUS\.android\avd\new_phone.avd
Target: google_apis_playstore [Google Play] (API level 29)
Skin: pixel_2…
其中重要的gradle文件内容如下:
apply plugin: 'com.android.application'
android {
co defaultConfig {
applicationId "com.example.xticket"
minSdkVersion 15
targetSdkVersion 31
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation 'androidx.navigation:navigation-fragment:2.0.0'
implementation 'androidx.navigation:navigation-ui:2.0.0'
implementation 'com.youth.banner:banner:1.4.10'
implementation 'com.github.bumptech.glide:glide:4.6.1'
}mpileSdkVersion 31
buildToolsVersion "31.0.0" - 主要功能
在软件中,未登录状态就是游客,可以进行匿名访问,但只能进行车票浏览和车票查询;而注册的用户就是普通用户,可以在车票浏览、车票查询的基础上进行更多的操作,如订单查询、添加乘客、在积分商城里面用积分兑换各种商品、查询购买车票和乘坐火车时遇见的常见问题等,同时也可以看到自己的个人中心,内含用户的信息和购买的车票信息等。
下面是我们的主要功能流程图:
![安卓源码和设计报告——火车订票系统](https://picx.zhimg.com/80/v2-a48e37e21850135ecf9d063b132be4af_720w.webp?source=d16d100b)
- 亮点和不足/意义
- 方便快捷:火车票订票系统允许用户随时随地通过互联网进行火车票的订购,无需排队等候,节省了用户宝贵的时间和精力。
- 多样选择:火车票订票系统提供了丰富的车次,用户可以根据自己的需求和偏好灵活选择,提高了出行的舒适度和满意度。
- 火车票订票系统收集和分析了大量的用户数据,可以通过数据分析和挖掘,提供更好的服务和优惠政策,同时也为火车运营方提供了重要的市场信息和决策依据。
2项目结构
2.1 目录结构
src
│ ├─androidTest
│ │ └─java
│ │ └─com
│ │ └─example
│ │ └─xticket
│ ├─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─example
│ │ │ └─xticket
│ │ │ ├─Database
│ │ │ └─fragments
│ │ └─res
│ │ ├─drawable
│ │ ├─drawable-v24
│ │ ├─layout
│ │ ├─layout-land
│ │ ├─menu
│ │ ├─mipmap-anydpi-v26
│ │ ├─mipmap-hdpi
│ │ ├─mipmap-mdpi
│ │ ├─mipmap-xhdpi
│ │ ├─mipmap-xxhdpi
│ │ ├─mipmap-xxxhdpi
│ │ ├─navigation
│ │ ├─values
│ │ └─values-zh
│ └─test
│ └─java
│ └─com
│ └─example
│ └─xticket
2.2 功能模块介绍
2.2.1登陆注册设计
概述:
注册界面是指需要用户根据一定的规则自定义自己的用户名和密码,进行注册得到账号,让访问软件拥有更多的权限,同时账号也能够方便进行管理;在注册页面,要求用户输入用户名、密码、真实姓名、身份证号、手机号码;基本信息里的昵称时用来面向大众,也是相当于在软件里面有一个新
身份,密码也是必不可少的,用于保障我们的账号安全,而详细信息用来作为身份核验,同时我们也会对用户的信息进行保密。
登录界面是指需要提供账号密码验证的界面,有增加安全策略,有效控制用户权限,记录用户行为等作用,操作方法是让用户使用注册过的账号进行登录,但是当账号密码不是注册过的便会提示用户名或者密码错误;同时如果你不进行登录就只可以浏览车票和查询车票,想要进行更多的操作例如购买车票等功能是允许的,会让你进行登录。
2.2.2首页设计
概述:
网站的首页扮演着整个网站最重要的功能。首页是软件作用宣传最有效的方式,我们要让用户在第一时间就能够看出我们的软件是干什么的,同时还能展现出我们的优势,给用户留下美好的印象,吸取在此“光临”。首页还可以起到导航的作用,用户想要了解本软件,软件首页就可以为用户深入了解软件提供一个平台,它就像一个“导游”一样引导用户“观光”,用户想到哪里,在首页上都可以直接到达,一目了然。
2.2.3个人中心设计
概述
个人中心是软件功能的一个集合入口,在这里我们可以修改密码、查看购买记录、查看个人详细信息,还有关于我们、充值余额、添加乘客等功能;个人中心通常叫“我的”,在登录之后就会显示自己的用户名,让用户进来就知道这是属于我的,中间就是展示部分功能模块,,清晰的展示方式可以帮助用户高效使用;下面是客服电话,也是能够方便需要询问其他问题的用户能够迅速便捷的拨打客服电话进行解决。
2.2.4个人资料设计
概述
个人资料版块是用户自己才能看到的页面,他人不可以进行查看,同时用户可以对其进行修改,这里有用户的所有资料,如真实姓名、国家地区、证件号码、手机号、地址等;而想要买票必须对这些资料进行完善,用于身份检验,必须实名进行买票。
2.2.5充值余额设计
概述
充值余额页面可以查看用户的剩余余额,同时可以进行充值,页面简洁大方,同时操作简单,能够让用户迅速上手操作;当购买车票后,充值余额也会随之进行变化,可以充值任意金额,即时到账。
2.2.6修改密码设计
概述
修改密码页面可以让用户定期进行修改,定期修改密码可以为了防止用户记不住密码,可以让用户记住自己的密码,其次就是防止被他人盗取,如果密码被人盗取便可以查看你的各种信息之类,监控你的账户活动,但是你定期修改密码就算他人侥幸盗取你及时更改也不会造成过多的损失,而且一般自己的密码都差不多,如果你在安全性不高的网站使用过相同的密码,那么隔一段时间进行修改也是有好处的。
2.2.7购买车票设计
概述
购买车票是本软件的中心,让顾客用户能够购买需要乘坐车辆的车票,首先在首页中点击在线订票就可以跳转到购票页面,选择出发地和目的地,选择将要乘坐车辆的时间,但是不可以购买时间过去的票,点击查询车次便可以查询到根据时间和价格进行排序,供用户进行选择,点击想要乘坐的车次就可以看到自己的账户下有几位乘车人,在选择要去的人就可以成功购买了。
2.2.8 电话购买车票设计
概述
随着时代的发展,越来越多人在网络上进行购票,但是还是有很多跟不上时代潮流的人不会使用对他们来说繁琐的手机购票,所以我们的软件不仅能够在线订票,还提供了电话订票功能,而且可以直接通过主页点击拨打电话,为不怎么使用手机的手提供了很大的便利,特别是老年人,解决了他们买不到票的焦急。
2.2.9我的订单页面设计
概述
当购买了车票之后就可以去我的订单里面查看,订单里面有两种,一种是未出行订单,一种是已出行订单,能够让用户方便查看订单,也可以快速知晓自己将要乘坐车次的具体信息,例如出发地点、到达地点、出发时间、到达时间、车次等内容。
2.2.10乘车人页面设计
概述
乘车人页面是方便用户在买票过程中快速选择乘车人,当提前添加好了乘车人,便能够立刻选择乘客进行抢票,操作流程是从主页点击乘车人,便能看到用户的账户下面已经添加了多少位乘车人,然后点击添加,输入乘客的姓名和身份证号进行添加,就可以添加成功,查看乘车人也会发现已经多了一位乘客。
2.2.11系统消息设计
概述
系统消息就是软件把某些对用户有价值的信息及时告知用户,可以让用户紧跟时事,还有根据订单提醒用户尽快赶往车站,时间快到了,不要错过发车时间,车次延迟或提前了这些都会根据系统消息告知用户。
随着网络的发展,有更多的人会尝试网络购票,虽然节约了很多的时间,但难免会出现一些操作不当或者是不会操作,所以此页面是能够尽快让大家知道一些常常出现的问题,尽快上手凑做本软件,同时也有一些出现突发情况如何解决的回答。
2.2.12积分商城设计
概述
积分商城就是用户在购买车票后获得积分奖励,购买车票的价格的一半是用户能够获得的积分,积分商城可以通过积分在商城里购买东西的场所,这样可以提高用户的活跃性,我们也会结合一些节假日、热点时事策划推出什么活动和商品,而积分可以额外兑换商品这一功能,也让我们能够对留住客户有更大的竞争力,是一大亮点;积分商城可以显示用户的剩余积分,商品信息(商品名、商品剩余数量、商品价格、商品原产地)。用户操作也很方便,例如下图:用户选择购买元旦佳节50元礼包,则会弹出是否确认购买,如果确认购买则购买成功,用户的积分也会减去相应的价格,限量物品也会减少一份;在购买记录中便能查询相应的购买记录。
2.2.13 关于我们
概述
关于我们是每个软件必不可少的一部分,它代表的是一个公司的企业文化,向浏览者传达本软件的价值,不要跑题;也始终提醒着自己的主旨,不要跑题。同时也能够让用户能够联系我们,以及了解团队成员的一个重要入口,在某些情况下,用户可能有更多的问题或想要了解我们,通过我们的联系方式就可以联系到我们,同时还能引导用户的行为,当用户浏览了我们的关于页面后,对我们想要了解更多就会看见我们的微信公众号,这样可以让用户能够与我们的软件进一步发展关系。
3 主要问题和解决方法
3.1 遇到的问题
1.展示商品的布局怎么实现。
2.设备兼容性问题:由于安卓系统的碎片化,不同设备之间的硬件和软件环境差异较大,可能导致应用在某些设备上无法正常运行。
3.安卓软件运行不了,会闪退,可能是版本过低。
3.2 解决的方法
1、用现在最流行的Recyclerview解决问题。
2、使用适配性布局和资源,测试应用在不同设备上的兼容性,并根据需要进行相应的调整。
3、使用雷电模拟器可以解决闪退和运行不了的问题。
3.3 总结/收获
通过本次实训,我们体会到了开发不易,需要团队的合作,在开发过程中必须明确整体目标,先有个大概方向是很重要的。书本上的知识对于开发来说是远远不够的,所以我们在网上学习了一些相关的知识,再进行开发,通过这次实训不仅让我们的课内知识得到了巩固,专业知识和编程水平都有很大的提高。而在项目过程中我们也遇到了很多的问题,当遇到问题要先冷静,想办法一点一点的排除障碍,到得到最后的成功,一种成就感油然而生,这就是开发的乐趣。有时候也需要虚心请教,从别人的身上学到自己没有的东西,每一次的挫折都能让我们更接近成功。同时对于团队开发来说,团结一致使我们深有体会,团队的合作注重沟通和信任,不能不屑于做小事,永远保持亲和诚信,把团队的利益放在第一位。下面我们将叙述我们在开发过程中遇到的问题与反思。
在建立数据库时要先分析需求,进行概念结构设计,逻辑结构设计,再进行数据库实施,因为在本次项目中不能够给表设置参照完整性,所以在录入数据的时候要更加细心,该用什么类型事先考虑好,不然后面容易出错;表与表之间某些数据有联系,要考虑到逻辑合理。
在我们小组本次设计与实现完该高铁购票的项目后,我最大的感受就是在编写项目代码的时候会遇到许多的困难与BUG,大多时候最有效的方法是自己先大概思考下怎么实现,然后再去网上去查找相关的资料,如果去网上没有找到,再去跟自己小组的成员商量,我认为以上这种方法是解决技术问题与BUG的最有效的方法,这样不仅能解决实际问题,还能对这些技术的实现更有印象,再者就是锻炼自己的独立思考的能力。
在本次项目中遇到的困难主要是一些技术不知道怎么实现,例如像现在一般软件(比如淘宝、京东)的展示商品的布局怎么实现,通过网上查阅才知道这种展示的最流行的技术实现方式是Recyclerview,但是在平常的学习中完全没有接触过这种布局,像这种就只有通过视频从零开始学习了。所以像类似上面的这种问题都是因为我在平常只关注上课时老师所讲的内容与书上的内容,并没有在课余时间去探索一下android的现在一些流行的技术,要是平常多关注这些技术的话,不说能完全懂得这个技术的实现方式并且理解它,但至少在制作项目的过程中能够知道哪些地方用哪种技术,并不会花费多余的时间还要去找这些技术,然后只需要对症下药,学习一下这个技术的要点与代码实现,并不会在项目设计的步骤上就要花费大量时间去和组员讨论怎样实现这个技术,我们能不能实现这个技术等一系列的问题。
在制作完项目后的收获,就比如在平常有一次作业中,要求使用Listview实现新闻列表的布局,那次作业我虽然确实是学习完了Listview的适配器知识,并且会用了,但其实还没有对适配器这个概念有一个很清晰的认识,因为那次只是为了完成作业,但在这次制作项目的过程中,我又使用了Listview的自定义适配器,也使用了Recyclerview的适配器,现在我对适配器的使用与为什么要用它有了很清晰的认识,适配器真的是一个很强大的功能,通过适配器我就能将不知道多少条的数据去一次显示在Listview或Recyclerview上以及其他的view,以及这次我还比较了Listview的简单适配器与Recyclerview的适配器,发现其实很大程度上实现方式都是差不多的,它们重载的几个方法都是差不多的,只是Recyclerview确实要难一些是,比如里面还涉及到自己去定义单击事件,自己要new一个hodler等。再还有就是关于intent实现页面的跳转功能,还有在跳转时通过Bundle传递数据的功能,以及在标题栏的左边显示返回图标、在右侧显示文字并设置单击事件、设置居中标题等这些也都是在设计android项目时需要常用的功能,也是在本次完成本次项目后完全学会了其使用。
4 项目展示
![安卓源码和设计报告——火车订票系统](https://picx.zhimg.com/80/v2-cd1f0b18d8829e3bc56ef41711222623_720w.webp?source=d16d100b)
![安卓源码和设计报告——火车订票系统](https://pic1.zhimg.com/80/v2-b07fa395186c31b9d724eb19e01e15e8_720w.webp?source=d16d100b)
![安卓源码和设计报告——火车订票系统](https://pic1.zhimg.com/80/v2-d7b1959997749a45219eb979c0c30245_720w.webp?source=d16d100b)
![安卓源码和设计报告——火车订票系统](https://pic1.zhimg.com/80/v2-78d7eb8017dc8686e99587834f55971a_720w.webp?source=d16d100b)
![安卓源码和设计报告——火车订票系统](https://picx.zhimg.com/80/v2-18a0b6c242a24cf54e7fbcf466efc08b_720w.webp?source=d16d100b)
![安卓源码和设计报告——火车订票系统](https://picx.zhimg.com/80/v2-c041d97d2322d2cdd9cf64e3e1711ed7_720w.webp?source=d16d100b)
![安卓源码和设计报告——火车订票系统](https://picx.zhimg.com/80/v2-96a0df5c80aa795102b435e241d02e02_720w.webp?source=d16d100b)
![安卓源码和设计报告——火车订票系统](https://picx.zhimg.com/80/v2-1a18fdfe2f113f09022b48007ff063ee_720w.webp?source=d16d100b)
![安卓源码和设计报告——火车订票系统](https://picx.zhimg.com/80/v2-53ec850bfa1b531e0850d770e6a72728_720w.webp?source=d16d100b)
![安卓源码和设计报告——火车订票系统](https://picx.zhimg.com/80/v2-36cff1bc5c469abd1fb99aa4930ba46d_720w.webp?source=d16d100b)
![安卓源码和设计报告——火车订票系统](https://picx.zhimg.com/80/v2-cdc6f15fb05bba44bf18446adedaaecc_720w.webp?source=d16d100b)
![安卓源码和设计报告——火车订票系统](https://picx.zhimg.com/80/v2-976034785a80a0ca3111529774d24020_720w.webp?source=d16d100b)
![安卓源码和设计报告——火车订票系统](https://picx.zhimg.com/80/v2-398eceba06a41e517de95bc32d19a9a1_720w.webp?source=d16d100b)