让我用心把你(的赞)留下来!

案例描述
本系统是歌曲管理系统,该系统包括歌曲名,作者,演唱者,时间。进入系统有输入数据,查看数据,数据查询,数据保存,数据排序等多项功能

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "ctype.h"
#define M 50 /*定义常数表示记录数*/ typedef struct /*定义数据结构*/
{ char songname[20];/*歌曲名*/
char name[20]; /*作者*/
char singer[20]; /*演唱者*/
char year[20]; /*年月日*/
}SONG;
/******以下是函数原型*******/
int enter(SONG t[]); /*输入记录*/
void list(SONG t[],int n); /*显示记录*/
void search(SONG t[],int n); /*查找显示记录*/
int delet(SONG t[],int n); /*删除记录*/
int add(SONG t[],int n); /*插入记录*/
void save(SONG t[],int n); /*记录保存为文件*/
int load(SONG t[]); /*从文件中读记录*/
void display(SONG t[]); /*按序号查找显示记录*/
void sort(SONG t[],int n); /*按姓名排序*/
void qseek(SONG t[],int n); /*快速查找记录*/ void print(SONG temp); /*显示单条记录*/
int find(SONG t[],int n,char *s,char ch) ; /*查找函数*/
int menu_select(); /*主菜单函数*/
/******主函数开始*******/
main()
{
int i;
SONG adr[M]; /*定义结构体数组*/
int length; /*保存记录长度*/
int clrscr(); /*清屏*/
for(;;)/*无限循环*/
{
switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/
{
case 0:exit(0); /*如返回值为0则程序结束*/
case 1:length=enter(adr);break;/*输入记录*/
case 2:list(adr,length);break; /*显示全部记录*/
case 3:search(adr,length);break; /*查找记录*/
case 4:length=delet(adr,length);break; /*删除记录*/
case 5:length=add(adr,length); break; /*插入记录*/
case 6:save(adr,length);break; /*保存文件*/
case 7:length=load(adr); break; /*读文件*/
case 8:display(adr);break; /*按序号显示记录*/
case 9:sort(adr,length);break; /*快速查找记录*/ } printf("i=%d",length);
int getch(); }
}
/*菜单函数,函数返回值为整数,代表所选的菜单项*/
int menu_select()
{
char s[3];
int c;
int clrscr(); /*清屏*/ /*读入任意字符*/ printf("\n\n\n\n\n");
printf("********************MENU*********************\n\n");
printf(" 1. Enter record\n");
printf(" 2. List the file\n");
printf(" 3. Search record on name\n");
printf(" 4. Delete a record\n");
printf(" 5. add record \n");
printf(" 6. Save the file\n");
printf(" 7. Load the file\n");
printf(" 8. display record on order\n");
printf(" 9. sort record by songname\n");
printf(" 0. Quit\n");
printf("***********************************************\n");
do{
printf("\n Enter you choice(0-9):"); /*提示输入选项*/
gets(s); /*输入选择项*/
c=atoi(s); /*将输入的字符串转化为整型数*/
}while(c<0||c>9); /*选择项不在0~9之间重输*/
return c; /*返回选择项,主程序根据该数调用相应的函数*/
}
/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/
int enter(SONG t[])
{
int i;
char *s; int clrscr();
for(i=0;i=51;);
switch(-ch){
case '0':
return;
case '1':
printf("please enter songname to search.\n");
break;
case '2':
printf("please enter name to search.\n");
break;
case '3':
printf("please enter songname to search.\n");
break;
}
gets(s); i=find(t,n,s,ch); /*调用find函数,得到一个整数*/
if(i>n-1) /*如果整数i值大于n-1,说明没找到*/
printf("not found\n");
else
print(t[i]); /*找到,调用显示函数显示记录*/
printf("i=%d,n=%d",i,n);
getch();
}
/*显示指定的一条记录*/
void print(SONG temp)
{
clrscr();
printf("\n\n*******************************************************************************\n");
printf("\n Songname name singer Year_month\n");
printf("|---------------------------------------------------------------------------|\n"); printf("| %-16s| %-16s| %-16s| %-16s|\n",temp.songname,temp.name,temp.singer,temp.year); printf("|---------------------------------------------------------------------------|\n");
printf("\n\n\n***************************************END*************************************\n"); }
/*查找函数,参数为记录数组和记录条数以及姓名s */
int find(SONG t[],int n,char *s,char ch)
{
int i;
/*从第一条记录开始,直到最后一条*/ switch (ch){
case '1':
for(i=0;i51;);
switch(ch){
case '0':
return 0;
case '1':
printf("\nplease enter songname to search: ");
break;
case '2':
printf("\nplease enter name to search: ");
break;
case '3':
printf("\nplease enter songname to search: ");
break;
}
gets(s); i=find(t,n,s,ch); /*调用find函数*/
if(i>n-1) /*如果i>n-1超过了数组的长度*/
printf("no found not deleted\n"); /*显示没找到要删除的记录*/
else
{
print(t[i]); /*调用输出函数显示该条记录信息*/
printf("Are you sure delete it(y/n)\n"); /*确认是否要删除*/
ch=getche(); /*输入一个整数0或1*/
if(ch=='y'||ch=='Y') /*如果确认删除整数为1*/
{
for(j=i+1;j=0&&id=i;j--) /*从最后一个结点开始向后移动一条*/
{
strcpy(t[j+1].songname,t[j].songname);
strcpy(t[j+1].name,t[j].name);
strcpy(t[j+1].singer,t[j].singer);
strcpy(t[j+1].year,t[j].year);
}
strcpy(t[i].songname,temp.songname);
strcpy(t[i].name,temp.name);
strcpy(t[i].singer,temp.singer);
strcpy(t[i].year,temp.year);
n++; /*记录数加1*/
return n; /*返回记录数*/
} /*排序函数,参数为结构体数组和记录数*/
void sort(SONG t[],int n)
{
int i,j,flag;
SONG temp; /*临时变量做交换数据用*/
for(i=0;i0) /*比较大小*/
{
flag=1;
strcpy(temp.songname,t[j].songname);
strcpy(temp.name,t[j].name); /*交换记录*/
strcpy(temp.singer,t[j].singer);
strcpy(temp.year,t[j].year);
strcpy(t[j].songname,t[j+1].songname);
strcpy(t[j].name,t[j+1].name);
strcpy(t[j].singer,t[j+1].singer);
strcpy(t[j].year,t[j+1].year);
strcpy(t[j+1].songname,temp.songname);
strcpy(t[j+1].name,temp.name);
strcpy(t[j+1].singer,temp.singer);
strcpy(t[j+1].year,temp.year); }
if(flag==0)break; /*如果标志为0,说明没有发生过交换循环结束*/ }
printf("sort sucess!!!\n"); /*显示排序成功*/
}
}

【C语言】案例五十 歌曲管理系统相关推荐

  1. C语言课程设计---歌厅歌曲管理系统

    系统功能:该系统以菜单方式工作,歌曲信息包括:歌名.演唱者.作词.作曲.所属专辑.出版时间.出版公司.试设计一歌厅歌曲管理系统,使之能提供以下功能:歌曲信息录入.修改.插入.删除功能:歌曲排序浏览功能 ...

  2. excel怎么启用宏_Excel高级应用案例五 学生成绩管理系统

    此案例要求用Excel VBA 制作学生成绩管理系统,其中,系统有登录窗体界面.浏览查询数据.成绩输入以及统计总分.平均分等功能. (1)          将Sheet1.Sheet2.Sheet3 ...

  3. C语言试题五十九之请编写一个函数fun,它的功能时:求fibonacci数列中大于t的最小的一个数,结果由函数返回。

    1. 题目 请编写一个函数fun,它的功能时:求fibonacci数列中大于t的最小的一个数,结果由函数返回. 其中fibonacci数列f(n)的定义为:f(0)=0,f(1)=1,f(n)=f(n ...

  4. C语言试题五十八之请编写函数fun,:计算并输出下列多项式的值(sn=1+1/1!+1/2!+1/3!+1/4!+…+1/n! )

    1. 题目 请编写函数fun,其功能时:计算并输出下列多项式的值 sn=1+1/1!+1/2!+1/3!+1/4!+-+1/n! 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试.研究 ...

  5. C语言试题五十六之计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。

    1. 题目 请编写函数function,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和.规定n的值不大于1000. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试. ...

  6. C语言试题五十五之m个人的成绩存放在score数组中,请编写函数function,它的功能是:将高于平均分的人数作为函数值返回,将高于平均分的分数放在high所指定的数组中。

    1. 题目 m个人的成绩存放在score数组中,请编写函数function,它的功能是:将高于平均分的人数作为函数值返回,将高于平均分的分数放在high所指定的数组中. 2 .温馨提示 C语言试题汇总 ...

  7. C语言试题五十二之学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。

    1. 题目 请编写一个函数void function(Student a[], int n),其功能时:学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun, ...

  8. c语言编写五十以内加减法,求用C编个大数加减法运算程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 只写过加法的,杭电的A + B Problem (II)(AC): #include #include #include #define N 3000 i ...

  9. C语言/C++常见习题问答集锦(五十二) 之职工信息管理系统

    C语言/C++常见习题问答集锦(五十二) 之职工信息管理系统 程序之美 用C语言,职工信息管理系统具体要求 1.基本信息:如工号.姓名.性别.年龄.学历.住址.电话号码.工资等. 2.各职工信息用结构 ...

最新文章

  1. 你负责选歌,索尼负责用 AI 谱出风格相似的曲子
  2. SpringMVC + Hibernate-Validator 参数校验
  3. 自动拒绝恶意IP远程登录Linux服务器脚本
  4. 手动建立规则方式创建stream环境
  5. ALV标准范例Demo汇总
  6. JCO与bapi的联合使用
  7. FreeRTOS任务优先级说明
  8. 图像分割总体介绍——深度AI科普团队
  9. vsCode 快捷键、插件
  10. 【python】词云图制作
  11. 网页 游戏服务器连接超时,连接游戏服务器超时怎么解决
  12. 浅谈,如何获取MTK CPU信息 请看我是如何做的。一步步来吧
  13. 计算机sci 四区,sci四区什么水平
  14. python爬取b站视频封面_学习笔记(4)[Python爬虫]:爬取B站搜索界面的所有视频的封面...
  15. 如何让论文中的图进行自动编号
  16. ES 排序,相关度和热度之间的平衡
  17. Redis应用项目---抢红包功能(一)
  18. ErrorException : Use of undefined constant LARAVEL_START - assumed 'LARAVEL_START'
  19. python函数图像绘制
  20. python 获取参数 哪种好_什么是python的必选参数

热门文章

  1. Oracle Overview
  2. 梯度算法之梯度上升和梯度下降
  3. T045基于51单片机温湿度检测系统无线蓝牙传输Proteus仿真原理图PCB
  4. 医学考计算机的研究生,医学信息工程能考这些大学的研究生你知道吗
  5. 浅谈智能车入门——(一)概述
  6. 休斯敦大学计算机学院网址,李大学(学院)
  7. 解决本地连接不上虚拟机的问题
  8. Goweb开发之Beego框架实战:第八节 写文章功能
  9. QT调用IE浏览器COM插件完成网页浏览
  10. axWindowsMediaPlayer简单介绍