数据库课程设计车站售票系统.docx

上传人:小飞机 文档编号:3560053 上传时间:2023-03-13 格式:DOCX 页数:16 大小:42.94KB
返回 下载 相关 举报
数据库课程设计车站售票系统.docx_第1页
第1页 / 共16页
数据库课程设计车站售票系统.docx_第2页
第2页 / 共16页
数据库课程设计车站售票系统.docx_第3页
第3页 / 共16页
数据库课程设计车站售票系统.docx_第4页
第4页 / 共16页
数据库课程设计车站售票系统.docx_第5页
第5页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据库课程设计车站售票系统.docx》由会员分享,可在线阅读,更多相关《数据库课程设计车站售票系统.docx(16页珍藏版)》请在三一办公上搜索。

1、数据库课程设计车站售票系统数据库原理及应用课程设计 一、课程设计的目的 数据库原理及应用课程设计是计算机科学与技术专业集中实践性环节之一,是学习完数据库原理及应用课程后进行的一次全面的综合练习。本课程设计主要在于加深学生对数据库基础理论和基本知识的理解,掌握数据库应用系统设计开发的基本方法,达到进一步使学生综合运用所学知识和增强实际动手能力的目的。 二、课程设计的任务与要求 要求学生根据自身对题目的理解情况,从给定的设计题目中选择一个,以MS SQL Server作为后台数据库平台,以PowerBuilder作为前台开发工具,完成一个小型数据库应用系统的系统的分析、设计和开发。 三、课程设计说

2、明书 车站售票系统 课题简介: 车站售票管理系统是一套适用于各公路客运站的管理软件。用户可在本系统中实现方便、快速的销售功能,包括车票的预订和退票的功能,能够支持团体的预订票和退票;能准确地了解售票情况,提供多种查询和统计功能,如车次的查询、时刻表的查询;能按情况所需实现对车次的更改、票价的变动及调度功能;有完善的报表系统;具有一定的维护功能。并统计分析系统提供的各种统计信息表,便于顾客购票,也便于领导准确了解营收、客源等情况,并及时做出策略调整。 随着Internet技术的发展,人们对网络数据库的交互和查询速度等性能的要求越来越高。未来车站的发展趋势是完全自动化的售票信息查询,网络订票,智能

3、化订票,而且随着计算机的普及,信息处理量的逐渐扩大,手工处理方式已经远远不能满足人们管理活动的需要,各种工作都逐渐由手工转为自动化,将使许多复杂、繁琐、且需要很多人力的工作变得简单。 车站售票管理是本系统的根本任务,通过实现票务信息的计算机管理,以提高工作效率。实现计算机管理的最佳技术就是数据库技术。我们可以利用数据库将整个车站的票务情况存入计算机,再配置上功能丰富的用户接口,以满足用户需求。一个车站售票信息管理系统应达到的目标是提供及时、广泛的信息服务,加快信息检索的效率,实况灵活的查询,减轻管理人员制作报表和统计分析的负担,且系统规模不太大但又要保证支持日常工作的要求,以便系统应易于扩充,

4、方便日后统一联网与管理,提高管理水平。 车售票系统是用计算机管理车站票务信息的一种计算机应用技术的创新,在计算机还未普及之前售票业务都是由工作人员人工完成的,查询方式来操作的.现在一般的车站售票业务都采用计算机智能化管理,采用计算机作为工具的实用的计算机订单管理程序来帮助前台管理员进行更有效的车票业务查询,出售管理工作。车票出售管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。 1 1系统需求分析 1.1系统功能需求分析 车站售票管

