火车订票管理信息数据库设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录
一、课题背景及意义 (1)
1.1概述....................................................................................11.2意义....................................................................................11.3数据库优势 (1)
1.4开发环境 (2)
二、需求分析 (3)
2。

1业务需求分析........................................................................32。

2功能需求 (3)
2.3数据需求 (4)
2.4性能需求 (5)
三、系统总体设计 (6)
3.1系统组成 (6)
3.2数据库设计 (7)
3.2.1概念结构设计 (7)
3。

2.2逻辑结构设计 (8)
3.3 物理结构设计……………………………………………………………9
3。

3。

1 确定数据库的存储结构……………………………………………10
3.3.2 调试分析 (10)
3。

4数据库模式定义 (20)
四、系统详细设计及实现…………………………………………………………21
4。

1模块简述 (21)
4。

2模块设计…………………………………………………………………21
五、结束语 (32)
六、参考文献 (34)
一、课题背景及意义
1.1概述
信息时代已经来临,信息处理的利器—-计算机应用于火车站售票的日常管理为火车站售票的现代化带来了从未有过的动力和机遇,为火车站票务管理领域的飞速发展提供了无限潜力。

采用计算机管理信息系统已成为火车站票务管理科学化和现代化的重要标志,给火车站票务带来了明显的经济效益和社会效益。

采用数据技术建立的管理系统不仅能提高出售/预定车票的效率,还能减少错误发生的概率,方便用户的查询订购车票.降低工作人员的工作量,避免购票人员在车站无效的等票,可以调高购买者买到票的机率,这样的作用在春运期间最为显著,因为在春运的时候车站里许多人是在无效的等票,不仅造成车站里人员管理的困难,还使本可以买到票的人无辜浪费时间在侯票上。

目前火车票的订购仅仅依靠手工操作,已现有的工作人员很难应付车票订购高峰时刻的大量数据处理问题,同时还会出现由此带来的旅客查询问题,导致火车误点情况。

本次设计拟开发一个火车票订购系统,可以降低人工操作,提高工作效率,同时方便乘客查询订票。

1.2意义
火车票订购一直是困扰我们的一个老问题,也是社会服务的一个难点,订票的查询以及车票信息的查询时期一个最基本的业务,从便面上看,这只是一个最简单的部分,但是它涉及到管理以及客户服务的多个方面,因此设计了本火车票订购系统来实现票务的查询.
1。

3数据库优势
数据库管理的特点很多,它比传统的数据管理拥有很多优点。

以下就是数据库的优势。

一、数据结构化。

所谓“整体”结构化是指在数据库中的数据不再仅仅针对某一个应用,而是面向全组织的;不仅数据内部是结构化的,而且整体也是结构化的,数据之间是有联系的。

二、数据的共享性高,冗余度低,易扩充。

数据共享可以减少数据的冗余,节约存储空间。

数据共享还能够避免数据之间的不相容性和不一致性。

三、数据独立性高。

包括物理独立性和数据的逻辑独立性。

物理的独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的。

逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。

四、
数据是由DBMS统一管理和控制的。

包含(1)数据的安全性保护(2)数据的完整性检查(3)并发控制(4)数据库恢复
1.4开发环境
工具软件利用Visio2007和SQL Sever2000数据库来开发这个火车票订购系统
二、需求分析
在构造系统时,首先从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。

这样,就把一个大的系统分解成了几个小系统,使整个系统的功能更加详细易于理解,同时易于实现系统的整体设计.本系统分为二个功能,分别是用户管理和车次/车票管理,其所能实现的功能:
1、实现用户登录、用户添加.
2、实现对车次的删除和车次基本信息的添加。

3、实现售票的基本管理。

4、实现对车次基本信息的查询。

2.1业务需求分析
从实际角度出发,对于用户要提供方便快捷的车票查询和订票服务,对于车站工作人员,则是要能够方便明朗的对车次信息进行增删修改操作和车票的订售操作,提高车次的编组效率,是车次资源得到充分利用,并可以提高车票的出售效率降低工作人员的工作量。

2.2功能需求
在数据操作界面需要有用户登录窗口和车次信息操作窗口,这需要有实现用户登录的功能和车次查询、添加、车票出售的功能。

这是火车订票系统的基本功能,只有实现了这几个功能一个火车订票系统才能开始运作,在本系统中实现了用户的登录添加和车票的基本信息操作.
功能列表
2。

