数据库课程设计

更新时间:2024-03-19 12:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数据库原理

课程设计任务书

题目名称: 机票销售系统 学生学院: 信科院 专业班级: 软件4班 参与人员及学号:

曹小涛(200905070406) 李杰(200905070404) 罗先宇(200905070405) 张博宇(200905070417)

2009050704

目录

一. 需求分析 ......................................................................................... 1.1 需求分析的任务 ........................................... 1.2 需求分析的过程 ........................................... 1.3功能需求 与 功能模块图 .................................... 二 . 详细设计 ....................................................................................... 2.1系统所需要的表 ........................................... 2.2 系统各个模块的流程图 ..................................... 2.3源文件关键代码 ........................................... 2.4头文件关键代码 ........................................... 三.数据库的运行测试和结果 .............................................................

2

2009050704

一. 需求分析

1.1 需求分析的任务

调查机票预定系统应用领域涉及的内容,对涉及到领域的各个应用的信息要求和操作要求进行详细分析,形成需求分析说明书。最重要的是调查、收集信息、分析购票人信息和飞机预定流程。处理要求、数据的安全性与完整性要求。

要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。

1.2 需求分析的过程

航空公司为方便旅客,需开发一个机票预定系统。为便于旅客由旅行社代替航空公司负责为旅客定票,旅行社把预定机票的旅客信息,包括姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。如果某方面出现问题,旅客可以持有效证件去飞机场退票。

要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。

1.3功能需求 与 功能模块图

1.业务流程分析

经过可行性分析和初步需求调查,抽象出该系统业务流程图,结合该实例具体情况,给出旅客信息、订票信息和取票通知的具体需求。

⑴ 调查用户需求 ① 机场办公需求

?

功能:旅客持个人证件去机场购买机票。希望能通过旅客姓名查到该旅客的飞机编号并记录旅客基本信息。

② 旅客信息需求:

?

查询功能:购票旅客查询;购票旅客姓名;购票旅客身份证号;购票旅客订单号

③ 航班信息需求

查询功能:航班号;起飞地;目的地;起飞时间 2.系统功能模块分析

在调查完了用户需求之后,就要开始分析用户需求。在此,我们采用自顶向下的结构化分析方法(SA方法)。首先,定义全局概念结构的框架,如图2.2所示。

3

2009050704

机票销售系统 各子系统需要进一步细化。旅客信息系统为例进一步细化 以其中的查询旅客信息功能为例进一步细化,如图1.3

旅客信息系统航班信息系统航班系座统位信息取票信息系统退票信息系统 图1.2机票销售系统总框架图

旅客信息系统 旅客订单号旅客姓名电话号码身份证号码 图1.3查询旅客信息功能

航班信息系统 航班号出发地目的地起飞时间 4

图1.4航班信息系统细化

2009050704

航班座位信息系统

图1.6取票通知系统细化

座位号航班号座位信息机票类型 旅客姓名 订单号旅客姓名 取票信息系统 图1.5 航班座位系统细化

取票时间 退票信息系统 电话号码省份证号码

图1.7退票信息系统细化

5

2009050704

二 . 详细设计

2.1系统所需要的表

表2-1旅客信息系统的结构

字段名 数据类型 Varchar Decimal Decimal Varchar Varchar 长度 50 50 50 约束 主键 不为空 不为空 不为空 不为空 描述 旅客姓名 身份证号 电话号 性别 工作单位 passager name id telephone number sex work department 表2-2 退票信息系统的结构

字段名 数据类型 Decimal Varchar Decimal Varchar 长度 50 50 约束 主键 不为空 不为空 不为空 描述 订单号 旅客姓名 电话号 身份证号 order form passager name telephone number id 表2-3 航班信息表系统的结构

字段名 Flight number Take off place destination Flight time 数据类型 Decimal Varchar Varchar Time 长度 50 50 约束 主键 不为空 不为空 不为空 描述 航班号 起飞地 目的地 起飞时间 表2.4取票通知单系统的结构

