资源描述
学号
《某客运公司的运输管理系统》
课程设计报告
题目:
某客运公司的运输管理系统
专业:
网络工程
班级:
姓名:
指导教师:
成绩:
计算机学院
2017年12月8日
目录
1、设计内容及要求 1
1.1 系统功能设计 1
2、概要设计 2
2.1概念结构 2
3、设计过程和代码 3
3.1 登陆页面设计: 3
3.2网站主界面设计: 4
3.3 司机信息界面 5
3.4 车辆信息管理界面 7
3.5 网站介绍界面 8
4、设计结果与分析 14
4.1需求分析 15
4.2 数据库分析 15
5、参考文献 17
19 / 21
1、设计内容及要求
1.1 系统功能设计
本网站由6大模块,分别是系统管理,司机信息管理,车辆信息管理,维修信息管理,运营信息管理,网站管理
1.系统管理
(1) 用户管理:通过该功能模块,管理员能查看所以用户信息以及新用户注册。
(2) 密码管理:通过该功能模块,进行密码修改。
2.司机信息管理
(1) 司机信息管理:通过该功能模块,管理员可以对司机信息进行添加,修改,删除。
(2) 司机信息发布:通过该功能模块,管理员可以对司机信息进行添加
(3) 关于司机信息:通过该功能模块,可以看到司机信息的数据字段。
3.车辆信息管理
(1) 车辆信息管理:通过该功能模块,管理员可以对车辆信息进行添加,修改,删除。
(2) 车辆信息发布:通过该功能模块,管理员可以对车辆信息进行添加
(3) 关于车辆信息:通过该功能模块,可以看到车辆信息的数据字段。
4.运营信息管理
(1) 运营信息管理:通过该功能模块,管理员可以对司机运营信息进行添加,修改,删除。
(2) 运营信息发布:通过该功能模块,管理员可以对司机运营信息进行添加
(3) 关于运营信息:通过该功能模块,可以看到司机运营信息的数据字段。
5.维修信息管理
(1) 维修信息管理:通过该功能模块,管理员可以对车辆维修信息进行添加,修改,删除。
(2) 维修信息发布:通过该功能模块,管理员可以对车辆维修信息进行添加。
(3) 关于维修信息:通过该功能模块,可以看到车辆维修信息的数据字段。
6.网站管理
(1) 网站主页:显示网站主页。
(2) 网站介绍:通过该功能模块,用户可以看到本网站所以功能需求及数据字段
(3) 关于我们:通过该功能模块,可以看到我们的联系方式及其他。
2、概要设计
2.1概念结构
在需求分析阶段所得到的应用需求应该首先抽象为信息世界的结构,才能更好地、更准确地用某一DBMS实现这些需求。
概念结构的主要特点是:
(1)能真实、充分地反应现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个真实模型;
(2)易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库设计成功的关键;
(3)易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充;
(4)易于向关系、网状、层次等各种数据模型转换。
概念结构是各种数据模型的共同基础,它比数据模型更独立于机器、更抽象,从而更加稳定。
用户登录
身份认证
网络管理
司机信息管理
登陆页面
系统管理
司机信息管理
司机信息管理
司机信息管理
3、设计过程和代码
3.1 登陆页面设计如图:
此界面是用户登录系统界面,通过数据验证,返回不同的值然后通过struts控制返回不同的页面,如图
//登陆
public String doLogin(){
System.out.println("进入dologin方法");
HttpSession session = ServletActionContext.getRequest().getSession();
String username = user.getUsername();
String password = user.getPassword();
System.out.println("用户名:"+username);
UserInfoSession userinfo = userBiz.check(username,password);
if(userinfo!=null){
session.setAttribute("USERINFO",userinfo);
return "login-success";
}
return "login-failure";
}
3.2网站主界面设计如图:
这是网站主界面,左边是导航,右边是现实页面,顶部显示登录用户和现在的具体时间。此部分时间显示用到JavaScript. 如图
部分代码如下:
<li>
<dl class="gallery">
<dt><a>系统管理</a></dt>
<dd><a href="../user/user-findAll" target="workspace">用户管理</a></dd>
<dd><a href="../user/user-toEdit" target="workspace">密码管理</a></dd>
</dl>
</li>
<li>
<dl class="gallery">
<dt><a>司机信息管理</a></dt>
<dd><a href="../driver/driver-findAll" target="workspace">司机信息管理</a></dd>
<dd><a href="../driver/driver-toAdd" target="workspace">司机信息发布</a></dd>
<dd><a href="../driver/driver.jsp" target="workspace">关于司机信息</a></dd>
</dl>
</li>
3.3 司机信息界面
这是车辆运营信息管理的界面,此界面可以查询车辆运营的所有信息以及对信息进行更新和添加删除。此外还可以根据司机姓名进行条件查询,每一页只显示4条记录,故有分页显示。如图
本界面有模糊查询和分页,具体代码如下
public PageMode findAll(PageMode pm) {
String query_hql = "from Car where 1=1 ";
String count_hql ="";
Map<String, String> param = pm.getParam();
if(param.hashCode()!=0) {
query_hql += ("and carOner like '%"+param.get("cname")+"%'");
System.out.println(query_hql);
}
List data = getSession().createQuery(query_hql)
.setFirstResult(pm.getFirstResult())
.setMaxResults(pm.getPageSize()).list();
count_hql = "select count(id) "+query_hql;
System.out.println(count_hql);
Long count = (Long) getSession().createQuery(count_hql).uniqueResult();
pm.setResult(data);
pm.setTotal(count);
return pm;
}
}
public class PageMode {
//分页参数
private int firstResult=0; //显示首页
private int pageSize=6;
private long total=1; //
//查询参数
private Map<String, String> param=new HashMap<String, String>();
//类表数据
private List result;
public int getFirstResult() {
return firstResult;
}
public void setFirstResult(int firstResult) {
this.firstResult = firstResult;
}
}
3.4 车辆信息管理界面
这是车辆信息管理界面,本界面可以对车辆信息进行管理,即对其增删改查。如图:
部分代码如下:
public String findAll(){
System.out.println("进入车辆信息findAll方法");
//System.out.println(list.size());
HttpSession session = ServletActionContext.getRequest().getSession();
if(cname!=null)session.setAttribute("cname",cname);
System.out.println(cname);
Object temp = session.getAttribute("cname");
pm.getParam().put("cname",temp==null?"":(String)temp);
pm.setFirstResult(firstResult!=null?firstResult:0);
pm.setPageSize(maxSize!=null?maxSize:4);
pm = carBiz.findAll(pm);
System.out.println(pm);
return SUCCESS;
}
3.5 网站介绍界面
这是一个网站主体介绍的主界面。通过这个界面用户可以了解本网站的研究目的,研究内容,开发平台,以及功能需求和数据库管理需求。如图
3.2.1数据处理dao层
通过写一个接口,接口里的只写方法不需要实现,然后通过实现这个接口并继承一个HibernateDaoSupport;,然后调用接口的方法并实现这些方法进行业务逻辑处理。
public class MakeDaoImpl extends HibernateDaoSupport implements IMakeDao{
public PageMode findAll(PageMode pm) {
String query_hql = "from Make where 1=1 ";
String count_hql ="";
Map<String, String> param = pm.getParam();
if(param.hashCode()!=0) {
query_hql+=("and carNumber like '%"+param.get("mname")+"%'");
System.out.println(query_hql);
}
List data = getSession().createQuery(query_hql)
.setFirstResult(pm.getFirstResult())
.setMaxResults(pm.getPageSize()).list();
count_hql = "select count(id) "+query_hql;
System.out.println(count_hql);
Longcount=(Long) getSession().createQuery(count_hql).uniqueResult();
pm.setResult(data);
pm.setTotal(count);
return pm;
}
}
3.2.2 业务逻辑biz层
同样通过写一个接口,然后实现这个接口,并注入dao层,并调用dao层方法进行业务逻辑处理
public class DriverBizImpl implements IDriverBiz{
private IDriverDao driverDao;
public void delete(int id) {
driverDao.delete(id);
}
public List<Driver> findAll() {
return driverDao.findAll();
}
public Driver findById(int id) {
return driverDao.findById(id);
}
public void save(Driver driver) {
driverDao.save(driver);
}
public void update(Driver driver) {
driverDao.update(driver);
}
public PageMode findAll(PageMode pm) {
return driverDao.findAll(pm);
}
}
3.2.3 控制action层
继承ActionSupport。写一个有返回类型的方法,通过调用不同的方法处理不同的业务和跳转到不同的页面。
public class CarAction extends ActionSupport{
public String findAll(){
System.out.println("进入车辆信息findAll方法");
//System.out.println(list.size());
HttpSession session = ServletActionContext.getRequest().getSession();
if(cname!=null)session.setAttribute("cname",cname);
System.out.println(cname);
Object temp = session.getAttribute("cname");
pm.getParam().put("cname",temp==null?"":(String)temp);
pm.setFirstResult(firstResult!=null?firstResult:0);
pm.setPageSize(maxSize!=null?maxSize:4);
pm = carBiz.findAll(pm);
System.out.println(pm);
return SUCCESS;
}
public String doAdd(){
System.out.println("进入车辆查询doAdd方法");
carBiz.save(car);
return "ok-success";
}
}
3.2.4 Struts配置文件
Struts配置文件,首先配置struts-2.0.dtd.然后配置struts下面package以及下面的命名空间和返回的jsp页面。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"">
//说明这个struts是2.0版本的
<struts>
<!-- car -->
<package name="car" namespace="/car" extends="struts-default">
<action name="*-*" class="{1}Action" method="{2}">
<result>{1}-{2}.jsp</result>
<result name="ok-success" type="redirectAction">car-findAll</result>
//根据返回的结果不同返回车辆的不同信息
</action>
</package>
<!-- driver -->
<package name="driver" namespace="/driver" extends="struts-default">
<action name="*-*" class="{1}Action" method="{2}">
<result>{1}-{2}.jsp</result>
<resultname="yes-success" type="redirectAction">driver-findAll</result>
</action>
</package>
<struts>
3.2.5 Hibernate配置文件
首先是标注Hibernate的版本3.0
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="connection.username">root</property>
//连接数据库用户名
<property name="connection.url">
//Mysql连接数据库
jdbc:mysql://localhost:3306/wpj1011
</property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="myeclipse.connection.profile">BFYZ</property>
//数据库密码
<property name="connection.password">123</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
//JDBC连接数据库
</property>
//反转得到的hbm.xml
<mapping resource="com/bfyz/transport/domain/Car.hbm.xml" />
<mapping resource="com/bfyz/transport/domain/Driver.hbm.xml" />
<mapping resource="com/bfyz/transport/domain/Make.hbm.xml" />
<mapping resource="com/bfyz/transport/domain/Operate.hbm.xml" />
<mapping resource="com/bfyz/transport/domain/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
3.2.6 Spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<!-- 配置事务管理器 -->
<!-- 配置事务的传播特性 -->
<!-- 配置哪些类的哪些方法进行事务管理
事务的切入点应该在biz:dao层的操作本身就是原子级,做事务意义不大
而业务处理层,操作比较繁多,有事务的必要
-->
<aop:config>
<aop:pointcutid="allManagerMethod"expression="execution(* com.bfyz.transport.biz.*.*(..))"/>
<aop:advisorpointcut-ref="allManagerMethod" advice-ref="txAdvice"/>
</aop:config>
<!-- Dao层 -->
<!--car dao层 -->
<bean id="carDao" class="com.bfyz.transport.dao.CarDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- Biz层 -->
<!-- car biz层 -->
<bean id="carBiz" class="com.bfyz.transport.biz.CarBizImpl">
<property name="carDao" ref="carDao"></property>
</bean>
<!-- Action层 -->
<!-- car action层 -->
<bean id="carAction" class="com.bfyz.transport.action.CarAction">
<property name="carBiz" ref="carBiz"></property>
</bean>
</bean>
4、设计结果与分析
4.1需求分析
(1)系统功能设计
网站能够实现以下功能:
系统管理:用户管理、密码管理;
司机信息管理:司机信息添加、司机信息修改、司机信息查询;
车辆信息管理:车辆信息添加、车辆信息修改、车辆信息查询;
业务信息管理:运营信息管理(运营信息添加、运营信息修改、运营信息查询)、维修信息管理(车辆维修信息添加、车辆维修信息查询、车辆维修信息修改等。
(2)系统设计思想
管理员登陆时,登陆页面进行操作验证。首次基于数据库验证,验证正确即可登陆页面,然后把用户信息写进session,然后其他页面采用session验证。 系统结构上采用页面镶嵌程序和语句,工作原理如图3-1所示。
操作请求,运用SQL语句操作数据库
返回查询结果集或操作结果
Mysql
用户界面
数据库存储层
企业运输管理系统
在系统结构中,用户界面层通过统一的接口向数据库存储层发送请求,数据库存储层收到请求处理之后把数据返回到用户界面层。
4.2 数据库分析
(1)数据库需求分析
数据管理需求(基本数据要求)
1) 司机基本信息表结构:司机姓名、司机性别、出生日期、家庭住址、初次领证时间、执照号码、准驾车型有效期起始时间、有效期结束时间等;
2) 车辆基本信息表结构:车号、类型、车主、发动机号、厂牌型号、核定载客、登记时间、发证时间、颜色、主要司机等;
3) 运营信息表结构:车号、司机姓名、运营开始时间、运营结束时间、运行公里、耗油量等;
4) 车辆维修信息表结构:车牌号、维修时间、维修单位、维修内容、维修价格、配件、备注等;
5) 用户数据表结构:编号id,用户登录名,密码,用户名,性别,年龄,住址,注册时间。
(2) 数据库逻辑结构设计
数据库概念结构设计完后,将数据概念结构转化为数据库系统所支持的实际数据模型,也就是数据库逻辑结构。
教师教学质量评估系统中各个表设计如下:
字段
字段名
类型
主键
可否为空
id
用户编号
int
是
否
username
用户登录名
varchar
一
否
password
用户密码
varchar
一
否
name
用户名
varchar
一
否
sex
性别
varchar
一
否
age
年龄
varchar
一
否
address
地址
varchar
一
否
time
注册时间
datetime
一
否
字段
字段名
类型
主键
可否为空
id
编号
int
是
否
carNumber
车牌号
varchar
一
否
carType
类型
varchar
一
否
carOner
车主
varchar
一
否
Engine
发动机号
varchar
一
否
passengers
核定载客
varchar
一
否
cartime
登记时间
datetime
一
否
color
车辆颜色
varchar
一
否
字段
字段名
类型
主键
可否为空
Id
编号
int
是
否
carOner
车主
varchar
一
否
sex
性别
varchar
一
否
age
年龄
varchar
一
否
address
地址
varchar
一
否
number
执照号码
varchar
一
否
ftime
初次领证时间
datetime
一
否
ltime
有效期结束时间
datetime
一
否
字段
字段名
类型
主键
可否为空
Id
编号
int
是
否
carNumber
车牌号
Int
一
否
mTime
维修时间
datetime
一
否
mCompany
维修单位
varchar
一
否
mContent
维修内容
varchar
一
否
mPrice
维修价格
varchar
一
否
mAccessory
配件
varchar
一
否
memo
备注
varchar
一
否
字段
字段名
类型
主键
可否为空
Id
编号
int
是
否
carNumber
车号
varchar
一
否
carOner
司机姓名
varchar
一
否
fTime
运营开始时间
datetime
一
否
lTime
运营结束时间
datetime
一
否
carPath
运行公里
varchar
一
否
oil
耗油量
varchar
一
否
5、参考文献
[1] 王毅.JSP程序开发范例宝典[M].人民邮电出版社,2007
[2] 程志艳 张亮 马建红. JSP实用简明教程[M]. 清华大学出版社,2005
[3] 周家地. DREAMWEAVER MA入门与提高[M]. 清华大学出版社,2006
[4] 李国涛. MySql数据库开发[M]. 机械工业出版社,2004
[5] 武延军,黄飞跃. 精通JSP编程技术[M]. 北京:人民邮电出版社,2001:126-178.
[6] 柏亚军. JSP编程基础及应用实例集锦[M].北京:人民邮电出版社,2001:41-82.
[7] 清宏计算机工作室.JSP编程技巧[M].北京:机械工业出版社,2000 :32-39.
[8] 周影 .网络编程语言JSP实例教程[M].北京:电子工业出版社,2003:17-32.
[9] 陈海山.深入Java Servlet 网络编程[M].北京:清华大学出版社,2002 :55-62.
[10] Donny.JSP与网站开发编程实战[M].北京:科学出版社 ,2001:22-53.
[11] Steven Holzner.Java技术内幕[M].北京:机械工业出版社,2002 : 22-25.
[12] Phil Hanna .JSP技术大全[M].北京:机械工业出版社,2002 : 222-223.
[13] Karl Moss. Java Servlet开发人员指南[M].北京:清华大学出版社,2002:45-67.
[14] Gottfried Vossen .Unleashing Web 2.0: From Concepts to Creativity .Morgan Kaufmann,2007
[15] Brown S. Professional JSP 2nd Edition . Wrox Press Inc,2002
[16] Mary Millhollon;Jeff Castrina;Leslie Lothamer .Easy Web Design. Microsoft Press,2006
展开阅读全文