系统实现说明书.docx
《系统实现说明书.docx》由会员分享,可在线阅读,更多相关《系统实现说明书.docx(32页珍藏版)》请在冰豆网上搜索。
系统实现说明书
学校代码:
10128
学号:
****
课程设计说明书
题目:
车站售票管理系统
—系统实现说明书
学生姓名:
*****
学院:
信息工程学院
班级:
****
指导教师:
***
***
2011年9月15日
目录
1.系统原型2
2数据库实现3
2.1数据库配置3
2.2表的创建(图形方式/SQL语句方式)3
3功能实现——按照功能模块进行说明4
3.1环境搭建4
3.2登录功能的实现5
3.2.1页面设计5
3.2.2功能的实现5
3.2.3配置框架8
3.3注册功能的实现9
3.3.1页面设计9
3.3.2功能实现9
3.3.3配置框架10
3.4查询功能实现12
3.4.1页面设计12
3.4.2功能实现13
3.4.3配置框架15
3.5修改功能实现16
3.5.1页面设计16
3.5.2功能实现17
3.5.3配置框架20
3.6售票功能实现22
3.6.1页面设计22
3.6.2功能实现23
3.6.3配置框架25
3.7退票功能实现26
3.7.1页面设计26
3.7.2功能实现27
3.7.3配置框架30
4收获与致谢30
1.系统原型
本项目适用于Windows操作系统,使用MySQL数据库,使用JAVA语言开发,引入了Struts2,基于MVC的模式进行系统的设计与实现。
将系统主要分为以下几个模块:
1、登录,只有登录成功后才可以使用系统的功能;
2、注册,增加系统的用户;
3、查询,可以进行车次查询,站点查询,用户也可以通过查询来了解列车所经车站以及发车时间等信息;
4、修改,售票员可以根据需求更改个人信息;
5、售票,根据旅客的需求如发车日期、发车时间、车票类型等选择用户所需要的车次,然后结算并打印车票给旅客;
6、退票,根据旅客的退票需求,修改车次的车票数量或者票价;
利用struts2技术,主要将系统分为三层:
视图、模型、控制器。
其中,视图使用jsp来实现;模型由JavaBean组成,JavaBean封装了底层的业务逻辑,包括数据库访问等;控制器由Action实现,负责处理用户请求,本身不具备处理能力,而是调用模型来完成处理。
构建基于Struts2框架的JavaWeb应用程序,需要以下八个步骤:
1)建立工程;2)引入Struts2工程所需运行库文件;3)创建并配置web.xml文件;4)创建应用程序视图(原型);5)构建数据访问类;6)构建业务类;7)创建Action类;8)创建并配置struts.xml文件;9)发布应用。
该系统主要由两个个文件构成,src源文件以及webcontent文件,主要文件结构见下图:
存放控制器文件,并调用模型层实现功能
com.tarena.action
封装连接数据库的功能
com.tarena.dao
图3-1系统文件结构图
2数据库实现
2.1数据库配置
该系统使MySQL数据库,涉及二个表:
info,user。
其中user表存储售票员信息,info用来存储列车及票务信息。
2.2表的创建(图形方式/SQL语句方式)
在MySQL新建数据库train2,在数据库中使用新建向导创建二个表。
图3-2MySQL数据库中user表截图
图3-3MySQL数据库中info表截图
3功能实现——按照功能模块进行说明
3.1环境搭建
(1)向工程中导入struts2的包,复制到lib文件夹下;
(2)导入sql.jdbc包,方法同上;
(3)配置Tomcat6.0。
3.2登录功能的实现
3.2.1页面设计
图3-4登录界面
3.2.2功能的实现
在model包中建立User类,其中设计了用户的属性,并对每一个属性使用系统自动生成的set和get方法。
并写了有参构造函数和无参构造函数,如下所示。
在User类中,用户的id是系统默认自动生成的,用户根据自己已注册的email进行登录,登录名和密码正确即可登录成功。
packagecom.tarena.model;
publicclassUser{
privateintid;
privateStringemail;
privateStringname;
privateDatebirthday;
privatechargender;
privateStringpassword;
privateStringlocus;
publicUser(){}
publicUser(Stringemail,Stringname,Datebirthday,chargender,
Stringpassword,Stringlocus){
super();
this.email=email;
this.name=name;
this.birthday=birthday;
this.gender=gender;
this.password=password;
this.locus=locus;
}
publicStringgetEmail(){
returnemail;
}
publicvoidsetEmail(Stringemail){
this.email=email;
}
在类UserAction.java中的UserServiceImpl方法实现了与Service的连接,通过Service才可以进行与数据库的连接与查询,从而实现struts2的三层模式。
并验证身份。
在Useraction.java中,若验证成功,则返回"success";若验证失败,则返回"fail";根据struts.xml中的action描述登录模块中,若返回值为"success"则跳转到/WEB-INF/userdetail.jsp,即登录成功进入下一页面,若返回值为"fail"则跳转到/index.html,即登录失败返回登录界面。
packagcom.tarena.action;
importcom.tarena.model.User;publicclassUserAction{
privateUseruser;
privateIUserServiceservice=newUserServiceImpl();
publicStringlogin()throwsException{
UserserviceUser=service.login(user);
if(serviceUser!
=null){
user=serviceUser;
return"success";
}
return"fail";
}}
//struts.xml
method="login">
/WEB-INF/userdetail.jsp
/index.html
通过sevice包下的UserServiceImpl与数据库进行连接,进行验证登录是否成功。
publicUserlogin(Useruser){
UserdbUser=null;
if(user==null)
returnnull;
try{
dbUser=dao.findByEmail(user.getEmail());
}catch(SQLExceptione){
e.printStackTrace();
}
if(user.getPassword().equals(dbUser.getPassword())){
returndbUser;
}
returnnull;
}
3.2.3配置框架
登录模块的配置框架置于WebContent包下的index.html中,由于WEB-INF受保护,因此不能置于WEB-INF中。
账号: |
| |
| 输入注册的邮箱地址
密码: | 忘了密码? | |
|
00020;"class="smallandgray">还没有注册?
用Email注册
|
3.3注册功能的实现
3.3.1页面设计
图3-5注册页面
3.3.2功能实现
在类UserAction.java中的serviceUser方法实现了与Service的连接,通过Service才可以进行与数据库的连接与查询,从而实现struts2的三层模式。
并验证身份。
在Useraction.java中,若验证成功,则返回"success";若验证失败,则返回"fail";根据struts.xml中的action描述登录模块中,若返回值为"success"则跳转到/WEB-INF/userdetail.jsp,即登录成功进入下一页面,若返回值为"fail"则跳转到/register.html,即登录失败返回登录界面。
类UserServiceImpl.java,该类将用户的信息插入到数据库User中,类中设置get与set方法与register.jsp文件相互传递数据。
packagecom.tarena.action;
importcom.tarena.model.User;
publicStringregister()throwsException{
UserserviceUser=service.register(user);
if(serviceUser!
=null){
user=serviceUser;
return"success";
}
return"fail";
}
//struts.xml
method="register">
/WEB-INF/userdetail.jsp
/register.html
//UserServiceImpl.java
publicUserregister(Useruser){
UserdbUser=null;
try{
dbUser=dao.save(user);
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
returndbUser;}
3.3.3配置框架
Email账号:
|
姓名:
|
生日:
onClick="WdatePicker()"> |
性别:
10px"name="user.gender" value="m"checked="checked"/>男 style="height: 10px"name="user.gender"value="f"/>女 |
密码:
|
| 6-16个字符组成,区分大小写,不能为9位以下纯数字 |
确认密码:
|
所在地:
|
|
15000;">href="#">车站售票系统服务条款
|
3.4查询功能实现
3.4.1页面设计
图3-6车票列表
图3-7站点信息
3.4.2功能实现
在类TrainAction.java中的TrainServiceImpl方法实现了与Service的连接,通过Service才可以进行与数据库的连接与查询,从而实现struts2的三层模式。
并验证身份。
在Useraction.java中,若验证成功,则返回"success";根据struts.xml中的action描述登录模块中,若返回值为"success"则跳转到list.jsp,即查询成功进入下一页面,类TrainServiceImpl.java,通过该类系统可以实现与数据库的连接,从而将表info中的列车所有信息全部显示出来。
类TrainDetailServiceImpl.java,该类也实现与数据库的连接,从而将每一个站点的信息通过点击按钮即可进行查询。
publicclassTrainActionextendsActionSupport
{
publicStringexecute()
{
trains=trainService.getTrains();
returnSUCCESS;
}
publicArrayListgetTrains()
{
returntrains;
}
privateTrainServicetrainService=newTrainServiceImpl();
privateArrayListtrains;
}
//struts.xml
/list.jsp
//TrainServiceImpl.java
publicclassTrainServiceImplimplementsTrainService
{
publicArrayListgetTrains()
{
ArrayListtrainList=null;
trainList=trainDao.allTrains();
returntrainList;
}
privateTrainDaotrainDao=newTrainDaoImpl();
}
//TrainDetailServiceImpl.java
importcom.tarena.dao.TrainDetailDao;
importcom.tarena.dao.TrainDetailDaoImpl;
importcom.tarena.model.Train;
publicclassTrainDetailServiceImplimplementsTrainDetailService
{
publicTraingetTrain(Stringno)
{
Traintrain=null;
intstationNumber=Integer.parseInt(no);
train=trainDetailDao.findByStationNumber(stationNumber);
returntrain;
}
privateTrainDetailDaotrainDetailDao=newTrainDetailDaoImpl();
}
3.4.3配置框架
debug/>
站点 | 车次 | 始发站 | 所到站 | 到站时间 | 发车时间 | 里程 |
---|
iteratorvalue="trains"status="st"id="train">
no='+${train.stationNumber}"> | ${train.trainNumber} | ${train.startStation} | ${train.endStation} | ${ingTime} | ${train.startTime} | ${train.mile} |
iterator>
3.5修改功能实现
3.5.1页面设计
图3-8修改前的页面
图3-9修改页面
图3-10修改后的页面
3.5.2功能实现
在类UserAction.java中的UserServiceImpl方法实现了与Service的连接,通过Service才可以进行与数据库的连接与查询,从而实现struts2的三层模式。
并验证身份。
在Useraction.java中,若验证成功,则返回"success";根据struts.xml中的action描述登录模块中,若返回值为"success"则跳转到usermodify.jsp,即查询成功进入下一页面,类UserServiceImpl.java,通过该类系统可以实现与数据库的连接,从而将表user表中的列车所有信息修改。
publicclassUserAction{
privateUseruser;
privateIUserServiceservice=newUserServiceImpl();
publicStringlogin()throwsException{
UserserviceUser=service.login(user);
if(serviceUser!
=null){
user=serviceUser;
return"success";
}
return"fail";
}
publicStringregister()throwsException{
UserserviceUser=service.register(user);