Chinaunix首页 | 论坛 | 博客
  • 博客访问: 580191
  • 博文数量: 136
  • 博客积分: 893
  • 博客等级: 中士
  • 技术积分: 1001
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-31 09:18
个人简介

生命可以终止,梦想不会!

文章分类

全部博文(136)

文章存档

2016年(4)

2015年(2)

2014年(5)

2013年(7)

2012年(118)

分类: C/C++

2012-03-31 13:08:18

 
这是一个效果图:
由于本人水平有限,和大家交流下:
#include "main.h"
/******************************************************/
int main()
{
 LTM *head=NULL;
 char *fp=0;
 char *name=NULL;
 char *str[100];
 int tim;
 int x,y;
 int sec=0,min=0;
 unsigned long int num;
 ShellExecute( NULL, NULL, "TTPlayer.exe",".\\简单爱.mp3",NULL,1);
 name=open_file(&num,fp);  
 head=strtok1(name,str); 
 while(1)
 {
  get_time = time(NULL); 
  local=localtime(&get_time); 
  if (user_time != get_time)
  {
//   GoToXY(5,6);
//   printf("本地时间:the week:%02d 20%02d-%02d-%02d %02d:%02d:%02d\r",local->tm_wday,local->tm_year-100,local->tm_mon+1,local->tm_mday,local->tm_hour,local->tm_min,local->tm_sec);
   user_time = get_time;  
  }
  if (sec++>=59)
  {
   sec=0;
   min++;
   if (min>=60)
   {
    min=0;
   }  
  }
  whereXY(&x,&y);
  GoToXY(5,6);
//获取电脑的本地时间
  printf("本地时间:the week:%02d 20%02d-%02d-%02d %02d:%02d:%02d\r",local->tm_wday,local->tm_year-100,local->tm_mon+1,local->tm_mday,local->tm_hour,local->tm_min,local->tm_sec);
  GoToXY(15,7);
  printf("the time:%02d:%02d\r", min,sec);
  Sleep(960);
  GoToXY(15,9);
  SetText_Color(4);
  tim=min*60+sec;
  link_search(head,tim);
//  GoToXY(x,y);
 }
 return 0;
}
/****************************************************/
 
#include "Open_file.h"
/*********************打开文件***************************************/
char * open_file(unsigned long int * length,char *src_name)
{
 FILE *fp;
 unsigned long int size;
 char *str;
 
 if (!(fp=fopen(".\\简单爱.lrc","rb")))
 {
  perror("open");
 }
 // printf("success\n");
 
 fseek(fp ,0,SEEK_END);
 size=ftell(fp);
 *length=size;
 rewind(fp);
 str=(char *)malloc(size);
 if(fread(str,size,1,fp)==0)
 {
  printf("read from fp fail\n");
  return NULL;
 }
 fclose(fp);
 return str;
}
/*****************************************************/
 
