车站售票管理系统数据库课设.docx

上传人:b****0 文档编号:9341870 上传时间:2023-05-18 格式:DOCX 页数:63 大小:2.09MB
下载 相关 举报
车站售票管理系统数据库课设.docx_第1页
第1页 / 共63页
车站售票管理系统数据库课设.docx_第2页
第2页 / 共63页
车站售票管理系统数据库课设.docx_第3页
第3页 / 共63页
车站售票管理系统数据库课设.docx_第4页
第4页 / 共63页
车站售票管理系统数据库课设.docx_第5页
第5页 / 共63页
车站售票管理系统数据库课设.docx_第6页
第6页 / 共63页
车站售票管理系统数据库课设.docx_第7页
第7页 / 共63页
车站售票管理系统数据库课设.docx_第8页
第8页 / 共63页
车站售票管理系统数据库课设.docx_第9页
第9页 / 共63页
车站售票管理系统数据库课设.docx_第10页
第10页 / 共63页
车站售票管理系统数据库课设.docx_第11页
第11页 / 共63页
车站售票管理系统数据库课设.docx_第12页
第12页 / 共63页
车站售票管理系统数据库课设.docx_第13页
第13页 / 共63页
车站售票管理系统数据库课设.docx_第14页
第14页 / 共63页
车站售票管理系统数据库课设.docx_第15页
第15页 / 共63页
车站售票管理系统数据库课设.docx_第16页
第16页 / 共63页
车站售票管理系统数据库课设.docx_第17页
第17页 / 共63页
车站售票管理系统数据库课设.docx_第18页
第18页 / 共63页
车站售票管理系统数据库课设.docx_第19页
第19页 / 共63页
车站售票管理系统数据库课设.docx_第20页
第20页 / 共63页
亲,该文档总共63页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

车站售票管理系统数据库课设.docx

《车站售票管理系统数据库课设.docx》由会员分享,可在线阅读,更多相关《车站售票管理系统数据库课设.docx(63页珍藏版)》请在冰点文库上搜索。

车站售票管理系统数据库课设.docx

车站售票管理系统数据库课设

中文摘要

本文针对车站的售票实际情况,按照软件工程的结构化设计思想,经过项目的需求分析、概要设计、详细设计,以及编码实现和调试等步骤设计开发了车站售票系统。

并运用E—R图和数据库逻辑结构、系统流程图、以及程序流程图,对该系统的数据需求、数据库、系统软件结构、系统流程、以及处理过程等进行了分析和设计.

工具软件利用VS2012开发工具和SQLServer2012数据库来开发这个车站售票管理系统.该系统要解决的是车站售票工作所要解决的问题,可以满足车站售票的基本要求,包括票务管理、查询、报表打印、车次管理、账户管理、修改密码等六个方面的功能。

该系统能运用到车站售票的工作中,根据用户的需求,设置其权限,并快捷方便的为用户提供服务。

1引言

课程设计的目的:

按照关系型数据库的基本原理,综合运用所学的基本知识,以小组为单位,设计开发一个小型的管理信息系统。

通过对一个实际问题的分析、设计与实现,将原理与应用相结合,使学生学会如何把书本上学到的知识用于解决实际问题,培养学生的动手能力,另一方面,使学生能深入理解和灵活掌握教学内容.

课程设计的要求:

考察市长途汽车站、火车站售票业务,设计车站售票管理系统.要求:

①具有方便、快速的售票功能,包括车票的预订和退票功能,能够支持团体的预订票和退票。

②能准确地了解售票情况,提供多种查询和统计功能,如车次的查询、时刻表的查询等;

③能按情况所需实现对车次的更改、票价的变动及调度功能;

④完善的报表系统;

⑤具备一定的维护功能,如数据安全管理(含备份与恢复)、操作员管理、权限设置等;

该系统的开发环境为vs2012和sqlserver2012,是基于c#以及sqlserver数据库开发的一个车站售票管理系统。

我们小组有我以及同班同学严鑫剑,分工为:

严鑫剑负责开发用户登录、票务管理、查询三个子模块,本人负责开发车次管理、账户管理、修改密码三个子模块。

