车站售票管理系统数据库课设(共63页)_第1页
车站售票管理系统数据库课设(共63页)_第2页
车站售票管理系统数据库课设(共63页)_第3页
车站售票管理系统数据库课设(共63页)_第4页
车站售票管理系统数据库课设(共63页)_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上中文摘要本文针对车站的售票实际情况,按照软件工程的结构化设计思想,经过项目的需求分析、概要设计、详细设计,以及编码实现和调试等步骤设计开发了车站售票系统。并运用E-R图和数据库逻辑结构、系统流程图、以及程序流程图,对该系统的数据需求、数据库、系统软件结构、系统流程、以及处理过程等进行了分析和设计。工具软件利用VS2012开发工具和SQL Server 2012数据库来开发这个车站售票管理系统。该系统要解决的是车站售票工作所要解决的问题,可以满足车站售票的基本要求,包括票务管理、查询、报表打印、车次管理、账户管理、修改密码等六个方面的功能。该系统能运用到车站售票的工作中

2、,根据用户的需求,设置其权限,并快捷方便的为用户提供服务。目录专心-专注-专业1 引言课程设计的目的:按照关系型数据库的基本原理,综合运用所学的基本知识,以小组为单位,设计开发一个小型的管理信息系统。通过对一个实际问题的分析、设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力,另一方面,使学生能深入理解和灵活掌握教学内容。课程设计的要求:考察市长途汽车站、火车站售票业务,设计车站售票管理系统。要求:具有方便、快速的售票功能,包括车票的预订和退票功能,能够支持团体的预订票和退票。能准确地了解售票情况,提供多种查询和统计功能,如车次的查询、时刻表的

3、查询等;能按情况所需实现对车次的更改、票价的变动及调度功能;完善的报表系统;具备一定的维护功能,如数据安全管理(含备份与恢复)、操作员管理、权限设置等;该系统的开发环境为 vs2012 和sql server 2012 ,是基于c#以及sql server 数据库开发的一个车站售票管理系统。我们小组有我以及同班同学严鑫剑,分工为:严鑫剑负责开发用户登录、票务管理、查询三个子模块,本人负责开发车次管理、账户管理、修改密码三个子模块。另外因为不知道如何具体在c#环境下运用触发器以及报表打印,所以系统中用到的触发器以及报表打印功能是我们两个共同完成的。2概要设计2.1.系统需求分析本系统是严鑫剑与司

4、房昭同学共同开发的,集车站售票退票,线路查询修改,车次管理,报表打印,账户管理等功能为一体的应用软件。车站售票管理系统,为车站快速便捷售票提供了一个较好的解决方案。本系统具有以下功能:1.具有方便、快速的售票功能,包括车票的预订和退票功能,能够支持团体的预订票和退票。2.能准确地了解售票情况,提供多种查询和统计功能,如车次的查询、时刻表的查询等。3.能按情况所需实现对车次的更改、票价的变动及调度功能。4.完善的报表系统。5.具备一定的维护功能,如数据安全管理(含备份与恢复)、操作员管理、权限设置等。在开发过程中,按照软件工程的步骤,从设计到开发采用了面向对象的思想和技术,采用了SQL SERV

5、ER 2012数据库,使得本系统可以方便的和其他子系统进行数据交换。同时,注意从软件的图形应用界面上优化软件质量,使得本系统具有很强的可操作性。1.开发的系统的一般描述车站售票管理系统采用C/S体系结构,结合车站的实际需要,对票务管理和线路、车次信息进行高效有序的管理,提供丰富的管理和分析功能,用户界面友好,能满足车站售票管理的软件,提高车站工作效率。本系统旨在车站管理人员与售票人员工作更加方便,以减轻工作人员的负担。快速的对信息进行管理,输入,输出,查找,修改,删除的操作,是大量的工作更加的具体化,直观化,合理化。2.产品功能开发的系统软件具有数据的更新,借阅的判定,数据的管理等功能。3.用

6、户特点本软件的使用对象是车站管理员与售票员。可以方便的利用该软件进行车站售票的各种操作。4.一般约束(1)本系统作为C/S结构的一个应用系统,不可避免的要受到C/S结构的约束。在其实施的各个阶段都要服从它的一些规划,包括功能设计、系统配置和计划。(2)硬件环境。Intel Pentium 166MHz或以上; 内存:需要至少512MHZ; 网络容量:少于50人需16Mb/s的令版环网和10Mb/s可以勉强满足要求,建议100Mb/s的以太网或者更高。设备需求:打印机。(3)软件环境运行于Windows7及更高版本的操作系统之上。SQL Server2012数据库。5.假设和依据本系统要求具有较

