KTV点歌系统—歌曲管理查询

更新时间:2024-05-24 18:53:01 阅读量: 综合文库 文档下载

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

数学与计算机学院 课程设计说明书

课 程 名 称: 软件工程课程设计 课 程 代 码: 8404131

题 目: KTV点歌系统—歌曲管理查询 学 生 姓 名: 学 号: 开 始 时 间: 2011 年 05 月 25 日 完 成 时 间: 2011 年 06 月 5 日 课程设计成绩:

学习态度及平技术水平与实时成绩(30) 际能力(20) 创新(5) 说明书(计算书、图纸、分总 分析报告)撰写质量(45) (100) 年级/专业/班: 09软件4班

指导教师签名: 年 月 日

西华大学课程设计报告

软件工程 课程设计任务书

学院名称: 数学与计算机学院 课程代码:___8404131____ 专业: 软件工程 年级: 2009级

一、设计题目

KTV点歌管理系统

二、主要内容

本课程设计完成一KTV自动点歌管理系统,本系统包括歌曲管理和点歌查询界面等功能。

三、具体要求及应提交材料

具体要求:

本课程设计要求学生运用软件工程的思想,严格按照软件生命周期各阶段的目的和任务,完成对系统的分析、设计、编码、及测试。 1.完成系统的需求分析 2.完成系统的设计:

针对分析阶段提出的软件要求,给出实现的方案和具体细节的说明。 (1)导出系统的数据流程图和功能模块图。

(2)设计数据库。使用Microsoft Access创建数据库。确定数据库中数据表的组成。确定数据表中字段的构成、主键字段和有关字段的约束条件等。依靠数据表中主键字段建立数据表之间的关系,并由此建立数据表之间的参照完整性约束。

(3)根据功能确定软件模块组成及调用关系。 (4)确定每个模块的数据结构及算法。 3.编码

建造模块,在可视化编程环境下,按照软件设计要求制作界面和完成对模块的编码,由此使软件设计具体化为软件作品。

西华大学课程设计报告

4. 测试

编写合适的测试用例完成系统的测试工作并分析结果。 5.编写课程设计报告 应提交材料:

1.上交源程序:学生按照课程设计的具体要求所开发的所有源程序(应该放到一个文件夹中);

2.课程设计报告的打印稿和电子稿;

四、主要技术路线提示

1.认真阅读相关知识,完成系统的功能分析和系统设计 2.选用ACCESS作为DBMS

五、进度安排

序号 1 2 3 4 5 设计内容 天数 3 3 3 3 2 14 分析设计内容,给出解决方案 创建数据库及建表 可视化界面设计 对所建数据库进行设计,整理设计思路,编码、测试,写出课程设计报告 指导老师检查设计结果并做成绩评定 总 计 六、参考资料

[1] 张海藩. 软件工程导论. 北京:清华大学出版社,2004 [2] 陈明. 实用软件工程基础. 北京:清华大学出版社,2003 [3] 殷人昆. 实用软件工程. 北京:清华大学出版社,2003

指导教师 签名日期 年 月 日

系 主 任 审核日期 年 月 日

西华大学课程设计报告

目 录

1 前言 ............................................................. 5 2 需求分析 ......................................................... 5

2.1 功能分析 .............................................................................................................................. 5

2.2 方案分析 .............................................................................................................................. 5

3 概要设计 ......................................................... 6

3.1 数据结构 .............................................................................................................................. 6 3.2 逻辑结构与物理结构 .......................................................................................................... 7 3.3 功能模块划 ........................................................................................................................... 7 3.4抽象数据类定义 ................................................................................................................... 8

4 详细设计 ......................................................... 9

4.1 数据类型定义 ...................................................................................................................... 9 4.2 主要模块内部设计 ............................................................................................................... 9

4.2.1 tianjia()模块设计 .................................................................................................. 9 4.2.2 liulan()模块设计 .................................................................................................11 4.2.3 chaxun()模块设计 ................................................................................................ 12

5 实现与调试分析 .................................................. 16

5.1 实现环境 ............................................................................................................................ 16 5.2 语言选择 ............................................................................................................................ 16 5.3 调试分析 ............................................................................................................................ 16

6 测试分析 ........................................................ 16