另外因为不知道如何具体在c#环境下运用触发器以及报表打印,所以系统中用到的触发器以及报表打印功能是我们两个共同完成的。

2概要设计

2。

1.系统需求分析

本系统是严鑫剑与司房昭同学共同开发的,集车站售票退票,线路查询修改,车次管理,报表打印,账户管理等功能为一体的应用软件。

车站售票管理系统,为车站快速便捷售票提供了一个较好的解决方案。

本系统具有以下功能:

1。

具有方便、快速的售票功能,包括车票的预订和退票功能,能够支持团体的预订票和退票。

2.能准确地了解售票情况,提供多种查询和统计功能,如车次的查询、时刻表的查询等。

3。

能按情况所需实现对车次的更改、票价的变动及调度功能。

4。

完善的报表系统。

5.具备一定的维护功能,如数据安全管理(含备份与恢复)、操作员管理、权限设置等。

在开发过程中,按照软件工程的步骤,从设计到开发采用了面向对象的思想和技术,采用了SQLSERVER2012数据库,使得本系统可以方便的和其他子系统进行数据交换。

同时,注意从软件的图形应用界面上优化软件质量,使得本系统具有很强的可操作性。

1.开发的系统的一般描述

车站售票管理系统采用C/S体系结构,结合车站的实际需要,对票务管理和线路、车次信息进行高效有序的管理,提供丰富的管理和分析功能,用户界面友好,能满足车站售票管理的软件,提高车站工作效率。

本系统旨在车站管理人员与售票人员工作更加方便,以减轻工作人员的负担。

快速的对信息进行管理,输入,输出,查找,修改,删除的操作,是大量的工作更加的具体化,直观化,合理化.

2。

产品功能

开发的系统软件具有数据的更新,借阅的判定,数据的管理等功能.

3。

用户特点

本软件的使用对象是车站管理员与售票员.可以方便的利用该软件进行车站售票的各种操作。

4.一般约束

(1)本系统作为C/S结构的一个应用系统,不可避免的要受到C/S结构的约束.在其实施的各个阶段都要服从它的一些规划,包括功能设计、系统配置和计划.

(2)硬件环境。

IntelPentium166MHz或以上;

内存:

需要至少512MHZ;

网络容量:

少于50人需16Mb/s的令版环网和10Mb/s可以勉强满足要求,建议100Mb/s的以太网或者更高。

设备需求:

打印机。

(3)软件环境

运行于Windows7及更高版本的操作系统之上。

SQLServer2012数据库。

5。

假设和依据

本系统要求具有较高的可靠性和保密性。

对于不同的用户给予不同的权限,对于各个用户的信息要安全稳定的存储.

本系统开发的时间为:

2012年12月20日至2013年01月02日.

2。

2。

系统结构设计

本系统主要由六个模块构成分别为:

用户登录,票务管理,查询,报表打印,修改密码,车次管理,账户管理。

通过这个六个模块,可以实现对车票的出售与退订,车次的查询、修改、增加与删除,线路的查询、修改,增加与删除,用户信息修改等等。

通过这下功能在本系统的实现,系统的使用者可以相当方便的对售票进行方便的管理。

在权限方面,分为管理员与售票员,功能区分,管理效率提高.

车站售票管理系统结构图

2。

3。

功能模块设计

本系统通过各个模块与数据库之间的调用,实现了售票管理所需的各个功能,方便使用。

1.登录模块

鉴于车站售票的实际情况,对于本系统的使用者,设置为管理员与售票员两种,方便管理。

系统管理员能享有查询,报表打印,修改用户密码,车次管理,账户管理五种功能.而售票员可以进行票务管理,查询,报表打印,修改密码四种操作.对于不同的用户,给予不同的权限,享有不同的操作。

2.票务管理

这是售票员用户特有的操作模块,主要负责车站的售票退票工作。

为了满足人们购票需要,加入了团体购票与团体退票功能。

在售票过程中,首先要进行条件查询。

在本系统中,则是依据出发站与到达站为查询依据,并显示查询结果。

出入要乘坐的车次,选择购票。

对于车票不足的车次则不能购买。

在购买车票时,如选择的座位已售出,能提示不能购买,选择其他座位。

选择正确的座位,则购票成功。

