干貨 | C#開發的電影售票系統


01 介紹

一個有會員制的電影院購票系統。具有會員注冊功能,可區分會員和散客兩種身份,實現會員及折扣管理。購票具有挑選電影場次,選擇座位和查看電影信息等功能。

  • 查看電影詳情、獲取排片信息。
  • 選擇場次座位,完成支付,獲取取票信息。
  • 注冊成為影院會員,享受優惠折扣。

代碼獲取

關注我們的公眾號!在后台回復【CSTK】不包括【】即可獲取。

02 設計思路

在功能設計上,一個電影院購票系統,首先需要具備最基礎的功能:影片選擇、場次選擇和座位選擇。在用戶提交選擇后,會需要支付模塊提示用戶付款並完成出票。為了吸引用戶,我們增加了會員的注冊和登錄模塊,為會員用戶提供折扣。

注冊與購票的支付我們的處理是預留一個接口,當做簡單模擬,實際使用可以調用支付寶或微信的支付接口。

在界面設計上,我們為系統添加了好看的背景圖片。通過Detail欄展示用戶信息與折扣,通過Hot Movie欄在最吸引眼球展示熱映電影的海報,提高用戶的購買欲望。最后,作為主要部分的座位選擇欄簡介明了,座位之間間隔明顯,有效的防止用戶錯誤操作。

03 具體設計

通過三層架構來完成影院購票系統的開發,將真個業務應用划分為:界面層(UI層)、業務邏輯層(BLL層)、數據訪問層(DAL層)。對於復雜的系統分層讓結構清晰,便於對系統進行整體的理解、把握;而且便於維護,將各部分之間的相互影響的程度降低到最小,系統基本的架構可以通過工具自動生成代碼。當數據庫發生改變時,只用重新生成代碼,改動業務邏輯層的部分代碼即可。在實施的過程中,難點在於將三層結構進行划分,掌握各層之間的設計思路以及調用關系,下面內容就結合代碼展示具體實現過程。

1) Model層( 封裝數據,使數據在三層中傳輸)

例如Movie:

namespace Model
{
    public class Movie
    {
        [Key]
        public int    MovieID { get; set; }
        public string MovieName{ get; set;  } /// 電影名稱
        public string Actor { get; set; } /// 主演
        public string Director { get; set; }/// 導演名
        public int    Duration { get; set; } //時長
        public string MovieType { get; set; }/// 電影類型
        public string Poster{ get; set; } /// 海報圖片名
    }
}

2) DAL層(提供基本的數據訪問)

實現代碼(以Movies為例):

namespace DAL
{
    public class MovieDAL
    {
        public static List<Movie> GetAllMovies()
        {
            var MoviesQuery = from m in CinemaDbContext.CDbContext.Movies
                              select m;
            return MoviesQuery.ToList();
        }

        public static Movie GetMovieByMovieID(int mID)
        {
            return CinemaDbContext.CDbContext.Movies.Find(mID);
        }
    }
}

3) BLL層(負責處理業務邏輯,在本次的系統開發中,包括了與用戶和影票信息相關的處理)

實現代碼(以TicketBLL為例):

namespace BLL
{
    public class TicketBLL
    {
        public static bool AddTickets(List<Ticket> tickets)
        {
            return true;
        }
    }
}

4) UI層(負責顯示和采集用戶操作)

系統總共包含五個界面,分別為:用戶登錄界面、用戶注冊界面、影院主頁、票務信息確認界面以及支付界面。同時,使用Winform皮膚插件來實現對系統界面整體風格的把控。下面將以界面的為單位來對其實現過程進行描述:

  • 用戶登錄界面

用戶將身份信息寫入文本框后,用其輸入的信息創建新的customer對象,通過調用BLL層的功能將輸入內容與用戶信息比對,最后用判斷語句激活彈窗反饋登陸結果,登陸成功后進入到售票系統首頁。

private void button1_Click(object sender, EventArgs e)
        {
            Customer cLogin = new Customer
            {
                UserName = this.textBox1.Text,
                PassWord = this.textBox2.Text
            };

            if (CustomerBLL.Login(cLogin))
            {
                MessageBox.Show("登錄成功");
                MainForm mainForm = new MainForm();
                mainForm.customerVIP = cLogin;
                mainForm.Show();
                this.Visible = false;
            }
            else
            {
                MessageBox.Show("登錄失敗");
            }
        }

同時,用戶可以點擊注冊按鈕,跳轉到注冊界面完成新用戶的注冊。

        private void button3_Click(object sender, EventArgs e)
        {
            UserRegisterForm userRegisterForm = new UserRegisterForm();
            userRegisterForm.Show();
            this.Visible = false;
        }
  • 用戶注冊界面

用戶將身份信息寫入文本框后,用其輸入的信息創建新的customer對象,通過調用BLL層的服務將新的用戶信息寫入數據庫,最后用判斷語句激活彈窗對注冊結果予以反饋。

private void button1_Click(object sender, EventArgs e)
        {
            PayForm payform = new PayForm(true);
            payform.ShowDialog();
            //Thread.Sleep(7000);
            //payform.Visible = false;

            Customer cRegister = new Customer
            {
                UserName = this.textBox1.Text,
                PassWord = this.textBox2.Text
            };


            if (CustomerBLL.Register(cRegister))
            {
                MessageBox.Show("注冊成功");
                UserLoginForm userLoginForm = new UserLoginForm();
                userLoginForm.Show();
                this.Visible = false;
            }
            else
            {
                MessageBox.Show("注冊失敗");
            }
        }
  • 排片詳情獲取
/// <summary>
        /// 初始化TreeView控件
        /// </summary>
        private void InitTreeView()
        {
            tvMovies.BeginUpdate();
            tvMovies.Nodes.Clear();

            TreeNode movieNode = null;
            foreach(Movie m in MovieDAL.GetAllMovies())
            {
                movieNode = new TreeNode(m.MovieName);
                tvMovies.Nodes.Add(movieNode);

                foreach (Schedule s in ScheduleDAL.GetSchedulesByMovieID(m.MovieID))
                {
                    TreeNode timeNode = new TreeNode(s.DateTime);
                    timeNode.Name = s.ScheduleID.ToString();
                    movieNode.Nodes.Add(timeNode);
                }
            }
            tvMovies.EndUpdate();
        }
  • 影廳初始化
 /// <summary> 
        /// 初始化放映廳座位
        /// </summary>
        /// <param name="seatRow">行數</param>
        /// <param name="seatCol">列數</param>
        /// <param name="tb"></param>
        //普通廳放映
        private void InitSeatsCheckBox(int seatRow, int seatCol, TabPage tb, Dictionary<string, CheckBox> ckBox, Dictionary<string, Seat> cSeats)
        {
            CheckBox checkBox;
            Seat seat;
            for (int i = 0; i < seatRow; i++)                   /* 加載一號放映廳的位置*/
            {
                for (int j = 0; j < seatCol; j++)
                {
                    checkBox = new CheckBox();
                    //設置背景顏色
                    checkBox.BackColor = Color.LightBlue;
                    //設置字體
                    checkBox.Font = font1;                                                                                                         //new System.Drawing.Font("宋體", 14.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point,((byte)(134)));
                    //設置尺寸
                    checkBox.AutoSize = false;
                    checkBox.Size = new System.Drawing.Size(60, 25);
                    //設置座位號
                    checkBox.Text = (j+1).ToString() + "-" + (i+1).ToString();
                    checkBox.TextAlign = ContentAlignment.MiddleCenter;
                    //設置位置
                    checkBox.Location = new Point(60 + (i * 90), 60 + (j * 60));
                    //所有的標簽都綁定到同一事件
                    //checkBox.Click += new System.EventHandler(lblSeat_Click);
                    tb.Controls.Add(checkBox);
                    ckBox.Add(checkBox.Text, checkBox);
                    //實例化一個座位
                    seat = new Seat(checkBox.Text, Color.LightBlue);
                    //保存的座位集合
                    cSeats.Add(seat.SeatNum, seat);
                }
            }
            Label lb = new Label();
            lb.BackColor = Color.LightGray;
            lb.Font = font1;                                                                                                                                   //設置尺寸
            lb.AutoSize = false;
            lb.Size = new System.Drawing.Size(100, 25);
            //
            lb.Text = "熒幕中央";
            lb.TextAlign = ContentAlignment.MiddleCenter;
            //設置位置
            lb.Location = new Point(310, 20);
            tb.Controls.Add(lb);

        }
  • 購票
