




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库设计结业报告设计题目:客运售票系统的分析与设计专业:计算机科学与技术班级:03073学号:030740303姓名:乔治指导老师:杨兴忠日期:2010年5月21日—2010年6月6日成绩: 目录TOC\o"1-5"\h\z\o"CurrentDocument"一、 课题背景及意义 2\o"CurrentDocument"二、 需求分析 2\o"CurrentDocument"1、 业务需求分析 2\o"CurrentDocument"2、 功能需求 2\o"CurrentDocument"3、 数据需求 3\o"CurrentDocument"三、 概要设计 4(一)、系统组成 4(二) 、数据库设计 4\o"CurrentDocument"1、 概念结构设计 5\o"CurrentDocument"2、 逻辑结构设计 5\o"CurrentDocument"3、 数据库模式定义 6\o"CurrentDocument"四、 数据库实施阶段 6\o"CurrentDocument"五、 详细设计 6\o"CurrentDocument"1、 模块简述 6\o"CurrentDocument"2、 模块设计 6六、 总结 13\o"CurrentDocument"七、参考文献 14一、课题背景及意义信息时代已经来临,信息处理的利器——计算机应用于火车站售票的日常管理为火车站售票的现代化带来了从未有过的动力和机遇,为火车站票务管理领域的飞速发展提供了无限潜力。采用计算机管理信息系统已成为火车站票务管理科学化和现代化的重要标志,给火车站票务带来了明显的经济效益和社会效益。采用数据技术建立的管理系统不仅能提高出售/预定车票的效率,还能减少错误发生的概率,方便用户的查询订购车票。降低工作人员的工作量,避免购票人员在车站无效的等票,可以调高购买者买到票的机率,这样的作用在春运期间最为显著,因为在春运的时候车站里许多人是在无效的等票,不仅造成车站里人员管理的困难,还使本可以买到票的人无辜浪费时间在侯票上。在此背景下,本文论述了火车订票管理系统(的设计实现。通过对各种数据库管理系统的模型分析,结合火车站票务销售查询过程的实际需求,同时本文还说明了火车订票管理系统的开发过程及各种技术细节。本系统是适应时代发展的需要,提高车票订票和车次管理的效率而开发设计的。二、需求分析在构造系统时,首先从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。这样,就把一个大的系统分解成了几个小系统,使整个系统的功能更加详细易于理解,同时易于实现系统的整体设计。本系统分为二个功能,分别是用户管理和车次/车票管理,其所能实现的功能:1、实现用户登录、用户添加。2、 实现对车次的删除和车次基本信息的添加。3、实现售票的基本管理。4、 实现对车次基本信息的查询。1、业务需求分析从实际角度出发,对于用户要提供方便快捷的车票查询和订票服务,对于车站工作人员,则是要能够方便明朗的对车次信息进行增删修改操作和车票的订售操作,提高车次的编组效率,是车次资源得到充分利用,并可以提高车票的出售效率降低工作人员的工作量。功能需求在数据操作界面需要有用户登录窗口和车次信息操作窗口,这需要有实现用户登录的功能和车次查询、添加、车票出售的功能。这是火车订票系统的基本功能,只有实现了这几个功能一个火车订票系统才能开始运作,在本系统中实现了用户的登录添加和车票的基本信息操作。功能列表编号功能名称功能说明1、1用户登录用户输入用户名和密码登录系统1、2用户添加增加用户和对所添加的用户权限进行设定2.、1添加车次添加车次的基本信息2、2删除车次删除车的基本信息3、1售票对车票销售/预定的操作4、1车次查询对车次基本信息的查询
3、数据需求系统处理的对象有:用户信息:用户名、用户密码、用户权限。车次信息:车次号、票价、起始站、目的站、开车时间、到站时间、实时座位数系统总数据流图用户登录添加用户系统与车次信息系统间数据流图数据字典数据项编号数据项名数据项含义存储结构IDC-1username用户名Char(30)IDC-2Password登录密码Char(30)IDC-3Radio用户权限Char(30)IDC-4Trainno车次号Char(30)IDC-5Price票价Money(8)IDC-6Availableseat座位数Int⑷IDC-7Startstation起始站Char(30)IDC-8Endstation目的站Char(30)IDC-9Starttime发车时间Char(30)IDC-10Arrivetime到站时间Char(30)三、概要设计(一)、系统组成系统开发的总体目标是实现火车票订/售票管理的系统化和自动化,保证车票售出和车次信息管理的正确无误,确保车票和车次管理的有效。在本系统中分为两个子系统,分别是用户子系统和车次信息子系统,主要任务是对用户信息、车次信息、车票信息等操作及外理本系统为C/S结构、运行平台为微软VC++6.0以上版本。以及SQLSever2000以上版本。下图为系统结构图:系统框架车票预定或出售车次查询系统框架车票预定或出售车次查询二)、数据库设计1、概念结构设计概念设计阶段主要是将需求分析阶段得到的用户需求抽象为信息结构(概念模型)的过程。根据之前的分析,数据库应该主要的实体有用户和车票信息。经过分析得到的实体关系图如下实体关系图2、逻辑结构设计将E-R图转化为关系模式:在设计时,将一个1:n联系的单方主码加至多方。一个实体单独转化成一张表。根据设计原则和以上E-R图,转化为以下一张表:车票销售表:sale(车次号、起始站、目的站、发车时间、到站时间、票价、实时座位数)
3、数据库模式定义列名数据类型取值约束可否为空说明TrainnoChar(30)可车次号StartstationChar(30)可起始站EndstationChar(30)可目的站StarttimeChar(30)可发车时间ArrivetimeChar(30)可到站时间PriceMoney(8)可票价AvailableseatInt⑷可实时座位数四、数据库实施阶段数据库的建立是直接在企业管理器中建的,数据库中的表清单在之前已经列出。在MFC界面建立数据库不同功能模块的操作对话框,并对所有对话框中的控件按钮进行设定,添加成员函数,使得数据库的程序框架确定下来。接着是对成员函数进行补充使程序能顺利运行并能连上数据库,对连接模块进行补充设定,使得基本权限确定。在数据库建立过程中通过索引实现了对表的快捷查询。连接数据库时要注意程序中数据库各项属性的定义描述,避免其与数据库表中的属性值产生差异。在程序完善阶段需要对不同用户权限的设定,这样可以避免不同用户的乱操作造成对数据库的破坏。五、详细设计1、模块简述本火车订票管理系统主要的所有模块主要是分为用户,车次信息、连接数据库的类三个部分,下面对三个个部分进行再分类,共有9个模块。模块类别模块编号模块名称公共模块模块功能用户T——1USER用户登录模块T 2ADDUSER添加用户车次信息T 3SEARCH查询车次T 4INSERT插入车次T——5DeleteT——6DELETENO删除车次号T 7SELL售票T 8TICKETSELL连接模块T 9ADOConn连接数据库2、模块设计下面给出模块的背景,设计思路,算法,界面以及关键代码,比较简单的模块就仅给界面设计以及算法设计,比较复杂的模块会给出相应的数据库有关触发器,存储过程和视图的设计。而本系统重的模块主要有一下几个:1、 用户模块User模块是公共模块,车次信息和连接模块也用到User,模块。user_类是为系统用户表创建的一个类:要利用ADO访问数据库,类的成员变量对应表的列,类的成员函数对应表的操作。但本系统不是为每一个表都创建了类。1、1其页面设计给用户一个好的登录界面,提供友善的人机界面,为用户的使用提供方便。同时也是为后面用户操作其他功能提供了权限依据,避免出现用户权限的不确定造成整个系统不同模块的错误操作,使整个订票业务遭到破坏。用户登录£3用户名窸码用户模块代码:voidUSER::OnOK(){//TODO:AddextravalidationhereUpdateData(1);if(m_user==""||m_psd==""){MessageBox("请填好用户名或密码!");}else{ADOConnadoconn;adoconn.OnInitADOConn();〃调试_bstr_tsqltemp;sqltemp="select*fromaaaaawhereusernamelike'"+m_user+"%'andpasswordlike'"+m_psd+"%'";_RecordsetPtrm_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、 车次信息模块车次添加实现了车次能跟上需求的变化,使得系统管理员能根据需要添加车次,让售票员能为购买者提供优质的服务。‘添加车次 丨富『靡加车次 票协起始站 终点站发车时间 到达时间车次添加程序:voidINSERT::OnOK(){//TODO:AddextravalidationhereUpdateData(1);if(m_Trainno==""&m_Startstation==""&m_Endstation==""&m_Starttime==""&m_Arrivetime==""&m_Price==""){MessageBox("请完善空格”);}elseADOConnadoconn;adoconn.OnInitADOConn();〃调试_bstr_tsqltemp;sqltemp="insert into salevalues('"+m_Trainno+"','"+m_Startstation+"','"+m_Endstation+"','"+m_Starttime+"','"+m_Arrivetime+"',20,'"+m_Price+"')";//sqltemp="insert into employeesvalues('"+employee_id+"','"+employee_name+"','"+sex+"','"+department_id+"','"+title_id+"','"+work_time+"')";//(trainno,startstation,endstation,starttime,arrivetime,availableseat,price)//_RecordsetPtrm_precordset;//m_precordset=adoconn.GetRecordSet(sqltemp);adoconn.ExecuteSQL(sqltemp);MessageBox("插入成功”);adoconn.ExitConnect();CDialog::OnOK();}}3、 删除车次删除车次的操作是对添加车次操作的补充,有了删除操作才能让车次添加车次顺利的执行。删除车次 LgU除 取消删除车次代码:voidDELETENO::OnOK(){//TODO:AddextravalidationhereUpdateData(1);ADOConnadoconn;adoconn.OnInitADOConn();〃调试_bstr_tsqltemp;sqltemp="deletefromsalewheretrainno='"+m_Trainno+"'";//_RecordsetPtrm_precordset;//m_precordset=adoconn.GetRecordSet(sqltemp);adoconn.ExecuteSQL(sqltemp);MessageBox("删除成功”);adoconn.ExitConnect();//CDialog::OnOK();}4、 车票出售/预定在这个部分模块中可以实现对不同车次车票的出售/预定功能,并且在页面对话框中能知道车次的实时信息,以便确定该车次的车票还能不能向外面出售或预定。车票出售/预定代码:voidTICKETSELL::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(TICKETSELL)//NOTE:theClassWizardwilladdDDXandDDVcallshere//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(TICKETSELL,CDialog)//{{AFX_MSG_MAP(TICKETSELL)//NOTE:theClassWizardwilladdmessagemapmacroshere//}}AFX_MSG_MAPEND_MESSAGE_MAP()5、 车次查询此模块是面向用户使用的,用户在购买或预定车票前可以通过该对话框页面实现不同车次在不同站之间的详细查询,可提高用户得到票的概率,提高用户在购买或预定票的效率。车次查询:voidSEARCH::OnOK(){UpdateData(1);intj=0;intnItem;//清原来的列表纪录ADOConnadoconn;adoconn.OnInitADOConn();m_list.DeleteAllItems();_bstr_tsql;//利用数据库,重新填充纪录//sql="execsearch_by_employeename'"+m_name+"'";//sql="execsearch_by_employeename'"+m_name+"%'";//sql="select*fromemployeejiansuowhereemployee_namelike'"+m_name+"%'";//根据记录集,填充列表框if(m_Startstation==""&&m_Endstation==""&&m_Trainno==""){MessageBox("请填写车次或起始和终点站”);}elseif(m_Startstation==""&&m_Endstation==""&&m_Trainno!=""){sql="select*fromsalewheretrainno='"+m_Trainno+"'";_RecordsetPtrm_precordset;m_precordset=adoconn.GetRecordSet(sql);while(m_precordset->adoEOF==0)//i记录集没有移动到最后{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();}elseif(m_Startstation!=""&&m_Endstation!=""&&m_Trainno!=""){sql="select*fromsalewheretrainno='"+m_Trainno+"'andstartstation='"+m_Startstation+"'andendstation='"+m_Endstation+"'";_RecordsetPtrm_precordset;m_precordset=adoconn.GetRecordSet(sql);while(m_precordset->adoEOF==0)//i记录集没有移动到最后{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();}elseif(m_Startstation!=""&&m_Endstation!=""&&m_Trainno==""){sql="select*fromsalewherestartstation='"+m_Startstation+"'andendstation='"+m_Endstation+"'";_RecordsetPtrm_precordset;m_precordset=adoconn.GetRecordSet(sql);while(m_precordset->adoEOF==0)//i记录集没有移动到最后{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();}else{MessageBox("请完善对话框”);}}六、小结经过近二周的课程设计,我们学到了很多东西。在以前我们没有亲手建立过数据库,在这一实践中我们学习到了数据库的建立方法和通过MFC建立数据库模块的技巧。虽然说过程的艰难的,但是学习到的东西让我们感到很欣慰。在MFC建立数据库框架的时候,遇到了一个很麻烦的问题就是不知道怎样设定函数与数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省无锡市怀仁中学2024-2025学年高一下学期期中考试数学试卷
- 2025年铸件项目建议书
- 通达OA系统应用培训
- 澳大利亚新西兰市场拓展股权投资合作框架协议
- 日韩房地产跨境合伙开发合同
- 基因治疗载体研发与临床试验伦理审查合作框架协议
- 私人游艇航海雷达租赁与航行培训合同
- 网红爆款面包区域代理权许可合同
- 景区旅游文化园区股权合作开发合同
- 公共设施建设塔吊操作人员派遣与进度管理合同
- 2024年杭州良渚文化城集团有限公司招聘真题
- 苏州苏州工业园区部分单位招聘51人笔试历年参考题库附带答案详解
- 北京2025年国家艺术基金管理中心招聘应届毕业生笔试历年参考题库附带答案详解
- 四川省攀枝花市2025届高三第三次统一考试地理试题及答案
- 安徽省皖南八校2025届高三下学期第三次联考物理试卷 含解析
- 安徽省部分高中2025届高考生物四模试卷含解析
- 2025-2030全球及中国燃气轮机服务行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2025-2030中国老年教育行业发展前景及发展策略与投资风险研究报告
- 初中学生安全教育课件
- 2025年下半年度云南云勤服务集团限责任公司高校毕业生公开招聘13人易考易错模拟试题(共500题)试卷后附参考答案
- 2024年延安通和电业有限责任公司招聘考试真题
评论
0/150
提交评论