软件综合课程设计报告

时间:2024.4.20

软件综合课程设计报告

题目名称:航空公司管理信息系统

    级:                      

学生学号:                      

学生姓名:                      

绩:            及格   不及格

20##12 30

1、前言

问题描述:一个正常营运的航空公司需要管理所拥有的飞机、航线的设置、客户的信息等,更重要的还要提供票务管理。面对各种不同种类的信息,需要合理的数据库结构来保存数据信息以及有效的程序结构支持各种数据操作的执行。本次课程设计我们将以一个航空公司管理信息系统为例子,来建立一个航空公司管理信息系统。

开发工具:Myeclipse8.5,Mysql,Tomcat7.0

运行环境:Windows XP系统,Windows7系统

开发语言:Jsp,Java

2、需求分析

系统开发的总体任务是实现各种信息的系统化、规范化和自动化。

系统功能分析是在系统开发的总体任务的基础上完成。本例子中的航空公司管理信息系统需要完成功能主要有:

l  舱位信息的输入和修改,包括舱位等级编号、舱位等级名称、提供的各              种服务类别,以及备注信息等。

l  客机信息的输入、修改和查询,包括客机编号、客机型号、购买时间、服役   时间、经济舱座位数量、公务舱座位数量、头等舱座位数量以及备注信息等。

l  航线信息的输入、修改和查询,包括航线编号、出发城市、到达城市、航班       日期、出发时间、到达时间、客机编号、经济舱价格、公务舱价格、头等舱价格和备注信息等。

l  客户等级信息的输入、修改,包括客户等级编号、客户等级名称、折扣比例和备注信息等。

l  客户信息的输入、修改和查询,包括客户编号、客户姓名、客户性别、身份证号码、联系电话、客户类型和备注信息等。

l  订票信息的输入、查询和修改,包括订票编号、客户编号、客户姓名、客户类型、折扣比例、航线编号、出发城市、到达城市、出发时间、舱位类型、票价、结算金额和备注信息等。

3、系统分析与设计

3.1.1 系统功能分析

系统开发的总体任务是实现各种信息的系统化、规范化和自动化。

系统功能分析是在系统开发的总体任务的基础上完成。本例子中的航空公司管理信息系统需要完成功能主要有:

l  舱位信息的输入和修改,包括舱位等级编号、舱位等级名称、提供的各种服务类别,以及备注信息等。

l  客机信息的输入、修改和查询,包括客机编号、客机型号、购买时间、服役时间、经济舱座位数量、公务舱座位数量、头等舱座位数量以及备注信息等。

l  航线信息的输入、修改和查询,包括航线编号、出发城市、到达城市、航班日期、出发时间、到达时间、客机编号、经济舱价格、公务舱价格、头等舱价格和备注信息等。

l  客户等级信息的输入、修改,包括客户等级编号、客户等级名称、折扣比例和备注信息等。

l  客户信息的输入、修改和查询,包括客户编号、客户姓名、客户性别、身份证号码、联系电话、客户类型和备注信息等。

l  订票信息的输入、查询和修改,包括订票编号、客户编号、客户姓名、客户类型、折扣比例、航线编号、出发城市、到达城市、出发时间、舱位类型、票价、结算金额和备注信息等。

3.1.2 系统功能模块设计

对上述各项功能进行集中、分块,按照结构化程序设计的要求,得到如图1所示的系统功能模块图。

图1 系统功能模块图

3.2 数据库设计

数据库在一个信息管理系统中占有非常重要的地位,数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响。合理的数据库结构设计可以提高数据存储的效率,保证数据的完整和一致。

设计数据库系统时应该首先充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。数据库设计一般包括如下几个步骤:

l  数据库需要分析。

l  数据库概念结构设计。

l  数据库逻辑结构设计。

3.2.1 数据库需求分析

用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。

仔细分析调查有关航空公司管理信息需求的基础上,将得到如图2所示的本系统所处理的数据流程。

图2 航空公司管理信息系统数据流程图

针对一般航空公司管理信息系统的需求,通过对航空公司管理工作过程的内容和数据流程分析,设计如下面所示的数据项和数据结构:

l  舱位等级信息,包括的数据项有:舱位等级编号、舱位等级名称、是否有礼品、是否有报纸、是否有饮料、是否有午餐、是否有电影、是否可以改签、是否可以退票、是否可以打折、备注信息等。

l  客机信息,包括的数据项有:客机编号、客机型号、购买时间、服役时间、经济舱座位数量、公务舱座位数量、头等舱座位数量、备注信息等。

l  航线信息,包括的数据项有:航线编号、出发城市、到达城市、航班日期、出发时间、到达时间、客机编号、经济舱价格、公务舱价格、头等舱价格、备注信息等。

l  客户类型信息,包括的数据项有:客户类型编号、客户类型名称、折扣比例、备注信息等。

l  客户信息,包括的数据项有:客户编号、客户姓名、客户性别、身份证号码、联系电话、客户类型、备注信息等。

l  订票信息,包括的数据项有:订票编号、顾客编号、顾客姓名、顾客类型、折扣比例、航线编号、出发城市、到达城市、舱位类型、机票价格、结算金额、备注信息等。

有了上面的数据结构、数据项和数据流程,我们就能进行下面的数据库设计。

3.2.2 数据库概念结构设计

得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。

本实例根据上面的设计规划出的实体有:舱位等级信息实体、客机信息实体、航线信息实体、客户类型信息实体、客户信息实体、订票信息实体。各个实体具体的描述E-R图如下。

舱位等级信息实体E-R图如图3所示。

图3 舱位等级信息实体E-R图

客机信息实体E-R图如图4所示。

图4 客机信息实体E-R图

航线信息实体E-R图如图5所示。

图5 航线信息实体E-R图

客户类型信息实体E-R图如图6所示。

图6 客户类型信息实体E-R图

客户信息实体E-R图如图7所示。

图7 客户信息实体E-R图

订票信息实体E-R图如图8所示。

图8 订票信息实体E-R图

实体之间关系的E-R图如图9所示。

图9 实体之间关系的E-R图

3.2.3 数据库逻辑结构设计

现在需要将上面的数据库概念结构转化为SQL Server 2005数据库(也可以是Oracle数据库)系统所支持的实际数据模型,也就是数据库的逻辑结构。

航空公司管理信息系统数据库中各个表格的设计结果如下面表格所示。每个表格表示在数据库中的一个表。表1为供应商信息表。

表1                      serviceInfo 舱位等级信息表

表2为顾客信息表格。

表2                        planeInfo客机信息表格

表3为航线信息表。

表3                        airlineInfo航线信息表

表4为客户类型信息表格。

表4                      customerType 客户类型信息表

续表

表5为客户信息表格。

表5                        customerInfo 客户信息表

表6为订票信息表格。

表6                        ticketInfo 订票信息表

5、系统实现

 

  系统效果图:

主界面图

 

  子窗口就不一一展示了,这里列取了一个窗口,其他的都大同小异。

子窗口图

6、部分原代码

Bean层:

AirlineInfo源代码

package com.am.aviation.bean;

public class AirlineInfo {

   

    private String airlineNO;        //航线编号

    private String departCity;       //出发城市

    private String arrivalCity;      //到达城市

    private String departDate;         //航班日期

    private String departTime;         //出发时间

    private String arrivalTime;        //到达时间

    private String planeNO;          //客机编号

    private float commonPrice;       //经济舱价格

    private float commercialPrice;   //公务舱价格

    private float firstPrice;        //头等舱价格

    private String airlineMemo;      //备注信息

   

    public String getAirlineNO() {

        return airlineNO;

    }

    public void setAirlineNO(String airlineNO) {

        this.airlineNO = airlineNO;

    }

    public String getDepartCity() {

        return departCity;

    }

    public void setDepartCity(String departCity) {

        this.departCity = departCity;

    }

    public String getArrivalCity() {

        return arrivalCity;

    }

    public void setArrivalCity(String arrivalCity) {

        this.arrivalCity = arrivalCity;

    }

    public String getDepartDate() {

        return departDate;

    }

    public void setDepartDate(String departDate) {

        this.departDate = departDate;

    }

    public String getDepartTime() {

        return departTime;

    }

    public void setDepartTime(String departTime) {

        this.departTime = departTime;

    }