对于团体购票,同样的需要先进行查询,输入乘坐车次,对于车票,座位的各种情况给予判断,首先保证剩余的车票数量不小于售票数量才能进行团体售票.在进行团体售票的座位选择时,加入了一个循环,在完成团体订票以前,对于座位情况一直给予判定,直至车票购买完毕,循环结束。

退票功能首先需要查询车票所属车次,查询成功后,弹出输入座位号界面窗口,输入已经购买过的座位号,选择退票,则会成功退票。

对于退票中的车次信息,座位信息都演进行判定,对于不存在的信息要给予提示,方面操作.

在使用团体退票功能时,也是需要输入所属车次,不同的是还需输入需要退票的数量,用来做循环。

成功判定退票后,依次输入退票的座位号,直至退票完毕.在输入退票座位号是,如果未完成全部退票,就中断了操作,指挥进行已经输入座位号的退票操作,对于未输入的不会有影响,对剩余票数也是正常显示。

3.查询操作

在本系统中,包括了两种查询。

一种为车次查询。

输入正确的车次,则会在Datagridview显示出关于本车次的详细信息,包括车次,始发站,终点站,价格,余票,限载人数具体信息,方便操作人员进行其他操作。

另一种线路查询则需要输入起始站与终点站,则会出现所有这个路线所以车次的详细信息。

对于不正确的信息都要给予错误报告。

4.报表打印

5.修改密码

为了保证用户的安全系,以及管理员的权限操作,可以进行密码修改。

在修改时,需要输入用户名及其次用户的原密码才能进行密码修改操作。

对于用户名不存在或密码错误都要进行报错。

再确认新密码后可以修改成功.

6.车次管理

此模块为管理员特有模块,是为了可以是管理员根据实际情况对车次,票价进行改动,便于车站的系统管理。

鉴于管理员可能需要更改某个车次的路线,特加入了车次修改功能方便其操作。

输入需要修改的车次,以及实际的始发站及终点站,如果车次存在,即可完成修改。

对于不正常的输入要给予提示。

根据实际情况,车票价格不可能是一成不变的,所以加入改动票价功能是十分必要的,输入始发站与终点站和需要修改成的价格.如果输入的这条线路存在,则按照你输入的价格进行修改。

如果输入线路不存在,则给予提示.

车次录入功能则是管理员管理车次最重要的一个功能,输入车次号,始发站,终点站,发车时间,价格,限载人数。

如果输入数据没有问题则可以完成录入操作。

车次删除功能是为了管理员删除那些无用的车次信息而设定的操作。

输入需要删除的车次,如果数据库信息里有输入的车次,则完成删除信息,如没有,则给予提示。

7.账户管理

此功能也是管理员特有操作。

为了保证系统的安全性,以及系统操作员权限的区分,此功能可以用来添加和删除用户,也可以修改账户的权限。

对系统的安全性有所改善。

系统处理流程图

 

3详细设计

3。

1系统数据库设计

3.1。

1概念结构设计

根据需求分析,E-R图表示的概念模型如下:

E-R图

3。

1。

2逻辑结构设计

由E-R图转换成为的关系模型如下:

用户表(用户名,密码,身份类型)

车次信息表(车次编号,起始站,终点站,出发时间,票价,余票,限载人数)

车票信息表(车次编号,座位号)

用户表主码为用户名,每一个非主属性既不部分依赖于码,也不传递依赖于码,所以符合3NF.

车次信息表主码为车次编号,每一个非主属性既不部分依赖于码,也不传递依赖于码,所以符合3NF。

车票信息表主码为车次编号和座位号,每一个非主属性既不部分依赖于码,也不传递依赖于码,所以符合3NF。

按以上关系模式在sqlserver2012中建立的表,如下所示:

用户信息表

车次信息表

车票信息表

建立外码,保持参照完整性。

Trainno表中的trainno为主码,ticket表中seat,trainno为主码,所以trainno为ticket表的外码。

为了让ticket表中座位号更加规范化,所以添加check约束。

输入表达式为:

