<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          分享 | C#編寫的電影售票系統(tǒng)(附源碼+數(shù)據(jù)庫)

          共 3818字,需瀏覽 8分鐘

           ·

          2020-02-07 23:20

          近疫情真的很可怕,大家要注意保護好自己,響應(yīng)國家的號召。盡量不出門,可以利用這個時間好好充實自己。


          也希望武漢和中國能盡快好起來,大家都健健康康,相安無事。

          01 介紹


          這個是小編上學(xué)期的C#課程結(jié)課作業(yè),是小組完成的。這次一并分享出來啦。嗯……為什么界面這么少女心呢,并不是小編有一顆少女心,而是因為UI部分是同組的女生負責(zé)設(shè)計的。


          6b7f1c6328c24cdf49f57924d988aafb.webp


          我們做的是一個有會員制的電影院購票系統(tǒng)。具有會員注冊功能,可區(qū)分會員和散客兩種身份,實現(xiàn)會員及折扣管理。購票具有挑選電影場次,選擇座位和查看電影信息等功能:


          》查看電影詳情、獲取排片信息。》選擇場次座位,完成支付,獲取取票信息。》注冊成為影院會員,享受優(yōu)惠折扣。402f3dbf045bc0a6b736286c96d6770d.webp119f357b89a0025447134f09677ab1cf.webp9d8c6b82f7147e58a57f3517055d2d74.webpfdfdefe46e3095aef28a5c1fa379168f.webp

          代碼獲取


          關(guān)注我們的公眾號!

          在后臺回復(fù)【CSTK】不包括【】即可獲取。

          02 設(shè)計思路


          在功能設(shè)計上,一個電影院購票系統(tǒng),首先需要具備最基礎(chǔ)的功能:影片選擇、場次選擇和座位選擇。


          在用戶提交選擇后,需要支付模塊提示用戶付款并完成出票。為了吸引用戶,我們增加了會員的注冊和登錄模塊,為會員用戶提供折扣。


          注冊與購票的支付我們的處理是預(yù)留一個接口,當(dāng)做簡單模擬,實際使用可以調(diào)用支付寶或微信的支付接口。


          在界面設(shè)計上,我們?yōu)橄到y(tǒng)添加了好看的背景圖片。通過Detail欄展示用戶信息與折扣,通過Hot Movie欄在最吸引眼球展示熱映電影的海報,提高用戶的購買欲望。


          最后,作為主要部分的座位選擇欄簡介明了,座位之間間隔明顯,有效的防止用戶錯誤操作。

          03 具體設(shè)計


          通過三層架構(gòu)來完成影院購票系統(tǒng)的開發(fā),將真?zhèn)€業(yè)務(wù)應(yīng)用劃分為:界面層(UI層)、業(yè)務(wù)邏輯層(BLL層)、數(shù)據(jù)訪問層(DAL層)。


          對于復(fù)雜的系統(tǒng)分層讓結(jié)構(gòu)清晰,便于對系統(tǒng)進行整體的理解、把握;而且便于維護,將各部分之間的相互影響的程度降低到最小,系統(tǒng)基本的架構(gòu)可以通過工具自動生成代碼。當(dāng)數(shù)據(jù)庫發(fā)生改變時,只用重新生成代碼,改動業(yè)務(wù)邏輯層的部分代碼即可。


          在實施的過程中,難點在于將三層結(jié)構(gòu)進行劃分,掌握各層之間的設(shè)計思路以及調(diào)用關(guān)系,下面內(nèi)容就結(jié)合代碼展示具體實現(xiàn)過程。


          1) Model層

          這層的作用是封裝數(shù)據(jù),使數(shù)據(jù)在三層中傳輸。例如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; }/// 導(dǎo)演名        public int    Duration { get; set; } //時長        public string MovieType { get; set; }/// 電影類型        public string Poster{ get; set; } /// 海報圖片名    }}

          2) DAL層

          這一層提供基本的數(shù)據(jù)訪問,實現(xiàn)代碼(以Movies為例):

          namespace DAL{    public class MovieDAL    {        public static List 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層

          這一層負責(zé)處理業(yè)務(wù)邏輯,在本次的系統(tǒng)開發(fā)中,包括了與用戶和影票信息相關(guān)的處理。實現(xiàn)代碼(以TicketBLL為例):

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

          4) UI層

          這一層負責(zé)顯示和采集用戶操作。系統(tǒng)總共包含五個界面,分別為:用戶登錄界面、用戶注冊界面、影院主頁、票務(wù)信息確認界面、支付界面以及取票信息界面。


          同時,使用Winform皮膚插件來實現(xiàn)對系統(tǒng)界面整體風(fēng)格的把控。下面將以界面的為單位來對其實現(xiàn)過程進行描述:


          》用戶登錄界面

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


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


          》用戶注冊界面

          用戶將身份信息寫入文本框后,用其輸入的信息創(chuàng)建新的customer對象,通過調(diào)用BLL層的服務(wù)將新的用戶信息寫入數(shù)據(jù)庫,最后用判斷語句激活彈窗對注冊結(jié)果予以反饋。


          》主界面排片詳情通過TreeView控件進行展示。影廳通過多個CheckBox組成,主要是為了能讓用戶一次性購買多張票。


          》購票信息確認界面在選定座位后,進行系統(tǒng)進行核算總的金額,然后顯示所選座位信息以及應(yīng)付的價錢。提示用戶是否進行付款。


          》支付界面獲取購票信息,計算總票價,提示支付,顯示支付的二維碼等并判斷是否支付成功。


          》取票信息界面包括取票二維碼以及取票序列號的實現(xiàn),支付成功后彈出取票碼。

          04 數(shù)據(jù)庫設(shè)計


          數(shù)據(jù)庫采用的是SQLSERVER,可以復(fù)制下面的腳本到查詢框執(zhí)行,即可得到數(shù)據(jù)庫和樣本數(shù)據(jù)。


          系統(tǒng)中采用DbContext方式直接連接數(shù)據(jù)庫。一個DbContext映射了所有的數(shù)據(jù)庫表。具體代碼如下:


          namespace Model{    public class CinemaDbContext : DbContext    {        public static CinemaDbContext CDbContext = new CinemaDbContext();
          public CinemaDbContext() : base("data source=.\\SQLSERVER1;initial catalog=Cinema;Integrated Security=SSPI;") //構(gòu)造函數(shù),指定數(shù)據(jù)庫名稱的約定連接 { //Code first會在第一次ef查詢的時候會對__MigrationHistory訪問,是為了檢查數(shù)據(jù)庫和model是否匹配,以保證ef能正常運行 Database.SetInitializer(null); }
          //public BookDbContext() : base("Data Source=.;Initial Catalog=Students;Integrated Security=SSPI;") { }
          //DbSet是一個模版類,<>中代表的是模版類中的實體類 public DbSet Customers { get; set; } public DbSet Halls { get; set; } public DbSet Movies { get; set; } public DbSet Schedules { get; set; } public DbSet Tickets { get; set; }
          protected override void OnModelCreating(DbModelBuilder modelBuilder) { //取消復(fù)數(shù)表名慣例 modelBuilder.Conventions.Remove();????????} }}


          各表的設(shè)計如下:


          Customer表:保存注冊用戶的用戶名和密碼,建議加密后保存。f959964261c7885a11552e6e3acfba13.webp


          Hall表:保存每個影廳的信息,包括一行的座位數(shù)和一列的座位數(shù)。7c3233b36a129d0a554a685dcce497b6.webp


          Movie表:保存電影的信息,電影名,類型,演員等。342239be0197ca1ee0ab48ad7fcef916.webp


          Schedule表:保存電影院的排片信息,包括價格,放映時間等。975dcd31ad3e1fcb0787b15a727f05ff.webp

          Ticket表:保存電影票的信息,包括排片信息,具體座位等。87dfb702d69653ab1a9b22ca5f4ba512.webp


          》數(shù)據(jù)庫腳本

          TIP:直接復(fù)制源代碼說明文件中的數(shù)據(jù)庫腳本到SQLSERVER中執(zhí)行即可得到數(shù)據(jù)庫和相應(yīng)的數(shù)據(jù)。調(diào)整一下代碼即可連接到程序中使用。


          腳本文件附錄在源代碼的README文件最后。


          0de33a120d4fb71a11edfa97bd6c378a.webp

          瀏覽 161
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  五月丁香色色网 | 久久精品苍井空免费一区 | 日韩尤物在线播放 | 求一个做爱视频网站免费在线观看 | 青草精品在线 |