1、KTV点歌系统1 前言KTV系统发展至今,已经非常成熟,用户需求不同,方案各异,由此而来的整个系统造价也是相距甚大。花少量的钱,办尽量多的事。KTV系统宏观分为有盘系统与无盘系统,有盘系统每点有单独的歌库,造价高且不便于维护。无盘系统是基于网络版点歌系统的,基本为C/S结构,即由一台服务器(Server)为客户机(Client)并发提供点歌信息和歌曲。无盘系统客户机用户操作与有盘系统完全相同,但造价经济,宜于维护,且宜于整个KTV系统升级。2 需求分析2.1 功能分析 KTV点歌系统主要分为歌曲的查询与管理,管理主要包括歌曲的添加,删除,分类;查询可以按照歌手查询,歌曲类型查询,歌曲名查询。添
2、加:根据用户需求管理员为用户添加歌曲的基本信息(包括歌曲编号,歌曲名,歌手等)删除:管理员对过时的或者错误的歌曲进行删除操作查询1.按照歌手查询:根据歌手来分类查找想要的歌2.歌曲类型查询:按照歌曲的类型(流行,民歌,情歌等)查询3.歌曲名查询:根据名字查询2.2 方案分析KTV点歌系统可以方便商家更好的对歌曲管理,也方便用户更加快捷的选歌,有极大的便利。歌曲管理分为歌曲的添加,删除,浏览。歌曲查询可按照不同的条件查找,给予了用户很大的方便,节约时间。3 概要设计 3.1 数据结构 数据元素 包括商家管理人员,顾客,歌曲管理人员: 添加,删除歌曲,给歌曲分类顾客: 选择歌曲歌曲: 歌曲编号,歌
3、曲名,歌曲类型,歌手 数据字典:名字: 歌曲别名:描述:歌曲=编号+歌曲名+歌曲类型+歌手名位置:输出到选择界面管理员歌曲用户查询管理编号歌曲名类型歌手 系统E-R图3.2 逻辑结构与物理结构逻辑结构:通过对上述数据结构的分析,根据KTV自动选歌系统的需求,将以上的E-R图转换为关系模式:歌曲(编号,歌名,类型,歌手);物理结构:采用顺序存储的方式存储所有的数据。3.3 功能模块划3.3.1结构框图编号查询歌名查询歌手查询类型查询KTV点歌系统歌曲查询歌曲浏览歌曲添加歌曲删除退出3.3.2程序流图开始选择功能文件存在执行功能结束FT3.3.3模块功能分析及外部设计增加歌曲功能:浏览歌曲功能;删
4、除歌曲功能:按歌曲类型查询功能:按歌手名查询功能:按歌名查询功能按歌曲编号查询功能:退出:3.4抽象数据类定义ADT S_C数据对象:D=ai|ai=0数据操作:R1=|ai-1,ai4|n5|n0) printf(nWrong! input again!); scanf(%d,&n); 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 模块
5、流程图TF打开歌曲文件输出对应歌曲信息关闭文件输出该文件不存在选择查找方式 查询模块流程图5 实现与调试分析5.1 实现环境Windows XP系统操作平台Microsoft Visual C+ 6.05.2 语言选择C语言5.3 调试分析通过对系统的调试,各个模块基本功能都能实现。6 测试分析6.1 测试用例输入数据:1(用户界面的功能选项)预期输出数据:全部歌曲的完整基本信息(包括歌曲编号,歌名,歌曲类型,歌手);输入数据:2(用户界面的功能选项),4(歌曲编号),改变(歌曲名),流行(歌曲类型),王力宏(歌手);预期输出数据:全部歌曲的完整基本信息(包括新添加的信息);输入数据:3(功能
6、选项),(未完成)输入数据:4(功能选项)预期输出数据:出现4个选择功能,分别是(1.按歌曲编号查询)(2.按歌曲名查询)(3.按歌曲类型查询)(4.按歌手查询)6.2 测试结果复制DOS测试过程的窗口内容功能选项界面 查询选项界面6.3 性能分析可扩充性要求 :任何软件都有缺陷,对于学生选课系统但学校的需求发生变化时,增加一个新的功能模块,要求系统能够很好地对其进行扩充,既可补充性。可维护性要求 :当操作系统平台发生变化或者支持软件学生信息管理系统发生变化时,为了适应这些变化必需对系统进行维护,即要求有可维护性。7用户手册该模块分为KTV信息浏览,添加,查询模块组成歌曲浏览: 可以浏览所有歌
7、曲的信息,包括歌曲编号,名称,类型,歌手。添加:添加新的歌曲信息,包括歌曲编号,名称,类型,歌手。歌曲查询:该模块分为4中查询方式,分别是按歌曲编号,名称,类型,歌手查询,方便快速选歌。总 结 开始做这个的时候感觉无从下手的感觉,然后找了一些相关的书看了下,在网上查了下资料,跟同学们商量了下慢慢开始掌握到大概的思路,然后自己开始边想边做,最后还是勉强做了出来。通过做这个课程设计加深了对这门课的一个理解,要注重一个过程的学习而不是仅仅一个结果的学习,要不然到时候做不出自己想要的东西。而且我觉得动手很重要,看着别人的东西感觉很简单,到时候自己去做的时候会是另外一回事情,所以我们应该多多动手实践一下
8、。总体来说。做这个课程设计对我来说是有好处的,加深了对所学的理解,当然自己能做出一点东西出来也感觉有成就感的。通过本次我学到了不少新的东西,也发现了大量的问题,有些在设计过程中已经解决,有些还有待今后慢慢学习。只要学习就会有更多的问题,有更多的难点,但也会有更多的收获。附录1用户手册 查询选项界面附录2源程序#include #include#includestruct gequ int num;/*编号 char name15;/*名称 char leixing10;/*类型 char geshou15;/*歌手名;void tianjia() /*添加歌曲 void menu(); FIL
9、E *fp; struct gequ c; if(fp=fopen(gequ.txt,a+)=NULL) printf(cannot open filen); printf(ntInput gequs information :n); printf(tthe format is num name leixing geshou: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();
10、void liulan()/*浏览歌曲 void menu(); FILE *fp; struct gequ c; if(fp=fopen(gequ.txt,r)=NULL) printf(nCannot open gequ!n); for(;!feof(fp);) fscanf(fp,%d%s%s%s,&c.num,&c.name,&c.leixing,&c.geshou); printf(%d %s %s %sn,c.num,c.name,c.leixing,c.geshou); fclose(fp); menu();void chaxun()/*查询歌曲 void menu(); FIL
11、E *fp; struct gequ c; int bianhao;char mingchen20;char leix10;char ges15; int n;int w=0; printf(ntt PLEASE ENTER A NUMBER FROM 0 TO 4!); printf(nnnt*MENU*); printf(ntt 1 - 按编号查找); printf(ntt 2 - 按名称查找); printf(ntt 3 - 按类型查找); printf(ntt 4 - 按歌手查找); printf(ntt 0 -退出); printf(nnnt*); printf(nnnnnnttCh
12、oose the number,please:); scanf(%d,&n); do if(n4|n0) printf(nWrong! input again!); scanf(%d,&n); else w=1; while(w=0); switch(n) case 1: printf(ninput the bianhao you want to search:); scanf(%d,&bianhao); if(fp=fopen(gequ.txt,r)=NULL) printf(nCannot open gequ!n); for(;!feof(fp);) fscanf(fp,%d %s %s
13、%s,&c.num,&c.name,&c.leixing,&c.geshou); if(c.num=bianhao) printf(%d %s %s %sn,c.num,c.name,c.leixing,c.geshou);break; case 2: printf(ninput the name you want to search:); scanf(%s,mingchen); if(fp=fopen(gequ.txt,r)=NULL) printf(nCannot open gequ!n); for(;!feof(fp);) fscanf(fp,%d %s %s %s,&c.num,&c.
14、name,&c.leixing,&c.geshou); if( strcmp(c.name,mingchen)=0) printf(%d %s %s %sn,c.num,c.name,c.leixing,c.geshou);break; case 3:printf(ninput the leixing you want to search:); scanf(%s,leix); if(fp=fopen(gequ.txt,r)=NULL) printf(nCannot open gequ!n); for(;!feof(fp);) fscanf(fp,%d %s %s %s,&c.num,&c.na
15、me,&c.leixing,&c.geshou); if( strcmp(c.leixing,leix)=0) printf(%d %s %s %sn,c.num,c.name,c.leixing,c.geshou);break; case 4:printf(ninput the geshou you want to serch:); scanf(%s,ges); if(fp=fopen(gequ.txt,r)=NULL) printf(nCannot open gequ!n); for(;!feof(fp);) fscanf(fp,%d %s %s %s,&c.num,&c.name,&c.
16、leixing,&c.geshou); if( strcmp(c.geshou,ges)=0) printf(%d %s %s %sn,c.num,c.name,c.leixing,c.geshou);break; case 0:menu(); fclose(fp); menu(); void menu() int n,w=0; printf(ntt PLEASE ENTER A NUMBER FROM 0 TO 5!); printf(nnnt*MENU*); printf(ntt 1 - 歌曲浏览); printf(ntt 2 - 歌曲添加); printf(ntt 3 - 歌曲删除); printf(ntt 4 - 歌曲查询); printf(ntt 0 -退出); printf(nnnt*
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1