媒体音乐播放器的设计与实现—毕业论文

更新时间:2024-06-28 07:19:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

毕业设计(论文)

媒体音乐播放器的设计与实现

学生学号 学生姓名 学院名称 专业名称 指导教师

年 月 日

摘要

为了更好的丰富人们的业余文化生活,提高歌厅管理水平,为消费者提供更加舒适、便利的娱乐环境,笔者设计并实现了一个点歌管理系统。该系统以C#作为开发语言。该系统具有界面友好、操作方便、检索迅速、存储量大等特点。

本文对系统的需求进行了分析,叙述了系统开发的目的和意义,阐述了系统的总体方案设计和数据库设计,重点叙述了各个模块的详细设计方法与设计过程,并对系统实施的相关问题作了介绍。

关键词 点歌管理系统;管理系统;系统设计;

I

Abstract

In order to better enrich the life of people's leisure and cultural, improve the level of karaoke management, to provide consumers with more comfortable and convenient entertainment environment, the author designed and implemented a VOD management system. The system to C # as development language, using SQL Server for data management background, achieving a song play, query by song, query by singer, query by the number of song’s name. The system has a friendly interface, easy operation, rapid retrieval, large memory capacity, ect. This paper analyzes the system requirements, describes the purpose and significance of system development, described the overall system design and database design, focusing on the various modules described in the detailed design methods and design process, and system implementation-related issues introduced.

Keywords Song Request Management Management System System Design

II

目 录

1 绪论 ............................................................................................................................................. 1 1.1 课题研究背景 ....................................................................................................................... 1 1.2 系统开发的目的 ................................................................................................................... 1 1.3 系统开发的意义 ................................................................................................................... 1 1.4 系统开发的内容 ................................................................................................................... 1 2 相关技术分析 ............................................................................................................................. 2 2.1 C# 2.0技术 ........................................................................................................................... 2 2.2 Microsoft SQL Server技术 .............................................................................................. 2 2.3 MCI简介 ................................................................................................................................ 4 3 系统总体方案设计 ..................................................................................................................... 6 3.1 系统设计思想 ....................................................................................................................... 6 3.2 系统组成设计 ....................................................................................................................... 6 3.3 SQL Server 2005语言与数据库的连接 .............................................................................. 7 3.3.1 系统配置的实现 ............................................................................................................. 7 3.3.2 数据库交互的实现 ......................................................................................................... 8 4 数据库设计 ............................................................................................................................... 10 5 系统详细设计 ........................................................................................................................... 12 5.1 点歌系统主界面设计 ......................................................................................................... 12 5.1.1 界面设计 ....................................................................................................................... 12 5.1.2 代码设计 ....................................................................................................................... 13 5.2 管理员设置设计 ................................................................................................................. 18 5.2.1 界面设计 ....................................................................................................................... 19 5.2.2 代码设计 ....................................................................................................................... 21 5.3 登录设计 ............................................................................................................................. 24 5.3.1界面设计 ........................................................................................................................ 24 5.3.2 代码设计 ....................................................................................................................... 25 5.4 查询设计 ............................................................................................................................. 25 5.4.1 界面设计 ....................................................................................................................... 25 5.4.2 代码设计 ....................................................................................................................... 29 5.5 小票打印设计 ..................................................................................................................... 29 5.5.1 界面设计 ....................................................................................................................... 29 5.5.2 代码设计 ....................................................................................................................... 31 6 系统测试与使用方法 ............................................................................................................... 34 6.1 系统测试方法 ..................................................................................................................... 34

I

6.1.1 测试目的 ....................................................................................................................... 34 6.1.2 测试方法 ....................................................................................................................... 34 6.1.3 测试内容 ....................................................................................................................... 34 6.2 软件维护 .......................................................................................................................... 37 6.2.1 软件维护的影响因素 ................................................................................................... 37 6.2.2 软件的可维护性 ........................................................................................................... 38 6.2.3 提高软件可维护性的方法 ........................................................................................... 38 6.3 系统使用方法 ..................................................................................................................... 38 结论 ............................................................................................................................................... 40 致谢 ............................................................................................................................................... 41 参考文献 ....................................................................................................................................... 42 附录 ............................................................................................................................................... 43 附录1 英文文献翻译 ............................................................................................................... 43 1. 英文 ................................................................................................................................... 43 2. 中文 .................................................................................................................................... 47 附录2 源代码 ........................................................................................................................... 52

II

1 绪论

1.1 课题研究背景

随着人民生活水平的不断提高,去KTV点歌深受广大消费者的喜爱。点歌系统是为KTV场所开发的视频歌曲点唱软件。一个好的点歌管理软件必须要拥有一个方便、快捷、准确的点歌功能。该点歌管理系统软件具有界面友好、操作简单等特点。开发的点歌系统具有以下功能:对点歌用户,实现简单的播放和选歌功能;另外,对于管理员用户,能够实现对歌库的管理操作,包括对歌曲及歌手的增加、删除;可以实现用户的结账付费功能。

1.2 系统开发的目的

点歌管理系统主要是用来提高公司的管理水平,给消费者更舒适的娱乐环境,它可以帮助消费者更方便的查找自己喜欢的歌曲,更及时地查看歌库所有歌曲。一款优秀的点歌管理系统,可以使消费者的心情更愉快,使管理者的效率更高。

1.3 系统开发的意义

随着经济的发展,社会的进步,计算机越来越深入到我们日常的工作学习及生活中,成为我们日常生活中不可缺少的辅助工具。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。它已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。

1.4 系统开发的内容

随着经济的发展,社会的进步,计算机越来越深入到我们日常的工作学习及生活中,成为我们日常生活中不可缺少的辅助工具。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。它已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了多如牛毛的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。以前开发Windows应用软件是专业人员的工作,需要掌握许多专业知识和经过特殊的培训才能胜任。现在我们使用C#也能够开发出功能强大、适合自己特殊需求的应用程序了。

点歌管理系统是一个管理系统,它是以工作C#作为开发平台,以SQL Server 2005作为数据库管理系统,实现对后台数据的存储与管理。点歌管理系统主要用来实现歌曲播放、歌曲查询、开户点歌、管理员对歌曲的增加、删除、对歌手的增加、删除、打印小票等功能。

1

2 相关技术分析

2.1 C# 2.0技术

C#语言是由两位杰出的微软工程师Anders Hejlsberg 和Scott Wiltamuth领导的小团队开发的。当2000年7月微软发布C#的时候,它的面世只是另一个影响大得多的事件:.NET平台发布的一部分。去掉伪装,.NET是运行在现有操作系统之上的一个面向对象的操作系统。

