数据库系统开发——旅游公司机票查询及预订系统

摘   要

       本系统是主要针对机票查询及预定功能开发的小型系统,通过SQL Server 2008数据库和Visual Studio 2010的连接,在Visual Studio 2010中创建winform文件进行c#的程序编写,实现对SQL Server2008数据库中录入的数据信息及表格信息的调用。Visual Studio 2010调用数据库中的信息后,通过可视化界面将航班信息显示出来。在可视化界面中输入出发地、目的地后可查询相应航班,若要取消行程可删除订单,并且可进行用户的注册及密码的修改,实现了用户预订机票的基本功能。

 

关键词:机票预定,机票查询,c#,Visual Studio 2010,SQL Server 2008

 

 


 

目录

第一章 需求分析

       1.1 功能需求

          1.1.1  系统功能模块

           1.1.2预订模块

       1.2 数据流图

       1.3 功能模块图

第二章 概念结构设计

       2.1 局部 E-R图

       2.2 整体E-R图

第三章 逻辑结构设计

       3.1 关系模式

       3.2 数据关系图

第四章 物理结构设计

       4.1 存储记录结构设计

第五章 数据库的实施

       5.1 建立数据库

       5.2 数据表的建立

       5.3 存入数据

       5.4 存储过程

       5.5 创建触发器

第六章 系统实现

       6.1 系统核心代码及运行截屏

第七章 总结

        7.1 总结及心得体会

  

 

第一章 需求分析

1.1 功能需求

       随着时代的发展,人们旅游出行的次数越来越多,旅游业越来越发达,针对旅游公司帮助客人订机票的需求,建立此系统。小型旅游公司的订票及预订系统主要功能是查询某一城市到另一城市的航班,并帮客人预订,在行程取消时可将订单删除。该系统能够对所需航程机票的航班号、航空公司、出发时间、到达时间和票价进行查询,并选择预订数量和出发日期,以方便客人的旅程。

  1.1.1  系统功能模块

      机票查询及预定系统主要包括用户登录,航班公司、航班号、出发时间、到达时间和成人票价的查询、预订功能。

       (1) 用户登录管理

            不同用户设置不同的账号及密码,用账号和密码登陆后才能够进行查询和预订,用户可以注册新的账号,修改已有账号的密码。

      (2) 机票查询管理

            选择不同的出发地和目的地,点击查询,可查出不同的可预订航班。

      (3) 机票预定管理

            查询出相应的航班后,可自行设置出发时间和机票数,点击预订,即可预订成功。

      (4) 订单管理

            订单预订成功后,若行程取消或改变,可根据订单编号删除原有订单,重新进行预订。

  1.1.2预订模块

      本机票查询及预定系统的主要功能是机票查询和预订:

            (1) 查询所需航班。

            (2) 修改出发地、目的地、预订数量和出发日期。

            (3) 增加和删除预定信息及订单。

1.2 数据流图

数据库系统开发——旅游公司机票查询及预订系统 

图 1-1 数据流图

1.3 功能模块图

 数据库系统开发——旅游公司机票查询及预订系统 

图 1-2 功能模块图

 

 

第二章 概念结构设计

2.1 局部 E-R图

 数据库系统开发——旅游公司机票查询及预订系统 

图 2-1 用户E-R图

 

 数据库系统开发——旅游公司机票查询及预订系统 

 

图 2-2  城市E-R图

 数据库系统开发——旅游公司机票查询及预订系统 

图 2-3  航空公司E-R图

 

 数据库系统开发——旅游公司机票查询及预订系统 

图 2-4 订单E-R图

 

 数据库系统开发——旅游公司机票查询及预订系统 

图 2-5 航班信息E-R图

 

  

2.2 整体E-R图

 数据库系统开发——旅游公司机票查询及预订系统 

图 2-6 整体E-R图

 

 

第三章 逻辑结构设计

 3.1 关系模式

      该系统的关系模式主要有以下几种:

            用    户   表:usertable( account ,password

            城市信息表:Cityinfo ( id , cityname )

            航空公司表:Airwaysinfo ( id , airways )

            航班信息表:Flightinfo ( flightno , airwaysid , leavecity , destination , leavetime , landtime , price )

            订   单    表:Orderinfo ( orderinfo , flightno , leavedate , number )

3.2 数据关系图

 数据库系统开发——旅游公司机票查询及预订系统

图 3-1 数据关系图

 

 

第四章 物理结构设计

4.1 存储记录结构设计

      在物理结构中,数据的基本存取单位是存储记录。有逻辑结构就可以设计存储记录结构,一个存储记录可以与多个逻辑记录相对应。存储记录就包括记录的组成,数据项的类型和长度等。

            (1) 用户表包括账户和密码

列名

字段类型

约束条件

账号

Char(30)

主码

密码

Char(30)

主码

 

            (2) Cityinfo 包括 id 和 cityname

列名

字段类型

约束条件

Id

int

主码

cityname

nvarchar(50)

非空

 

            (3) Airwaysinfo 包括 id 和 airways

列名

字段类型

约束条件

Id

int

主码

airways

nvarchar(50)

非空

 

            (4) Flightinfo ( flightno,airwaysid,leavecity,destination,leavetime,landtime,price )

列名

字段类型

约束条件

flightno

Nvarchar(50)

主码

airwaysid

int

非空

leavecity

int

非空

destination

int

非空

leavetime

nvarchar(50)

非空

landtime

nvarchar(50)

非空

price

money

非空

 

            (5) Orderinfo ( orderinfo,flightno,leavedate,number )

列名

字段类型

约束条件

orderinfo

int

主码

flightno

nvarchar(50)

非空

leavedate

nvarchar(50)

非空

number

int

非空

 

 

第五章 数据库的实施

5.1 建立数据库

 create database MyTicket 

5.2 数据表的建立 

 1 create table 用户表 (
 2 帐号  char(50) not null,
 3 密码  char(50) not null,
 4 primary key(帐号,密码))
 5  
 6 create table cityinfo (
 7 id int   primary key,
 8 cityname nvarchar(50) not null)
 9  
10 create table airwaysinfo (
11 id int  primary key,
12 airways nvarchar(50) not null)
13  
14 create table flightinfo(
15 flightno nvarchar(50) primary key,
16 airwaysid int not null,
17 leavecity int not null,
18 destination int not null,
19 leavetime nvarchar(50) not null,
20 landtime nvarchar(50) not null,
21 price money not null,
22 foreign key(airwaysid) references airwaysinfo(id),
23 foreign key(leavecity) references cityinfo(id),
24 foreign key(destination) references airwaysinfo(id))
25  
26 create table orderinfo(
27 orderinfo int primary key,
28 flightno  nvarchar(50) not null,
29 leavedate nvarchar(50) not null,
30 number int not null,
31 foreign key(flightno) references flightinfo(flightno))

5.3 存入数据

 1 insert into airwaysinfo values(1,中国国航)
 2 insert into airwaysinfo values(2,上海航空)
 3 insert into airwaysinfo values(3,山东航空)
 4 insert into airwaysinfo values(4,海南航空)
 5 insert into airwaysinfo values(5,东方航空)
 6 insert into airwaysinfo values(6,北京航空)
 7  
 8 insert into cityinfo values(1,上海)
 9 insert into cityinfo values(2,北京)
10 insert into cityinfo values(3,三亚)
11 insert into cityinfo values(4,沈阳)
12 insert into cityinfo values(5,杭州)
13 insert into cityinfo values(6,深圳)
14  
15 insert into flightinfo values(CA137,1,2,5,08:30,11:30,1200)
16 insert into flightinfo values(CA148,4,1,2,13:30,16:30,1450)
17 insert into flightinfo values(CA356,2,2,4,21:40,02:30,950)
18 insert into flightinfo values(CA888,3,4,6,06:50,10:20,1100)
19 insert into flightinfo values(CZ1437,5,3,1,22:30,03:30,1000)
20 insert into flightinfo values(CZ8137,2,6,5,11:30,14:30,800)

 

5.4 存储过程

           1.城市表的存储过程

1 create procedure pro_cityinfo
2 @id int,@cityname nvarchar(50)
3 as
4 insert into cityinfo (id,cityname)
5 values (@id,@cityname)

           2.航空公司表的存储过程

1 create procedure pro_airwaysinfo
2 @id int,@airways nvarchar(50)
3 as
4 insert into airwaysinfo (id,airways)
5 values (@id,@airways)

           3.航班信息表的存储过程

1 create procedure pro_flightinfo
2 @flightno nvarchar(50),@airwaysid int,@leavecity int,@destination int,
3 @leavetime nvarchar(50),@landtime nvarchar(50),@price money
4 as
5 insert into flightinfo (flightno,airwaysid,leavecity,
6 destination,leavetime,landtime,price)
7 values (@flightno,@airwaysid,@leavecity,
8 @destination,@leavetime,@landtime,@price)

           4.订单表的存储过程

1 create procedure pro_orderinfo
2 @orderinfo int,@flightno  nvarchar(50),@leavedate nvarchar(50),@number int
3 as
4 insert into orderinfo (orderinfo,flightno,leavedate,number)
5 values (@orderinfo,@flightno,@leavedate,@number)

           5.用户表的存储过程

1 create procedure pro_user
2 @account char(30),@password char(30)
3 as
4 insert into usertable (account,password)
5 values (@account,@password)

 

5.5 创建触发器

        当在航班信息表中插入一条新的信息时,如果插入信息的城市名和航空公司未出现过,那么在航班公司表中插入新的航空公司名,在城市表中插入新的城市名。

           1.创建触发器使城市表里增加新的城市

           (1) 

1 create trigger tr_fli1 
2 on flightinfo for after insert
3 as
4 insert into cityinfo 
5 where id =(select leavecity from  inserted)

           (2)

1 create trigger tr_fli2
2 on flightinfo for after insert
3 as
4 insert into cityinfo 
5 where id =(select destination from  inserted)

           2.创建触发器使航空公司表里增加新的航空公司ID

1 create trigger tr_fli3 
2 on flightinfo for after insert
3 as
4 insert into airwaysinfo 
5 where id =(select airwaysid from  inserted)

 

 

第六章 系统实现

6.1 系统核心代码及运行结果

        (1)登录界面代码及运行结果

 

数据库系统开发——旅游公司机票查询及预订系统
 1 namespace BookTicket
 2 {
 3     public partial class FrmLogin : Form
 4     {
 5         public FrmLogin()
 6         {
 7             InitializeComponent();
 8         }
 9  
10         private void FrmLogin_Load(object sender, EventArgs e)
11         {
12             label1.BackColor = Color.Transparent;
13             label1.Parent = pictureBox1;//将pictureBox1设为标签的父控件
14             //pictureBox1.Controls.Add(label1);
15             label1.Location = new Point(80, 80);
16  
17             label2.BackColor = Color.Transparent;
18             label2.Parent = pictureBox1;
19  
20             label3.BackColor = Color.Transparent;
21             label3.Parent = pictureBox1;//将pictureBox1设为标签的父控件
22  
23             checkBox1.BackColor = Color.Transparent;
24             checkBox1.Parent = pictureBox1;
25          }
26         /// <summary>
27         /// 登录事件
28         /// </summary>
29         /// <param name="sender"></param>
30         /// <param name="e"></param>
31         private void button1_Click(object sender, EventArgs e)
32         {
33             string userno = txtUserNo.Text.Trim();//取出账号
34             string pw = textPassword.Text.Trim();//取出密码
35             //连接数据库
36             string constr = @"Data Source=.;Initial Catalog=MyTicket;User ID=20173967;Pwd=20173967";
37             SqlConnection mycon = new SqlConnection(constr);//实例化连接对象
38             mycon.Open();
39             //确定账号和密码
40             SqlCommand mycom = mycon.CreateCommand();       //创建SQL命令执行对象
41             string s1 = "select account,password from usertable where account=‘" + userno + "‘ and password=‘" + pw + "";
42             //编写SQL命令
43             mycom.CommandText = s1;                           //执行SQL命令
44             SqlDataAdapter myDA = new SqlDataAdapter();       //实例化数据适配器
45             myDA.SelectCommand = mycom;                       //让适配器执行SELECT命令
46             DataSet myDS = new DataSet();                     //实例化结果数据集
47             int n = myDA.Fill(myDS, "register");         //将结果放入数据适配器,返回元祖个数
48             if (n != 0)
49             {
50                 MessageBox.Show("登录成功!", "提示");
51                 this.Hide();
52                 FrmBookTicket frm = new FrmBookTicket();
53                 frm.Show();
54             }
55             else
56             {
57                 MessageBox.Show("用户名或密码错误,请重试!","提示");
58                 txtUserNo.Text = "";
59                 textPassword.Text = "";
60             }
61         }
62         /// <summary>
63         /// 退出程序
64         /// </summary>
65         /// <param name="sender"></param>
66         /// <param name="e"></param>
67         private void button2_Click(object sender, EventArgs e)
68         {
69             Environment.Exit(-1);//退出应用程序
70         }
71  
72         private void checkBox1_CheckedChanged(object sender, EventArgs e)
73         {
74           if (checkBox1. Checked)
75             textPassword.PasswordChar = \0;// 直接显示源
76           else
77             textPassword.PasswordChar =*;// 用*代替显示
78  
79          }
80  
81         private void regist_Click(object sender, EventArgs e)
82         {
83             this.Hide();
84             Frmregister f1 = new Frmregister();
85             f1.Show();
86         }
87  
88         private void button3_Click(object sender, EventArgs e)
89         {
90             this.Hide();
91             Frmchange f2 = new Frmchange();
92             f2.Show();
93         }
94  
95      }
96 }
登录界面

 数据库系统开发——旅游公司机票查询及预订系统

图6-1 登录界面

 

       (2) 注册界面代码及运行结果

数据库系统开发——旅游公司机票查询及预订系统
 1 namespace BookTicket
 2 {
 3     public partial class Frmregister : Form
 4     {
 5         public Frmregister()
 6         {
 7             InitializeComponent();
 8         }
 9  
10  
11         private void Frmregister_Load_1(object sender, EventArgs e)
12         {
13             lbluserno.BackColor = Color.Transparent;
14             lbluserno.Parent = pictureBox1;
15  
16             lblpassword.BackColor = Color.Transparent;
17             lblpassword.Parent = pictureBox1;
18  
19             copassword.BackColor = Color.Transparent;
20             copassword.Parent = pictureBox1;
21         }
22  
23         private void button2_Click_1(object sender, EventArgs e)
24         {
25             this.Hide();
26             FrmLogin f1 = new FrmLogin();
27             f1.Show();
28         }
29  
30         private void button1_Click(object sender, EventArgs e)
31         {
32             //检查是否已经存在
33             string userID = userno.Text.Trim();  //取出账号
34             string password = userPw.Text.Trim();  //取出密码
35             //连接数据库
36             string constr = @"Data Source=.;Initial Catalog=MyTicket;User ID=20173967;Pwd=20173967";
37             SqlConnection mycon = new SqlConnection(constr);                  //实例化连接对象
38             mycon.Open();
39  
40             //查询新注册的用户是否存在
41             SqlCommand checkCmd = mycon.CreateCommand();       //创建SQL命令执行对象
42             string s = "select account from usertable where account=‘" + userID + "";
43             checkCmd.CommandText = s;
44             SqlDataAdapter check = new SqlDataAdapter();       //实例化数据适配器
45             check.SelectCommand = checkCmd;                    //让适配器执行SELECT命令
46             DataSet checkData = new DataSet();                 //实例化结果数据集
47             int n = check.Fill(checkData, "register");         //将结果放入数据适配器,返回元祖个数
48             if (n != 0)
49             {
50                 MessageBox.Show("用户名存在");
51             }
52  
53             else if (userno.Text == "" || userPw.Text == "" || ensurePw.Text == "")
54             {
55                 MessageBox.Show("账号或密码不能为空!", "提示");
56             }
57             else if (userPw.Text != ensurePw.Text)
58             {
59                 MessageBox.Show("两次密码不一致!", "提示");
60  
61             }
62             else
63             {
64                 MessageBox.Show("注册成功!", "提示");
65  
66                 StringBuilder sql = new StringBuilder();
67                 sql.Append("insert into usertable ([account],[password])");
68                 sql.AppendFormat(" Values (‘{0}‘,‘{1}‘)  ", userID, password);
69  
70                 DBHelper helper = new DBHelper();
71  
72                 try
73                 {
74                     SqlCommand command = new SqlCommand(sql.ToString(), helper.Connection);
75                     helper.OpenConnection();
76                     //执行增删改
77                     int result = command.ExecuteNonQuery();
78                 }
79                 catch (Exception ex)
80                 {
81                     // Console.WriteLine(ex.Message);
82                     MessageBox.Show("发生错误,请联系管理员" + ex.Message);
83                 }
84                 finally
85                 {
86                     helper.CloseConnection();
87                 }
88                 this.Hide();
89                 FrmLogin f1 = new FrmLogin();
90                 f1.Show();
91             }
92  
93         }
94    }
95 }
注册界面

数据库系统开发——旅游公司机票查询及预订系统

图6-2 注册界面

 

       (3) 修改密码界面代码及运行结果

数据库系统开发——旅游公司机票查询及预订系统
 1 namespace BookTicket
 2 {
 3     public partial class Frmchange : Form
 4     {
 5         public Frmchange()
 6         {
 7             InitializeComponent();
 8         }
 9  
10         private void button2_Click(object sender, EventArgs e)
11         {
12             this.Hide();
13             FrmLogin f1 = new FrmLogin();
14             f1.Show();
15         }
16  
17         private void button1_Click(object sender, EventArgs e)
18         {
19             string userno = txtuserid.Text.Trim();//取出账号
20             string pw = txtoldpw.Text.Trim();//取出密码
21             string npw = txtnewpw.Text.Trim();//取出新密码
22             //连接数据库
23             string constr = @"Data Source=.;Initial Catalog=MyTicket;User ID=20173967;Pwd=20173967";
24             SqlConnection mycon = new SqlConnection(constr);//实例化连接对象
25             mycon.Open();
26             //确定账号和密码
27             SqlCommand mycom = mycon.CreateCommand();       //创建SQL命令执行对象
28             string s1 = "select account,password from usertable where account=‘" + userno + "‘ and password=‘" + pw + "";
29             //编写SQL命令
30             mycom.CommandText = s1;                           //执行SQL命令
31             SqlDataAdapter myDA = new SqlDataAdapter();       //实例化数据适配器
32             myDA.SelectCommand = mycom;                       //让适配器执行SELECT命令
33             DataSet myDS = new DataSet();                     //实例化结果数据集
34             int n = myDA.Fill(myDS, "register");              //将结果放入数据适配器,返回元祖个数
35             if (txtuserid.Text == "" || txtoldpw.Text == "" || txtnewpw.Text == "" || txtensurepw.Text == "")
36             {
37                 MessageBox.Show("账号或密码不能为空!", "提示");
38             }
39             else if (n == 0)
40             {
41                 MessageBox.Show("原密码输入错误!请重试", "提示");
42             }
43             else if (txtnewpw.Text != txtensurepw.Text)
44             {
45                 MessageBox.Show("两次密码不一致!", "提示");
46             }
47             else
48             {
49                 MessageBox.Show("修改密码成功!", "提示");
50                 StringBuilder sql = new StringBuilder();
51                 sql.Append("update usertable set password = " + "" + npw + "" + " where account = " + "" + userno+ "" );
52                 DBHelper helper = new DBHelper(); 
53  
54                 try
55                 {
56                     SqlCommand command = new SqlCommand(sql.ToString(), helper.Connection);
57                     helper.OpenConnection();
58                     //执行增删改
59                     int result = command.ExecuteNonQuery();
60                 }
61                 catch (Exception ex)
62                 {
63                     // Console.WriteLine(ex.Message);
64                     MessageBox.Show("发生错误,请联系管理员" + ex.Message);
65                 }
66                 finally
67                 {
68                     helper.CloseConnection();
69                 }
70                 this.Hide();
71                 FrmLogin f1 = new FrmLogin();
72                 f1.Show();
73             }
74  
75         }
76  
77         private void Frmchange_Load(object sender, EventArgs e)
78         {
79             label4.BackColor = Color.Transparent;
80             label4.Parent = pictureBox1;
81  
82             label1.BackColor = Color.Transparent;
83             label1.Parent = pictureBox1;
84  
85             label2.BackColor = Color.Transparent;
86             label2.Parent = pictureBox1;
87  
88             label3.BackColor = Color.Transparent;
89             label3.Parent = pictureBox1;
90         }
91     }
92 }
修改密码界面

数据库系统开发——旅游公司机票查询及预订系统 

图6-3 修改密码界面

 

       (4) 机票查询及预订界面代码及运行结果

数据库系统开发——旅游公司机票查询及预订系统
  1 namespace BookTicket
  2 {
  3     public partial class FrmBookTicket : Form
  4     {
  5         DataSet ds;  // 数据集   
  6  
  7         public FrmBookTicket()
  8         {
  9             InitializeComponent();
 10         }
 11  
 12         // 填充数据集,绑定到ComboBox显示
 13         private void BookTicketForm_Load(object sender, EventArgs e)
 14         {
 15             grpFlightInfo.BackColor = Color.Transparent;
 16             grpFlightInfo.Parent = pictureBox1;//将pictureBox1设为标签的父控件
 17             //pictureBox1.Controls.Add(label1);
 18             grpFlightInfo.Location = new Point(80, 80);
 19  
 20             grpOrderInfo.BackColor = Color.Transparent;
 21             grpOrderInfo.Parent = pictureBox1;
 22  
 23              
 24              
 25             // 查询城市数据,填充数据集
 26             DBHelper helper = new DBHelper();
 27             string sqlCity = "SELECT * FROM CityInfo";
 28             SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlCity, helper.Connection);
 29  
 30             ds = new DataSet();
 31  
 32             dataAdapter.Fill(ds, "CityInfo");
 33             DataRow row = ds.Tables["CityInfo"].NewRow();
 34             row[0] = "-1";
 35             row[1] = "请选择";
 36             ds.Tables["CityInfo"].Rows.InsertAt(row, 0);
 37  
 38             // 获得座位数据源的视图
 39             DataView dvLeaveCity = new DataView(ds.Tables["CityInfo"]);
 40             DataView dvDestination = new DataView(ds.Tables["CityInfo"]);
 41              
 42             // 绑定数据源
 43             this.cboLeaveCity.DataSource = dvLeaveCity;
 44             this.cboLeaveCity.ValueMember = "Id";
 45             this.cboLeaveCity.DisplayMember = "CityName";
 46  
 47             this.cboDestination.DataSource = dvDestination;
 48             this.cboDestination.ValueMember = "Id";
 49             this.cboDestination.DisplayMember = "CityName";
 50  
 51             // 查询航班信息,填充到数据集
 52             StringBuilder sqlFlight = new StringBuilder();
 53             sqlFlight.Append("SELECT F.[FlightNO],A.[Airways],F.[LeaveCity],F.[LeaveTime],F.[Destination],F.[LandTime],F.[Price]");
 54             sqlFlight.Append(" FROM FlightInfo AS F,AirwaysInfo AS A");
 55             sqlFlight.Append(" WHERE F.[AirwaysId] = A.[Id]");
 56             SqlDataAdapter adapter = new SqlDataAdapter(sqlFlight.ToString(), helper.Connection);            
 57             adapter.Fill(ds, "FlightInfo");
 58         }
 59  
 60         // 根据查询条件,重新填充数据集
 61         private void btnSearch_Click(object sender, EventArgs e)
 62         {
 63             // 根据查询条件显示查询结果
 64             ShowResult();
 65  
 66             // 清空预定部分的内容
 67             foreach (Control c in grpOrderInfo.Controls)
 68             {
 69                 if (c is TextBox)
 70                 {
 71                     ((TextBox)c).Text = string.Empty;
 72                 }
 73             }        
 74         }
 75  
 76         /// <summary>
 77         /// 绑定DataGridView显示查询结果
 78         /// </summary>
 79         private void ShowResult()
 80         {
 81             if (cboLeaveCity.Text == "请选择" || cboDestination.Text == "请选择")
 82             {
 83                 MessageBox.Show("请选择出发地和目的地!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
 84             }
 85             else
 86             {
 87                 DataView dvFlight = new DataView(ds.Tables["FlightInfo"]);
 88                 dvFlight.RowFilter = string.Format("LeaveCity={0} AND Destination={1}",
 89                     Convert.ToInt32(cboLeaveCity.SelectedValue),Convert.ToInt32(cboDestination.SelectedValue));
 90                 this.dgvTicketInfo.DataSource = dvFlight;
 91             }
 92         }
 93  
 94         // 根据用户的选择,显示航班的详细信息
 95         private void dgvTicketInfo_MouseClick(object sender, MouseEventArgs e)
 96         {
 97             if (dgvTicketInfo.Rows.Count > 0)
 98             {
 99                 // 显示选中的航班信息
100                 this.txtFlightNO.Text = dgvTicketInfo.CurrentRow.Cells["FlightNO"].Value.ToString();
101                 this.txtAirways.Text = dgvTicketInfo.CurrentRow.Cells["Airways"].Value.ToString();
102                 this.txtFrom.Text = this.cboLeaveCity.Text;
103                 this.txtTo.Text = this.cboDestination.Text;
104                 this.txtLeaveTime.Text = dgvTicketInfo.CurrentRow.Cells["LeaveTime"].Value.ToString();
105                 this.txtLandTime.Text = dgvTicketInfo.CurrentRow.Cells["LandTime"].Value.ToString();
106                 this.txtPrice.Text = dgvTicketInfo.CurrentRow.Cells["Price"].Value.ToString();
107             }            
108         }
109  
110         // 单击“预订”按钮,将预订信息写入数据库       
111         private void btnOrder_Click(object sender, EventArgs e)
112         {
113             if (ValidateInput())
114             {
115                 // 获得要插入的数据
116                 Random random = new Random();
117                 int orderId = random.Next(100000, 999999);  // 订单编号
118                 string flightNo = this.txtFlightNO.Text;    // 预定的航班号
119                 string leaveDate = this.dtpDate.Value.ToShortDateString();// 出发日期
120                 int number = (int)this.numNumber.Value;
121  
122                 // 插入数据到数据库
123                 StringBuilder sql = new StringBuilder();
124                 sql.Append("INSERT INTO OrderInfo ([OrderId],[FlightNo],[LeaveDate],[Number])");
125                 sql.AppendFormat(" Values ({0},‘{1}‘,‘{2}‘,{3})  ", orderId, flightNo, leaveDate, number);
126  
127                 DBHelper helper = new DBHelper();
128  
129                 try
130                 {
131                     SqlCommand command = new SqlCommand(sql.ToString(), helper.Connection);
132                     helper.OpenConnection();
133                     //执行增删改
134                     int result = command.ExecuteNonQuery();
135                     if (result > 0)
136                     {
137                         MessageBox.Show("预定成功!订单编号为" + orderId.ToString(),"提示");
138                        // MessageBox.Show(message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
139                     }
140                     else
141                     {
142                         MessageBox.Show("预订失败,请重试!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
143                     }
144                 }
145                 catch (Exception ex)
146                 {
147                    // Console.WriteLine(ex.Message);
148                     MessageBox.Show("发生错误,请联系管理员" );
149                 }
150                 finally
151                 {
152                     helper.CloseConnection();
153                 }
154                 /*this.Hide();
155                 Frmchange f1 = new Frmchange();
156                 f1.Show();*/
157             }
158         }
159  
160         // 关闭窗体
161         private void btnClose_Click(object sender, EventArgs e)
162         {
163             Environment.Exit(-1);
164         }
165  
166         /// <summary>
167         /// 验证预订部分的用户输入
168         /// </summary>
169         /// <returns>验证成功返回True,失败返回False</returns>
170         private bool ValidateInput()
171         {
172             if (txtFlightNO.Text == string.Empty)
173             {
174                 MessageBox.Show("请选择一个航班!", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
175                 return false;
176             }
177             if (dtpDate.Value < DateTime.Now)
178             {
179                 MessageBox.Show("请选择正确的出发日期!", "输入提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
180                 dtpDate.Focus();
181                 return false;
182             }
183             else
184             {
185                 return true;
186             }
187         }
188  
189         private void dtpDate_ValueChanged(object sender, EventArgs e)
190         {
191              
192         }
193  
194         private void button1_Click(object sender, EventArgs e)
195         {
196             this.Hide();
197             Frmdelete f1 = new Frmdelete();
198             f1.Show();
199         }
200  
201         private void dgvTicketInfo_CellContentClick(object sender, DataGridViewCellEventArgs e)
202         {
203  
204         }               
205     }
206 }
机票查询及预订界面

数据库系统开发——旅游公司机票查询及预订系统

图6-4 查询与预订机票界面

 

       (5) 删除订单界面代码及运行结果

数据库系统开发——旅游公司机票查询及预订系统
 1 namespace BookTicket
 2 {
 3     public partial class Frmdelete : Form
 4     {
 5         public Frmdelete()
 6         {
 7             InitializeComponent();
 8         }
 9  
10         private void button1_Click(object sender, EventArgs e)
11         {
12             string orderid = textBox1.Text.Trim();
13             //连接数据库
14             string constr = @"Data Source=.;Initial Catalog=MyTicket;User ID=20173967;Pwd=20173967";
15             SqlConnection mycon = new SqlConnection(constr);//实例化连接对象
16             mycon.Open();
17             //确定订单编号
18             SqlCommand checkCmd = mycon.CreateCommand();       //创建SQL命令执行对象
19             string s = "select orderid from orderinfo where orderid = ‘" + orderid + "";
20             checkCmd.CommandText = s;
21             SqlDataAdapter check = new SqlDataAdapter();       //实例化数据适配器
22             check.SelectCommand = checkCmd; //执行select命令
23             DataSet checkData = new DataSet();                 //实例化结果数据集
24             int n = check.Fill(checkData, "register");         //将结果放入数据适配器,返回元祖个数
25             if (n != 0)
26             {
27                 StringBuilder sql = new StringBuilder();
28                 sql.Append("delete from OrderInfo where orderid = ‘" + orderid + "");
29                  DBHelper helper = new DBHelper();
30  
31                 try
32                 {
33                     SqlCommand command = new SqlCommand(sql.ToString(), helper.Connection);
34                     helper.OpenConnection();
35                     //执行增删改
36                     int result = command.ExecuteNonQuery();
37                     if (result > 0)
38                     {
39                         MessageBox.Show("删除成功!" ,"提示");
40                     }
41                     else
42                     {
43                         MessageBox.Show("删除失败,请重试!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
44                     }
45                 }
46                 catch (Exception ex)
47                 {
48                     // Console.WriteLine(ex.Message);
49                     MessageBox.Show("发生错误,请联系管理员");
50                 }
51                 finally
52                 {
53                     helper.CloseConnection();
54                 }
55                 FrmBookTicket f1 = new FrmBookTicket();
56                 f1.Show();
57                 this.Close();
58             }
59         }
60         private void button2_Click(object sender, EventArgs e)
61         {
62             FrmBookTicket f1 = new FrmBookTicket();
63             f1.Show();
64             this.Close();
65         }
66  
67         private void Frmdelete_Load(object sender, EventArgs e)
68         {
69             label1.BackColor = Color.Transparent;
70             label1.Parent = pictureBox1;
71         }
72  
73     }
74 }
删除订单界面

数据库系统开发——旅游公司机票查询及预订系统 

图6-5 删除订单界面

 

       (6)数据库连接代码 

数据库系统开发——旅游公司机票查询及预订系统
 1 namespace BookTicket
 2 {
 3     static class Program
 4     {
 5         /// <summary>
 6         /// 应用程序的主入口点。
 7         /// </summary>
 8         [STAThread]
 9         static void Main()
10         {
11             Application.EnableVisualStyles();
12             Application.SetCompatibleTextRenderingDefault(false);
13             Application.Run(new FrmLogin());
14         }
15     }
16 }
数据库连接

 

第七章 总结

7.1 总结及心得体会

  通过这次课程设计,对数据库系统开发有了比较深入的了解。首先,我们领会到了系统分析的重要性,如:系统功能模块分析和设计、数据库需求分析和设计和数据库概念结构设计(E-R图),都在系统开发中占有重要的地位。在开始开发系统之前,要花费大量时间做好系统需求分析,这是系统开发的实用性,可行性,安全性的前提和保障。其次,在设计数据库过程中,边学习边实践,学会了数据库结构设计、存储过程及触发器的构建。在设计系统过程中,我们自主学习了c#语言,做出了符合本系统要求的可视化界面。

  本旅游公司机票查询及预订系统成功记录了航班信息、航空公司信息、用户登录和订单信息,可以通过显示的可视化页面有效的帮助用户查询航班信息和预定航班。通过本次小学期的自主实践,深刻了解了系统开发的全过程,同时也认识到自身开发经验的不足,为以后的学习积累经验并为以后的工作打下基础。

 

数据库系统开发——旅游公司机票查询及预订系统

上一篇:数据库学习之八:mysql 基础优化-索引管理


下一篇:MongoDB