private void tvMovies_AfterSelect(object sender, TreeViewEventArgs e)
        {

        /// <summary>
        /// 選擇一場電影事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
    
            TreeNode node = tvMovies.SelectedNode;
            if (node == null) return;
            if (node.Level != 1) return;
            int sID = int.Parse(node.Name);

            Schedule s = null;
            Movie m = null;
            s= ScheduleDAL.GetScheduleByScheduleID(sID);

            if (s == null)
            {
                MessageBox.Show("s should not be null");
                return;
            }
            m = MovieDAL.GetMovieByMovieID(s.MovieID);
            if (m == null)
            {
                MessageBox.Show("m should not be null");
                return;
            }

            //將詳細信息顯示
            this.lblMovieName.Text = m.MovieName;
            this.lblDirector.Text = m.Director;
            this.lblActor.Text = m.Actor;
            this.lblPrice.Text = s.Price.ToString();
            this.lblTime.Text = s.DateTime;
            this.lblType.Text = m.MovieType;
            this.picMovie.Image = Image.FromFile(m.Poster);

            if(this.customerVIP != null)
            {
                this.lblCalcPrice.Text = (s.Price * 0.8).ToString();
            }
            else
            {
                this.lblCalcPrice.Text = lblPrice.Text;
            }

            otherHallIDs.Clear();
            foreach (int hID in AllHallIDs)
            {
                if (hID == s.HallID)
                {
                    continue;
                }
                otherHallIDs.Add(hID);
            }

            //清空座位
            ReSetSeats(s.HallID);
            //遍歷該場電影的座位銷售情況
            foreach (Ticket t in TicketDAL.GetTicketsByScheduleID(sID))
            {
                foreach (Seat seat in seats[s.HallID].Values)
                {
                    if (t.DetailSeat == seat.SeatNum)
                    {
                        seat.Color = Color.LightCoral;
                    }
                }
            }
            UpdateSeats(s.HallID);
            tbSeat.SelectedTab = tbSeat.TabPages[s.HallID-1];
        }
  • 購票信息確認界面
        private void button1_Click(object sender, EventArgs e)
        {
            if (String.IsNullOrEmpty(this.lblMovieName.Text))
            {
                MessageBox.Show("您還沒選擇電影!", "提示");
                return;
            }
            int hID = tbSeat.SelectedIndex + 1;

            TreeNode node = tvMovies.SelectedNode;
            if (node == null) return;
            if (node.Level != 1) return;
            int sID = int.Parse(node.Name);
            double totalCost = 0;
            List<Ticket> selectSeats = new List<Ticket>();
            string confireInfo = "您選擇的電影票信息如下,請確認:\n\n";
            foreach(CheckBox cb in checkBoxs[hID].Values)
            {
                if (cb.Checked && cb.Enabled == true)
                {
                    selectSeats.Add(new Ticket(sID, cb.Text));
                    confireInfo += "電影名:" + lblMovieName.Text + " 場次:" + lblTime.Text + " 大廳:" + hID + " 座位:"+cb.Text+"\n";
                    totalCost += double.Parse(lblCalcPrice.Text);
                }
            }
            if (selectSeats.Count < 1)
            {
                MessageBox.Show("您沒有選擇任何座位!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            confireInfo += "\n總金額:" + totalCost.ToString()+" 元";
            if (MessageBox.Show(confireInfo, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
            {
                PayIsSuccess = false;
                PayForm pf = new PayForm(false);
                pf.Owner = this;
                pf.payMoney = totalCost;
                pf.ShowDialog();
                //支付成功
                if (PayIsSuccess)
                {
                    //保存到數據庫成功
                    if (TicketDAL.AddTickets(selectSeats))
                    {
                        //生成取票碼

                        //更新位置信息
                        foreach (Ticket t in selectSeats)
                        {
                            Seat s = null;
                            if(seats[hID].TryGetValue(t.DetailSeat, out s))
                            {
                                s.Color = Color.LightCoral;
                            }
                        }
                        //更新UI
                        UpdateSeats(hID);
                        TicketForm tf = new TicketForm();
                        tf.Owner = this;
                        tf.ticketCode = DateTime.Now.ToFileTimeUtc().ToString();
                        tf.ShowDialog();
                    }
                }
            }
        }
  • 支付界面(獲取購票信息,計算總票價,提示支付)
private void TicketForm_Load(object sender, EventArgs e)
        {
            label2.Text = ticketCode;
            Image qr = getqrcode(ticketCode);
            imageList1.Images.Add(qr);
            imageList1.ImageSize = new Size(150, 150);
            pictureBox1.Image = imageList1.Images[0];
        }


      

        public Image getqrcode(string content)
        {
            var encoder = new QrEncoder(ErrorCorrectionLevel.M);
            QrCode qrCode = encoder.Encode(content);
            GraphicsRenderer render = new GraphicsRenderer(new FixedModuleSize(12, QuietZoneModules.Two), Brushes.Black, Brushes.White);//如需改變二維碼大小,調整12即可
            DrawingSize dSize = render.SizeCalculator.GetSize(qrCode.Matrix.Width);
            Bitmap map = new Bitmap(dSize.CodeWidth, dSize.CodeWidth);
            Graphics g = Graphics.FromImage(map);
            render.Draw(g, qrCode.Matrix);
            return map;
        }
  • 取票信息界面(包括取票二維碼以及取票序列號的實現)
private void button1_Click(object sender, EventArgs e)
        {
            MainForm m = (MainForm)Owner;
            m.PayIsSuccess = true;
            this.Close();
        }

        private void PayForm_Load(object sender, EventArgs e)
        {
           
            label1.Text = payMoney.ToString();
        }

05 數據庫設計

數據庫采用的是SQLSERVER,可以復制下面的腳本到查詢框執行,即可得到數據庫和樣本數據。
系統中采用DbContext方式直接連接數據庫。各表的設計如下:

  • Customer

  • Hall

  • Movie

  • Schedule

  • Ticket

數據庫腳本:

USE [master]
GO
/****** Object:  Database [U201715959]    Script Date: 12/12/2019 17:34:20 ******/
IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = N'U201715959')
BEGIN
CREATE DATABASE [U201715959] ON  PRIMARY 
( NAME = N'U201715959', FILENAME = N'D:\Database\U201715959\U201715959.mdf' , SIZE = 3072KB , MAXSIZE = 716800KB , FILEGROWTH = 1024KB )
 LOG ON 
( NAME = N'U201715959_log', FILENAME = N'D:\Database\U201715959\U201715959_log.ldf' , SIZE = 1024KB , MAXSIZE = 204800KB , FILEGROWTH = 10%)
END
GO
ALTER DATABASE [U201715959] SET COMPATIBILITY_LEVEL = 100
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [U201715959].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO
ALTER DATABASE [U201715959] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [U201715959] SET ANSI_NULLS OFF
GO
ALTER DATABASE [U201715959] SET ANSI_PADDING OFF
GO
ALTER DATABASE [U201715959] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [U201715959] SET ARITHABORT OFF
GO
ALTER DATABASE [U201715959] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [U201715959] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [U201715959] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [U201715959] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [U201715959] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [U201715959] SET CURSOR_DEFAULT  GLOBAL
GO
ALTER DATABASE [U201715959] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [U201715959] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [U201715959] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [U201715959] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [U201715959] SET  DISABLE_BROKER
GO
ALTER DATABASE [U201715959] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [U201715959] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [U201715959] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [U201715959] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [U201715959] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [U201715959] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [U201715959] SET HONOR_BROKER_PRIORITY OFF
GO
ALTER DATABASE [U201715959] SET  READ_WRITE
GO
ALTER DATABASE [U201715959] SET RECOVERY FULL
GO
ALTER DATABASE [U201715959] SET  MULTI_USER
GO
ALTER DATABASE [U201715959] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [U201715959] SET DB_CHAINING OFF
GO
EXEC sys.sp_db_vardecimal_storage_format N'U201715959', N'ON'
GO
USE [U201715959]
GO
/****** Object:  Table [dbo].[Customer]    Script Date: 12/12/2019 17:34:21 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Customer]') AND type in (N'U'))
DROP TABLE [dbo].[Customer]
GO
/****** Object:  Table [dbo].[Hall]    Script Date: 12/12/2019 17:34:21 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Hall]') AND type in (N'U'))
DROP TABLE [dbo].[Hall]
GO
/****** Object:  Table [dbo].[Movie]    Script Date: 12/12/2019 17:34:21 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Movie]') AND type in (N'U'))
DROP TABLE [dbo].[Movie]
GO
/****** Object:  Table [dbo].[Schedule]    Script Date: 12/12/2019 17:34:21 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Schedule]') AND type in (N'U'))
DROP TABLE [dbo].[Schedule]
GO
/****** Object:  Table [dbo].[Ticket]    Script Date: 12/12/2019 17:34:21 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Ticket]') AND type in (N'U'))
DROP TABLE [dbo].[Ticket]
GO
/****** Object:  User [U201715959]    Script Date: 12/12/2019 17:34:20 ******/
IF  EXISTS (SELECT * FROM sys.database_principals WHERE name = N'U201715959')
DROP USER [U201715959]
GO
/****** Object:  User [U201715959]    Script Date: 12/12/2019 17:34:20 ******/
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N'U201715959')
CREATE USER [U201715959] FOR LOGIN [U201715959] WITH DEFAULT_SCHEMA=[dbo]
GO
/****** Object:  Table [dbo].[Ticket]    Script Date: 12/12/2019 17:34:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Ticket]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[Ticket](
	[TicketID] [int] IDENTITY(1,1) NOT NULL,
	[ScheduleID] [int] NULL,
	[DetailSeat] [nvarchar](50) NULL,
 CONSTRAINT [PK_Ticket] PRIMARY KEY CLUSTERED 
(
	[TicketID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET IDENTITY_INSERT [dbo].[Ticket] ON
INSERT [dbo].[Ticket] ([TicketID], [ScheduleID], [DetailSeat]) VALUES (1, 5, N'1-1')
INSERT [dbo].[Ticket] ([TicketID], [ScheduleID], [DetailSeat]) VALUES (2, 5, N'1-2')
INSERT [dbo].[Ticket] ([TicketID], [ScheduleID], [DetailSeat]) VALUES (3, 1, N'3-4')
INSERT [dbo].[Ticket] ([TicketID], [ScheduleID], [DetailSeat]) VALUES (4, 5, N'1-3')
INSERT [dbo].[Ticket] ([TicketID], [ScheduleID], [DetailSeat]) VALUES (5, 5, N'3-1')
INSERT [dbo].[Ticket] ([TicketID], [ScheduleID], [DetailSeat]) VALUES (6, 18, N'1-1')
INSERT [dbo].[Ticket] ([TicketID], [ScheduleID], [DetailSeat]) VALUES (7, 4, N'1-1')
INSERT [dbo].[Ticket] ([TicketID], [ScheduleID], [DetailSeat]) VALUES (8, 4, N'1-2')
INSERT [dbo].[Ticket] ([TicketID], [ScheduleID], [DetailSeat]) VALUES (9, 5, N'1-4')
INSERT [dbo].[Ticket] ([TicketID], [ScheduleID], [DetailSeat]) VALUES (10, 5, N'1-5')
INSERT [dbo].[Ticket] ([TicketID], [ScheduleID], [DetailSeat]) VALUES (11, 5, N'1-6')
INSERT [dbo].[Ticket] ([TicketID], [ScheduleID], [DetailSeat]) VALUES (12, 5, N'2-6')
SET IDENTITY_INSERT [dbo].[Ticket] OFF
/****** Object:  Table [dbo].[Schedule]    Script Date: 12/12/2019 17:34:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Schedule]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[Schedule](
	[ScheduleID] [int] IDENTITY(1,1) NOT NULL,
	[MovieID] [int] NULL,
	[HallID] [int] NULL,
	[Price] [int] NULL,
	[DateTime] [nvarchar](50) NULL,
 CONSTRAINT [PK_Schedule] PRIMARY KEY CLUSTERED 
(
	[ScheduleID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET IDENTITY_INSERT [dbo].[Schedule] ON
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (1, 4, 1, 32, N'12-06 9:30')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (2, 2, 1, 35, N'12-06 10:40')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (3, 3, 1, 45, N'12-06 13:10')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (4, 5, 1, 38, N'12-06 15:30')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (5, 1, 1, 35, N'12-06  18:00')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (6, 5, 1, 40, N'12-06 20:10')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (7, 3, 1, 36, N'12-06 22:30')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (8, 3, 2, 36, N'12-06 9:25')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (9, 5, 2, 36, N'12-06 11:30')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (10, 4, 2, 40, N'12-06 13:30')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (11, 2, 2, 36, N'12-06 15:40')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (12, 2, 2, 40, N'12-06 17:55')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (13, 3, 2, 36, N'12-06 20:10')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (14, 1, 2, 36, N'12-06 10:20')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (15, 5, 3, 100, N'12-06 13:30')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (16, 3, 3, 100, N'12-06 15:30')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (17, 2, 3, 100, N'12-06 20:05')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (18, 1, 3, 100, N'12-05 10:30')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (19, 4, 3, 100, N'12-05 15:30')
INSERT [dbo].[Schedule] ([ScheduleID], [MovieID], [HallID], [Price], [DateTime]) VALUES (20, 5, 3, 100, N'12-05 20:20')
SET IDENTITY_INSERT [dbo].[Schedule] OFF
/****** Object:  Table [dbo].[Movie]    Script Date: 12/12/2019 17:34:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Movie]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[Movie](
	[MovieID] [int] IDENTITY(1,1) NOT NULL,
	[MovieName] [nvarchar](50) NULL,
	[Actor] [nvarchar](50) NULL,
	[Director] [nvarchar](50) NULL,
	[Duration] [int] NULL,
	[MovieType] [nvarchar](50) NULL,
	[Poster] [nvarchar](50) NULL,
 CONSTRAINT [PK_Movie] PRIMARY KEY CLUSTERED 
(
	[MovieID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET IDENTITY_INSERT [dbo].[Movie] ON
INSERT [dbo].[Movie] ([MovieID], [MovieName], [Actor], [Director], [Duration], [MovieType], [Poster]) VALUES (1, N'海蒂和爺爺', N'阿努克·斯特芬', N'阿蘭·葛斯彭納', 111, N'劇情、家庭', N'海蒂和爺爺.jpg')
INSERT [dbo].[Movie] ([MovieID], [MovieName], [Actor], [Director], [Duration], [MovieType], [Poster]) VALUES (2, N'海上鋼琴師', N'蒂姆·羅斯', N'吉賽貝·托納多雷', 125, N'劇情', N'海上鋼琴師.jpg')
INSERT [dbo].[Movie] ([MovieID], [MovieName], [Actor], [Director], [Duration], [MovieType], [Poster]) VALUES (3, N'冰雪奇緣2', N'安娜、艾莎', N'詹妮弗·李', 112, N'喜劇,冒險', N'冰雪奇緣.jpg')
INSERT [dbo].[Movie] ([MovieID], [MovieName], [Actor], [Director], [Duration], [MovieType], [Poster]) VALUES (4, N'夏目友人帳', N'井上和彥', N'大森貴弘', 106, N'妖怪,治愈,溫暖', N'夏目友人帳.jpg')
INSERT [dbo].[Movie] ([MovieID], [MovieName], [Actor], [Director], [Duration], [MovieType], [Poster]) VALUES (5, N'利刃出鞘', N'丹尼爾·克雷格', N'萊恩·約翰遜', 130, N'喜劇 、懸疑 、犯罪', N'利刃出鞘.jpg')
SET IDENTITY_INSERT [dbo].[Movie] OFF
/****** Object:  Table [dbo].[Hall]    Script Date: 12/12/2019 17:34:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Hall]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[Hall](
	[HallID] [int] IDENTITY(1,1) NOT NULL,
	[rowsCount] [int] NULL,
	[colsCount] [int] NULL,
 CONSTRAINT [PK_Hall] PRIMARY KEY CLUSTERED 
(
	[HallID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET IDENTITY_INSERT [dbo].[Hall] ON
INSERT [dbo].[Hall] ([HallID], [rowsCount], [colsCount]) VALUES (1, 7, 4)
INSERT [dbo].[Hall] ([HallID], [rowsCount], [colsCount]) VALUES (2, 7, 4)
INSERT [dbo].[Hall] ([HallID], [rowsCount], [colsCount]) VALUES (3, 7, 4)
SET IDENTITY_INSERT [dbo].[Hall] OFF
/****** Object:  Table [dbo].[Customer]    Script Date: 12/12/2019 17:34:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Customer]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[Customer](
	[CustomerID] [int] IDENTITY(1,1) NOT NULL,
	[UserName] [nvarchar](50) NULL,
	[PassWord] [nvarchar](50) NULL,
 CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED 
(
	[CustomerID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET IDENTITY_INSERT [dbo].[Customer] ON
INSERT [dbo].[Customer] ([CustomerID], [UserName], [PassWord]) VALUES (1, N'張三', N'123456')
INSERT [dbo].[Customer] ([CustomerID], [UserName], [PassWord]) VALUES (2, N'小兔子', N'123456')
INSERT [dbo].[Customer] ([CustomerID], [UserName], [PassWord]) VALUES (3, N'lalala', N'123')
INSERT [dbo].[Customer] ([CustomerID], [UserName], [PassWord]) VALUES (4, N'可愛宋', N'123456')
INSERT [dbo].[Customer] ([CustomerID], [UserName], [PassWord]) VALUES (5, N'可愛郝', N'123456')
INSERT [dbo].[Customer] ([CustomerID], [UserName], [PassWord]) VALUES (6, N'小名', N'123')
INSERT [dbo].[Customer] ([CustomerID], [UserName], [PassWord]) VALUES (7, N'Angela', N'1234567')
INSERT [dbo].[Customer] ([CustomerID], [UserName], [PassWord]) VALUES (8, N'小張', N'123')
INSERT [dbo].[Customer] ([CustomerID], [UserName], [PassWord]) VALUES (9, N'123', N'123')
INSERT [dbo].[Customer] ([CustomerID], [UserName], [PassWord]) VALUES (10, N'12345', N'123')
INSERT [dbo].[Customer] ([CustomerID], [UserName], [PassWord]) VALUES (11, N'445', N'234')
INSERT [dbo].[Customer] ([CustomerID], [UserName], [PassWord]) VALUES (12, N'黎明', N'111')
INSERT [dbo].[Customer] ([CustomerID], [UserName], [PassWord]) VALUES (13, N'Lina', N'666666')
INSERT [dbo].[Customer] ([CustomerID], [UserName], [PassWord]) VALUES (14, N'酷酷酷', N'111')
SET IDENTITY_INSERT [dbo].[Customer] OFF


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM