1、用VS打开代码中的工程文件,选择工具,毗连到数据库。
2、打开执行文件即可。
一、需求分析:
1.1功能需求
1.1.1 查询:
选择出发地和目标地以及出发日期,可查询全部车次,也可分车次范例查询,车次范例包括:高铁、动车、直达等。车次信息包括:车次ID,车号,出发地,目标地,出发时间,到到时间,历时,列车范例,座位范例,票价,票数等,车次信息只答应用户查询,不能修改。还可根据车次范例分类查询。
1.1.2 预定:
要想预定必须登陆,用户登陆后,通过订票系统,根据自己你的需求找到自己的车次举行预定。要求订票纪录应包括:座位信息、旅客信息、车次信息、金额,车票状态包括已付出和未付出。
1.1.3 退票:
用户登录后,通过退票系统,找到自己的订票信息,选择要退的车票。
1.1.4 注册:
想要订票的用户必须先注册然后登陆订票。注册信息包括:用户名、登录暗码、姓名、证件号、邮箱、手机号等。
1.1.5 修改暗码:用户登陆后可以修改个人信息。
二、数据流图和数据字典
2.1数据流图
2.2数据字典:
主要的数据流定义
――――――――――――――――――――――――――――――
订票需求数据流
数据流名:订票需求
阐明:客户欣赏票务信息后,向系统发出自己的订票需求,
包括始发所在、目标所在以及乘车时间。
来源去向:数据来自客户需求,流向订票系统
数据布局:客户订票需求表
――――――――――――――――――――――――――――――
票务信息数据流
数据流名:票务信息
阐明:当订票系统获得订票需求后,给出与客户需求相应的票务信息,
包括始发所在、目标所在、乘车时间、到达时间、票价
来源去向:数据来自订单需求表,流向客户信息管理系统
数据布局:票务信息表
――――――――――――――――――――――――――――――
主要的数据存储定义
――――――――――――――――――――――――――――――――
数据存储名:订票信息
阐明:纪录了客户的订票信息
输入:订票信息
输出:票务信息
数据描述:始发所在、目标所在、乘车时间、到达时间、票价、乘车
区间、座位号
存取方式:联机处理;检索和更新;主要是随机检索。
――――――――――――――――――――――――――――――――
数据存储名:付出纪录
阐明:纪录了客户的付出信息
输入:订票信息
输出:付出信息
数据描述:将付出信息参加订房信息或者订票信息
存取方式:联机处理;检索和更新;主要是随机检索。
――――――――――――――――――――――――――――――――
数据存储名:退订纪录
阐明:纪录了客户的退订信息
输入:订房信息或订票信息
输出:退订信息
数据描述:将退订信息参加订房信息或者订票信息
存取方式:联机处理;检索和更新;主要是随机检索。
三、布局设计
3.1概念布局设计E-R图
3.2逻辑布局设计
主要是客户与系统之间的使用关系。抽象成关系模式:
客户(用户名,暗码,身份证号,接洽方式)
车票系统(出发地,目标地)
用户信息系统(订票信息,用户信息)
规范化
客户(用户名,暗码,身份证号,接洽方式,出发地,目标地,所在地)
该关系满足三范式
需要用到的表
表名属性约束UserInfouserName唯一PSW非空userId主键userPhone唯一 表名属性约束TrainInfotrainNo主键startStation无arriveStation无startTime无arriveTime无timeTake无 表名属性约束SeatInfotrainNo主键seatTypeseatPriceseatPrice>=0seatLeftseatLeft >=0 表名属性约束BookTicketInfotrainNo主键、外键约束startStation arriveStation startTime arriveTime timeTake seatType seatPrice seatNo userId主键、外键约束 表名属性约束LoginInfouserName PSW remPSW 针对于每张表
UserInfo 包含主键、唯一键约束
TrainInfo 主键trainNo
SeatInfo 包括主键(trainNo,seatType),check约束
BookTicketInfo 主键(trainNo,userId)外键约束
LoginInfo
四、主要SQL语句
4.1创建数据库
create database TravelManagement;
4.2创建表
-- 用户注册表
use TravelManagement;
create table tbRegister
(
username varchar(30) primary key,--用户名
psw varchar(20),--暗码
name varchar(30),--姓名
idtype varchar(20),--证件范例
id char(20) unique,--证件号码
mail varchar(20),--邮箱
phone char(15),--手机号码
class char(30),--旅客范例
balance money default 2000
);
--
-- 登录表
--
GO
use TravelManagement;
create table tbLogged
(
username varchar(30)
);
--
--票务信息表
--
GO
use TravelManagement;
create table tbTicket
(
车次 char(6),
出发站 char(10),
到达站 char(10),
日期 nchar(12),
出发时间 char(6),
到达时间 char(6),
历时 nchar(10),
商务座 smallint,
商务座代价 smallmoney,
特等座 smallint,
特等座代价 smallmoney,
一等座 smallint,
一等座代价 smallmoney,
二等座 smallint,
二等座代价 smallmoney,
高级软卧 smallint,
高级软卧代价 smallmoney,
软卧 smallint,
软卧代价 smallmoney,
硬卧 smallint,
硬卧代价 smallmoney,
软座 smallint,
软座代价 smallmoney,
硬座 smallint,
硬座代价 smallmoney,
无座 smallint,
无座代价 smallmoney,
备注 nchar(3),
primary key(车次,出发站,到达站,日期)
);
--
-- 购票信息表
--
GO
use TravelManagement;
create table tbTheBoughtTicket
(
username varchar(30),
车次信息 nchar(50),
席位信息 nchar(30),
旅客信息 nchar(20),
票款金额 nchar(20),
车票状态 nchar(5),
操作 nchar(2) default '退票',
primary key(车次信息,席位信息)
);
--
-- 车站城市表
--
GO
use TravelManagement;
create table tbCity
(
city varchar(30) primary key
);
4.3存储过程
-- 当买票或者退票时,举行账户余额的增减
create proc AddOrMinusBalance
@username varchar(30), @minus money, @tag smallint
as
begin
if @tag = 0
update tbRegister
set balance = balance + @minus
where username=@username
if @tag = 1
update tbRegister
set balance = balance - @minus
where username=@username
end
--
-- 当买票或者退票时,举行相关车票的增减
--
GO
create proc AddOrMinusTicket
@trainno char(6), @startstation char(10), @endstation char(10),
@startdate nchar(12), @seattype char(10), @tag smallint
as
begin
if @seattype = '商务座'
update tbTicket
set 商务座=商务座 + 1 - 2 * @tag
where 车次 = @trainno and 出发站 = @startstation and 到达站 = @endstation and 日期 = @startdate
if @seattype = '特等座'
update tbTicket
set 特等座=特等座 + 1 - 2 * @tag
where 车次 = @trainno and 出发站 = @startstation and 到达站 = @endstation and 日期 = @startdate
if @seattype = '一等座'
update tbTicket
set 一等座=一等座 + 1 - 2 * @tag
where 车次 = @trainno and 出发站 = @startstation and 到达站 = @endstation and 日期 = @startdate
if @seattype = '二等座'
update tbTicket
set 二等座=二等座 + 1 - 2 * @tag
where 车次 = @trainno and 出发站 = @startstation and 到达站 = @endstation and 日期 = @startdate
if @seattype = '高级软卧'
update tbTicket
set 高级软卧=高级软卧 + 1 - 2 * @tag
where 车次 = @trainno and 出发站 = @startstation and 到达站 = @endstation and 日期 = @startdate
if @seattype = '软卧'
update tbTicket
set 软卧=软卧 + 1 - 2 * @tag
where 车次 = @trainno and 出发站 = @startstation and 到达站 = @endstation and 日期 = @startdate
if @seattype = '硬卧'
update tbTicket
set 硬卧=硬卧 + 1 - 2 * @tag
where 车次 = @trainno and 出发站 = @startstation and 到达站 = @endstation and 日期 = @startdate
if @seattype = '软座'
update tbTicket
set 软座=软座 + 1 - 2 * @tag
where 车次 = @trainno and 出发站 = @startstation and 到达站 = @endstation and 日期 = @startdate
if @seattype = '硬座'
update tbTicket
set 硬座=硬座 + 1 - 2 * @tag
where 车次 = @trainno and 出发站 = @startstation and 到达站 = @endstation and 日期 = @startdate
if @seattype = '无座'
update tbTicket
set 无座=无座 + 1 - 2 * @tag
where 车次 = @trainno and 出发站 = @startstation and 到达站 = @endstation and 日期 = @startdate
end
--
-- 信息的修改
--
GO
create proc InfoChange
@username varchar(30), @mail varchar(20), @phone char(15)
as
begin
update tbRegister
set mail = @mail, phone = @phone
where username = @username
end
4.4触发器
* 创建触发器
-- 当用户注册后,默认账户余额为元,当用户余额小于时,主动规复为
Go
create trigger tUpdate_tbRegister on tbRegister
after update
as
begin
declare @money money =0
select @money = balance from inserted
if @money < 0
update tbRegister
set balance = 2000
where username =
(select username from inserted)
End
4.5数据关系图
五、运行结果
5.1点击exe文件后进入系统
点击查询后显示结果
上面是所有的结果,还可以根据车次分别查询每一类车次信息:这是K-快速列车的信息:
5.2点击预定,假如没登陆,则提示请先登陆:
我们先注册一个账号
5.3注册完后登陆到系统开始预订车票,选择自己要定的车票,点击预定:
订完后还可以查看自己的订票信息:
六、实行总结
每次放假回家大多数的人都会选择坐火车归去,但是买票是一件令人头疼的事情。所以这次选择做这个火车票购票系统。但是这个系统功能有点简单,本质上来讲只有查询余票,插入用户信息,修改用户信息等功能。
实行刚开始不知道怎样动手,在网上找了好久,不仅要找怎样写代码的问题,还要查VS的有些使用细节,过程中借鉴了许多网上的代码,多次询问同砚配置环境的问题。第一次写这么多的SQL语句,通过这次大作业实行,更加熟练的把握了常用的SQL语句的使用,也体验到了开发一个数据库系统的整个过程,对这个过程也有了新的认识。但是过程中也有许多问题,主要有一下几点:
1、对于C#、SQL等语言不够熟悉,不能熟练运用。许多库函数不知道,还得百度,也借鉴了许多网上的代码。对于接口的运用也很陌生,不能整体把握整个系统,界面设计也很粗糙。
2、需求不明确。不能把对于用户的需求对应到数据库的详细操作上,虽然自己想的某个功能很好,但是不知道在数据库中怎么去实现,功能也改了许多多少,另有之前想的功能由于太复杂直接放弃了。
3、对数据库用的不够深,不够多。之前的实行都是写几个SQL语句就可以办理的,但是这次的大作业要一下用这么多功能,实现起来照旧很费劲的,好要用别的语言,还要毗连数据库。
通过这次大作业也知道了自己的许多不敷,认识到自己照旧知道的太少,要想做出更好的东西,要走的路还很长。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |