【C语言】案例五十 歌曲管理系统
让我用心把你(的赞)留下来!
案例描述
本系统是歌曲管理系统,该系统包括歌曲名,作者,演唱者,时间。进入系统有输入数据,查看数据,数据查询,数据保存,数据排序等多项功能
#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语言】案例五十 歌曲管理系统相关推荐
- C语言课程设计---歌厅歌曲管理系统
系统功能:该系统以菜单方式工作,歌曲信息包括:歌名.演唱者.作词.作曲.所属专辑.出版时间.出版公司.试设计一歌厅歌曲管理系统,使之能提供以下功能:歌曲信息录入.修改.插入.删除功能:歌曲排序浏览功能 ...
- excel怎么启用宏_Excel高级应用案例五 学生成绩管理系统
此案例要求用Excel VBA 制作学生成绩管理系统,其中,系统有登录窗体界面.浏览查询数据.成绩输入以及统计总分.平均分等功能. (1) 将Sheet1.Sheet2.Sheet3 ...
- C语言试题五十九之请编写一个函数fun,它的功能时:求fibonacci数列中大于t的最小的一个数,结果由函数返回。
1. 题目 请编写一个函数fun,它的功能时:求fibonacci数列中大于t的最小的一个数,结果由函数返回. 其中fibonacci数列f(n)的定义为:f(0)=0,f(1)=1,f(n)=f(n ...
- 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语言笔试.机试.研究 ...
- C语言试题五十六之计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。
1. 题目 请编写函数function,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和.规定n的值不大于1000. 2 .温馨提示 C语言试题汇总里可用于计算机二级C语言笔试.机试. ...
- C语言试题五十五之m个人的成绩存放在score数组中,请编写函数function,它的功能是:将高于平均分的人数作为函数值返回,将高于平均分的分数放在high所指定的数组中。
1. 题目 m个人的成绩存放在score数组中,请编写函数function,它的功能是:将高于平均分的人数作为函数值返回,将高于平均分的分数放在high所指定的数组中. 2 .温馨提示 C语言试题汇总 ...
- C语言试题五十二之学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。
1. 题目 请编写一个函数void function(Student a[], int n),其功能时:学生的记录由学号和成绩组称个,n名大学生得数据已在主函数中放入结构体数组a中,请编写函数fun, ...
- c语言编写五十以内加减法,求用C编个大数加减法运算程序
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 只写过加法的,杭电的A + B Problem (II)(AC): #include #include #include #define N 3000 i ...
- C语言/C++常见习题问答集锦(五十二) 之职工信息管理系统
C语言/C++常见习题问答集锦(五十二) 之职工信息管理系统 程序之美 用C语言,职工信息管理系统具体要求 1.基本信息:如工号.姓名.性别.年龄.学历.住址.电话号码.工资等. 2.各职工信息用结构 ...
最新文章
- 你负责选歌,索尼负责用 AI 谱出风格相似的曲子
- SpringMVC + Hibernate-Validator 参数校验
- 自动拒绝恶意IP远程登录Linux服务器脚本
- 手动建立规则方式创建stream环境
- ALV标准范例Demo汇总
- JCO与bapi的联合使用
- FreeRTOS任务优先级说明
- 图像分割总体介绍——深度AI科普团队
- vsCode 快捷键、插件
- 【python】词云图制作
- 网页 游戏服务器连接超时,连接游戏服务器超时怎么解决
- 浅谈,如何获取MTK CPU信息 请看我是如何做的。一步步来吧
- 计算机sci 四区,sci四区什么水平
- python爬取b站视频封面_学习笔记(4)[Python爬虫]:爬取B站搜索界面的所有视频的封面...
- 如何让论文中的图进行自动编号
- ES 排序,相关度和热度之间的平衡
- Redis应用项目---抢红包功能(一)
- ErrorException : Use of undefined constant LARAVEL_START - assumed 'LARAVEL_START'
- python函数图像绘制
- python 获取参数 哪种好_什么是python的必选参数