分享 | C#编写的电影售票系统(附源码+数据库)

简介: 分享 | C#编写的电影售票系统(附源码+数据库)

近疫情真的很可怕,大家要注意保护好自己,响应国家的号召。尽量不出门,可以利用这个时间好好充实自己。


也希望武汉和中国能尽快好起来,大家都健健康康,相安无事。

01 介绍


这个是小编上学期的C#课程结课作业,是小组完成的。这次一并分享出来啦。嗯……为什么界面这么少女心呢,并不是小编有一颗少女心,而是因为UI部分是同组的女生负责设计的。


微信图片_20220423094153.jpg


我们做的是一个有会员制的电影院购票系统。具有会员注册功能,可区分会员和散客两种身份,实现会员及折扣管理。购票具有挑选电影场次,选择座位和查看电影信息等功能:


》查看电影详情、获取排片信息。》选择场次座位,完成支付,获取取票信息。》注册成为影院会员,享受优惠折扣。微信图片_20220423094156.jpg微信图片_20220423094158.jpg微信图片_20220423094201.jpg微信图片_20220423094204.png



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层的功能将输入内容与用户信息比对,最后用判断语句激活弹窗反馈登陆结果,登陆成功后进入到售票系统首页。


同时,用户可以点击注册按钮,跳转到注册界面完成新用户的注册。


》用户注册界面

用户将身份信息写入文本框后,用其输入的信息创建新的customer对象,通过调用BLL层的服务将新的用户信息写入数据库,最后用判断语句激活弹窗对注册结果予以反馈。


》主界面排片详情通过TreeView控件进行展示。影厅通过多个CheckBox组成,主要是为了能让用户一次性购买多张票。


》购票信息确认界面在选定座位后,进行系统进行核算总的金额,然后显示所选座位信息以及应付的价钱。提示用户是否进行付款。


》支付界面获取购票信息,计算总票价,提示支付,显示支付的二维码等并判断是否支付成功。


》取票信息界面包括取票二维码以及取票序列号的实现,支付成功后弹出取票码。

04 数据库设计


数据库采用的是SQLSERVER,可以复制下面的脚本到查询框执行,即可得到数据库和样本数据。


系统中采用DbContext方式直接连接数据库。一个DbContext映射了所有的数据库表。具体代码如下


namespace Model
{
    public class CinemaDbContext : DbContext
    {
        public static CinemaDbContext CDbContext = new CinemaDbContext();
        public CinemaDbContext() : base("data source=.\\SQLSERVER1;initial catalog=Cinema;Integrated Security=SSPI;") //构造函数,指定数据库名称的约定连接
        {
            //Code first会在第一次ef查询的时候会对__MigrationHistory访问,是为了检查数据库和model是否匹配,以保证ef能正常运行
            Database.SetInitializer<CinemaDbContext>(null);
        }
        //public BookDbContext() : base("Data Source=.;Initial Catalog=Students;Integrated Security=SSPI;") { } 
        //DbSet是一个模版类,<>中代表的是模版类中的实体类
        public DbSet<Customer> Customers { get; set; }
        public DbSet<Hall> Halls { get; set; }
        public DbSet<Movie> Movies { get; set; }
        public DbSet<Schedule> Schedules { get; set; }
        public DbSet<Ticket> Tickets { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //取消复数表名惯例
            modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();
        }
    }
}


各表的设计如下:


Customer表:保存注册用户的用户名和密码,建议加密后保存。微信图片_20220423094211.png


Hall表:保存每个影厅的信息,包括一行的座位数和一列的座位数。微信图片_20220423094214.png


Movie表:保存电影的信息,电影名,类型,演员等。微信图片_20220423094222.png微信图片_20220423094216.png


Schedule表:保存电影院的排片信息,包括价格,放映时间等。微信图片_20220423094219.png

Ticket表:保存电影票的信息,包括排片信息,具体座位等。


》数据库脚本

