一年一度的软工课设再过两天就要结束了,在这里做一点总结。

感觉今年软工课设用上数据库之后确实相对于大一面向过程的c语言方便了不少。所以今年课设相对于大一比较简单,所以我大概提前一周就将整个项目完成了。然后将我所在组中负责的那一部分发给了组长。最后一周基本每天是在摸鱼,或者帮组员修bug。我知道我在我的项目里面造了不少重复的轮子,但我对我的要求是先实现理想情况下的功能,不考虑太多的问题,当然有必要考虑的问题会预留一些接口。

项目介绍:

基于javafx GUI设计,mysql进行数据持久化的C/S版影院管理系统。

开发平台:

Linux Ubuntu 18.10

开发工具

mysql 5.7
jetbrains idea

详细设计

我将图文结合起来讲我的项目(注意别在意界面,界面设计是基于直男审美水平)先是登录界面!


我们看出系统总共有四个角色。下面是他们各自负责的功能模块。

emmm…剧目经理负责的部分挺多的(得加鸡腿)。

各个功能大部分都是增删改查的操作。项目为C/S架构,总共分为4层,界面、业务逻辑、DAO层,持久化层!


所以说DAO层以上就是Client端发送资源请求,DAO层及以下为Server端,回应界面请求。

界面层采用Javafx进行设计。以下是项目中的一些主要功能界面布局:
选座

剧目管理

演出计划管理

业务逻辑层主要接收来自界面层用户的输入信息的,并将信息传给DAO层。
DAO层接收到业务逻辑层的数据生成sql代码,将相应的sql语句传给持久化层。
持久化层连接数据库,执行sql语句,获得结果集,返回给DAO层,DAO层返回给业务逻辑层。业务逻辑层返回给界面层。
四层交互就是这样。在项目中体现:

idao中设计dao层的接口。model是所有数据类(用户类,票类…),util就是持久化层,service 为业务逻辑层,view为界面层。

C/S设计就是比较简单。

难点总结

1、票的加锁

这里一些数据成员的增删改查我想说的是关于乐观锁,这个是老师要求使用的,但我感觉使用上也并没有什么用。但考虑到这是一个比较重要的知识点,还是说一下吧!乐观锁主要用于关于买票业务。在并发情况下,多个售票员访问了一张票,并进行了相应的修改? 所以这种情况应该加锁,如何加呢?有两种锁可供选择:悲观锁和乐观锁。

悲观锁:先说一下大概是什么个东西?用户每次访问数据库数据时,都认为用户会修改所访问的数据,所以在访问的时候加上锁,在当前用户访问期间其他用户不能访问。知道当前用户操作完成才可访问。

项目中主要通过数据库提供的关键字实现,采用行级锁,在多个售票员访问同一张票的情况下,先对数据库表的行加锁的用户向访问,其他用户都不能访问,知道上锁的售票员操作完成,释放锁,其他售票员才可以访问。

乐观锁:用户访问数据库数据时相信用户不会修改表中的数据,将数据信息发给用户,只有在用户修改表中的数据时才进行锁保护。就相当于实现数据的版本控制。

项目实现乐观锁可以给票中加一列version(可以自己随便取),类型我采用long,也可使用timestamp(时间戳类型),起始值为1,在之后操作中,要是修改某行数据,现将这一行数据提取出来,得到version,在update时,再通过version判断行中数据是否被修改,如果没被修改,则给version加1,更新成功。否则这次更新将失败。我项目中实现如下例子所示:

select * from ticket where ticket_id = #(ticket_id);
long version = ticket.version ;
update ticket set version+=1, ticket_info=want_update_ticket_info where (ticket.version=version and ticket.id = #(ticket_id)) ;

2、演出计划时间冲突的处理

我觉得我现在还不能将所有的情况考虑周全,安排一场演出计划涉及到的情况特别多,首先你得需要演出厅,下面就是演出剧目是什么,演出时间什么时候。那么问题来了? 演出厅是否被占用。演出剧目是否已经被安排?当然我解决了这两个问题,肯定不止这些。

演出剧目被安排,我这里的处理是已经被安排的剧目无法再安排演出计划。
演出厅占用的话,找到占用演出厅所有的演出计划,查看所设置的上映时间是否会和已经存在的演出计划冲突,要是不冲突的话,可以给该演出厅安排演出计划,否则就不能安排。

3、演出计划过期删除

这是一个很实际的问题,剧目经理干的事有点多,他支撑起了整个影院的运营。可删除演出计划这个事他们不可能每天将所有的演出计划查看一遍有过期的就删除。这不行,和同学讨论在安排演出计划的时候将整个演出计划表产看一遍看有没有过期的。这也是一种解决方法,我解决这一问题是通过定时器。开个线程,安排定时任务,在一定时间内后台自动检查一遍演出计划表,发现过期的就将其删除。并将相应演出厅状态一修改,票状态修改,座位状态修改。

4、图片展示

可以看出整个项目完成下来,图片是必不可少的元素,图片是从网上下载的,整个项目中的图片都是放到个人租的服务器上的,数据库中存的是服务器中图片的url,在项目运行期间要加载图片,并显示在界面。

5、演出计划设置时的时间冲突解决

我们是通过用户输入剧目名称或者剧目id,上映时间(时间不能晚于当前时间),在演出计划表中获取之前存在对应剧目的演出计划,根据用户输入的安排时间为剧目上映开始时间,获取时间戳,加上剧目的时长获取结束时间,和之前存在的剧目时间进行比较:要是当前设置的最晚时间大于之前存在计划的起始时间,并且设置的起始时间小于之前演出计划的起始时间。另外一种情况是当前设置的时间起始时间小于之前设置的结束时间,当前设置的终止时间大于之前的结束时间。这个必须得加判断!

数据库表的物理模型设计


一些表在开发中没有用到大致就是这样,用到那些数据主要参考src代码中的Dao层操作那些数据。

使用方法

在数据库中添加管理员(access为0),登录管理员在系统中添加其他用户信息,剧目经理权限为1,销售员为2,财务经理权限为6,其他用户协作运营整个系统。

总结

一年一度的TTMS又宣布到尾声了,总的项目写下来,造了许多重复的轮子,面向对象的思想还是比较缺!主要是刚开始也没好好设计,初衷是先实现功能。最后发现许多相似的功能代码可以不断复用。最后复习一下软件设计的流程:

问题定义->可行性研究->需求分析->总体设计->详细设计->编码和单元测试->综合测试->软件维护

愿其在每个软工人心中刻骨铭心!

源码链接:https://download.csdn.net/download/qq_41681241/11238214

基于javafx和mysql的C/S版影院管理系统相关推荐

  1. html5 职工入职后台管理系统_ChemCMS是一款基于GO+PHP+MYSQL+HTML5构建的化学内容管理系统

    ChemCMS是一款基于GO+PHP+MYSQL+HTML5构建的化学内容管理系统,旨在提高化学类企业信息化管理水平,ChemCMS提供了行业所需的库存管理.订单管理.产品管理.客户管理.权限管理全部 ...

  2. 基于SSM+SpringBoot+MySQL+Bootstrap的OA在线办公自动化管理系统

    登陆首页 部门管理 职位管理 考勤报表 新建流程 通知管理 邮件管理 任务管理 日程管理 部门 笔记 通讯录 讨论区 技术描述 开发工具: Idea/Eclipse 数据库: mysql Jar包仓库 ...

  3. 基于Springboot+freemarker+Mysql实现的宿舍维修上报管理系统

    <基于Springboot+freemarker+Mysql实现的宿舍|寝室维修上报管理系统>该项目含有源码.论文等资料.配套开发软件.软件安装教程.项目发布教程等 使用技术: 前端使用技 ...

  4. java mysql教程基于_基于JAVA和MYSQL数据库实现的学生信息管理系统

    1 项目介绍 学生成绩管理系统是广泛使用的一种信息管理系统,在学生成绩管理系统中,需要能处理各班信息.各班下属学生的个人信息及每个学生学习成绩信息.班级信息包括班级编号.班级名称,学生信息包括学号.姓 ...

  5. 基于Java+SSM+MySQL的高校就业创业信息管理系统

    目 录 摘 要 I ABSTRACT II 第1章 绪论 1 1.1 选题背景 1 1.2 现状分析 1 1.3 研究主要内容 1 第2章 系统工具 3 2.1 B/S结构 3 2.1.1 什么是B/ ...

  6. 基于SSM+SpringBoot+MySQL+VUE的酒店入住信息管理系统(附论文)

    项目运行截图     互联网酒店预订系统(HMS)软件需求规格说明文档更新记录1. 引言1.1 目的1.2 范围1.3 参考文献2. 总体描述2.1 项目前景2.1.1 背景与机遇2.1.2 业务需求 ...

  7. 基于SSM+Bootstrap+MySQL的高校学生信息成绩管理系统

    项目运行截图 用户添加 用户登录 登录首页 考试发布 考试信息 考试添加 成绩导入 成绩单 班级管理 班级管理 添加学生 添加用户 学生列表 考试发布 一.用户模块 提供管理员.教师两种角色的登录 提 ...

  8. 基于Python+Django+MYSQL的校园食堂点餐管理系统

    项目介绍: 食堂管理.商户管理.菜品管理.订单管理.用户管理 页面效果:

  9. 基于JAVA+SpringMVC+MYSQL的大学毕业生就业信息管理系统

    项目功能: 本系统分系统管理员,老师用户,企业用户和毕业生用户4个用户角色.系统管理员主要功能有系别管理.专业管理.老师管理员管理.站内新闻管理.企业用户管理.岗位管理.文档管理.公告管理.留言管理. ...

最新文章

  1. java别踩白块_java别踩白块(基础功能)
  2. 【数学专题】矩阵乘法
  3. python 鼠标键盘操作 pyautogui
  4. python空集_玩转Python集合,这一篇就够了!
  5. Prompt-Tuning这么好用?
  6. hyperv的安装与使用
  7. 如何准确估计机器人的状态,增强机器人控制的精度及稳定性
  8. docker部署express项目
  9. Linux守护进程的启动方法
  10. linux系统redis单机版安装及设置解决DENIED Redis is running in protected mode because protected mode is enabled问题
  11. HDOJ/HDU 1565 方格取数(1)
  12. php mysql 内存表_用mysql内存表来代替php session的类_PHP教程
  13. 数据治理方案技术调研 Atlas VS Datahub VS Amundsen
  14. OutMan——Foundation框架中的集合类(三)
  15. Stellarium0.9.0新功能
  16. IIS 请求报503
  17. 51nod 1123 X^A Mod B 问题
  18. HTML中<img src=““>中图片路径的用法
  19. kingcms php 漏洞,kingcms5.0/5.1漏洞
  20. Locust 压力测试工具学习(一)

热门文章

  1. HDMI 收发器简化家庭影院系统设计
  2. 文献记录(part23)--Learn to model blurry motion via directional similarity and filtering
  3. win7系统蓝屏故障以及常见的解决方案
  4. R语言绘制坐标 保存图片
  5. 2019清华计算机考研,2019清华计算机考研总分是多少
  6. 讲解ping中的TTL是什么意思
  7. 苹果cms v8模板仿q2002电影网站电脑手机自适应模板
  8. [Solved] Can not extract resource from com.android.aaptcompiler
  9. 《从0到1:CTFer成长之路》SQL注入-2
  10. 分享3:hanzi-writer(演示汉字笔画顺序的 JS 库)