KTV点歌系统歌曲管理查询.docx

上传人:b****1 文档编号:13198625 上传时间:2023-06-12 格式:DOCX 页数:26 大小:102.04KB
下载 相关 举报
KTV点歌系统歌曲管理查询.docx_第1页
第1页 / 共26页
KTV点歌系统歌曲管理查询.docx_第2页
第2页 / 共26页
KTV点歌系统歌曲管理查询.docx_第3页
第3页 / 共26页
KTV点歌系统歌曲管理查询.docx_第4页
第4页 / 共26页
KTV点歌系统歌曲管理查询.docx_第5页
第5页 / 共26页
KTV点歌系统歌曲管理查询.docx_第6页
第6页 / 共26页
KTV点歌系统歌曲管理查询.docx_第7页
第7页 / 共26页
KTV点歌系统歌曲管理查询.docx_第8页
第8页 / 共26页
KTV点歌系统歌曲管理查询.docx_第9页
第9页 / 共26页
KTV点歌系统歌曲管理查询.docx_第10页
第10页 / 共26页
KTV点歌系统歌曲管理查询.docx_第11页
第11页 / 共26页
KTV点歌系统歌曲管理查询.docx_第12页
第12页 / 共26页
KTV点歌系统歌曲管理查询.docx_第13页
第13页 / 共26页
KTV点歌系统歌曲管理查询.docx_第14页
第14页 / 共26页
KTV点歌系统歌曲管理查询.docx_第15页
第15页 / 共26页
KTV点歌系统歌曲管理查询.docx_第16页
第16页 / 共26页
KTV点歌系统歌曲管理查询.docx_第17页
第17页 / 共26页
KTV点歌系统歌曲管理查询.docx_第18页
第18页 / 共26页
KTV点歌系统歌曲管理查询.docx_第19页
第19页 / 共26页
KTV点歌系统歌曲管理查询.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

KTV点歌系统歌曲管理查询.docx

《KTV点歌系统歌曲管理查询.docx》由会员分享,可在线阅读,更多相关《KTV点歌系统歌曲管理查询.docx(26页珍藏版)》请在冰点文库上搜索。

KTV点歌系统歌曲管理查询.docx

KTV点歌系统歌曲管理查询

数学与计算机学院

课程设计说明书

课程名称:

软件工程课程设计

课程代码:

8404131

题目:

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

年级/专业/班:

09软件4班

学生姓名:

学  号:

开始时间:

2011年05月25日

完成时间:

2011年06月5日

课程设计成绩:

学习态度及平时成绩(30)

技术水平与实际能力(20)

创新(5)

说明书(计算书、图纸、分析报告)撰写质量(45)

总分(100)

指导教师签名:

年月日

软件工程课程设计任务书

学院名称:

数学与计算机学院课程代码:

___8404131____

专业:

软件工程年级:

2009级

一、设计题目

KTV点歌管理系统

二、主要内容

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

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

具体要求:

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

1.完成系统的需求分析

2.完成系统的设计:

针对分析阶段提出的软件要求,给出实现的方案和具体细节的说明。

(1)导出系统的数据流程图和功能模块图。

(2)设计数据库。

使用MicrosoftAccess创建数据库。

确定数据库中数据表的组成。

确定数据表中字段的构成、主键字段和有关字段的约束条件等。

依靠数据表中主键字段建立数据表之间的关系,并由此建立数据表之间的参照完整性约束。

(3)根据功能确定软件模块组成及调用关系。

(4)确定每个模块的数据结构及算法。

3.编码

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

4.测试

编写合适的测试用例完成系统的测试工作并分析结果。

5.编写课程设计报告

应提交材料:

1.上交源程序:

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

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

四、主要技术路线提示

1.认真阅读相关知识,完成系统的功能分析和系统设计

2.选用ACCESS作为DBMS

五、进度安排

序号

设计内容

天数

1

分析设计内容,给出解决方案

3

2

创建数据库及建表

3

3

可视化界面设计

3

4

对所建数据库进行设计,整理设计思路,编码、测试,写出课程设计报告

3

5

指导老师检查设计结果并做成绩评定

2

总计

14

六、参考资料

[1]张海藩.软件工程导论.北京:

清华大学出版社,2004

[2]陈明.实用软件工程基础.北京:

清华大学出版社,2003

[3]殷人昆.实用软件工程.北京:

清华大学出版社,2003

指导教师签名日期年月日

系主任审核日期年月日

五、进度安排3

六、参考资料3

1前言6

2需求分析6

2.1功能分析6

2.2方案分析6

3概要设计6

3.1数据结构6

3.2逻辑结构与物理结构7

3.3功能模块划7

3.4抽象数据类定义9

4详细设计10

4.1数据类型定义10

4.2主要模块内部设计10

4.2.1tianjia()模块设计10

4.2.2liulan()模块设计11

4.2.3chaxun()模块设计13

5实现与调试分析16

5.1实现环境16