3
数据需求
系统处理的对象有:
用户信息:用户名、用户密码、用户权限.
车次信息:车次号、票价、起始站、目的站、开车时间、到站时间、实时座位数. 系统处理如图:
2。

1系统底层数据流图
2.3数据字典
2。

4性能需求
为了保证系统能够长期、安全、稳定、可靠、高效的运行,本系统应该满足以下的性能需求。

1。

准确性和及时性
系统处理的准确性和及时性是系统的必要性能。

系统应能及时而且准确的根
据用户权限及所输入的信息做出响应。

由于本系统的查询功能对于整个系统的功能和性能完成举足轻重。

作为系统的很多数据来源,而车票的数量和时间又影响用户的决策活动,其准确性和及时性很大程度上决定了系统的成败.在系统开发过程中,必须采用一定的方法保证系统的准确性和及时性.
2.安全性ﻩ
网上订票系统中涉及到的数据是客运公司相当重要的信息,系统要保证用户的权限,对于车次等信息用户只享有查询服务,不得更改;系统还要提供方便的手段供系统维护人员进行数据备份、日常安全管理、以及系统意外崩溃时数据的恢复等工作。

同时系统还要保证对数据库进行及时更新,保证数据一致.
三、系统总体设计
3.1系统组成
系统开发的总体目标是实现火车票订/售票管理的系统化和自动化,保证车票售出和车次信息管理的正确无误,确保车票和车次管理的有效.在本系统中分为两个子系统,分别是用户子系统和车次信息子系统,主要任务是对用户信息、车次信息、车票信息等操作及外理。

本系统为C/S结构、运行平台为微软vc++6.0以上版本。

以及SQL Sever2000以上版本。

下图3.1为系统功能结构图:
3.1功能模块图
3.2数据库设计
3.2.1概念结构设计
概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程。

根据之前的分析,数据库应该主要的实体有用户和车票信息.
经过分析得到的实体关系图、E-R图如下:
火车票订购E-R图
3。

2。

2逻辑结构设计
逻辑结构的任务就是把概念结构设计阶段设计好的基本E—R图转化为与选用DBMS产品所支持的数据模型有相符合的逻辑结构。

将上图的E-R图转化为以下的关系模型.关系的码用横线标出。

用户(身份证号、用户名、性别、电话)
订票信息(订单号、身份证号、车号、发车时间、订购日期、订购票数)
车次(车号、发车日期、出发地、目的地、开出时刻、到达时刻、剩余票数、票价、座位类型)
以上是实体以及其属性。

查询(身份证号、车号、发车日期、查询方式)
订票(订单号、订票方式)
退票(订单号、退票方式)
以上是联系及其属性.
火车站网上订票系统数据库中各个表格的设计结果如表 2.1——表2.6所示。

每个表格表示在数据库中的一个表。

表2-1车次信息
表 2-5
表2-6查询表
3.3物理结构设计
数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库系统。

对于数据库查询事务,需要得到如下信息:
●查询的关系。

通过连接查询可以将车次和用户之间互联;通过订票和退
票可以将用户和订票信息互联,从而将每个表联系在一起,构成一个相
关联的数据库。

●查询条件所涉及到的属性。

查询涉及到的属性是(身份证号、车号、发
车日期);订票涉及到的属性是(订票号);退票所涉及到的属性(订票
号).
●连接条件所涉及到的属性(身份证号、订单号、车号-发车日期、订单
号).
对于数据更新,需要得到如下信息:
●被更新的关系。

●每个关系上的更新操作条件所涉及的属性.
●修改操作要改变的属性值。

需要注意的是,数据库上运行的事务会不断的变化、增加或减少,以后需要根据上述设计信息的变化调整数据库的物理结构。

3.3。

1 确定数据库的存储结构
1、确定数据的存放位置
存放于C盘,并且分配2M的空间,而且文件的存储空间可以随着数据库的增大而增大,即文件增长不受限制。

文件的增长按百分比进行,增长百分比为10%。

2、确定系统配置
数据库可以公共访问,可以打开任意个数据库对象,内存分配高于2M的内存空间.
3。

3.2调试分析
在原有系统的数据有一小部分已经输入到了数据库后,就可以开始对数据库系统进行联合调试,这又成为数据库的试运行。

运行前先要对数据库进行备份,如下:
再进行简单的数据库操作,如:
建立基本表
SQL语句为:
create table 订票信息
(订单号 char(10) primary key,
身份证号 char(20),
车号char(10),
发车日期 datetime,
订购日期datetime,
订购票数 int,
总价int,
foreign key (身份证号) references 用户(身份证号),
foreign key(车号) references 车次(车号),
foreignkey (发车日期) references车次(发车日期));运行结构截图:
其余的建表类似,在此不一一列举。

修改基本表
①向用户表增加“地址”列,数据类型为字符串型
SQL语句为:alter table 用户 add 地址char(20);
运行结构截图:
②将用户表中的电话的数据类型改为变长字符串型
SQL语句为:alter table 用户alter column 电话varchar(20);运行结果截图:
数据查询
①查询身份证号为370782198911273462的个人信息,SQL语句为:
select*
from 用户
where 身份证号=370782198911273462;
②查询全体用户的身份证号,SQL语句为:
select 用户名,身份证号
from 用户;
运行结果截图:
③查询车票价格低于100元的车次:
SQL语句为:
select 车号
from 车次
where 票价〈100;
运行结果截图为:
④查询王姓客户的信息
SQL语句为: select *
from用户
where 用户名 like '张%';运行结果截图:
⑤按总票价的升序将订单号排列SQL语句为:
select 订单号,总价
from 订票信息
order by 总价asc;
运行结果截图:
⑥查询从北京出发的所有车次的总票价
SQL语句为:
select sum(票价)
from车次
where 出发地=’北京';
运行结果截图:
⑦求乘坐车号大于一次的车号
SQL语句为:
select 车号
from 订票信息
group by车号
having count(*)〉=2;
运行结果截图:
⑧连接查询 :查询身份证号为216972195412194262乘客的车次信息SQL语句为:
select车次.*
from用户,车次,查询
where 用户.身份证号=查询。

身份证号 and
车次.车号=查询.车号 and
车次。

发车日期=查询.发车日期and
用户.身份证号=’216972************’;
⑨嵌套查询:查询与李明同乘一列火车的旅客的身份证号
SQL语句:
select身份证号
from 订票信息
where 车号 in
(select 车号
from 订票信息,用户
where 订票信息。

身份证号=用户.身份证号 and
用户名='李明');
数据更新
①插入数据
向车次表添加一组数据:“T26”、“2010-12—15”、“青岛”、“北京”、“22:10”、“次日06:54"、“硬座"、42、118,SQL语句为:
insert
into 车次
values (’T26’,2010-12-15,'青岛','北京',
’22:10','次日06:54',42,118,’硬座’);
运行结构截图:

②修改数据
由于雪天路滑将发车日期为2010-12—13车次为T25的到达时可改为次日09:20
SQL语句为:
update车次
set 到达时刻=’次日09:20’
where 车号='T25' and
发车日期='2010-12-13’;
③删除数据
乘客348742196610025432由于个人原因不能乘坐当日车次,他选择退票,请为其删除信息记录.
SQL语句为:
delete
from用户
where 身份证号='348742196610025432';
delete
from 订票,订票信息
where 订票.订单号=订票信息.订单号and
身份证号=’348742196610025432';
运行结果截图:
运行结果中已经不含乘客348742196610025432的信息了视图
①建立选择用网络查询车次用户的视图。

SQL语句为:
create view net
as
select 身份证号
from查询
where 查询方式='网络’;
②更新视图
将身份证号为370782198911273462的乘客改为370782198911277611 SQL语句为:
update net
set 身份证号=’37078219891127611’;
③删除视图
SQL语句为:
drop view net;
总之,视图的操作与表的操作基本一致,在此不必赘述。

经过一系列验证数据库的调试正常,可以进行数据库的操作.
3。

4数据库模式定义
列名数据类型取值约束可否为
说明

Trainno Char(30) 可车次号
Char(30)可起始站
Startstatio

Endstatio
Char(30) 可目的站

Char(30) 可发车时间
Starttim
e
Arrivetime Char(30) 可到站时间Price Money(8)可票价
Availab
Int(4)可实时座位数leseat
四、系统详细设计及实现
4.1模块简述
本火车管理系统重要的所有模块主要是分为用数据库的类三个部分,下面对三个个部分进行再分类,共有9个模块。

T——8TICKETSE
LL
连接模块T——9 ADOConn 连接数据库4。

2模块设计
下面给出模块的背景,设计思路,算法,界面以及关键代码,比较简单的模块就仅给界面设计以及算法设计,比较复杂的模块会给出相应的数据库有关触发器,存储过程和视图的设计。

而本系统重的模块主要有一下几个:
1、用户模块
User模块是公共模块,车次信息和连接模块也用到User,模块.user_类是为系统用户表创建的一个类:要利用ADO访问数据库,类的成员变量对应表的列,类的成员函数对应表的操作。

但本系统不是为每一个表都创建了类.
1、其页面设计:
给用户一个好的登录界面,提供友善的人机界面,为用户的使用提供方便。

同时也是为后面用户操作其他功能提供了权限依据,避免出现用户权限的不确定造成整个系统不同模块的错误操作,使整个订票业务遭到破坏。

用户模块代码:
void USER::OnOK()

ﻩ// TODO: Addextra validationhere
ﻩUpdateData(1);
if(m_user==”"||m_psd=="”)
ﻩ{
ﻩﻩMessageBox("请填好用户名或密码!");

ﻩelse
{ADOConn adoconn;
adoconn.OnInitADOConn();//调试
ﻩ_bstr_t sqltemp;
ﻩsqltemp="select* from aaaaa where username like '"+m_user+”%'and password like '"+m_psd+"%'”;
ﻩ_RecordsetPtr m_precordset;
ﻩm_precordset=adoconn。

GetRecordSet(sqltemp);
ﻩadoconn。

ExecuteSQL(sqltemp);
if(m_precordset-〉adoEOF==0)//记录集没有移动到最后
ﻩ{
MessageBox("登入成功");
GetDlgItem(ID_SEARCH)->EnableWindow(FALSE);
}
if(m_precordset->adoEOF!=0)
ﻩ{
//GetDlgItem(ID_ADDUSER)—〉EnableWindow(FALSE);

ﻩadoconn。

ExitConnect();
ﻩ//CDialog::OnOK();

}
2、车次信息模块
车次添加实现了车次能跟上需求的变化,使得系统管理员能根据需要添加车次,让售票员能为购买者提供优质的服务。

车次添加程序:
void INSERT::OnOK()
{
// TODO: Add extra validation here
ﻩUpdateData(1);
ﻩif(m_Trainno=="" &m_Startstation==”” &m_Endstation==”" & m_Starttime==”” &m_Arrivetime=="" &m_Price ==”")
{
ﻩﻩMessageBox("请完善空格");
}
else
ﻩ{
ﻩﻩADOConnadoconn;
adoconn.OnInitADOConn();//调试
_bstr_t sqltemp;
sqltemp=”insert intosalevalues('”+m_Trai
nno+"','"+m_Startstation+”’,'"+m_Endstation+"','"+m_Starttime+"','"+m_Arrivetime+"',20,'”+m_Price+"')”;
ﻩ//sqltemp=”insert into employees values('”+employee_id+”',’"+employee_name+"','"+sex+"',’"+department _id+"',’"+title_id+”','"+work_time+"') ";
ﻩ//(trainno,startstation,endstation,starttime,arriveti me,availableseat,price)
ﻩ//_RecordsetPtr m_precordset;
//m_precordset=adoconn。

GetRecordSet(sqltemp);
ﻩadoconn。

ExecuteSQL(sqltemp);
ﻩﻩMessageBox(”插入成功");
ﻩadoconn.ExitConnect();
ﻩﻩCDialog::OnOK();
ﻩ}ﻩ

3、删除车次
删除车次的操作是对添加车次操作的补充,有了删除操作才能让车次添加车次顺利的执行。

删除车次代码:
void DELETENO::OnOK()

ﻩ// TODO:Add extra validation here
ﻩUpdateData(1);
ﻩADOConn adoconn;
ﻩadoconn.OnInitADOConn();//调试
_bstr_t sqltemp;
ﻩsqltemp=”delet e fromsale where trainno=’"+m_Trainno +"’";
//_RecordsetPtr m_precordset;
//m_precordset=adoconn.GetRecordSet(sqltemp);
adoconn.ExecuteSQL(sqltemp);
ﻩMessageBox(”删除成功");
ﻩadoconn.ExitConnect();
ﻩ//CDialog::OnOK();
}
4、车票出售/预定
在这个部分模块中可以实现对不同车次车票的出售/预定功能,并且在页面对话框中能知道车次的实时信息,以便确定该车次的车票还能不能向外面出售或预定。

车票出售/预定代码:
void TICKETSELL::DoDataExchange(CDataExchange* pD X)
{
ﻩCDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(TICKETSELL)
ﻩ// NOTE: the ClassWizardwill addDDX and DDV call shere
//}}AFX_DATA_MAP

BEGIN_MESSAGE_MAP(TICKETSELL, CDialog)
ﻩ//{{AFX_MSG_MAP(TICKETSELL)
ﻩ// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
5、车次查询
此模块是面向用户使用的,用户在购买或预定车票前可以通过该对话框页面实现不同车次在不同站之间的详细查询,可提高用户得到票的概率,提高用户在购买或预定票的效率.
车次查询:
void SEARCH::OnOK()

ﻩUpdateData(1);
int j=0;
ﻩintnItem;
ﻩ//清原来的列表纪录
ADOConn adoconn;
ﻩadoconn。

OnInitADOConn();
m_list.DeleteAllItems();
_bstr_t sql;
ﻩ// 利用数据库,重新填充纪录
// sql="execsearch_by_employeename’”+m_name+”'”;
//sql=”exec search_by_employeename '"+m_name+"%'”;
//sql="select *from employeejiansuo where employee _name like'"+m_name+"%'";

ﻩ//根据记录集,填充列表框
if(m_Startstation =="” && m_Endstation ==”" &&m_Trainno =="")
ﻩ{
ﻩMessageBox(”请填写车次或起始和终点站”);
ﻩ}
else if( m_Startstation == "" && m_Endstation =="” &&m_Trainno != ”")

ﻩsql = "select*from sale wheretrainno='"+m_Trainno+”'";
_RecordsetPtr m_precordset;
m_precordset=adoconn。

GetRecordSet(sql);
ﻩﻩwhile(m_precordset—〉adoEOF==0)//记录集没有移动到最后
ﻩﻩ{
ﻩnItem=m_list。

InsertItem(j,(char *)(_bstr_t)m_precordset—>GetCollect("trainno"));
m_list.SetItemText(nItem,1,(char *)(_bstr_t)m_precordset—〉GetCollect("startstation"));
ﻩﻩm_list.SetItemText(nItem,2,(char*)(_bstr_t)m_precordse t—〉GetCollect("endstation"));
ﻩm_list.SetItemText(nItem,3,(char *)(_bstr_t)m_pre
cordset->GetCollect(”starttime"));
ﻩﻩm_list。

SetItemText(nItem,4,(char *)(_bstr_t)m_precordset -〉GetCollect("arrivetime"));
m_list.SetItemText(nItem,5,(char *)(_bstr_t)m_pr ecordset->GetCollect("availableseat"));
m_list。

SetItemText(nItem,6,(char *)(_bstr_t)m_precor dset—>GetCollect("price”));
ﻩ//下移一条记录
ﻩm_precordset->MoveNext();
ﻩ}
ﻩﻩadoconn.ExitConnect();
}
else if(m_Startstation != "” && m_Endstation != "”&& m_Trainno !="" )
{ﻩ
ﻩsql = ”select * from sale where trainno='"+m_Trainno+”' a nd startstation=’"+m_Startstation+"' and endstation='"+m_Endstation+"’";
_RecordsetPtr m_precordset;
m_precordset=adoconn。

GetRecordSet(sql);
while(m_precordset—>adoEOF==0)//记录集没有移动到最后
{
nItem=m_list.InsertItem(j,(char*)(_bstr_t)m_precordset->GetCollect("trainno”));
ﻩﻩm_list。

SetItemText(nItem,1,(char*)(_bstr_t)m_precordset->GetCollect("startstation"));
m_list。

SetItemText(nItem,2,(char *)(_bstr_t)m_precordset—〉GetCollect(”endstation"));
ﻩm_list.SetItemText(nItem,3,(char *)(_bstr_t)m_precord set->GetCollect(”starttime"));
ﻩﻩm_list。

SetItemText(nItem,4,(char *)(_bstr_t)m_precordset ->GetCollect(”arrivetime"));
m_list.SetItemText(nItem,5,(char *)(_bstr_t)m_pre cordset—〉GetCollect("availableseat”));
ﻩﻩm_list.SetItemText(nItem,6,(char *)(_bstr_t)m_precord set-〉GetCollect("price"));
ﻩ//下移一条记录
m_precordset—〉MoveNext();
ﻩ}
adoconn.ExitConnect();

ﻩelse if(m_Startstation != "" && m_Endstation != ”" && m_Trainno == ”")
ﻩ{
ﻩsql = "select * from sale where startstation='”+m_Startstation+"' and endstation=’”+m_Endstation+"'";
_RecordsetPtr m_precordset;
ﻩm_precordset=adoconn.GetRecordSet(sql);
while(m_precordset->adoEOF==0)//记录集没有移动到最后ﻩ{
nItem=m_list.InsertItem(j,(char *)(_bstr_t)m_precordse t-〉GetCollect(”trainno"));
m_list。

SetItemText(nItem,1,(char *)(_bstr_t)m_precordset->GetCollect("startstation"));
ﻩﻩm_list.SetItemText(nItem,2,(char *)(_bstr_t)m_precordset—>GetCollect(”endstation"));
ﻩﻩm_list.SetItemText(nItem,3,(char *)(_bstr_t)m_precords et->GetCollect("starttime"));
ﻩﻩm_list.SetItemText(nItem,4,(char *)(_bstr_t)m_precord set—>GetCollect(”arrivetime"));
ﻩm_list.SetItemText(nItem,5,(char *)(_bstr_t)m_prec ordset—>GetCollect(”availableseat"));
ﻩm_list.SetItemText(nItem,6,(char*)(_bstr_t)m_pr ecordset-〉GetCollect("price”));
//下移一条记录
ﻩﻩm_precordset—>MoveNext();
ﻩ}
//ﻩCDialog::OnOK();
adoconn.ExitConnect();

else
{
MessageBox("请完善对话框”);
ﻩ}
}
五、结束语
经过近三周的课程设计,我们学到了很多东西。

在以前我们没有亲手建立过数据库,在这一实践中我们学习到了数据库的建立方法和通过MFC建立数据库模块的技巧.虽然说过程的艰难的,但是学习到的东西让我们感到很欣慰.在MFC 建立数据库框架的时候,遇到了一个很麻烦的问题就是不知道怎样设定函数与数据库文件之间的联系,在添加函数程序时还需要考虑到MFC和数据库文件的连接问题.在设置连接方面的确是这一次设计数据库的一大难点,看别人做的程序也不怎么懂,在同学的帮助下最终把程序弄全,能够实现基本的功能。

但是在最终调试时用户的登录还是出现了一个问题,就是登录后出现一个错误,虽然能登录成功,但是点击确定按钮后却出现一个错误,最终发现是在设定用户表是出现了问题,但是我不知道怎样改。

另外在整个结构中,数据库的的权限没有设定好,使得售票员和管理员的权限在运行窗口中没有体现出来;且在售票员没有登录时也能进行车次的查询、添加和售票活动。

可以说整个数据库并没有完全实现,漏洞比较多,只能实现基本的增删改查的功能。

在用户登录窗口出现的错误是在登录成功后点击确定键的时候,出现一个指向物理内存的错误使得登录功能没能最终实现。

另外在开始时用户和车次添加的功能也没有实现,经过检查发现原来在定义用户表的时候出现了错误,刚开始定义的表名是user而程序中定义的用户表名是iforuser,这样造成数据库和程序之间不能连接,最后我把他们全部改为aaaaa的表名。

在车次添加这一功能模块中,我们遇到的问题是不能添加车次的详细信息,经过详细阅读发现是在设置数据库车次信息表的连接时注释了一句程序,使得结果发生了巨大的变化。

在这个系统中不能实现通过车站来查询车次的基本信息,并且没有退票服务功能,因此整个系统的功能并没能满足火车订票系统的基本需求,只是实现了增删改查功能,对于其他辅助性的功能没有实现。

因为按照正常的订票系统需要满足退票的需求,还有不同等级车票的设定及出售预定。

在整个设计过程中,SQL文件中表给属性的设定也是一个比较容易出问题的地方,第一次运行的时候用户的添加和车次添加没能实现,说数据库类型无效.后来经过同学的帮忙修改我发现了问题的说在,原来是属性值的设定出现了问题
使得数据库与程序不能很好的连接起来.还有一个局限就是座位数是系统设定的,在添加车次的同时不能对座位数进行设定,这样就不能跟上实际请况的变化;不能根据车站来查询车次的信息,只能根据车次号来查询,这样在使用时会很不方便;同时在存储和触发器方面没有进行开发编程.
六、参考文献
[1]数据库原理及应用教程苗雪兰、刘瑞新、宋歌机械工业出版社
[2]数据库原理丁宝康经济科学出版社ﻫ[3]软件工程陆丽娜
经济科学出版社
[4] 面向对象与可视化程序设计(第二版)黄维通清华大学出版社。

相关文档
最新文档