长途汽车管理系统课程设计报告书完整版.docx
《长途汽车管理系统课程设计报告书完整版.docx》由会员分享,可在线阅读,更多相关《长途汽车管理系统课程设计报告书完整版.docx(23页珍藏版)》请在冰豆网上搜索。
长途汽车管理系统课程设计报告书完整版
山东交通学院
数据库课程设计
长途汽车信息管理系统
院(系)别信息工程系
班级计算082
学号080810213
姓名席文杰
指导教师庞希愚
时间2010-6-21—2010-7-3
课程设计任务书
题目长途汽车信息管理系统
系(部)信息工程系
专业计算机科学与技术
班级计算082
学生姓名席文杰
学号080810213
06月21日至07月03日共2周
指导教师(签字)
系主任(签字)
年月日
一、设计内容及要求
要认真仔细的分析数据,确定数据库的表名、字段名及数据类型;
要认真分析数据库中表与表之间的联系;
避免数据库中数据的冗余;
要至少包含有一个存储过程;
在数据库应用程序中要使用存储过程;
此外每位同学都要做一个触发器实例;
系统功能基本要求
线路信息:
包括出发地、目的地、出发时间、所需时间等。
汽车信息:
包括汽车的种类及相应的票价、最大载客量等。
票价信息:
包括售票情况、查询输出相应的信息。
二、设计原始资料
[1]数据库系统原理与应用教程[M]李春葆清华大学出版社
[2]数据库系统原理与应用教程[M]闪四清清华大学出版社
[3]VisualC++6.0数据库系统开发实例导航[M]李闽溟人民邮电出版社
[4]数据库系统简明教程[M]王珊高等教育出版社
[5]VISUALC++的使用及面向对象软件工程实例分析[M]贺怀清电子工业出版社
三、设计完成后提交的文件和图表
1.计算说明书部分
数据库中包括三个表,分别是blines(线路信息表),bbuses(汽车信息表),btickets(票价信息表)
2.图纸部分:
四、进程安排
6月21日:
选择课题,搜集资料,熟悉运行环境
6月22日:
进行课题分析
6月23日:
进行数据库的总体设计和详细设计
6月24-25日:
进行数据库的完善
6月26-27日:
运用VC6.0进行界面的基本编辑和初始化
6月28日-6月30日:
编辑基本代码
7月1日:
VC和数据库连接调用,进行容错性检查完善系统对错误的检查功能,对存储过程和触发器进行VC的调用
7月2日:
进行程序的完善系统功能
五、主要参考资料
[1]数据库系统原理与应用教程李春葆清华大学出版社
[2]数据库系统原理与应用—SQLServer2000夏冰冰国防工业出版社
[3]VisualC++6.0数据库系统开发实例导航[M]李闽溟人民邮电出版社
[4]数据库系统简明教程王珊高等教育出版社
[5]C++:
面向对象程序设计李涛高等教育出版社
成绩评定表
口试(答辩)成绩
报告成绩
总评成绩
摘要
私達の実践の能力を高めるため、学んだ知識を運用することができて行って更に創造して、学校は特に2週間手配して、私達にSQLServerの課程の設計の実習を行わせます.
私は、バックエンドの管理者の管理を中心に长距离バスの情報管理システムを作りました。
この設計は、C++言語を使用してのVC++6.0で環境プログラミング。
以下、課程を通して説明を設計して、长距离バスの情報管理システムの説明を統計して、プログラムは説明を調整して、総括などの方面を開発して、詳しくこのプログラムの製作の過程を説明して、作用、各種の実行することができる操作.
关键字:
长距离バス,情報管理システム,SQLServer,C++,VC++6.0,
目录
前言....................................................1
1.系统分析.2
1.1系统结构图...................................................2
1.2数据库管理及截图............................................2
1.3存储过程的设计2
1.4触发器的设计4
2.软件测试.5
2.登录界面5
2.2用户登录界面5
2.3选择信息界面6
2.4线路信息查看及按汽车编号查询界面.............................6
2.4.1添加线路信息..........................................7
2.4.2删除线路信息7
2.5汽车信息查看及按汽车编号查询8
2.5.1添加汽车信息8
2.5.2删除汽车信息9
2.6票价信息查看9
2.7退出界面..................................................10
3.部分主要功能的源代码示例...............................10
3.1添加线路信息或添加汽车信息功能...............................10
3.2删除线路信息或删除汽车信息功能...............................11
3.3定向查询功能................................................13
4.总结...........................................................15
5.个人对此次课程设计的看法......................................15
致 谢..16
参考文献..17
前言
数据库系统是随着计算机技术的不断发展,为了实现对数据统一有效地管理而出现的,自20世纪60年代中期以来,数据库系统经历了三个发展阶段:
层次与网状数据库系统,关系数据库系统,以及关系数据库的发展阶段。
数据库技术是计算机科学与技术中发展最快的领域之一,也是应用最广的技术之一,它已成为计算机信息系统与应用系统的核心技术和重要基地。
今天,信息资源已成为各个部门的重要财富和资源。
建立一个满足各级部门信息处理要求的行之有效的信息系统也成为一个企业或组织生存和发展的重要条件。
因此,作为信息系统核心和基础的数据库技术得到越来越广泛的应用,越来越多新的应用领域采用数据库技术来存储和处理信息资源。
本次的课程设计我选择的课题是长途汽车信息管理系统,立足于社会实际,着眼于未来发展,建成符合标准化协议、通用性较强、实用的系统,以提高汽车调度的现代化管理水平,实现信息资源的共享。
程序在设计的过程中遇到的问题已及时更正,但由于编者的能力和水平有限,软件和文档中不免会出现一些不期待的错误,望文档读者能够理解和体谅,并欢迎提醒和纠正,在此表示感谢以及敬意。
概括性的设计思路如下:
首先进行的是对系统的总体设计。
考虑到汽车信息管理的实际需求,进行恰当的安排。
然后是数据库的设计,数据库的设计来源于系统的总体要求。
用企业管理器实现的数据库创建,数据库中共有三个表。
分别用于记录长途线路信息、汽车信息、票价销售信息。
综合运用数据库的知识并不是一项很简单的事情,需要仔细地分析课题要求,多方面考虑如何全面并且正确地使用数据库的强大功能。
1.系统分析
1.1系统结构图
1.2数据库管理及截图
(1)线路信息表
功能:
记录长途汽车发车起始地点、目的地、发车时间点、所需时间
(2)汽车信息表
功能:
记录各辆汽车的编号、车型、最大载客量及票价
(3)票价信息表
功能:
记录各编号的汽车所获得的近期车票销售情况
(4)另外,设计一个管理员登陆表,用于管理员进入软系统进行操作时登陆所用。
1.3存储过程的设计
存储过程是SQLServer数据库中一个非常重要的概念,它是一组SQL语句的集合,编译后存储在数据库的服务器里。
存储过程降低了客户机和服务器之间的通信量,方便实施企业规则的运算程序写成存储过程放入数据库服务器中,由RDBMS管理,既有利于集中控制,又能够方便的进行维护。
当用户规则发生变化时只要修改存储过程,无需修改其他应用程序。
在本次设计的长途汽车信息管理系统中,在对线路信息表和汽车信息表进行添加、删除信息时涉及到存储过程的使用,在VC++环境中调用存储过程只需使用三句调用存储过程的代码即可。
例如:
strConnect.Format("exec
linesadd'%s','%s','%s','%s','%s'",
m_bno,m_starts,m_ends,m_stime,m_ttime);
m_db.ExecuteSQL(strConnect);
另外,可举某一存储过程的源代码为例具体说明一下,如添加线路信息的存储过程:
CREATEproclines@bnochar(10),@startschar(10),@endschar(10),@stimechar(10),@ttimechar(10)
as
insertintoblinesvalues(@bno,@starts,@ends,@stime,@ttime)
GO
1.4触发器的设计
触发器是一种特殊的存储过程,用以保证级联所不能达到的数据的一致性。
可对数据库中的相关表实现级联更改,可以强制比用CHECK约束定义的约束更为复杂的约束。
触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。
此次涉及到的触发器,用于限定添加新的线路信息时,输入汽车编号的一致性,具体为输入的编号须以‘00’开头。
利用触发器进行设计,大大提高了信息的准确性。
源代码如下:
CREATEtriggerlines_1
onblines
forinsertas
declare@bnochar(10)
select@bno=bno
fromblines
if(left(@bno,2)!
='00')
begin
rollbacktransaction
raiserror('Inputinwrong!
!
!
',8,1)
end
2.软件测试
2.1登录界面
说明:
无特殊功能,仅作为欢迎界面。
2.2用户登录界面
说明:
系统管理者须输入用户名及相应的密码方可进入具体的操作界面
2.3选择信息界面
说明:
管理者在该界面单击相应按钮,选择要进行操纵或查看的信息
2.4线路信息查看及按汽车编号查询界面
说明;查看所有线路信息,并且可输入某一汽车编号然后单击Search按钮进行定向查询
2.4.1添加线路信息
说明:
按数据库表的对应信息依次输入新内容,点击Save按钮保存,由于blines表设置了触发器,因此,若输入bno不是以‘00’开头的话,系统会自动调用该触发器,提示输入错误,添加不成功
2.4.2删除线路信息
说明:
输入想要删除的线路所对应的汽车编号,单击Delete按钮删除成功
2.5汽车信息查看及按汽车编号查询
说明:
查看所有汽车信息,并且可输入某一汽车编号,然后单击Search按钮进行定向查询
2.5.1添加汽车信息
说明:
按数据库表的对应信息依次输入新内容,点击Save按钮保存
2.5.2删除汽车信息
说明:
输入想要删除的汽车编号,单击Delete按钮删除成功
2.6票价信息查看
说明:
查看所有票价信息,并且可输入某一汽车编号,然后单击Search按钮进行定向查询
2.7退出界面
说明:
无特殊功能,仅作为提示已退出本管理系统
3.部分主要功能的源代码示例
3.1添加线路信息或添加汽车信息功能
voidCAdd_1:
:
OnOK()
{
UpdateData(true);
CDatabasem_db;
CStringstrConnect;
strConnect.Format("DSN=bus");
m_db.OpenEx(strConnect,CDatabase:
:
noOdbcDialog);
if(!
m_db.IsOpen())
{
MessageBox("Can'tOpentheDatabase!
!
!
");
return;
}
CRecordsetrs(&m_db);
CStringsql;
strConnect.Format("exec
linesadd'%s','%s','%s','%s','%s'",m_bno,m_starts,m_ends,m_stime,m_ttime);
m_db.ExecuteSQL(strConnect);
m_list.DeleteAllItems();
sql.Format("selectbno,starts,ends,stime,ttimefromblineswhereblines.bno='%s'",m_bno);
rs.Open(CRecordset:
:
dynaset,sql);
while(!
rs.IsEOF())
{
CStringa,b,c,d,e;
CDBVariantvar;
rs.GetFieldValue((short)0,a);
rs.GetFieldValue(1,b);
rs.GetFieldValue(2,c);
rs.GetFieldValue(3,d);
rs.GetFieldValue(4,e);
intnIndex=m_list.GetItemCount();
LV_ITEMlvItem;
lvItem.mask=LVIF_TEXT;
lvItem.iItem=nIndex;
lvItem.iSubItem=0;
CStringtemp;
temp.Format("%s",a);
lvItem.pszText=(char*)(LPCTSTR)temp;
m_list.InsertItem(nIndex,a);
m_list.SetItemText(nIndex,1,b);
m_list.SetItemText(nIndex,2,c);
m_list.SetItemText(nIndex,3,e);
m_list.SetItemText(nIndex,4,d);
rs.MoveNext();
}
MessageBox("Savesuccessfully!
!
!
");
rs.Close();
m_db.Close();
}
3.2删除线路信息或删除汽车信息功能
voidCDelete:
:
OnDelete()
{
UpdateData(true);
CDatabasem_db;
CStringstrConnect;
strConnect.Format("DSN=bus");
m_db.OpenEx(strConnect,CDatabase:
:
noOdbcDialog);
if(!
m_db.IsOpen())
{
MessageBox("Can'tOpenDatabase!
!
!
");
return;
}
if(m_bno.IsEmpty())
{
MessageBox("Sorry,thenumberisempty!
");
return;
}
CRecordsetrs(&m_db);
CStringsql;
m_list.DeleteAllItems();
strConnect.Format("execlinesdelete'%s'",m_bno);
m_db.ExecuteSQL(strConnect);
rs.Open(CRecordset:
:
dynaset,"select*fromblines");
while(!
rs.IsEOF())
{
CStringa,b,c,d,e;
CDBVariantvar;
rs.GetFieldValue((short)0,a);
rs.GetFieldValue(1,b);
rs.GetFieldValue(2,c);
rs.GetFieldValue(3,d);
rs.GetFieldValue(4,e);
intnIndex=m_list.GetItemCount();
LV_ITEMlvItem;
lvItem.mask=LVIF_TEXT;
lvItem.iItem=nIndex;
lvItem.iSubItem=0;
CStringtemp;
temp.Format("%s",a);
lvItem.pszText=(char*)(LPCTSTR)temp;
m_list.InsertItem(nIndex,a);
m_list.SetItemText(nIndex,1,b);
m_list.SetItemText(nIndex,2,c);
m_list.SetItemText(nIndex,3,d);
m_list.SetItemText(nIndex,4,e);
rs.MoveNext();
}
MessageBox("Deletesuccessfully!
!
!
");
rs.Close();
m_db.Close();
}
3.3定向查询功能
voidCLines:
:
OnOK()
{
UpdateData(true);
CDatabasem_db;
CStringstrConnect;
strConnect.Format("DSN=bus");
m_db.OpenEx(strConnect,CDatabase:
:
noOdbcDialog);
if(!
m_db.IsOpen())
{
MessageBox("thedatabaseisnotopened");
return;
}
CRecordsetrs(&m_db);
if(m_bno.IsEmpty())
{
MessageBox("pleaseinsertthenumbofbus");
return;
}
CStringsql;
sql.Format("select*fromblineswherebno='%s'",m_bno);
rs.Open(CRecordset:
:
dynaset,sql);
if(rs.IsEOF())
{
MessageBox("thebusisnotexist");
}
m_list.DeleteAllItems();
while(!
rs.IsEOF())
{
CStringa,b,c,d,e;
CDBVariantvar;
rs.GetFieldValue((short)0,a);
rs.GetFieldValue(1,b);
rs.GetFieldValue(2,c);
rs.GetFieldValue(3,d);
rs.GetFieldValue(4,e);
intnIndex=m_list.GetItemCount();
LV_ITEMlvItem;
lvItem.mask=LVIF_TEXT;
lvItem.iItem=nIndex;
lvItem.iSubItem=0;
CStringtemp;
temp.Format("%s",a);
lvItem.pszText=(char*)(LPCTSTR)temp;
m_list.InsertItem(nIndex,a);
m_list.SetItemText(nIndex,1,b);
m_list.SetItemText(nIndex,2,c);
m_list.SetItemText(nIndex,3,d);
m_list.SetItemText(nIndex,4,e);
rs.MoveNext();
}
rs.Close();
m_db.Close();
}
4.总结
VC++6.0开发环境的使用对我们认识C++语言与SQL语言之间的一些基础知识及联系起到了很好的促进作用。
VC的MFC操作平台为设计可视化图形界面程序提供了很大的便利,是一款功能较为完善的集成开发环境,拥有很多优秀的设计理念。
其中,可视化编辑模式让使用者能创作出更美观、更直观的图形用户界面。
通过这次大作业巩固了所学的C++语言及SQL编程的知识,掌握了很多实用技巧,树立了自信心,同时深切的体会到了SQL数据库操作是一门技术,同时回忆了以前所学的C++语言的相关内容。
通过此次课程设计使我认识到学习编程语言是需要讲究方式和方法的,讲究听写想练,需要不断地进行实地操作才能真正掌握其精髓。
5.个人对此次课程设计的看法
这是一个在功能实现和数据处理都不完善的作品,跟项目的设计要求之间有很大一段距离,只能说仅起到了示例的作用。
该系统只完成了基本的需求功能,有一部分较为复杂的功能,在最初的设计阶段考虑过,但迫于这一学期课业任务较为紧张以及自身水平有限等多方面原因,很多都没有实现。
只能在以后不断地进行充实和完善。
致 谢
最后,在这里郑重的感谢庞希愚老师的帮助,让我在这两个周的时间里不仅巩固了数据库和VC的知识,同时还学到了很多课堂以外的东西。
两个周以来,庞老师一直在机房陪伴着我们,每天都是最后一个离开机房的,检查完机器后才锁好门窗离开。
庞老师为人十分的严谨,两周的时间里,对同学严格要求,规定同学们每天到达机房的时间期限。
如此,一改同学们平时懒散的生活习惯,让给我们认识到遵守时间对一个人的重要性。
这是在我们踏入社会之前都要铭记于心的。
同时也感谢学校提供给我们这次宝贵的实践机会,给我们这么长的时间和完整的设施,让我们可以动手动脑不断实践学习,大大提高了个人的能力和素质。
而且,在这两周的时间里,同学们回忆并巩固了以前学过的好多知识,受益匪浅。
参考文献
[1]数据库系统原理与应用教程李春葆清华大学出版社
[2]数据库系统原理与应用—SQLServer2000夏冰冰国防工业出版社
[3]VisualC++6.0数据库系统开发实例导航[M]李闽溟人民邮电出版社
[4]数据库系统简明教程王珊高等教育出版社
[5]C++:
面向对象程序设计李涛高等教育出版社