KTV点歌系统文档格式.docx
《KTV点歌系统文档格式.docx》由会员分享,可在线阅读,更多相关《KTV点歌系统文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
顾客:
选择歌曲
歌曲:
歌曲编号,歌曲名,歌曲类型,歌手
数据字典:
名字:
歌曲
别名:
描述:
歌曲=编号+歌曲名+歌曲类型+歌手名
位置:
输出到选择界面
管理员
歌
曲
用户
查询
管理
编号
歌曲名
类型
歌手
系统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<
ElemSet,i=1,2,…,n,n>
=0}
数据操作:
R1={<
ai-1,ai>
|ai-1,ai<
D,i=2,…,n}
基本操作:
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"
\ttheformatisnumnameleixinggeshou:
scanf("
%d%s%s%s"
&
c.num,&
c.name,&
c.leixing,&
c.geshou);
fprintf(fp,"
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();
r"
))==NULL)
{
\nCannotopengequ!
}
for(;
!
feof(fp);
)
fscanf(fp,"
%d%s%s%s"
%d%s%s%s\n"
4.2.2.2模块流程图
输出所有歌曲信息
liulan()模块流程图
4.2.3chaxun()模块设计
4.2.3.1模块算法
voidchaxun()//*查询歌曲
intbianhao;
charmingchen[20];
charleix[10];
charges[15];
intn;
intw=0;
\n\t\tPLEASEENTERANUMBERFROM0TO4!
"
\n\n\n\t*******************MENU**************************"
\n\t\t1-按编号查找"
\n\t\t2-按名称查找"
\n\t\t3-按类型查找"
\n\t\t4-按歌手查找"
\n\t\t0-退出"
\n\n\n\t********************************************"
\n\n\n\n\n\n\t\tChoosethenumber,please:
%d"
n);
do
if(n>
4||n<
0)
\nWrong!
inputagain!
elsew=1;
}while(w==0);
switch(n)
case1:
\ninputthebianhaoyouwanttosearch:
bianhao);
printf("
if(c.num==bianhao)
}break;
case2:
\ninputthenameyouwanttosearch:
%s"
mingchen);
fscanf(fp,"
if(strcmp(c.name,mingchen)==0)
case3:
printf("
\ninputtheleixingyouwanttosearch:
leix);
if(strcmp(c.leixing,leix)==0)
case4:
\ninputthegeshouyouwanttoserch:
ges);
if(strcmp(c.geshou,ges)==0)
case0:
menu();
voidmenu()
{intn,w=0;
\n\t\tPLEASEENTERANUMBERFROM0TO5!
\n\t\t1-歌曲浏览"
\n\t\t2-歌曲添加"
\n\t\t3-歌曲删除"
\n\t\t4-歌曲查询"
5||n<
liulan();
break;
tianjia();
//*case3:
shanchu();
chaxun();
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用户手册
附录2源程序
#include<
stdio.h>
#include<
stdlib.h>
string.h>
intnum;
//*歌手名
};
voidtianjia()//*添加歌曲
{
}
voidliulan()//*浏览歌曲
voidchaxun()//*查询歌曲
\n\n\n\t************