當前位置:首頁 » 操作系統 » 訂票系統資料庫設計

訂票系統資料庫設計

發布時間: 2022-05-11 13:52:32

『壹』 鐵路訂票系統中,為了統計行程的里程(經過多個站點),資料庫的設計應該是怎麼樣的啊~

資料庫中存放每相鄰兩個站點間的里程.
然後在實際的程序中進行操作
對一段路程分成幾段,再分別得到,最後計算

『貳』 飛機訂票系統設計 c語言

(已修改,請用最新的代碼)代碼說明:

1級菜單:選擇購買的航班號,並顯示對應座位狀態。

(我只做測試,所以初始化initFlight函數中我只初始了2個航班,需要自己按照我的代碼添)

(注意:實際開發軟體,鏈表數據是從資料庫中讀取的,需要實時同步,如果要多次調用initFlight函數,記得自己寫一個釋放內存的函數,把所有鏈表「SINFO和FLINFO」節點都釋放掉,釋放函數我沒寫,需要你自己寫!!!)

2級菜單:選擇購買對應座位號,完成購買,並實時顯示購買結果。

位置編號、座位最大排數、艙室類型、折扣等參數均由常量參數空值,需要修改自行改常量。

注意:艙室類型(我默認3個類型頭等艙、公務艙、經濟艙)對應折扣參數:tDiscount二維數組。如要如要添加新的艙室類型,必須將參數常量TYPESIZE、typeName、types、tDiscount這4個同時修改,具體看代碼備注!!

座位票價=基礎票價*類型折扣*時段折扣。

因為飛機不讓吸煙,所以我沒做吸煙區(笑),如果你需要,可以作為類型自行添加!

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<malloc.h>
#include<time.h>
//-----------------------相關參數,想改變,在這里修改!!!!!!!-----------------------------
constfloattimeDiscount=1;//時段折扣,影響所有航班最終價格,默認1
constcharcID[5]="ABCD";//位置編號
constintmaxRow=20;//位置最大排號
//注意:如果修改類型數量,types和tDiscount必須同時修改!!!
#defineTYPESIZE3//類型數量
constchartypeName[TYPESIZE][10]={"頭等艙","公務艙","經濟艙"};
constinttypes[TYPESIZE][2]={{1,2},{3,4},{5,20}};//排號對應類型。1~2排頭等艙,3~4排公務艙,5~20排經濟艙
constfloattDiscount[TYPESIZE]={1.5,1.3,1};//類型折扣。頭等艙1.5倍,公務艙1.3倍,經濟艙1倍