#include "strtok.h"
extern char *msg_done[100];
/********************************************************************/
LTM * strtok1(char *msg_src)
{
 LTM *head=NULL,*pi;
 char *src;
 int time1;
 char *msg_done1[100];
 int i=0;
 int line;
 int count=0;
 int time_num=6;
 src=msg_src;
 msg_done[i++]=strtok(src,"\n");
 while((msg_done[i++]=strtok(NULL,"\n"))!=NULL)
 count++ ;
 line=count;
//////////////////////////////////////////////////////////////
 printf("制作人:   QiZheGuang\n");
 *(msg_done[0]+35)='\0';
 printf("歌名:\t\t%s\n",(msg_done[0]+4));
 *(msg_done[1]+10)='\0';
 printf("歌手:\t\t%s\n",(msg_done[1]+4));
 *(msg_done[2]+10)='\0';
 printf("专辑:\t\t%s\n",(msg_done[2]+4));
 *(msg_done[3]+10)='\0';
 printf("制作:\t\t%s\n\n\n",(msg_done[3]+4));
/////////////////////////////////////////////////////////////
 for (i=4;i {
  int count1=0; 
  int k=0;  
  int j=0;
  msg_done1[j++]=strtok(msg_done[i],"]");
//////////////////////////////////////////////////////////////////////////////////
/*  if(*msg_done1[j]=='[')
  {
   msg_time[count2++]=atoi(msg_done1[j]+1)*60+atoi(msg_done1[j]+4); //转换时间
  }  
  j++;
*/
//////////////////////////////////////////////////////////////////////////////////
  while((msg_done1[j++]=strtok(NULL,"]"))!=NULL)// 解析每一行的时间
  count1++;
/////////////////////////////////////////////////////////////////////////////////
//  printf("%d\n",count1);
//  printf("%s\n",msg_done1[j]);
/*  if (*msg_done1[j]=="[")
  {
   msg_time[count2++]=atoi(msg_done1[j]+1)*60+atoi(msg_done1[j]+4); //转换时间
   printf("time=%d\n",msg_time[count2]);
  }
  j++;
*/
/********************这种方法比较笨,导致代码冗余,另一种办法简单写了下,屏蔽的就是**********************************/
  for(j=0;j  {       
   if (2==count1)
   {
    time1=atoi(msg_done1[j]+1)*60+atoi(msg_done1[j]+4); //转换时间 
    pi=(LTM *)malloc(sizeof(LTM));
    pi->time=time1;
    strcpy(pi->name,msg_done1[j+2]);
    head=link_insert(head,pi);
    j++;
    time1=atoi(msg_done1[j]+1)*60+atoi(msg_done1[j]+4); //转换时间 
    pi=(LTM *)malloc(sizeof(LTM));
    pi->time=time1;
    j++;
    strcpy(pi->name,msg_done1[j]);
    head=link_insert(head,pi);
    break;
   }
   if (3==count1)
   {
    time1=atoi(msg_done1[j]+1)*60+atoi(msg_done1[j]+4); //转换时间 
    pi=(LTM *)malloc(sizeof(LTM));
    pi->time=time1;
    strcpy(pi->name,msg_done1[j+3]);
    head=link_insert(head,pi);
    j++;
    time1=atoi(msg_done1[j]+1)*60+atoi(msg_done1[j]+4); //转换时间 
    pi=(LTM *)malloc(sizeof(LTM));
    pi->time=time1;
    strcpy(pi->name,msg_done1[j+2]);
    head=link_insert(head,pi);
    j++;
    time1=atoi(msg_done1[j]+1)*60+atoi(msg_done1[j]+4); //转换时间 
    pi=(LTM *)malloc(sizeof(LTM));
    pi->time=time1;
    j++;
    strcpy(pi->name,msg_done1[j]);
    head=link_insert(head,pi);
    break;
   }
   
    time1=atoi(msg_done1[j]+1)*60+atoi(msg_done1[j]+4); //转换时间 
    pi=(LTM *)malloc(sizeof(LTM));
    pi->time=time1;
    j++;
    strcpy(pi->name,msg_done1[j]);
    head=link_insert(head,pi);
/*****************************************************************************/
  }
 }
/*
 for (k=0;k {
  pi=(LTM *)malloc(sizeof(LTM);
  pi->time=msg_time[k];
  pi->name=msg_done1[j-1];
 }
*/
 return head;
}
///////////////////////////////////////////////////////////////////////
 
#include "link_int.h"
/********************插入链表*************************/
LTM * link_insert(LTM * head,LTM * pi)
{
 LTM * pf,* pb;
 pb=pf=head;
 if(head==NULL)
 {
  head=pi;
  head->next=NULL;
  return head;
 }
 //查找第一个num 比pi 的num 大的结点pb
 while((pi->time >= pb->time)&&(pb->next!=NULL))
 {
  pf=pb;// pf保存pb的位置
  pb=pb->next;// pb 指向下一个结点
 }
 if(pi->time <= pb->time)
 {
  if(pb==head)// 插在头结点的前面
  {
   pi->next=head;
   head=pi;
  }
  else
  {
   pi->next=pb;
   pf->next=pi;
  }
 }
 else//原先链表中没找到比pi的num 大的结点,插在尾端
 {
  pb->next=pi;
  pi->next=NULL;
 }
 
 return head;
}
/****************************************************************/
 
#include "link_sch.h"
extern char *msg_done[100];
/********************搜索链表**********************/
LTM * link_search(LTM * head,int tim)
{
 LTM * pb=head;
 int i;
// int m=6;
 while(pb!=NULL)
 {  
   
  if(pb->time==tim)
  {
   system("cls");
   GoToXY(0,0);
   SetText_Color(7);
   printf("制作人:   QiZheGuang\n");
   *(msg_done[0]+35)='\0';
   printf("歌名:\t\t%s\n",(msg_done[0]+4));
   *(msg_done[1]+10)='\0';
   printf("歌手:\t\t%s\n",(msg_done[1]+4));
   *(msg_done[2]+10)='\0';
   printf("专辑:\t\t%s\n",(msg_done[2]+4));
   *(msg_done[3]+10)='\0';
   printf("制作:\t\t%s\n\n\n",(msg_done[3]+4));
 //  GoToXY(15,6);
 //  printf("the time:%02d:%02d\r", min,sec);
   for(i=0;i<6;i++)
   {   
    if (i==0)
//    if(m==6)
    {
     GoToXY(12,i+9);
     SetText_Color(7);
     printf(">>");
    }
    else
     SetText_Color(i);
     GoToXY(15,i+9); 
     
    printf("%s\n",pb->name);     
    pb=pb->next;
    if(pb==NULL)
     break;    
   }
    break;
  }
   pb=pb->next; 
  }
return 0;
}
/*************************************************/
 
#include "console.h"
#include
//获取当前光标位置,并存放到变量 x,y中
void whereXY(int *x,int *y)
{
 HANDLE h1;
 CONSOLE_SCREEN_BUFFER_INFO scrInfo;
 h1=GetStdHandle(STD_OUTPUT_HANDLE);  
 GetConsoleScreenBufferInfo(h1,&scrInfo);  
 *x=scrInfo.dwCursorPosition.X;
 *y=scrInfo.dwCursorPosition.Y;
}
//跳转到光标指定位置
void GoToXY(int x,int y)
{
 HANDLE h1;
 COORD pos;
 pos.X=x;
 pos.Y=y;
 h1=GetStdHandle(STD_OUTPUT_HANDLE);
 SetConsoleCursorPosition(h1,pos);
}
/*
第一个值为背景色,第二个值为前景色:
0 = 黑   8 = 灰
1 = 蓝   9 = 淡蓝
2 = 绿   A = 淡绿
3 = 湖蓝 B = 淡浅绿
4 = 红   C = 淡红
5 = 紫   D = 淡紫
6 = 黄   E = 淡黄
7 = 白   F = 亮白
*/
//设置接下来终端显示文本的背景色和文本颜色
void SetText_Color(int color)
{
 HANDLE hStdout;
 hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
 SetConsoleTextAttribute(hStdout,color);
}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
阅读(2577) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~