(seatbetween‘1’and‘99')

触发器的应用:

为了更好的同步车票余票信息,为ticket表建立触发器gengxingjian,每当ticket表插入数据时,对应的车次余票减1。

触发器gengxinjia每当有数据删除时,对于车次余票加1.

建立gengxinjian触发器:

Select*fromticket

GO

Createtriggergengxinjianonticketafterinsert

as

begin

declare@trainnonvarchar(10);

select@trainno=trainno

frominserted

updateTrainnosetlastticket=lastticket—1wheretrainno=@trainno

end

建立gengxinjia触发器:

Select*fromticket

Go

Createtriggergengxinjiaonticketafterdelete

as

begin

declare@trainnonvarchar(10);

select@trainno=trainno

fromdeleted

updateTrainnosetlastticket=lastticket+1wheretrainno=@trainno

end

3.2系统主要功能模块设计

对于本系统的使用者,设置为管理员与售票员两种,方便管理。

系统管理员能享有查询,报表打印,修改用户密码,车次管理,账户管理五种功能。

而售票员可以进行票务管理,查询,报表打印,修改密码四种操作。

登录模块流程图

 

这是售票员用户特有的操作模块,主要负责车站的售票退票工作。

为了满足人们购票需要,加入了团体购票与团体退票功能.

票务管理流程图

在本系统中,包括了两种查询.一种为车次查询。

输入正确的车次,另一种线路查询则需要输入起始站与终点站。

对于不正确的信息都要给予错误报告。

查询流程图

在修改时,需要输入用户名及其次用户的原密码才能进行密码修改操作。

对于用户名不存在或密码错误都要进行报错.再确认新密码后可以修改成功.

修改密码流程图

此模块为管理员特有模块,包括车次修改,票价改动,车次删除,车次录入四个功能,方便管理员操作。

车次管理流程图

此功能也是管理员特有操作,可以用来添加和删除用户,也可以修改账户的权限。

对系统的安全性有所改善。

用户管理流程图

3。

3各模块的主要算法对应的原代码

在系统原代码中含有大量的数据库连接,和关闭的代码,过于重复,故有时候会省略此部分代码。

1。

登录模块

登录模块的主要算法是:

把输入的数据与数据库中存放用户信息的用户表进行比对,如果一致,则登陆成功。

登录功能主要的源代码为:

stringsql=”select*fromLoginwhereusername=’”+textBox1.Text+"’andpassword=’”+textBox2.Text+”’andtype='”+comboBox1.Text+"’";

try

{

DataSetds=newsqlConnect().Getds(sql);

if(ds.Tables[0]。

Rows。

Count>0)

{

stringusertype;

usertype=ds。

Tables[0].Rows[0][2]。

ToString();

MessageBox.Show(”登陆成功",”登录”,

MessageBoxButtons。

OK,MessageBoxIcon。

Information);

Mainmain=newMain();

main。

Show();

if(usertype=="售票员")

main.account。

Enabled=false;

main.trainmanagement。

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。

查询模块

查询的算法就是把用户输入的数据当作查询条件,从数据库里面查询出相关信息.思路是一样的,所以在此写其中的线路查询源代码:

stringsql="selecttrainnoas车次,starttimeas发车时间,priceas价格,lastticketas余票,numberas限载人数fromTrainnowhere1=1”;

DataSetds=newDataSet();

SqlDataAdapterda;

SqlConnectionconn=newSqlConnection(”DataSource=SIFANGZHAO—PC;InitialCatalog=ticket;IntegratedSecurity=True;");

if(textBox2。

Text.Equals(”")&&textBox3.Text。

Equals(””))

{

MessageBox.Show(”请输入始发站或者终点站”);

}

else

try

if((textBox2。

Text。

Trim().Equals(""))==false)

sql+="andstart=’"+textBox2.Text.Trim()+”’";

if((textBox3。

Text。

Trim()。

Equals(”"))==false)

sql+="andfinish='”+textBox3.Text.Trim()+”’";

SqlCommandcomm=newSqlCommand(sql,conn);

da=newSqlDataAdapter(comm);

da。

Fill(ds);

dataGridView2。

DataSource=ds。

Tables[0];

}

catch

MessageBox.Show(”查询信息失败!

");

}

finally

conn。

Close();

}

3.票务管理

票务管理的算法主要分为购票和退票两个主要的算法。

购票算法中首先需要根据始发站与终点站,查询出可以到达的车次,再根据购票者的选择选择车次,再选择座位,至此购票完成.

购票的算法:

1。

查询的代码:

stringsql="selecttrainnoas车次,starttimeas发车时间,priceas价格,lastticketas余票,numberas限载人数fromTrainnowherestart='"+textBox1。

Text。

Trim()+"'andfinish=’”+textBox2。

Text。

Trim()+"'”;

DataSetds=newDataSet();

SqlDataAdapterda;

SqlConnectionconn=newSqlConnection(”DataSource=SIFANGZHAO—PC;InitialCatalog=ticket;IntegratedSecurity=True;");

if(textBox1.Text。

Equals(””)||textBox2。

Text.Equals(””))

{

MessageBox。

Show("请输入起始站和终点站”);

else

try

{

SqlCommandcomm=newSqlCommand(sql,conn);

da=newSqlDataAdapter(comm);

da.Fill(ds);

dataGridView1。

DataSource=ds.Tables[0];

}

catch

{

MessageBox.Show(”查询信息失败!

");

}

finally

conn.Close();

2。

接下来输入车次,如果是团体购票还需要输入数量,选择购买的时候,检查一下选择的车次余票是否大于或者等于需要购买的数量,如果输入的车次无效或者票数不足,应当进行提示.代码如下:

if((textBox7。

Text。

Trim()。

Equals("")||textBox8.Text.Trim().Equals(”"))==false)

{

Int32nu;

objectisnull;

SqlConnectionconnnn=newSqlConnection("DataSource=SIFANGZHAO—PC;InitialCatalog=ticket;IntegratedSecurity=True;”);

stringsqll=”selectlastticketfromTrainnowheretrainno='"+textBox7.Text.Trim()+"’";

SqlCommandcmddd;

try

{

connnn.Open();

cmddd=newSqlCommand(sqll,connnn);

isnull=(object)cmddd。

ExecuteScalar();

nu=Convert。

ToInt32(isnull);

finally

{

connnn。

Close();

}

stringnum=textBox8.Text。

Trim();

Int32temp=Convert。

ToInt32(num);

if(nu〉=temp&&isnull!

=null)

{

try

try

{

MessageBox。

Show(”选择班次成功,请选择座位!

”);

tuanmaitm=newtuanmai(this。

textBox7。

Text.Trim(),textBox8.Text.Trim());

tm。

Show();

}

catch

MessageBox。

Show(”购票失败!

”,"错误",

MessageBoxButtons。

RetryCancel,MessageBoxIcon.Information);

}

}

catch

MessageBox。

Show("购票失败!

");

}

}

else

MessageBox。

Show(”购票失败,票数不足!

或者输入车次错误,不存在此车次!

");

else

MessageBox。

Show(”未输入班次或者票的数量,购票失败!

请重新输入!

");

3。

接下来是选座位,选择座位的时候,系统会显示该车次已经售出的票的座位号。

如果用户输入的座位号大于限载量,或者小于0,或者已经售出,应当给出相关提示信息。

如果座位号合法有效,可以购买。

则购买成功.购买成功后,在这里我们用到了上课学习到的触发器,每购买一张票成功,将售票的车次的余票数量减1.并且如果是团体购票,如果团体购票成功,将选择座位窗体关闭,防止无限买票.保证系统的正常运行。

源代码如下:

选择座位:

SqlConnectionconnn=newSqlConnection("DataSource=SIFANGZHAO-PC;InitialCatalog=ticket;IntegratedSecurity=True;”);

stringsqll=”select*fromticketwheretrainno=’"+checi+"'andseat='"+textBox1.Text.Trim()+"'";

SqlCommandcmdd;

try

{

connn.Open();

cmdd=newSqlCommand(sqll,connn);

number=(object)cmdd.ExecuteScalar();

 

}

finally

connn。

Close();

}

if(number==null)

{

try

{

SqlConnectionconn=newSqlConnection("DataSource=SIFANGZHAO—PC;InitialCatalog=ticket;IntegratedSecurity=True;”);

stringsql=”i

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

当前位置:首页 > PPT模板 > 简洁抽象

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2