7、高的可靠性和保密性。对于不同的用户给予不同的权限,对于各个用户的信息要安全稳定的存储。本系统开发的时间为:2012年12月20日至2013年01月02日。2.2.系统结构设计 本系统主要由六个模块构成分别为:用户登录,票务管理,查询,报表打印,修改密码,车次管理,账户管理。通过这个六个模块,可以实现对车票的出售与退订,车次的查询、修改、增加与删除,线路的查询、修改,增加与删除,用户信息修改等等。通过这下功能在本系统的实现,系统的使用者可以相当方便的对售票进行方便的管理。在权限方面,分为管理员与售票员,功能区分,管理效率提高。车站售票管理系统结构图2.3.功能模块设计本系统通过各个模块与数据库之

8、间的调用,实现了售票管理所需的各个功能,方便使用。1. 登录模块鉴于车站售票的实际情况,对于本系统的使用者,设置为管理员与售票员两种,方便管理。系统管理员能享有查询,报表打印,修改用户密码,车次管理,账户管理五种功能。而售票员可以进行票务管理,查询,报表打印,修改密码四种操作。对于不同的用户,给予不同的权限,享有不同的操作。2. 票务管理这是售票员用户特有的操作模块,主要负责车站的售票退票工作。为了满足人们购票需要,加入了团体购票与团体退票功能。在售票过程中,首先要进行条件查询。在本系统中,则是依据出发站与到达站为查询依据,并显示查询结果。出入要乘坐的车次,选择购票。对于车票不足的车次则不能购

9、买。在购买车票时,如选择的座位已售出,能提示不能购买,选择其他座位。选择正确的座位,则购票成功。对于团体购票,同样的需要先进行查询,输入乘坐车次,对于车票,座位的各种情况给予判断,首先保证剩余的车票数量不小于售票数量才能进行团体售票。在进行团体售票的座位选择时,加入了一个循环,在完成团体订票以前,对于座位情况一直给予判定,直至车票购买完毕,循环结束。退票功能首先需要查询车票所属车次,查询成功后,弹出输入座位号界面窗口,输入已经购买过的座位号,选择退票,则会成功退票。对于退票中的车次信息,座位信息都演进行判定,对于不存在的信息要给予提示,方面操作。在使用团体退票功能时,也是需要输入所属车次,不同

10、的是还需输入需要退票的数量,用来做循环。成功判定退票后,依次输入退票的座位号,直至退票完毕。在输入退票座位号是,如果未完成全部退票,就中断了操作,指挥进行已经输入座位号的退票操作,对于未输入的不会有影响,对剩余票数也是正常显示。3. 查询操作在本系统中,包括了两种查询。一种为车次查询。输入正确的车次,则会在Datagridview显示出关于本车次的详细信息,包括车次,始发站,终点站,价格,余票,限载人数具体信息,方便操作人员进行其他操作。另一种线路查询则需要输入起始站与终点站,则会出现所有这个路线所以车次的详细信息。对于不正确的信息都要给予错误报告。4. 报表打印5. 修改密码为了保证用户的安

11、全系,以及管理员的权限操作,可以进行密码修改。在修改时,需要输入用户名及其次用户的原密码才能进行密码修改操作。对于用户名不存在或密码错误都要进行报错。再确认新密码后可以修改成功。6. 车次管理此模块为管理员特有模块,是为了可以是管理员根据实际情况对车次,票价进行改动,便于车站的系统管理。鉴于管理员可能需要更改某个车次的路线,特加入了车次修改功能方便其操作。输入需要修改的车次,以及实际的始发站及终点站,如果车次存在,即可完成修改。对于不正常的输入要给予提示。根据实际情况,车票价格不可能是一成不变的,所以加入改动票价功能是十分必要的,输入始发站与终点站和需要修改成的价格。如果输入的这条线路存在,则