C#语言的简单让人倍感轻松——只有大约100个关键字和12种内置数据类型,但C#在实现现代编程概念的表达能力上却非常强大。C#作为站在C++和Java这样的世俗户上的现代评议自然涵盖了结构化、基于组件 、面向对象编程的所有支持。

任何面向对象评议的核心在于对类的定义和使用的支持。类定义了新的类型,可以扩展语言,更好地对要解决的问题建模。C#中有声明新的类及其方法和属性的关键字,还含有实现面向对象编程3大支柱——封装、继承和多态——的关键字。在C#中,与类的声明有关的一切都可以声明本身中找到。C#的类定义并不需要独立的头文件或IDL(Interface Definition Language,接口定义语言)文件。而且,C#支持新的XML风格的内嵌文档,大大简化了应用程序的在线和印刷品参考文档制作。C#还支持接口(Interface),一种与类就接口所指定的服务订立协定(contract)的方式。在C#中,类只能从一个父类继承,但可以实现多个接口。在实现接口时,C#类实现上也承诺了要提供接口规定的功能[1]。

需要注意的是,C#支持如下特性: (1) 使用C++式的指针直接访问内存

(2) 将上述这种操作标记为不安全(unsafe)的关键字

(3) 警告CLR垃圾回收器在指针所引用的对象释放前不要对其进行回收

2.2 Microsoft SQL Server技术

SQL Server 2005 通过在可伸缩性、数据集成、开发工具和强大的分析等方面的革新更好的确立了微软在BI领域的领导地位。SQL Server 2005 能够把关键的信息及时的传递到组织内员工的手中,从而实现了可伸缩的商业智能。从CEO 到信息工作者,员工可以快速的、容易的处理数据,以更快更好的做出决策[2]。SQL Server 2005全面的集成、分析和报表功能使企业能够提高他们已有应用的价值,即便这些应用是在不同的平台上。

SQL Server 2005有几个主要特性,重点关注企业数据管理、开发人员生产力和商务智能[3]。

(1) 高可用性

SQL Server 2005的失败转移集群和数据库镜像技术确保企业向员工、客户和合作伙伴提交高度可靠和可用的应用系统。

(2) 管理工具

2

SQL Server 2005引进了一套集成的管理工具和管理应用编程接口(APIS),以提供易用性、可管理性、及对大型SQL Server配置的支持。

(3) 安全性增强

SQL Server 2005旨在通过数据库加密、更加安全的默认设置、加强的密码政策和细化许可控制、及加强的安全模型等特性,为企业数据提供最高级别的安全性。

(4) 可伸缩性

SQL Server 2005可伸缩性的先进性包括表格分区、复制能力的增强和64位。 (5) Common Language Run time(CLR)集成

SQL Server 2005引入了使用Microsoft.NET语言来开发数据库目标的性能。 (6) 深入的XML集成

SQL Server 2005提供一种新的XML数据类型,使在SQL Server数据中存储XML片段或文件成为可能[4]。

数据库管理有10个最重要的特点 (1) 分析服务

SQL SERVER 2005的分析服务迈入了实时分析的领域。从对可升级性性能的增强、到与微软Office软件的深度融合,SQL SERVER 2005将帮助您,将商业智能扩展到您业务的每一个层次。

(2) 数据传输服务(DTS)

DTS数据传输服务是一套绘图工具和可编程的对象,可以用这些工具和对象,对从截然不同来源而来的数据进行摘录、传输和加载(ETL),同时将其转送到单独或多个目的地[5]。SQL SERVER 2005将引进一个完整的、数据传输服务、重新设计方案,这一方案为用户提供了一个全面的摘录、传输和加载平台。

(3) 数据挖掘

我们将引进四个新的数据挖掘运算法,改进的工具和精灵,它们会使数据挖掘,对于任何规模的企业来说,都变得简单起来。

(4) 报表服务

在SQL SERVER 2005中,报表服务将为在线分析处理(OLAP)环境提供自我服务、创建最终用户特别报告、增强查询方面的开发水平,并为丰富和便于维护企业汇报环境,就允许升级方面,提供增进的性能[6]。

(5) 集群支持

通过支持容错技术移转丛集、增强对多重执行个体的支持、以及支持备份和恢复分析服务对象和数据,分析服务改进了其可用性。

(6) 主要运行指标

主要运行指标(KPIS)为企业提供了新的功能,使其可以定义图表化的、可定制化的商业衡量标准,以帮助公司制定和跟踪主要的业务基准。

3

(7) 可伸缩性和性能

并行分割处理,创建远程关系在线分析处理(ROLAP)或混合在线分析处理(HOLAP)分割,分布式分割单元,持续计算,和预制缓存等特性,极大地提升了SQL Server 2005中分析服务的可伸缩性和性能。

(8) 单击单元

当在一个数据仓库中创建一个单元时,单元向导将包括一个可以单击单元检测和建议的操作。

(9) 预制缓存

预制缓存将MOOLAP等级查询运行与实时数据分析合并到一起,排除了维护在线分析处理存储的需要。显而易见,预制缓存将数据的一个更新备份进行同步操作,并对其进行维护,而这些数据是专门为调整查询而组织的、它们将最终用户从超载的相关数据库分离了出来。

(10) 与Microsoft Office System集成

在报表服务中,由报表服务器提供的报表能够在Microsoft SharePoint门户服务器和Microsoft Office System应用软件的环境中运行,Office System应用软件其中包括Microsoft Word和Microsoft Excel[7]。您可以使用SharePoint功能,订阅报表、建立新版本的报表,以及分发报表。还能够在Word或Excel软件中打开报表,观看超文本连接标示语言(HTML)版本的报表。

2.3 MCI简介

MCI(Multimedia Control Interface)是Windows系统定义的多媒体接口标准,MCI接口包括了CDAudio(激光唱机)、Scanner(图像扫描仪)、VCR(磁带录像机)、Videodisc(激光视盘机)、DAT(数字化磁带音频播放机)、Digital Video(窗口中的数字视频)、Overlay(窗口中的模拟视频叠加设备)、MMMovie(多媒体影片演播器)、Sequencer(MID音序设备)、WaveAudio(波形音频设备)和Other(未定义的MCI设备)等多媒体的主要产品。MCI的最大优点是应用系统与设备的无关性,对于标准多媒体设备,安装相应的Windows的MCI Driver,Windows即可对该设备进行操作访问;对于非标准的多媒体设备,只要有厂家提供的MCI Driver也一样可以操作。由于MCI的设备无关性,程序员在多媒体应用系统的开发中,无需了解每种产品细节,就能开发出通用的多媒体应用系统。那么在C#.NET中如何使用MCI呢?它是通过C#.NET控件提供的功能来实现的。

MCI控件是C#.NET提供的一个技件,可以使用它来管理媒体控制接口(MCI)设备,编写多媒体应用程序。