6.1 测试用例 ............................................................................................................................ 16 6.2 测试结果 ............................................................................................................................ 16 6.3 性能分析 ............................................................................................ 错误!未定义书签。

7用户手册 ......................................................... 18 总 结 ............................................................. 18 参考文献 .......................................................... 18 附录 .............................................................. 18

西华大学课程设计报告

1 前言

KTV系统发展至今,已经非常成熟,用户需求不同,方案各异,由此而来的整个系统造价也是相距甚大。花少量的钱,办尽量多的事。

KTV系统宏观分为有盘系统与无盘系统,有盘系统每点有单独的歌库,造价高且不便于维护。无盘系统是基于网络版点歌系统的,基本为C/S结构,即由一台服务器(Server)为客户机(Client)并发提供点歌信息和歌曲。无盘系统客户机用户操作与有盘系统完全相同,但造价经济,宜于维护,且宜于整个KTV系统升级。

2 需求分析

2.1 功能分析

KTV点歌系统主要分为歌曲的查询与管理,管理主要包括歌曲的添加,删除,分类;查询可以按照歌手查询,歌曲类型查询,歌曲名查询。

? 添加:根据用户需求管理员为用户添加歌曲的基本信息(包括歌曲编号,

歌曲名,歌手等)

? 删除:管理员对过时的或者错误的歌曲进行删除操作 ? 查询

1. 按照歌手查询:根据歌手来分类查找想要的歌

2. 歌曲类型查询:按照歌曲的类型(流行,民歌,情歌等)查询 3. 歌曲名查询:根据名字查询

2.2 方案分析

KTV点歌系统可以方便商家更好的对歌曲管理,也方便用户更加快捷的选歌,有极大的便利。

歌曲管理分为歌曲的添加,删除,浏览。歌曲查询可按照不同的条件查找,给予了用户很大的方便,节约时间。

西华大学课程设计报告

3 概要设计 3.1 数据结构

数据元素 包括商家管理人员,顾客,歌曲 管理人员: 添加,删除歌曲,给歌曲分类 顾客: 选择歌曲

歌曲: 歌曲编号,歌曲名,歌曲类型,歌手 数据字典: 名字: 歌曲 别名:

描述:歌曲=编号+歌曲名+歌曲类型+歌手名 位置:输出到选择界面

编号 管理员 管理 歌 曲 歌曲名 类型 查询 用户 系统E-R图

歌手

西华大学课程设计报告

3.2 逻辑结构与物理结构

逻辑结构:

通过对上述数据结构的分析,根据KTV自动选歌系统的需求,将以上的E-R图转换为关系模式:

歌曲(编号,歌名,类型,歌手);

物理结构:采用顺序存储的方式存储所有的数据。

3.3 功能模块划

3.3.1结构框图

KTV点歌系统 歌曲查询 歌曲浏览 歌曲添加 歌曲删除 退出

编号查询 歌名查询 类型查询 歌手查询

西华大学课程设计报告

3.3.2程序流图

开始 选择功能 F 文件存在 T 执行功能 结束

3.3.3模块功能分析及外部设计

? 增加歌曲功能: ? 浏览歌曲功能; ? 删除歌曲功能: ? 按歌曲类型查询功能: ? 按歌手名查询功能: ? 按歌名查询功能 ? 按歌曲编号查询功能: ? 退出:

3.4抽象数据类定义

