数据库设计文档.docx

上传人:b****6 文档编号:4287283 上传时间:2022-11-28 格式:DOCX 页数:15 大小:104.62KB
下载 相关 举报
数据库设计文档.docx_第1页
第1页 / 共15页
数据库设计文档.docx_第2页
第2页 / 共15页
数据库设计文档.docx_第3页
第3页 / 共15页
数据库设计文档.docx_第4页
第4页 / 共15页
数据库设计文档.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

数据库设计文档.docx

《数据库设计文档.docx》由会员分享,可在线阅读,更多相关《数据库设计文档.docx(15页珍藏版)》请在冰豆网上搜索。

数据库设计文档.docx

数据库设计文档

 

宁波工程学院

 

数据库课程设计报告

 

(2004—2005学年第一学期)

 

系(分院)电子技术系

专业班级计02-6

学生姓名陈林

指导教师彭其美

实习地点软件工程实验室

 

数据库设计文档

一、系统需求分析报告(数据流图、数据词典和功能分析)

系统应具有售票、查询、管理和维护等功能,系统管理员可以进行对车次的更改、票价的变动及调度功能,票价的修改可以通过修改运价来进行,车次调度可通过对发车时刻表的修改来进行,维护功能即可对表进行修改。

1、功能需求

经过分析后确定系统应具备以下功能:

(1)、售票功能

1销售车票

2预订车票

3退票

(2)、查询功能

1车次查询

2时刻表查询

3售票情况查询

(3)、调度功能

1运价修改

2车辆修改

3终点站修改

4车次修改

(4)、维护功能

1车票表修改

2预订车票表修改

3退票表修改

4密码修改

(5)、统计功能

1售票统计

2报表打印

2、数据流图

使用结构化分析方法,确定系统的数据主要是运价、车次、终点站名、发车时间和车票,对数据的操作主要有运价修改、车次修改、终点站修改、发车时间修改、售票及打印,可以确定系统的处理逻辑和流程,得到如下所示的系统数据流图。

 

3、数据字典:

经过分析可以得到以下数据流条目:

车次表=车辆编号+车型+座位数

终点站名表=站名+里程

运价表=车型+运价

发车时刻表=车次+车辆编号+站名+发车时间+检票口

已售车票表=票号+乘车日期+车次+站名+发车时间+票价+全半价+工号+退票否

预订车票表=预订号+乘车日期+车次+站名+发车时间+车型+票价+客户名称+订票数量

退票表=票号+退票时间+票价+应退款

售票员编号=工号+姓名

车辆编号=6{数字}6

车次=4{字符}5

车型=1{字符}8

座位数=2{数字}2

检票口=1{数字}2

站名=1{字符}10

里程=1{数字}5

运价=1{数字}6

发车时间={时间}

乘车日期={日期}

票号=7{数字}7

票价=1{数字}5

全半价=2{字符}2

退票否={T|F}

预订号=4{数字}4

客户名称=6{字符}20

订票数量=1{数字}2

退票时间={日期时间}

应退款=1{数字}5

工号=3{字符}3

姓名=4{字符}8

二、数据逻辑结构设计(E-R图、关系模式和数据库结构)

1、E—R图

 

 

 

主键:

外键:

2、关系模式

车辆(车辆编号,车型,座位数)

目标站名(站名,里程)

发车时刻表(车次,站名,车辆编号,发车时间,检票口)途径(车次,站名)

车票(票号,乘车日期,车次,站名,票价,全半价,座位号,工号,退票否)

预订(预订号,车次,站名,乘车日期,顾客名称,票数)

退票(票号,退票时间,票价,应退款)

售票员(工号,姓名)

运价(车型,价格)

3、数据库结构

车辆表:

字段名

类型

长度

小数点

允许空

主/外键

车辆编号

Int

4

车型

Varchar

8

座位数

smallInt

2

目标站名:

字段名

类型

长度

小数点

允许空

主/外键

站名

Varchar

10

里程

Int

4

发车时刻表:

字段名

类型

长度

小数点

允许空

主/外键

车次

Varchar

5

站名

Varchar

10

车辆编号

Int

4

发车时间

Datetime

8

检票口

smallInt

2

途径表:

字段名

类型

长度

小数点

允许空

主/外键

车次

Varchar

5

站名

Varchar

10

车票表:

字段名

类型

长度

小数点

允许空

主/外键

票号

Int

4

乘车日期

Datetime

8

车次

Varchar

5

站名

Varchar

10

