• 需求分析:

1.设计题目:KTV点歌系统模拟(该系统是一个常用的ktv点歌系统,可以让用户根据自己的喜好进行添加、查看、删除等操作。系统应该具有便捷、稳定、功能齐全的特点。)

2.系统功能需求分析:

1.便捷性分析

系统管理的歌曲涉及到歌曲的各种信息,数据量较大且是一种基础性数据,能够为用户提供许多快捷操作,且操作方便。

2.稳定性分析

该系统比较稳定,也比较人性化,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。

3.主要功能分析

(1)歌曲的添加:允许用户输入添加歌曲的数量、歌曲名、歌手名、专辑名、歌曲流派。同时,系统会自动把添加歌曲信息保存下来。用户由于疏忽录入的非法数据,能够及时提示并更正。

(2)歌曲的查看:用户可以根据自己的需求,输入歌曲名、歌手名、专辑名、歌曲流派中的一项或几项其查看自己想要的歌曲。

(3) 歌曲的删除:用户在查看歌曲之后,可以根据自己的喜好,删除系统原有的歌曲。用户只需输入歌曲名就可以删除歌曲。删除之后系统自动更新歌曲库。

  • 概要设计:

主要有5个功能模块,每个模块对应一个C语言自定义函数。

读取歌曲函数choice

添加歌曲函数add

删除歌曲函数dele

  • 详细设计:
  • 用结构体来定义描述歌曲编号、歌曲名、歌手名、专辑名、歌曲流派。具体的定义如下:
  • struct song. info{
  • int songnum; .
  • char songname[15];
  • char songername[15];char ablumnamee[15];char type[10];
  • }; 所定义的结构体主要用于定义数组。
  • 2、文件操作
  • 包括了文件的写入和读取两个方面。文件的写入操作,用于保存录入的歌曲的有关数据,也用于保存所修改的数据,
  • 3、多分支选择结构,利用自定义函数实现查看,添加,删除歌曲的功能。

测试结果:程序总体结构图

程序代码

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#define N 30
int i,j,k;
FILE *fp;
struct song_info{int  songnum;char  songname[15];char  songername[15];char  ablumname[15];char  type[10];
};
typedef  struct song_info SINFO;
SINFO *pso;
void choice(SINFO*pso){
char a[15];int q,t;FILE*fp;printf("请输入要查看歌手的名字: ");scanf("%s",a);fp=fopen(" d:\\song. txt", "rt");if (fp==NULL){printf("the file :song. txt not found!");exit(-1);for(k=0; (!feof (fp));k++)fread(&pso[k], sizeof (SINFO), 1, fp);fclose(fp);t=0;for(q=0;q<k;q++){if (!strcmp (a, pso[q]. songername)){if(t==0)printf("该歌手有以下歌曲: \n");t++;printf("%s\n", pso[q]. songname) ;}}
if(t==0)
printf(" 本系统还无该歌手歌曲,请增添! \n");fclose(fp) ;}
}
void add(SINFO *pso)
{
FILE *fp;
scanf ("%d",&j) ;printf("请你输入要增添歌曲的数量: ") ;
fp=fopen(" d:\\song. txt", "a+");
fflush(stdin);
for(i=0;i<j;i++) {
printf("这是要增添的第%d首歌的信息:\n", i+1);printf("歌曲编号是:");
scanf("%d\n",&pso[i]. songnum);
fflush(stdin);
printf("歌曲名字是: ");
gets (pso[i]. songname);
fflush(stdin) ;
printf("歌手名字是:");
gets(pso[i]. songername);
fflush(stdin);
printf("专辑的名字是: ");
gets (pso[i]. ablumname) ;
fflush(stdin) ;
printf("歌曲流派是: ");
gets (pso[i].type);
fflush(stdin) ;
system("cls");
fwrite (&pso[i], sizeof (SINFO), 1, fp) ;
}
fclose(fp) ;
printf("歌曲增添成功! \n");
}
void show(SINFO *pso) {FILE *fp;
fp=fopen("d:\\song. txt", "rt");
if (fp==NULL)
{
printf("the file :song. txt not found! ");
exit(-1);
}
printf(" 所有歌曲信息如下:  \n");
for(k=0;!feof(fp);k++)
{
fread (&pso[k], sizeof (SINFO), 1, fp) ;
}
fclose(fp) ;
printf("%s%15s620s%15s%15s"," 歌曲编号","歌名","歌手专辑","歌曲流派");
printf("\n");
for(i=0;i<k-1;i++)
{
printf ("%03d%620s%20s%15s%15s",pso[i].songnum,
pso[i].songname,pso[i]. songername,pso[i]. ablumname,pso[i].type);
printf("\n");
}
}
void dele (SINFO *pso){char a[15];
int q;
FILE *fp;
printf("请输入要删除歌曲的名字: ");
scanf("%s",a);
fp=fopen(" d:\\song. txt", "rt");
if (fp==NULL)
{
printf("the file :song. txt not found! ");
exit(-1);
}
for(k=0; (!feof (fp));k++)
fread (&pso[k], sizeof (SINFO), 1, fp);
fclose(fp);
for(q=0;q<k;q++)
if(!strcmp (a, pso[q]. songname))
memset (&pso[q],0,sizeof (SINFO));
fp=fopen(" d:\\song. txt", "w+");
for(k=0;k<q;k++)
fwrite (&pso[k], sizeof (SINFO), 1, fp) ;
fclose (fp);
printf("删除信息成功! \n");
}
void out()
{
char a;
printf("确认退出系统? (y/n)");
scanf(" %c" , &a);
if("y" ==a)
exit(0);
}
main(){
SINFO *pso ;
loop: printf ("欢迎使用KTV选歌系统\n");
printf("1.选歌\n");
printf ("2.新增歌曲\n");
printf("3. 查看歌曲信息\n");
printf("4. 删除歌曲\n");
printf("5.退出\n");
printf("请选择功能: ");
scanf("%d", &i);
fflush(stdin);
pso=(SINFO*)malloc(N*sizeof (SINFO));
memset (pso, 0, (N*sizeof (SINFO)));
system("cls");
switch(i) {
case 1:choice (pso) ;
goto loop;
break;
case 2: add(pso) ;
goto loop;
break;
case 3:show(pso) ;
goto loop;
break;
case 4:dele (pso) ;
goto loop;
break ;
case 5:out() ;
goto loop;
break;
default:printf("输入错误!请重新选择! \n");
goto loop;}
}