MCI是ActiveX控件,一般情况下,该控件不出现在工具箱里,可以按照如下步骤将它加入到工具箱中:

4

在工具箱中单击鼠标右键,在弹出的快捷菜单中选择\选择项\命令,弹出\选择工具箱项\对话框,在\组件\选项卡中选中Microsoft Multimedia Control前的复选框,单击\确定\按钮即可将控件加入到工具箱中。

当将MCI控件加入到工具箱中后,可以将该控件拖曳到窗体上。

该控件由一组执行MCI命令的按钮组成,与通常使用的录放机上的按钮类似。 例如,单击\播放\按钮的事件是AxMMContyrol1_PlayClick。MCI控件在设计或运行时可以是可见的或隐藏的,其按钮功能也可以通过鼠标Click事件重新定义。

Windows API的多媒体和资源文件的高层控制MCI进行封装,使读者不必研究MCI的内部函数,轻松调用API类的函数,就能实现播放视频文件。Windows已经提供了一个关于多媒体处理的动态链接库WINMM.DLL,并通过调用它所提供的API函数,就可以使用MCI指令进行多媒体方面的操作了。

当需要使用MCI按钮功能时,必须将该按钮的属性(Visible和Enabled)设为True;若不需要该按钮时,必须设置Visible属性为False;若使该按钮功能当前无效时,设置Enabled属性为False。

在Windows 2000或XP中,对各种多媒体设备提供了强有力的支持。

MCI的全称是Media Control Interface(多媒体控制接口),为各种多媒体设备,用MCI函数可以给上述的任何一种设备发出命令,告诉他们开始,结束,暂停,倒退,快进等,就像按动播放器面版上的按钮一样。每一个设备的特殊命令依赖于设备本身的功能,例如可以让波形音频设备录音等。实际上MCI是一个高级的函数调用接口,可以把它看作一个解释器,通过它,就可以直接和外部音频或视频设备打交道了。

5

3 系统总体方案设计

3.1 系统设计思想

点歌管理系统主要是用来管理数据库内的歌曲,并让消费者在可视界面下运行软件。所以,该系统需要实现以下功能。

(1) 管理员能实现歌曲的添加、删除;歌手的添加、删除、歌手信息的修改。 (2) 管理员设置房间的价格、会员卡的折扣等。

(3) 消费者能实现根据歌手地区、性别、歌手的拼音、歌曲名字数、歌曲类别查询。 (4) 消费者可以查看或编辑播放列表,也可以清空播放列表。 其结构如图3-1所示。

使用点歌管理系统是为了提高管理效率及方便消费者,所以该系统应提供方便快捷的可视化界面,帮助用户高效率的完成想要的操作。考虑这些因素,点歌管理系统应达到以下目标:

(1) 提供多条件查询功能,方便用户查询歌库内的歌曲、歌手情况的各种数据。 (2) 提供多条件查询功能,方便用户查询指定歌曲、歌手的信息。 (3) 提供快捷的播放功能,及时更新数据库内的数据。 (4) 提供人性化的界面,能够为用户提供快速的查询。

根据以上分析,一个标准的点歌管理系统应该包括增加歌曲、删除歌曲、增加歌手、删除歌手、歌曲查询、歌手查询、拼音查询、歌曲数查询、单曲循环、全部循环等功能。

增加歌曲 点歌管理系统 管理员 消费者 删除歌曲 增加歌手 删除歌手 设置打折率 设置包间价格 打印小票 按歌名查询 按歌手查询 按歌曲数查询 按歌手拼音查询 按歌曲类型查询 编辑播放列表 图3-1功能结构图

3.2 系统组成设计

根据系统分析本系统主要共有5个查询界面,主界面,打印结账界面,登录界面。 (1) 歌手查询

6

歌手查询模块主要是用户根据歌手的名称来查询歌库内歌曲。查询时,用户可在文本框内输入想要查找的歌手,在该界面中的列表控件内会列出此时数据库内的所有相关歌曲,双击选择歌曲并添加到播放列表中。

(2) 歌名查询

歌名查询模块主要是用户根据歌曲的名称来查询歌库内歌曲。查询时,用户可在文本框内输入想要查找的歌曲名称,在该界面中的列表控件内会列出此时数据库内的所有相关歌曲,双击选择歌曲并添加到播放列表中。

(3) 歌曲名字数查询

歌曲名字数查询模块主要是用户根据歌名数字查询歌库内歌曲。查询时,用户可在文本框内输入想要查找的数字,在列表框内系统会列出此时数据库内所有相关歌曲,双击选择歌曲并添加到播放列表中。

(4) 歌手拼音查询

歌手拼音查询模块主要是用户根据歌手的名称来查询歌库内歌曲。查询时,用户可在文本框内输入拼音,获取数据库内相关歌曲信息,双击选择歌曲并添加到播放列表中。

(5) 歌曲类型查询

该模块主要是通过下拉列表框选择数据库内的歌曲,用户点击下拉箭头时,系统会自动绑定此时数据内己有的歌曲类型,用户只要选择,就会在列表框内查找出此时歌库内相关歌曲,双击选择歌曲并添加到播放列表中。

(6) 主界面

该窗体用于管理员登录与普通用户点歌。管理员登录时,需点击界面上方的登录按钮,正确操作后才可进入管理员界面。普通用户可以直接在该界面进行点歌操作。

(7) 登录界面

该窗体主要用于区别用户类型,方便管理员操作数据库数据。 (8) 打印界面

该窗体主要用于用户结账,选择房间号,系统自动绑定相关信息,直接结账或打印预览。

3.3 SQL Server 2005语言与数据库的连接

3.3.1 系统配置的实现

系统设有配置文件DataOperate.ini,数据库文件内放置着系统连接时登录名、密码、数据库名及可执行文件名,从数据库登陆的配置文件中读取值并赋给全局变量。读取数据库文件代码如下:

public static bool readDBInfo() { try {

String strIniPath = System.Windows.Forms.Application.StartupPath + @\

7

if (File.Exists(strIniPath)) { ClsOperateIni myIniFile = new ClsOperateIni(strIniPath);

ClsOverallVar.SetPattern(int.Parse(myIniFile.IniReadValue(\ ClsOverallVar.SetServerName(myIniFile.IniReadValue(\ ClsOverallVar.SetServerId(myIniFile.IniReadValue(\ ClsOverallVar.SetServerPwd(myIniFile.IniReadValue(\ ClsOverallVar.SetDBName(myIniFile.IniReadValue(\

return true; } else {

return false;

} }

catch {

return false;} }

3.3.2 数据库交互的实现

C#连接数据库实现:

public static SqlConnection GetConnection()

{ String strSource;

if (ClsOverallVar.GetPattern() == 0) {

strSource = \security=SSPI;Initial Catalog='\+ ClsOverallVar.GetDBName() + \

else { strSource

=

\

+

ClsOverallVar.GetDBName()

+

\

+

ClsOverallVar.GetServerName() + \+ ClsOverallVar.GetServerId() + \pwd=\+ ClsOverallVar.GetServerPwd() + \ }

SqlConnection myConn = new SqlConnection(strSource); myConn.Open(); myConn.Close(); return myConn; }

C#连接SQL Server数据库需要导入额外的命名空间,所以有了最前面的两条using命令,这是必不可少的!

using System.Data; using System.Data.SqlClient;

strSource这个变量里存放的是连接数据库所需要的连接字符串,他指定了要使用的数据提供者和要使用的数据源。

8

GetServerName()、 GetServerId()、GetServerPwd()都是直接从ini文件中读取的,这里的GetPattern()值有两个,‖0‖和‖1‖,其中0表示本地登录,1表示远程登录。使用本地登录还是远程登录只需在系统可执行文件夹下找到DataOperate.ini配置文件,修改里面的相关文件即可实现相应的数据库的连接。部分代码如下:

ClsDataContact.readDBInfo();

若为本地连接,则此处的―initial catalog=’‖+clsoverallvar.getdbname()+‖’‖:使用的数据源则为“Music”这个数据库。

在这里,建立连接对象用的构造函数为:SqlConnection。

由于系统频繁的调用数据库,而对数据的操作分为查找数据和更新数据操作两种,更新数据时不需要返回值,所以系统利用DBOperation类封装了对数据库操作的方法,以提供统一的数据库操作接口[8]。利用DBOperation类GetDataTableBySql方法可以进行查找数据函数返回一个DataTable表,DoSqlString方法可以执行一个SQL语句,进行插入、删除、修改操作。

9

4 数据库设计

本系统数据库包括管理员表、歌曲信息表、歌手信息表、包间类型表、折率表、开

户点歌表及用户播放列表。

(1) 管理员表(admin)

管理员表主要包括管理员名称及密码。表结构如表4-1所示。

字段名称 Admin adminpwd 表4-1 管理员表 含义 数据类型 用户名称 Varchar(50) 起始日期 varchar(50) 可否为空 NO NO (2) 歌曲信息表(musiclist)

歌曲信息表主要包括歌曲名称、歌曲内码、歌手名、歌曲名字数、歌曲类别、歌曲类型、歌曲存储路径。表结构如表4-2所示。

字段名称 Gsname Gqname Gqnum Gqtype Format Path Gqlogo 表4-2 歌曲信息表 含义 数据类型 歌手名称 varchar(50) 歌曲名称 varchar(50) 歌曲数 varchar(50) 歌曲类别 varchar(50) 歌曲类型 varchar(50) 歌曲路径 varchar(200) 歌曲内码 int 可否为空 NO NO NO NO NO NO NO (3) 歌手信息表(singer)

歌手信息表主要是存放歌手个人信息,便于用户采用不同类型的查询。表结构如表4-3所示。

字段名称 Sinnam Sinsex Spinyin Sinarea Slogo 表4-3 歌手信息表 含义 数据类型 歌手名称 varchar(50) 歌手性别 varchar(50) 歌手拼音 varchar(50) 歌手地区 varchar(50) 歌曲内码 Int 可否为空 NO NO NO NO NO (4) 包间类型表(room)

包间类型表主要是存放包间价格、时间、包间类型,包间类码。表结构如表4-4所示。

字段名称 roomtype Price Time roomlogo 表4-4 包间类型表 含义 数据类型 包间类型 varchar(50) 包间价格 varchar(50) 时间 varchar(50) 包间类码 varchar(50) 可否为空 YES YES YES NO (5) 折率表(abate)

打折率表主要是存放管理员设置的会员率、会员类型、会员类码。表结构如表4-5所示。

10

表4-5折率表 含义 数据类型 会员级别 varchar(50) 打折率 varchar(50) 会员内码 varchar(50) 字段名称 cardtype Abate Viplogo 可否为空 YES YES NO (6) 开户点歌表(money)

开户点歌表主要用于存放用户消费时选择的包间类型、用户的会员等级、充值、开户时间及房间号。表结构如表4-6所示。

字段名称 roomnum roomtype cardtype Money userlogo Uncost begintime 表4-6开户点歌表 含义 数据类型 房间号 nvarchar(50) 包间类型 nvarchar(50) 会员等级 nvarchar(50) 充值金额 Float 用户内码 Int 消费金额 nvarchar(50) 开始时间 Datetime 可否为空 YES YES YES YES NO YES YES (7) 用户播放列表(likemusic)

用户播放列表主要方便用户存放自己喜欢的歌曲,其中包括歌曲名、歌手名、歌曲类型、歌曲名称数及歌曲路径。表结构如表4-7所示。

字段名称 gsname gqname Gqnum Gqtype Path Gqlogo 表4-7用户播放列表 含义 数据类型 歌手名称 varchar(50) 歌曲名称 varchar(50) 歌曲数 varchar(50) 歌曲类别 varchar(50) 歌曲路径 varchar(200) 歌曲内码 Int 表4-8歌曲类型表 含义 数据类型 类型内码 Int 类型名称 nvarchar(50) 可否为空 NO NO NO NO NO NO (8) 歌曲类型表(type)

字段名称 Lxlogo Lxname 可否为空 NO YES

11

5 系统详细设计

5.1 点歌系统主界面设计

5.1.1 界面设计

点歌系统主窗体是用来播放数据库内歌曲。主要可以实现用户对列表框内的歌曲进行下一首、上一首、增加音量、减小音量、快进、快退、全屏功能。管理员登录时的数据库操作及开户点歌功能。可以播放的音乐格式有mp3,wmv,wma格式,双击列表框内的歌曲进行歌曲的播放。

根据点歌系统主界面所要实现的功能,需要在界面上添加如下控件:windows media player,skinEngine,timer,toolstrip,button(按钮)控件。上一首按钮,就是为了实现上一首歌曲的播放;下一首按钮为了实现下一首歌曲的播放;增加音量按钮,就是为实现音量的增加;减小音量按钮,就是为了实现音量的增加,快进按钮是为了实现快进播放功能;快退按钮是为了实现快退功能;skinEngine是为了使界面运行时更美观。toolstrip控件是为了区别普通用户与管理员的登录。全屏按钮,就是为了实现屏幕的全屏播放,按歌曲查询按钮用来实现用户能够根据歌曲名称查询歌库内的歌曲,并双击选择歌曲添加到用户播放列表。其它控件可类似。各主要控件的属性如表5-1所示。

表5-1点歌系统主窗体主要控件属性 控件 属性 属性值 Name Form1 点歌系统(Form1) Text 点歌系统 Windows media player Button1 Button2 Button3 Button4 Button5 Button6 Button8 Button9 Button10 Button11 Button12 Button13 Button14 Button15 Name URL Text Text Text Text Text Text Text Text Text Text Text Text Text Text myplayer null 上一首 下一首 增加音量 减小音量 快进>> 快退<< 停止 播放/暂停 开户点歌 管理员设置 按歌曲类别查询 按歌曲名称查询 按拼音查询 按歌手查询 12

续表5-1

Button16 Text 清空播放列表 Button17 Label1 Label2 Text Text Text

己点歌播放列表 此时播放歌曲时间的当前进度 当前播放歌曲总时间 设计完成的安排工作界面如图5-1所示。

图5-1 点歌系统主界面

5.1.2 代码设计

13

(1) 当用户双击列表框内的歌曲时,将触发listView1_DoubleClick()事件,并且直接播放当前选中的歌曲,部分代码如下:

private void listView1_DoubleClick(object sender, EventArgs e) { if (this.listView1.SelectedItems.Count > 0) {

myplayer.currentMedia=myplayer .newMedia (listView1 .SelectedItems [0].SubItems [3].Text );

string fname = this.listView1.SelectedItems[0].SubItems[3].Text; myplayer.URL = fname;

this.button9.Text = \暂停\ timer1.Enabled = true; } }

(2) 当用户当击上一首按钮时,系统将先判断当前选择行是不是第一行,如果为第一行则手动设置列表框中的最后一行下标为当前选中行,并设置其可见状态,可以让用户知道当前选中的歌曲,最后实现上一首歌曲的播放,代码如下:

private void button1_Click(System.Object sender, System.EventArgs e)//上一首 { int a = this.listView1.Items.Count - 1; try {

if(this.listView1.SelectedItems.Count>0&&this.listView1.Items.Count > 0) {

if (listView1.SelectedItems[0].Index <= this.listView1.Items.Count - 1 && this.listView1.Items.Count > 1 && this.listView1 .SelectedItems [0].Index >0) { index = listView1.SelectedItems[0].Index;

myplayer.URL=listView1.Items[listView1.SelectedItems[0].Index-1].SubItems[3].Text; listView1.Items[index].Selected = false; listView1.Items[index - 1].Selected = true; listView1.Focus(); }

else { listView1.Items [0].Selected = false; listView1.Items[a ].Selected = true;

listView1.Focus();

myplayer.URL=this.listView1.Items[a].SubItems[3].Text; } } else { MessageBox.Show(\列表中没有歌曲!\ } } catch { }}

(3) 当用户当击下一首按钮时,系统将先判断当前选择的行是不是最后一行,如果为最后一行则手动设置列表框中的第一行为当前选中行,并设置其可见状态,可以让用户知道当前选中的歌曲,然后再实现下一首歌曲的播放,代码如下:

int index = 0;

private void button2_Click(System.Object sender, System.EventArgs e) { try {

14

if (this.listView1.SelectedItems.Count > 0 && this.listView1.Items.Count > 0) {

if(listView1.SelectedItems[0].Index 1) {

index = listView1.SelectedItems[0].Index;

myplayer.URL = listView1.Items[index + 1].SubItems[3].Text; listView1.Items[index].Selected = false; listView1.Items[index + 1].Selected = true; listView1.Focus(); } else{

listView1.SelectedItems[0].Selected = false;

listView1.Items[0].Selected = true; listView1.Focus();

myplayer.URL = this.listView1.Items[0].SubItems[3].Text; } } else { MessageBox.Show(\列表中没有歌曲!\ } catch{ } }

(4) 当用户当击增加音量按钮时,系统会调用播放器控件的增加音量事件,使播放器增加音量,部分代码如下:

keybd_event(175, 0, 0, 0);//增加音量

(5) 当用户单击减小音量按钮时,系统会调用播放器控件的减小音量事件,使播放器降低音量,部分代码如下:

keybd_event(174, 0, 0, 0);

(6) 当用户单击快进按钮时,系统调用播放器控件的fastForward()方法,使播放器实现快进的功能,部分代码如下:

myplayer.Ctlcontrols.fastForward();//快进

(7) 当用户单击快退按钮时,系统调用windows media player 控件的fashReverse()方法,使播放器实现快退的功能,部分代码如下:

myplayer.Ctlcontrols.fastReverse();

(8) 当用户单击停止按钮时,系统调用播放器控件的stop()方法,并且停止时间控件的运行,使其可用状态设为false,手动拖动条值设为0,使播放器实现停止播放的功能,部分代码如下:

timer1.Enabled = false; myplayer.Ctlcontrols.stop(); trackBar1.Value = 0; button9.Text = \播放\

(9) 用户单击按歌曲类别查询时,将弹出歌曲类别查询窗体。本系统设计了一个歌曲

15

类别查询界面,以区别于各种不同的查询,方便操作。界面查询时,用户只需要从数据库中选择己有的歌曲类别查询就可以看到当前数据库表中己有的歌曲信息,而不需用户手动填写歌曲类别。部分代码如下:

Form frm = new FrmSongType(); frm.ShowDialog(); return;

(10) 当用户单击按歌手查询时,系统将弹出歌手查询窗体。本系统同时设计了歌手查询界面,以区别于各种不同查询,方便操作。界面查询时,用户需要在文本框内输入想要查询的歌手名称,为了实现高效率查询,在设计查询语句时,采用的是模糊查询,这样,如果用户只记得歌手名称中某一个字,也可以查到相应的数据。部分代码如下:

Form frm = new FrmName (); frm.ShowDialog(); return;

(11) 当用户单击按拼音查询时,系统将弹出拼音查询窗体。本系统同时设计了歌手拼音查询界面,以区别于各种不同查询,方便操作。界面查询时,用户需要在文本框内输入想要查询的歌手的拼音,为了实现高效率查询,在设计查询语句时,采用的是模糊查询,不区分大小写,尽管系统在自动生成时,歌手拼音的首字母是大写的,但是查询的时候不影响功能的使用。这样设计,只为了可以尽可能快地查到数据库中相关数据。部分代码如下:

Form frm = new Frmpinyin(); frm.ShowDialog(); return;

(12) 当用户单击按歌曲名称查询时,系统弹出歌曲名称查询窗体。本系统同时设计了歌曲名称查询界面,以区别于各种不同查询,方便操作。界面查询时,用户需要在文本框内输入想要查询的歌曲的名称,为了实现高效率查询,在设计查询语句时,采用模糊查询,记得歌曲名称中某一个字,系统也能够查到用户想要查找的信息。部分代码如下:

Form frm = new Frmgqname(); frm.ShowDialog(); return;

(13) 当用户单击按歌手查询时,系统弹出歌手查询窗体。本系统同时设计了歌手名称查询界面,以区别于各种不同查询,方便操作。界面查询时,用户需要在文本框内输入想要查询的歌手名称,为了实现高效率查询,在设计查询语句时,采用模糊查询,记得歌手名中某一个字,系统也能够查到用户想要查找的信息。部分代码如下:

Form frm = new FrmName (); frm.ShowDialog();

16

return;

(14) 当用户单击按歌曲名字数查询时,系统弹出歌曲名字数查询窗体。本系统同时设计了歌曲名字数查询界面,以区别于各种不同查询,方便操作。界面查询时,用户需要在文本框内输入想要查询的歌曲名字数,点击查询按钮,就会在界面上显示出己有数据。部分代码如下:

Form frm = new Frmgqshu(); frm.ShowDialog();

(15)当用户单击管理员设置按钮时,进入管理员操作平台,弹出管理员操作界面,区分管理员与普通用户的设计思想是设置ss_temp变量,当主界面加载时,先判断ss_temp变量的值。如果为1,则为管理员登录,显示管理员设置按钮;如果为0,则为普通用户,隐藏管理员设置按钮, 部分代码如下:

if (ss_temp == 1){

Form frm = new Frmglysz(); frm.ShowDialog(); return; } else {

button11.Visible = false; }

(16) 当管理员单击开户点歌界面时,弹出开户点歌界面,管理员需要知道房间号码,在该界面中,选择房间类型,会员卡类型,预付金额及房间号码还有当前点歌的时间,以便于最后结款。部分代码如下:

Form frm = new frmkhdg(); frm.ShowDialog(); return;

(17) 当用户点击全屏按钮时,对当前播放器进行全屏设置。部分代码如下: this.myplayer.fullScreen = true;

(18) 当用户点击清空播放列表时,实现将播放列表中的数据清空。此时的清空播放列表是用户选择的临时播放列表,并不是数据库中歌曲信息。部分代码如下:

string sql = \ try {

DBOperation.DBOperate.DoSqlString(sql); MessageBox.Show(\成功清除播放列表\

}

(19) 当用户选择己点歌列表时,在主界面的播放列表中会显示此时用户己经选择的用户列表。如果此时没有选择歌曲,则显示为空。部分代码如下:

17

string s_Sql = \ showList(s_Sql );

(20) 当用户想停止播放歌曲时,只需单击停止按钮即可实现停止播放。同时,需要清空显示控件的状态,代码中的label1是用于显示当前播放时间,label2用于显示当前播放歌曲的总时间。代码如下:

timer1.Enabled = false;

myplayer.Ctlcontrols.stop(); label1.Text = \ label2.Text = \ trackBar1.Value = 0; button9.Text = \播放\

(21) 暂停功能按钮的实现。部分代码如下:

if (myplayer.playState == WMPLib.WMPPlayState.wmppsPaused) { myplayer.Ctlcontrols.play(); this.button9.Text = \暂停\

else if (myplayer.playState == WMPLib.WMPPlayState.wmppsPlaying){ myplayer.Ctlcontrols.pause(); this.button9.Text = \播放\

else if (myplayer.playState == WMPLib.WMPPlayState.wmppsStopped) { myplayer.Ctlcontrols.stop(); this.button9.Text = \播放\

(22) 刷新按钮是用来实现显示用户播放列表与数据库所的歌曲的切换。如果用户己经选择了喜欢的歌曲,那么在主界面播放列表中则显示likemusic列表里面的信息;如果用户没有选择喜欢的歌曲,则在播放列表中显示数据库里面的所有歌曲。部分代码如下: DataTable myDT = DBOperation.DBOperate.GetDataTableBySql(\ if (myDT .Rows .Count ==0) { string Sql = \ showList(Sql);} else {

string s_Sql = \ showList(s_Sql); }

5.2 管理员设置设计

18

5.2.1 界面设计

管理员设置窗体是管理员用来对数据库进行操作的平台。主要是对数据库内的歌曲,歌手的增加、删除及包间和折率的修改。普通用户不能进入该界面,每次操作情况将写入数据库中。

根据管理员设置界面所要实现的功能,界面上的主要控件如下:listview列表框控件,button按钮控件,label标签控件。各主要控件的属性如表5-2所示。

表5-2管理员设置主要控件属性 控件 属性 属性值 Name Frmglysz Form1(Form) Text 管理员设置 listview1(listview) listview2(listview) Button1 Button2 Button3 Button4 button5 Label1 Label2 Colums columns Name Name Name Name Name Text Text 歌名、歌手名、歌曲风格 歌手 addgq (添加歌曲) delgq(删除歌曲) addgs(增加歌手) delgs(删除歌手) setrate(设置费率) 管理员设置 歌库已有歌手 设计完成的管理员设置界面,添加歌曲,添加歌手,设置费率界面如图5-2,5-3,5-4,5-5所示。

19

图5-2 管理员设置界面

图5-3 添加歌曲界面

20

图5-4 添加歌手界面

图5-5 设置费率

5.2.2 代码设计

(1) 当管理员单击添加歌曲按钮时,将弹出添加歌曲窗体,如图5-3所示,这里最关键的是如何实现歌曲地址的正确绑定[9]。只有地址绑定正确才能在主界面中实现播放的功能,部分代码如下:

OpenFileDialog openfile = new OpenFileDialog();

openfile.Filter = \ if (openfile.ShowDialog() == DialogResult.OK) {

filepath.Text = openfile.FileName; }

这里就是实现将用户选择的歌曲全路径添加到播放列表中,并显示到filepath文本控件中以便于插入数据库。

该模块还设计了一个方便用户的操作,如果管理员想多次插入歌曲,则可以直接点新增,就可直接保存上条记录,继续进行下一条的插入。而不需要点击保存后再次点新增进行下一条的插入。部分代码如下:

21

if (MessageBox.Show(\是否保存?\\友情提示\MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { i_State = 1;

toolStripButton2_Click(toolStripButton2, e); this.btn .Text = \保存\ else { i_State = 0; NewAdd();

this.btn.Text = \保存\

}

(2) 当管理员单击删除歌曲按钮时,将弹出友情提示,如果用户选择“是”,则删除,若删除成功,则弹出messagebox提示成功删除。部分代码如下: if (this.listView1.SelectedItems.Count > 0)

{if (MessageBox.Show(\继续则删除该信息\\友情提示\MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { try {

String sql=\\

DBOperation.DBOperate.DoSqlString(sql ); MessageBox.Show(\删除成功\ catch (Exception ex)

{ MessageBox.Show(ex.ToString()); } } }

showSong (\ }

(3) 当管理员单击添加歌手按钮时,将弹出添加歌手窗体,如图5-4所示,界面中拼音是系统根据用户输入的中文歌手自动生成的,这是一个实现的难点。部分代码如下: if (regex.IsMatch(noWChar[j].ToString()))//此处是中文字符转换 {

array = System.Text.Encoding.Default.GetBytes(noWChar[j].ToString()); i1 = (short)(array[0]); i2 = (short)(array[1]); chrAsc = i1 * 256 + i2 - 65536; if (chrAsc > 0 && chrAsc < 160) {

22

pyString += noWChar[j]; }

(4) 当管理员单击删除歌手按钮时,将弹出歌手删除窗体,代码如下: if (this.listView2.SelectedItems.Count > 0) {

if (MessageBox.Show(\继续则删除该信息\\友情提示\MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) {

try { string sql = \

this.listView2.SelectedItems[0].SubItems[1].Text + \

DBOperation.DBOperate.DoSqlString(sql ); MessageBox.Show(\删除成功\ catch (Exception ex)

{ MessageBox.Show(ex.ToString()); } } (5) 当管理员单击设置费率按钮时,将弹出费率设置窗体,代码如下: Form frm = new FrmSetRate(); frm.ShowDialog();

其中修改包间类型信息时,在相应的文本框内输入值,单击修改包间信息,系统会更新数据库内数据并及时显示在界面上。部分代码如下:

if (this.listView1.SelectedItems.Count > 0) {

string sql = \

+ this.textBox2.Text + \+ \

try {

DBOperation.DBOperate.DoSqlString(sql); MessageBox.Show(\修改成功\ catch (Exception ex) {

MessageBox.Show(ex.ToString ()); } showRoom (\ else{

MessageBox.Show(\请先选择要修改的行\ }

当管理员想要修改会员折率时,在设置费率界面的相应文本框内输入值,单击修改折率信息,系统会更新数据库内数据并及时将信息显示在界面上。部分代码如下:

if (this.listView2.SelectedItems.Count > 0) {

string sql = \this.textBox4.Text + \

try {

23

DBOperation.DBOperate.DoSqlString(sql); MessageBox.Show(\修改成功\ showRate (\ } catch (Exception ex) {

MessageBox.Show(ex.ToString()); } } else {

MessageBox.Show(\请先选择要修改的行\ } (6) 当管理员单击退出按钮进,将退出窗体,代码如下: this.close();

5.3 登录设计

5.3.1界面设计

登录界面是管理员用于登录修改数据库内的数据使用的界面。主要控件有combobox控件textbox控件、button按钮控件。各主要控件的属性如表5-3所示。

表5-3 登录窗体主要控件属性 控件 属性 属性值 Name FrmLogin Form1 (Form) Text 管理员界面 ComboBox1(combobx) TextBox1 Button1 Button2 Name Name PasswordChar Name Name cmbId txtPwd * button1(登录) button2(退出) 设计完成的登录界面如图5-6所示

24

图5-6 登录界面

5.3.2 代码设计

(1) 当用户选择管理员用户名,并且输入密码pwd,单击登录按钮后,进入主窗体,并且显示普通用户隐藏着的按钮;如果密码输入错误,则弹出提示信息重新输入密码,部分代码如下:

DataTable myDT = DBOperation.DBOperate.GetDataTableBySql(\adminname='\ + \ if (myDT.Rows.Count == 0) {

MessageBox.Show(\管理员密码输入错误,请重新输入\ txtPwd.Clear(); txtPwd.Focus(); } else {

Form frm = new Form1(1); frm.ShowDialog(); this.Close(); }

(2) 当管理员单击退出按钮时,退出系统,代码如下: this.close();

5.4 查询设计

5.4.1 界面设计

查询分歌曲类别、歌曲名称、歌曲名称数、歌手、歌手拼音查询,是方便用户查找数据库内数据使用的界面。主要控件有combobox控件、button按钮、listview列表控件、textbox控件[10]。各主要控件的属性如表5-4所示。

表5-4 歌曲类别查询主要控件属性 控件 属性 属性值 Name FrmSongType Form1(Form) Text 按歌曲类别界面 ComboBox1(combobx) Listview1 Name Name Columns combobox1 listview1 序号、歌曲名、歌曲类别 设计完成的按歌曲类别查询图、歌曲名称查询图、歌曲名称数查询图、歌手名查询图及歌手拼音查询图的设计界面如下图5-7、5-8、5-9、5-10、5-11所示,当用户双击某一界面歌曲时,弹出歌曲详细信息,如图5-12所示,点击添加完成添加到用户播放列表操作。

25

图5-7 按歌曲类别查询

图5-8 按歌曲名称查询

26

图5-9 按歌曲名字数查询

27

图5-10 按歌手名查询

图5-11 按歌手拼音查询

图5-12歌曲详细信息

28

5.4.2 代码设计

(1) 用户选择按歌曲类别按钮查询后,弹出如图5-7所示,查询结果通过listview控件显示在界面上,双击歌曲弹出歌曲详细信息,如图5-12所示,选择歌曲进行添加退出,部分代码如下:

string s_Sql = \//按歌曲类别查询

showListview1(s_Sql); }

(2) 用户选择按歌曲名称按钮查询后,弹出如图5-8所示,查询结果通过listview控件显示在界面上,双击歌曲弹出歌曲详细信息,如图5-12所示,选择歌曲进行添加退出,部分代码如下:

string sql = \//按歌曲名称查询 showName(sql );

(3) 用户选择按歌曲名字数按钮查询后,弹出如图5-9所示,查询结果通过listview控件显示在界面上,双击歌曲弹出歌曲详细信息,如图5-12所示,选择歌曲进行添加退出,部分代码如下:

string s_Sql = \ showListview1(s_Sql);

(4) 用户选择按歌手名称按钮查询后,弹出如图5-10所示,查询结果通过listview控件显示在界面上,双击歌曲弹出歌曲详细信息,如图5-12所示,选择歌曲进行添加退出,部分代码如下:

string s_Sql = \showListview1(s_Sql);

(5) 用户选择歌手拼音按钮查询后,弹出如图5-11所示,查询结果通过listview控件显示在界面上,双击歌曲弹出歌曲详细信息,如图5-12所示,选择歌曲进行添加退出,部分代码如下:

string sSql = \musiclist.gqname,musiclist.gqlogo,musiclist.gsname from musiclist,singer where musiclist.gsname=singer.sinnam and (singer.spinyin like'%\ showPinYin(sSql );

5.5 小票打印设计

5.5.1 界面设计

打印账单界面主要包含的控件有Combobox下拉控件,textbox文本框共分为开始时间、结束时间、包间类型、会员卡类型、单价、折率、预付额、应付金额及找零,button按钮分

29

为确认结账和打印预览。能够实现选择相应房间号后系统自动绑定其它几个文本框内信息。如果点击打印预览,则可直接预览打印效果图;点击确认结账按钮时,弹出结账信息提示框[12]。各主要控件的属性如表5-5所示。

表5-5 打印账单主要控件属性 控件 属性 属性值 Name FrmPrint Form text 打印账单 Combobx1(房间号) textbox1(开始时间) Listview textbox2(结束时间) textbox3(包间类型) textbox4(会员卡类型) textbox5 (元/小时) textbox6(打折率) textbox7(预付额) textbox8(应付金额) textbox9(找零) button1(确认结账) button2(打印预览) Name Name Name Name Name Name Name Name Name Name Name Name Viplogo BeginTime EndTime Bjlx Viplx Dj Dzl Money Yfmoney Zl button1 button2 设计完成的打印小账单如下图5-13所示。

30

图5-13打印账单

5.5.2 代码设计

(1) 当选择下拉框内房间号时,触发timer事件,实现数据库内与相应房间号的绑定。这样设计是为了方便管理员,当用户结账时,不必再去数据库内查找相应信息,只要选择正确的房间号,即可在界面上看到该房间的所有信息[13]。部分代码如下: private void timer1_Tick(object sender, EventArgs e) { timer1.Enabled = false;

DataTable myDT1 = DBOperation.DBOperate.GetDataTableBySql(\(select price from room where roomtype=money.roomtype) as price,(select abate from abate where cardtype=money.cardtype) as abate,money.* from money,abate,room where money.roomnum='\+ this.viplogo .Text + \

if (myDT1.Rows.Count > 0) {

for (int i = 0; i < myDT1.Rows.Count - 1; i++) {

this.BeginTime.Text = myDT1.Rows[i][\ this.EndTime.Text = System.DateTime.Now.ToString(); this.bjlx.Text = myDT1.Rows[i][\

31

this.viplx.Text = myDT1.Rows[i][\ this.money.Text = myDT1.Rows[i][\

this.dj.Text = myDT1.Rows[i][\ this.dzl.Text = myDT1.Rows[i][\

this.logo.Text=myDT1.Row[i][ \ } }}

(2) 当单击打印预览按钮时,系统会先检测是否安装打印机,如果安装则直接弹出界面保存界面,并进行预览操作[14]。主要代码如下:

private void PrintXP()

{ try {

report.Load(Application.StartupPath + @\ string s_DKYWD = \房间号: \ s_DKYWD += \结束时间: \

s_DKYWD += \开始时间: \ .Text + \ s_DKYWD += \应付金额: \ +\元\ s_DKYWD += \点歌系统小票\ DataSet dss = new DataSet(); dss.Tables.Add(dt);

DataRow dr = dt.NewRow(); dr[\ dr[\ dr[\ dr[\

dt.Rows.Add(dr); 以下代码是将在程序中设计的账单格式对应到打印列表中。 private void showCrystalInfo(int i_Temp, string s_Info) {

CrystalDecisions.CrystalReports.Engine.TextObject textObject; textObject

=

report.ReportDefinition.ReportObjects[\

+

i_Temp.ToString()]

as

CrystalDecisions.CrystalReports.Engine.TextObject; if (textObject != null) {

textObject.Text = s_Info; } }

(3) 当点击确认结账时,先判断找零文本值是否大于零,然后再做出相应的操作。部分代码如下:

private void button1_Click(object sender, EventArgs e)

32

{

if (double .Parse (this.zl .Text )<0) {

MessageBox.Show(\余额不足,请重新输入金额\ this.money .Focus(); return; }

DBOperation.DBOperate.DoSqlString(%userlogo='\

MessageBox.Show(\交易成功!\ this.Close(); }

33

6 系统测试与使用方法

本系统的测试贯穿于整个系统的开发过程,按照工作进行的先后顺序,测试过程可分为制定计划、测试设计、测试执行、跟踪缺陷这几个阶段。在每个阶段,都有一些数据需要保存,和用户之间也需要进行交互,以使系统能很好的进行测试。测试过程的工具是一种用于满足上述需求的软件和硬件工具,它对整个测试过程,保存在测试的不同阶段产生的文档、数据。系统测试在整个系统设计与实现过程中占据了很多资源。通过在测试过程中合理的引入系统测试工具,能够缩短系统的开发时间,提高测试质量,从而更快、更好的使用系统[15]。下面我们就本系统的运行测试进行系统的说明。

6.1 系统测试方法

6.1.1 测试目的

本测试的目的在于找出本系统的设计、运行等方面的缺陷及其存在的原因。对点歌管理系统的质量做出一个合理的评价。测试不仅是在测试本设计的本身,而且还包括设计开发的过程。如果一个系统开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的目的是保证整个设计开发过程及运行过程是高质量的。

6.1.2 测试方法

功能测试,它是在已知系统所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息的完整性。

6.1.3 测试内容

点歌管理系统主要是用户在可视化的界面内完成点歌操作。主要对以下的部分进行测试:播放歌曲、查找歌曲、添加歌曲、开户点歌和打印预览。测试如下:

(1) 系统与数据库的连接测试

本系统需要连接一个数据库,所以首先要测试一下数据库与系统的连接。如果连接不上,就不能往数据库中写入信息。下面的测试也就不好完成。

(2) 播放歌曲测试

当用户使用本系统后,进入系统主界面如图5-1,双击播放列表框内的歌曲,播放歌曲。其中列表框内的歌曲信息是此时数据库内的所有歌曲。列表框内绑定了该歌曲的路径信息,因此可以实现正常播放,这是最关键的一个属性列。系统刚启动时,播放列表是数据库内所有歌曲,如果用户自己选择了歌曲,点击刷新按钮,那么此时播放列表为用户新建的临时列表。

34

(3) 查找歌曲测试

当用户想要通过相应的方式进行歌曲查找时,点击相应的按钮可以进入相应查询窗体。查询结果显示在查询窗体的列表框内。查询界面如图5-7,5-8,5-9,5-10,5-11。

(4) 添加歌曲测试

添加歌曲是管理员能够执行的操作,管理员必须先进入登录窗体,成功登录以后才可以执行相关操作。歌曲添加时,打开文件路径按钮能够实现从本地主机中查找歌曲的路径,最后写入数据库内。

添加歌曲成功界面如图6-1所示:

图6-1 成功添加歌曲

(5) 添加歌手测试

添加歌手是管理员能够执行的操作,管理员必须先进入登录窗体,成功登录以后才可以执行相关操作。歌手添加后,在界面内可以及时更新列表。

添加歌手成功界面如图6-2所示:

图6-2成功添加歌手

(6) 管理员登录测试

1、登录成功后,系统直接进入主界面,显示出隐藏的按钮。如图6-3所示:

35

本文来源:https://www.bwwdw.com/article/imp3.html

Top