字段名 数据类型 Varchar Time Decimal Decimal Varchar 长度 50 50 约束 主键 不为空 不为空 不为空 不为空 描述 旅客姓名 取票时间 航班号 座位号 机票类型 passager name Get ticket time flight number Seat number Flight ticket type

表2.5 航班座位信息表

字段名 数据类型 Decimal 长度 约束 主键 描述 座位号 Seat number 6

2009050704

Flight number Decimal Varchar Varchar 50 50 不为空 不为空 不为空 航班号 座位信息 机票类型 Seat message Flight ticket type

2.2 系统各个模块的流程图

7

初始化com坏境 创建连接对象实例 打开数据库 执行SQL语句 输入用户名及密码 用户是否否 存在? 是 密码是否否 正确? 是 进入管理界面 2.6 登陆模块流程图

2009050704

创建ADO对象 对象初始化 执行SQL语句 While循环 判断指针是否指向最后 否 是 输出一行信息 指针指向下一个 结束循环 释放ADO对象 结束

2.7 查询模块流程图

8

创建ADO对象 对象初始化 执行SQL语句 输入数据 增加数据 更新窗口

2.8 增加数据功能模块流程图

创建ADO对象 对象初始化 执行SQL语句 选择删除数据 删除数据 更新窗口

2.9 删除功能模块流程图

9

2009050704

创建ADO对象 对象初始化 执行SQL语句 选择要修改的行 修改数据 更新窗口

2.10修改功能模块流程图

2009050704

2.3源文件关键代码

1. // Ado.cpp

CAdo::CAdo()

{ }

CAdo::~CAdo() { }

void CAdo::OnInitADOConn()

{ ::CoInitialize(NULL); //初始化COM环境 try { m_pConnection.CreateInstance(\ //创建连接对象实例 _bstr_t strConnect= \ pwd=123;\ m_pConnection->Open(strConnect,\打开数据库 } catch(_com_error e) { AfxMessageBox(e.Description()); //弹出错误 } }

BOOL CAdo::ExecuteSQL(_bstr_t bstrSQL) { try { if(m_pConnection==NULL) OnInitADOConn(); m_pConnection->Execute(bstrSQL,NULL,adCmdText); //执行SQL语句 return TRUE; } catch(_com_error e) { AfxMessageBox(e.Description() ); return FALSE; } }

_RecordsetPtr& CAdo::OpenRecordset(CString sql) { ASSERT(!sql.IsEmpty()); //sql语句不能为空 try { m_pRecordset.CreateInstance(__uuidof(Recordset)); //创建记录集对象实例 m_pRecordset->Open(_bstr_t(sql), m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText); //执行sql得到的记 录集

10

2009050704

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } }

SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon return TRUE; // return TRUE unless you set the focus to a control }

void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialog::OnSysCommand(nID, lParam); } }

void CMyDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2;

dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); } }

HCURSOR CMyDlg::OnQueryDragIcon() { return (HCURSOR) m_hIcon;

16

2009050704

}

