版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 數(shù)據(jù)庫技術(shù)課程設(shè)計課題名稱: 機票預(yù)訂系統(tǒng) 班 級: 學(xué) 號: 姓 名: 小組成員: 無 信息與通信工程學(xué)院一設(shè)計目的通過這次課程設(shè)計,熟練掌握軟件開發(fā)過程中數(shù)據(jù)庫的使用,理解以數(shù)據(jù)庫為中心的軟件開發(fā)設(shè)計思想,熟練應(yīng)用數(shù)據(jù)庫的增、刪、改、查詢等操作。二系統(tǒng)的功能分析機票預(yù)訂系統(tǒng),按老師的要求建立了建立數(shù)據(jù)庫,包含航班信息表、航班坐位情況表、旅客訂票信息表、取票通知表、賬單及用戶信息表這6張表,用VC編程工具及sql server 2000完成機票預(yù)訂一系列功能。三系統(tǒng)數(shù)據(jù)庫設(shè)計1.需求分析:航空公司為方便旅客,需開發(fā)一個機票預(yù)定管理系統(tǒng)。為便于旅客由旅行社代替航空公司負責(zé)為旅客定票,旅行社把
2、預(yù)定機票的旅客信息,包括姓名、性別、身份證號碼、電話號碼等,輸入機票預(yù)定系統(tǒng)的客戶端程序,管理員經(jīng)過查詢航空公司內(nèi)的航班數(shù)據(jù)服務(wù)器后,為旅客安排航班,管理員校對無誤后印出取票通知及機票給旅客。同時,為了方便廣大旅客,旅客也可在自行預(yù)退訂訂機票,然后憑身份份證去取票。要求系統(tǒng)能有效、快速、安全、可靠和無誤的完成上述操作。并要求客戶機的界面要簡單明了,易于操作,服務(wù)器程序利于維護。經(jīng)過綜合分析,確定了機票預(yù)訂管理系統(tǒng)主要包括以下功能:1.1管理員:(1)航班信息管理功能主要實現(xiàn)管理員對航班的一些基本信息,包括航班信息(航班號、起飛地、目的地、起飛日期、起飛時間、到達時間、總票數(shù)、剩余票數(shù))和航班坐
3、位情況表(航班號,座位號,起飛日期,機票類型,票價)的添加、刪除和查詢功能。也可查詢各航班的滿座率。(2) 旅客管理功能主要是實現(xiàn)管理員對旅客信息如身份證號、旅客姓名、性別、電話號碼、航班號、座位號、起飛日期等及注冊用戶的查詢管理。(3) 訂單信息管理功能主要是實現(xiàn)管理員對訂票信息的管理,可進行機票信息如航班號、起飛地、目的地、起飛日期、起飛時間、到達時間、座位號、機票類型和票價的查詢,也可進行訂票及退票。(4) 打印管理功能主要是實現(xiàn)管理員對打印的管理,可進行取票通知單、賬單及機票的打印。1.2旅客旅客進行注冊即可進入旅客界面進行預(yù)訂及退訂機票。通過以上分析,得到系統(tǒng)業(yè)務(wù)流圖及功能模塊圖:數(shù)
4、據(jù)流圖(DFD): 機票預(yù)訂系統(tǒng)主功能圖:對航班信息,航班坐位情況進行添加、刪除、查詢對航班信息,旅客訂票信息進行添加、修改、刪除、查詢系統(tǒng)提供旅客和 管理員身份登錄 可進行不同操作 管理員旅客 旅客查詢航班信息機票預(yù)訂管理系統(tǒng) 旅客預(yù)訂機票 旅客退訂機票退出功能含返回和退出系統(tǒng),方便操作打印,可對取票通知單、賬單、機票進行 圖1:機票預(yù)訂系統(tǒng)數(shù)據(jù)流圖本系統(tǒng)的主要功能是: (1) 管理員添加、刪除、查詢航班及航班坐位信息 (2) 管理員查詢旅客訂票信息及注冊用戶信息 (3) 管理員預(yù)訂及退訂機票 (4) 管理員打印取票通知、賬單及機票(5) 旅客進行預(yù)退訂機票 本系統(tǒng)的功能模塊圖如下:航班信息
5、管理旅客信息管理管理員訂票信息管理打 印 功 能機票退訂機票預(yù)訂機票預(yù)訂系統(tǒng)航班查詢旅 客 圖2:系統(tǒng)功能模塊圖1.3數(shù)據(jù)字典(DD):本系統(tǒng)需要使用的數(shù)據(jù)包括以下關(guān)系。 表1:航班信息表字段名稱數(shù)據(jù)類型字段大小必填字段是否主鍵航班號varchar20是是起飛地varchar50是否目的地varchar50是否起飛日期Datetime8是是起飛時間varchar20是否到達時間varchar20是否總票數(shù)varchar20是否剩余票數(shù)varchar20是否 表2:航班坐位情況表字段名稱數(shù)據(jù)類型字段大小必填字段是否主鍵航班號varchar20是是座位號varchar20是否起飛日期Datetim
6、e8是是機票類型varchar20是否票價varchar20是否 表3:旅客訂票信息表字段名稱數(shù)據(jù)類型字段大小必填字段是否主鍵身份證號varchar20是是旅客姓名varchar20是否電話號碼varchar20是否性別varchar4是否航班號varchar20是否座位號varchar20是否機票類型varchar20是否起飛日期Datetime8是是 表4:取票通知表字段名稱數(shù)據(jù)類型字段大小必填字段是否主鍵身份證號varchar20是是旅客姓名varchar20是否起飛日期Datetime8是是取票日期Datetime 8是否 表5:賬單字段名稱數(shù)據(jù)類型字段大小必填字段是否主鍵身份證號va
7、rchar20是是旅客姓名varchar20是否起飛日期Datetime8是是票價varchar20是否 表6:用戶信息表字段名稱數(shù)據(jù)類型字段大小必填字段是否主鍵用戶名varchar20是是密碼varchar20是否2.概念結(jié)構(gòu)設(shè)計:起飛時間起飛日期性別根據(jù)需求分析,得到系統(tǒng)ER圖如下:到達時間目的地座位號航班號電話號碼起飛地機票類型旅客姓名總票數(shù)起飛日期身份證號剩余票數(shù)航班號航班信息購買旅客訂票信息退票 mn航班坐位情況票價取票通知包含賬單獲取取票1111 1n票價航班號起飛日期身份證號 機票類型旅客姓名旅客姓名座位號起飛日期身份證號取票日期起飛日期 圖3:系統(tǒng)E-R圖3.邏輯結(jié)構(gòu)設(shè)計:(1
8、)將上面ER圖轉(zhuǎn)換為關(guān)系模型,黑色加粗并有下劃線的為碼 航班信息表(航班號,起飛日期,起飛地,目的地,起飛時間,到達時間,總票數(shù),剩余票數(shù)) 航班坐位情況表(航班號,座位號,起飛日期,機票類型,票價)旅客訂票信息表(身份證號,起飛日期,旅客姓名,電話號碼,性別,航班號,座位號,機票類型) 取票通知單(身份證號,起飛日期,旅客姓名,取票日期) 取票通知單(身份證號,起飛日期,旅客姓名,票價)(2) 數(shù)據(jù)庫中庫和表的定義(見以下SQL代碼) CREATE DATABASE Flybooking ON (NAME= flyticket_data, FILENAME='E:Fly_sqlfly
9、ticket_data.mdf ', SIZE=10MB, MAXSIZE=50MB, FILEGROWTH=10% )LOG ON(NAME=Fly_sql_log, FILENAME='E:Fly_sqlflyticket_log.ldf ',SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB)create table 航班信息表(航班號 varchar(20) not null,起飛地 varchar(50) not null,目的地 varchar(50) not null,起飛日期 Datetime not null,起飛時間 varcha
10、r(20) not null,到達時間 varchar(20) not null,總票數(shù) varchar(20) not null,剩余票數(shù) varchar(20) not null,primary key(航班號,起飛日期);create table 航班坐位情況表(航班號 varchar(20) not null,座位號 varchar(20) not null,起飛日期 Datetime not null,機票類型 varchar(20) not null,票價 varchar(20) not null,primary key(航班號,起飛日期,座位號,機票類型),check(機票類型
11、in ('經(jīng)濟艙','商務(wù)艙');create table 旅客訂票信息表(身份證號 varchar(20) not null,旅客姓名 varchar(20) not null,電話號碼 varchar(20) not null,性別 varchar(4) not null,航班號 varchar(20) not null,座位號 varchar(20) ,機票類型 varchar(20) not null,起飛日期 Datetime not null,primary key(身份證號,起飛日期),check(性別 in ('男','女
12、');create table 取票通知表(身份證號 varchar(20) not null,旅客姓名 varchar(20) not null,起飛日期 Datetime not null,取票日期 Datetime not null,primary key(身份證號,起飛日期);create table 賬單(身份證號 varchar(20) not null,旅客姓名 varchar(20) not null,起飛日期 Datetime not null,票價 varchar(20) not null,primary key(身份證號,起飛日期);create table 用戶
13、信息表(用戶名 varchar(20) not null, 密碼 varchar(20) not null,primary key(用戶名);四、系統(tǒng)的詳細設(shè)計與實現(xiàn) 本系統(tǒng)采用VC6.0+SQL Server2000進行開發(fā),運行在Windows 7環(huán)境下。前臺應(yīng)用程序采用VC+軟件編寫,后臺數(shù)據(jù)庫采用SQL Server2000設(shè)計。各功能模塊界面如下:1、 登陸界面如下圖4所示: 圖4:登錄界面 圖5:注冊新用戶界面 圖6:修改用戶密碼界面2、進入管理員界面: 圖7:管理員界面 圖8:航班管理包含子菜單圖進入航班信息管理,查詢航班號為A1002,起飛日期為2013/6/14的航班 圖9:
14、航班信息查詢界面進入航班坐位信息管理: 圖10:坐位信息查詢界面進入滿座率計算,計算航班A1001,起飛日期2013/6/14的滿座率: 圖11:計算滿座率界面 圖12:旅客管理子菜單圖進入旅客信息管理,查詢身份證號為4521221991的旅客信息: 圖13:旅客訂票信息查詢界面進入用戶管理: 圖14:查看已注冊用戶界面 圖15:訂票管理子菜單圖進入訂票管理,查詢南寧到長沙的機票: 圖16:訂票查詢界面進行訂票: 圖17:訂票界面進行退票: 圖18:退票界面 圖19:打印子菜單圖進入打印取票通知及賬單,打印身份證號為4521221991,起飛日期為2013/6/14的旅客的取票通知及賬單: 圖
15、20:打印取票通知及賬單界面進入打印機票,打?。?圖21:打印機票界面3、 進入普通用戶登陸界面預(yù)退訂機票同上圖16圖18 圖22:普通用戶界面五.設(shè)計心得體會通過本學(xué)期信息系統(tǒng)的編程開發(fā),我加深了對VC+的了解以及對SQL Server2000的使用和操作。掌握了使用MFC的某些控件進行設(shè)計,并連接數(shù)據(jù)庫,也熟悉了SQL Server中表的操作與管理。以前一直是學(xué)習(xí)理論,現(xiàn)在能把它運用到實踐中去,心里特別有成就感。由于自己的能力水平還比較低,設(shè)計出來的系統(tǒng)相對還比較簡單,只能在今后的不斷學(xué)習(xí)中去改進并完善了。附錄:系統(tǒng)設(shè)計源代碼1、登陸界面代碼:void Gate:OnGo() / TODO
16、: Add your control notification handler code here /將對話框中編輯框的數(shù)據(jù)讀取到成員變量中CADODatabase CADO;UpdateData(TRUE); CADO.OnInitADOConn(); CString sql;sql.Format ("SELECT 用戶名,密碼 FROM 用戶信息表 WHERE 用戶名='%s' and 密碼='%s'",m_username,m_pwd); / 根據(jù)用戶輸入的航班號生成sql語句。CADO.m_pRecordset = CADO.Open
17、Recordset(sql);/打開記錄集 if(m_radio=1) if(!CADO.m_pRecordset->adoEOF) CString user=(char*)(_bstr_t)CADO.m_pRecordset->GetCollect("用戶名"); CString passwd=(char*)(_bstr_t)CADO.m_pRecordset->GetCollect("密碼"); if(m_username=user&&m_pwd=passwd) CcommonDialog dlg; dlg.DoMo
18、dal(); else MessageBox("用戶名或密碼錯誤,請重新輸入!", "用戶名或密碼錯誤", MB_ICONINFORMATION); m_username = "" m_pwd = "" UpdateData(FALSE); else if(m_radio=0)CString name="Admin"CStringpwd="123" if(m_username=name&&m_pwd=pwd) CMyDlg dlg;dlg.DoModal();
19、else MessageBox("用戶名或密碼錯誤,請重新輸入!", "用戶名或密碼錯誤", MB_ICONINFORMATION); m_username = "" m_pwd = "" UpdateData(FALSE); CADO.CloseRecordset(); CADO.CloseConn();2、訂票代碼:void CAddBookingDlg:OnOK() / TODO: Add extra validation hereCADODatabase CAD;UpdateData(TRUE); CAD.
20、OnInitADOConn(); /CTime m_time=CTime:GetCurrentTime();CString str=m_time.Format("%Y-%m-%d");/顯示年月日UpdateData(TRUE);CString sex;if(m_sex=0) sex="男" else if(m_sex=1) sex="女" try CString sql; sql.Format("insert into 旅客訂票信息表(身份證號,旅客姓名,電話號碼,性別,航班號,座位號,機票類型,起飛日期) values(
21、'%s','%s','%s','%s','%s','%s','%s','%s')", m_id,m_name,m_tel,sex,m_flynum,m_seatnum,m_ftype,str); CAD.m_pRecordset=CAD.OpenRecordset(sql);CString pay;pay.Format("select 票價 from 航班坐位情況表 where 航班號='%s' and 座位號='%s
22、9; and 起飛日期='%s'and 機票類型='%s'",m_flynum,m_seatnum,str,m_ftype);CAD.m_pRecordset = CAD.OpenRecordset(pay);/打開記錄集pay=(char*)(_bstr_t)CAD.m_pRecordset->GetCollect("票價");CString sql2; sql2.Format("insert into 賬單(身份證號,旅客姓名,起飛日期,票價) values('%s','%s',&
23、#39;%s','%s')",m_id,m_name,str,pay); CAD.m_pRecordset = CAD.OpenRecordset(sql2);CString sql1; sql1.Format("insert into 取票通知表(身份證號,旅客姓名,起飛日期,取票日期) values('%s','%s','%s','%s')",m_id,m_name,str,str); CAD.m_pRecordset = CAD.OpenRecordset(sql1);
24、CString seat;seat.Format("select * from 航班坐位情況表 where 航班號='%s' and 座位號='%s' and 起飛日期='%s'and 機票類型='%s'",m_flynum,m_seatnum,str,m_ftype); CAD.m_pRecordset = CAD.OpenRecordset(seat);/打開記錄集CAD.m_pRecordset->Delete(adAffectCurrent); CString last,a;last.Format
25、("select 剩余票數(shù) from 航班信息表 where 航班號='%s' and 起飛日期='%s'",m_flynum,str);CAD.m_pRecordset = CAD.OpenRecordset(last);/打開記錄集last=(char*)(_bstr_t)CAD.m_pRecordset->GetCollect("剩余票數(shù)");int n=atoi(last); n=n-1;a.Format("update 航班信息表 set 剩余票數(shù)='%d' where 航班號=&
26、#39;%s' and 起飛日期='%s'",n,m_flynum,str); CAD.m_pConnection->Execute(_bstr_t)a,NULL,adCmdText); CAD.CloseRecordset(); CAD.CloseConn();MessageBox("恭喜您,訂票成功,旅途愉快!");catch(.)MessageBox("很抱歉,訂票失敗!");return;CDialog:OnOK();3、 退票代碼:void CReturnDlg:OnOK() / TODO: Add ex
27、tra validation heretry if(IDYES=AfxMessageBox("確定是否退票",MB_YESNO) CADODatabase CADO; CADO.OnInitADOConn(); int i=m_listreturn.GetSelectionMark();/獲的第I行 CString str=m_listreturn.GetItemText(i,0); CString pay; pay.Format("select 票價 from 賬單 where 身份證號='%s' and 起飛日期='%s'&qu
28、ot;,m_idnum,m_fd); CADO.m_pRecordset = CADO.OpenRecordset(pay);/打開記錄集 pay=(char*)(_bstr_t)CADO.m_pRecordset->GetCollect("票價"); CString fnum=m_listreturn.GetItemText(i,4);/將第i行的4列的數(shù)據(jù)給strCString seatnum=m_listreturn.GetItemText(i,5);/將第i行的5列的數(shù)據(jù)給strCString ftype=m_listreturn.GetItemText(i,
29、6);/將第i行的6列的數(shù)據(jù)給str/CString ftime=m_listreturn.GetItemText(i,7);/將第i行的7列的數(shù)據(jù)給strCString sq;sq.Format("insert into 航班坐位情況表(航班號,座位號,起飛日期,機票類型,票價) values('%s','%s','%s','%s')",fnum,seatnum,m_fd,ftype,pay); CADO.m_pRecordset = CADO.OpenRecordset(sq); CString str1,
30、str2,str3;str1.Format("select * from 賬單 where 身份證號='%s' and 起飛日期='%s'",m_idnum,m_fd); CADO.m_pRecordset->Delete(adAffectCurrent);str2.Format("select * from 取票通知表 where 身份證號='%s' and 起飛日期='%s'",m_idnum,m_fd); CADO.m_pRecordset->Delete(adAffect
31、Current);str3.Format("select * from 旅客訂票信息表 where 身份證號='%s' and 起飛日期='%s'",m_idnum,m_fd); CADO.m_pRecordset->Delete(adAffectCurrent);CADO.m_pRecordset->Update(); CString last,a; last.Format("select 剩余票數(shù) from 航班信息表 where 航班號='%s' and 起飛日期='%s'"
32、;,m_fnum,m_fd); CADO.m_pRecordset = CADO.OpenRecordset(last);/打開記錄集 last=(char*)(_bstr_t)CADO.m_pRecordset->GetCollect("剩余票數(shù)"); int n=atoi(last); n=n+1; a.Format("update 航班信息表 set 剩余票數(shù)='%d' where 航班號='%s' and 起飛日期='%s'",n,m_fnum,m_fd); CADO.m_pConnectio
33、n->Execute(_bstr_t)a,NULL,adCmdText); MessageBox("退票成功!","提示",0); CADO.CloseConn();catch(.)MessageBox("退票失敗!");return;m_listreturn.DeleteAllItems();/CDialog:OnOK();void CReturnDlg:OnCancel() / TODO: Add extra cleanup hereCDialog:OnCancel();void CReturnDlg:OnSerch() /
34、 TODO: Add your control notification handler code herem_listreturn.DeleteAllItems();CADODatabase CADO;UpdateData(TRUE);CADO.OnInitADOConn();CString sql;sql.Format("SELECT * FROM 旅客訂票信息表 WHERE 身份證號='%s' and 航班號='%s' and 起飛日期='%s'",m_idnum,m_fnum,m_fd); / 根據(jù)用戶輸入的身份證號生成sql語句。CADO.m_pRecordset = CADO.OpenRecordset(sql);/打開記錄集if(!CADO.m_pRecordset->adoEOF) CADO.m_pRecordset->MoveFirst(); while (!CADO.m_pRecordset->adoEO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 南通智能化貨代合同范例
- 工程合同范例 2013
- 打捆機轉(zhuǎn)讓合同范例
- 大金額購銷合同范例
- 投資資金分紅合同模板
- 2024年銀行法制宣傳教育工作總結(jié)
- 合伙施工協(xié)議合同范例
- 2024年河南客運實操試題庫及答案
- 2024年淮南駕駛員客運從業(yè)資格證模擬考試題
- 2024年山西客運資格證考多少道題
- 《精益生產(chǎn)之ECRS分析法》課件
- 2024年甘肅高考地理試卷(真題+答案)
- 智能纜繩健康監(jiān)測系統(tǒng)
- 軟件供應(yīng)鏈安全管理
- CJT278-2008 建筑排水用聚丙烯(PP)管材和管件
- 老年個人健康狀況分析報告模板5-12-16
- 2024注冊安全工程師《安全生產(chǎn)法律法規(guī)》考點總結(jié)
- 新《事業(yè)單位財務(wù)規(guī)則》培訓(xùn)講義0
- 期末復(fù)習(xí)《艾青詩選》 統(tǒng)編版語文九年級上冊
- 第3章(1)工程電磁兼容(第二版)(路宏敏)
- 學(xué)校食堂食品安全自查總結(jié)報告
評論
0/150
提交評論