标题:菜鸟呼喊----已经很努力了,求助!!
只看楼主
yafeng666
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-7-1
 问题点数:0 回复次数:6 
菜鸟呼喊----已经很努力了,求助!!
请高手指点!!!
错误处:
查询音乐信息
求助:
缺少一个按姓名排序的程序
谢谢!!!

#include<stdio.h>
#include<string.h>
#include<conio.h>
#define N 10



struct music                                /*声明 struct music 的类型*/
{ char mname[10]; char name[10];
  char year[10];   char style[10];
};


void myprint();                             /*函数原型说明*/
mycreat(struct music *p,int n);
void mydisplay(struct music *p,int n);
void mysearch(struct music *p,int n);
void mymodify(struct music *p,int n);
void myadd(struct music *p,int n);
void mydelete(struct music *p,int n);




void main()                                  /*主函数*/
{ char choose,yes_no;
  struct music record[N];   /*将存放N个音乐信息*/
  do
  {myprint();         /*显示菜单*/
   printf("\n");
   printf("请输入要选择的选项:"); choose=getche();
   switch(choose)
   { case '1': mycreat(record,N);        break;  /*创建*/
     case '2': mydisplay(record,N);      break;  /*显示*/
     case '3': mysearch(record,N);       break;  /*查询*/
     case '4': mymodify(record,N);       break;  /*修改*/
     case '5': myadd(record,N);          break;  /*添加*/
     case '6': mydelete(record,N);       break;  /*删除*/
     case '0': break;
     default : printf("\n                   %c为非法选项!\n",choose);
   }
   if(choose=='0') {printf("\n"); break;}
   printf("\n                   要继续选择吗(Y/N)?\n");
   do
   { yes_no=getch();
     
   } while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
  }while(yes_no=='Y'||yes_no=='y');
}


void myprint()       /*显示菜单*/
{printf("\n\n\n\n\n\n\n");
 printf("                   ★★★★★★音乐信息管理系统★★★★★★\n");
 printf("                   §       1.创建音乐信息               §\n");
 printf("                   §       2.显示音乐信息               §\n");
 printf("                   §       3.查询音乐信息               §\n");
 printf("                   §       4.修改音乐信息               §\n");
 printf("                   §       5.添加音乐信息               §\n");
 printf("                   §       6.删除音乐信息               §\n");
 printf("                   §       0.退出                       §\n");
 printf("                   ★★★★★★★★★★★★★★★★★★★★\n");
 
}



mycreat(struct music *p,int n)         /*创建*/
{ int i=1; FILE *fp;
  char sign;
  static int k;
  fp=fopen("d:\\information.txt","w");
  while(sign!='n'&&sign!='N')
  {printf("\n");
   printf("请输入第%d个记录:\n",i);
   printf("歌曲名:");   scanf("%s",p->mname);
   printf("演唱者:");    scanf("%s",p->name);
   printf("发行年:");    scanf("%s",p->year);
   printf("音乐类型:");  scanf("%s",p->style);
   fprintf(fp,"%10s%10s%10s%10s\n",p->mname,p->name,p->year,p->style);
   p++;  i++;
   printf("\n是否继续输入?(Y/N)");
   scanf("%s",&sign);
  }
  n=i;
  fclose(fp);
  return n;
}


void mydisplay(struct music *p,int n)    /*显示*/
{ FILE *fp;  
  fp=fopen("d:\\information.txt","r");
  if(fp==NULL) {printf("\n不能找到此文件\n"); return;}
  printf("\n");
  printf("    歌曲名      演唱者    发行年      音乐类型\n");
  while(n>0)
  {fscanf(fp,"%10s%10s%10s%10s",p->mname,p->name,p->year,p->style);
   printf("%10s%10s%10s%10s\n",p->mname,p->name,p->year,p->style);
   p++; n--;
  }
  fclose(fp);

}
 


void mysearch(struct music *p,int n)     /*查询*/
{ int i; FILE *fp;
  char mnam[10];
  fp=fopen("d:\\information.txt","r");
  if(fp==NULL) {printf("\n不能找到此文件\n"); return;}
  printf("\n请输入要查询的歌曲名:");
  scanf("%s",&mnam);
  for(i=0;i<n;i++,p++)
  {if(strcmp(mnam,p->mname)==0)
      break;
  }
  printf("\n");
  printf("    歌曲名      演唱者    发行年      音乐类型\n");
  printf("%10s%10s%10s%10s\n",p->mname,p->name,p->year,p->style);
  fclose(fp);
  if(i==n)   
      printf("无此歌曲!\n");
  
}



void mymodify(struct music *p,int n)        /*修改*/
{ int i; FILE *fp;
  char Mnam[10];   
  fp=fopen("d:\\information.txt","w");
       if(fp==NULL) {printf("\n不能找到此文件\n"); return;}
  printf("\n请输入要修改的歌曲名:");
  do
  {gets(Mnam);
  }while(strcmp(Mnam,"")==0);
  for(i=0;i<n;i++,p++)
      if(strcmp(Mnam,p->mname)==0)  break;
      if(i==n) printf("无此歌曲!\n");
      else
      {printf("请输入正确的演唱者:");
       do
       {gets(p->name);
       }while(strcmp(p->name,"")==0);
       printf("请输入正确的发行年:");  gets(p->year);
       printf("请输入正确的音乐类型:"); gets(p->style);
       }
      fclose(fp);
}



void myadd(struct music *p,int n)         /*添加*/
{FILE *fp; int i=0;
 printf("\n");
 fp=fopen("d:\\information.txt","w");
 if(fp==NULL) {printf("\n不能找到此文件\n"); return;}
 printf("\n");
 printf("请输入增加的歌曲名:"); gets(p->mname);
 printf("演唱者:");  gets(p->name);
 printf("发行年:");  gets(p->year);
 printf("音乐类型:");gets(p->style);
 n++;
 for(i=0;i<n;i++)
          fprintf(fp,"%10s%10s%10s%10s\n",p->mname,p->name,p->year,p->style);
 fclose(fp);
 
}




void mydelete(struct music *p,int n)    /*删除*/
{FILE *fp;  
 char MName[10];  int i,j;
 printf("\n");
 printf("请输入要删除的歌曲名称:");     scanf("%s",&MName);
 fp=fopen("d:\\information.txt","w");
 if(fp==NULL) {printf("\n不能找到此文件\n"); return;}
 for(i=0;i<n;i++)
 {if(strcmp(MName,p->mname)==0)   break;
  p++;
 }
 if(i==n)
   printf("没有找到你要删除的歌曲!\n");
 else
 {strcpy(p->mname,"");
  strcpy(p->name,"");
  strcpy(p->year,"");
  strcpy(p->style,"");
  n--;
  for(i=0;i<n;i++)
          fprintf(fp,"%10s%10s%10s%10s\n",p->mname,p->name,p->year,p->style);
  printf("此歌曲已删除!\n");
 }
 fclose(fp);
 
}
搜索更多相关主题的帖子: void music struct int 
2008-07-04 14:50
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 

—>〉Sun〈<—
2008-07-04 17:50
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 
#define UP     1       // 升序
#define DOWN  -1       // 降序

struct music * SortName(struct music * muar, int n, op)
{
    int i, j, k;
    struct music temp;
   
    if(!music || n < 1)
        return NULL;
   
    for(i = 0; i < n - 1; i++)
    {
        for(j = i + 1; j < n; j++)
        {
            k = strcmp(muar[i].name, muar[j].name);
            
            if((op == UP && k > 0) || (op == DOWN && k < 0))
            {
                temp = muar[i];
                muar[i] = muar[j];
                muar[j] = temp;
            }
        }
    }
   
    return music;
}

// 示范  
SortName(record, N, UP);     // 按姓名升序排列
SortName(record, N, DOWN);   // 按姓名降序排列

—>〉Sun〈<—
2008-07-04 18:21
初中毕业
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2008-7-2
得分:0 
void mysearch(struct music *p,int n)     /*查询*/
{ int i; FILE *fp;
  char mnam[10];
  fp=fopen("d:\\information.txt","r");
  if(fp==NULL) {printf("\n不能找到此文件\n"); return;}
  printf("\n请输入要查询的歌曲名:");
  scanf("%s",&mnam);去掉&号
  for(i=0;i<n;i++,p++)
  {if(strcmp(mnam,p->mname)==0)
 {printf("\n");
  printf("    歌曲名      演唱者    发行年      音乐类型\n");
  printf("%10s%10s%10s%10s\n",p->mname,p->name,p->year,p->style);
      break;
  }
  
  

  if(i==n)   
      printf("无此歌曲!\n");


   fclose(fp);  
}

排序
mysearc(struct music *p,int n)
{int i,j,k[10];
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(strcmp((p+i)->name,(p+j)->name))
{strcpy(k,(p+i)->name);
strcpy((p+i)->name,(p+j)->name);
strcpy((p+j)->name,k);}
}
如果其他没错的话就可以

[[it] 本帖最后由 初中毕业 于 2008-7-4 21:51 编辑 [/it]]
2008-07-04 18:22
xiaoj
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-7-4
得分:0 
2008-07-04 19:30
oldboy22
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2008-5-19
得分:0 
能写到这个程度,为什么自己找不出呢??

让魔鬼来得更猛烈些吧。。。
2008-07-04 22:05
coming
Rank: 1
等 级:新手上路
帖 子:244
专家分:0
注 册:2008-4-20
得分:0 
看都看不懂...
2008-07-04 23:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-222597-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.327164 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved