资源描述
华科学院数据库课程设计目 录一、课题背景及意义11.1概述11.2意义11.3数据库优势11.4开发环境2二、需求分析32.1业务需求分析32.2功能需求3 2.3数据需求42.4性能需求5三、系统总体设计63.1系统组成63.2数据库设计73.2.1概念结构设计73.2.2逻辑结构设计83.3 物理结构设计 93.3.1 确定数据库的存储结构103.3.2 调试分析10 3.4数据库模式定义20四、系统详细设计及实现214.1模块简述214.2模块设计21五、结束语32 六、参考文献34一、课题背景及意义1.1概述 信息时代已经来临,信息处理的利器计算机应用于火车站售票的日常管理为火车站售票的现代化带来了从未有过的动力和机遇,为火车站票务管理领域的飞速发展提供了无限潜力。采用计算机管理信息系统已成为火车站票务管理科学化和现代化的重要标志,给火车站票务带来了明显的经济效益和社会效益。采用数据技术建立的管理系统不仅能提高出售/预定车票的效率,还能减少错误发生的概率,方便用户的查询订购车票。降低工作人员的工作量,避免购票人员在车站无效的等票,可以调高购买者买到票的机率,这样的作用在春运期间最为显著,因为在春运的时候车站里许多人是在无效的等票,不仅造成车站里人员管理的困难,还使本可以买到票的人无辜浪费时间在侯票上。目前火车票的订购仅仅依靠手工操作,已现有的工作人员很难应付车票订购高峰时刻的大量数据处理问题,同时还会出现由此带来的旅客查询问题,导致火车误点情况。本次设计拟开发一个火车票订购系统,可以降低人工操作,提高工作效率,同时方便乘客查询订票。1.2 意义火车票订购一直是困扰我们的一个老问题,也是社会服务的一个难点,订票的查询以及车票信息的查询时期一个最基本的业务,从便面上看,这只是一个最简单的部分,但是它涉及到管理以及客户服务的多个方面,因此设计了本火车票订购系统来实现票务的查询。1.3数据库优势数据库管理的特点很多,它比传统的数据管理拥有很多优点。以下就是数据库的优势。一、数据结构化。所谓“整体”结构化是指在数据库中的数据不再仅仅针对某一个应用,而是面向全组织的;不仅数据内部是结构化的,而且整体也是结构化的,数据之间是有联系的。二、数据的共享性高,冗余度低,易扩充。数据共享可以减少数据的冗余,节约存储空间。数据共享还能够避免数据之间的不相容性和不一致性。三、数据独立性高。包括物理独立性和数据的逻辑独立性。物理的独立性是指用户的应用程序与存储在磁盘上的数据库中的数据是相互独立的。逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的。四、数据是由DBMS统一管理和控制的。包含(1)数据的安全性保护(2)数据的完整性检查(3)并发控制(4)数据库恢复1.4开发环境工具软件利用Visio2007和SQLSever2000数据库来开发这个火车票订购系统二、需求分析在构造系统时,首先从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。这样,就把一个大的系统分解成了几个小系统,使整个系统的功能更加详细易于理解,同时易于实现系统的整体设计。本系统分为二个功能,分别是用户管理和车次/车票管理,其所能实现的功能:1、 实现用户登录、用户添加。2、 实现对车次的删除和车次基本信息的添加。3、 实现售票的基本管理。4、 实现对车次基本信息的查询。2.1业务需求分析从实际角度出发,对于用户要提供方便快捷的车票查询和订票服务,对于车站工作人员,则是要能够方便明朗的对车次信息进行增删修改操作和车票的订售操作,提高车次的编组效率,是车次资源得到充分利用,并可以提高车票的出售效率降低工作人员的工作量。2.2功能需求 在数据操作界面需要有用户登录窗口和车次信息操作窗口,这需要有实现用户登录的功能和车次查询、添加、车票出售的功能。这是火车订票系统的基本功能,只有实现了这几个功能一个火车订票系统才能开始运作,在本系统中实现了用户的登录添加和车票的基本信息操作。 功能列表编号 功能名称 功能说明11用户登录用户输入用户名和密码登录系统12用户添加增加用户和对所添加的用户权限进行设定2. 1添加车次添加车次的基本信息22删除车次删除车的基本信息31售票对车票销售/预定的操作41车次查询对车次基本信息的查询2.3数据需求系统处理的对象有:用户信息:用户名、用户密码、用户权限。车次信息:车次号、票价、起始站、目的站、开车时间、到站时间、实时座位数。系统处理如图:用户查询、售票、增删车次登陆添加车次、车票管理登记帐火车预定售票系统登记帐登陆添加数据处理数据登陆通知处理通知添加用户通知2.1系统底层数据流图用户车票查询、预定、出售添加删除处理 车票登记帐车次基本信息登记帐车票处理通知车次信息处理通知车票数据添加删除数据2.2用户系统与车次信息系统间数据流图图 数据项名数据项含义存储结构IDC-1username用户名Char(30)IDC-2Password登录密码Char(30)IDC-3Radio用户权限Char(30)IDC-4Trainno车次号Char(30)IDC-5Price票价Money(8)IDC-6Availableseat座位数Int(4)IDC-7Startstation起始站Char(30)IDC-8Endstation目的站Char(30)IDC-9Starttime发车时间Char(30)IDC-10Arrivetime到站时间Char(30) 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图如下: 车次信息车号出发地目的地发车日期开出时间到达时刻座位类型剩余票数票价查询用户信息订票退票订票信息身份证号车号订单号发车日期订购日订购票数总价退票方式查询方式身份证号用户名性别电话订票方式nm11n 火车票订购E-R图3.2.2逻辑结构设计逻辑结构的任务就是把概念结构设计阶段设计好的基本E-R图转化为与选用DBMS产品所支持的数据模型有相符合的逻辑结构。将上图的E-R图转化为以下的关系模型。关系的码用横线标出。用户(身份证号、用户名、性别、电话)订票信息(订单号、身份证号、车号、发车时间、订购日期、订购票数)车次(车号、发车日期、出发地、目的地、开出时刻、到达时刻、剩余票数、票价、座位类型)以上是实体以及其属性。查询(身份证号、车号、发车日期、查询方式)订票(订单号、订票方式)退票(订单号、退票方式)以上是联系及其属性。火车站网上订票系统数据库中各个表格的设计结果如表2.1表2.6所示。每个表格表示在数据库中的一个表。 表2-1车次信息字段名数据类型是否可空说明车号char(10)NOT NULL(主键)出发地char(20)NOT NULL目的地char(20)NOT NULL发车日期DatetimeNOT NULL(主键)开出时刻DatetimeNOT NULL到达时刻DatetimeNOT NULL剩余票数intNOT NULL票价Char(10)NOT NULL 表2-2订票信息字段名数据类型是否可空说明订单号Char(10)NOT NULL(主键)身份证号Char(18)NOT NULL(外键)车号char(10)NOT NULL(外键)发车日期datetimeNOT NULL(外键)订购日期datetimeNOT NULL订购票数IntNOT NULL总价MoneyNOT NULL表2-3用户表字段名数据类型是否可空说明身份证号char(20)NOT NULL(主键)用户名char(20)NOT NULL性别Char(2)电话char(20)表2-4 订票表字段名数据类型是否可空说明订单号char(20)NOT NULL(主键)订票方式Char(20) 表 2-5 退票表字段名数据类型是否可空说明订单号char(20)NOT NULL(主键)订票方式Char(20)表2-6查询表字段名数据类型是否可空说明身份证号char(20)NOT NULL(主键)车号char(10)NOT NULL(主键)发车日期DatetimeNOT NULL(主键)查询方式char(20)3.3物理结构设计数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库系统。对于数据库查询事务,需要得到如下信息:l 查询的关系。通过连接查询可以将车次和用户之间互联;通过订票和退票可以将用户和订票信息互联,从而将每个表联系在一起,构成一个相关联的数据库。l 查询条件所涉及到的属性。查询涉及到的属性是(身份证号、车号、发车日期);订票涉及到的属性是(订票号);退票所涉及到的属性(订票号)。l 连接条件所涉及到的属性(身份证号、订单号、车号-发车日期、订单号)。对于数据更新,需要得到如下信息:l 被更新的关系。l 每个关系上的更新操作条件所涉及的属性。l 修改操作要改变的属性值。需要注意的是,数据库上运行的事务会不断的变化、增加或减少,以后需要根据上述设计信息的变化调整数据库的物理结构。3.31 确定数据库的存储结构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 车次(车号),foreign key (发车日期) 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 票价=2;运行结果截图:连接查询 :查询身份证号为216972195412194262乘客的车次信息SQL语句为:select 车次.*from 用户,车次,查询where 用户.身份证号=查询.身份证号 and 车次.车号=查询.车号 and 车次.发车日期=查询.发车日期 and 用户.身份证号=216972195412194262;嵌套查询:查询与李明同乘一列火车的旅客的身份证号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:20SQL语句为:update 车次 set 到达时刻=次日09:20where 车号=T25 and 发车日期=2010-12-13;删除数据乘客348742196610025432由于个人原因不能乘坐当日车次,他选择退票,请为其删除信息记录。SQL语句为:delete from 用户where 身份证号=348742196610025432;delete from 订票,订票信息where 订票.订单号=订票信息.订单号 and 身份证号=348742196610025432;运行结果截图:运行结果中已经不含乘客348742196610025432的信息了视图建立选择用网络查询车次用户的视图。SQL语句为:create view netasselect 身份证号from 查询where 查询方式=网络;更新视图将身份证号为370782198911273462的乘客改为370782198911277611SQL语句为:update netset 身份证号=37078219891127611;删除视图SQL语句为:drop view net;总之,视图的操作与表的操作基本一致,在此不必赘述。经过一系列验证数据库的调试正常,可以进行数据库的操作。3.4数据库模式定义 列名 数据类型 取值约束 可否为空 说明Trainno Char(30) 可 车次号StartstationChar(30) 可 起始站Endstation Char(30)可 目的站Starttime Char(30) 可 发车时间Arrivetime Char(30) 可 到站时间Price Money(8) 可 票价Availableseat Int(4) 可 实时座位数四、系统详细设计及实现4.1模块简述 本火车管理系统重要的所有模块主要是分为用数据库的类三个部分,下面对三个个部分进行再分类,共有9个模块。模块类别 模块编号 模块名称公共模块模块功能用户T1USER用户登录模块T2ADDUSER添加用户车次信息T3SEARCH查询车次T4INSERT插入车次T5DeleteT6DELETENO删除车次号T7SELL售票T8TICKETSELL连接模块T9ADOConn连接数据库4.2模块设计下面给出模块的背景,设计思路,算法,界面以及关键代码,比较简单的模块就仅给界面设计以及算法设计,比较复杂的模块会给出相应的数据库有关触发器,存储过程和视图的设计。而本系统重的模块主要有一下几个:1、用户模块User 模块是公共模块,车次信息和连接模块也用到User,模块。user_类是为系统用户表创建的一个类:要利用ADO访问数据库,类的成员变量对应表的列,类的成员函数对应表的操作。但本系统不是为每一个表都创建了类。1、其页面设计: 给用户一个好的登录界面,提供友善的人机界面,为用户的使用提供方便。同时也是为后面用户操作其他功能提供了权限依据,避免出现用户权限的不确定造成整个系统不同模块的错误操作,使整个订票业务遭到破坏。用户模块代码:void USER:OnOK() / TODO: Add extra validation hereUpdateData(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 hereUpdateData(1);if(m_Trainno= & m_Startstation= & m_Endstation= & m_Starttime= & m_Arrivetime= & m_Price=)MessageBox(请完善空格);elseADOConn adoconn;adoconn.OnInitADOConn();/调试_bstr_t sqltemp;sqltemp=insert into sale values(+m_Trainno+,+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,arrivetime,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 hereUpdateData(1);ADOConn adoconn;adoconn.OnInitADOConn();/调试_bstr_t sqltemp;sqltemp=delete from sale 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* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(TICKETSELL)/ NOTE: the ClassWizard will add DDX and DDV calls here/AFX_DATA_MAPBEGIN_MESSAGE_MAP(TICKETSELL, CDialog)/AFX_MSG_MAP(TICKETSELL)/ NOTE: the ClassWizard will add message map macros here/AFX_MSG_MAPEND_MESSAGE_MAP()5、车次查询此模块是面向用户使用的,用户在购买或预定车票前可以通过该对话框页面实现不同车次在不同站之间的详细查询,可提高用户得到票的概率,提高用户在购买或预定票的效率。车次查询:void SEARCH:OnOK() UpdateData(1);int j=0;int nItem;/清原来的列表纪录ADOConn adoconn;adoconn.OnInitADOConn(); m_list.DeleteAllItems();_bstr_t sql;/利用数据库,重新填充纪录 / sql=exec search_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 where trainno=+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_precordset-GetCollect(endstation);m_list.SetItemText(nItem,3,(char *)(_bstr_t)m_precordset-GetCollect(starttime);m_list.SetItemText(nItem,4,(char *)(_bstr_t)m_precordset-GetCollect(arrivetime);m_list.SetItemText(nItem,5,(char *)(_bstr_t)m_precordset-GetCollect(availableseat); m_list.SetItemText(nItem,6,(char *)(_bstr_t)m_precordset-GetCollect(price); /下移一条记录m_precordset-MoveNext();adoconn.ExitConnect();else if( m_Startstation != & m_Endstation != & m_Trainno != )sql = select * from sale where trainno=+m_Trainno+ and 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_precordset-GetCollect(starttime);m_list.SetItemText(nItem,4,(char *)(_bstr_t)m_precordset-GetCollect(arrivetime);m_list.SetItemText(nItem,5,(char *)(_bstr_t)m_precordset-GetCollect(availableseat); m_list.SetItemText(nItem,6,(char *)(_bstr_t)m_precordset-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_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_precordset-GetCollect(starttime);m_list.SetItemText(nItem,4,(char *)(_bstr_t)m_precordset-GetCollect(arrivetime);m_list.SetItemText(nItem,5,(char *)(_bstr_t)m_precordset-GetCollect(availableseat); m_list.SetItemText(nItem,6,(char *)(_bstr_t)m_precordset-GetCollect(price); /下移一条记录m_precordset-MoveNext();/CDialog:OnOK();adoconn.ExitConnect();elseMessageBox(请完善对话框);五、结束语经过近三周的课程设计,我们学到了很多东西。在以前我们没有亲手建立过数据库,在这一实践中我们学习到了数据库的建立方法和通过MFC建立数据库模块的技巧。虽然说过程的艰难的,但是学习到的东西让我们感到很欣慰。在MFC建立数据库框架的时候,遇到了一个很麻烦的问题就是不知道怎样设定函数与数据库文件之间的联系,在添加函数程序时还需要考虑到MFC和数据库文件的连接问题。在设置连接方面的确是这一次设计数据库的一大难点,看别人做的程序也不怎么懂,在同学的帮助下最终把程序弄全,能够实现基本的功能。但是在最终调试时用户的登录还是出现了一个问题,就是登录后出现一个错误,虽然能登录成功,但是点击确定按钮后却出现一个错误,最终发现是在设定用户表是出现了问题,但是我不知道怎样改。另外在整个结构中,数据库的的权限没有设定好,使得售票员和管理员的权限在运行窗口中没有体现出来;且在售票员没有登录时也能进行车次的查询、添加和售票活动。可以说整个数据库并没有完全实现,漏洞比较多,只能实现基本的增删改查的功能。在用户登录窗口出现的错误是在登录成功后点击确定键的时候,出现一个指向物理内存的错误使得登录功能没能最终实现。另外在开始时用户和车次添加的功能也没有实现,经过检查发现原来在定义用户表的时候出现了错误,刚开始定义的表名是user而程序中定义的用户表名是iforuser,这样造成数据库和程序之间不能连接,最后我把他们全部改为aaaaa的表名。在车次添加这一功能模块中,我们遇到的问题是不能添加车次的详细信息,经过详细阅读发现是在设置数据库车次信息表的连接时注释了一句程序,使得结果发生了巨大的变化。在这个系统中不能实现通过车站来查询车次的基本信息,并且没有退票服务功能,因此整个系统的功能并没能满足火车订票系统的基本需求,只是实现了增删改查功能,对于其他辅助性的功能没有实现。因为按照正常的订票系统需要满足退票的需求,还有不同等级车票的设定及出售预定。在整个设计过程中,SQL文件中表给属性的设定也是一个比较容易出问题的地方,第一次运行的时候用户的添加和车次添加没能实现,说数据库类型无效。后来经过同学的帮忙修改我发现了问题的说在,原来是属性值的设定出现了问题使得数据库与程序不能很好的连接起来。还有一个局限就是座位数是系统设定的,在添加车次的同时不能对座位数进行设定,这样就不能跟上实际请况的变化;不能根据车站来查询车次的信息,只能根据车次号来查询,这样在使用时会很不方便;同时在存储和触发器方面没有进行开发编程。六、参考文献1 数据库原理及应用教程 苗雪兰、刘瑞新、宋歌 机械工业出版社2 数据库原理 丁宝康 经济科学出版社3 软件工程 陆丽娜 经济科学出版社4 面向对象与可视化程序设计(第二版) 黄维通 清华大学出版社35
展开阅读全文