5、理系统要求具有方便、快速的销售功能,包括车票的预订和退票的功能,能够支持团体的预订票和退票;能准确地了解售票情况,提供多种查询和统计功能,如车次的查询、时刻表的查询;能按情况所需实现对车次的更改、票价的变动及调度功能;有完善的报表系统;具有一定的维护功能。 经过分析后确定系统应具备以下功能: 、售票功能 销售车票 预订车票 退票 、查询功能 车次查询 时刻表查询 预定情况查询 、调度功能 运价修改 车辆修改 终点站修改 车次修改 、维护功能 车票表修改 密码修改 退出 、统计功能 售票统计 报表打印 1.2数据需求分析 使用结构化分析方法,确定系统的数据主要是运价、车次、终点站名、发车时间和车

6、票,对数据的操作主要有运价修改、车次修改、终点站修改、发车时间修改、售票及打印,可以确定系统的处理逻辑和流程,得到如下所示的系统数据流图。 2 车次修改 车次表 报表打 运价 修改 系统管理 终点站 修改 1.3 数据字典 已售车票运价表 售票 发车修改 印 退票表 售票员 查询 发车时刻终点站名预订车票已售车票经过分析可以得到以下数据流条目: 车次表=车辆编号+车型+座位数 终点站名表=站名+里程 运价表=车型+运价 发车时刻表=车次+车辆编号+站名+发车时间+检票口 已售车票表=票号+乘车日期+车次+站名+发车时间+票价+全半价+工号+退票否 预订车票表=预订号+乘车日期+车次+站名+发车

7、时间+车型+票价+客户名称+订票数量 退票表=票号+退票时间+票价+应退款 售票员编号=工号+姓名 2 系统总体设计 2.1系统总体结构设计 车站售票管理系统 售票功能 查询功能 调度功能 维护功能 统计功能 票票销预退售订票车车车次查询时刻表查询售票情况查询运价修改车辆修改终点站修改车次修改已售车票表预订车票表退票表售票统计报表打印3 2.2系统数据模型设计 2.2.1 E-R图 车辆编号 车型 座位数 站名 里程 车辆 n 开往 m 目标站名 车次 发车时间 检票口 车型 价格 运价 退票时间 票价 应退款 1 计费 顾客名称 退票 1 n n 1 n n 顾客 车票 预订 预订号 车次

8、站名 票号 车次 站名 票价 乘车日期 4 乘车日期 工号 售票 1 售票员 座位号 全半价 退票否 主键: 2.2.2 关系模式 车辆 外键: 目标站名 发车时刻表途径 车票 预订 退票 售票员 运价 2.2.3 数据表 预定表 运价表 车辆表 车票表 5 管理员表 目标站名表 售票员表 发车时刻表 退票表 6 3系统实施 结合PowerBuilder进行数据库应用开发的特点,设计过程可按如下步骤进行: 一、连接tickt数据库: / Profile tickt SQLCA.DBMS = MSS Microsoft SQL Server SQLCA.Database = tickt SQLC

9、A.LogPass = sa SQLCA.ServerName = 37E48911880B444 SQLCA.LogId = sa SQLCA.AutoCommit = False SQLCA.DBParm = connect; open(w_welcome) 二、制作登陆界面: 系统分为管理员登陆和售票员登陆,并且他们的权限是不同的,在后面的系统功能介绍中会做详细的介绍。 7 登陆代码: string username,pas username = trim(sle_name.text) pas = trim(sle_pas.text) if isnull(username) or tri

10、m(username)= then messagebox(提示,请输入用户名) sle_name.setfocus return end if if isnull(pas) or trim(pas)= then messagebox(提示,请输密码) sle_pas.setfocus return end if string temp if rb_2.checked=true then select 密码 into :temp from 售票员表 where 工号=:username; elseif rb_1.checked=true then select 密码 into :temp fro

11、m 管理员表 where 工号=:username; else messagebox(提示,请输入用户类型) end if if sqlca.sqlcode =0 then 8 if trim(temp)=pas then open(w_main) if rb_2.checked=true then mainmenu.m_调度.m_运价修改.enabled=false mainmenu.m_调度.m_车辆修改.enabled=false mainmenu.m_调度.m_终点站修改.enabled=false mainmenu.m_调度.m_车次修改.enabled=false mainmenu

