毕业设计项目KTV管理系统的评析思考

时间:2022-07-13 09:05:52

毕业设计项目KTV管理系统的评析思考

摘要:为了提高毕业设计质量,进一步提升学生的职业岗位能力,有必要对毕业设计项目进行评析和反思。本文对学生的毕业设计项目KTV管理系统所用的开发软件、功能设计、开发的重点和难点等方面存在的问题进行分析和评价,并反思在指导过程中存在的一些不足。通过评析和反思,可以发现软件开发毕业设计中存在的问题和解决方法,有利于促进毕业设计质量的提升。

关键词:评析毕业设计;KTV管理系统;反思

1引言

当前,许多学校软件技术专业的毕业设计质量低下,有学生不重视敷衍了事的原因,有学校安排不合理的原因,也有学校对毕业设计的评析只关注结果呈现的原因。软件项目开发有自身的流程,评析软件项目需要围绕软件开发流程进行。KTV管理系统是学生完成的毕业设计软件项目。本文通过对KTV管理系统的开发软件、需求分析、功能设计及实现的重点等的分析,详细指出存在的问题。这对改进指导过程、提高毕业设计质量至关重要[1]。

2项目开发的软件和架构

项目开发采用什么软件,是毕业设计首要确定的任务。软件技术专业人才培养方案的目标是培养学生基于.NET方向的开发能力。C#是微软推出一种基于.NET框架的面向对象的编程语言,有强大的编程功能。因此项目组学生选择C#作为项目的开发软件既符合软件技术专业的培养目标,也可以使学生完成从知识学习到知识迁移的过程,促进学生掌握.NET方向的整体开发流程及设计能力[2]。项目开发按系统架构分为B/S和C/S。它们是当今系统架构的两大主流技术。B/S结构即浏览器/服务器结构,用户界面完全通过浏览器实现。C/S架构即客户端/服务器结构,需要安装客户端才能进行管理操作。对于某个KTV店铺的管理系统而言,这种两种架构方式都可以实现。通过调研和参考市场已有的商品化KTV管理系统,既有B/S架构,也有C/S架构。项目组学生采用C/S模式的架构。采用混合模式架构更佳,可使项目组学生在.NET方向的编程能力上得到全方位的锻炼,既锻炼学生在Web方向的编程能力,也可以提高学生Windows应用程序的开发能力[3]。

3项目需求分析

整个项目开发前,需要完成以下工作:了解、分析KTV歌厅的管理流程;顾客在KTV歌厅中除了唱歌,还有其他消费的情况;顾客在KTV唱歌时,点歌的一些常规方法;歌厅的管理者通常在歌厅中要做的事情,如顾客进来消费时基本的开房、结账,还要了解整个歌厅的营收情况等。通过市场调研,KTV管理系统分为三类用户:管理员、超级管理员和普通用户。系统应具备有以下功能:(1)管理员对食品、房间、歌曲、歌手、用户进行增、删、改、查的操作。(2)超级管理员可以统计和查看每天、每月及每年营业情况等。(3)用户可以实现点歌和查歌功能,按歌手查歌、按拼音首字母查歌、按热门的歌曲查歌等。(4)系统应提供点餐、结账功能。系统功能的设计比较全面。这些功能需求基本符合KTV管理系统的功能。这表明学生对项目进行了一定研究。当然也存在缺陷,如系统没有预定功能、没有记录服务员的服务情况等。

4项目系统功能设计

项目组通过需求分析,设计了系统的前台功能模块和后台管理模块。后台管理员分为超级管理员和普通管理员。超级管理员可以对普通管理员进行管理,也可以对普通管理员设置相关的操作权限和查看营业情况。营业情况不仅有每日账单和每月账单及账单的详细信息,还可以查看每年营业额折线图等。普通管理员可以对商品、歌曲、歌手、房间等进行编辑操作。从这里可以看出,学生对KTV管理系统的管理员功能梳理得比较清晰,初步理解了软件的概要设计。KTV管理系统的前台功能是:用户通过登录操作后选择空房间并进入主操作页面,可以进行点歌、点餐、结账操作及打印消费单等。从这里可以看出,学生对用户功能和管理员功能相互混淆,与需求分析相互矛盾。用户能做的只有点餐和点歌,而开房、结账和打印消费单等应由管理员来操作。

5数据库设计

通过功能分析,采用SQLServer构建数据库。SQLServer数据库技术也是软件技术专业的核心课程。选用SQLServer可以实现对职业能力的锻炼。系统需要以下数据表保存信息:用户表、用户等级表、管理员表、会员等级表、歌手信息表、歌曲信息表、歌手国籍表、房间信息表、房间类型表、房间状态表、商品信息表、商品类型表、开房信息表、消费信息表、订单表、订单详情表。

6重点难点分析与实现

在KTV系统的实现中,点歌功能的实现、分页显示歌曲、歌手等信息是系统的重点和难点。