12、按照你输入的价格进行修改。如果输入线路不存在,则给予提示。车次录入功能则是管理员管理车次最重要的一个功能,输入车次号,始发站,终点站,发车时间,价格,限载人数。如果输入数据没有问题则可以完成录入操作。车次删除功能是为了管理员删除那些无用的车次信息而设定的操作。输入需要删除的车次,如果数据库信息里有输入的车次,则完成删除信息,如没有,则给予提示。7. 账户管理此功能也是管理员特有操作。为了保证系统的安全性,以及系统操作员权限的区分,此功能可以用来添加和删除用户,也可以修改账户的权限。对系统的安全性有所改善。系统处理流程图3 详细设计3.1系统数据库设计3.1.1概念结构设计根据需求分析,E-R图

13、表示的概念模型如下:E-R图3.1.2逻辑结构设计由E-R图转换成为的关系模型如下:用户表(用户名,密码,身份类型)车次信息表(车次编号,起始站,终点站,出发时间,票价,余票,限载人数)车票信息表(车次编号,座位号)用户表主码为用户名,每一个非主属性既不部分依赖于码,也不传递依赖于码,所以符合3NF。车次信息表主码为车次编号,每一个非主属性既不部分依赖于码,也不传递依赖于码,所以符合3NF。车票信息表主码为车次编号和座位号,每一个非主属性既不部分依赖于码,也不传递依赖于码,所以符合3NF。按以上关系模式在sql server 2012中建立的表,如下所示:用户信息表车次信息表车票信息表建立外码

14、,保持参照完整性。Trainno表中的trainno 为主码,ticket表中seat,trainno 为主码,所以trainno 为ticket表的外码。为了让ticket表中座位号更加规范化,所以添加check约束。输入表达式为:(seat between 1 and 99)触发器的应用:为了更好的同步车票余票信息,为ticket表建立触发器gengxingjian,每当ticket表插入数据时,对应的车次余票减1。触发器gengxinjia每当有数据删除时,对于车次余票加1。建立gengxinjian触发器:Select *from ticketGOCreate trigger geng

15、xinjian on ticket after insertas begindeclare trainno nvarchar(10);select trainno=trainnofrom insertedupdate Trainno set lastticket=lastticket-1 where trainno=trainnoend建立gengxinjia触发器:Select*from ticketGoCreate trigger gengxinjia on ticket after deleteas begindeclare trainno nvarchar(10);select tra

16、inno=trainnofrom deletedupdate Trainno set lastticket=lastticket+1 where trainno=trainnoend3.2系统主要功能模块设计对于本系统的使用者,设置为管理员与售票员两种,方便管理。系统管理员能享有查询,报表打印,修改用户密码,车次管理,账户管理五种功能。而售票员可以进行票务管理,查询,报表打印,修改密码四种操作。登录模块流程图这是售票员用户特有的操作模块,主要负责车站的售票退票工作。为了满足人们购票需要,加入了团体购票与团体退票功能。票务管理流程图在本系统中,包括了两种查询。一种为车次查询。输入正确的车次,另一

17、种线路查询则需要输入起始站与终点站。对于不正确的信息都要给予错误报告。查询流程图在修改时,需要输入用户名及其次用户的原密码才能进行密码修改操作。对于用户名不存在或密码错误都要进行报错。再确认新密码后可以修改成功。修改密码流程图 此模块为管理员特有模块,包括车次修改,票价改动,车次删除,车次录入四个功能,方便管理员操作。车次管理流程图此功能也是管理员特有操作,可以用来添加和删除用户,也可以修改账户的权限。对系统的安全性有所改善。用户管理流程图3.3各模块的主要算法对应的原代码在系统原代码中含有大量的数据库连接,和关闭的代码,过于重复,故有时候会省略此部分代码。1.登录模块登录模块的主要算法是:把

18、输入的数据与数据库中存放用户信息的用户表进行比对,如果一致,则登陆成功。登录功能主要的源代码为: string sql = "select * from Login where username='" + textBox1.Text + "' and password='" + textBox2.Text + "'and type='"+ comboBox1.Text+"'" try DataSet ds = new sqlConnect().Getds(sql);

19、if (ds.Tables0.Rows.Count > 0) string usertype; usertype = ds.Tables0.Rows02.ToString(); MessageBox.Show("登陆成功", "登录", MessageBoxButtons.OK, MessageBoxIcon.Information); Main main = new Main(); main.Show(); if (usertype = "售票员") main.account.Enabled = false; main.tra

20、inmanagement.Enabled = false; if (usertype = "管理员") main.piaowu.Enabled = false; this.Hide(); else MessageBox.Show("用户名或密码错误,请重新输入!", "登录", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); this.textBox1.Clear(); this.textBox2.Clear(); this.textBox1.Focus(); 2.查询