票价

Float

8

全半价

Char

2

座位号

smallInt

2

工号

Char

3

退票否

Char

1

预订表:

字段名

类型

长度

小数点

允许空

主/外键

预订号

Int

4

车次

Varchar

5

站名

Varchar

10

乘车日期

Datetime

8

顾客名称

Varchar

20

票数

smallInt

2

退票表:

字段名

类型

长度

小数点

允许空

主/外键

票号

Int

4

退票时间

Datetime

8

票价

Float

8

应退款

Float

8

售票员表:

字段名

类型

长度

小数点

允许空

主/外键

工号

Char

3

姓名

Char

8

运价表:

字段名

类型

长度

小数点

允许空

主/外键

车型

Varchar

8

价格

Float

8

三、软件结构设计(画出系统软件结构图)

 

四、程序模块设计与调试(设计和调试各程序模块,提交主要的程序段)

用户登入用户名和密码校对:

PrivateSubCmdok_Click()

Dimusername1AsString,username2AsString

username1=Text1.Text

IfOption1.ValueThen

SetText3.DataSource=Adodc1

Text3.DataField="口令"

Adodc1.Recordset.MoveFirst

Ifusername1<>""Then

username2="用户名='"&username1&"'"

Adodc1.Recordset.Findusername2

IfAdodc1.Recordset.EOFThen

MsgBox"用户名错误请重输",16,"错误"

Else

IfText2.Text<>Text3.TextThen

MsgBox"密码错误请重输",16,"错误"

Text2.Text=""

Else

MDIForm1.Show

Form1.Hide

EndIf

EndIf

EndIf

Else

IfOption2.ValueThen

SetText3.DataSource=Adodc2

Text3.DataField="口令"

Adodc2.Recordset.MoveFirst

Ifusername1<>""Then

username2="工号='"&username1&"'"

Adodc2.Recordset.Findusername2

IfAdodc2.Recordset.EOFThen

MsgBox"用户名错误请重输",16,"错误"

Else

IfText2.Text<>Text3.TextThen

MsgBox"密码错误请重输",16,"错误"

Text2.Text=""

Else

MDIForm1.Show

Form1.Hide

EndIf

EndIf

EndIf

EndIf

EndIf

EndSub

当选中车次显示当前座位号和剩余票数,及拒售离开车只有五钟的车票

PrivateSubDataGrid1_Click()

DimccAsString,sumAsInteger

sum=0

Adodc3.Recordset.MoveFirst

Adodc4.Recordset.MoveFirst

Adodc6.Recordset.MoveFirst

Adodc7.Recordset.MoveFirst

Adodc8.Recordset.MoveFirst

IfMonth(Date)=Combo2.TextAndDay(Date)=Combo3.TextThen

If(Hour(Text19.Text)-Hour(Now))*60+Minute(Text19.Text)-Minute(Now)<5Then

MsgBox"已接近开车,停止售票",64,"错误"

Cmdok.Visible=False

Else

Cmdok.Visible=True

EndIf

Else

Cmdok.Visible=True

EndIf

cc="车型='"&Text5.Text&"'"

Adodc3.Recordset.Findcc

cc="站名='"&Text6.Text&"'"

Adodc4.Recordset.Findcc

IfCombo4.Text="全"Then

Text2.Text=Int(Val(Text7.Text)*Val(Text8.Text)+0.5)

Else

Text2.Text=Int(Val(Text7.Text)*Val(Text8.Text)/2+0.5)

EndIf

Text2.Refresh

WhileNotAdodc8.Recordset.EOF

IfYear(Text12)=Year(Date)AndMonth(Text12)=Combo2.TextAndDay(Text12)=Combo3.TextAndText13.Text=Text9.TextAndText25.Text="F"Then

sum=sum+1

EndIf

Adodc8.Recordset.MoveNext

Wend

Text3.Text=sum+1

Adodc8.Recordset.MoveFirst

WhileNotAdodc8.Recordset.EOF

IfYear(Text12)=Year(Date)AndMonth(Text12)=Combo2.TextAndDay(Text12)=Combo3.TextAndText13.Text=Text9.TextAndText25.Text="T"Then

Text3.Text=Text17.Text

Adodc8.Recordset.MoveLast

flag="T"

Else

Adodc8.Recordset.MoveNext

EndIf

Wend

WhileNotAdodc9.Recordset.EOF

IfYear(Text22.Text)=Year(Date)AndMonth(Text22.Text)=Combo2.TextAndDay(Text22.Text)=Combo3.TextAndText23.Text=Text9.TextThen