12、.m_维护.m_车票表修改.enabled=false mainmenu.m_维护.m_预订车票表修改.enabled=false mainmenu.m_维护.m_退票表修改.enabled=false mainmenu.m_维护.m_密码修改.enabled=false end if close(w_login) else messagebox(错误,输入有误) end if else messagebox(错误,用户名或密码错误) sle_name.setfocus return end if 二、系统主界面: 下面介绍部分功能: 1 车票销售功能 输入目的地点击查询后 9 查询语句: l

13、ong rows int a,b string target,checi if trim(sle_1.text)= then messagebox(提示,请输入目的地) sle_1.setfocus return end if target=trim(sle_1.text) if len(target)0 then dw_chepiao.setfilter(车票表_站名=+target+) dw_chepiao.filter rows =dw_chepiao.retrieve if rows=0 then messagebox(提示,无车票) return end if checi=dw_ch

14、epiao.object.车票表_车次1 a=dw_chepiao.object.发车时刻表_已订座位数1 b=dw_chepiao.object.车辆表_座位总数1 return end if 销售语句: int a,b string checi if ba then a=a+1 Update 发车时刻表 set 发车时刻表.已订座位数=:a 10 where 发车时刻表.车次=:checi; if sqlca.sqlcode0 then messagebox(提示,车票销售失败) rollback; return end if commit; messagebox(提示,销售成功) els

15、e messagebox(提示,座位数以满) return end if 查询到信息后点击销售按钮,销售成功后再次查询已订座位数变化了 其中售票窗口的控件的建立如下图所示: 2下面演示预定功能和预定查询功能 选择好车次后输入预定的信息 11 预定语句: string checi,cname,piaoshu,zhanming zhanming=sle_4.text cname=sle_1.text checi=sle_3.text piaoshu=sle_2.text select 车次 into :checi from 预定表 where 车次=:checi; if len(checi)=0

16、then messageBox(错误,没有这个车次!) return end if insert into 预定表(车次,站名,顾客名称,票数)values(:checi,:zhanming,:cname,:piaoshu); commit; messageBox(谢谢使用!,预定成功) 预定成功后查询预定情况会在预定表中生成一条相映的记录: 3演示退票功能: 12 将退票人的信息输入后再查询预定情况: 此时定票数改变, 4演示统计功能: 13 统计功能代码: long rows string target if trim(sle_1.text)= then messagebox(提示,请输入

17、车次) sle_1.setfocus return end if target=trim(sle_1.text) if len(target)0 then dw_1.setfilter(发车时刻表_车次=+target+) dw_1.filter rows =dw_1.retrieve if rows=0 then messagebox(提示,无此车次) return end if /checi=dw_1.object.车票表_车次1 /a=dw_chepiao.object.发车时刻表_已订座位数1 /b=dw_chepiao.object.车辆表_座位总数1 return end if 1

18、4 5演示密码修改功能: 密码修改代码为: string password1,password2,oldpassword password1=trim(sle_pas1.text) password2=trim(sle_pas2.text) oldpassword=trim(sle_oldpas.text) if isnull(password1) or len(password1)=0 then messagebox(提示,请输入新密码) return end if if isnull(password2) or len(password2)=0 then messagebox(提示,请输入

19、确认密码) return end if if isnull(oldpassword) or len(oldpassword)=0 then messagebox(提示,请输入旧密码) return end if if password1password2 then messagebox(错误,两次密码不一致) sle_pas1.text= sle_pas2.text= sle_pas1.setfocus return end if if userkind=售票员 then 15 update 售票员表 set 密码=:password1 where 工号=:username; end if i

