收藏 分销(赏)

火车售票管理系统--软件综合课程设计.doc

上传人:天**** 文档编号:5126113 上传时间:2024-10-26 格式:DOC 页数:48 大小:2.68MB 下载积分:12 金币
下载 相关 举报
火车售票管理系统--软件综合课程设计.doc_第1页
第1页 / 共48页
火车售票管理系统--软件综合课程设计.doc_第2页
第2页 / 共48页


点击查看更多>>
资源描述
沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:软件综合课程设计 课程设计题目:火车售票管理系统 院(系):计算机学院 专 业:计算机科学与技术 班 级: 学 号:2 姓 名: 指导教师: 说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。报告和电子数据必须作为实验现象重复的关键依据。 沈阳航空航天大学课程设计报告 学术诚信声明 本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。 本人签名: 日期: 年 月 日 课程设计总结: 通过此次课程设计,使我更加扎实的掌握了有关编码方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。  过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在同学和老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!  我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在编码过程中,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。 回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。   目 录 学术诚信声明 I 1 题目介绍和功能要求 1 1.1 题目介绍 1 1.2 功能要求 1 2 系统功能模块结构图 2 2.1 系统功能结构框图 2 2.2 系统功能流程图 3 2.3 系统主要模块功能说明 4 2.3.1 初始显示界面 4 2.3.2 选择页面 5 2.3.3 管理员登陆页面及修改余票页面 6 2.3.4 用户购票登陆页面及购票页面 7 2.3.5 用户查票登陆页面 8 3 数据结构介绍 9 3.1 Android架构 9 3.2 数据库 9 4 涉及主要方法描述 11 4.1 数据库类 11 4.2 XML文件 11 4.3 页面配置类 12 4.4 AndroidManifest文件 12 5 主要算法描述 14 5.1 管理员操作模块 14 5.2 用户买票模块 15 5.3 用户查票模块 16 6 程序测试 17 参考文献 19 附 录(关键部分程序清单) 20 43 沈阳航空航天大学课程设计报告 1 题目介绍和功能要求 1.1 题目介绍 设计一个火车售票管理系统。 1、 车次信息基本管理; 2、 放票管理; 3、 购票管理; 4、 车票查询。 1.2 功能要求 1、车次、站点、车站间票价等基本信息的管理; 2、对某车次车票进行放票,设定余票信息; 3、根据用户的身份证购买某次车票,同时对余票信息进行维护; 4、根据车次、出发地、目的地等进行车次、余票信息进行维护; 5、实现已购买车票的退票改签功能,输入身份证号进行车票打印。 沈阳航空航天大学课程设计报告 2 系统功能模块结构图 2.1 系统功能结构框图 该系统由选择、管理员登陆、用户购票登陆、用户查询车票等页面构成,系统功能模块结构框图如下图2.1.1所示: 火车票购票管理系统 用户选择页 面 管理员登陆页面 用户购票登陆页 面 用户查票页 面 用户选择车票页 面 图2.1.1 系统功能模块结构图 2.2 系统功能流程图 该系统是一款基于Android系统的App,执行过程如下: 首先是进入该系统的界面。进入后有管理员登陆、用户购票、用户查票登陆三个选项。选择管理员登陆,可进行车次列表的查询和对余票的修改,实现放票功能;选择用户购票登陆,可进行车次、出发地和目的地的车次查询,实现用户查询车票功能,选择所查询出的车次进入购票界面,输入身份证号即可购票,实现购票功能;选择用户查票登陆,可根据上述已购票的身份证号查询已购车次信息。功能流程图如下图2.2.1所示: 图2.2.1 系统功能流程图 2.3 系统主要模块功能说明 2.3.1 初始显示界面 如图2.3.1所示,这是这款app的初始显示界面,图中有一个人,人脑上方有一个灯泡,意思是灵光一闪,闪出了这款app。 这个界面后台由定时器设置,大约3秒后跳入登录信息输入页面,同时,在此区间内,建立初始数据库。 图2.3.1 初始显示界面 2.3.2 选择页面 如图2.3.2所示,是选择页面,有管理员登陆、用户购票登陆、用户查票登陆三个选项,根据不同需求进行选择。 管理员可选择管理员登陆进行放票操作; 用户可选择可根据需求进行购票和查票。 图2.3.2 选择页面 2.3.3 管理员登陆页面及修改余票页面 如图2.3.3所示,可显示车次列表,从中可查询到各车次的情况。选择其中一项可进行余票设置,设置完成以后点击提交即修改完成。 图2.3.3 管理员登陆页面及修改余票页面 2.3.4 用户购票登陆页面及购票页面 如图2.3.4,点击进入用户购票登陆即可进入左图页面。在车次、出发站和终点站输入所需查询信息,点击查询即可显示所需查询的车票信息:票价和余票; 选择其中车次信息即可进入右图页面,在方框内输入身份证号并点击购票则购票成功。 完成后,数据库保存购票信息,并更新余票信息。 图2.3.4 用户购票登陆页面及购票页面 2.3.5 用户查票登陆页面 如图2.3.5,这个是这款app的查询页面,通过在上方输入栏输入已购票身份证号点击查票,即可查询。 图2.3.5 用户查票登陆页面 3 数据结构介绍 3.1 Android架构 Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。 本系统就利用Android架构编写,是基于Android系统的一款app,运行于Android手机上。 3.2 数据库 该系统的数据存储结构为数据库,分为两个表,分别为user表和tran表,user表结构如下表3.2.1 属性名称 属性类型 长度 属性含义 Idnum Varchar 20 用户身份证号码 Begin varchar 20 出发站 End Varchar 20 终点站 Count Varchar 40 车次 表3.2.1 数据库user表结构 tran表结构如下表3.2.2 属性名称 属性类型 长度 属性含义 Count Varchar 20 车次 Stations varchar 40 各站点 Money Varchar 20 每站价格 Number Varchar 20 余票数 表3.2.2 数据库tran表结构 沈阳航空航天大学课程设计报告 4 涉及主要方法描述 4.1 数据库类 该部分是对Android封装数据库SQLite方法的重写,取名为Databasehelper,其中包括onCreate方法和onUpgrade方法 。 SQLite数据库根据版本号对数据库进行操作,若版本号为1,代表该数据库为新创建,执行onCreate方法,若版本号大于1,代表改数据库为已存在数据库,执行onUpgrade对其进行更新访问。 代码如下: public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub System.out.println("create a datebase"); db.execSQL("create table tran(count varchar(20)primary key," + "stations varchar(40),money varchar(20),number varchar(20))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub System.out.println("update a database"); 4.2 XML文件 此类文件用于界面元素配置,类似于JSP、html等语言中的标签,它也是通过标签来设置页面显示元素,例如按钮Button,标签中直接对其属性进行配置,代码如下: <Button android:id="@+id/btn_adm_user" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="用户管理" /> 4.3 页面配置类 这种类用于通过Java代码来实现对界面XML文件的配置,SetContentView(Layout)方法使该类与相应前台xml文件相联系, findViewById(ID)方法使界面中的控件与类中定义的变量相联系,例如按钮响应事件,变量获取相应控件ID后调用onClickListener方法对其进行监听,代码如下: @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_userbuy); init(); } private void init() { // TODO Auto-generated method stub showCount = (TextView)findViewById(R.id.ub_tv_showcount); btn_buy = (Button)findViewById(R.id.ub_btn_buy); id_input = (EditText)findViewById(R.id.ub_et_id); Intent i = getIntent(); count = i.getStringExtra("count"); begin = i.getStringExtra("begin"); end = i.getStringExtra("end"); } 4.4 AndroidManifest文件 该文件用来记录配置了XML文件的类,以及一些特殊权限、sdk版本、样式等信息,是一个配置文件。代码如下: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=" package="com.example.trans" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="21" /> <application android:allowBackup="true" android:icon="@drawable/trans" android:label="Trans" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> <activity android:name=".A_Splash"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".C_UserConLoginPage" android:label="用户登录" > </activity> <activity android:name=".C_AdmLoginPage" android:label="管理员登陆" > </activity> <activity android:name=".D_YpSet" android:label="管理员登陆" > </activity> <activity android:name=".D_UserBuy" android:label="管理员登陆" > </activity> <activity android:name=".D_BackPage" android:label="管理员登陆" > </activity> </application> </manifest> 5 主要算法描述 5.1 管理员操作模块 该模块负责管理员用户的操作,即对出票信息进行管理。通过点击管理员登陆按钮,就可以登陆到管理员界面,这里从数据库读取完信息后用listView来显示车票信息,点击相应车票即可进入余票管理界面,通过输入要更新的余票数目对车票信息进行更新,流程图如下图5.1.1所示。 开始 进入管理员界面 点击车次进入余票修改界面 修改余票并提交 结束 显示列车信息 图5.1.1 登录模块流程图 5.2 用户买票模块 该模块用于普通用户买票功能,用户通过输入框输入初始站和终点站,检测输入无误后,即可从数据库中匹配相应信息并导入到ListView中显示,若数据库中没有相应信息,则显示为空。点击看中的车票进入买票页面,输入用户身份在号码,即可购票,购票信息保存如user数据库,流程图如下图5.2.1所示。 开始 输入框获取信息并校验 匹配成功? 显示车次 结束 N Y 显示为空 点击进入购票页面 输入身份证号码购票成功,数据存入数据库 图5.2.1 用户买票流程图 5.3 用户查票模块 该模块提供用户查票功能,通过输入框获取用户输入的身份证号码,然后在user数据库寻找匹配值,找到返回结果,找不到显示为空。点击相应车票进入详细信息界面,该界面打印出选中车票的车次、出发站、终点站等信息,并提供退票功能,点击退票按钮,数据库信息更新,退票完成。流程图如图5.3.1所示。 开始 输入框获取信息并校验 匹配成功? 显示已买车次 结束 N Y 显示为空 点击进入详细信息页面 点击退票按钮,车票退掉,数据库更新 图5.3.1 用户查票模块流程图 6 程序测试 1. 初始界面 如图6.1所示 图6.1 初始界面 2.管理员登陆 如图6.2所示 图6.2 管理员登陆界面 3. 用户购票 输入北京到上海的车次,选择T123车次购票,输入身份证号为123456789,完成购票。如图6.3所示 图6.3 用户购票 4. 用户查票 选择用户查票登陆,输入已购票的身份证号123456789,即可显示已购票信息。如图6.4所示。 图6.4 用户查票 沈阳航空航天大学课程设计报告 参考文献 [1] 梁方明. SQL Server 2000 数据库编程. 北京: 希望电子出版社, 2002 [2] 张海藩. 软件工程导论. 北京: 清华大学出版社, 2003 [3] 立南. SQLServer2000 实用教程. 北京: 清华大学出版社, 2004 [4] 寿志勤.李乐明.崇大志.一个面向政务流程的工作流管理系统分析与构建[J].电子政务,2005. [5] 苏翻.基于 J2EE 平台的改进 MVC 的研究及其应用[J].南京航空航天大学学报,2006 [6] Meyer, B.. NET is coming [Microsoft Web services platform]. Computer, 2001. 34(8): p. 92--97. [7] Li, M. and H. Wang. A device management system based on JAVAEE Web.Wuhan, China,2009 [8] Li, Z. and Z. Weixi. Design of tourism e-business system based on JavaEE multi-pattern.Sanya, China,2012 [9] Craig Larman. UML 和模式应用. 第 2 版. 北京: 机械工业出版社,2004 沈阳航空航天大学课程设计报告 附 录(关键部分程序清单) TranDataBaseHelper类: package com.example.DB; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class TranDatebaseHelper extends SQLiteOpenHelper{ public static final int Version=1; public TranDatebaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } public TranDatebaseHelper(Context context,String name,int version) { this(context,name,null,version); } public TranDatebaseHelper(Context context,String name) { this(context, name, Version); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub System.out.println("create a datebase"); db.execSQL("create table tran(count varchar(20)primary key," + "stations varchar(40),money varchar(20),number varchar(20))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub System.out.println("update a database"); } } userDataBaseHelper类: package com.example.DB; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class UserDatebaseHelper extends SQLiteOpenHelper{ public static final int Version=1; public UserDatebaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } public UserDatebaseHelper(Context context,String name,int version) { this(context,name,null,version); } public UserDatebaseHelper(Context context,String name) { this(context, name, Version); } @Override public void onCreate(SQLiteDatabase db) { // TODO Auto-generated method stub System.out.println("create a datebase"); db.execSQL("create table user(idnum varchar(20)primary key," + "begin varchar(20),end varchar(20),count varchar(40))"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub System.out.println("update a database"); } } MainActivity类: package com.example.trans; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class B_MainActivity extends Activity implements OnClickListener{ private Button btn_userBuyLogin; private Button btn_userConLogin; private Button btn_admLogin; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); btn_userBuyLogin.setOnClickListener(this); btn_userConLogin.setOnClickListener(this); btn_admLogin.setOnClickListener(this); } //初始化 public void init(){ btn_userBuyLogin = (Button)findViewById(R.id.btn_userBuyLogin); btn_userConLogin = (Button)findViewById(R.id.btn_userConLogin); btn_admLogin = (Button)findViewById(R.id.btn_admLogin); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.btn_admLogin:{ Intent i = new Intent(B_MainActivity.this,C_AdmLoginPage.class); startActivity(i); break; } case R.id.btn_userBuyLogin:{ Intent i = new Intent(B_MainActivity.this,C_UserBuyLoginPage.class); startActivity(i); break; } case R.id.btn_userConLogin:{ Intent i = new Intent(B_MainActivity.this,C_UserConLoginPage.class); startActivity(i); break; } default:{ } } }; @Override public void onBackPressed() { // TODO Auto-generated method stub // super.onBackPressed(); AlertDialog.Builder dialog = new AlertDialog.Builder(B_MainActivity.this); dialog.setTitle("").setIcon(android.R.drawable.ic_dialog_info).setMessage("确定退出?") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 转跳到另外一个Activity // TODO Auto-generated method stub finish(); } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.cancel();// 取消弹出框 } }).create().show(); } } AdmLoginPage类: package com.example.trans; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.example.DB.TranDatebaseHelper; import com.example.util.UserAdspter; import android.app.Activity;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服