    public String getArrivalTime() {

        return arrivalTime;

    }

    public void setArrivalTime(String arrivalTime) {

        this.arrivalTime = arrivalTime;

    }

    public String getPlaneNO() {

        return planeNO;

    }

    public void setPlaneNO(String planeNO) {

        this.planeNO = planeNO;

    }

    public float getCommonPrice() {

        return commonPrice;

    }

    public void setCommonPrice(float commonPrice) {

        this.commonPrice = commonPrice;

    }

    public float getCommercialPrice() {

        return commercialPrice;

    }

    public void setCommercialPrice(float commercialPrice) {

        this.commercialPrice = commercialPrice;

    }

    public float getFirstPrice() {

        return firstPrice;

    }

    public void setFirstPrice(float firstPrice) {

        this.firstPrice = firstPrice;

    }

    public String getAirlineMemo() {

        return airlineMemo;

    }

    public void setAirlineMemo(String airlineMemo) {

        this.airlineMemo = airlineMemo;

    }

}

Dao层:

UserInfoDAOImpl代码

package com.am.aviation.dao.impl;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import com.am.aviation.bean.UserInfo;

import com.am.aviation.dao.UserInfoDAO;

import com.am.aviation.util.db.DBConn;

public class UserInfoDAOImpl implements UserInfoDAO {

       Connection conn;

       PreparedStatement pstmt;

       Statement stmt ;

       ResultSet rs;

    public UserInfo exists(UserInfo user) {

        UserInfo rtuser=null;

        conn=DBConn.getConnection();

        if(conn==null){

            return rtuser;

        }

        String sql="select * from userinfo where username=?";

        try {

            pstmt=conn.prepareStatement(sql);

            pstmt.setString(1, user.getUsername());

            rs=pstmt.executeQuery();

            if(rs.next()){

                if(rs.getString("userpassword")!=null && user.getUserpassword()!=null &&rs.getString("userpassword").equals(user.getUserpassword())){

                    rtuser=new UserInfo();

                    rtuser.setId(rs.getInt("id"));

                    rtuser.setUsername(rs.getString("username"));

                    rtuser.setUserpassword(rs.getString("userpassword"));

                    rtuser.setStatus(rs.getInt("status"));

                }

                else

                    rtuser=null;

            }

           

        } catch (SQLException e) {

            e.printStackTrace();

        }finally{

            this.close();

        }

        return rtuser;

    }

    public boolean updateUser(UserInfo user) {

        boolean isSuccess=false;

        conn=DBConn.getConnection();

        if(conn==null){

            return isSuccess;

        }

        String sql="update userinfo set username=?,userpassword=?,status=? where id=?";

        try {

            pstmt=conn.prepareStatement(sql);

            pstmt.setString(1, user.getUsername());

            pstmt.setString(2, user.getUserpassword());

            pstmt.setInt(3, user.getStatus());

            pstmt.setInt(4, user.getId());

            pstmt.executeUpdate();

            isSuccess=true;

        } catch (SQLException e) {

            e.printStackTrace();

        }finally{

            this.close();

        }

        return isSuccess;

    }

     public void close(){

           if(conn!=null){

               try {

                conn.close();

            } catch (SQLException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }

           }

           if(pstmt!=null){

               try {

                pstmt.close();

            } catch (SQLException e) {

                e.printStackTrace();

            }

           }

           if(rs!=null){

               try {

                rs.close();

            } catch (SQLException e) {

               

                e.printStackTrace();

            }

           }

       }

}

Select层:

UserChangeServlet代码

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import com.am.aviation.bean.UserInfo;

import com.am.aviation.dao.UserInfoDAO;

import com.am.aviation.dao.impl.UserInfoDAOImpl;

public class UserChangeServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        this.doPost(request, response);

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)

            throws ServletException, IOException {

        String username=request.getParameter("username");

        String userpassword=request.getParameter("userpassword");

        HttpSession session=request.getSession();

        UserInfo user=(UserInfo)session.getAttribute("userinfo");

        user.setUsername(username);

        user.setUserpassword(userpassword);

        UserInfoDAO dao=new UserInfoDAOImpl();

        dao.updateUser(user);

        request.getRequestDispatcher("/manager/table.jsp").forward(request, response);

    }

}