21、模块查询的算法就是把用户输入的数据当作查询条件,从数据库里面查询出相关信息。思路是一样的,所以在此写其中的线路查询源代码: string sql = " select trainno as 车次, starttime as 发车时间 , price as 价格 , lastticket as 余票, number as 限载人数 from Trainno where 1=1" DataSet ds = new DataSet(); SqlDataAdapter da; SqlConnection conn = new SqlConnection("Data Sou

22、rce=SIFANGZHAO-PC;Initial Catalog=ticket;Integrated Security=True;"); if (textBox2.Text.Equals("") && textBox3.Text.Equals("") MessageBox.Show("请输入始发站或者终点站"); else try if(textBox2.Text.Trim().Equals("")=false) sql +="and start='"+tex

23、tBox2.Text.Trim()+"'" if (textBox3.Text.Trim().Equals("") = false) sql += "and finish='" + textBox3.Text.Trim() + "'" SqlCommand comm = new SqlCommand(sql, conn); da = new SqlDataAdapter(comm); da.Fill(ds); dataGridView2.DataSource = ds.Tables0; ca

24、tch MessageBox.Show("查询信息失败!"); finally conn.Close(); 3.票务管理票务管理的算法主要分为购票和退票两个主要的算法。购票算法中首先需要根据始发站与终点站,查询出可以到达的车次,再根据购票者的选择选择车次,再选择座位,至此购票完成。购票的算法:1.查询的代码: string sql = " select trainno as 车次, starttime as 发车时间 , price as 价格 , lastticket as 余票, number as 限载人数 from Trainno where start=

25、'" + textBox1.Text.Trim() + "' and finish='" + textBox2.Text.Trim() + "'" DataSet ds = new DataSet(); SqlDataAdapter da; SqlConnection conn = new SqlConnection("Data Source=SIFANGZHAO-PC;Initial Catalog=ticket;Integrated Security=True;"); if (textBo

26、x1.Text.Equals("")|textBox2.Text.Equals("") MessageBox.Show("请输入起始站和终点站"); else try SqlCommand comm = new SqlCommand(sql, conn); da = new SqlDataAdapter(comm); da.Fill(ds); dataGridView1.DataSource = ds.Tables0; catch MessageBox.Show("查询信息失败!"); finally conn.C

27、lose(); 2.接下来输入车次,如果是团体购票还需要输入数量,选择购买的时候,检查一下选择的车次余票是否大于或者等于需要购买的数量,如果输入的车次无效或者票数不足,应当进行提示。代码如下: if (textBox7.Text.Trim().Equals("") | textBox8.Text.Trim().Equals("") = false) Int32 nu; object isnull; SqlConnection connnn = new SqlConnection("Data Source=SIFANGZHAO-PC;Initia

28、l Catalog=ticket;Integrated Security=True;"); string sqll = " select lastticket from Trainno where trainno='" + textBox7.Text.Trim() + "'" SqlCommand cmddd; try connnn.Open(); cmddd = new SqlCommand(sqll, connnn); isnull = (object)cmddd.ExecuteScalar(); nu = Convert.

29、ToInt32(isnull); finally connnn.Close(); string num = textBox8.Text.Trim(); Int32 temp = Convert.ToInt32(num); if (nu >= temp&& isnull!=null) try try MessageBox.Show("选择班次成功,请选择座位!"); tuanmai tm = new tuanmai(this.textBox7.Text.Trim(), textBox8.Text.Trim(); tm.Show(); catch Mess

30、ageBox.Show("购票失败!", "错误", MessageBoxButtons.RetryCancel, MessageBoxIcon.Information); catch MessageBox.Show("购票失败!"); else MessageBox.Show("购票失败,票数不足!或者输入车次错误,不存在此车次!"); else MessageBox.Show("未输入班次或者票的数量,购票失败!请重新输入!"); 3.接下来是选座位,选择座位的时候,系统会显示该车次已经售出

31、的票的座位号。如果用户输入的座位号大于限载量,或者小于0,或者已经售出,应当给出相关提示信息。如果座位号合法有效,可以购买。则购买成功。购买成功后,在这里我们用到了上课学习到的触发器,每购买一张票成功,将售票的车次的余票数量减1。并且如果是团体购票,如果团体购票成功,将选择座位窗体关闭,防止无限买票。保证系统的正常运行。源代码如下:选择座位: SqlConnection connn = new SqlConnection("Data Source=SIFANGZHAO-PC;Initial Catalog=ticket;Integrated Security=True;")

32、; string sqll = " select * from ticket where trainno='" + checi + "' and seat='" + textBox1.Text.Trim() + "'" SqlCommand cmdd; try connn.Open(); cmdd = new SqlCommand(sqll, connn); number = (object)cmdd.ExecuteScalar(); finally connn.Close(); if (number

33、= null) try SqlConnection conn = new SqlConnection("Data Source=SIFANGZHAO-PC;Initial Catalog=ticket;Integrated Security=True;"); string sql = " insert into ticket (trainno,seat) values ('" + checi + "','" + textBox1.Text.Trim() + "')" SqlComma

34、nd cmd; try conn.Open(); cmd = new SqlCommand(sql, conn); cmd.ExecuteNonQuery(); MessageBox.Show("选择座位成功,购买成功!"); count+; if (count = amount) MessageBox.Show("购票完成!"); this.Close(); catch MessageBox.Show("选择座位失败,购买失败!", "错误", MessageBoxButtons.RetryCancel, Mes

35、sageBoxIcon.Information); finally conn.Close(); catch MessageBox.Show("选择座位失败,购买失败!"); else MessageBox.Show("选择座位失败,该座位已经卖出!"); else MessageBox.Show("座位号超出限载量,请重新输入座位号!"); textBox1.Clear(); 触发器的使用:在ticket表建立触发器,每当有数据插入表中,就更新相应车的的余票数量。触发器的代码为:USE ticketGO/* Object: Trigg

36、er dbo.gengxinjian Script Date: 2013/1/3 16:47:16 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER trigger dbo.gengxinjian on dbo.ticket after insertas begindeclare trainno nvarchar(10);select trainno=trainnofrom insertedupdate Trainno set lastticket=lastticket-1 where trainno=trainnoend2.退票的算法首

37、先输入需要退票的车次,如果是团体退票还需要输入退票速来。如果车次无效,应该给出提示信息。如果有效,则输入退票的座位号。如果输入的座位号不合法,如次座位未售出,超出限载量等,应当给出相关提示信息。如果合法,则将其从车票信息表中删除。退票的时候,我们也使用到了触发器,每当有信息从车票信息表中删除,就更新相应的车次的余票。源代码如下: int zuowei = Convert.ToInt32(textBox1.Text.Trim(); int shuliang; SqlConnection con = new SqlConnection("Data Source=SIFANGZHAO-PC

38、;Initial Catalog=ticket;Integrated Security=True;"); string sqlll = " select number from Trainno where trainno='" + checi + "'" SqlCommand cmddd; try con.Open(); cmddd = new SqlCommand(sqlll, con); shuliang = (int)cmddd.ExecuteScalar(); finally con.Close(); if (zuowe

39、i > 0 && zuowei <= shuliang) object number; SqlConnection conn = new SqlConnection("Data Source=SIFANGZHAO-PC;Initial Catalog=ticket;Integrated Security=True;"); string sql = " select * from ticket where trainno='" + checi + "' and seat='" + te

40、xtBox1.Text.Trim() + "'" SqlCommand cmd; try conn.Open(); cmd = new SqlCommand(sql, conn); number = (object)cmd.ExecuteScalar(); finally conn.Close(); if (number != null) SqlConnection connn = new SqlConnection("Data Source=SIFANGZHAO-PC;Initial Catalog=ticket;Integrated Security=

41、True;"); string sqll = " delete from ticket where trainno='" + checi + "' and seat='" + textBox1.Text.Trim() + "'" SqlCommand cmdd; try connn.Open(); cmdd = new SqlCommand(sqll, connn); cmdd.ExecuteNonQuery(); MessageBox.Show("退票成功!"); cou

42、nt+; if (count = amount) MessageBox.Show("退票完成!"); this.Close(); catch MessageBox.Show("退票失败!", "错误", MessageBoxButtons.RetryCancel, MessageBoxIcon.Information); finally connn.Close(); else MessageBox.Show("该车次尚未出售此座位,请重新输入!"); else MessageBox.Show("座位号超出限载量,请重新输入座位号!"); textBox1.Clear(); 触发器的代码:USE ticketGO/* Object: Trigger dbo.gengxingjia Script Date: 2013/1/3 16:46:31 */SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER trigger dbo.gengxingjia on dbo.ticket after deleteas begindeclare trainno nvarchar(10);sel

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论