5.2语言选择16

5.3调试分析16

6测试分析16

6.1测试用例16

6.2测试结果16

17

6.3性能分析17

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结构框图

3.3.2程序流图

开始

选择功能

文件存在

执行功能

结束

F

T

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

增加歌曲功能:

浏览歌曲功能;

删除歌曲功能:

按歌曲类型查询功能:

按歌手名查询功能:

按歌名查询功能

按歌曲编号查询功能:

退出:

3.4抽象数据类定义

ADTS_C{

数据对象:

D={ai|ai=0}

数据操作:

R1={|ai-1,ai

基本操作:

voidputout()操作结果:

输出用户界面。

intmyread(classins[20])操作结果:

输出所有课程的完整信息。

voidmyfind(classins[20])

操作结果:

按指定的课程编号输出该课程的完整信息。

intselection(ins)

操作结果:

选课,并把选课记录保存在Lessoninfo.txt文件中。

intoutput(ins)操作结果:

输出选课记录。

intmymodify(ins)操作结果:

修改选课记录。

}ADTS_C

4详细设计

4.1数据类型定义

structgequ

{intnum;//*编号

charname[15];//*名称

charleixing[10];//*类型

chargeshou[15];//*歌手名};

4.2主要模块内部设计

4.2.1tianjia()模块设计

4.2.1.1模块算法

voidtianjia()//*添加歌曲

{voidmenu();

FILE*fp;

structgequc;

if((fp=fopen("gequ.txt","a+"))==NULL)

{printf("cannotopenfile\n");}

printf("\n\tInputgequ'sinformation:

\n");

printf("\ttheformatisnumnameleixinggeshou:

\n");

scanf("%d%s%s%s",&c.num,&c.name,&c.leixing,&c.geshou);

fprintf(fp,"%d%s%s%s",c.num,c.name,c.leixing,c.geshou);

fclose(fp);

menu();}

4.2.1.2流程图

tianjia()模块流程图

4.2.2liulan()模块设计

4.2.2.1模块算法

voidliulan()//*浏览歌曲

{

voidmenu();

FILE*fp;

structgequc;

if((fp=fopen("gequ.txt","r"))==NULL)

{

printf("\nCannotopengequ!

\n");

}

for(;!

feof(fp);)

{

fscanf(fp,"%d%s%s%s",&c.num,&c.name,&c.leixing,&c.geshou);

printf("%d%s%s%s\n",c.num,c.name,c.leixing,c.geshou);

}

fclose(fp);

menu();

}

4.2.2.2模块流程图

liulan()模块流程图

4.2.3chaxun()模块设计

4.2.3.1模块算法

voidchaxun()//*查询歌曲

{

voidmenu();

FILE*fp;

structgequc;

intbianhao;charmingchen[20];charleix[10];charges[15];

intn;intw=0;

printf("\n\t\tPLEASEENTERANUMBERFROM0TO4!

");

printf("\n\n\n\t*******************MENU**************************");

printf("\n\t\t1-按编号查找");

printf("\n\t\t2-按名称查找");

printf("\n\t\t3-按类型查找");

printf("\n\t\t4-按歌手查找");

printf("\n\t\t0-退出");

printf("\n\n\n\t********************************************");

printf("\n\n\n\n\n\n\t\tChoosethenumber,please:

");

scanf("%d",&n);

do

{

if(n>4||n<0)

{

printf("\nWrong!

inputagain!

");

scanf("%d",&n);

}

elsew=1;

}while(w==0);

switch(n)

{

case1:

printf("\ninputthebianhaoyouwanttosearch:

");

scanf("%d",&bianhao);

if((fp=fopen("gequ.txt","r"))==NULL)

{

printf("\nCannotopengequ!

\n");

}

for(;!

feof(fp);)

{

fscanf(fp,"%d%s%s%s",&c.num,&c.name,&c.leixing,&c.geshou);

if(c.num==bianhao)

printf("%d%s%s%s\n",c.num,c.name,c.leixing,c.geshou);}break;

case2:

printf("\ninputthenameyouwanttosearch:

");

scanf("%s",mingchen);

if((fp=fopen("gequ.txt","r"))==NULL)

{

printf("\nCannotopengequ!

\n");

}

for(;!

feof(fp);)

{

fscanf(fp,"%d%s%s%s",&c.num,&c.name,&c.leixing,&c.geshou);

if(strcmp(c.name,mingchen)==0)

printf("%d%s%s%s\n",c.num,c.name,c.leixing,c.geshou);}break;

case3:

printf("\ninputtheleixingyouwanttosearch:

");

scanf("%s",leix);

if((fp=fopen("gequ.txt","r"))==NULL)

{

printf("\nCannotopengequ!

\n");

}

for(;!

feof(fp);)

{

fscanf(fp,"%d%s%s%s",&c.num,&c.name,&c.leixing,&c.geshou);

if(strcmp(c.leixing,leix)==0)

printf("%d%s%s%s\n",c.num,c.name,c.leixing,c.geshou);}break;

case4:

printf("\ninputthegeshouyouwanttoserch:

");

scanf("%s",ges);

if((fp=fopen("gequ.txt","r"))==NULL)

{

printf("\nCannotopengequ!

\n");

}

for(;!

feof(fp);)

{

fscanf(fp,"%d%s%s%s",&c.num,&c.name,&c.leixing,&c.geshou);

if(strcmp(c.geshou,ges)==0)

printf("%d%s%s%s\n",c.num,c.name,c.leixing,c.geshou);}break;

case0:

menu();}

fclose(fp);

menu();

}

voidmenu()

{intn,w=0;

printf("\n\t\tPLEASEENTERANUMBERFROM0TO5!

");

printf("\n\n\n\t*******************MENU**************************");

printf("\n\t\t1-歌曲浏览");

printf("\n\t\t2-歌曲添加");

printf("\n\t\t3-歌曲删除");

printf("\n\t\t4-歌曲查询");

printf("\n\t\t0-退出");

printf("\n\n\n\t********************************************");

printf("\n\n\n\n\n\n\t\tChoosethenumber,please:

");

scanf("%d",&n);

do

{

if(n>5||n<0)

{

printf("\nWrong!

inputagain!

");

scanf("%d",&n);

}

elsew=1;

}while(w==0);

switch(n)

{

case1:

liulan();break;

case2:

tianjia();break;

//*case3:

shanchu();break;

case4:

chaxun();break;

case0:

exit(0);

}

}

4.2.3.2模块流程图

查询模块流程图

5实现与调试分析

5.1实现环境

WindowsXP系统

操作平台MicrosoftVisualC++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

structgequ

{

intnum;//*编号

charname[15];//*名称

charleixing[10];//*类型

chargeshou[15];//*歌手名

};

voidtianjia()//*添加歌曲

{

voidmenu();

FILE*fp;

structgequc;

if((fp=fopen("gequ.txt","a+"))==NULL)

{

printf("cannotopenfile\n");

}

printf("\n\tInputgequ'sinformation:

\n");

printf("\ttheformatisnumnameleixinggeshou:

\n");

scanf("%d%s%s%s",&c.num,&c.name,&c.leixing,&c.geshou);

fprintf(fp,"%d%s%s%s",c.num,c.name,c.leixing,c.geshou);

fclose(fp);

menu();

}

voidliulan()//*浏览歌曲

{

voidmenu();

FILE*fp;

structgequc;

if((fp=fopen("gequ.txt","r"))==NULL)

{

printf("\nCannotopengequ!

\n");

}

for(;!

feof(fp);)

{

fscanf(fp,"%d%s%s%s",&c.num,&c.name,&c.leixing,&c.geshou);

printf("%d%s%s%s\n",c.num,c.name,c.leixing,c.geshou);

}

fclose(fp);

menu();

}

voidchaxun()//*查询歌曲

{

voidmenu();

FILE*fp;

structgequc;

intbianhao;charmingchen[20];charleix[10];charges[15];

intn;intw=0;

printf("\n\t\tPLEASEENTERANUMBERFROM0TO4!

");

printf("\n\n\n\t*******************MENU**************************");

printf("\n\t\t1-按编号查找");

printf("\n\t\t2-按名称查找");

printf("\n\t\t3-按类型查找");

printf("\n\t\t4-按歌手查找");

printf("\n\t\t0-退出");

printf("\n\n\n\t********************************************");

printf("\n\n\n\n\n\n\t\tChoosethenumber,please:

");

scanf("%d",&n);

do

{

if(n>4||n<0)

{

printf("\nWrong!

inputagain!

");

scanf("%d",&n);

}

elsew=1;

}while(w==0);

switch(n)

{

case1:

printf("\ninputthebianhaoyouwanttosearch:

");

scanf("%d",&bianhao);

if((fp=fopen("gequ.txt","r"))==NULL)

{

printf("\nCannotopengequ!

\n");

}

for(;!

feof(fp);)

{

fscanf(fp,"%d%s%s%s",&c.num,&c.name,&c.leixing,&c.geshou);

if(c.num==bianhao)

printf("%d%s%s%s\n",c.num,c.name,c.leixing,c.geshou);}break;

case2:

printf("\ninputthenameyouwanttosearch:

");

scanf("%s",mingchen);

if((fp=fopen("gequ.txt","r"))==NULL)

{

printf("\nCannotopengequ!

\n");

}

for(;!

feof(fp);)

{

fscanf(fp,"%d%s%s%s",&c.num,&c.name,&c.leixing,&c.geshou);

if(strcmp(c.name,mingchen)==0)

printf("%d%s%s%s\n",c.num,c.name,c.leixing,c.geshou);}break;

case3:

printf("\ninputtheleixingyouwanttosearch:

");

scanf("%s",leix);

if((fp=fopen("gequ.txt","r"))==NULL)

{

p

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2