代码比较多,这里不一一列举了。

6、总结

  本项目客户要求的功能都已经实现,通过做这个项目体会到了更深层次的MVC框架的结构,使自己对整个的流程有了深刻的理解。项目的需求和功能分析过程是最重要的部分,没有好的分析过程和结果不能够得出好的程序方案,因为时间关系,界面做的不是很美观,有点简约,以后会改进的。本次项目很好的锻炼了我自己,也使我有了不会就问的习惯。其实任何看起来很难的东西,都可以一点点的去攻克它。团队的力量是伟大的!

参考文献:

《Java Web整合开发》刘京华著 清华大学出版社。

         

更多相关推荐:
软件课程设计报告

编号:()字号《软件课程设计》报告班级:姓名学号:指导老师:中国矿业大学计算机科学与技术学院年月软件课程设计任务书专业年级:计算机科学与技术计科10-2班学生姓名:任务下达日期:200年月日课程设计日期:200…

软件课程设计报告模版

华中科技大学电子科学与技术系课程设计报告(20--xx年度第学期)名称:软件课程设计题目:院系:班级:学号:学生姓名:指导教师:设计周数:成绩:日期:年月日目录1.设计任务...................…

《软件工程》课程设计个人报告

软件工程课程设计报告海天一色网上书店软件工程课程设计个人报告题目网上书店学院名称信息科学与工程学院专业班级计算机092班报告人姓名梁宏报告人学号20xx01051413承担角色网页设计员同组组长安文龙同组其他成...

软件课程设计实验报告个人报告

软件课程设计实验报告个人报告课班成员学一需求分析1引言32预期功能33设计目标4二界面方案设计说明1拟选用的开发平台和工具介绍42系统框图53软件各功能模块划分64模块间的相互关系85开发计划8三详细设计说明1...

《软件开发课程设计》课程设计报告

软件开发课程设计报告题目职工信息管理系统设计院系专业班级学生姓名学号指导教师2013年9月2日至2013年9月15华中科技大学武昌分校制日软件开发课程设计任务书23目录1课程设计的目的22总体设计33详细设计5...

软件工程课程设计报告

福建农林大学金山学院课程设计报告课程名称:软件工程课程设计题目:旅游信息管理系统姓名:系:信息与机电工程系专业:计算机科学与技术专业承担角色:辅助程序员20##年12月9日课程设计结果评定目录1.课程设计概述.…

软件课程设计报告

中南民族大学软件课程设计报告电子信息工程09级题目学生吴雪学号指导教师王锦程电子工程0907100220xx年4月25日简易网络聊天系统摘要计算机网络通信技术已经深入我们的生活并给我们即使通信带来了很大的方随着...

模板-实用软件课程设计报告

实验报告实用软件课程设计实用软件课程设计报课程题目你的课程设计题目作者姓名指导教师学科专业所在学院信息工程学院提交日期告实验报告实用软件课程设计题目换成所选择的题目作者你的名字学号你的学号班级信息101联系方式...

《软件测试技术课程设计》课程设计报告

《软件测试技术课程设计》课程设计报告班级:姓名:学号:设计时间:20XX/6/24到20XX/6/28一、课程设计名称:图书管理系统的测试二、使用工具软件:MyEclipse,JProfilerwindows7…

应用软件综合课程设计报告

北京化工大学北方学院课程设计报告课程名称应用软件综合课程设计设计题目使用JavaScript实现菜单专业班级自控1202学号120xx0035姓名黄乾指导教师韩海花设计时间20xx92120xx101620xx...

软件课程设计报告-北京科技大学

北京科技大学课程设计软件设计报告班级姓名学号指导教师日期年月日北京科技大学自动化学院课程设计软件设计报告目录1设计内容12应用程序总体分析与设计13应用程序各功能模块分析与设计231连接服务器232加项333读...

wang软件综合课程设计报告

软件综合课程设计报告题目名称班级学生学号学生姓名指导老师总成绩优良中及格不及格XXXXXXXX1前言职工信息管理作为企业管理的一个重要方面起可变因素多管理方面繁琐复杂时间跨度大而人工管理方式处理这样大量的信息数...

软件课程设计报告(27篇)