(1)点歌模块的实现。点歌模块的实现,在专业课的教学中一般不涉及。这就需要学生通过自我学习完成代码设计。点歌模块分为点歌、歌曲控制两部分。点歌部分主要实现:将选中的歌曲保存到指定的数组中及设置多种点歌界面。歌曲控制部分是控制歌曲的播放,可以实现上一首、下一首、音量设置等操作。歌曲控制采用WindowsMediaPlayer媒体播放器,并设计winplay窗体类实现播放控制。在winplay窗体类中设置三个计时器,分别用来控制正在播放歌曲、未播放的歌曲和窗体的隐藏。点歌完成后,播放器获取存放歌曲的数组、自动开始从点歌列表的第一首歌曲开始播放,并显示当前正在播放的歌曲名称。winplay窗体还具备拉伸和收缩等一些动态效果。点歌界面如图1所示。在设计点歌模块时,设计了一个歌曲类Song。它有三大属性:分别用于保存歌曲名称、歌曲存放的路径位置url及歌曲的播放状态。歌曲的播放状态设置为全局的枚举类型,共有三种状态:Playing、Played和UnPlay,分别表示正在播的、已经播过的和还没有播的状态。同时,还设计了一个公共播放类playlist。它包含一些关于播放需要的重要方法:将歌曲保存到指定数组、播放下一首和上一首的方法、获得当前的、上一首及下一首的歌曲名称的方法及获得播放列表的歌曲数等。学生定义的playlist类中添加歌曲方法代码如下:publicstaticSong[]songs=newSong[1000];//Song是歌曲类publicstaticvoidAdd(Songsong){for(inti=0;i<songs.Length;i++){if(songs[i]==null){songs[i]=song;break;}}}从运行效果看,功能确实是实现了,但不代表设计方法的正确。首先,学生采用数组songs存放用户点的歌曲,定义最大容量是1000,且将新的歌曲添加到播放列表中时,需要遍历数组后才能存储。这样定义既浪费存储空间,又不尽合理。数组的优点是存储在连续内存上、数据类型相同、通过下标访问元素。它的缺点是必须指定其长度,元素插入也不方便,过长浪费内存,超出下标会产生溢出错误。而用户在点歌时,要点多少首歌曲是一个不确定的数,应该采用List泛型数组来保存和实现更合适,泛型数组适用于元素数量不固定的情况,而且两端存取非常方便。上述代码可以优化为:publicstaticList<Song>songs=newList<Song>();publicstaticvoidAdd(Songsong){songs.Add(song);}

(2)分页功能的实现。在实现信息显示时,由于歌手、歌曲等信息都保存在数据表中,因此界面呈现的信息必须动态生成。为了使界面美观且能加载更多数据,在设计显示数据信息时需要分页。分页功能的实现有许多方法。学生采用的分页方法是通过子查询实现。这里以显示每页8条数据即pagesize=8为例进行说明。代码在实现使用两个变量currentpage、pcount。currentpage用来记录当前页号,第一页的页号为0;pcount=currentpage*pagesize记录查询某页数据时,需要排除的某页之前的记录数。具体数据查询代码如下:"selecttop8*fromv_singerwhereSingerIDnotin(selecttop"+pcount+"SingerIDfromv_singer)"即首页显示时,相应的查询语句是:selecttop8*fromv_singerwhereSingerIDnotin(selecttop0SingerIDfromv_singer)表示查询数据中的第1条~第8条记录。以此实现分页查询。由于分页功能在项目中多次使用,应该采用自定义分页控件的方法来实现更合理,可以增加程序的通用性、可移植性。这也说明学生对分页的知识学习没有提升。此外,项目的点歌模块还存在缺陷:如在点歌后,无法查看点歌列表,没有实现点歌列表中歌曲的删除操作等。

7毕业设计指导工作反思

毕业设计的质量与指导工作密不可分。通过跟踪KTV管理系统的毕业设计过程,发现在毕业设计指导中还存在一些需要解决的问题:(1)引导学生重视毕业设计的工作做得不够充分。毕业设计通常历时几个月的时间,需要学生投入大量的时间和精力来完成。有些学生不够重视,对项目研究不够,许多细节考虑不够周全[4]。(2)培养学生自主学习的意识和方法还有欠缺。毕业设计中,学生会遇到没有学过的知识。作为指导教师,要纠正学生的依赖性,引导学生查阅文献、资料进行自我学习,完成新知识的积累。(3)毕业设计过程有待进一步精细化。在跟踪指导学生毕业设计时,指导教师不仅要指导学生选题、把关学生对系统的功能分析、审查学生的数据库设计等,还要关注项目的重点模块的实现,既要关注运行的结果,也要查看算法、设计方法等细节。只有这样才能提高毕业设计的质量[5]。

作者:马海珠 单位:无锡城市职业技术学院