TIP:直接复制源代码说明文件中的数据库脚本到SQLSERVER中执行即可得到数据库和相应的数据。调整一下代码即可连接到程序中使用。


脚本文件附录在源代码的README文件最后。


微信图片_20220423094224.jpg


相关文章
|
15天前
|
数据采集 安全 JavaScript
C#医院手术麻醉信息管理系统源码 对接院内HIS、LIS、PACS
手麻系统的功能涵盖了麻醉临床业务管理、麻醉运营业务管理以及手术进程管理等,实现了将多种麻醉病历文书与医院HIS系统的有效关联,让手术室人员、设备资源和信息资源高度共享;实现了手术安排、各种统计报表等科室管理和科研工作的需求,可借其收集临床数据、进行整合分析,为围术期临床信息、管理、科研提供整体解决方案;该系统的运行,为医护人员提供了流程化、信息化、自动化、智能化的临床业务综合管理。
29 5
|
15天前
|
存储 安全 搜索推荐
酒店管理系统的数据库的应用以及选择
酒店管理系统数据库关乎运营效率和服务质量。数据库用于数据存储、管理、分析及客户关系管理,确保房态与预订精准。选择时重视性能稳定性、数据安全、易用性、可扩展性和成本效益。合适的数据库能提升酒店运营效率并优化客户体验。
21 2
|
23天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
26天前
|
安全 网络安全 数据库
数据安全之认识数据库漏洞扫描系统
数据库漏洞扫描系统是一种专业的数据库安全产品,它基于对数据库访问控制、数据库审计、资源管理、数据库加密以及数据库系统本身安全机制的深入分析,深入研究和发现数据库系统本身存在的BUG以及数据库管理、使用中存在的问题。
38 4
|
1月前
|
SQL 数据库 C#
C# .NET面试系列十一:数据库SQL查询(附建表语句)
#### 第1题 用一条 SQL 语句 查询出每门课都大于80 分的学生姓名 建表语句: ```sql create table tableA ( name varchar(10), kecheng varchar(10), fenshu int(11) ) DEFAULT CHARSET = 'utf8'; ``` 插入数据 ```sql insert into tableA values ('张三', '语文', 81); insert into tableA values ('张三', '数学', 75); insert into tableA values ('李四',
66 2
C# .NET面试系列十一:数据库SQL查询(附建表语句)
|
1月前
|
SQL 监控 安全
数据安全之认识数据库审计系统
随着企业业务数据量的不断增长和数据存储的集中化,数据库成为企业的核心资产之一。然而,数据库面临着各种安全威胁,如SQL注入、权限滥用、数据泄露等。为了保障数据库的安全性和完整性,企业需要采取有效的审计措施来监控和记录数据库的操作行为。本文让我们一起来认识数据库审计系统。
32 1
|
1天前
|
XML 存储 数据库
工作流JBPM系统数据库表介绍
工作流JBPM系统数据库表介绍
|
11天前
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012
|
15天前
|
存储 NoSQL 安全
物流系统数据库的应该以及选择
物流系统数据库在信息化建设中扮演关键角色,用于数据存储、管理和共享,支持决策,并优化资源配置。选择数据库时要考虑类型(如关系型或NoSQL)、性能稳定性、成本易用性、安全性和未来发展需求。完善数据管理与安全措施,确保数据准确性和系统扩展性,是提升物流效率和企业竞争力的关键。
16 3
|
28天前
|
安全 JavaScript 前端开发
C#医院手麻系统源码,手术麻醉管理系统源码
手术麻醉管理系统贯穿患者入院至出院全程,整合术前术后流程,如手术排班、麻醉计划、术中监护及术后恢复。采用C#.net6.0、Vue、Ant-Design等技术,与sqlserver2019数据库结合。系统提供麻醉记录、手术安全核查、费用管理等功能,确保信息数字化和流程规范化。通过自动化记录和数据分析,增强手术安全,优化资源分配,并支持医疗质控与研究。
C#医院手麻系统源码,手术麻醉管理系统源码