//-------------------------------------------------------------------------------
typedefstructseatInfo//座位信息,一條鏈表對應一個航班信息,鏈表順序從第一排左邊第一個開始往後A1~D1,A2~D2。。。
{
charcloID;//位置編號A、B、C、D
introw;//位置排號
inttype;//座位所屬類型:0:頭等艙、1:公務艙、2:經濟艙,不同類型對應不同的類型折扣tDiscount
intsell;//出售狀態,0:未出售;1:已出售
structseatInfo*next;
}SINFO;
typedefstructflightInfo//航班信息
{
charfid[10];//航班號
time_ttfTime;//起飛時間
time_tldTime;//降落時間
chartoCity[20];//抵達城市
floattPrice;//基礎票價,不同位置具有不同折扣,座位票價=基礎票價*類型折扣*時段折扣
structflightInfo*next;
structseatInfo*sHead;//對應座位鏈表的頭節點
}FLINFO;
voidmeError(void*p);
SINFO*getSINFO();//獲取座位鏈表
//addFLINFO:添加航班信息鏈表的節點flinfoHead:頭節點(第一次傳NULL會自動生成),flinfoTail:尾節點,fNew:要添加的結構信息(成員指針無需賦值)
FLINFO*addFLINFO(FLINFO**ffHead,FLINFO*flinfoTail,FLINFOfNew);//返回尾節點
time_tgetTime_tfromStr(char*sTime);//將YYYY-MM-DDhh:mm:ss格式的時間字元串轉換成time_t型數值
FLINFO*initFlight();//初始化航班信息,返回航班鏈表頭節點,如果想手動輸入,請在這里添加!!!正常軟體開發,這一步應該是從資料庫讀取!
char*getTString(structtm*tm0);//通過tm獲取時間字元串
voidshowSinfo(FLINFO*flinfo);//顯示航班對應座位信息
voidprintfFlinfo(FLINFO*flinfoHead);
FLINFO*selectFlinfo(FLINFO*flinfoHead,char*fid);//選擇航班號,返回節點
voidshowSinfo(FLINFO*flinfo);//顯示航班對應座位信息
SINFO*selectSinfo(FLINFO*flinfo,char*sid);//選擇座位,返回節點
intmain()
{
FLINFO*flinfoHead=initFlight(),*ffSelect=NULL;
SINFO*sfSelect=NULL;
charfid[10]={0},sid[10]={10};
while(1)
{
ffSelect=NULL;
sfSelect=NULL;
memset(fid,0,10);
memset(sid,0,10);
printfFlinfo(flinfoHead);
printf("請輸入要購買的航班號:");
scanf("%s",fid);
ffSelect=selectFlinfo(flinfoHead,fid);
if(!ffSelect)
{
printf("未找到對應航班,按任意鍵繼續----- ");
getch();
system("cls");
continue;
}
system("cls");
printf("航班號:%s座位信息如下: ",ffSelect->fid);

showSinfo(ffSelect);
printf("請輸入要購買的座位編號(輸入0返回主菜單):");
scanf("%s",sid);
if(!strcmp(sid,"0"))
{
system("cls");
continue;
}
else
{
sfSelect=selectSinfo(ffSelect,sid);
if(!sfSelect||sfSelect->sell)
{
printf("未找到對應座位或該座位已出售,請重新輸入!按任意鍵繼續----- ");
getch();
system("cls");
continue;
}
printf("購買成功!按任意鍵繼續-----");
sfSelect->sell=1;
getch();
system("cls");
}

}
return0;
}
SINFO*selectSinfo(FLINFO*flinfo,char*sid)//選擇座位,返回節點
{
SINFO*sinfoHead=flinfo->sHead;
while(sinfoHead->next)
{
if(sinfoHead->next->cloID==sid[0]&&sinfoHead->next->row==atoi(sid+1))
returnsinfoHead->next;
sinfoHead=sinfoHead->next;
}
returnNULL;
}
voidshowSinfo(FLINFO*flinfo)//顯示航班對應座位信息
{
SINFO*sinfoHead=flinfo->sHead,*sfp=NULL;
inti,j,k,row=maxRow,clo=strlen(cID);
chartypeStr[10]={0};
for(i=0;i<row;i++)
{
//---------讀取座位所屬艙室------------
memset(typeStr,0,10);
for(k=0;k<TYPESIZE;k++)
if(i+1>=types[k][0]&&i+1<=types[k][1])
strcpy(typeStr,typeName[k]);
//--------------------------------------
printf(" ");
for(j=0;j<clo;j++)
printf("-------------");
printf(" ");
sfp=sinfoHead;

for(j=0;j<clo;j++)
{
printf("|%c%02d|",sfp->next->cloID,sfp->next->row);
sfp=sfp->next;
}
printf(" ");
sfp=sinfoHead;
for(j=0;j<clo;j++)
{
printf("|%c|",sfp->next->sell?2:1);
sfp=sfp->next;
}
printf(" ");
sfp=sinfoHead;
for(j=0;j<clo;j++)
{
printf("|%6s:%4.0f|",typeStr,flinfo->tPrice*tDiscount[sfp->next->type]*timeDiscount);
sfp=sfp->next;
}
printf(" ");
sinfoHead=sfp;
}
for(j=0;i<clo;j++)
printf("-------");
printf(" ");

}
FLINFO*selectFlinfo(FLINFO*flinfoHead,char*fid)//選擇航班號,返回節點
{
while(flinfoHead->next)
{
if(!strcmp(flinfoHead->next->fid,fid))
returnflinfoHead->next;
flinfoHead=flinfoHead->next;
}
returnNULL;
}
voidprintfFlinfo(FLINFO*flinfoHead)
{
while(flinfoHead->next)
{
printf("目的地:%s,航班號:%s ----起飛時間:%s,抵達時間:%s ",flinfoHead->next->toCity,flinfoHead->next->fid,getTString(localtime(&flinfoHead->next->tfTime)),getTString(localtime(&flinfoHead->next->ldTime)));
flinfoHead=flinfoHead->next;
}
}
char*getTString(structtm*tm0)//通過tm獲取時間字元串
{
char*str=(char*)malloc(sizeof(char)*20),num[5]={0};
meError(str);
memset(str,0,20);
sprintf(num,"%4d",tm0->tm_year+1900);
strcat(str,num);
strcat(str,"-");

memset(num,0,5);
sprintf(num,"%02d",tm0->tm_mon);
strcat(str,num);
strcat(str,"-");

memset(num,0,5);
sprintf(num,"%02d",tm0->tm_mday);
strcat(str,num);
strcat(str,"");

memset(num,0,5);
sprintf(num,"%02d",tm0->tm_hour);
strcat(str,num);
strcat(str,":");

memset(num,0,5);
sprintf(num,"%02d",tm0->tm_min);
strcat(str,num);
strcat(str,":");

memset(num,0,5);
sprintf(num,"%02d",tm0->tm_sec);
strcat(str,num);
returnstr;
}
time_tgetTime_tfromStr(char*sTime)//將YYYY-MM-DDhh:mm:ss格式的時間字元串轉換成time_t型數值
{
time_trt;
structtm*tm1=NULL;
rt=time(NULL);
tm1=localtime(&rt);
sscanf(sTime,("%4d-%2d-%2d%2d:%2d:%2d"),&tm1->tm_year,&tm1->tm_mon,&tm1->tm_mday,&tm1->tm_hour,&tm1->tm_min,&tm1->tm_sec);
tm1->tm_year-=1900;
tm1->tm_mon--;
rt=mktime(tm1);

returnrt;

}
FLINFO*initFlight()//初始化航班信息,返回航班鏈表頭節點,如果想手動輸入,請在這里添加!!!正常軟體開發,這一步應該是從資料庫讀取!
{
FLINFO*ffHead=NULL,*flinfoTail=NULL,fNew;
//--------添加一個航班信息----需要增加按照我下面調用方式寫--------------------------------
strcpy(fNew.fid,"CI502");
fNew.tfTime=getTime_tfromStr("2019-02-2003:30:30");
fNew.ldTime=getTime_tfromStr("2019-02-2005:20:30");
strcpy(fNew.toCity,"台北");
fNew.tPrice=1000;
fNew.next=NULL;
flinfoTail=addFLINFO(&ffHead,flinfoTail,fNew);
//--------------------------------------------------------------------------------------------
strcpy(fNew.fid,"9C8921");
fNew.tfTime=getTime_tfromStr("2019-02-2014:30:30");
fNew.ldTime=getTime_tfromStr("2019-02-2016:40:30");
strcpy(fNew.toCity,"香港");
fNew.tPrice=500;
fNew.next=NULL;
flinfoTail=addFLINFO(&ffHead,flinfoTail,fNew);
returnffHead;
}
FLINFO*addFLINFO(FLINFO**ffHead,FLINFO*flinfoTail,FLINFOfNew)//返回尾節點
//添加航班信息鏈表的節點flinfoHead:頭節點(第一次傳NULL會自動生成),flinfoTail:尾節點,fNew:要添加的結構信息(成員指針無需賦值)
{
FLINFO*flinfoHead=*ffHead;
if(flinfoHead==NULL)
{
*ffHead=(FLINFO*)malloc(sizeof(FLINFO));
flinfoHead=*ffHead;
meError(flinfoHead);
flinfoHead->next=NULL;
}
FLINFO*flinfoNew=(FLINFO*)malloc(sizeof(FLINFO));
meError(flinfoNew);
flinfoNew->next=NULL;
flinfoNew->fid[0]=0;
strcpy(flinfoNew->fid,fNew.fid);
flinfoNew->ldTime=fNew.ldTime;
flinfoNew->tfTime=fNew.tfTime;
flinfoNew->toCity[0]=0;
strcpy(flinfoNew->toCity,fNew.toCity);
flinfoNew->tPrice=fNew.tPrice;
flinfoNew->sHead=getSINFO();
if(flinfoHead->next==NULL)
flinfoHead->next=flinfoNew;
else
flinfoTail->next=flinfoNew;
flinfoTail=flinfoNew;
returnflinfoTail;
}
SINFO*getSINFO()//獲取座位鏈表
{
intmaxClo=strlen(cID),cnt=maxClo*maxRow,clo=0,row=1,i;
SINFO*sinfoHead=(SINFO*)malloc(sizeof(SINFO)),*sinfoTail=NULL;
meError(sinfoHead);
sinfoHead->next=NULL;
SINFO*sinfoNew=NULL;
while(cnt--)//按順序生成對應數量的座位鏈表
{
if(clo==maxClo)
clo=0,row++;
if(row==maxRow+1)
row=1;

sinfoNew=(SINFO*)malloc(sizeof(SINFO));
meError(sinfoNew);
sinfoNew->cloID=cID[clo];
sinfoNew->row=row;
for(i=0;i<TYPESIZE;i++)
if(row>=types[i][0]&&row<=types[i][1])
{
sinfoNew->type=i;
break;
}
sinfoNew->sell=0;
sinfoNew->next=NULL;
if(sinfoHead->next==NULL)
sinfoHead->next=sinfoNew;
else
sinfoTail->next=sinfoNew;
sinfoTail=sinfoNew;
clo++;
}
returnsinfoHead;
}
voidmeError(void*p)//內存申請失敗
{
if(p==NULL)
{
printf(" 異常:內存申請失敗!回車結束程序! ");
while(getch()!=' ');
exit(0);
}
}

『叄』 影院訂票系統,管理員可以刪除用戶訂單嗎

在電影開場前一個小時是可以用戶自行取消訂單的。

管理員能否取消你可以去影院問問。

為樓主找到以下參考信息:

inemaTicketingSystem(電影院售票系統)

一、主要功能

  • 用戶登錄注冊

  • 影院影片查看

  • 影院影片搜索

  • 電影采購

  • 訂單查詢

  • 後台管理

  • 二、功能設計

    (1)用戶注冊: 用戶在注冊頁面填寫注冊相關信息,如果填寫正確則檢查是否為新用戶,如果為新用戶則轉發到注冊成功頁面;如果填寫注冊相關信息錯誤或不是新用戶則進行再次填寫。

    3.2 電影院售票系統的數據表設計

    根據E-R圖的分析與設計可以將相應的實體與聯系轉換成數據表進行存儲。本系統的數據表包含影片表、影院表、場次表、用戶表、訂單表。

    (1)影片表主要是用來記錄影片信息的,存儲信息包括影片ID號、影片中文名、影片英文名、海報圖片、簡介、片長、上映日期、評分、來源、演員、導演、類型等。詳細說明如表3-1所示。

    表 3-1 影片表(movie)

    序號

    表欄位

    類型

    詳細說明

    1 mid Int(11) 影片ID號,主鍵

    2 chinese_name Varchar(255) 影片中文名

    3 english_name Varchar(255) 影片英文名

    4 img_url Varchar(255) 影片海報

    5 type Varchar(2) 影片的類型

    6 length Varchar(255) 影片的播放時長

    7 release_date date 影片的上映時間

    8 introction Varchar(1000) 影片的簡介

    9 rating Varchar(45) 影片的評分

    10 country Varchar(45) 影片拍攝的國家

    11 actors Varchar(45) 影片的演員

    12 director Varchar(45) 影片的導演

    (2)影院表主要是用來記錄各城市的影院信息的,主要包括影院ID、影院名、地址、電話、城市。詳細說明如3-2所示。

    表3-2 影院表(cinema)

    序號

    表欄位

    類型

    詳細說明

    1 cid Int(11) 影院ID,主鍵

    2 name Varchar(255) 影院名稱

    3 address Varchar(1000) 影院的地址

    4 phone Varchar(45) 影院的電話

    5 city Varchar(45) 影院的所在城市

    (3)場次表是由影片表和影院表的多對多聯系產生的,另外它還具有包括了其他信息。其他信息主要有放映室、語言、價格、放映日期、放映時間、已購座位號。詳細說明如表3-3所示。

    表 3-3 場次表(screen)

    序號

    表欄位

    類型

    詳細說明

    1 sid Int(11) 場次ID號,主鍵

    2 cid Int(11) 影院的ID號,外鍵

    3 mid Int(11) 影片的ID號,外鍵

    4 language Varchar(255) 場次播放的影片語言

    5 price float 場次的價格

    6 room Varchar(255) 場次的房間號

    7 show_date date 播放日期

    8 show_time Varchar(255) 播放時間

    9 seat Varchar(255) 已購買的座位號 每個座位號用0和1表示 0:沒有被購買 1:已經被購買

    (4)用戶表是用來記錄用戶的基本信息的,主要有用戶名、密碼、手機號。另外還記錄了用戶的類型是普通用戶還是管理員。詳細說明如表3-4所示。

    表 3-4 用戶表(user)

    序號

    表欄位

    類型

    詳細說明

    1 uid Int(11) 用戶ID號,主鍵

    2 username Varchar(255) 用戶名稱

    3 phone Varchar(255) 用戶的手機號碼

    4 password Varchar(255) 用戶的密碼

    5 type Varchar(2) 用戶的類型 0:普通用戶 1:管理員

    (5)訂單表是由場次表和用戶名的多對多聯系產生的。由此產生的另外的信息還有座位號。詳細說明如表3-5所示。

    表3-5 訂單表(flim_order)

    序號

    表欄位

    類型

    詳細說明

    1 fid Int(11) 訂單ID號,主鍵

    2 sid Int(11) 場次ID號,外鍵

    3 uid Int(11) 用戶ID號,外鍵

    4 seat Varchar(255) 購買的座位號 座位號用0和1對應 0:沒有購買 1:購買了對應座位號

『肆』 用Java做一個演唱會在線訂票系統需要創建哪幾張Oracle資料庫表

要根據你的需求來具體分析,先不要管資料庫怎麼設計,得先把需求了解清楚。每一個細節可能會涉及到哪些操作,哪些操作需要涉及到哪些信息,哪些信息需要對應哪些表。

『伍』 飛機訂票系統設計 使用資料庫來編寫程序!

void dingpiao()//訂票模塊
{
int n;
char a[10];
do
{
search();//調用查詢模塊
printf("請輸入您要訂的機票數以回車鍵結束: ");
scanf("%d",&n);//讀取所訂機票數
if(n<0)
{
printf("請輸入有效的機票數! ");//判斷機票數是否出錯
break;
}
if(s[i].count!=0&&s[i].count>=n)//判斷是否出錯
{
s[i].count=s[i].count-n;
save();//調用保存函數
printf("訂票成功! ");
break;
}
if(s[i].count<n)//判斷是否出錯
{
printf("請輸入有效的機票數: ");
break;
}
printf("是否繼續? 請輸入yes或no以回車鍵結束: ");//判斷是否繼續訂票
scanf("%s",a);
}while(!strcmp(a,"yes"));//判斷結束

}

void tuipiao()//退票模塊
{
int n;
char a[10];
do
{
search();//調用查詢模塊
printf("請輸入您要退的機票數目: ");
scanf("%d",&n);//輸入所退票數
if(n<0) //判斷票數是否有效
printf("請輸入有效的機票數! ");
s[i].count=s[i].count+n;
save(); //調用保存模塊
printf("退票成功! ");
printf("是否繼續? 請鍵入yes或no以回車鍵結束: ");//判斷是否繼續退票
scanf("%s",a);
}while(!strcmp(a,"yes"));//判斷並跳出循環

getchar();
}
void xiugai() //修改模塊
{
struct xiu //定義結構體
{
int no;
char name1[20];
char name2[20];
char time[20];
int count;
}x[1];
char j[10];
char f[]="2008china";//設置密碼
int n;
printf("請輸入密碼並以回車鍵結束: ");
scanf("%s",f);//讀取密碼
if(strcmp(f,"2008china")==0)//判斷是否出錯
{
read();//調用讀取模塊
do
{
printf( "請選擇修改方式: "
"*1,按航班號修改: "
"*2,按航線修改: ");
printf("請在1---2中修改以回車鍵結束: ");
scanf("%d",&n);//讀取修改方式
switch(n)
{
case 1:printf("請輸入航班號: ");
scanf("%d",&x[0].no);//讀取航班號
break;
case 2:printf("請輸入起始站: ");
scanf("%s",x[0].name1);//讀取起始站
printf("請輸入終點站: ");
scanf("%s",x[0].name2);//讀取終點站
break;
}

『陸』 那個我也想要一個資料庫設計事例,就是火車售票管理SQL

目錄
概述: 5
1. 需求分析 5
1.1 用戶需求: 5
1.2 業務流程分析: 6
1.3 信息需求分析 6
1.4 功能需求分析: 7
2. (資料庫)概念(模型)設計 8
2.1構思ERD的四條原則及根據這些原則相應得出的實體、聯系及其屬性: 9
2.2、系統具體E-R圖: 9
3. (資料庫)邏輯(模型)設計 10
3.1 一般邏輯模型設計: 10
3.2 具體邏輯模型設計: 11
4. 資料庫物理設計與資料庫保護設計 12
5. 處理功能設計 12
5.1 主控模塊設計: 12
5.2 子模塊設計: 13
6. 資料庫應用系統的實現 14
6.1 資料庫及其表結構的建立: 14
6.2 創建表的相關視圖: 16
6.3 各表關系圖, 16
6.4 數據輸入:利用系統錄入數據,如下圖為各表內容: 17
6.5 模塊實現: 18
7. 資料庫應用系統運行 26
7.1 寫出系統操作使用的簡要說明。 26
7.2 按使用說明運行系統並列印出運行結果。 26
7.3 系統評價: 27

報告內容
概述:
隨著國民經濟快速發展, 人們出行、交通越來越頻繁, 對服務的快捷、便利性要求也越來越高。從而對客運行業的建設與管理提出了更高的要求。為適應和推動客運行業的發展, 各種交通公司和部門開始廣泛採用使用日趨成熟的計算機技術和資料庫技術來實現票務信息的現代化管理,具有手工管理所無法比擬的優點,如:檢索迅速,查找方便,可靠性高,存儲量大,保密性好,壽命長,成本底等。這些優點能夠極大地提高信息管理和業務管理的效率。
本學生火車訂票系統正是通過資料庫存儲信息實現高效率管理。該實驗設計首先進行需求分析,然後在需求文檔的指導下實現系統的功能,如操作員的信息管理功能及普通學生的火車信息查詢、訂票、退票等功能,最終實現的是學生購得一張自己滿意的票券,同時力求通過資料庫系統及計算機在其中的運用達到提高工作效率,節約人力資源的效果。

1. 需求分析
1.1 用戶需求:
(一)、問題描述:
學生火車票定票系統
(1)背景:一年兩次的火車票訂票管理
(2)主要實現以下功能:
1)學生基本信息的管理,尤其是所在地
2)學生購票的基本信息,尤其是價錢和車票目的地
3)購票以後的分發管理
4)退票的管理
5)信息的統計和查詢
6)操作員管理
(二)、目的及現狀:
1)、實驗目的:
資料庫設計就是要使學生採用本課程中學習的資料庫設計方法,運用其基本思路與主要圖表工具完成一個自己所了解的業務的資料庫應用系統信息需求分析與資料庫的概念設計、邏輯設計、物理設計以及處理功能設計,用自己熟悉的資料庫管理系統、程序設計語言及其相關開發工具實現該系統,並運行、評價、改進之;在此基礎上嚴格按本大綱所附報告提綱撰寫課程設計報告。通過本設計進一步弄懂資料庫系統及其相關的基本概念,理解資料庫系統的系統結構、主要特點,掌握資料庫設計的原理、方法及其基本過程,初步具備資料庫應用設計的能力,初步形成運用資料庫應用系統解決管理決策中的實際問題的基本素質。
2)、現狀和系統要求:
在傳統模式下利用人工進行火車訂票業務,存在著較多的缺點,如:效率底,保密性差,時間一長將產生大量的文件和數據,更不便於查找,更新,維護等。諸如這些情況,給各相關部門工作人員帶來了很大困難,嚴重影響了他們的工作效率。運用計算機技術和資料庫技術來實現票務信息的現代化管理,具有手工管理所無法比擬的優點,如:檢索迅速,查找方便,可靠性高,存儲量大,保密性好,壽命長,成本底等。這些優點能夠極大地提高信息管理和業務管理的效率。
在本系統中,系統用戶共有兩種, 並根據用戶許可權的不同而實現不同的功能,如操作員
擁有添加、修改、刪除某火車相關信息及修改自己的個人信息的功能。學生有對車票信息、、哪一車次哪天還剩餘多少張票和自己所訂票券的查詢功能,訂票功能及退票功能。系統利用計算機和資料庫的高效率大大減輕了學校票點工作人員的勞動強度, 提高了各部門的工作效率。
1.2 業務流程分析:
(一)、描述系統的業務流程:
本系統共有兩種用戶, 根據用戶許可權的不同而實現不同的功能。
操作員的許可權最大,他進入系統必須先登錄。操作員可以添加、修改、刪除某車票的相關信息,可以修改自己的個人信息;查詢、刪除學生的訂票情況,確認學生是否已付款取票等。
學生可以按目的地的車次對車票信息進行查詢,可以訂票,訂票時須錄入自己的信息及所選擇的車次,系統將檢查該車次票數是否已訂完或不足,若已訂完或不足則提示錯誤信息並返回到訂票界面,訂票成功後將生成訂票單。學生還可以對自己所訂的票券即訂票單進行查詢,以及查詢哪一車次哪天還剩餘多少張票。用戶付款和取票可在學校票點完成。
(二)、初步業務流程圖:

1.3 信息需求分析
1.3.1 資料收集

1.3.2 事項分析:
在本火車票訂票系統中,各資料的基本數據項列舉如下:
學生資料:學號,姓名,密碼,所在學院,專業,班級,電話,目的城市
車票基本信息:車次號,出發站,開車時間,到達站,到達時間,車票種類,余票數
車次詳細信息:ID號,車次號,途徑站,票價,
訂票單信息:訂單號,訂票人學號,訂單時間,付款取票與否
訂票具體信息:ID號,訂單號,所得車次號,目的城市,訂票數,總票價,取票時間
訂票點信息:票點號,票點主任的員工號,聯系電話,所在校區
操作員資料:員工號,票點號,密碼,姓名,性別,電話
1.4 功能需求分析:
(一)、完善業務流程圖:

(二)、功能層次圖:
本系統共有兩種用戶, 根據用戶許可權的不同而實現不同的功能,如操作員查詢、添加、修改、刪除某火車相關信息及查詢、修改自己的個人信息的功能。學生對車票信息、、哪一車次哪天還剩餘多少張票和訂票功能以及對自己所訂票券的查詢功能、退票功能。

2. (資料庫)概念(模型)設計
2.1構思ERD的四條原則及根據這些原則相應得出的實體、聯系及其屬性:

① 原則1 (確定實體):能獨立存在的事物,例如人、物、事、地、團體、機構、活動、事項等等,在其有多個由基本項描述的特性需要關注時,就應把它作為實體。
在本系統中,實體主要有學生、操作員、車票信息、車票詳細信息表、訂票單,訂票詳細信息表,訂票點。
②原則2 (確定聯系):兩個或多個實體間的關聯與結合,如主管,從屬,組成,佔有,作用,配合,協同等等,當需要予以關注時,應作為聯系。實體間的聯系可分為一對一、一對多、多對多等三類,在確定聯系時還要確定其類型。
在本系統中,學生、車票信息、訂票單和訂票詳細信息表之間存在「訂購」的聯系,一個車票信息可以被多個學生購買,而一個學生只可以購買多個車次所屬的一到兩張車票,它們之間的聯系是一對多的「購買」聯系,同時一次登錄無論訂多少車次只生成一張訂票單。訂票點和操作員之間存在「隸屬」的聯系,它們之間的聯系是一對多的「隸屬」聯系;車票信息和車票詳細信息表之間存在「包含」與被包含的關系;訂票單和訂票詳細信息表之間也存在「包含」與被包含的關系。
③原則3 (確定屬性):實體的屬性是實體的本質特徵。實體應有標識屬性(能把不同個體區分開來的屬性組),並指定其中一個作為主標識。聯系的屬性是聯系的結果或狀態。
從這條原則可得到實體和聯系的屬性如下:
學生(學號,姓名,密碼,所在學院,專業,班級,電話,目的城市)
車票基本信息(車次號,出發站,開車時間,到達站,到達時間,車票種類,余票數)
車次詳細信息(ID號,車次號,途徑站,票價)
訂票單信息(訂單號,訂票人學號,訂單時間,付款取票與否)
訂票具體信息(ID號,訂單號,所得車次號,目的城市,訂票數,總票價,取票時間)
訂票點(票點號,票點主任的員工號,所在校區,電話)
操作員(員工號,票點號,密碼,姓名,性別,電話)

④原則4(一事一地):信息分析中得到的基本項要在且僅在實體聯系圖中的一個地方作為屬性出現。
根據以上的分析,可以畫出本系統的原始ERD的基本結構。如

2.2、系統具體E-R圖:

3. (資料庫)邏輯(模型)設計
3.1 一般邏輯模型設計:
(一)、由ERD導出一般關系模型的四條原則:
原則1(實體轉換為關系模式):ERD中每個獨立的實體轉換為一個關系模式,實體的屬性組成關系的屬性,實體的主標識轉換成關系的主碼。
原則2(從實體及其主從聯系轉換為關系模式):ERD中一個從實體及其主從聯系轉換為一個關系,從實體的屬性及其主實體關系的屬性組成的屬性,其主實體關系的主碼,在主從關系聯系為一對多聯系時還要加上可把同一主實體個體所對應的從實體個體區分開來的,從實體的一組屬性,作為該關系的主碼。對子類實體可作類似一對一聯系的從實體的轉換。
原則3(一對多聯系在關系模式中的表示):ERD中的一個一對多聯系通過在其「多」實體關繫上增加「1」實體關系的主碼(作為外碼)和聯系本身的屬性來表示。
原則4(多對多聯系轉換為關系):ERD中的一個多對多聯系轉換為一個關系,其被聯系實體關系的主碼和該聯系本身的屬性一起組成的屬性,被聯系關系的主碼組成該關系的復合主碼。