ADT S_C{

数据对象:D={ai|ai=0}

西华大学课程设计报告

数据操作:R1={|ai-1,ai

void putout()操作结果:输出用户界面。

int myread(classin s[20])操作结果:输出所有课程的完整信息。 void myfind(classin s[20])

操作结果:按指定的课程编号输出该课程的完整信息。

int selection(in s)

操作结果:选课,并把选课记录保存在Lessoninfo.txt文件中。 int output(in s)操作结果:输出选课记录。 int mymodify(in s) 操作结果:修改选课记录。 }ADT S_C

4 详细设计

4.1 数据类型定义

struct gequ { int num;//*编号 char name[15];//*名称 char leixing[10];//*类型 char geshou[15];//*歌手名};

4.2 主要模块内部设计 4.2.1 tianjia()模块设计

4.2.1.1模块算法

void tianjia() //*添加歌曲 { void menu(); FILE *fp; struct gequ c;

if((fp=fopen(\

{ printf(\

西华大学课程设计报告

printf(\

printf(\ scanf(\ fprintf(fp,\ fclose(fp); menu();} 4.2.1.2 流程图

tianjia() 模块流程图

关闭文件 输入添加歌曲的信息 输出该文件不存在 输出请输入歌曲基本信息 打开歌曲文件 F T

西华大学课程设计报告

4.2.2 liulan()模块设计

4.2.2.1 模块算法

void liulan()//*浏览歌曲 { void menu(); FILE *fp; struct gequ c; if((fp=fopen(\ { printf(\ } for(;!feof(fp);) { fscanf(fp,\

printf(\ } fclose(fp); menu(); }

西华大学课程设计报告

4.2.2.2 模块流程图

打开歌曲文件 F T 输出该文件不存在 输出所有歌曲信息 关闭文件

liulan()模块流程图

4.2.3 chaxun()模块设计

4.2.3.1 模块算法

void chaxun()//*查询歌曲 { void menu(); FILE *fp; struct gequ c; int bianhao;char mingchen[20];char leix[10];char ges[15]; int n;int w=0;

printf(\

西华大学课程设计报告

printf(\ printf(\按编号查找\ printf(\按名称查找\ printf(\按类型查找\ printf(\按歌手查找\ printf(\退出\

printf(\ printf(\ scanf(\ do {

if(n>4||n<0) {

printf(\ scanf(\ }

else w=1; }while(w==0); switch(n) {

case 1: printf(\ scanf(\ if((fp=fopen(\ { printf(\ } for(;!feof(fp);) { fscanf(fp,\ if(c.num==bianhao) printf(\ case 2: printf(\ scanf(\ if((fp=fopen(\ { printf(\ } for(;!feof(fp);) { fscanf(fp,\ if( strcmp(c.name,mingchen)==0)

西华大学课程设计报告

printf(\ case 3:printf(\ scanf(\ if((fp=fopen(\ { printf(\ } for(;!feof(fp);) { fscanf(fp,\ if( strcmp(c.leixing,leix)==0) printf(\ case 4:printf(\ scanf(\ if((fp=fopen(\ { printf(\ } for(;!feof(fp);) { fscanf(fp,\ if( strcmp(c.geshou,ges)==0) printf(\ case 0:menu();} fclose(fp); menu(); }

void menu() { int n,w=0;

printf(\

printf(\ printf(\歌曲浏览\ printf(\歌曲添加\ printf(\歌曲删除\ printf(\歌曲查询\ printf(\退出\

printf(\ printf(\ scanf(\ do {

if(n>5||n<0)

西华大学课程设计报告

{

printf(\ scanf(\ }

else w=1; }while(w==0); switch(n) {

case 1:liulan();break; case 2:tianjia();break; //* case 3:shanchu();break; case 4:chaxun();break; case 0:exit(0); } }

4.2.3.2 模块流程图

选择查找方式 打开歌曲文件 F T 输出该文件不存在 输出对应歌曲信息 关闭文件

查询模块流程图

西华大学课程设计报告

5 实现与调试分析 5.1 实现环境

Windows XP系统

操作平台Microsoft Visual C++ 6.0

5.2 语言选择

C语言

5.3 调试分析

通过对系统的调试,各个模块基本功能都能实现。

6 测试分析

6.1 测试用例

输入数据:1(用户界面的功能选项)

预期输出数据:全部歌曲的完整基本信息(包括歌曲编号,歌名,歌曲类型,

歌手);

输入数据:2(用户界面的功能选项),4(歌曲编号),改变(歌曲名),流行

(歌曲类型),王力宏(歌手);

预期输出数据:全部歌曲的完整基本信息(包括新添加的信息); 输入数据:3(功能选项),(未完成) 输入数据:4(功能选项)

预期输出数据:出现4个选择功能,分别是(1.按歌曲编号查询)(2.按歌曲

名查询)(3.按歌曲类型查询)(4.按歌手查询)

6.2 测试结果

复制DOS测试过程的窗口内容

西华大学课程设计报告

功能选项界面

查询选项界面

6.3 性能分析

可扩充性要求 :

任何软件都有缺陷,对于学生选课系统但学校的需求发生变化时,增加一个新的功能模块,要求系统能够很好地对其进行扩充,既可补充性。

西华大学课程设计报告

可维护性要求 :

当操作系统平台发生变化或者支持软件学生信息管理系统发生变化时,为了适应这些变化必需对系统进行维护,即要求有可维护性。

7用户手册

该模块分为KTV信息浏览,添加,查询模块组成 歌曲浏览:

可以浏览所有歌曲的信息,包括歌曲编号,名称,类型,歌手。

添加:

添加新的歌曲信息,包括歌曲编号,名称,类型,歌手。

歌曲查询:

该模块分为4中查询方式,分别是按歌曲编号,名称,类型,歌手查询,方便快速选歌。

总 结

开始做这个的时候感觉无从下手的感觉,然后找了一些相关的书看了下,在网上查了下资料,跟同学们商量了下慢慢开始掌握到大概的思路,然后自己开始边想边做,最后还是勉强做了出来。

通过做这个课程设计加深了对这门课的一个理解,要注重一个过程的学习而不是仅仅一个结果的学习,要不然到时候做不出自己想要的东西。而且我觉得动手很重要,看着别人的东西感觉很简单,到时候自己去做的时候会是另外一回事情,所以我们应该多多动手实践一下。

总体来说。做这个课程设计对我来说是有好处的,加深了对所学的理解,当然自己能做出一点东西出来也感觉有成就感的。

通过本次我学到了不少新的东西,也发现了大量的问题,有些在设计过程中已经解决,有些还有待今后慢慢学习。只要学习就会有更多的问题,有更多的难点,但也会有更多的收获。

西华大学课程设计报告

参考文献

[1] 张海藩. 软件工程导论. 北京:清华大学出版社,2004 [2] 陈明. 实用软件工程基础. 北京:清华大学出版社,2003 [3] 殷人昆. 实用软件工程. 北京:清华大学出版社,2003

附录

#include #include #include struct gequ {

int num;//*编号

char name[15];//*名称 char leixing[10];//*类型 char geshou[15];//*歌手名 };

void tianjia() //*添加歌曲 {

void menu(); FILE *fp; struct gequ c;

if((fp=fopen(\ {

printf(\ }

printf(\

printf(\

scanf(\ fprintf(fp,\ fclose(fp); menu(); }

void liulan()//*浏览歌曲 { void menu(); FILE *fp; struct gequ c;

西华大学课程设计报告

if((fp=fopen(\ { printf(\ } for(;!feof(fp);) { fscanf(fp,\ printf(\ } fclose(fp); menu(); }

void chaxun()//*查询歌曲 { void menu(); FILE *fp; struct gequ c; int bianhao;char mingchen[20];char leix[10];char ges[15]; int n;int w=0;

printf(\

printf(\ printf(\按编号查找\ printf(\按名称查找\ printf(\按类型查找\ printf(\按歌手查找\ printf(\退出\

printf(\ printf(\ scanf(\ do {

if(n>4||n<0) {

printf(\ scanf(\ }

else w=1; }while(w==0); switch(n) {

case 1: printf(\ scanf(\

西华大学课程设计报告

if((fp=fopen(\ { printf(\ } for(;!feof(fp);) { fscanf(fp,\ if(c.num==bianhao) printf(\ case 2: printf(\ scanf(\ if((fp=fopen(\ { printf(\ } for(;!feof(fp);) { fscanf(fp,\ if( strcmp(c.name,mingchen)==0) printf(\ case 3:printf(\ scanf(\ if((fp=fopen(\ { printf(\ } for(;!feof(fp);) { fscanf(fp,\ if( strcmp(c.leixing,leix)==0) printf(\ case 4:printf(\ scanf(\ if((fp=fopen(\ { printf(\ } for(;!feof(fp);) { fscanf(fp,\ if( strcmp(c.geshou,ges)==0)

西华大学课程设计报告

printf(\ case 0:menu();} fclose(fp); menu(); }

void menu() { int n,w=0;

printf(\

printf(\ printf(\歌曲浏览\ printf(\歌曲添加\ printf(\歌曲删除\ printf(\歌曲查询\ printf(\退出\

printf(\ printf(\ scanf(\ do {

if(n>5||n<0) {

printf(\ scanf(\ }

else w=1; }while(w==0); switch(n) {

case 1:liulan();break; case 2:tianjia();break; //* case 3:shanchu();break; case 4:chaxun();break; case 0:exit(0); } }

void main() {

menu(); }

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

Top