20、f userkind=管理员 then update 管理员表 set 密码=:password1 where 工号=:username; end if if sqlca.sqlcode0 then rollback; messagebox(提示,旧密码错误) return end if commit; messagebox(提示,密码修改成功) close(w_mimaxiugai) 6演示各种查询功能: 车次表和时刻表查询功能: 7演示修改功能: 终点站修改 16 车次修改 其他修改例如:运价、车辆、车票表修改同上 4 系统评价 4.1 系统特色 首先通过登录界面进行登录,登录的身份分为管

21、理员和售票员,售票员的用户名为自17 己的工号。 售票员登录后能使用的菜单有:售票、查询、统计。 1、 售票菜单下有:销售车票、预订车票、退票等功能. 2、 查询菜单下有:车次查询、时刻表查询、预定情况查询。 3、 统计菜单有:统计功能。售票统计可以按车次进行统计,列出每一个次车所卖出的票数。 管理员登录后能使用的菜单有:售票、查询、调度、维护、统计。 2、 调度菜单下有:运价修改、车辆修改、终点站修改、车次修改。运价修改可以修改运输的单价。车辆修改可以进行对车辆进行添加、修改、删除。终点站修改可以进行对终点站的添加、修改、删除。车次修改可以进行添加、修改、删除车次实现调度。 3、 维护菜单下

22、有:车票表修改,密码修改,退出。车票表修改、预订车票表修改具有更新功能。密码修改可以让登录者修改密码。 4.2 系统不足及改进 系统还有许多不人性化和智能化的地方,许多方面需要改进,比如预定票功能,预定者预定完只后要在预定修改里才能体现出来,验证已订到票比较罗嗦了一点,不能和预定同步进行,还有就是统计售票总数方面做的不是很理想,还有许多不完善的地方,还有一个不符合实际情况的地方就是在建立数据库的时候只想到了一个车次只能到一个地方,也就是直达车次,这点还不符合实际情况,需要改进和完善的。系统的打印报表功能由于实际情况的限制没法实现,在以后的设计中应该添加这一个功能。 5 课程设计心得 这次2个多

23、星期的数据库课程设计期间穿插了许多考试,因此没能把全部的精力放在课程设计上面,但是仍然学到很多很多以前没有接触过的东西,除了提高了自己开发数据库系统的能力,培养了多方面思考问题的能力,是我这次课程设计最大的收获。 在设计的过程中遇到过各种各样的问题,因为这个学期初次接触powerbuilder,而且在平常的上机实验过程中没有涉及到学习过这个软件,一开始确实是感觉到不知所措,无从下手,但是借助参考图书馆的资料和以前别人开发的例子,还是慢慢的对它熟悉起来,最终完成了车站售票管理系统。 通过这次课程设计加深了我对数据库基础理论和基本知识的理解,使我很好的掌握了数据库应用系统设计开发的基本方法,并且提

24、高了我综合运用所学知识和增强实际动手能力。 通过这个设计,我了解到一个大型的计算机管理系统必须有一个正确的设计指导思想,通过合理的选择数据结构,操作系统以及开发环境,构成一个完善的系统,才能充分发挥计算机信息管理优势。现代化的汽车站售票是集预定车票、售票 、退票、车次查询、报表及其他各种服务,车站售票组织庞大,服务项目多,信息量大,要想提高劳动生产,降低成本,提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理。 因为数据库的设计需要人性化,考虑各个方面的问题,这就需要设计者本身有这方面的能力。同时也反映出自己的许多不足,掌握知识不是很牢固,很难把书本上的知识运用到实际,这是自己的一个缺点和不足,同时我还发现自己考虑问题不够全面,有的问题是实际操作中会遇到的,但是自己却很难把这一问题体现在设计中并很好的解决它。这是以后学习中需要引以为戒的地方。这个系统的功能虽然有所欠缺,但是心理还是比较高兴的,因为这是到目前为止自己开发的第一个实用系统,在以后的学习中一定回经常复习数据库的知识,一步步的提高自己的开发数据库系统的能力。 18

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号