(二)、資料庫初步構思的關系框架:
通過ERD轉換為一般關系模型四條原則分析,得到須在資料庫中進行存儲的一般關系模型如下(帶下劃線的為主碼,帶#的為外鍵):
學生(學號,姓名,密碼,所在學院,專業,班級,電話,目的城市)
車票基本信息(車次號,出發站,開車時間,到達站,到達時間,車票種類,余票數)
車次詳細信息(ID號,車次號#,途徑站,票價)
訂票單信息(訂單號,訂票人學號#,訂單時間,付款取票與否)
訂票具體信息(ID號,訂單號#,所得車次號#,目的城市,訂票數,總票價,取票時間)
訂票點(票點號,票點主任的員工號#,所在校區)
操作員(員工號,密碼,姓名,性別,電話)
3.2 具體邏輯模型設計:
(1)、Student表:用來保存學生信息:
項名 類型 長度 小數位 值域 主鍵 外鍵 空鍵
學號 字元 12 是 非空
姓名 字元 20 非空
密碼 字元 12 非空
學院 字元 40 非空
專業 字元 30 非空
班級 數據 4 0 >0 非空
電話 字元 12 非空
目的城市 字元 30 非空
(2)、Ticket表:用來保存車票信息表
項名 類型 長度 小數位 值域 主鍵 外鍵 空鍵
車次號 字元 20 是 非空
出發站 字元 30 非空
開車時間 日期 8 非空
到達站 字元 30 非空
到達時間 日期 8 非空
車票種類 字元 20 非空
余票數 數據 8 0 >0 非空
(3)、Citysite表:用來保存車票詳細信息表:
項名 類型 長度 小數位 值域 主鍵 外鍵 空鍵
ID號 整數,自動編號 8 是 非空
車次號 字元 20 是 非空
途徑城市 字元 30 非空
票價 decimal 非空

(4)、Ticketsite表:用來保存訂票點表:
項名 類型 長度 小數位 值域 主鍵 外鍵 空鍵
票點號 整數,自動編號 8 0 是 非空
票點主任員工號 整數,自動編號 8 0 是 非空
聯系電話 字元 12 非空
所在校區 字元 40 非空
(5)、Admin表:用來保存操作員表:
項名 類型 長度 小數位 值域 主鍵 外鍵 空鍵
員工號 整數,自動編號 8 0 是 非空
用戶名 字元 20 非空
密碼 字元 12 非空
姓名 字元 20 非空
性別 字元 4 非空
電話 字元 12 非空
(6)、Book表:用來保存訂單表:
項名 類型 長度 小數位 值域 主鍵 外鍵 空鍵
訂單號 整數,自動編號 8 0 是 非空
學號 字元 是 非空
訂單時間 字元 非空
付款取票與否 整數 2 0 非空
(7)、Ticket表:用來保存取票單表:
項名 類型 長度 小數位 值域 主鍵 外鍵 空鍵
ID號 整數,自動編號 8 0 是 非空
取票號 字元 8 0 是 非空
車次號 字元 是 非空
目的城市 字元 非空
訂票數 數據 8 0 >0 非空
總票價 Decimal 非空
取票時間 日期 8 非空
4. 資料庫物理設計與資料庫保護設計
根據表的結構關系,本系統採用SQL Server 2000資料庫。SQL Server 2000是微軟公司關系型資料庫產品,它是在由MS SQL Server 7.0建立的堅固基礎之上產生的。客戶的需求極大的推動了該產的革新,SQL Server2000在易用性、可縮放性和可靠性,以及數據倉庫等諸多方面有了很大的增強。這使得SQL Server 2000在很多資料庫產品發展最快的應用領域(如電子商務、移動計算、分支自動化、商業級應用和數據交換中心等)中成為領先者
在資料庫中創建表的同時須創建相關的索引。索引就是加快檢索表中數據的方法。資料庫的索引類似於書籍的索引。在書籍中,索引允許用戶不必翻閱完整個書就能迅速地找到所需要的信息。在資料庫中,索引也允許資料庫程序迅速地找到表中的數據,而不必掃描整個資料庫。本資料庫表較為簡單,且每個表中定義主鍵約束或者唯一性鍵約束,已經間接創建了索引,故無需再創建索引。
5. 處理功能設計
5.1 主控模塊設計:

(1)、登錄系統模塊:
在登錄窗體界面中,你可以輸入代碼和密碼,選擇你的身份(操作員或系統管理員),確認後就可進入主界面窗體。如果你是學生,且還沒注冊,可以在此窗體界面上點擊「注冊」,在注冊界面輸入所要求的項,確定後重新返回登錄界面,用你剛注冊的賬號登錄進入主界面。
在主界面中包含上述模塊圖的幾部分,根據身份,即是用戶或者管理員,對應許可權不同,分為不同的主界面,即用戶主界面和管理員主界面。
(2)、系統設置模塊圖:
用戶:在此模塊用戶可以查詢、修改自身注冊信息以及退出登錄,退出系統後將返回登錄界面。

管理員模塊:在此模塊管理員除了擁有用戶的各項設置外還可以注冊新的管理員,但為了安全起見,此功能只有當登錄人是票點主任時才可執行。

5.2 子模塊設計:
5.2.1、管理員模塊
1、車票信息管理模塊:在此模塊,管理員可以執行車票信息錄入、查詢、刪除和修改功能,不過刪除和修改功能須當該車次沒有被預訂的情況下才可執行。

2、訂票管理模塊:在此模塊,管理員可以查詢所有訂單情況、已付款取票和未付款取票的訂單情況,還可以按學號查詢某學生的訂票情況以及各種統計信息,並在學生來付款取票時執行「付款」操作。另外還可以在訂單已付款或學生取消訂單時刪除訂單。

5.2.2、用戶模塊:
1、訂票管理模塊:在此模塊,用戶可以查詢車票信息和自身訂票情況。查詢車票情況分為按車次、按目的地、按起始站—目的站查詢,當查詢到自身所想要的車票時即可訂票,但注意預定票的目的地須與學生家鄉所在城市相符,否則系統不允許訂票;查詢自身訂票情況包括訂單信息及金額統計,還須注意訂票信息上要求的取票期限,訂票人須在規定期限內去所在校區的票點付款取票,逾期票點工作人員將不予處理。

2、用戶小貼士模塊:在這里,用戶將了解本訂票系統的訂票流程及相關規定及用戶訂票後付款取票地點的信息等。

6. 資料庫應用系統的實現
6.1 資料庫及其表結構的建立:
利用SQLServer企業管理器創建資料庫Tickets,然後創建表:
1、學生表Book
create table Student
(Sno varchar(12) primary key, Sname varchar(20) not null,
Ssex varchar(4) not null, Spw varchar(12) not null, //密碼
Sadm varchar(40) not null, //學院
Sdept varchar(30) not null, Sclass numeric(4) not null,
Stel varchar(12) not null, //電話
Semail varchar(50) not null, Shcity varchar(30) not null //所在地
);
2、車票信息表Ticket
create table Ticket
(Tno varchar(20) primary key, //車次號
Startcity varchar(30) not null, Starttime varchar(20) not null,
Endcity varchar(100) not null, Endtime varchar(20) not null,
Ttype varchar(20) CHECK (Ttype IN('硬座','軟座','硬卧','軟卧')),
Tickets int not null //票數
);
3、車次站次信息表Citysite
create table Citysite
(Cityno numeric(8) identity(1,1), //票點號
Tno varchar(20), City varchar(100),
Tprice decimal not null, //票價
primary key (Cityno,Tno),
foreign key (Tno) references Ticket(Tno) on delete cascade
)
4、訂票單表Book
create table Book
(Bno numeric(8) identity(1,1) primary key, Sno varchar(12),
Maketime datetime not null, judge int,
foreign key (Sno) references Student(Sno),);
5、訂票詳細信息表Bookno
create table Bookno
(ID numeric(8) identity(1,1) primary key,
Bno numeric(8), Tno varchar(20), City varchar(100),
Booktime varchar(20) not null, Ticketnums int not null,
Price decimal not null, //票價
Pickdate datetime not null, foreign key (Tno) references Ticket(Tno),
foreign key (Bno) references Book(Bno));
6、操作員表Operater
create table Operater
(Adname varchar(20) primary key, //登錄用戶名
Adpw varchar(12) not null, //登錄密碼
Opname varchar(20) not null, //員工真實姓名
Opsex varchar(4) not null, Optel varchar(12) not null,
Opemail varchar(50) not null);
7、訂票點表Ticketsite
create table Ticketsite
(Siteno numeric(8) primary key identity, //票點號
Adname varchar(20), // 票點主任登錄名
Sitetel varchar(12) not null, Siteaddr varchar(40),
foreign key (Adname) references Operater(Adname));
//為安全起見,學校各校區訂票點內容的添加要以直接輸入資料庫的方式進行
insert into Ticketsite(Adname,Sitetel,Siteaddr) values('linyp','870432','龍洞校區行政樓205')
insert into Ticketsite(Adname,Sitetel,Siteaddr) values('admin','87084432','大學城校區E區205')
6.2 創建表的相關視圖:
1、創建V_Book視圖,得到對於某種車票的訂票人數和訂票張數
create view V_Book(Tno,stu_no,sumticket)
as
select Tno,count(distinct Sno),sum(Ticketnums) from Bookno,Book
where Bookno.Bno=Book.Bno group by Tno
2、創建W_Book視圖,得到對於所有訂票學生的人數和訂票總張數
create view W_Book(stu_nums,sumtickets)
as select count(distinct Sno),sum(Ticketnums) from Bookno,Book
where Bookno.Bno=Book.Bno
3、創建P_Book視圖,得到對於已付款取票的人數和車票總張數
create view P_Book(cout_no,cout_nums)
as select count(distinct Sno),sum(Ticketnums) from Bookno,Book
where Bookno.Bno=Book.Bno and judge=1
4、創建M_Book視圖, 得到對於某一訂票的總金額
create view M_Book(Allprice)
as select sum(Tprice*Ticketnums) from Book,Bookno,Citysite
where Bookno.Bno=Book.Bno and Bookno.Tno=Citysite.Tno and Bookno.City=Citysite.City
6.3 各表關系圖,

易知表Ticket與表Citysite之間是父表與子表的關系:

表Book與表Bookno之間也是父表與子表的關系:

它們之間都是父表對子表的一對多的關系。
根據表之間的結構關系圖,可以得出各表的完整性約束條件如下圖:
表名 主鍵列名 外鍵
外鍵列名 參照表
Student Sno 無
Ticket Tno 無
Citysite Cityno Tno Ticket
Book Bno Sno Student
Bookno ID Bno,Tno Book,Ticket
Operater Adname 無
Ticketsite Siteno Adname Operater

6.4 數據輸入:利用系統錄入數據,如下圖為各表內容:

6.5 模塊實現:
本次系統設計我前台採用JSP技術,後台採用SQL Server 2000,操作系統採用Windows XP。
JSP(JavaServer Pages)是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標准,它是在傳統的網頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件(*.jsp)。JSP具備了Java技術的簡單易用,完全的面向對象,具有平台無關性且安全可靠,主要面向網際網路的所有特點。

『柒』 怎麼用資料庫語言做訂票系統

包含的表主要有
列車(列車編號,車種,始發站,始發站,終到站,發時,到時,里程)
車站(車站id,車站名)
經過(列車編號,車站名,站次,里程,到時,發時)
車票(車票編號,車次,發站,到站,發站次,到站次,發時,到時,座位類型,座位號,車票日期,票價)
主要是這四個表,查詢插入操作有些復雜不過都能完成
詳細看列車票務系統資料庫課程設計說明書,文庫里有

『捌』 資料庫管理系統怎麼做譬如說火車票訂票管理系統!

設計資料庫,
開發前台界面,連接資料庫數據(查詢、插入、增加,更新等操作)

熱點內容
源碼種類 發布:2024-10-09 11:20:35 瀏覽:363
android圖片xml 發布:2024-10-09 11:11:08 瀏覽:531
交換機基本配置與遠程登錄怎麼做 發布:2024-10-09 11:02:06 瀏覽:674
伺服器遠程地址怎麼看 發布:2024-10-09 10:43:24 瀏覽:140
隱身訪問訪客會增加嗎 發布:2024-10-09 10:38:29 瀏覽:209
vb代碼如何編譯 發布:2024-10-09 10:22:59 瀏覽:914
sql無效的連接 發布:2024-10-09 10:19:31 瀏覽:70
javaif條件 發布:2024-10-09 10:01:04 瀏覽:958
安卓愛思助手怎麼改戰區 發布:2024-10-09 09:25:29 瀏覽:181
安卓手機用什麼軟體傳軟體到蘋果 發布:2024-10-09 09:11:02 瀏覽:371