C语言课程设计-KTV点歌系统相关推荐

  1. 对大一C语言的课程设计——KTV点歌系统的介绍(链表)

    写此博客的目的:一是为了让自己对链表的思考方式更加的清晰,二是对不清楚链表实现方式的讲解! 所有的菜单都没有进行讲解,太简单.另外建议写这种比较大的程序的时候,不要着急先写菜单,要先把每一个功能实现完 ...

  2. 考勤管理系统c语言,C语言课程设计学生考勤系统最终版(范文1)

    <C语言课程设计学生考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<C语言课程设计学生考勤系统(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文 ...

  3. C语言课程设计:通讯录系统

    C语言课程设计:通讯录系统 [题目4]通讯录程序设计 设计一个实用的小型通讯录程序,具有添加,查询和删除功能.由姓名,籍贯,电话号码1,电话号码2,电子邮箱组成,姓名可以由字符和数字混合编码.电话号码 ...

  4. c语言程序设计论文背单词系统,C语言课程设计-背单词系统(含程序)

    C语言课程设计-背单词系统(含程序) 综合性程序设计报告 设计题目: 背单词系统 指导教师: XXX 班 级: 学 号: 设 计 者: XXX 成 绩: _______________ 设计时间: 年 ...

  5. c语言写考勤系统,C语言课程设计学生考勤系统

    <C语言课程设计学生考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<C语言课程设计学生考勤系统>相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜 ...

  6. c语言作业制作仓库管理系统,C语言课程设计 仓库管理系统

    <C语言课程设计 仓库管理系统>由会员分享,可在线阅读,更多相关<C语言课程设计 仓库管理系统(22页珍藏版)>请在人人文库网上搜索. 1.C语言程序设计实训报告实训题目: 仓 ...

  7. c语言程序设计学生考勤系统,C语言课程设计学生考勤系统最终版(样例3)

    <C语言课程设计学生考勤系统.doc>由会员分享,可免费在线阅读全文,更多与<C语言课程设计学生考勤系统(最终版)>相关文档资源请在帮帮文库(www.woc88.com)数亿文 ...

  8. c语言单词记忆软件源码,c语言课程设计背单词系统的程序代码

    c语言课程设计背单词系统的程序代码 1综合性程序设计报告设计题目:背单词系统指导教师:班 级:学 号:设 计 者:成 绩:设计时间:2010 年 5 月 27 日2目录1 题目描述---------- ...

  9. C语言课程设计 - 火车票预订系统

    C语言课程设计 - 火车票预订系统 文件介绍 代码 main.c(全) mymac.h(全) database.c(不全) mainWindow.c (全) user.c (不全) manager.c ...

最新文章

  1. C#综合揭秘——Entity Framework 并发处理详解
  2. Android面试题集合
  3. android简单小项目_烤面筋怎么做到年入20万?小成本!大收益!简单易操作的好项目!...
  4. Git错误non-fast-forward后的冲突解决
  5. ajax处理返回的xml数据,使用AJAX调用WebService返回xml不返回json原因以及解决办法...
  6. stacking模型融合_【干货】比赛后期大招之stacking技术分享
  7. php 数组元素往后移动,php 二维数组 元素移动
  8. 1_python基础—变量
  9. python for loop步进值_Python for 循环语句
  10. Mysql多源复制半同步_MySQL多源复制搭建
  11. NodeJS http 模块
  12. 研究自动驾驶技术的算法需要哪些知识?
  13. VMI的两种库存管理模式
  14. 脱壳_00_压缩壳_ASPACK
  15. 基于 O2O 视角的共享经济商业模式分析 ——以 ofo 共享单车为例
  16. 人脸识别摄像头开发板和模组选型
  17. 怎样更改计算机管理员用户名,Administrator怎么修改账户用户名教程
  18. 严格别名规则“-fstrict-aliasing”和“-fno-strict-aliasing”及类型双关
  19. 腾讯云Java工程师一面 + 被捞一面 + 二面面经(附答案)
  20. python.plt 画三维图像

热门文章

  1. 获取系统时间以及时间戳的理解与使用
  2. 怎么借助Camtasia给电脑游戏录屏
  3. python常用命令行命令
  4. 自动刷淘宝喵币!拿红包都靠这牛逼的脚本...
  5. linux java控制台运行_让java程序在Linux后台运行
  6. pip配置国内镜像源——最新详尽版
  7. 京淘项目模块分析:用户登;三级列表展现
  8. Maven--生命周期和阶段详解
  9. poi-tl模板导出word踩坑
  10. Flash Lite 1.1