void CMyDlg::OnOK() { UpdateData(true); m_sUSER.TrimRight(\

if ( \

{ AfxMessageBox(_T(\请填写用户名\ return; } CAdo m_Ado; _variant_t Holder,user, strQuery; m_Ado.OnInitADOConn(); CString sql=\ m_Ado.m_pRecordset = m_Ado.OpenRecordset(sql); CString sPWD,muser; while(!m_Ado.m_pRecordset->rsEOF) { user=m_Ado.m_pRecordset->GetCollect(\ muser=user.vt==VT_NULL?\ if ( muser==m_sUSER ) { Holder = m_Ado.m_pRecordset->GetCollect(\ sPWD = Holder.vt==VT_NULL?\ if(0!=sPWD.Compare(m_sPWD)) { AfxMessageBox(\输入密码不正确,请重新输入\ MB_ICONEXCLAMATION); return; } Cdlg di; di.DoModal(); } m_Ado.m_pRecordset->MoveNext(); } if ( muser!=m_sUSER ) { AfxMessageBox(\用户名不存在,请重新输入\ return; } }

2.4头文件关键代码

1 . //StdAfx.h:

#if !defined(AFX_STDAFX_H__1E743018_E961_41F4_B46C_7C6F24315B30__INCLUDED_) #define AFX_STDAFX_H__1E743018_E961_41F4_B46C_7C6F24315B30__INCLUDED_ #if _MSC_VER > 1000 #pragma once

#endif // _MSC_VER > 1000

17

2009050704

#define VC_EXTRALEAN #include #include #include #include

#ifndef _AFX_NO_AFXCMN_SUPPORT #include #endif

#import \rename(\ #endif

2 机票销售系统.h:

#if !defined(AFX__H__91673FF1_C875_4E49_B0E8_1371EAA60C3F__INCLUDED_) #define AFX__H__91673FF1_C875_4E49_B0E8_1371EAA60C3F__INCLUDED_ #if _MSC_VER > 1000 #pragma once

#endif // _MSC_VER > 1000 #ifndef __AFXWIN_H__ #error include 'stdafx.h' before including this file for PCH #endif

#include \ // main symbols class CMyApp : public CWinApp {

public: CMyApp(); public: virtual BOOL InitInstance(); DECLARE_MESSAGE_MAP() };

#endif

3 机票销售系统dlg.h

#if !defined(AFX_DLG_H__06ED6489_0661_4E79_B2E0_73F5625066C3__INCLUDED_) #define AFX_DLG_H__06ED6489_0661_4E79_B2E0_73F5625066C3__INCLUDED_

#if _MSC_VER > 1000 #pragma once

#endif // _MSC_VER > 1000 class CMyDlg : public CDialog { public: CMyDlg(CWnd* pParent = NULL); // standard constructor enum { IDD = IDD_MY_DIALOG };

18

2009050704

CString m_sUSER; CString m_sPWD; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support protected: HICON m_hIcon;

virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); virtual void OnOK(); DECLARE_MESSAGE_MAP() };

#endif

三.数据库的运行测试和结果

图3.1登陆界面

19

2009050704

图3.2 用户界面

图3.3 航班信息查询,更新图

3.4 航班座位信息查询

20

2009050704

图3.5 取票信息查询,更新

图3.6 退票信息查询,更新

4.收获和体会

这次课程设计我们组选择了机票销售这个题目,它主要用于实现机票销售人性化,关于这个课程设计,可以说来的相当不容易,由于初次接触SQL,许多地方都不懂,在网上下载了一个SQL2008之后,老是安装有问题,不知道出错在什么地方,安装完后没有SQL server management studio这个程序,经过不懈的努力,最后终于成功搞定了SQL2008,之后就是机票销售系统的具体实现,系统所具有的功能

21

2009050704

怎样实现,都一一设计代码然后运行、修改、调试。

最后,整个系统基本上实现了所有要求,旅行社把预定机票的旅客信息,包括姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地,输入机票预定系统的客户端程序,系统经过查询航空公司内的航班数据服务器后,为旅客安排航班,印出取票通知。旅客在飞机起飞前一天凭取票通知和帐单交款后取票,系统校对无误后即印出机票给旅客。如果某方面出现问题,旅客可以持有效证件去飞机场退票。

初次做数据库课程设计难免有些不足之处,但是学习就是一个不断提高的过程,相信经过长时间、多次数的锻炼,我们以后都能设计出比较满意的项目。通过这次课程设计,我觉得我对数据库有了更进一步更深刻的认识,比如:对表内一些字段的约束,关系等的运用已经比较熟练,巩固了数据库的知识。而且也学会了SQLserver的一些基础应用,在以后的时间中,一定还会运用到高级的东西,这次课程设计为以后打下了基础。

22

本文来源:https://www.bwwdw.com/article/12t8.html

Top