专业课程设计II报告B10040101.docx
- 文档编号:2014422
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:34
- 大小:1.17MB
专业课程设计II报告B10040101.docx
《专业课程设计II报告B10040101.docx》由会员分享,可在线阅读,更多相关《专业课程设计II报告B10040101.docx(34页珍藏版)》请在冰点文库上搜索。
专业课程设计II报告B10040101
专业课程设计II报告
(2013/2014学年第一学期)
题目:
高铁车票订购信息管理系统
专业计算机科学与技术
学生姓名王欣源
学生学号B********
指导教师戴华
指导单位计算机科学与技术系
日期2014.1.5-2014.1.16
指导教师成绩评定表
学生姓名
班级学号
专业
计算机科学与技术
评分内容
评分标准
优秀
良好
中等
差
平时成绩
认真对待课程设计,遵守实验室规定,上机不迟到早退,不做和设计无关的事
设计成果
设计的科学、合理性
功能丰富、符合题目要求
界面友好、外观漂亮、大方
程序功能执行的正确性
程序算法执行的效能
设计报告
设计报告正确合理、反映系统设计流程
文档内容详实程度
文档格式规范、排版美观
验收答辩
简练、准确阐述设计内容,能准确有条理回答各种问题,系统演示顺利。
评分等级
指导教师
简短评语
该同学出勤率(满勤、较高、一般,较低),学习态度(端正、较端正、一般、较差),演示程序(未)达到了(基本要求、提高要求1或/和2),撰写报告格式(规范、一般)、表述(清晰、一般、不清楚),圆满(较好、基本)完成了课题任务。
指导教师签名
日期
2014年1月15日
备注
评分等级有五种:
优秀、良好、中等、及格、不及格
一、课题内容和要求
本次的专业课程设计题目是高铁车票订购信息管理系统。
相关课题的内容和要求具体如下:
1.课题内容:
该系统要求建立高铁车票订购管理系统,并且该管理系统能够实现排序、查找、计算、显示等功能。
高铁车票订购管理系统信息应包括如下结构信息,且均需存储在数据库系统中。
(1)高铁车次信息:
车次,出发地,到达地,时间,价格,总车票数量等;
(2)旅客信息:
ID,姓名,性别,年龄,身份证号码等;
(3)订票信息:
ID,车次,车厢号,座位号,订票时间;
2.课题实现的基本功能有:
(1)系统可支持登录的用户分为两类:
普通旅客和管理员,不同用户登录进入系统均需验证用户名和密码,验证失败则不允许登录。
(2)对于普通旅客用户而言,需完成如下的功能:
系统能够实现注册,如果数据库中没有此用户信息则需要注册,只有注册成功的用户才能进入到此车票订购信息管理系统(同时注册的用户的信息写入到数据库中的用户信息表中);
支持普通用户查询某一车次的信息(需要输出当前车次出发地,到达地,出发时间,到达时间,价格,车票总数及剩余的票数)。
查询条件由用户指定,可以输入车次查询,可以输入出发地和目的地进行查询,同时能够按照出发时间和价格进行排序输出(排序方法由用户选择);
支持普通用户的订票和退票的功能(用户订的车次信息也能够存储到数据库中的车票订购的表中)。
(3)对于管理员用户而言,需完成如下功能:
支持查询某位旅客的订票信息,当输入该旅客的姓名时,可以在屏幕上显示出该旅客的所有的订票信息;
支持查询某车次的基本信息及订票情况,当输入某一车次ID时,可以在屏幕上显示出该车次的基本信息(包括出发地,到达地,出发时间,到达时间,价格,当前已售出车票数量,剩余数量和总数量)以及与该车次相关的旅客订票信息(需输出旅客的姓名,车次号,车厢号,座位号,以及订票的时间);
支持管理员对列车信息的管理,如增加一趟列车(包括添加车次,出发地,到达地,出发时间,到达时间,价格,车票总数),删除某趟列车,修改某趟列车的信息(修改除车次外的信息)。
3.课题实现的提高要求有:
(1)实现良好的图形化用户界面(即需要有UI的设计);
(2)支持从出发点到终点的最佳路线的选取和计算,例如计算从扬州到北京的费用最低路线、换乘次数最少路线、旅途时间最短路线等。
二、需求和思路分析
有关课题的需求在第一部分已详细的叙述清楚,在此简要说明。
此次设计的高铁车次订票信息管理系统的需求有:
1.实现数据存储采用数据库。
2.能够实现友好的界面设计。
3.实现普通用户的注册,登录,并实现查询车次订票退票的功能。
4.实现管理员对普通乘客,车次的查询,支持对列车信息的增加修改和删除的操作。
我设计此系统的基本思路为:
此次的课程设计要求与数据库相连接,我采用的是MySql与MyEclipse以及jdk1.7版本。
MyEclipse是一个开放可扩展的集成开发环境(IDE)。
它不仅可以用于Java的开发,通过开发插件,它可以构建其他的开发工具.MyEclipse是开放源代码的项目,并可以免费下载。
MySQL具有强大的数据管理功能,提供了丰富的管理工具支持数据的完整性管理、安全性管理和作业管理,是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。
两者的连接比较容易,在java程序中导入mysql-java-connector.jar连接包就可以了。
具体实现时,先设计三个类Train、User、Order,每个类中定义各自对应的成员变量,即与数据库中建立的表的属性一一相对应。
并且在java中建立一个包用来实现数据从java程序段中和数据库中互联。
例如:
在管理员添加或修改了车次的信息后就可以实现对应的数据库中的数据的更新,在用户信息车次信息的查询时,java界面上就要能够显示出来数据库中相应的信息。
用javaswing编写界面,在进行页面的设计时,分两块来做,一块实现管理员的功能,一块实现普通用户的功能。
每一部分在按照各自的要求一一添加进去。
在java工程中,创建了多个包封装了不同的类,来实现不同的功能,在此叙述每个模块的作用,具体阐述在第四部分介绍。
1.defaultpackage包
Main.javaMain函数调用run()用来运行程序。
Test.java这是一个测试函数,在代码实现的过程中测试每一部分的功能。
2.dao包
OrderDao.java从MySql数据库中读取订票信息并且当用户订票后产生的新信息存储到MySql中TrainOrder的表中。
TrainDao.java从MySql数据库中读取车次信息并且当管理员对车次信息操作后从新存储到MySql中的TrainList的表中。
UserDao.java从MySql数据库中读取用户信息并且当有新的用户注册时,将信息在存储到MySql中的UserInfo的表中。
3.model包
Order.java创建订票类,类中的变量与MySql数据库中表TrainOrder的属性一一相对应,并且建立Order()用来输出所有订票信息。
Train.java创建车次类,类中的变量与MySql数据库中表TrainList的属性一一相对应,并且建立Train()用来输出所有的车次信息。
User.java创建用户类,类中的变量与MySql数据库中表UserInfo的属性一一相对应,并建立User()用来输出所有的用户信息。
3.service包
UserService.java当登陆时检测输入的用户名密码是否正确,并且用户注册时检测数据库中是否已存在此用户。
5.util包一些函数的集合其他包中若要用到需要引用此包中的文件
DateUtil.java设置日期格式
Global.java设置全局变量
JdbcUtil.java设置连接
WindowUtil.java设置界面窗口的格式
6.view.java包
BaseDialog.java设置的一个空类,以防以后需要添加功能。
LoginDialog.java设置登录界面,此界面上包括登录和注册按钮。
OrderDialog.java设置用户订票时的查询界面,包括按车次、出发地、目的地查询,按出发时间、价格将输出进行排序。
OrderInputDialog.java设置用户订票的界面,包括输入车厢号座位号。
QueryOrderDialog.java设置管理员查询用户订票信息的界面。
QueryTrainDialog.java设置管理员查询车次信息的界面。
RegisterDialog.java设置用户注册时的界面,包括输入姓名、性别、年龄、身份证号以及登录密码。
TrainInfoManageDialog.java设置管理员对车次信息管理的界面,包括添加,修改和删除车次。
TrainInfoEditDialog.java设置管理员添加修改车次时的界面。
7.view.window包
BaseWindow.java一个空文件以防以后添加新功能。
ImageLabel.java在首页添加一张背景图片。
MainWindow.java主界面的设置。
三、概要设计
1.关于数据库部分的设计:
在MySql数据库中存储有三张表,用来存放所有的数据信息。
Trainlist表中,存储车次相关的信息,其属性有id,from,to,fromtime,totime,price,amount.其中关键码为id.如图所示:
当添加入车次信息后,如图所示(只列出了一部分,可继续添加):
userinfo表中,存储与用户相关的信息,其属性有id,Name,Sex,Age,IdCard,Type,UserPass.其中关键码为id.如图所示:
当用户注册后,数据库中存储的信息为(可继续添加用户信息):
Trainorder表中,存储的是用户订票的信息,其属性有id,TrainId,UserId,TrainNo,SeatNo,OrderTime,其中主键为id,引用的外键为Train表中的id,和Userinfo表中的Id。
如图所示:
当用户产生订票行为后,会记录在此表中。
如图是一些用户的订票的行为:
2.数据库的E-R图如下:
用户E-R图
车次E-R图
订票信息E-R图
3.系统整体的流图为:
4.系统中使用的存储结构为:
订票信息存储结构为:
publicclassOrder{
privateintid;
privateintuserId;
privateStringtrainId;
privateinttrainNo;
privateintseatNo;
privateDateorderTime;
publicintgetId(){returnid;}
publicvoidsetId(intid){this.id=id;}
publicintgetUserId(){returnuserId;}
publicvoidsetUserId(intuserId){this.userId=userId;}
publicStringgetTrainId(){returntrainId;}
publicvoidsetTrainId(StringtrainId){this.trainId=trainId;}
publicintgetTrainNo(){returntrainNo;}
publicvoidsetTrainNo(inttrainNo){this.trainNo=trainNo;}
publicintgetSeatNo(){returnseatNo;}
publicvoidsetSeatNo(intseatNo){this.seatNo=seatNo;}
publicDategetOrderTime(){returnorderTime;}
publicvoidsetOrderTime(DateorderTime){this.orderTime=orderTime;}
@Override
publicStringtoString(){
return"Order[id="+id+",userId="+userId+",trainId="
+trainId+",trainNo="+trainNo+",seatNo="+seatNo
+",orderTime="+orderTime+"]";}
}
用户信息存储结构:
publicclassUser{//实现用户注册信息类
privateintid;
privateStringname;
privateStringsex;
privateintage;
privateStringidCard;
privateinttype;
privateStringpassword;
publicintgetId(){returnid;}
publicvoidsetId(intid){this.id=id;}
publicStringgetName(){returnname;}
publicvoidsetName(Stringname){this.name=name;}
publicStringgetSex(){returnsex;}
publicvoidsetSex(Stringsex){this.sex=sex;}
publicintgetAge(){returnage;}
publicvoidsetAge(intage){this.age=age;}
publicStringgetIdCard(){returnidCard;}
publicvoidsetIdCard(StringidCard){this.idCard=idCard;}
publicintgetType(){returntype;}
publicvoidsetType(inttype){this.type=type;}
publicStringgetPassword(){returnpassword;}
publicvoidsetPassword(Stringpassword){this.password=password;}
publicStringtoString(){
return"User[id="+id+",name="+name+",sex="+sex+",age="+age+",idCard="+idCard+",type="+type+",password="
+password+"]";}
}
车次信息存储结构:
publicclassTrain{//实现车次的信息的类,
privateStringid;
privateStringfrom;
privateStringto;
privateDatefromTime;
privateDatetoTime;
privatedoubleprice;
privateintamount;
publicStringgetId(){returnid;}
publicvoidsetId(Stringid){this.id=id;}
publicStringgetFrom(){returnfrom;}
publicvoidsetFrom(Stringfrom){this.from=from;}
publicStringgetTo(){returnto;}
publicvoidsetTo(Stringto){this.to=to;}
publicDategetFromTime(){returnfromTime;}
publicvoidsetFromTime(DatefromTime){this.fromTime=fromTime;}
publicDategetToTime(){returntoTime;}
publicvoidsetToTime(DatetoTime){this.toTime=toTime;}
publicdoublegetPrice(){returnprice;}
publicvoidsetPrice(doubleprice){this.price=price;}
publicintgetAmount(){returnamount;}
publicvoidsetAmount(intamount){this.amount=amount;}
publicStringtoString(){
return"Train[id="+id+",from="+from+",to="+to
+",fromTime="+fromTime+",toTime="+toTime+",price="
+price+",amount="+amount+"]";}
}
四、详细设计
代码实现之前要将数据库与Java相连接,只添加Java-Mysql-connector.Jar是不够的,还需要添加配置文件DBConnectorConfig.properties。
有关配置文件的配置内容如下:
mysql.database.driver=com.mysql.jdbc.Driver
mysql.database.url=jdbc:
mysql:
//localhost:
3306/test?
useUnicode=true&characterEncoding=utf8
mysql.database.user=root//数据库的用户名
mysql.database.password=123//数据库的用户名的密码
java程序引用数据库中的数据以及用户或管理员操作后的内容从新写入到数据库中的实现如下:
(现引用订票数据的引用及存储来做详细阐述)
importjava.sql.Connection;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Timestamp;
importjava.util.ArrayList;
importjava.util.Date;
importmodel.Order;
importutil.Global;
importutil.JdbcUtil;//import的内容是引用的函数库
publicclassOrderDao{//将普通用户的订票退票信息导入数据库中
privatestaticOrdermapperRow(ResultSetresultSet)throwsSQLException{//从数据库中导入订票信息的相关数据(就是第三张表的内容)
Orderorder=newOrder();
order.setId(resultSet.getInt
(1));
order.setUserId(resultSet.getInt
(2));
order.setTrainId(resultSet.getString(3));
order.setTrainNo(resultSet.getInt(4));
order.setSeatNo(resultSet.getInt(5));
order.setOrderTime(resultSet.getTimestamp(6));
returnorder;
}
publicstaticintgetOrderCount(StringtrainId){
//统计数据库中trainId的数量
Connectionconn=null;
try{conn=JdbcUtil.getConnection();//表示连接数据库
Stringsql="selectcount(*)fromTrainOrderwhereTrainId=?
";
//根据数据库的TrainId来查询信息并记录到字符型sql中
PreparedStatementstmt=conn.prepareStatement(sql);
stmt.setString(1,trainId);
ResultSetrs=stmt.executeQuery();
if(rs.next()){returnrs.getInt
(1);}
}catch(Exceptione)
{e.printStackTrace();}
finallyJdbcUtil.close(conn);}//关闭数据库的连接
return0;}
publicstaticOrderget(StringtrainId,inttrainNo,intseatNo){
//通过trainId,trainNo,seatNo来得到用户订票的相关信息
Connectionconn=null;
try{conn=JdbcUtil.getConnection();//与数据库相连接
Stringsql="select*fromTrainOrderwhereTrainId=?
andTrainNo=?
andSeatNo=?
";//查询条件
PreparedStatementstmt=conn.prepareStatement(sql);
stmt.setString(1,trainId);
stmt.setInt(2,trainNo);
stmt.setInt(3,seatNo);
ResultSetrs=stmt.executeQuery();
if(rs.next()){
returnmapperRow(rs);
}
}catch(Exceptione){e.printStackTrace();}
finally{JdbcUtil.close(conn);}//关闭数据库的连接
returnnull;}
publicstaticArrayList
//
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专业课程 设计 II 报告 B10040101