sum=sum+Val(Text24.Text)

EndIf

Adodc9.Recordset.MoveNext

Wend

cc="车次='"&Text9.Text&"'"

Adodc7.Recordset.Findcc

cc="车辆编号='"&Text11.Text&"'"

Adodc6.Recordset.Findcc

Text4.Text=Val(Text10.Text)-sum

Text4.Refresh

EndSub

退票时当输入票号后算出应退款

PrivateSubText1_LostFocus()

DimccAsString

Adodc1.Recordset.MoveFirst

Adodc2.Recordset.MoveFirst

cc="票号='"&Text1.Text&"'"

Adodc1.Recordset.Findcc

Text3.Text=Text6.Text

Text2.Text=Now

cc="车次='"&Text7.Text&"'"

Adodc2.Recordset.Findcc

IfNotAdodc2.Recordset.EOFThen

IfMonth(Text5.Text)>Month(Text2.Text)Then

Text4.Text=Int(Val(Text6.Text)*0.1+0.5)

Else

IfMonth(Text5.Text)=Month(Text2.Text)Then

IfDay(Text5.Text)>Day(Text2.Text)Then

Text4.Text=Val(Text6.Text)-Int(Val(Text6.Text)*0.1+0.5)

Else

IfDay(Text5.Text)=Day(Text2.Text)Then

If(Hour(Text9.Text)-Hour(Text2.Text))*60+Minute(Text9.Text)-Minute(Text2.Text)>=120Then

Text4.Text=Val(Text6.Text)-Int(Val(Text6.Text)*0.1+0.5)

Else

If(Hour(Text9.Text)-Hour(Text2.Text))*60+Minute(Text9.Text)-Minute(Text2.Text)>=60Then

Text4.Text=Val(Text6.Text)-Int(Val(Text6.Text)*0.2+1)

Else

If(Hour(Text9.Text)-Hour(Text2.Text))*60+Minute(Text9.Text)-Minute(Text2.Text)<5Then

MsgBox"接近发车不能退票",16,"错误"

Form5.Hide

Else

Text4.Text=Int(Val(Text6.Text)*0.3+1)

EndIf

EndIf

EndIf

Else

MsgBox"车票过期不能退",16,"错误"

Form5.Hide

EndIf

EndIf

Else

MsgBox"车票过期不能退",16,"错误"

Form5.Hide

EndIf

EndIf

Else

MsgBox"没有该票",16,"错误"

EndIf

EndSub

五、软件使用说明书

首先通过登录界面进行登录,登录的身份分为管理员和售票员,管理员的用户名默认为:

Administrator,密码为:

123456;售票员的用户名为自己的工号,初始密码也为:

123456。

密码的修改可以通过登录后选择文件菜单→口令修改,进行密码的修改。

售票员登录后能使用的菜单有:

文件、售票、查询、统计。

1、售票菜单下有:

销售车票、预订车票、退票等功能,退票时只需输入票号即可退票。

2、查询菜单下有:

车次查询、时刻表查询、售票情况查询。

车次查询可进行浏览和输入车次查询,选中某个车次后可查看它的途径站点。

时刻表查询按时间的先后进行排列,一秒钟记录自动下移一条,同时显示该车的途径站点。

售票情况查询按站名对每班车进行排列,每一秒钟移动一条记录,同时显示总的票数和剩余的票数。

3、统计菜单有:

售票统计和报表打印。

售票统计可以按车次进行统计,列出每一个次车所卖出的票数;也可以按售票员的工号进行统计,列出每位售票员卖出的票数。

管理员登录后能使用的菜单有:

文件、查询、调度、维护、统计。

1、文件菜单、查询菜单及统计菜单与售票员的相同

2、调度菜单下有:

运价修改、车辆修改、终点站修改、车次修改。

运价修改可以修改运输的单价。

车辆修改可以进行对车辆进行添加、修改、删除。

终点站修改可以进行对终点站的添加、修改、删除。

车次修改可以进行添加、修改、删除车次实现调度。

3、维护菜单下有:

车票表修改、预订车票表修改、退票表修改、密码修改。

车票表修改、预订车票表修改和退票表修改都具有添加、删除、更新等功能。

密码修改可以对所有的售票员的口令进行修改、和删除,同时也可以进行添加,点击添加后是对售票员表添加售票员的工号和姓名,同时在售票员口令表里生成售票员的工号与初始密码123456。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1